reg model使用篇-register seq(包含uvm内建register sequences)

资料来源:

(1) 《uvm cookbook》

1. register seq

1.1 register check seq

(1) reset test:根据get_reset方法获取reset值,并调用register.read方法获取read value,比较reset值和read value;

(2) write/read test: 随机write data,并调用register.write进行register写操作; 然后打乱register句柄队列,使用get方法获取register的镜像值,接着调用register.read,对比读操作返回值与镜像值;

(3) peek/poke test:与write/read test类似,不过使用的是backdoor access;

1.2 register seq using mirror

(1) mirror操作会引起读访问,会对register model中的镜像值进行更新,但不会返回read data;

(2) mirror操作可以用于register model与硬件状态的再同步;

(3) mirror操作可以和predict操作一起执行,用于检测register的读返回值与期望值是否匹配;只需在调用mirror操作时,将check field设置为UVM_CHECK; 如果check_field是默认值,mirror操作仅仅发起bus read cycle,并且导致external predictor更新mirror值,而不会进行检测;

1.3 built-in register seq

(1) 可以通过resource_db机制进行设置,当执行built-in register seq时,跳过对某个register的测试;

注1:由于uvm_reg_block和uvm_reg均是uvm_object类,而不是uvm_component类,所以可以使用uvm_resource_db来进行设置;

2. 寄存器测试seq示例

2.1 register check seq示例

(1) spi_bus_base_seq中的get_full_name属于uvm_object内的get_full_name,uvm_sequence_item中进行了get_full_name的override;

 

 

 

2.2 register seq using mirror示例

2.3 built-in register seq示例

 

posted on 2021-10-15 17:27  知北游。。  阅读(1001)  评论(0)    收藏  举报

导航