电子说
不知道UVM中的field automation机制怎么翻译,不管了,反正就是**机制,理解它能干啥就行了。
UVM中的field automation机制提供了2类宏,也可以理解为有2个用途。
uvm_object_utils_begin(TYPE) 和
uvm_object_utils_end 宏用来声明几个uvm object基本的pure virtual 方法。
1.1 get_type_name() ,返回对象的类型,是一个字符串类型
1.2 create() 实例化一个对象,利用了工厂机制。对象类型能被override。
1.3 get_type()返回对象类型,用于工厂机制
`uvm_field_* 宏指定特定的属性域段所支持的方法(print(), copy(), clone(),
pack(), unpack(), compare()等等).
`uvm_field_*(field_name, flags)
1 class packet_header extends uvm_object;
2 rand bit [5:0] length;
3 rand bit [1:0] addr;
4 `uvm_object_utils_begin(packet_header)
5 `uvm_field_int(length, UVM_DEFAULT)
6 `uvm_field_int(addr, UVM_DEFAULT)
7 `uvm_object_utils_end
8 endclass : packet_header
上面的代码示例展示了这2类宏的配合使用方式。
不管你赞不赞同,这种用户类的声明继承方式已经是深入人心的UVM代码风格了。
你需要知道,每一次继承UVM基类去声明一个新的类,都需要有这些模版式的代码。
全部0条评论
快来发表一下你的评论吧 !