• 实际上, 在uvm_object使用到的方法compare()、print()和pack(), 如果没有指定数据操作配置对象作为参数时,会使用在uvm_pkg 中例化的全局数据操作配置成员。 全局对象 在uvm_pkg中例化了不少全局对象,在本节中我们会使用到的全局配置对象包括有uvm_default_comparer, uvm_default_printer和uvm_default_packer。
• 在pack()和unpack()的参数中,有一个是可以缺省的参数即 uvm_packer, 如果用户不做特别指定,那么打包和解包的uvm_packer将会使用uvm_pkg中例化的全局对象uvm_default_packer。 • 此外, 用户如果需要自行打包, 例如规定将b1.volume打包成多少长度的比特数组, 来匹配硬件信号的位宽, 则需要自己定义do_pack( ...
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 ) ); packer.pack_field_int( .value( taste ), .size( 2 ) ); packer.pack_field_int( .value( R6 ), .siz...
定义回调函数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...
学习uvm_object::compare()方法,掌握uvm_pkg中常见的一些全局控制对象,例如uvm_default_comparer,该对象可参考uvm_comparer类提供的方法。uvm_pkg中其他全局控制对象还包括uvm_default_printer、uvm_default_packer等 is_equal = t1.compare(t2);//compare函数会返回值:0-不相等、1-相等 ...
(value, 16); endfunction function void do_unpack (uvm_packer packer); value = packer.unpack_field_int(16); endfunction endclass mydata d = new; bit bits[]; initial begin d.pack(bits); // 'b0001001000110100 uvm_default_packer.big_endian = 0; d.pack(bits); // 'b0010110001001000 ...
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的,也就是说你自己看情况去补充他...
1.4 compare函数以及其与uvm_default_comparer的结合使用 注1:注意uvm_comparer的使用; 注2:uvm_field_*宏会调用uvm_comparer的compare_*函数,而uvm_comparer的compare_*函数在比较失败时,会调用comparer.print_msg函数,print_msg函数内会对comparer.result进行累加(comparer.result的初始值为0); comparer.result会反映...
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的,也就是说你自己看情况去补充他...
If a specific packer instance is not supplied in // calls to <uvm_object::pack> and <uvm_object::unpack>, this instance is // selected. // The default packer policy. Used when calls to <uvm_object::pack> // and <uvm_object::unpack> do not specify a packer policy. uvm_packer ...