UVM 中多个测序仪的相同序列

Same sequence to multiple sequencers in UVM

我有一个带有 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  

我没有显示保持 post 简短的完整代码。我认为我的声明和初始化是正确的,因为我有一个类似的测试,将 2 个序列送入 2 个正常工作的音序器。

我的问题是如何实现 objective 将相同序列驱动到 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

您需要为每个要开始的序列构造一个新对象。此外,您需要引用 [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