网站设计书,seo排名优化,伴奏网站防盗是怎么做的,网站建设商家先给一下大致的代码结构#xff0c;根据代码结构来描述。
//dut结构
module my_dut(...);my_reg U_REG(......);endmodulemodule my_reg(...);//reg1和reg2是一个reg的两个field#xff0c;reg3单独是一个regreg [15:0] reg1_q;reg [15:0] reg2_q;reg [31:0] reg3_q;endmodu…先给一下大致的代码结构根据代码结构来描述。
//dut结构
module my_dut(...);my_reg U_REG(......);endmodulemodule my_reg(...);//reg1和reg2是一个reg的两个fieldreg3单独是一个regreg [15:0] reg1_q;reg [15:0] reg2_q;reg [31:0] reg3_q;endmodule//top_tb
module top_tb;my_reg U_DUT(......);endmodule//uvm_reg
class reg1 extend uvm_reg;...field1;//对应reg1_q...field2;//对应reg2_qvirtual function void build();...//reg1例化和config;...//reg2例化和configadd_hdl_path_slice(reg1_q,0,16);add_hdl_path_slice(reg2_q,16,16);endfunction
endclassclass reg2 extend uvm_reg;...field3;//对应reg3_qvirtual function void build();...//reg3例化和config;endfunction
endclassclass my_block extend uvm_reg_block;...my_reg1;//对应reg1_q和reg2_q的uvm_reg...my_reg2;//对应reg3_q的uvm_regvirtual function void build();...this.my_reg1.configure(this,null,);this.my_reg2.configure(this,null,reg2_q);...endfunction
endclass//env
class my_env extend uvm_env;...my_block model;...virtual function void build_phase(...);...model.set_hdl_path_root(top_tb.U_DUT.U_REG);...endfunction
endclass
dut的结构就是my_dut里面例化了my_reg寄存器就在my_reg中。
首先我们要配置寄存器的位置即model.set_hdl_path_root(top_tb.U_DUT.U_REG)这一段指定一下寄存器所在的模块路径需要注意的是该路径名称是模块例化的名称
然后是ral的配置如果一个reg里面有多个field就需要在uvm_reg里面指定不同field的名称以及其位置用add_hdl_path_slice语句其中第一个参数是field的名称第二个参数是field的起始位置第三个参数是field的位宽如果一个reg里面只有一个field那么就直接在uvm_reg_block中该寄存器的configure的第三个参数里指定该field的名称。如果这个reg里面field的宽度小于reg的宽度那么两种方法都可以。
设置好后就直接peek和poke了。