内容总览
Chip finish即为DFM;
①在DFM阶段,我们需要fix所有的antenna violation,在route阶段也做了天线效应的修复,但是只fix了一次,可能还有未修复的,这一节全部fix完成;
②修正routing的pattern以使得布线更加强壮以抵抗defect缺陷;
③增加一些冗余的连接;
④执行金属填充并插入filler cell;
DFM/Chip Finish
状态检查
在进行DFM之前,我们需要对设计状态进行检查,如上图,logic DRC允许有一些violation存在,其他方面必须要满足;
Chip Finish Flow
在post-Route后,timing及DRC应该都是满足的,我们跟着flow进行就好;
这里的reduce critial area就是为了resistant defect;
Insert filler cell指的不是pad filler cell,pad filler cell在前面floorplan就已经完成了,这里指的是std cell filler cell;
在执行完上述一些步骤后,会使layout/placement/route发生一些变化,可能会对timing有影响,因此只要做一下timing opt;
Reduce critical area
随机散粒缺陷
芯片在制造时,难免会有些异物存在,这些异物可能是导电的,也可能是不导电的;如果是导电的,当位于两条metal直接时就会导致short;而不导电的颗粒落在某根net上,可能就会导致open出现;
Report critical area
我们在使用report_critical_area命令时,需要导入工艺厂商提供的颗粒分布函数,-particle_distr_func_file,然后设置金属层位置,错误类型;如上图;
根据工艺厂商提供的func_file可看出,缺陷的尺寸与出现的概率呈反相关,尺寸越小的缺陷出现的概率越大;
解决方案:Wire spreading + Wire Widening
解决方案,Wire spreading就是将wire推开到1/2pitch位置,Wire Widening就是增加线宽;
注意,在使用的时候,优先保时序, 只有当setup/hold slack超过0.05的路径才进行spreading & widening,如果时序没问题,那就不进行操作;
Wire Spresding
在进行wire spreading时,记住要设置timing preserve;
主要通过postroute function来解决shorts;会将signal wire往两侧移一点距离来避开defect,避免short;
注意,只能在参考方向上spread;同时会自动查找并修复引起的DRC问题;
控制最小Jog length
这里先解释一下Jog是什么意思,可以简单理解为先弯折后又回来,这需要一个前提条件,如上图,只有当最小的jog length达到要求是才会进行jog,默认是2 pitchs,我们可以人为修改;
通过postroute function来解决open;也会查找并修复引起的DRC问题;
修复天线效应--插入反向二极管
前面我们在CTS阶段也提到过一种修复天线效应的方法--Jump layer,因为天性效应主要和gate上直接连接的金属面积相关,我们通过Jump layer可以有效的降低gate直连金属面积;
此处介绍另外一种方法:通过在gate附近加一个反向二极管,用来做电压钳位clamp,其实这种方法和ESD clamp很相似,都是靠反向二极管的击穿来泄放电流;
一般这种插入反向二极管的方法是将前面Jump layer法没有修复的antenna violation进一步进行修复;如果这一步还是没有fix的话,那就只能手动去插入diode进行修复;
Filler cell Insertion
为什么要插入std cell filler cell?在半导体制造工艺中,要求版图上的density是均匀的,不能出现有些地方很密集,而有些地方很空旷,否则很容易导致曝光不均匀降低良率;为了提高良率,我们需要保持chip density统一,故需要在一些空的row上插入std cell filler cell;
插入std cell filler cell
命令如上所示,值得注意的是,我们要在std cell PG rail完成后再插入filler cell;
Incr. timing opt
前面提过,在经过reduce critical & 修复天线效应 & insert filler cell后,必然会使得layout/placement/route发生一些细微的变化,可能会对timing产生影响,如果有影响,我们就需要在进行优化,利用route_opt -incremental -size_only,这里的优化只改变cell size,从而改变驱动能力来优化时序,其他方面保持不变;
Redundant Vias
前面在routing阶段我们已经插入双倍via了,但是当时插入的也是有转换率的,在chip finish阶段,我们还需要再做一次,进一步增加双倍via转换率;使用的命令为:insert_zrt_redundant_vias;
插入双倍via-setup
这一步和前面routing中setup一致;
Via优先级设置
插入的双倍via也是有种类之分的,有的via有利于DFM,有的via有利于routing;因此我们可以设置via的优先级,工具在选择via时会根据优先级选择使用,如果优先级相同,会优先选择利于riuting的via;
利于DFM的via举例
如上图所示,对于DFM而言,VB>VG>V,而最差的双孔优于最好的单孔;我们可以按照这个顺序来进行替换;
插入via command
我们可以用insert_zrt_redundant_vias -effort med命令插入双倍via,为什么不用high effort呢?因为high effort虽然有更高的转换率,但有些via会被move,从而可能导致其他的DRC问题;
时序保持模式timing preservation mode
double via的插入对不同的path产生的影响是不一致的,对于short net,则会增大负载电容,从而降低时序;而对于Long net,则会降低电阻,从而加快时序;
对于timing preservation mode,考虑到double via的插入对不同的path影响不同,个人认为是为了在chip finish阶段保证关键路径的timing,不让工具在关键路径插入double via,从而不受via insertion的影响;
Double via 插入报告
我们可通过report_design -physical得到上图report,从中可以看到Double via 的转换比例,越高越好;
Reconnect PG and perform route clean-up
Insert metal fill
这个问题和我们前面所说的std cell density要保持均匀比较相似,在刻蚀metal时,我们也要保持metal wire的密度基本一致,否则对于密度较低的区域很容易导致过刻蚀的现象出现,如上图,左边的wire是规则的长方形,而右边则由于过刻蚀形成了梯形,这样的话整个wire的电容电阻特性都会改变,这是我们不希望的;
插入metal fill防止过刻蚀
我们可以通过ICC来插入metal fill,也可以通过ICV插入,≤45nm工艺推荐使用ICV;插入metal filler以保持metal wire的密度基本一致;
Metal fill推荐设置
当metal fill离关键路径过近时(包括同层及上下层),会影响关键路径的寄生参数,从而影响timing;因此,我们可以通过-timing_driven选项来告诉工具不要再关键路径附近插入metal fill,保证关键路径的时序;
对于非关键路径,也会设置正常wire与fill metal的最小间距,通常设置为2*minSpacing;
Summary--Chip finish
Summary;
Final Validation
做完DFM后,还有一些后续的验证需要进行:
①导出GDS2文件,利用ICV(Synthesis)或者Calibre(Mentor)进行DRC及LVS版图验证,一般Calibre用的多一些;
②导出netlist,进行形式验证;
③写出.spef file,进行STA静态时序分析,目前主流的做法是直接用StarRC抽取寄生参数,然后导入到PT中进行时序分析;
导出.SPEF file
用write_parasitics命令导出.SPEF file,然后给到PT工具;
当然,signoff也可以用StarRC extraction;
导出Netlist
根据目的不同,如果netlist用来进行STA分析,则不需要physical only cell的一些信息;而如果是用于LVS(layout VS schematic)验证,那么就需要所有的信息;
相应command如上图所示--write_verilog -no_corner_pad_cells;
导出GDSII
write_stream -cells DFM_clean xxxx.gdsii;