最后一步则是将此寄存器加入default_map,add_reg函数的第一个参数是要加入的寄存器,第二个参数是寄存器的地址,这里是16’h9,第三个参数是此寄存器的存取方式 将寄存器模型集成到验证平台中 无论是读或写,寄存器模型都会通过sequence产生一个uvm_reg_bus_op的变量,此变量中存储着操作类型(读还是写)和操作的地址,...
map.add_reg(chnl0_ctrl_reg,32'h00000000,"RW"); map.add_reg(chnl1_ctrl_reg,32'h00000004,"RW"); map.add_reg(chnl2_ctrl_reg,32'h00000008,"RW"); map.add_reg(chnl0_stat_reg,32'h00000010,"RO"); map.add_reg(chnl1_stat_reg,32'h00000014,"RO"); map.add_reg(chnl2_stat_reg...
第一步,创建uvm_reg class, 根据寄存器描述文件定义每一个寄存器,一个寄存器是一个uvm_reg class, class的名字可以用reg name, class里面定义这个寄存器的每个field, 一个field一个成员变量,然后在build函数中 create每一个field, 并对每一个filed进行configure,指定这个filed的width,offset,读写属性等。 然后在new...
uvm_reg中还有一些hdl_path的function,add_hdl_path_slice,添加到field的path路径。这些路径,之后在map中会被集成起来。 形成一个full_name。 uvm_reg_frontdoor,从uvm_reg_sequence继承而来,本身是一个sequence。 uvm_reg_backdoor,从uvm_object继承而来,本身就是一个object,其中定义了read、write的原型函数。 uv...
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选项, ...
set_reset(reset);elseuvm_resource_db#(bit)::set({"REG::", get_full_name()},"NO_REG_HW_RESET_TEST",1); m_parent.add_field(this);if(!m_policy_names.exists(m_access)) begin `uvm_error("RegModel", {"Access policy '",access,"' for field '",get_full_name(),"' is not def...
· bit individually_accessible,是否可单独访问reg_field,通常用不到,一般选0 另外提一下,uvm_reg中有一个add_field的函数,用于将当前reg和其包含的reg_field进行关联,不过我们不需要显示调用该函数,因为在reg_field的configure中,只要指定了包含它的reg,UVM会自动调用这个add_field。 至此,一个status_reg寄存器类...
另外提一下,uvm_reg中有一个add_field的函数,用于将当前reg和其包含的reg_field进行关联,不过我们不...
uvm_reg_data = data reg_access_mode指定是否允许register layer对寄存器进行写/读(WR)、只写 (WO) 或只读 (RO) 访问。 reg_access_block_type在寄存器模型文件中指定 uvm_reg_block 类型,该文件包含要读取或写入的寄存器。 Add Register Access to the Common Template File ...
uvm_reg_data = data reg_access_mode指定是否允许register layer对寄存器进行写/读(WR)、只写 (WO) 或只读 (RO) 访问。 reg_access_block_type在寄存器模型文件中指定 uvm_reg_block 类型,该文件包含要读取或写入的寄存器。 Add Register Access to the Common Template File ...