如何将 UVM 序列附加到特定的测序仪?

How to attach an UVM sequence with a particular sequencer?

我有 3 个序列和 4 个音序器。

我要

  1. 序列器 1 到 运行 序列 1,
  2. 序列器 2 到 运行 序列 1,
  3. sequencer 3 to 运行 sequence2, sequence3 按顺序排列。
  4. sequencer 4 to 运行 sequence1, sequence2 按顺序排列。

其中一种方法是在测试中 class

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 设置每个音序器的 "default_sequence",但您需要为音序器 3 和 4 创建另一个序列层,以所需顺序启动 sequence1 和 2。您还需要处理每个默认序列中的 raising/lowering 个异议。

另一种选择是不使用通用定序器,您可以定义一个定序器并覆盖 run_phase 以启动每个序列或一系列序列。