时序签核(timing signoff)
回到第一周期,当你在综合后的网表(netlist)上跑静态时序分析(static timing analysis)时,你是在纸面上给芯片掐表。那时时钟树(clock tree)还只是一个理想假设,导线只是粗略估计,整座工厂也只用一组「典型」条件来代表。这就像用一张直线地图、再假设天气晴好,来估算一趟公路旅行能不能一天跑完:拿来做规划很有用,却算不上承诺。时序签核,就是你在真实、完整搭好的版图(layout)上重做同一套分析的那一刻——用实际布好的导线、真实的时钟树,以及这颗芯片此生会遇到的每一种工作条件——直到这时才敢宣布「它在硅片上能行」。它是投片(tapeout)前的最后一道关卡,回答的是「它真的能跑吗?」而不是「它应该能跑吧?」。
让它值得信赖的,是你喂给它的东西。布线(routing)完成后,一个寄生提取(extraction)工具会读取最终的几何形状,算出每根导线的寄生电阻和电容——每段金属有多长、多宽、在哪一层,以及哪些邻线贴着它走、隔着缝隙耦合(coupling)电荷过来——然后把结果写出来,通常是一个 SPEF 文件。时序工具(timer)把这些真实的 RC 延迟,和来自标准单元库(standard-cell library)的单元延迟合在一起,对每一条路径重新算出建立(setup)和保持(hold)裕量。关键在于,它是把所有工艺角(corner)和所有模式(mode)一次性全部一起算的:工艺角是物理上的极端情形(慢硅/快硅、低压/高压、低温/高温——低压下的慢-慢角伤建立,快-快角伤保持),模式则是功能状态(任务模式、测试/扫描、低功耗)。工艺角与模式的笛卡尔积就是多模式多工艺角(MMMC)视图,一条路径必须在这张网格的每一格里都通过,因为芯片在每一种情形下都得正常工作。
在工艺角之上,签核还要为那些理想化分析忽略掉的效应加上余量:片上变差降额(OCV,以及更锐利的后继者 AOCV 与 POCV),这样并排的两个门就不会被当成快慢完全一致;再加上来自翻转邻线的串扰(crosstalk)延迟、来自电压塌陷的电源网格的 IR-drop 相关延迟,以及时钟抖动(jitter)。到这一步还出现负裕量的任何一条路径,都是实打实的硅片风险,要靠一次时序 ECO 来修——一次外科手术式的尺寸调整、插缓冲器或重新布线,且绝不能把原本已经通过的工艺角弄坏。只有当最差负裕量在整个 MMMC 空间里都达到零或更好,签核才算过关;这一点,连同干净的 DRC 与 LVS,才是让设计得以进到 GDSII 的前提。
时序签核只有在最差裕量于整张「工艺角 × 模式」网格上、基于真实提取出的 RC 都保持非负时才算通过,而不是只在某一个典型工艺角上达标。
布局前的 STA 告诉你的是架构和综合是否站得住脚;签核 STA 告诉你的则是这一套确切的掩膜版(mask set)是否可以安全制造——前者通过,从来都不保证后者也过,因为真实的寄生参数和工艺角散布,常常会把你以为还在的余量一点点抹掉。