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