在该宏中,SEQUENCER必须为“类型”,当程序中使用该宏时,SEQUENCER为用户自定义的sequencer,即示例中的my_sequencer,而因为宏中p_sequencer指定的类型为SEQUENCER,即也就是调用该宏时传入的参数my_sequencer,所以可以知道p_sequencer的类型为用户自定义的sequencer,即示例中的my_sequencer,而用户自定义的sequencer派生自uv...
值得注意的一点是用户指定的sequencer是uvm_sequencer_base的子类,对于m_sequencer而言,此时是父类句柄指向了子类对象,这也为下面的动态转换打下了基础。 二、p_sequencer 1、什么是p_sequencer p_sequencer是由`uvm_decalre_p_sequencer宏,定义在用户指定的sequence(例如类库中的your_sequence)中的,用户指定的类型的...
m_sequencer是uvm_sequencer_base类型的句柄,默认情况下在每个sequence中都可用。连接到driver 的真正的sequencer 是从uvm_sequencer_base类派生出来的,其 被参数化为用于与driver 通信的sequence item类型。 因此要访问正在运行sequence 的真实sequencer ,我们需要将m_sequencer类型转化为真实sequencer ,通常称为p_sequencer。
但有一点需要注意,m_sequencer的类型是uvm_sequencer_base,而我们通常绑定给sequence的sequencer是uvm_sequencer_base的子类,所以,当该句柄引用子类对象时,可引用的资源将受到限制。 p_sequencer 为了解决上面提到的资源引用问题,UVM又搞了一个p_sequencer的句柄,用户可以通过宏`uvm_declare_p_sequencer来创建。 p_seque...
除了曲线救国的方法,在SV中,我们可以通过将指向子类对象的父类句柄(m_sequencer)通过$cast转换成具有子类对象类型的子类句柄,从而实现子类对象中属性的访问。 所以我们使用uvm_declare_p_sequencer(my_sequencer)宏来声明一个my_sequencer类型的子类句柄p_sequencer,并将m_sequencer向下类型转换成p_sequencer,p_sequencer...
m_sequencer与p_sequencer uvm_sequencer_base m_sequencer;是uvm_sequence中的protected变量。 my_sequencer是从uvm_sequencer中扩展来的,并拥有独特的dmac/smac的变量。 m_sequencer是uvm_sequencer_base类型的句柄,实际指向的对象是my_sequencer。 所以如果想通过基类的句柄m_sequencer来访问扩展类在中独有的damc/sma...
p - parent sequencer - 要处理的实际sequencer类型的句柄,这个是自己定义的。 m - m_表示隐藏或局部变量(member),m_sequencer是uvm_sequencer_base类型,定义在uvm_sequence_item类中。 可以使用`uvm_declare_p_sequencer宏声明p_sequencer。 但是你也可以在sequence中做以下相同的事情: ...
在使用uvm_do_on宏的情况下, 虽然seq0是在case0_vseq中启动, 但是它最终会被交给p_sequencer.p_sqr0, 也即env0.i_agt.sqr而不是v_sqr。 这个就是virtual sequence和virtual sequencer中virtual的来源。 它们各自并不产生transaction, 而只是控制其他的sequence为相应的sequencer产生transaction。
$cast(x_sequencer, m_sequencer),然后通过x_sequencer直接调用sequencer中的值。 uvm中通过宏定义`uvm_declare_p_sequencer(my_sequencer)进行了封装。之后可以使用p_sequencer 而sequencer可以通过config_db与其他的component交换配置。 通过virtual_sequence和virtual_sequencer来进行控制: ...
芯片验证面试必考题:m_sequencer与p_sequencer的区别是什么? 沪上韦一笑 且放白鹿青崖间,芯片验证实用技术,提升职场竞争力 正如标题,这是各大公司面试UVM的时候出镜率比较高的一道题。 其实,这个问题是一个比较系统的问题,片面的解释往往很难令人满意。 本文打算从UVM源码的角度进行深度解读。 首先从概念聊起。