1. 从T28工艺转换的“坑”说起:为什么你的Endcap Cell摆不齐?
最近在带学员做项目复盘时,遇到一个非常典型的案例,正好拿来给大家拆解一下。有个同学在做T28工艺节点的项目,原本用的是1P10M(1层Poly,10层Metal)的金属堆叠方案,后来因为成本或者流片策略调整,需要切换到1P7M的工艺库。听起来只是少了几层金属,改个库文件就行,对吧?但实际操作起来,在Innovus里做floorplan时,一添加Endcap Cell(填充单元),问题就来了:这些Endcap Cell不仅没有紧密地挨在一起(abut),甚至压根就没摆放在正确的Site Row(标准单元行)上,整个布局看起来歪歪扭扭的。
我当时第一反应也是检查脚本,是不是addEndCap的命令参数写错了?但反复核对,命令没问题。那问题出在哪呢?其实根源在于工艺库文件(Tech LEF)中关于Site的定义。对于不熟悉后端流程的朋友,可以这么理解:Site就像是芯片版图上的“格子”或者“地基”,所有标准单元(包括Endcap这种特殊的填充单元)都必须严丝合缝地放在这些格子里。不同的工艺库,哪怕来自同一个代工厂的同一个工艺节点(比如都是T28),其Tech LEF里定义的Site宽度、高度也可能有细微差别。
在这个案例里,1P10M和1P7M的Tech LEF,它们定义的Site宽度很可能不同。但是,这位同学在切换工艺时,标准单元库(Std Cell LEF)却沿用了之前1P10M的那一套。这就导致了“地基”(Tech LEF的Site)和“砖块”(Std Cell LEF里的单元)尺寸对不上。Innovus工具在摆放Endcap时,会严格按照Tech LEF的Site格子来定位,当它发现Endcap单元的宽度无法整数倍地匹配当前Site的宽度时,就会产生偏移,甚至直接摆不到Site行上,出现你看到的“对不齐”和“摆不上”的诡异现象。
怎么解决呢? 方法其实很直接,但容易被忽略:
- 确保库文件匹配:当你更换金属堆叠方案时,一定要使用与之配套的、完整的工艺文件包。这意味着不仅要换Tech LEF,对应的标准单元库LEF、时序库(.lib)等都需要同步更换。很多PDK(工艺设计套件)会为不同的金属层数选项提供独立的目录,务必从正确的目录读取所有文件。
- 检查Site定义:在Innovus中,可以通过命令
dbGet [dbGet top.fPlan.siteDefs.name -p *] .size来查看当前加载的Site定义的具体尺寸。对比新旧两个Tech LEF中的这个值,就能一目了然。 - 验证Floorplan:在创建Floorplan(
floorPlan)或调整后,使用checkPlace命令进行初步检查。虽然这个命令主要检查Placement,但在早期也能发现一些基本的网格对齐问题。
踩过这个坑之后,我养成了一个习惯:任何工艺变更,哪怕是同节点下的微调,第一步就是核对所有输入文件的版本和一致性,特别是Tech LEF和Std Cell LEF的匹配性。这能避免很多后续匪夷所思的布局布线问题。
2. Power Domain的“隐形杀手”:为何Route Opt卡住24小时?
第二个案例更让人头疼。一位学员在跑Route Optimization(布线后优化)时,Innovus工具不停地刷同一条警告,然后整个进程就卡在那里,足足跑了24小时毫无进展。他发过来的日志里,警告信息大概是说工具在refine

&spm=1001.2101.3001.5002&articleId=155040773&d=1&t=3&u=5e150f0d46464f0e9ee73b4000d41360)
622

被折叠的 条评论
为什么被折叠?



