uvm中的sequencer

squencer 的作用是产生transaction然后发给driver。建议uvm环境中的sequencer从[uvm_squencer]这个类派生出来,因为其中包含了和driver进行通信的一些功能模块

  1. 使用方法

申明uvm_squencer时, 参数中的RES和REQ默认情况下是一致的, 如果不一致, 就需要指明第二个参数的类型。如下所示:

1
2
3
4
// class uvm_sequencer #(type REQ = uvm_sequence_item, RSP = REQ) extends uvm_sequencer_param_base #(REQ, RSP);

uvm_sequencer #(my_data, data_rsp) seqr0; // with RSP
uvm_sequencer #(my_data) seqr0; // without RSP
  1. 没有必要给每个sequence创建一个sequencer,但是可以使用下面的方式创建自定义的sequencer
1
2
3
4
5
6
7
class my_sequencer extends uvm_sequencer;
`uvm_component_utils (my_sequencer)
function new (string name="m_sequencer", uvm_component parent);
super.new (name, parent);
endfunction

endclass

uvm中关于squencer的class结构如下: