验证平台的谱系在上一节排开,本节是全章压轴:两起真实事故的完整排错实录。一起是跨时钟域信号漏加同步器导致的概率性数据错乱,一起是伪路径误标掩护下的时序违例在硅前最后一刻暴露。两起事故合起来,恰好覆盖时钟域问题的两大侦破方向——动态仿真抓波形、静态分析查结构。读完本节,你带走的不是两个故事,而是一份可复用的排错路线图。
先把现场摆出来。CK770 有四个时钟域(3.1 节的方案):计算域、互连域、外设域、常开域。事故一发生在原型平台联调期:外设域的一根状态位直连进计算域的控制逻辑,数千次运行出现一次的数据错乱,现象是采集会话的状态位"闪断"。事故二发生在硅前签核期:静态时序分析报告显示互连域到外设域的一条路径违例余量为负,而项目原计划里这条路径已被声明为伪路径、免于检查——免检合同与违例报告同时出现,说明合同写错了。
两起事故共享同一个理论底座,先用一段话把它立住。跨时钟域之所以危险,是因为建立与保持的检查只对同源时钟有效:同一时钟域内,工具保证数据在时钟沿前后稳定;信号跨进另一个时钟域后,两边沿的相对关系完全失控,数据可能在对方的建立保持窗口内恰好翻转——采样结果的真假变成掷硬币,这叫亚稳态。同步器(两级或三级触发器串联)的作用不是消灭亚稳态,而是把它的概率压到工程可忽略,并给亚稳态留出在触发器间"消散"的时间。所以规则很硬:凡是跨域信号,要么过同步器,要么有握手协议护送,别无第三选项。

背景。 原型平台联调第三周(上一节的案例里,它与门级告警同周发生),固件工程师报告采集会话状态位低概率闪断。现象的特点是"数千分之一"——概率性问题是跨域亚稳态的典型指纹,但指纹不等于定罪,还得走完侦破流程。
操作。 排错按路线图走。第一步,定边界:确认该状态位的发送端在外设域、接收端在计算域,物理上是根裸线——4.2 节"跨时钟域显式声明"的纪律检查表在这根线上是空白,连注释都没有。第二步,动态复现:回事件仿真构造快速时钟相位漂移场景,三十秒内复现;波形显示接收端在亚稳态窗口内采样,同一拍内不同触发器对同一位采出不同值。第三步,修结构:加两级同步器;同时因该状态是"多位的会话状态",多位各自同步会出现位间错位(各位到达时刻不同步),团队进一步改成握手护送——发送端把状态打包加校验,接收端同步握手信号后整体锁存,保证位间一致。第四步,静态收网:跑结构扫描工具,确认修复后跨域路径全部落在同步器保护名单内,并把这个检查写进签核清单。
结果与解读。 修复后原型整夜压力无复现,结构扫描零遗漏。这起事故的教学点有三处。其一,多位信号不能逐位同步——这是比"忘加同步器"更隐蔽的二级错误,很多团队加了同步器仍然翻车就翻在这里;多位数据过域要么打包加校验、要么走异步握手。其二,概率性问题必须先量化再追捕(数千分之一压成三十秒复现),"偶发"不能成为搁置理由。其三,纪律检查表的空白处就是事故的入口:这根线只要在 4.2 节编码时被标注过域属性,评审时必被拦下——排错的终点永远是回头加固上游纪律。
背景。 硅前签核期,静态时序分析报告(方法论详见下一章 6.3 节)在互连域到外设域方向报出一条负余量路径。蹊跷在于:该方向当时按 4.3 节的约束被整组声明为伪路径——免检的路径出现了检查报告,只能是核对流程出了岔子:实际上这组"免检"从未被任何工具核查过,报告来自一次手工补充的单路径检查。
操作。 侦破同样按路线图。第一步,审合同:回查伪路径声明的历史,发现它是综合阶段为压缩运行时间"整组豁免"的产物,豁免时未逐路径核对——4.3 节案例的遗留病根。第二步,分类:把这组路径逐条过筛,区分出"真异步"(有同步器或握手护送,合法免检)与"假异步"(同源分频域之间有固定相位关系的路径)。第三步,对症:假异步路径其实可以做时序收敛——同源分频域间用多周期约束正确表达,工具就能检查它们;报告里那条违例路径正属此类。第四步,收敛:改约束为多周期声明,让工具按真实波形关系检查;个别物理上绕远的路径留给第六章的布局布线优化。第五步,制度收口:团队立规——伪路径声明必须附逐条核对记录,整组豁免被明令禁止。
结果与解读。 约束修正后重跑分析,违例清零,签核通过。这起事故的教学点同样有三处。其一,伪路径是免责声明,不是挡箭牌——声明之前每个字都要核对,4.3 节说"约束权力越大核对责任越重",这里是那个论断的现身说法。其二,同源分频域之间不是真异步:它们有固定的相位关系,正确表达是倍频或多周期约束,一概按伪路径豁免是把可检查的路径推出监管——本册 CK770 的互连域与计算域正是这种关系。其三,动态仿真抓不到这类问题(功能正确、纯粹是时序边界的病),静态分析才是它的天敌——这解释了为什么排错路线图必须双方向配备。
两起实录合起来,给出一份可以带走的框架。接案:量化现象(概率、场景、温度电压相关性),概率性指向亚稳态,确定性违例指向约束或实现。划界:画出涉事信号的域归属图,检查每一根跨域线——有同步器还是握手护送?多位信号是否打包?双侦:动态复现(仿真加快速相位场景、原型加压力循环)与静态扫描(结构查同步器、约束审免检)并行推进,证据合流再定根因。收网:修复后结构扫描零遗漏、压力场景零复现,双绿才算结案。回溯:每一次排错结束,回头修改上游纪律(编码标注、约束核对、签核清单),让同类事故失去入口。
这份框架不限于 CK770。任何时钟域问题的案卷,都可以按"接案、划界、双侦、收网、回溯"五步走一遍——侦破手段可以随工具升级,五步的骨架不变。
不能,那两拍的间隔正是亚稳态的消散时间。一级同步器输出的信号仍可能处于中间电平,第二级触发器的作用是在下一个采样沿到来前,给这个不确定电平留出稳定的窗口——打一拍等于把亚稳态直接放行进逻辑,概率性故障原样保留。工程上的取舍方向不是减拍数,而是用握手或异步先进先出把"多位数据过域"组织成"控制信号过两级同步器、数据走稳态通道",让同步延迟只付一次。
慢是相对的,账要按数据量摊。握手协议的固定开销是几个来回的同步延迟,若一批数据走一次握手(请求一次、突发搬运一批),摊到每个数据单位上的开销趋近于零——真正的禁忌是逐字握手,那等于给每个字节付一次过路费。高频设计里成熟的组合是异步先进先出加批量握手:数据在队列里自然缓冲,两端各按自己的节拍进出。判断式与 2.3 节突发效率同门:公务次数越少,通道越快。
功能证据与结构安全网都齐了,验证阶段的台账合卷。下一章进入物理设计:CK770 要从网表变成真正的硅片版图,时序的最后裁决也将在那里完成。