针对bit类型的uvm_field_int,针对byte类型动态数组用uvm_field_array_int。 `uvm_object_utils_begin(my_transaction)`uvm_field_int(smac,UVM_ALL_ON)`uvm_field_int(dmac,UVM_ALL_ON)`uvm_field_int(ether_type,UVM_ALL_ON)`uvm_field_
`uvm_field_int(dmac, UVM_ALL_ON) //bit `uvm_field_int(smac, UVM_ALL_ON) `uvm_field_int(ether_type, UVM_ALL_ON) `uvm_field_array_int(pload, UVM_ALL_ON) //byte `uvm_field_int(crc, UVM_ALL_ON) `uvm_object_utils_end Sequencer extends uvm_sequencer #(my_transaction); 产生tran...
这里使用uvm_object_utils_begin和uvm_object_utils_end来实现my_transaction的factory注册,在这两个宏中间,使用uvm_field宏注册所有字段。uvm_field系列宏随着transaction成员变量的不同而不同,如上面的定义中出现了针对bit类型的uvm_field_int及针对 byte类型动态数组的uvm_field_array_int。 当使用上述宏注册之后,可...
如图1代码片段所示,32和33行定义了40-bit变量data和int变量data_vld,为了让uvm命令行参数可以传递值给它们,需要添加36和37行的声明。 这里需要注意下,uvm_field_int只是声明这个变量按照整数数据类型解析(而不是real浮点数、string字符串、enum枚举或者数组等类型), 大家不用担心40比特data的高位会丢失。 然后使用下...
(smac,UVM_ALL_ON)33 `uvm_field_int(ether_type,UVM_ALL_ON)34 `uvm_field_array_int(pload,UVM_ALL_ON)35 `uvm_field_int(crc,UVM_ALL_ON)36 `uvm_object_utils_end37 38 function new(string name = "my_transaction");39 super.new();40 endfunction41 42 /*function void my_print();43...
static function bit get(uvm_component cntxt, string inst_name, string field_name, inout T value); //TBD: add file/line int unsigned p; uvm_resource#(T) r, rt; uvm_resource_pool rp = uvm_resource_pool::get(); uvm_resource_types::rsrc_q_t rq; ...
bit R1; // reserved bit bit [5:0] R6; // reserved bits super.do_pack( packer ); packer.pack_field_int( .value( flavor ), .size( 3 ) ); packer.pack_field_int( .value( color ), .size( 2 ) ); packer.pack_field_int( .value( sugar_free ), .size( 1 ) ); ...
(chnl_trans) `uvm_field_array_int(data, UVM_ALL_ON) `uvm_field_int(ch_id, UVM_ALL_ON) `uvm_field_int(pkt_id, UVM_ALL_ON) `uvm_field_int(data_nidles, UVM_ALL_ON) `uvm_field_int(pkt_nidles, UVM_ALL_ON) `uvm_field_int(rsp, UVM_ALL_ON) `uvm_object_utils_end function ...
`defineuvm_field_array_string(ARG,FLAG 这里只有4种,相比于前面的uvm_field系列宏少了event类型和real类型。另外一个重要的变化是enum类型的数组里也只有两个 参数。 与静态数组相关的uvm_field系列宏有: `defineuvm_field_sarray_int(ARG,FLAG) `defineuvm_field_sarray_enum(ARG,FLAG) ...
这里使用uvm_object_utils_begin和uvm_object_utils_end来实现my_transaction的factory注册,在这两个宏中间,使用uvm_field宏注册所有字段。uvm_field系列宏随着transaction成员变量的不同而不同,如上面的定义中出现了针对bit类型的uvm_field_int及针对byte类型动态数组的uvm_field_array_int。3.3.1节列出了所有的uvm_...