1. 时序签核体系总览
数字 IC 设计从 RTL 到最终 GDSII,中间会经历综合、布局布线、时钟树综合、布线后优化等多个阶段。每个阶段都会产生一版网表,而每一版网表都需要回答同一个问题:这颗芯片在目标频率下,能不能稳定工作?静态时序分析(Static Timing Analysis,STA)就是回答这个问题的核心手段,而 Synopsys PrimeTime(简称 PT)则是工业界事实上的 STA 签核标准工具。
理解 PrimeTime 的定位,关键要区分两个词:分析与签核。综合工具和布局布线工具内部都带有自己的时序引擎,它们会在优化过程中反复估算时序,用来指导优化方向。但这些引擎的时序模型相对简化,且与优化目标耦合,结果不能作为最终判定依据。PrimeTime 使用独立的、经过工艺厂认证的延迟计算引擎(基于 Synopsys 的 CCS 或 NLDM 时序模型),配合精确的寄生参数提取结果,给出与流片结果高度一致的时序结论。因此,工具内时序用于“指导优化”,PrimeTime 时序用于“判定是否达标”,后者才具有签核(sign-off)效力。
签核标准与判定依据
PrimeTime 的签核结论由一组约束和库文件共同决定,核心判定量是时序裕量(slack)。对建立时间(setup)检查,slack 定义为:
setup slack = required_time - arrival_time
= (捕获时钟沿时刻 + 时钟路径延迟 - 建立时间 - 不确定性)
- (发射时钟沿时刻 + 时钟路径延迟 + 数据路径延迟)
对保持时间(hold)检查,slack 定义为:
hold slack = arrival_time - required_time
= (发射时钟沿时刻 + 时钟路径延迟 + 数据路径延迟)
- (捕获时钟沿时刻 + 时钟路径延迟 + 保持时间 + 不确定性)
两类检查都要求 slack ≥ 0。实际签核中通常还会留出余量,例如要求 WNS(最差负裕量)≥ -0 ps 且 TNS(总负裕量)为 0,或按项目要求留 5%~10% 的时钟周期余量。除建立/保持外,PrimeTime 还检查恢复/移除(recovery/removal)、脉冲宽度、时钟门控检查、最大过渡时间、最大电容等,共同构成完整的签核清单。
输入输出文件体系
PrimeTime 的运行依赖一组明确的输入,输出则是一份可追溯的时序报告。典型输入包括:
- 门级网表:综合或布局布线后的
.v文件,描述标准单元与宏单元的连接关系。 - 工艺库:
.db格式的时序库,包含单元延迟、约束、功耗信息;通常还配合.lib源文件用于查阅。 - 寄生参数文件:SPEF 或 DSPF,描述互连电阻电容,决定线延迟精度。
- 时序约束:SDC 文件,定义时钟、输入输出延迟、多周期路径、伪路径等。
- 环境与配置:工作条件(PVT corner)、线负载模型或提取模式、operating condition 等。
输出方面,PrimeTime 生成时序报告(report_timing)、约束检查报告(report_constraint)、时钟报告(report_clock_timing)以及可用于后续分析的会话文件。这些报告是判断设计是否达标的直接依据。
典型工作流
一次完整的 PrimeTime 签核通常按以下顺序展开:读入库与网表 → 读入寄生参数 → 读入 SDC 约束 → 设置工作条件与检查项 → 更新时序 → 生成报告 → 分析违例并反馈修改。其中“更新时序”(update_timing)是触发延迟计算的关键动作,只有执行后报告才反映最新状态。
与设计流程的衔接
在典型项目中,PrimeTime 签核并非只在最后做一次。综合完成后会用 PrimeTime 做一次“综合后签核”,检查约束是否合理、是否存在明显违例;布局布线完成后做“布线后签核”,此时寄生参数最准确,结论最接近真实芯片;若有时序违例,则回到布局布线工具做优化,再重新签核,形成迭代闭环。对于多 corner 签核,通常需要覆盖 WC(worst-case)、BC(best-case)以及温度反转等场景,确保芯片在所有工作条件下都满足时序要求。
掌握 PrimeTime 的定位、签核标准和输入输出关系,是后续学习约束编写、路径分析和违例调试的基础。只有先建立“输入—处理—输出—判定”的整体框架,才能在面对具体违例时快速定位问题所在。