gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 06:46:57 30 4
gpt4 key购买 nike

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

class link_pkt extends uvm_sequence_item;
class phy_pkt extends uvm_sequence_item;

在测试过程中,这些项目可以通过那个接口(interface)动态地传输出去。

实现驱动程序/定序器的正确方法是什么?一个司机够吗?还是需要不止一名司机?

看来因为sequence item的多个定义,我会需要不止一个driver和sequencer。但这不好,因为我无法控制/仲裁传输。

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

最佳答案

你想在这里看到的是协议(protocol)分层。您需要为每个协议(protocol)都有一个排序器,将项目向下发送到每个较低层。在底部,您将拥有实际驱动 DUT 信号的驱动程序。

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

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

您可以在两个排序器上启动项目,这使您能够在您选择的抽象级别上工作。定序器本身将负责优先级排序,并确保只有一个项目在物理接口(interface)上被驱动。

您可以查看以下几个链接以了解有关如何实现分层的更多信息:

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 .

关于system-verilog - 在一个界面中驱动两个不同的序列项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28426189/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com