UVM验证之field automation机制

1、field automation机制相关的宏

uvm_field系列宏有如下几种:

uvm_field_int(ARG,FLAG)
uvm_field_real(ARG,FLAG)
uvm_field_enum(T,ARG,FLAG)
uvm_field_object(ARG,FLAG)
uvm_field_event(ARG,FLAG)
uvm_field_string(ARG,FLAG)

上述宏分别用于注册整数、实数、枚举类型、uvm_object类型、事件、及字符串类型。
与动态数组相关的宏有:

uvm_field_array_enum(ARG,FLAG)
uvm_field_array_int(ARG,FLAG)
uvm_field_array_object(ARG,FLAG)
uvm_field_array_string(ARG,FLAG)

与静态数组相关的宏有:

uvm_field_sarray_enum(ARG,FLAG)
uvm_field_sarray_int(ARG,FLAG)
uvm_field_sarray_object(ARG,FLAG)
uvm_field_sarray_string(ARG,FLAG)

与队列相关的宏有:

uvm_field_queue_enum(ARG,FLAG)
uvm_field_queue_int(ARG,FLAG)
uvm_field_queue_object(ARG,FLAG)
uvm_field_queue_string(ARG,FLAG)

与联合数组相关的宏有:

uvm_field_aa_int_string(ARG,FLAG)
uvm_field_aa_string_string(ARG,FLAG)
uvm_field_aa_object_string(ARG,FLAG)
uvm_field_aa_int_int(ARG,FLAG)
uvm_field_aa_int_int_unsigned(ARG,FLAG)
uvm_field_aa_int_integer(ARG,FLAG)
uvm_field_aa_int_integer_unsigned(ARG,FLAG)
uvm_field_aa_int_byte(ARG,FLAG)
uvm_field_aa_int_byte_unsigned(ARG,FLAG)
uvm_field_aa_int_shortint(ARG,FLAG)
uvm_field_aa_int_shortint_unsigned(ARG,FLAG)
uvm_field_aa_int_longint(ARG,FLAG)
uvm_field_aa_int_longint_unsigned(ARG,FLAG)
uvm_field_aa_string_int(ARG,FLAG)
uvm_field_aa_object_int(ARG,FLAG)

在该系列宏中,出现的第一个类型是存储数据类型,第二个类型是索引类型,比如uvm_field_aa_string_int声明的数据存储类型是string,而索引类型为int。

2、field automation机制的常用函数

field automation的强大之处在于它提供了非常多的函数,使用field automation宏注册之后,可以直接调用这些函数,而无需自己定义。比如:
print函数用于实例中所有字段的打印,其原型为

extern function void print()

clone函数用于分配内存空间和把某一实例复制到该内存空间中,其原型为

extern virtual function uvm_object clone()

copy函数用于实例的复制,其原型为

extern function void copy(uvm_object rhs)

compare函数用于比较两个实例是否一样,其原型为

extern function bit compare(uvm_object rhs,uvm_comparer comparer=null)

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_packer packer=null)

pack函数用于将所有的字段打包成bit流,其原型为

extern function int pack(ref bit bitstream[],input uvm_packer packer=null)

unpack函数用于将bit流恢复到某个类的实例中,其原型为

extern function int unpack(ref bit bitstream[],input uvm_packer packer=null)

pack_ints函数用于将所有的字段打包成int流,其原型为

extern function int pack_ints(ref int unsigned  intstream[],input uvm_packer packer=null)

unpack_ints函数用于将int流恢复到某个类的实例中,其原型为

`extern function int unpack_ints(ref int unsigned  intstream[],input uvm_packer packer=null)

除此之外,field automation机制还提供自动获取使用config_db::set设置的参数的功能,其使用方法为:
(1)对某个类的实例中的成员变量使用uvm_component_utils宏注册;
(2)成员变量使用对应的uvm_field宏注册;
(3)调用uvm_config_db set函数时,函数第三个参数必须与get函数中的变量名字一致;
在上述条件全部满足时,在build_phase中调用super.build_phase(),就可以省略调用uvm_config_db get函数,得到对应成员变量的值。

  • 3
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值