【问题标题】:Questasim - Is it possible to log and reload signals on new design?Questasim - 是否可以在新设计上记录和重新加载信号?
【发布时间】:2019-11-07 10:45:48
【问题描述】:

我正在运行包含大量组件的测试 (UVM)。这是一个顶级测试,但是我正在调试一个内部模块,我只对连接到该模块的接口的信号感兴趣。因为它是一个 TL,所以我需要很长时间才能到达我感兴趣的时间点。这些信号是其他模块的产物,但我现在对那些不感兴趣。

目前我正在使用 Questa sim,所以我想知道是否有一种方法可以存储这些信号中的事件,以便我可以只重新运行那些信号。因此,我的意图是更改模块,重新编译并直接使用新版本上的输入,而不必实际运行整个测试并等待那么长时间。

【问题讨论】:

  • 这不是关于编程的问题(Stack Overflow 的主题),而是关于如何使用特定 EDA 工具的问题。最好在其他论坛上问。

标签: verilog system-verilog uvm questasim


【解决方案1】:

在我曾经工作过的一家大型芯片公司,他们称之为“保存和恢复”。不确定您的 EDA 供应商如何称呼它。您应该能够在启动模拟结束时获取信号快照的“矢量变化转储”或“VCD”文件,并将其转换为电线上的一堆 0-time puts。您可能需要force 电线几个时钟,然后释放force

关于您关于与 UVM 测试基础架构交互的评论,我不确定多个 puts 或 forces 在一个节点上的行为。我猜最后一个赢了。然而,力是非常非常非常特定于节点的。如果您在下游,重置force 将获胜并被锁定到设计中。如果您的设计看起来像这样,那么重置代码中的force <path> 0 将获胜,因为它位于下游:

                +--------------------------------------------+
                |  TopDesign.sv  +------------------------+  |
                |                | SubBlock.sv            |  |
                |                |                        |  |
           1    | 1              |  0 +--------------+ 0  |  |
           ----->---------------->----> register Foo >--  |  |
           ^    |                |  ^ |              |    |  |
    UVM Driver  |                |  | +--------------+    |  |
                |                +--|---------------------+  |
                +-------------------|------------------------+
                                    |0
                                   Reset force

如果您的 UVM 基础架构 forces 在接口上,然后您的重置初始化 force 在下游节点上,将合成到同一条线路,那么下游节点 force会赢,因为这实际上会陷入逻辑。

您仍然需要注意将 UVM 检查器或记分板初始化为重置后状态。

【讨论】:

  • 是的,我曾想过使用 vcd 转储端口,并且我设法获得了一个包含信号和更改的文件。虽然您知道 UVM 测试基础设施的行为方式吗?部队是否应该覆盖来自代理的驱动信号?
  • 非常感谢罗斯的精彩回答。它很有帮助并澄清了一些问题
猜你喜欢
  • 2010-12-20
  • 2014-06-16
  • 2017-09-07
  • 1970-01-01
  • 2017-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多