[UVM]UVM RAL Model中get_reg_by_name應用詳解

          UVM RAL Model中get_reg_by_name應用詳解

一、Register定義

  • 假如現在有下面這樣的一組Register:
DBG_MSB_0
DBG_MSB_1
DBG_MSB_2
DBG_MSB_3
DBG_MSB_4
DBG_MSB_5
DBG_MSB_6
DBG_MSB_7
  • 現在有沒有一種辦法在循環體中Read這些Register呢?答案是肯定的

二、通過ral_model讀寫Register的方法

sys_ral_model            ral_model;

ral_model.xxx_blk.REG_NAME.read(.states(states), 
                                .value(read_data), 
                                .path(UVM_FRONTDOOR), 
                                .parent(this)
                               );


ral_model.xxx_blk.REG_NAME.write(.states(states), 
                                 .value(write_data), 
                                 .path(UVM_FRONTDOOR), 
                                 .parent(this)
                                );

三、在循環體中讀Register

  • 若果現在需要Read一中所列的Register,那麼可以通過下面的方法實現
bit [31:0]            read_data_q[$];
bit [31:0]            read_data;

string                reg_name_tmp;
uvm_reg               reg_name;
uvm_reg_field         reg_field;

for(int i = 0; i < 8; i++) begin
  reg_name_tmp = $sformatf("DBG_MSB_%d", i);

  reg_name = ral_model.xxx_blk.get_reg_by_name(reg_name_tmp);

  ral_model.xxx_blk.reg_name.read(.states(states), 
                                  .value(read_data), 
                                  .path(UVM_FRONTDOOR), 
                                  .parent(this)
                                 );  

  read_data_q.push_back(read_data);  

end


发布了213 篇原创文章 · 获赞 151 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/gsjthxy/article/details/105518782