物理实现(Physical Implementation)
物理后端设计,其实就是版图设计,physical implementation。主要包括两个方面,一方面是模拟电路版图设计,另一方面是数字电路版图设计。
模拟电路版图设计的三个需要关注的重点是:1)电路的工作原理,功能,这一部分我认为主要是将整个版图分成几个部分,互相之间存在间隔,不会互相干扰;2)电流的大小,这主要是因为不同层的金属的通过电流的能力不同,为了避免金属被击穿,所以会需要金属加宽,但又不至于过宽影响芯片的整体的布局规划,面积;3)匹配,因为是在模拟电路中,很多时候是存在差分信号的,这时候就需要特定的单元摆法,比如说同质心,或者加入dummy器件(无用器件,只是用来匹配的)来实现匹配。一般使用的工具是Cadence的virtuoso,当然验证部分可能会用到calibre或者assure或diva。
数字电路版图设计以前的方法跟模拟电路版图是类似的,因为最小尺寸比较大,整体门电路又不是很多,不过现在的电路动辄千万门级,所以想要手动实现画版图,不仅难度大还浪费时间。现在一般是采用APR,自动布局布线的方式来实现。其中最重要的我认为是floorplan(布局规划)和修timing实现时序收敛。一般来说正常流程是后端设计工程师先设计一版布局规划,整个流程跑一下,相应的拥挤度没有很高,后续的routing(布线)也可以顺利进行,然后就会找很多工作人员,包括开发代码的设计人员(数字前端),测试工程师(PE)等等很多开一个组会,确定不同模块的影响和不同的要求,最终确定一版布局,来进行后续的布线和修正timing等,要注意不可能一版floorplan就能实现要求,所以后端工程师通常会同时跑很多不同的版本。然后修正timing的话,CTS方式会有一些影响,feCTS只用balance tree方式来长时钟树,而ccopt则还采用了useful skew的方式来长时钟树,所以会有一些不同;还有就是修timing的话也可以采用不同的方法,例如改变buffer类型,或者直接更改路径等都可以,反正最后要实现收敛。数字电路版图设计会有一个sdc文件(synopsis design constraint),会对物理后端设计的很多方面有约束,比如说面积,功耗,时序的一些要求等,相应的时序要求相对会多一点。很多做物理后端设计的公司会研究flow和sign-off,flow就是项目流程,sign-off是将gds-ii文件交于foundry前的验证的view(芯片工作环境)等的数量,能较快的实现量产并保证质量的公司才能生存。现用的一些后端使用的工具包括Cadence的encounter(或者叫innovus,15年开始)和synopsis的primetime,还有的ICC我没用过,但是一些台企会使用laker,主要是在做FIB的时候用一下,因为相对于encounter坐标什么的好像更精确一些,就是两个结合着用,修正timing的时候有时候会用到tweaker。
两个版图设计都需要满足DRC和LVS通过,DRC是Design Rule Check,设计规则检查,及设计出来到foundry厂能否生产出来,LVS是layout versus schematic,版图和电路网表对比,需要确定设计的版图是否对应的上电路,否则功能不一致就没意义了。
不同的模拟电路版图设计项目会有不同的要求,采用工艺不同就会有很多不同,并且它存在着正向设计和反向设计两种,反向设计很多时候是抄国外的芯片;数字版图设计,采用的工艺不同,比如说是tsmc或者umc等会有不同,采用40nm或者28nm也会有不同,一般尺寸越小约束要求越严格。版图设计的目的是物理实现电路和功能,流片后无法满足需要重新调整更改,一般只有一次更改的机会,否则项目就是一个失败的项目,所以版图设计很需要仔细。