在 SDF 反标过程中,Error 必须解决,但 Warning 有时不影响实际功能,需甄别处理。以下整理常见 Warning 及解决方案:
1. SDFCOM_UHICD:Up-hierarchy Interconnect Delay ignored
该 Warning 表示将层级间(hierarchy)的 delay 体现在 device delay 上,通常无需处理。当对跨层次端口标注 INTERCONNECT delay 时会出现此提示,层次铺平后不会有问题。
2. SDFCOM_IWSBA:INTERCONNECT will still be annotated
无需处理,delay 实际上已被反标。VCS 无法识别 assign 语句代表单纯连线还是 Device,检测到对 assign 语句反标 INTERCONNECT delay 时会报出该警告,但仍会标注。建议 designer 确认 assign 仅为连线,可选择屏蔽;推荐使用相同变量连接同一层级下 Cell 的端口,并仅对这两个端口标注 INTERCONNECT delay。
3. SDFCOM_INF:IOPATH not found
通常是 SDF 和 specify 中没有对应上,需判别是否需要处理。这可能导致 SDF 反标失败。
- clk to clk 的警告影响较小;
- clk to Q 则需要仔细检查。
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 指定,SDF 约束无意义。正常情况下需要解决。
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,如果不需要则去掉 RETAIN 编译选项;如果需要则确认为何出现这种不合理延时关系。
9. SDFCOM_SWC:Simple Wire Connection
提示 Y->A 之间不是简单的 wire 连接,经过了几级 assign,可能会报告此信息,但 delay 已生效。只要符合实际设计,可以不用修改。
10. SDFCOM_NICD:INTERCONNECT Delay encountered
仿真器根据前后级关系处理。默认情况下,仿真工具会将负值当成 0 处理,使约束更紧。若需正常处理负延迟数值,除添加仿真工具使能选项外,还要确认 SDF 文件或 specify 模型中关于时序定义是否支持负值(如 $setup 不支持,而 $setuphold 支持)。本质上因负延时无法补偿为正值,需仔细确认。
11. SDFCOM_NTCDNC:Negative Timing Check Did Not Converge
当 VCS 无法收敛多条 negative timing check 中的 delay 时会报告此 Warning。原因可能有两种:一是 VCS 无法识别互斥 condition;二是 timing 出问题导致 delay 无法收敛,需仔细检查并解决。

