计算机体系结构 E02:数字电路的物理约束

核心问题

RTL 功能正确,为什么仍可能无法按目标频率工作?寄存器之间的最长路径必须在下一个采样边沿前稳定,最短路径又不能过早改变接收端输入。setup 和 hold 是两条独立约束。

附件:E02-physical.json。

范围与证据等级

证据等级为手算。模型没有 Liberty 工艺库、综合网表、寄生参数、时钟树、OpenSTA 报告、CDC 工具或 FPGA 板卡。所有纳秒值都是显式题设,不代表任何制程。

简化的单周期检查为:

1
2
setup slack = Tclk - (tCQmax + tLogicMax + tSetup)
hold slack = tCQmin + tLogicMin - tHold

负 slack 表示这组题设违反对应约束。真实 STA 还要处理时钟偏斜、不确定度、多周期路径和物理延迟。

核心案例:放慢时钟不能修复 hold

setup 失败案例的 slack 为 -0.08 ns;把周期从 1.0 ns 增至 1.2 ns 后变为 0.12 ns。hold 失败案例为 -0.03 ns,增加最短组合延迟后才变为 0.03 ns。

增大时钟周期直接增加 setup 可用时间,却没有进入上述 hold 公式。因此“降频能修所有时序违例”在这个最小模型中已经不成立。异步跨时钟域还涉及亚稳态概率和协议,单时钟公式无法证明同步器安全。

模式:最长路径与最短路径分别约束

1
慢路径看 setup;快路径看 hold;跨域另做 CDC 分析

流水线切分、延迟单元插入和跨域同步不能混成一个“时钟问题”。每种修复应对应具体失败的约束。

验收结果

本批脚本退出 0,四个题设分别覆盖 setup 失败/修复与 hold 失败/修复。输出保留 liberty=false、netlist=false、real_sta=false。

模式速查

失败 题设内有效改动 不能据此声称
setup slack < 0 增大周期或缩短最大路径 真实芯片已收敛
hold slack < 0 增加最短路径延迟等 降频一定有效
CDC 风险 同步与跨域协议分析 两级触发器绝无亚稳态

一手参考资料