最硬核毕业证书!五位本科生4个月造出芯片毕业( 二 )


做芯片,其实分为前端和后端 。前端主要是做设计,用数字电路的方式实现处理器的功能;后端则是用物理元件来实现这些设计 。
“要说芯片都是我们做的,并不准确 。其实我们只是做了前端的逻辑设计部分 。”王凯帆强调 。
他尝试用最通俗的语言向科技日报采访人员解释设计芯片是怎么一回事——类似于画一张大楼的施工图纸 。只不过,呈现这张图纸,用的不是线条,而是一种叫做Chisel的硬件语言 。
此前,包云岗团队中的博士生余子濠为南京大学开发了一款教学用RISC-V处理器,“一生一芯”计划的学生要在此基础上进行改进,把师兄搭建的房子,改建得更舒服、更亮堂 。
包云岗说,在实际产品研发和科研工作中,也往往不是从头开始,更多是在已有基础上,增加新功能,提高性能 。“这培养的是学生‘理解—消化—创新’的能力 。”
大家采用了当下流行的“敏捷开发”模式:每人负责一个或几个模块,齐头并进,多线推进,然后合龙 。
“一生一芯”计划的目标很明确:在芯片上运行Linux系统,支持基本的输入输出设备 。
先解决“能不能”“对不对”的问题,再来看“快不快”“好不好” 。
对新手施工设计团队来说,他们盖的第一栋房子,要保证的是屹立不倒 。
从2019年8月正式动手设计,到12月中旬交付设计图纸,五人组踩过坑,给别人挖过坑,也挣扎着从坑里爬出来过 。
他们曾熬夜和不知躲在哪里的错误死磕,还要对抗可能拖延队友进度的焦虑 。
团队成员金越负责的是片上系统 。
除了中央处理器,在系统内还有五个控制器来实现具体功能 。
这些控制器的代码是由开源社区提供的,但团队并不清楚这些控制器是否适合他们设计的这款芯片 。
金越需要编写驱动软件,测试外设控制器是否设置正确,能否正常工作 。
“要是出现问题就很麻烦了 。到底是我的软件写错了,还是外设控制器本身有问题?如果是外设控制器有问题,到底是哪个有问题?”
变量太多,排列组合下来,测试复杂得让人头疼 。
“做验证的那几天,几乎没怎么睡过觉 。”金越半夜对着电脑,查手册,查代码,查波形,怀着点“我就不信邪”的不忿:“我一定要把这个东西弄出来 。”
寻找问题究竟出在哪,是几乎每个计划参与者都会提到的“痛苦”经历,常常是 “按下葫芦起了瓢” 。
作为团队唯一的女将,张林隽负责的部分是预取器 。
你进入了一间图书馆,想找到一本书 。靠你最近的书架,能放的书最少;而更深处的书架,放的书更多,但你走过去的耗时也长 。预取器好比那位了解你喜好的图书管理员,他提前将他认为你会拿的书放在离你最近的书架,节省你的查找时间 。
“在实现这个功能的时候,我想当然地认为,预取器应该放在L1 Cache也就是一级缓存内 。”
一级缓存,相当于那个离你更近的但是容量更少的书架 。但奇怪的是,加入预取器后,芯片的性能反而受到了影响,芯片的信息处理速度变慢了 。
她花了一个月的时间来找问题,一个一个排查、修改和调试 。后来,张林隽被提醒说,可能是预取器放置的位置不对 。“哎,很崩溃,之前写的东西就没用了,又要重来 。”将预取器挪到二级缓存后,困扰她一个月的问题终于消失了 。
在真正动手之前,没人想过,问题竟然会在这等着他们 。
“我们只是知道了从山底到半山腰的路怎么走”
2019年12月,这款芯片的设计版图正式提交,基于中芯国际110nm工艺完成投片 。
平时上课或者比赛,学生也需要从零开始完成一次芯片设计 。但在课堂实践中,并不需要测试得太完备,只要设计出的芯片能通过老师给的几个测试点,就算成功 。在“一生一芯”计划中,没有这些被预先设计好的“测试点” 。你必须考虑全面,细心谨慎 。
无可否认的是,压力更大 。


推荐阅读