System verilog 如何使用特定的序列器附加UVM序列?
我有3个序列和4个序列器 我想要System verilog 如何使用特定的序列器附加UVM序列?,system-verilog,sequences,uvm,System Verilog,Sequences,Uvm,我有3个序列和4个序列器 我想要 sequencer 1运行sequence1 定序器2运行定序器1 sequencer 3以串行顺序运行sequence2和sequence3 sequencer 4以串行顺序运行sequence1、sequence2 这样做的一个方法是在测试类内部 task run_phase(uvm_phase phase); fork sequence1.start(sequencer1); sequence1.start(sequencer2); be
task run_phase(uvm_phase phase);
fork
sequence1.start(sequencer1);
sequence1.start(sequencer2);
begin
sequence2.start(sequencer3);
//wait for request....
sequence3.start(sequencer3);
end
begin
sequence2.start(sequencer4);
//wait for req....
sequence1.start(sequencer4);
end
join
endtask
除了进行内部测试之外,我如何在每个序列器内部执行相同的操作?您所编写的是做您想做的事情的最佳方法(在
fork
之前提出异议,在join
之后放弃异议)。所有其他方法都使得在fork
之前或join
之后添加额外序列变得困难
您可以使用uvm_config_db设置每个sequencer的“默认_序列”,但需要为sequencer3和Sequencer4创建另一个序列层,以所需顺序启动sequence1和Sequence2。您还需要在每个默认序列中处理提出/降低异议的问题
另一个选项是,您可以定义一个sequencer并覆盖run_阶段来启动每个序列或序列,而不是使用通用序列器