要使用的 UVM TB 组件

UVM TB components to be used

我有一个奇偶校验编码器解码器的验证 tb 结构,如下所示,我将数据驱动到编码器,获取输出,向其添加随机误差并将其作为输入传递给解码器。

我的问题是我需要两个 driver 来驱动 1)Data_in_08p 和 2) Data_corrupted_in 吗?我应该有一个在随机位置产生随机错误的组件,并将其与 Data_out_08p 异或。这个组件的性质应该是什么,即它应该是 driver?我可以在 1 个代理中有两个 driver 还是我需要在这里创建两个代理?

准确地说,当 DUT 的一个输入依赖于 DUT 输出时,我们如何定义 driver/env?将有多少个序列、音序器和监视器?

验证 DUT 所需的 UVM 测试平台框图可能如下所示:

在 UVM 术语中,您需要以下代理:

  1. 一个活动代理将交易发送到编码器块的输入。
  2. 一个被动代理,用于在编码器块的输出处捕获交易。
  3. 一个反应代理将交易发送到解码器块的输入。
  4. 一个被动代理,用于在解码器块的输出处捕获交易。

请注意,位于编码器输出代理上的监视器将捕获事务并将它们通过分析端口发送到位于解码器输入代理上的定序器。这称为 "reactive" 代理,因为它会等到收到某些内容才能生成交易。然后,您将在解码器输入代理的定序器上注入 运行 序列中的错误。

Verilab 有一篇非常好的论文详细讨论了 "Reactive Agents": http://www.verilab.com/files/mastering_reactive_slaves.pdf