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

