我们在创建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 首先我们看下当我们执行寄存器...
在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...
由于我们在本reg_block中只定义了一个map,因此可以直接用get_default_map获取该map,然后对该map设置sequencer和reg_adapter,sequencer其实就是在环境中用于配置寄存器的driver对应的那个sequencer,uvm_reg本质就是通过reg中的write,read等API,将读写请求,数据等通过API启动sequence发送给driver,然后通过driver去驱动interface...
uvm_reg reg[$] 寄存器名 uvm_reg_block reg_blk 模块名 uvm_status_estatus uvm_reg_mapmap env.regmodel.xxa.default_map.get_registers(reg) 此处若有多个block呢?多级block呢? rand_data= new[reg.size()] if(regs[i].get_name() == "xxxb" reg_blk = regs[i].get_parent() addr = reg_...
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。
(2) uvm_reg_map的实例化,并不是直接调用其new函数,而是通过调用uvm_reg_block的create_map函数来实现; 1default_map=create_map("default_map",0,2,UVM_BIG_ENDIAN,0); create_map的参数解释: 参数1的含义:名字; 参数2的含义:基地址; 参数3的含义:系统总线的宽度,该处的单位是byte,而不是bit; ...
dmap = regm.get_default_map();dmap.set_sequencer(m_env.apbm.m_seqr,reg_adp);regm.lock_...
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选项, ...
uvm_reg_map bus_map; ... virtual function void build(); reg0 = dummy_reg::create("reg0"); reg0.configure(this); reg0.build(); bus_map = create_map("bus_map", 'h0, 1, UVM_LITTLE_ENDIAN); default_map = bus_map; bus_map.add_reg(reg0, 'h0, "RW"); ...