接着来看config和seq_item部分。传送门:
【UVM 参数化的VIP】- Agent_dajiao_zi的博客-CSDN博客
class comm_config extends uvm_object;
int m_wdg_cycle = 1000;
//other config for different user
//function new etc.
endclass
config里面除了放一些common的控制开关和option外,主要提供一些option给不同的user,default可以不开。当然需要一个特殊的控制也可以由user自己来补充对应部分的实现代码。
class comm_seq_item extends uvm_sequence_item;
rand comm_req_seq_item m_req;
rand comm_resp_seq_item m_resp;
`uvm_object_utils_begin(comm_seq_item)
// register to factory
`uvm_object_utils_end
//function new
virtual function void field_assign();//for user to override
m_req.field_assign();
m_resp.field_assign();
endfunction
endclass
顶层的seq_item里面instance 各个channel的seq_item,filed_assign函数也是报各个channel的集成到seq_item中调用。
好了,到这一个完整的vip就都有了,后面我们来看怎么使用,以及好处在什么地方。