后仿真 SDF 反标常见 Warning 分析与处理
在后仿真阶段,SDF(Standard Delay Format)反标日志中的 Error 必须修复,否则会导致仿真失败;而 Warning 有时并不影响实际功能,更多是工具严格检查的提示。因此,需要仔细甄别哪些 Warning 可以忽略,哪些必须处理。以下整理了 VCS 工具中常见的 SDF 反标 Warning 及其应对策略。
1. 层级与互联相关警告
SDFCOM_UHICD:Up-hierarchy Interconnect Delay ignored
该警告表示将层级间的 delay 放在了 device delay 上体现。通常无需处理,因为对跨层次端口标注 INTERCONNECT delay 时出现此提示,在层次铺平之后不会有问题。
SDFCOM_IWSBA:INTERCONNECT will still be annotated
同样无需处理,delay 实际上已被反标。VCS 无法识别 assign 语句代表的是单纯连线还是作为 device 存在,检测到对 assign 语句反标 INTERCONNECT delay 时会报出该警告,但依然会进行标注。建议 designer 确认 assign 仅用于连线,若需屏蔽可设置相应选项,但推荐使用相同变量连接同一层级下 cell 的端口,并仅对这两个端口标注 INTERCONNECT delay。
SDFCOM_SWC:Simple Wire Connection
提示 Y->A 之间不是简单的 wire 连接,可能经过了几级 assign。只要符合实际设计且 delay 已生效,通常可以不用修改。
SDFCOM_NICD:INTERCONNECT Delay encountered
仿真器根据前后级关系处理延迟。默认情况下,仿真工具会将负值当成 0 处理,导致约束更紧。若想正常处理负延迟数值,除了添加仿真工具使能选项外,还需确认 SDF 文件或 specify 模型是否支持负值(例如 $setup 不支持,而 $setuphold 支持)。本质上是因为负的延时无法被补偿为正值,需仔细确认时序定义。
2. 时序检查与匹配问题
SDFCOM_INF:IOPATH not found
一般是 SDF 和 specify 中没有对应上。这需要根据具体 case 判别是否有影响:
- clk to clk 的警告通常影响较小。
- clk to Q 则需要重点检查,可能导致 SDF 反标失败。
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 Model。

