我的一生一芯
一生一芯是一个开放社区性质的公益教学项目,主要是为了解决中国芯片设计人才缺失的问题,主办方是国科大和计算所,要求学生设计出一块自己的CPU并成功流片。
初识一生一芯
记得还是在大四阶段接触到的一生一芯计划,当时是在西电保研群某个大佬发的链接,于是就报名参加了。大四应该是整个大学最轻松的时候(指心情方面),保研阶段结束,于是就开始刷各种实验或写毕设。
深入一生一芯
前期最终要的就是要完成两个实验,数字电路基础实验(dlco)和计算机系统基础实验(PA)。
数字电路基础实验
dlco主要是通过nvboard(一个虚拟FPGA开发板)进行实验,而实验语言便是verilog。我之前从来没有接触过硬件相关知识,所以会习惯用软件编程的思想写硬件程序(verilog),这也是我最终退出一生一芯的主要原因。
在完成dlco实验过程中,其中最令我印象深刻的是字符输入界面,我在上面投入了很多时间,最终也实现了几乎所有的扩展要求,当打开界面,在键盘上敲下各个按键时字母符号出现在屏幕上时,感觉十分有成就感。
计算机系统基础实验
PA实验是继CSAPP LAB后第二个令我震惊的实验,感觉我本科实验真的好lj。简单地介绍下PA是什么,它要求学生实现一个经过简化但功能完备的x86/mips32/riscv32(64)模拟器,最终可以运行galgame等游戏。PA可以说是由浅入深,让学生从零基础逐渐深入到计算机底层的各个领域。PA实验给我带来最大的帮助就是了解了riscv指令集和模拟器究竟是什么。
CPU编写
一生一芯顾名思义肯定是要写CPU啦,许多人一听到写CPU就会感觉“哇,这也太难了吧”,其实你可以把它想得很简单,如果用软件编程的思想来看是一个流程:写程序(verilog或chisel)=> 逻辑综合(可以理解为软件的编译) => 剩下全部丢给后端去做了。所以芯片设计对于我的理解就是写verilog,我想“C++我都不怕,怎么可能怕verilog呢?”,于是开始了漫长的verilog编写,我甚至迭代了十几个版本(每个版本都通过了benchmark测试正确性),最后发现自己写的verilog还是lj。这时候,我才发现我缺少了最重要的一环,硬件设计思想,于是我默默地退出了。
后记
尽管我的一生一芯计划并没有走到最后,但是我在参加的过程中还是收货了很多知识,这对我之后的学习起了很大的帮助。我对于一生一芯计划评价还是很高的,它可以系统地训练或培养学生进行芯片设计,从中你可以学习到很多体系结构的知识,希望一生一芯可以一直走下去吧,也希望中国的芯片巨头早日出现(对标苹果,intel,Nvidia,AMD)。