Questasim - 是否可以在新设计上记录和重新加载信号?

Questasim - Is it possible to log and reload signals on new design?

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

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

在我以前工作的一家大芯片公司内部,他们称之为"Save and Restore"。不确定您的 EDA 供应商如何称呼它。您应该能够在启动模拟结束时获取信号快照的 "Vector Change Dump" 或 "VCD" 文件,并将其转换为电线上的一堆 0-time puts。您可能需要 force 连线几个时钟,然后释放 force

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

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

如果您的 UVM 基础设施 force 在一个接口上,然后您的重置初始化 force 在下游节点上,它将合成到同一条线路上,那么下游节点force就会获胜,因为这实际上会被flop到逻辑中。

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