uvm_field_automation:UVM_PACK(一)

2 篇文章 0 订阅

在UVM中有许多自带的功能,可以方便我们调用完成print、copy、pack等功能.今天我们就来介绍下UVM_PACK功能调用关系及如何使用.
1.uvm_object定义了do_pack.
do_pack作为自定义的hook,可以方便用户实现定制的pack方式.
2.uvm_obejct定义了pack、pack_bytes、pack_ints分别用来将数据流打包成bit、byte、int的类型.
3.在uvm_packer定义了pack_field、pack_field_int函数
pack_filed入口参数是uvm_bitstream_t和数据的size,其中:uvm_bitstream_t代表一个数据位宽最大是4096bit的数据;
pack_field_int入口参数是数据位宽最大是64bit的数据和数据位宽大小;
这两个函数作用都是将数据转化bit的类型,只是传入数据的最大位宽不一样.
4.uvm_object中定义get_bits、get_bytes、get_ints函数用来获取对应位宽的数据.
5.在uvm_object中定义了m_pack,用来获取packer,并且会调用自定义的do_pack,将数据实现bit流的转换;
6.实例化完xaction后,调用pack、pack_bytes、pack_ints便可将对应的数据打包完成.
1.定义一个简单的xaction,将类成员注册到uvm_field_int等宏定义中
在这里插入图片描述
在类中定义do_pack函数,继承原来的do_pack,没有添加自定义的情况.
2.用例中调用pack_bytes
在这里插入图片描述
3.效果如下
在这里插入图片描述
从log中可以看出,调用pack_bytes之后将类成员都打包成byte的形式,默认是按照大端的形式处理的.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值