1.uvm_object_utils:把一个直接或间接派生自uvm_object 的class 注册到factory。 2.uvm_object_param_utils:把一个直接或间接派生自uvm_object 的参数化的class 注册到factory。类似: 参数化的class 在重构性中经常用到。如果允许,尽可能使用参数化的class,提高代码可移植性。 3.uvm_object_utils_begin:需要使用...
它的作用也很简单,即根据给定名字(string),在全局的登记表格中查找匹配的句柄,并利用该句柄来创建一个新的实例。 下面是摘自UVM的部分源代码: class uvm_object_registry #(type T=uvm_object, string Tname="<unknown>") extends uvm_object_wrapper; typedef uvm_object_registry #(T,Tname) this_type; ....
同时默认的pack_bytes(tr中的各个字段转换成byte流)和unpack_bytes(byte流转换成tr中的各个字段)也简化了driver、monitor的实现。 使用uvm_object_utils_begin和uvm_object_utils_end来实现my_transaction的factory注册,在这两个宏中间,使用uvm_field宏注册所有字段。 `uvm_object_utils_begin(my_transaction) `uvm_...
uvm_component_utils_begin:与uvm_object_utils_begin相似,用于同时需要使用factory机制和field_automation机制注册的类。 uvm_component_param_utils_begin:与uvm_component_utils_begin宏一样,只是它适用于参数化的,其中某些成员变量需要用field_automation机制实现的类。 uvm_component_utils_end:总是与uvm_component*be...
`uvm_object_utils_begin (my transaction) //对于object类型 //`uvm_component_utils begin (my transaction) //对于component类型 `uvm_field_int (ARG,FLAG) `uvm_field_real (ARG,FLAG) `uvm_field_enum (T,ARG,FLAG) `uvm field_object (ARG,FLAG) `uvm_field_string (ARG,FLAG) `uvm_field_...
`uvm_object_utils_begin/end 该宏可以实现有生命周期的类的factory注册。 3. 核心基类 testbench中所有的基类都继承于uvm_component,都具有该类的特征。每个派生于uvm_component或其派生下的类在其new函数中要指明两个参数:name和parent 每个派生于该类或其派生下的类出来的类均是有生命周期的,例如uvm_sequence_...
13、parameter):'uvm_object_utils_begin(item 类名) .field_automation 'uvm_object_utils_end2)对于 uvm_sequence,要力口上'uvm_object_utils(sequence 类名)可能还需要 'uvm_declare_p_sequencer(sequencer 类名)的声明uvm_component macro对于 driver monitor reference_model scoreboard sequencer case agent en...
(2) `uvm_field_*宏,必须要依赖于factory机制的宏(比如uvm_object_utils_begin, uvm_object_utils_end). 3.2field_automation中宏与if的结合 3.3uvm_field_*的使用有顺序吗? 由于pack函数与unpack函数对于字段的位置比较敏感,所以在使用时需要注意顺序保持一致. ...
UVM基础总结——基于《UVM实战》⽰例 ⼀、前⾔ ⼯作⼀直在做SoC验证,更关注模块间的连接性和匹配性,所以相⽐于擅长随机约束激励的UVM来说,定向测试的概念更容易debug。当然前提是IP已经被充分验证。因此觉得接触UVM的机会较少。到现在发现即使在SoC验证中依然有它的⽤武之地。⽐如验证可独...
(针对uvm_object如此,但是uvm_component并不是这样,其parent参数并没有缺省值,因为不可能在类中知道其父组件)4.3.1 UVM自动域使用uvm_object_utils_begin(TYPE)和uvm_object_utils_end宏来完成UVM对象的基本操作声明。· 实现get_type_name()函数 29、,此函数返回内容为这个对象类型名字的字符串· 实现create()...