简介: 【UVM源码学习】uvm_packer uvm_packer,基类,提供了一系列适用于uvm的数据打包(pack)、解包(unpack)方法。 序号 方法 描述 1 pack_field 对uvm_bitstram_t类型的value进行打包,默认大端模式,打包size默认最大4096 (单位bit,最大size取决于宏UVM_MAX_STREAMBITS),打包数据放在uvm_pack_bitstream_t类型...
• 在pack()和unpack()的参数中,有一个是可以缺省的参数即 uvm_packer, 如果用户不做特别指定,那么打包和解包的uvm_packer将会使用uvm_pkg中例化的全局对象uvm_default_packer。 • 此外, 用户如果需要自行打包, 例如规定将b1.volume打包成多少长度的比特数组, 来匹配硬件信号的位宽, 则需要自己定义do_pack( ...
定义回调函数function bit pack/unpack(ref bit bit_stream,input uvm_packer packer = null); phase机制 phase机制可以帮助我们将UVM仿真阶段清晰地进行层次化 UVM的9个主要的phase列表。执行顺序:自上而下 只有run_phase是一个可以耗时的任务。其他的phase对应的方法都是函数,必须立即返回 build_phase和final_phase...
endfunction function void uvm_object::m_pack (inout uvm_packer packer); ... __m_uvm_field_automation(null, UVM_PACK, ""); do_pack(packer); ... endfunction 就不一一进行列举啦大家看的时候明白这个思路就可以,回到copy的主线上来。do_copy的描述写的很清楚是user-definable的,也就是说你自己看...
function int pack(ref bit bitstream[], input uvm_packer packer=null); function int unpack(ref bit bitstream[], input uvm_packer packer=null); 1. 2. 3. pack是为了将自动化声明后的域(标量)打包为比特流,即将各个散乱的数据,整理到bit数据串中,类似于struct packed的整理方式,但又能充分利用数据空...
packer.pack_field_int(data[i],8); 但data数组内涵的loop variable i 只能与data 的位宽相同, 即8位, 不能完整的表示整个随机化的Ethernet包, 请问这个问题如何解决? 谢谢~ up... 没看懂,为什么i要和data的位宽相同?不是i的位宽能表示完data的深度就可以了么?42亿个数还不够啊?
packer.pack_field_int( .value( color ), .size( 2 ) ); packer.pack_field_int( .value( sugar_free ), .size( 1 ) ); packer.pack_field_int( .value( sour ), .size( 1 ) ); packer.pack_field_int( .value( R1 ), .size( 1 ) ); ...
function void uvm_object::m_pack (inout uvm_packer packer); ... __m_uvm_field_automation(null, UVM_PACK, ""); do_pack(packer); ... endfunction 就不一一进行列举啦大家看的时候明白这个思路就可以,回到copy的主线上来。do_copy的描述写的很清楚是user-definable的,也就是说你自己看情况去补充他...
extern function int unpack_ints (ref int unsigned intstream[],input uvm_packer packer=null); print函数用于打印所有的字段。 clone函数,3.1.6节中有过介绍,其原型是: extern virtual function uvm_object clone (); 除了上述函数之外,field automation机制还提供自动得到使用config_db::set设置的参数的功能,...
代码清单3-35来源:UVM源代码externfunctionintpack (refbitbitstream[],inputuvm_packer packer=null); pack函数的使用与pack_bytes类似。 unpack函数用于将一个bit流逐一恢复到某个类的实例中,其原型为: 代码清单3-36来源:UVM源代码externfunctionintunpack (refbitbitstream[],inputuvm_packer packer=null); ...