【问题标题】:Same sequence to multiple sequencers in UVM与 UVM 中的多个定序器相同的序列
【发布时间】:2020-07-19 17:37:33
【问题描述】:

我有一个带有 2 个相同类型接口的 DUT。我创建了 2 个代理来驱动这两个接口。我的想法是在接口端口上驱动相同的信号来测试特定的场景。因此,我想创建一个序列并将其驱动到代理的两个序列器。但我得到一个错误。代码如下:

my_sequencer m_seqr[2];
my_sequence m_seq;

for(int i=0; i<2; i++) begin
  fork
    int idx = i;
      m_seq.start(p_sequencer.m_seqr[i];
  join_none
end  

我没有展示完整的代码来保持帖子的简短。我认为我的声明和初始化是正确的,因为我有一个类似的测试,其中 2 个序列输入 2 个序列发生器正常工作。

我的问题是如何实现将相同序列驱动到 2 个或更多序列器的目标?

错误如下(未添加完整的错误行):

uvm_test_top.m_env.m_my_agent_env.m_my_agent[1].m_seqr@@m_in_seq%0d[SEQ_NOT_DONE] Sequuence .... already started

【问题讨论】:

    标签: system-verilog uvm


    【解决方案1】:

    您需要为要开始的每个序列构造一个新对象。另外,您需要引用[idx] 而不是[i]

    my_sequencer m_seqr[2];
    ...
    for(int i=0; i<2; i++) 
      fork
        int idx = i;
        my_sequence m_seq = my_sequence::type_id::create(...);
        
        m_seq.start(p_sequencer.m_seqr[idx];
    
      join_none 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-26
      • 2013-01-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多