7.7.1 使用reg_predictor
auto predictor功能:UVM寄存器模型的auto predictor功能只会更新driver实际写入的寄存器值。设置rm.default_map.set_auto_predict(1)
以下情况寄存器模型不会更新:
- Driver没有写这个寄存器
- 硬件内部自动更新的寄存器值
- 只读寄存器的值变化
如果有多个master,那么需要用monitor来采有哪些寄存器操作,这个时候需要用reg_predictor,将reg_predictor和bus_agt的ap口连起来,并设置reg_predictor的adapter和map。
7.7.2 使用UVM_PREDICTOR_DIRECTR功能和mirror操作
predict--只更新寄存器模型的mirror值,同时不对dut进行操作
predict会更新期望值吗???
7.7.3寄存器模型的随机化和update
在定义uvm_reg_block,uvm_reg,uvm_reg_field的时候都用rand修饰,但是用rand修饰并不能随机化,还要考虑以下几点:
1 该field的configure被调用时,第八个参数设置为0
2 该寄存器field是可以写的
7.7.4 扩展位宽
寄存器在定义的时候用super.new,第二个参数是系统总线的位宽,默认最大是64,地址位宽默认最大也是64,这两个默认值都是根据宏来定义的,可以重新定义这两个宏
UVM_REG_DATA_WIDTH
UVM_REG_ADDR_WIDTH