uvm_component派生自uvm_object,但是uvm_component有两大特性是uvm_object所没有的,一是通过在new的时候指定parent参数来形成一种树形的组织结构,二是有phase的自动执行特点 除了driver、monitor、agent、model、scoreboard、env、test之外的几乎所有的类,本质上都是uvm_object,如sequence、sequence_item、transaction、confi...
uvm_monitor:所有的monitor都要派生自uvm_monitor。monitor做的事情刚好跟driver相反,monitor从DUT的端口上接收数据,并且把接收到的数据转换成transaction级别的sequence_item,再把转换后的数据发送个scb。与uvm_component相比,uvm_monitor几乎没有做任何扩充。虽然理论上来说所有的monitor都要从uvm_monitor派生,但实际上从...
自动实现my_transaction中print、copy、compare这样的比较常见的结构体操作,简化my_transaction的实现。同时默认的pack_bytes(tr中的各个字段转换成byte流)和unpack_bytes(byte流转换成tr中的各个字段)也简化了driver、monitor的实现。 使用uvm_object_utils_begin和uvm_object_utils_end来实现my_transaction的factory注册,...
pack pack_bytes pack_bits pack_ints unpack… 1. 2. 3. 4. 5. 6. field automation机制中标志位的使用: 使用如下语句后,当执行pack和unpack操作时,UVM就不会考虑这个字段了。 `uvm_object_utils_begin(my_transaction) `uvm_field_int(dmac, UVM_ALL_ON) `uvm_field_int(smac, UVM_ALL_ON) `uvm...
2)使用uvm_object_utils_begin 和 uvm_object_utils_end 实现my_transaction 的factory注册。 3)uvm_field系列宏不同:uvm_field_int 对 int;uvm_field_array_int 对 byte。 2.my_model变为: task my_model::main_phase(uvm_phase phase); my_transaction tr; ...
第42行调用pack_bytes将tr中所有的字段变成byte流放入data_q中。pack_bytes极大地减少了代码量。在把所有的字段变成byte流放入data_q中时,字段按照uvm_field系列宏书写的顺序排列。在上述代码中是先放入dmac,再依次放入smac、ether_type、pload、crc。假如my_transaction定义时各个字段的顺序如下: ...
uvm_sequence_item:所有transaction要从uvm_sequence_iem派生。 uvm_sequence_item是从uvm_transaction派生而来的,它相比uvm_transaction添加了很多实用的成员变量和函数/任务。 uvm_sequence:所有sequence要从uvm_sequence派生,sequence就是sequence_item的组合。
uvm_sequence_item是从uvm_transaction派生而来的,它相比uvm_transaction添加了很多实用的成员变量和函数/任务。 uvm_sequence :所有sequence要从uvm_sequence派生,sequence就是sequence_item的组合。 config :所有的config一般直接从uvm_object派生,其主要功能就是规范验证平台的行为方式。config是把所有参数放在一个object...
pack_bytes函数用于将所有的字段打包成byte流,其原型为: extern function int pack_bytes (ref byte unsigned bytestream[],input uvm_packer packer=null); unpack_bytes函数用于将一个byte流逐一恢复到某个类的实例中,其原型为: extern function int unpack_bytes (ref byte unsigned bytestream[],input uvm_pack...
pack函数的使用与pack_bytes类似。 unpack函数用于将一个bit流逐一恢复到某个类的实例中,其原型为: 代码清单3-36来源:UVM源代码externfunctionintunpack (refbitbitstream[],inputuvm_packer packer=null); unpack的使用与unpack_bytes类似。 pack_ints函数用于将所有的字段打包成int(4个byte,或者dword)流,其原型为...