摘要:uvm reg的常用操作比较多,记不住可以在用的时候查询网页: https://www.icode9.com/content-4-928136.html
阅读全文
摘要:在建立寄存器模型后,一般都是通过层次引用的方式访问寄存器; 但是出于某些原因,如果依然要使用地址来访问寄存器模型,那么可以使用get_reg_by_offset函数通过寄存器地址得到一个uvm_reg的指针,再调用此uvm_reg的read或write就可以进行读写操作; ``` class cas
阅读全文
摘要:要使用寄存器模型,一般是将寄存器模型的指针传递过来; 除了这种方法,uvm还提供函数,使得可以在不使用指针传递的情况下得到寄存器模型的指针; ``` virtual task body(); uvm_status_e status; uvm_reg_data_t value; bit[31:0] c
阅读全文
摘要:uvm_reg_mem_hdl_paths_seq可以用于检查hdl路径的正确性。 这个sequence的运行依赖于在基类uvm_reg_sequence中定义的一个变量:uvm_reg_block model; ``` class case0_cfg_vseq extends uvm_sequen
阅读全文
摘要:peek对应与read;poke对应与poke; uvm_reg::peek()/poke()两个方法,也分别对应了读取寄存器(peek)和修改寄存器(poke)两种操作,而用户无需指定访问方式为UVM_BACKDOOR,因为这两个方法本来就只针对于后门访问。 ``` p_sequencer.p_r
阅读全文
摘要:UVM提供两个sequence分别用于检查寄存器和存储器的读写功能; 1.uvm_reg_hw_reset_seq用于检查上电复位后寄存器模型与DUT中寄存器的默认值是否相同; 2.uvm_reg_access_seq用于检查寄存器的读写; 3.uvm_mem_access_seq用于检查存储器的读
阅读全文
摘要:不少有经验的UVM用户可能会忽略UVM针对寄存器模型内建的一些sequence,实际上如果可以将这些自建的序列作为验证项目一开始的健康检查必选项的化,这对于整个项目的平稳运行会有不小的贡献。 这是因为在项目一开始的阶段,设计内部的逻辑还不稳定,对于verifier而言,如果想要跟上设计的进度,可以展
阅读全文
摘要:当需要的寄存器的宽度比系统总线的宽度大时: reg_model.sv ``` `ifndef REG_MODEL__SV `define REG_MODEL__SV class reg_invert extends uvm_reg; rand uvm_reg_field reg_data; virt
阅读全文
摘要:reg_file主要是为了区分不同的hdl路径,是为了后门访问准备的。 ``` `ifndef REG_MODEL__SV `define REG_MODEL__SV class reg_invert extends uvm_reg; rand uvm_reg_field reg_data; vir
阅读全文
摘要:``` `ifndef REG_MODEL__SV `define REG_MODEL__SV //first reg class reg_invert extends uvm_reg; rand uvm_reg_field reg_data; rand uvm_reg_field reg_stat
阅读全文
摘要:``` `ifndef REG_MODEL__SV `define REG_MODEL__SV class reg_invert extends uvm_reg; rand uvm_reg_field reg_data; virtual function void build(); reg_data
阅读全文
摘要:1.使用寄存器模型 1.1 可以进行前门访问:可以参考张强UVM书的7.2.3 1.2 可以进行后门访问:可以参考张强UVM书的7.3.5 2.不使用寄存器模型 2.1 可以进行前门访问:可以参考张强UVM书的7.3.1 2.2 可以进行后门访问: 2.2.1 可以参考张强UVM书的7.3.2,在t
阅读全文