Loading

25年3.12流片复盘

又结束一轮惊心动魄的流片。

其实本轮流片的困难事先可以预想到,因为本来时间点就比较的极限,从去年10月开始立项,idea到芯片完整实现总共只有5个月时间,中间还隔了个过年以及ISSCC,而且还上的是第一次接触的先进工艺,极大概率要在熟悉工艺上消耗额外的时间,不像去年的流片能吃到对工艺熟悉的红利。

但当时还是挺自信的,感觉自己多少也是这么多轮流片下来了,skill已经娴熟,flow已经门儿清,就算坑多也能cover住。就这样抱着young and simple的想法开始本轮流片。

先说目标,仍然是主要弄CIM+RV SoC这套东西,SoC做了小幅度的升级,换了更好的CPU把主频拉上去,加ITCM和DTCM,加一个AXI Bus,加了几个外设,最主要的是挂了个QSPI用来访外部Flash解决上次memory不够放大点的模型的问题。验证端的目的这次把上次跑通的UVM做的完整一点。定制电路方面是CIM+PLL,CIM属于老本行,想了几个新的idea准备继续投I,PLL在我的强烈要求下搞成Digital PLL。以上大方针大概在10月份都敲定完毕,然后开始紧锣密鼓的流片。

团队方面仍然是经过上次流片历练的五人小组,分工大致一致,我系统架构+CIM的设计+救火队员,剩下一个RTL,一个验证,一个软件,一个定制电路。

梳理一下本轮流片的timeline,11月份的时候RTL写得大差不差,软件和UVM那边略缓慢,定制电路那边先做PLL,到月底大致schematic结束。十二月份的时候软件和UVM开始发力,到月中时整套基本跑通,框架能run了,用来生成随机激励的risc-v dv开始往里集成,RTL那边也是月中写完开始上FPGA,到月底时候FPGA也通了,验证case定向和随机也都过完了,定制电路那边猛画版图基本上把PLL画好了,我这边月中时CIM的行为模型搭好了,丢进SoC里一起过了验证,然后抽身出来开始做综合,总算卡住了点在一月出头时交了网表,此时看起来情况一片大好。

进度的灾难从25年一月开始,和外包数字后端那边对flow,结论是原先设想的PLL集成方案不太行,本来想的是把PLL需要的模拟io也让数字那边一道摆上,只把PLL的电路部分抽lef丢进来然后到了top再merge,然而这个方案被数字那边否了,事后来看原先这个想法也确实有点非主流。新的方案是直接在PLL里面把模拟io和模拟电源都做好,两边打上powercut然后直接对齐到数字那边摆的ioring里面去,于是定制电路的同事跑去搞这个了,原定的CIM schematic 的活正好我空出来了,就直接自己接手了。

本来设想的是给PLL加个io此事花不了太久,然而悲催的现实是踩坑不断,先是发现代理给的PDK里没有pad,从海鲜市场搞了一个之后,发现wire-bond的pad居然直接往io上贴会short........大无语。翻了很久的ug才发现居然没法和老工艺一样直接把wire-bond pad叠io上........按它的标准flow得把pad放io ring外面然后改pad的pin接到io pin上........ug里面还贴心的说了一句:xxxxx are designed for RDL filip chip applications and do not support CUP wirebond application. If customer do need wirebond, please following guidelines to implement wire-bond approach,行,这就是先进工艺么,默认大家都做flip chip了。

于是再增加一个改pad的工作量,从发现pad问题到搞清楚问题再到解决问题然后做完PLL的时间硬生生拖到了接近一个月,更悲催的是终于等到同事那边弄完了,结果悲报——硬盘坏了,损失两周进度........此时的我已经独立开画CIM的原理图并拉着同事做verify,硬盘坏的时间点大概是除夕,PLL和pad都寄了原定外包那边过年要冲的进度也歇逼了,这条线正式停摆。虽然心情难绷,但该推的还是要推的,年前两周左右同事回家了,CIM只verify掉几个模块,距离画完top还差个关键模块,而且顶层的verify的工作量也大,跑一次好几个小时,查错难度也大,顶着压力驻守到除夕前一晚终于画完验完,回老家准备ISSCC的pre........

年后PLL和pad终于恢复进度,数字后端那边终于可以开始final run。我被ISSCC的事情硬控,过年到I会结束期间几乎没啥流片进度产出,只是抽空搞清楚了用库里standard cell的一些drc问题——定制电路的同事那边因为这个卡住所以一直没怎么推进画模块(经典踩坑)。在美国的时候我就有种不妙的预感,原先评估的是留一个月做CIM的layout,结果各种原因现在已经delay两周了,感觉出大问题,问了一下老师说可以2月底给dry run数据,final gds拖到三月中旬,遂打算等回国后再看看情况。

然后本次流片令人崩溃的节点来了。落地国内,此时已是二月底,去实地考察了一下进度,发现不仅CIM的layout几乎没推进,而且后端同事要被另一颗芯片给occupy走......我当时就想点投降键了,这怎么打?万幸心灰意冷时,老师强力拍板:必须做完做好,遂紧急征召外包人手,而我一个半路出家的版图工人(看过之前的博客应该也能感觉到我做的整体来说偏数字,版图只能说会画一点)需要和外包顶上,把大概一个月的进度在半个月里干完.......

虽然情况令人绝望,但绝境才是能磨练人的,于是我这个半路出家的版图工人开始一边layout一边熟悉rule,顺便把没画完的模块开始往外分,一开始还是老样子继续保持自信(越说越想给自己两耳光,经常发作的谜之自信),模块推进都挺快的,然而到了往顶层拼的时候,事情绝望起来了——半路出家的人就是这点不靠谱,我做fp的时候对顶层走线的评估有严重问题,各种不好走线,要是慢慢绕线的话进度又绝对完蛋,唯一的方式只有铤而走险,重做某些模块和顶层fp。最后的五天时间里,我直接和外包开始两班倒,他们白天做,我晚上7点半过来对接,再干到第二天早晨八九点交班,最绝望的时间点在10号晚上,外包那边route做完,跑了一波发现三百多lvs错........而且高强度的工作给那边的人员也干生病了,眼下是非成败在此一举!幸而定制电路的同事终于把自己那颗结束了,我们两人联机解lvs,一晚上创造奇迹把lvs清完,我还额外加班清完了非金属层的drc。于是第二天模块的drc和lvs在外包的努力下终于结束,晚上交班时只剩和chip的merge,中间因为数据问题又倒腾了几次,终于在12号的凌晨一点,lvs通过的笑脸出现在了我的眼前,那一刻真的情难自已,喜极而泣。随后紧锣密鼓的fill dummy过drc,pass,然后拼版,fill dummy,过drc pass。命运女神终于没有在这最后的关头再折磨我,一路绿灯前进,凌晨六点结束了一切——终于解脱了。现在写这段字时仍然手心冒汗......

回头看最后这段时间,确实是惊心动魄。分析各个因素,我觉得首当其冲的是感谢所有为之努力的人,感谢老师的拍板以及果断找来的外包支援,感谢外包尽心尽力的帮忙完成了诸多的工作量,感谢虽然被另一颗芯片occupy走,但在最后关头前来支援的同事,最后还是感谢一下为此事豁出老命的自己,人不被逼入绝境是不会认清自己的,我在发现进度绝望时的第一反映是——算了,反正已经有两篇I了,够了,不想努力了。但当真正开始面对这件事的时候,一股火开始在心中烧——我想做成,我想做好。也就是这股火支撑我突破了自己的极限;此外是对混定制单元的整体flow的经验,让我能够准确判断出哪些事情可以并行;然后是所里超强的服务器;最后是flow上这次选择了Digital as Top的方案,之前都是Analog as Top,数字和定制电路做完后,还有和手摆的io做连线的工作量,今年我觉得此事颇为不妥,遂研究了一下analog io和digital io并摆的方法,并听从数字那边的建议把analog io直接集成到PLL出的lef里面,节约掉了此部分的工作量,最后紧张的时间,紧张的人手,如果还要加一个手连io的部分,那绝对完蛋。

做个总结,管理上提升对进度延期问题的重视性,该摇人时就摇人,事情都得是人干的。技术上,这次算是对做layout的理解提升了一大截,基础操作基本上达到了娴熟的level,但更重要的是回头好好反思反思写一套layout flow文档出来,以供下次使用。

posted @ 2025-03-12 23:08  sasasatori  阅读(1293)  评论(0)    收藏  举报