在一个界面中驱动两个不同的序列项

时间:2015-02-10 07:24:38

标签: system-verilog uvm

假设我只有一个接口和序列项的多个定义:

class link_pkt extends uvm_sequence_item;
class phy_pkt  extends uvm_sequence_item;

在测试期间,这些项目可以通过该接口动态传输出来。

实现驱动程序/顺控程序的正确方法是什么?一个司机够吗?或者需要多个司机?

似乎由于序列项的多个定义,我需要多个驱动程序和顺控程序。但这并不好,因为我无法控制/仲裁传输。

类似的情况here是静态的 - 我们无法动态切换驱动程序。我需要的是我可以在一个测试/序列中动态驱动那些不同的序列项。

1 个答案:

答案 0 :(得分:3)

这里要看的是协议分层。您需要为每个协议配置一个顺控程序,将项目向下发送到每个下层。在底部,你的驱动程序实际上驱动了DUT信号。

每个音序器需要运行一个翻译序列,从高层图层转换为自己的项目:

+-----------+
| link SEQR |   <---- can start items here
+-----------+
      |
      |    link 2 phys
      v
+-----------+
| phys SEQR |   <---- can also start items here
+-----------+
      |
      |
      v
+-----------+
| phys DRV  |
+-----------+

您可以在两个音序器上启动项目,这使您可以在您选择的抽象级别上工作。序列发生器本身将负责确定优先级,并确保在物理接口上只驱动一个项目。

以下是您可以查看的一些链接,以了解有关如何实施分层的更多信息:

http://verificationhorizons.verificationacademy.com/volume-7_issue-3/articles/stream/layering-in-uvm_vh-v7-i3.pdf

http://www.doulos.com/knowhow/sysverilog/uvm/easier_uvm_guidelines/layering/

我已就主题here进行了对话。