适配器序列使用不同的总线驱动程序
问题描述:
我有通用序列,生成序列项目以实现算法。我需要在不同的测试平台上运行此序列,其中使用了不同的代理(如AXI或PCIe)。 可能最好的实现方式是获取通用项目并将其转换为特定代理项目并启动代理顺控程序的适配器。 谢谢,适配器序列使用不同的总线驱动程序
答
您可以使用序列分层来处理此问题。
您可以生成一个新的序列,该序列将在child_sequencer
上运行,但将采用如下的generic_sequencer
的sequence_items。
class child_seq extends uvm_sequence #(seq_item);
generic_sequencer p_seqr;
virtual task body();
// Get Sequence Item from Parent Sequencer
p_seqr.get_next_item (trans);
// Conversion of Sequence Item from Parent to Protocol Specific
......
// To Start the Sequence Item on Child Sequencer
start_item (trans);
....
finish_item (trans);
// Item Done for Parent Sequencer
p_seqr.item_done();
endtask
endclass
现在,您可以generic_sequencer
是这样,这将同时容纳child_sequence
和child_sequencer
。
class generic_sequencer extends uvm_sequencer #(seq_item);
child_sequencer c_seqr;
child_seq c_seq;
virtual function void build_phase (uvm_phase phase);
c_seqr = child_sequencer::type_id::create ("c_seqr", this);
c_seq = child_seq::type_id::create ("c_seq", this);
endfunction
virtual function void connect_phase (uvm_phase phase);
c_seq.p_seqr = this;
endfunction
virutal task run_phase (uvm_phase phase);
// Start Child Sequnece on Child Sequencer
c_seq.start(c_seqr);
endtask
endclass
现在,你就可以开始你的generic_sequence
上generic_sequencer
请[编辑]你的问题,以显示[你有这么远的代码( http://whathaveyoutried.com)。你至少应该包括一个你遇到问题的代码大纲(但最好是[mcve]),然后我们可以尝试帮助解决具体问题。你还应该阅读[问]。 –