如何使用来自 RTL 块的写入更新 regmodel

How to update regmodel with writes going from RTL blocks

我知道只要在任何连接的接口上从测试环境启动事务,regmodel 值就会更新。

然而考虑一个场景:

  1. 启动时从 ROM 更新 RTL 寄存器(与默认值不同)
  2. 与测试环境相比,RTL 中的处理器写入寄存器。

在这 2 种情况下,regmodel 无法获得具有正确 RTL 值的 updated/mirrored。我想知道更新 regmodel 的正确程序是什么,如果目前有 none 还有什么其他方法可以使这两个保持同步?

对于第一种情况,您必须在仿真开始时使用 ROM 内容预加载内存模型。 uvm_memory 中没有任何基础设施可以执行此操作(不幸的是),因此您必须自己实施它。

对于第二种情况,您必须使用更灰盒的方法进行验证。您必须监视处理器对外围设备所做的总线访问,并根据这些事务更新寄存器值。从可维护性的角度来看,这样做应该没问题,因为从这个意义上说,您的 SoC 架构应该非常稳定(您已经决定使用一个处理器,因此它会一直存在,但您可能不知道哪些外围设备会走到最后。