本节摘要:辅助检查不决定频率上限,却决定芯片能否正确复位、时钟能否干净关断。恢复与移除管异步控制信号的释放时机,最小脉宽管时钟沿的质量,门控检查管使能信号与时钟的配合。它们与建立保持共用同一套 arrival 对 required 的框架,只是比较的事件不同。
所谓辅助检查,是指除建立与保持之外,STA 在每个时序检查点上自动执行的一组判定。它们共享同一个思想骨架:某一事件(信号变化)相对另一事件(时钟沿)必须落在指定窗口内,窗口的宽度由工艺库给出,裕量的算法同样是要求时间减到达时间。差别只在"谁是参考事件"。理解了这一点,本节的四类检查就没有新公式,只有新场景。
异步复位(或置位)信号平时可以随时到达——它本来就是异步的,这正是它存在的意义。但它不能永远异步下去:想退出复位、恢复同步行为,必须回答两个问题。第一问叫恢复(recovery):异步信号撤除(比如复位从有效跳回无效)的时刻,必须比下一个时钟有效沿早至少 Trecovery——给触发器留出"认清复位已经结束"的时间,本质上是异步信号对时钟沿的建立检查。第二问叫移除(removal):撤除动作还必须发生在时钟有效沿之后至少 Tremoval——不能贴着沿撤,否则触发器可能把撤除动作本身当成数据采进去,本质上是异步信号对时钟沿的保持检查。
两问合起来的工程含义:复位释放要避开时钟沿附近的禁区,落在两个沿之间相对安静的地带。设计中通常用复位同步器(复位释放同步电路)来保证这一点——异步生效、同步释放,释放沿由本时钟域自己产生,天然满足恢复移除。没有复位同步器的设计,恢复移除违例会成片出现,而且热仿真很难复现——它是"偶发起不来"这类 silicon failure 的常客。
| 检查 | 类比对象 | 参考事件 | 要求 | 典型违例来源 |
|---|---|---|---|---|
| 恢复 recovery | 建立检查 | 时钟有效沿 | 撤除沿早于沿至少 Trecovery | 无复位同步器、异步释放穿越时钟域 |
| 移除 removal | 保持检查 | 时钟有效沿 | 撤除沿晚于沿至少 Tremoval | 同上 |
| 最小脉宽 min pulse width | 信号质量 | 同一信号的相邻两沿 | 高/低电平持续时间不低于限值 | 分频时钟、门控毛刺、脉宽被延迟链压缩 |
| 时钟门控 setup/hold | 建立/保持 | 门控时钟沿 | 使能沿落在沿窗之外 | 组合逻辑生成门控使能、毛刺 |
最小脉宽检查问的是:一个脉冲窄到什么程度就不成其为脉冲。电平持续低于库文件规定的限值时,单元内部的锁存结构可能来不及完成状态建立,输出进入不确定区。脉宽违例的典型来源有三个:分频或选择逻辑对时钟做了组合处理,产生窄刺;门控信号在时钟沿附近抖动,把正常的时钟周期切成碎片;延迟链插入不均衡,把宽脉冲挤窄。工具按"高电平最小宽度"与"低电平最小宽度"分别检查,高速模式下(周期本身已接近脉宽限值的时钟)这项检查经常先于建立检查爆雷。
时钟门控(clock gating)检查是脉宽与建立保持的混合体:使能信号 EN 在门控单元上的跳变必须避开门控时钟的有效沿——早一点完成(对沿的建立)保证开关干净,晚一点离开(对沿的保持)避免切出毛刺脉冲。集成门控时钟单元(ICG)把这套检查内建为库单元的 timing arc,STA 自动执行。手工用组合逻辑搭门控,是最容易被毛刺惩罚的写法:任何在沿附近翻转的组合信号都会直接污染时钟树。
辅助检查在报告里有独立的小节。以下是一段最小脉宽违例的骨架,注意 Path Type 标注为 min pulse width,比较的不再是数据与时钟,而是同一时钟的相邻两沿:
Startpoint: clk_div_r (分频时钟 q 端) Endpoint: u_core/u_ff_meta/CK Check Type: min_pulse_width ; 高电平最小宽度检查 required 0.084 ; 库限值:高电平至少 84ps measured 0.076 ; 实测高电平持续 76ps slack (VIOLATED) -0.008 ; 窄了 8ps
恢复与移除的报告结构与建立保持几乎一致,只是 Startpoint 是异步信号的驱动端、Endpoint 是触发器的 RN 或 SN 引脚。读报告时注意区分 check type 字段——把移除违例误读成保持违例、跑去加延迟单元,是最常见的误操作,方向完全错了。
辅助检查的修复优先级与建立保持不同:脉宽与门控违例通常改结构而不是改延迟——把组合生成的时钟改成用 ICG 单元生成,把组合分频改成寄存器分频,比插一堆 buffer 根治得多。恢复移除违例的第一嫌疑人是复位结构:补上复位同步器、让释放沿来自本地时钟域,绝大多数违例随之消失。预防方面有三条纪律值得写进设计规范:任何异步信号跨域必须有同步器;时钟树上的任何组合处理必须用专门的时钟单元;库文件里的脉宽限值与恢复移除参数随角变化,签核时要覆盖所有角(第五章)。
辅助检查在测试模式下会整体换一套参数:扫描移位时钟通常慢得多,脉宽与频率检查自然放松;但扫描链上的锁存器窗口、移位路径的保持要求反而更紧——移位模式路径短、时钟偏斜敏感,保持违例高发。可测性设计插入还会改变异步结构:扫描使能 SE 信号跨域时需要同步,复位与扫描复用引脚的释放时序要同时满足功能与测试两套要求。工程协作的要点是:DFT 插入完成后,辅助检查清单要按模式各跑一遍——功能模式干净不等于移位模式干净,两类违例的修复责任人还常常不同。
高频问答两则。问:辅助违例可以像建立违例那样留到后面阶段再修吗?不建议——恢复移除与脉宽的修复手段少(改结构为主),拖到布线后往往没有干净的修法,它们应该在综合后就开始盯。问:门控检查违例数突然翻倍,先查什么?先查网表是否更新过 ICG 单元的库版本——不同库对门控弧的表征口径不同,版本切换会让同一电路的检查结果跳变;确认库一致后再查使能信号来源是否被优化改动。
辅助检查是两道门槛之外的护栏,它们出事往往比建立违例更凶——建立违例让芯片跑得慢,辅助违例让芯片根本进不了正常状态。下一节看一个特殊角色:锁存器。它在电平有效期间是透明的,这个"漏洞"被工程师发展成了一门正经技术——时间借用。