local uvm_object_string_pool #(uvm_queue #(string)) hdl_paths_pool;//uvm_reg_block内变量//uvm_pool.svhclassuvm_pool #(type KEY=int, T=uvm_void) extends uvm_object; ...protectedT pool[KEY]; ... endclassclassuvm_object_string_pool #(type T=uvm_object) extends uvm_pool #(string,...
(1.2) uvm_reg_map的do_write任务会查看系统是否设置了adapter,如果没有设置,就直接启动sequence, 让sequencer发送uvm_reg_item类型的transaction;如果设置了,那就调用do_bus_write任务. (1.3) uvm_reg_map的do_write完成后,如果auto predict功能打开了, uvm_reg的do_write会根据写入的值更新register model中寄存器...
一、生成RAL model命令 生成RAL model命令:ralgen [options] -t topname -I dir -uvm {filename.ralf}。ralgen是vcs工具的命令,输入对象是*.ralf文件,生成*.sv文件,即RAL mode就是橘红色框图。ralf文件可以通过excel表格生成。 -uvm—— 生成的代码基于UVM方法学 -t topname—— RALF文件中顶层模块...
UVM中的regmodel建模(一) 2015-04-29 17:14 − UVM中的regmodel继承自VMM的RAL(Register Abstract Layer),现在可以先将寄存器模型进行XML建模,再通过Synopsys 家的工具ralgen来直接生成re... _9_8 0 9338 UVM 片断 2015-07-27 13:37 − Q: UVM中有些component使用new()函数来创建,有些则是使用...
对于一个复杂设计,寄存器模型要能够模拟任意数量的寄存器域操作。UVM提供标准的基类库,UVM的寄存器模型来自于继承自VMM的RAL(Register Abstract Layer),现在可以先将寄存器模型进行XML建模,再通过脚本工具直接生产寄存器模型。首先来看看uvm_reg_model的代码,该文件用来保存Register Layer的全局变量和文件include。
UVM中的regmodel继承自VMM的RAL(Register Abstract Layer),现在可以先将寄存器模型进行XML建模,再通过Synopsys 家的工具ralgen来直接生成regmodel,提供后门访问,十分方便。 寄存器模型建模: 1)定义一个寄存器,如下;也可以在该class中定义covergroup,sample的function等。在以后的component中在采样。
1functionuvm_reg::new(stringname="",intunsignedn_bits,inthas_coverage);2super.new(name);3if(n_bits ==0)begin4`uvm_error("RegModel", $sformatf("Register \"%s\" cannot have 0 bits", get_name()));5n_bits =1;6end7m_n_bits =n_bits;8m_has_cover =has_coverage;9m_atomic = ne...
(1) user在构建register model或者集成register model的过程中,可能会调用uvm_reg::build_coverage(), uvm_mem::build_coverage(), uvm_reg_block::build_coverage();而在build_coverage()函数内,会调用uvm_resource_db::read_by_name()函数,该函数又会调用get_by_name()函数,接着调用uvm_resource.svh中的...
(2) 主要是调用backdoor_rd task与do_predict(UVM_PREDICT_READ); do_predict用于更新register model中寄存器的相关值; 1taskuvm_reg::peek(outputuvm_status_e status,2outputuvm_reg_data_t value,3inputstringkind ="",4inputuvm_sequence_base parent =null,5inputuvm_object extension =null,6inputstring...
(1) randomize操作会改变register field的期望值(uvm_reg_field的post_randomize函数内,会将期望值设置为随机的结果),镜像值不会改变; 1functionvoid uvm_reg_field::post_randomize();2m_desired =value;3endfunction: post_randomize (2) 如果在randomize后,跟着调用update,会将期望值写入DUT; ...