寄生参数提取(parasitic extraction)
当你画原理图时,一根导线只是一条不花成本的线——一个完美的连接,不带来任何延迟。真实的金属可没这么慷慨。最终版图上的每一根导线都带有电阻,因为金属并不是理想导体;也都带有电容,因为它紧挨着别的导线、又压在硅衬底之上,而任何两个被绝缘体隔开的导体都会储存电荷。寄生参数提取就是这样一道工序:工具在布好线(routing)的版图上逐一巡查,看清每一根导线的精确几何形貌——它有多长、多宽、走在哪一层金属(metal layer)上、旁边都有哪些邻居在并排走线——再把那些隐藏的 R 与 C 值算出来。芯片本身分毫不变;提取只是去测量布线早已搭好的东西。它的产物是一份寄生参数文件,通常采用与厂商无关的 SPEF 格式(Standard Parasitic Exchange Format),逐网列出每条网线的电阻和电容,好让时序工具不必再靠猜,而是用上真实的数据。
这之所以重要,是因为正是这些寄生参数让信号慢下来。驱动单元必须先穿过导线自身的电阻,把导线的电容充起来,远端才看得到新的电平;而一根又长又细的导线,其延迟大致随长度的平方增长——导线长度翻一倍,延迟就可能翻到四倍。在布线还不存在时,时序工具只能基于估算来工作(一个线负载(wire-load)的猜测,或一次快速的虚拟布线);提取之后,它们换上了从真实形貌推导出来的数据,这正是为什么布线后(post-route)的时序才是你敢信的时序。提取还会捕捉一根导线与其紧邻邻居之间的电容,也就是那种让一根翻转的导线去干扰另一根的耦合(coupling)——这正是签核后段做串扰(crosstalk)与信号完整性(SI)检查的原材料。
在底层,这里有一个速度与精度之间的旋钮。金标准是场求解器(field solver),它几乎精确地求解三维金属几何形貌的电磁学问题,但慢得根本没法在整片芯片上跑。所以量产工具大多采用基于规则、或者说模式匹配(pattern-matching)的提取:晶圆厂事先用场求解器把成千上万种常见的「导线加邻居」配置都表征一遍,工具在你的版图里认出这些模式,直接查表取答案。你只把又慢又精确的场求解器留给那一小撮关键或不寻常的网线——在那些地方,数据哪怕只算偏一点点,都可能把你的时序拖垮。
长导线为什么吃亏:一根分布式 RC 导线的延迟随其长度的平方增长,所以提取得到的每条网线的 R 和 C,会直接喂进 STA 要签核的路径延迟里。
提取的诚实程度,全看它的工艺文件(tech file)有多准——那是晶圆厂提供的模型,描述每一层的厚度、间距和介电常数——所以一定要用与你的工艺和角点(corner)相匹配的那套文件来跑;要是喂给芯片错误的寄生参数,你的时序签核就会错得理直气壮。