牛人分享 ▏参与流片是一种怎样的体验!
2017-05-17 by:CAE仿真在线 来源:互联网
所有项目的前期都是阳光明媚,四五月我时常和师弟们在校园的树荫下手握可乐,一边谈风和日丽,一边目光保护文学科的学妹们来来往往。研究室里也欢声笑语常在,我问学弟们Verilog写到哪了,他们问我架构定下了吗,我问助教什么制程die size多大,然而大家都不知道,互道还早还早,相视一笑哈哈哈。
转眼六月,boss已经决定将后端外包,我们大松了口气。之前有过两次自己layout失败的经验。第一次,我们画了几个月手动layout了自己的logic cell, 包装成cell导入自动layout流程,结果到了deadline整体DRC也没通过,最后只装了几个简单的测试电路,但好在关键数据都顺利测得。另一次和一家知名日企合作,使用了他们实验性的FeRAM替代FPGA的SRAM,芯片回来,一个学生测试了半年也没有任何反应。现在回想起那个学生的无数个日夜,在灯光下独自一人尝试和一块石头交谈,依然感慨。学校里自己手动layout,多是模拟的同学。学校和企业不同,学生来去太快,很难沉淀下layout这种要求多年经验的手工艺。所以研究大规模数字电路的学术机构,还是要有自知之明,让专业的人做专业的事。
然而此时却发生了个意外,常年为日本学术界鞠躬尽瘁的老朋友富士通半导体,由于不景气和松下半导体部门合并,我们一直使用的e-Shuttle制程不能再用了。这让我们震惊又难过,富士通半导体一直通过VDEC,以很低的价格为学术界提供MPW流片服务。我们一度觉得那年的流片计划要取消了。然而平时憨态可掬啥事不管的大boss罕见地展示了他的力量,火速联系、谈妥了后端设计公司,通过后端公司搞定了TSMC的合作合同。这个过程异常艰难,预算资金、跨国合作、各种合同条款保密协议、多方斡旋,说短也差不多用了两个多月的时间。而TSMC的standard library到我们手,已经是八月。
这时重要的时间点就定下来了,研究期间限制14年三月必须拿到芯片,后端公司推荐了14年1月的TSMC流片计划,后端要求三个月设计时间,我们必须10月初交付前端设计文件,留给我们的只有仅仅两个月了。
好在三个学弟基础模块的Verilog已写好大半,两人负责FPGA Array,一人负责Controller。只要我用TSMC的standard library重新跑一边架构探索,再估算出预定的die size下FPGA的大小,就可以一气呵成完成代码。这个过程非常顺利,用我博士课题中开发的面向ASIC的FPGA IP CAD Flow,在十几台服务器中跑了一周Benchmark,在几十种自制FPGA Architecture找到了性能最佳的架构和尺寸。Flow的执行和数据回收、分析全程自动化,一切按设计运行,完美,心里给自己点了个赞。然而,我并不知道下面等待我的九月和十月将是我人生中最黑暗的两个月。
八月末,师弟们的FPGA整体组装已经初步完成,进入测试期。九月初我还参加了FPL2013,领域顶级会议,学术精英,在波尔图的酒庄品着红酒吹着牛。然而回来后各种问题在测试期爆发了,一片混沌。
下层模块的测试都还顺利,但我们必须要在交付后端前,做整片cover所有功能的完整的仿真。这就需要我尽快完成CAD的最后一个功能,为这次的FPGA编写bitstream生成器。FPGA部、I/O部,所有都是可编程的,20多万比特,要根据LUT的逻辑和FPGA Routing的结果,自动生成,一个都不可以差。并且,我们这款FPGA有自动纠错功能,指令模式多达十几种,针对每个命令都要有相应的bitstream。这部分工作量正常少说也要两三个月,但我们总共也没那么多时间了。
这时候还开始增加需求了!因为预计到样片很有可能因为各种原因无法工作,为了把风险降到最低,boss要求利用多余引脚插入信号后门。一要可以随时查看内部寄存器的状态,二要可以通过多个点注入FPGA的configuration bit,保证即使一部分出了问题,依然有办法让剩下的部分工作。于是师弟们开始无日无夜的加电路代码,我无日无夜地搞这20多万个configuration bit,仿真。
仿真是噩梦,一次快速优化仿真要一个小时,但只能观测到提前指定的信号。一次完整的慢仿真要三个多小时。软件开发出身的我,习惯了一边debug一边改程序,按下run马上就可以定位问题所在。而我们的FPGA仿真一次三小时,如果我没算错一天不睡觉也只有八次机会而已。所以想想开发成本是和测试周期长度成正比的,高成本的医学生物研究一个周期几周到几个月,更高成本的农业更是要几个月到几年。面对这种困难,我采取的策略是执行前更认真地审查代码,尽量靠code review排除bug。出错了也不是急于翻代码,而是根据现象在脑中思索产生bug的所有可能性。再就是同时跑多组测试节省时间。那时候时间比什么都宝贵,不分昼夜每三个小时看一次仿真结果,分析,改程序,再跑。时间管理和硬件设计一样,并行、流水线、达芬奇睡眠法。
还有一个噩梦是data sheet。因为之前忙于开发,大家并没有准备data sheet。然而这次是外包后端,除了Verilog代码、约束,自然需要详细的data sheet给人查阅。我们在九月底忙得不可开交的时候,还同时写了大概有1000页纸的各部分电路说明、功能说明、约束说明。
一个九月基本没休息,好在最后大家拼命把该做的事都完成了。第一次仿真成功的时候,大家感动得不轻。一个Verilog测试电路,通过ODIN II综合、我们修改过的ABC mapping、TV-Pack打包、VPR布局,最后用我开发的EasyRouter布线并生成bitstream,下载到自己的FPGA中成功仿真出结果。我只想谢谢开源社区,谢谢师弟们,你们的工作太了不起了。
十月,如期和后端公司派来的工程师见面了。对方相当专业、谈吐干练,在我们眼里就像从天而降前来营救的海豹突击队员。当我们搬出1000多页的说明书,他们也惊呆了说没见过这仗势。我猜他们心里应该是万马奔腾的,你们给RTL和constrain就好了,谁要管这些。实际上专家们也有些轻敌了,他们并没预想到layout FPGA的困难。
大家知道timing是数字设计的一切,每个时钟的setup、hold time,关键path的propagation delay都要准确约束。然而FPGA在configuration之前,逻辑是不确定的,里面大量存在的timing loop足以让任何一个ASIC CAD工具报错甚至crash。加之我们还要求一些主要的routing channel和logic path尽量延迟一致。这都是其他类型芯片的Layout不存在的困难。通常我们自己仿真,会先加载benchmark的bitstream,自然就不会存在timing loop了。而做后端不能只为一个benchmark做约束,不能使用这一方式。最后我和对方的工程师用了大量精力,一起编写了几十个场景的约束,他们只要满足这些约束就可以。如果存在我们没考虑到的约束而导致流片失败,对方是不用负责任的。其实后端外包公司通常都不需要担心负什么责任,因为一旦失败,大多学术机构是没能力去追查责任在谁的。
中间还有一个插曲很惊险。后端公司起初告知我们可以使用的die size,忘了减掉I/O Pad的面积,而这些Pad几乎占了五分之一的可用面积。当他们发现这一问题,也有点慌张了,发邮件来问可不可以改设计,让FPGA Array小一点。我们也不可能有精力重做,很坚决的否定了。后来对方还是展现了强悍的专业风范,使用了CUP(circuit under pad),在模块缝隙中手动layout等绝技,把我们的FPGA塞了进去。后端公司的工程师们给我印象非常深刻,不知道他们会不会吐槽后悔接了这个苦差,也不知道他们是不是熬了很多个日夜。专业人士就是这样,接活,做完。看起来轻松,他们只是不会让你看见他们的辛苦。这世界不存在举手之劳这回事。
完全交付后端到14年三月收样片,封装,我们还设计了样片和VLSI测试平台中间的一块adapter board。我抽空完成了博士论文和答辩。和几乎所有答主提到的一样,紧张感肯定有的。但我看的比较开,从技术角度,我已经学到了很多。但最重要的,是我三月就能拿到学位,东窗事发可以随时跑路。好在一切顺利,我们的芯片最终正常工作。测试数据成功返回的瞬间,我是整个人瘫软在了椅子上,灵魂出窍,想起了NHK纪录片《电子立国自述转》中一位半导体前辈说的一段话:
“每次芯片tapeout的两三个月,心里是非常不安的,睡不好。随时都在想会不会有问题,哪里哪里对不对。芯片回来,第一次按RESET,心里的紧张到了极点,RESET松开,就是区别天堂和地狱的一瞬间。逻辑分析仪数字混乱,心情瞬间落入地狱,没人愿意说话。如果一切正常,人就像到了天堂,就像整个世界都在围绕自己旋转,就像我就是世界之王。”
相关标签搜索:牛人分享 ▏参与流片是一种怎样的体验! 机械设计培训 机械设计课程 机械设计视频 机械设计技术教程 机械设计资料下载 SolidWorks UG inventor软件应用 Fluent、CFX流体分析 HFSS电磁分析 Ansys培训 Abaqus培训