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

