验证环境初步搭建(2)
1、创建timer config
首先了解为什么要定义cfg呢?
(1)当验证环境比较复杂的时候,对于任何一个agent的配置,一般不会通过单一的变量做传递,通常会把这些用来影响控制agent的这些变量封装在config class里面;
(2)当有多个agent的时候,那每一个agent可能都会有它对应的config class 或者config object,一般agent被嵌套在env中,然后environment又被上层environment嵌套,这种层次化的结构,意味着config也应该具有层次化;
(3)为了结构层次化对应,timer的cfg要嵌套apb的cfg,timer的env要嵌套apb的agent;
2、定义env中
(1)也需要cfg配置信息。一般顶层由传递;
3、base_test
(1)从顶层获取vif,随后传递给cfg的vif,紧接着传递给env,最后例化cfg和env;
4、tb
(1)接口连接好,传递interface,由于目前只是搭建验证环境的简单框架,只需把apb_if传递给apb_mst,timer_if传递给test;
5、定义好Makefile,把integration_test run起来;
(1)integration_virt_seq继承base_virtual_sequence,因为base_test已经通过p_sequencer挂载到了env中的virt_sqr,所以integration_test也会完成挂载和数据的发送;integration_virt_seq分别通过挂载的方式和rgm的方式完成数据发送。其中挂载的时候调用VIP中的ahp_master_single_write_seq和ahp_master_single_read_seq完成对value寄存器的读写访问。其中rgm的访问,通过调用uvm_reg_write和uvm_reg_read完成对Reload寄存器的读写访问,此外通过mirror动作读回PID和CID的寄存器地址信息,然后通过配置mirror中UVM_CHECK(默认是UVM_NO_CHECK)参数进行数据比较;
以上完成了基本环境的搭建和对相关寄存器的读写。