当我在UVM中运行序列库时,出现以下错误:“ [SEQLIB / START]在未知阶段启动序列库top_random_seq_lib_v1:在UVM_SEQ_LIB_RANDC模式下进行10次迭代”。我很困惑为什么在“未知阶段”上有消息,因为我在主阶段启动了这个序列库。似乎此序列库无法正常工作。有人可以帮助我确定问题出在哪里吗?谢谢。
我的代码是这样的:
class digit_top_base_random_test2 extends digit_top_base test;
......
top_random_seq_lib_v1 m_seq_master; // this is my sequence library for master
top_random_seq_lib_v1 m_seq_slave; // this is my sequence library for slave
base_sequence m_base_seq_master;
base_sequence m_base_seq_slave;
........
virtual function void build_phase(uvm_phase phase);
....
m_seq_master=top_random_seq_lib_v1::type_id::create("m_seq_master");
m_seq_slave=top_random_seq_lib_v1::type_id::create("m_seq_slave");
endfunction
virtual task configure_phase(uvm_phase phase);
super.configure_phase(phase);
m_seq_master.selection_mode = UVM_SEQ_LIB_RANDC;
m_seq_master.min_random_count=1;
m_seq_master.max_random_count=5;
m_seq_master.add_typewide_sequence(m_base_seq_master.get_type());
m_seq_slave.selection_mode = UVM_SEQ_LIB_RAND;
m_seq_slave.min_random_count=1;
m_seq_slave.max_random_count=5;
m_seq_slave.add_typewide_sequence(m_base_seq_slave.get_type());
m_seq_master.init_sequence_library();
m_seq_slave.init_sequence_library();
endtask
........
virtual task main_phase(uvm_phase phase);
super.main_phase(phase);
phase.raise_objection(this);
m_seq_master.start(m_digit_top_env.m_agent_master.m_seqr0);
m_seq_slave.start(m_digit_top_env.m_agent_slave.m_seqr0);
phase.drop_objection(this);
endtask
endclass
答案 0 :(得分:0)
经过几天的调试,终于找到了答案:我键入了错误的代码,这导致了错误的音序器分配。该错误代码未在我的帖子中显示。纠正该错误后,代码可以正常工作。感谢那些评论了这篇文章的人。