后仿真 SDF 反标常见 Warning 分析与处理指南
在后仿真阶段,SDF 反标日志里的 Error 必须解决,但 Warning 有时只是工具严格检查的结果,未必影响实际功能。面对这类警告,我们需要仔细甄别其真实影响。以下是整理的一些常见 Warning 及其处理建议:
SDFCOM_UHICD:Up-hierarchy Interconnect Delay ignored
该警告表示层次间的延迟被体现为器件延迟。跨层次端口标注 INTERCONNECT delay 时会出现此提示,铺平层次后通常无问题,一般无需处理。
SDFCOM_IWSBA:INTERCONNECT will still be annotated
同样可以忽略,延迟实际上已被反标。VCS 无法区分 assign 语句是单纯连线还是作为器件存在,因此检测到对 assign 语句反标时会报出警告。如果确认 assign 仅用于连线,可选择屏蔽;推荐做法是使用相同变量连接同一层级下 cell 的端口,并仅对这两个端口标注 INTERCONNECT delay。
SDFCOM_INF:IOPATH not found
通常因 SDF 与 Specify 模块未对应上导致。需根据具体场景判断:clk 到 clk 的警告通常影响较小,但 clk 到 Q 的警告则需重点检查,否则可能导致反标失败。
SDFCOM_CFTC:Cannot find timing check
同样是 SDF 与 Specify 不匹配的问题。例如位宽拆分不一致会导致匹配不上。对于位宽拆分情况,编译时可添加 -tcheckvecsplit 选项;其他情况需检查为何不匹配,此类通常需要解决。
SDFCOM_TANE:TIMINGCHECK Annotation Not Enabled
SDF 中包含 Timing Check,但 Verilog 中缺少对应的 Specify 指定,导致约束失效。正常情况下需要补充 Specify 块来解决。
SDFCOM_IANE:IOPATH Annotation Not Enabled
逻辑同上,SDF 中有 IOPATH 约束但 Verilog 未指定 Specify,约束无效,需解决。
SDFCOM_STCLOR:SCALED TC Limit Out of Range
VCS 使用 32bit 作为 delay 上限(2^31),超过即报错。有时未超范围也会报错,原因是 Module 未指定 Timescale 而采用 Top 的 Timescale 计算导致溢出。可通过修改 delay 或使用 -override_timescale 重新指定来覆盖。
SDFCOM_RLTPD:RETAIN value larger than IOPATH delay
RETAIN 延迟不能大于 IOPATH 延迟。首先确认是否需要 RETAIN,不需要则去掉相关编译选项;如果需要,则需排查为何出现不合理的延时关系。
SDFCOM_SWC:Simple Wire Connection
提示 Y->A 之间不是简单 wire 连接,可能经过多级 assign。只要符合实际设计且 delay 生效,通常无需修改。
SDFCOM_NICD:INTERCONNECT Delay encountered
仿真器默认将负值当成 0 处理,使约束更紧。若需正常处理负延迟数值,除添加仿真工具使能选项外,还需确认 SDF 文件或 Specify 模型是否支持负值(如 $setuphold 支持,$setup 不支持)。本质是负延时无法补偿为正值,需谨慎确认。
SDFCOM_NTCDNC:Negative Timing Check Did Not Converge
VCS 无法收敛多条 negative timing check 中的 delay 时报告此警告。原因可能是 VCS 无法识别互斥 condition,或是 timing 问题导致 delay 无法收敛,需仔细检查解决。

