在connect_phase中,adapter将uvm_reg_map和sequencer连接,实际就是调用set_sequencer给uvm_reg_map中的成员变量m_sequencerm_adapter赋值: functionvoidbase_test::connect_phase(uvm_phase phase); super.connect_phase(phase); ... rm.default_map.set_sequencer(env.bus_agt.sqr, reg_sqr_adapter); rm.defaul...
· uvm_reg_addr_t base_addr,基地址 · int unsigned n_bytes,map包含的范围,以byte为单位 · uvm_endianness_e endian,大小端 · bit byte_address=1,按byte访问,默认为1 由于我们在本reg_block中只定义了一个map,因此可以直接用get_default_map获取该map,然后对该map设置sequencer和reg_adapter,sequencer...
我们在创建uvm_reg_map的时候(如果只有一个uvm_reg_map我们一般会用uvm_reg_block自带的default_map)默认会将m_auto_predict设为0。 由于m_auto_predict是被local修饰的本地变量,因而不能在uvm_reg_map类外部访问,可以使用get_predict_map获取当前predict类型 m_auto_predict = 1 首先我们看下当我们执行寄存器...
uvm_reg_block,包含类,包含底层的uvm_reg_block,uvm_reg, default_path,定义自己的hdl_path, lock,表明当前的model是lock住的,调用function lock_model() 自己的coverage设置,new的时候设置到has_cover,get的时候,得到cover_on。 uvm_reg_sequence,只是实现了调用map中的读写操作,不支持burst_read,burst_write,...
Uvm_reg_map,在每个uvm_reg_block中至少有一个uvm_reg_map,它存储寄存器的偏移地址,并负责在前门访问的时候将将偏移地址转换为物理地址。 声明:微信公众号与知乎同号,下面是微信公众号的二维码,希望可以得到大家的关注。 http://weixin.qq.com/r/yh3D26DEbv0RreS490jY (二维码自动识别)...
m_maps[uvm_reg_map],该reg挂载在的map的对象,在default_map,add_reg时,指定。 hdl_pool,以string为索引,uvm_queue为对象,string方便指定RTL,Gate等不同的hdl。 coverage收集信息,m_has_cover,m_cover_on。has_cover表示reg new的时候加入的coverage选项, ...
1)每个由uvm_reg_block 派生的类也要定义一个build 函数,在其中实现所有寄存器的例化。 2)一个uvm_reg_block 对应一个uvm_reg_map,default_map系统已经声明,只需在build中例化,调用create_map。 第一个参数是名字。 第二个参数是基地址。 第三个是系统总线宽度,单位是byte。
注1:寄存器模型的前门访问操作最终都将由uvm_reg_map完成,因此在connect_phase中,需要将转换器uvm_reg_adapter和bus_sequencer通过set_sequencer函数告知reg_model的default_map,并将default_map设置为自动预测状态; 1//示例12class base_test extends uvm_test;3my_env env;4my_vsqr vsqr;5reg_model rm;6my...
dmap = regm.get_default_map();dmap.set_sequencer(m_env.apbm.m_seqr,reg_adp);regm.lock_...
uvm_map:不需扩展,存在于uvm_block中;也可以包含子map 寄存器模型API 模拟寄存器行为:如WC模式,写之后会清零。向dut进行write操作,dut中寄存器值为0,寄存器模型中期望值及镜像值也为0;而使用poke,完成后dut中寄存器值为0,但寄存器模型中期望值及镜像值为写入的值 mirror:读取dut的值,将其更新到期望值及镜像值 ...