如何设置基础测试环境以便与继承类一起使用?

时间:2019-05-24 16:18:49

标签: inheritance system-verilog uvm

我已经编写了axi4_stream测试环境。效果很好,但现在我需要使用seq_item继承前一项的测试设计。这些项目将覆盖convert2string和do_compare函数。

我本来想通过seq_items参数化所有axi4_stream类,但是在尝试进行这一小时后,我得出结论,这只是一个痛苦,我需要朝不同的方向进行挖掘。

这里是我班级的原型
原始:

MyModel.objects.create(**kwargs)

我如何改变:

class axi4_s_seq_item extends uvm_sequence_item;
class axi4_s_sequence extends uvm_sequence#(axi4_s_seq_item);
class axi4_s_sequencer extends uvm_sequencer#(axi4_s_seq_item);
class axi4_s_master extends uvm_driver#(axi4_s_seq_item);
class axi4_s_slave extends uvm_driver();
class axi4_s_monitor extends uvm_monitor;
class axi4_s_scoreboard extends uvm_scoreboard;
class axi4_s_agent extends uvm_agent;
...

我想我可以使用define来更改类名,但是我仍然认为存在OOP解决方案。

1 个答案:

答案 0 :(得分:2)

使用UVM工厂设置替代值;不要尝试使用参数覆盖来做所有事情。 DVCon paper是UVM之前的版本,但对于解释参数化和继承之间的差异仍然与UVM有关。