← 2022 · MPS芯源 笔试

推荐答案 测试一下

There is an X present in my gate-levelsimulation due to a timing violation. How do you identify the source of it andthe…

题目配图 题目配图
问答题 中等 经典问答问答题

参考答案

后仿(gate-level simulation)中出现X通常由时序违反(timing violation)导致,如setup/hold违反、异步复位释放时间问题、跨时钟域(CDC)处理不当等。定位步骤如下: 1. **确定出现X的时间和层次**:在波形中观察X出现的具体时间点和对应的信号路径(reg/wire)。使用仿真工具的跟踪功能(如Verdi的trace X、Questa的find X)向后追踪至X源头,找出第一个出现X的逻辑门或触发器。 2. **分析X传播路径**:检查X是否由某个寄存器输出不稳定导致,或由组合逻辑传播(如多驱动、未初始化的触发器等)。重点关注触发器的Q端是否在时钟跳变沿附近出现X,这通常暗示时序违例。 3. **检查时序报告**:针对X出现路径,查看STA (Static Timing Analysis) 报告,检查setup/hold slack是否为负。后仿需要包含SDF反标(SDF back-annotation),对比SDF中的延迟是否导致时序违例。 4. **识别违例类型**: - **setup violation**:数据变化晚于时钟,导致寄存器可能采样到中间值。常见于高频路径或未加合理约束。 - **hold violation**:数据变化过快,时钟沿后数据变化破坏保持时间。常见于时钟树偏差或小延迟路径。 - **recovery/removal violation**:异步复位或置位信号撤销相对于时钟沿的时序问题,导致输出X。 - **clock gating check violation**:时钟门控信号与时钟时序不匹配,导致时钟毛刺。 - **跨时钟域同步器未正确使用**:CDC路径未做双触发器同步或握手,导致亚稳态传播。 5. **其他可能原因**: - **未初始化的寄存器**:后仿中寄存器没有初始值,但通常仿真器会设为X;如果复位未正确施加,X会传播。 - **多驱动(multi-driver)**:多个信号驱动同一网络(如三态总线竞争),导致X。 - **仿真器选项设置**:某些仿真选项(如+notimingcheck)会忽略时序检查,但出现X时可能是反标延迟导致的逻辑不一致。 6. **验证修复**:针对定位的问题,修改RTL或SDC约束(增加延迟、调整时钟相位、添加同步器),重新综合并做后仿确认X消失。 总之,定位后仿X的核心是:利用波形追踪至源头,结合STA报告判断违例类型,再根据违例类型调整设计或约束。

涉及知识点

  • gate-level simulation
  • timing violation (setup/hold)
  • SDF back-annotation
  • X-propagation tracing
  • static timing analysis (STA)
  • clock domain crossing (CDC)
← 上一题
登录后反馈错题
下一题 →