后仿阶段,SDF 反标日志里的 Error 必须修复,但 Warning 往往只是工具严格检查产生的提示,未必影响实际功能。面对这些警告,我们需要仔细甄别其严重性。以下整理了常见 Warning 及其处理建议:
1. SDFCOM_UHICD:Up-hierarchy Interconnect Delay ignored 该警告表示将层次间的 delay 放在了 device delay 上体现。对跨层次的端口标注 INTERCONNECT delay 时出现此提示,在层次铺平之后通常不会有问题,一般无需处理。
2. SDFCOM_IWSBA:INTERCONNECT will still be annotated 同样无需处理,delay 实际上已被反标。VCS 无法识别 assign 语句代表单纯的连线还是作为 device 存在,因此检测到对 assign 语句反标 INTERCONNECT delay 时会报出该警告,但仍会执行标注。如果确认 assign 仅为连线,可选择屏蔽;推荐做法是使用相同变量连接同一层级下 cell 的端口,并仅对这两个端口标注 INTERCONNECT delay。
3. SDFCOM_INF:IOPATH not found 通常因 SDF 和 specify 中没有对应项导致。需要判别是否影响功能:clk to clk 的警告通常问题不大;但 clk to Q 的情况务必仔细检查。若造成 SDF 反标失败,则需针对具体 case 评估影响。
4. SDFCOM_CFTC:Cannot find timing check
同样是 SDF 和 specify 未匹配。例如两者中一个是多 bit 一个是拆分 bit,会导致匹配不上。对于位宽拆分的情况,编译时可添加 -tcheckvecsplit 选项;其他情况需检查为何不匹配,此类通常需要解决。
5. SDFCOM_TANE:TIMINGCHECK Annotation Not Enabled SDF 中有 timing check,但 Verilog 没有对应的 specify 指定,导致 SDF 约束失效。正常情况下需要解决。
6. SDFCOM_IANE:IOPATH Annotation Not Enabled SDF 中有对应 IOPATH 约束,但 Verilog 没有 specify 指定,约束同样失效。正常情况下需要解决。
7. SDFCOM_STCLOR:SCALED TC Limit Out of Range
VCS 使用 32bit 作为 delay,上限为 2^31。超过最大 delay 会报错;有时未超过也会报错,因为 module 未指定 timescale,而是采用 top 的 timescale 计算导致超限。解决方法是修改 delay 或使用 -override_timescale= 重新指定 timescale 覆盖之前的设置。
8. SDFCOM_RLTPD:RETAIN value larger than IOPATH delay RETAIN delay 不能比 IOPATH delay 大。首先确认是否需要 RETAIN,不需要则去掉编译选项;如果需要,则需排查为何出现这种不合理的延时关系。
9. SDFCOM_SWC:Simple Wire Connection 提示 Y->A 之间不是简单的 wire 连接,可能经过了几级 assign。只要符合实际设计且 delay 已生效,通常无需修改。
10. SDFCOM_NICD:INTERCONNECT Delay encountered 仿真器根据前后级关系处理。默认情况下,工具会将负值当成 0 处理,使约束更紧。若想正常处理负延迟数值,除添加仿真工具使能选项外,还需确认 SDF 文件或 specify 模型中的时序定义是否支持负值(如 $setuphold 支持,而 $setup 不支持)。本质上是因为负延时无法被补偿为正值,需仔细确认。
11. SDFCOM_NTCDNC:Negative Timing Check Did Not Converge 当 VCS 无法收敛多条 negative timing check 中的 delay 时会报告此警告。原因可能是 VCS 无法识别互斥 condition,或是 timing 出问题导致 delay 无法收敛,需仔细检查并解决。
12. SDFCOM_NDMD:NTC Delay is larger than ModPath Delay ModPath Delay 小于 NTC Delay 是不合理的,需要解决。
注意事项 针对上述第 3 至 6 项,Warning 多由 SDF 和 Library model 之间的不匹配导致。当出现不匹配时,VCS 默认行为是忽略 SDF 中多余的 check 和 delay。此时需要前端和后端确认哪一个才是 Golden Reference。
以上仅列举了部分典型场景。SDF 反标涉及复杂的时序约束,任何 Warning 都需认真对待,否则可能导致无效 Debug 甚至仿真结果偏差。

