【UVM源码学习】uvm_packer

简介: 【UVM源码学习】uvm_packer

 uvm_packer,基类,提供了一系列适用于uvm的数据打包(pack)、解包(unpack)方法。



序号 方法 描述

1

pack_field

对uvm_bitstram_t类型的value进行打包,默认大端模式,打包size默认最大4096 (单位bit,最大size取决于宏UVM_MAX_STREAMBITS),打包数据放在uvm_pack_bitstream_t类型的m_bits中(最大size=UVM_MAX_STREAMBITS*8)

2

pack_field_int

实现方式与pack_field完全相同,唯一的不同是value的数据类型为uvm_interal_t,打包size默认最大64 bits

3

pack_bits

实现方式与pack_field基本相同,区别在于pack_bits会对指定的打包size进行判断,默认是采用value的size,若指定的size比value实际size大则报错。pack_field与pack_field_int这两个本身有size的上限,pack_bit没有4096或64这种固定限,上限取决于数组value的实际size

4

pack_bytes

与pack_bits的区别在于,打包的数组是byte类型的,size默认值及上限是value.size*8

5

pack_ints 与pack_bytes的区别在于,打包的数组是int类型的

6

pack_string 把字符串打包放进m_bits中,无需指定size,以字符串实际size为准

7

pack_time 调用pack_field_int把time类型的value进行打包,size指定为64

8

pack_real 调用pack_field_int把real类型的value进行打包,实际打包的数据是系统函数$realtobits(value)数据类型转换后的value,size指定为64

9

pack_object

打包uvm_object类型的value,实现方式:value.get_name入栈,uvm_field_automation注册UVM_PACK,value.do_pack(this)打包,出栈。在字符串之前会插入4bit header来指示字符串bit长度。还没看懂,等把uvm_object看懂再来解释。

10

is_null 如果m_bits接下来4 bits为0则返回1,unpack_object时会用到该方法,用于判定是否需要新分配一个object

11

unpack_field pack_field的逆过程,解包前先判断m_bits中是否有足够当前解包类型的余量

12

unpack_field_int pack_field_int的逆过程,解包前先判断m_bits中是否有足够当前解包类型的余量

13

unpack_bits pack_bits的逆过程,解包前先判断m_bits中是否有足够当前解包类型的余量

14

unpack_bytes pack_bytes的逆过程,解包前先判断m_bits中是否有足够当前解包类型的余量

15

unpack_ints pack_ints的逆过程,解包前先判断m_bits中是否有足够当前解包类型的余量

16

unpack_string pack_string的逆过程,解包前先判断m_bits中是否有足够当前解包类型的余量

17

unpack_time pack_time的逆过程,解包前先判断m_bits中是否有足够当前解包类型的余量

18

unpack_real pack_real的逆过程,解包前先判断m_bits中是否有足够当前解包类型的余量

19

unpack_object pack_object的逆过程

20

get_packed_size 返回已打包数据的bit size

21

unpack_object_ext unpack_onject的扩展方法,输入参数是inout uvm_object类型

22

get_packed_bits 返回已打包数据m_bits

23

get_bit 获取m_bits中指定位置的bit数据值

24

get_byte 获取m_bits中指定位置的byte数据值

25

get_int 获取m_bits中指定位置的int数据值

26

get_bits 获取m_bits值存入bit类型数组

27

get_bytes 获取m_bits值存入byte类型数组

28

get_ints 获取m_bits值存入int类型数组

29

put_bits bit类型数据打包放进m_bits,与pack_bits的区别在于,put_bits无需指定size,存放的位置是从0开始放,pack_bits是接着之前的位置往后放

30

put_bytes byte类型数据打包放进m_bits,与pack_bits的区别在于,put_bits无需指定size,存放的位置是从0开始放,pack_bits是接着之前的位置往后放

31

put_ints int类型数据打包放进m_bits,与pack_bits的区别在于,put_bits无需指定size,存放的位置是从0开始放,pack_bits是接着之前的位置往后放

32

set_packed_size 获取已打包数据的size并赋给m_packed_size变量

33

index_error 打印索引错误的信息,用于指示get_int/get_byte/get_int方法要get的位置是否合法

34

enough_bits 解包时用于判断是否有足够的数据

35

reset 清空count、m_bits及m_packed_size


目录
相关文章
【UVM源码学习】uvm_comparer
【UVM源码学习】uvm_comparer
634 0
【UVM源码学习】uvm_comparer
|
算法
【UVM源码学习】uvm_spell_chkr
【UVM源码学习】uvm_spell_chkr
198 0
【UVM源码学习】uvm_spell_chkr
|
安全
【UVM源码学习】uvm_links
【UVM源码学习】uvm_links
166 0
【UVM源码学习】uvm_links
|
测试技术 数据库 容器
【UVM源码学习】uvm_resource
【UVM源码学习】uvm_resource
185 0
【UVM源码学习】uvm_resource
【UVM源码学习】uvm_registry
【UVM源码学习】uvm_registry
247 0
【UVM源码学习】uvm_registry
【UVM源码学习】uvm_object
【UVM源码学习】uvm_object
137 0
【UVM源码学习】uvm_object
【UVM源码学习】uvm_recorder
【UVM源码学习】uvm_recorder
269 0
【UVM源码学习】uvm_recorder
|
存储 C语言
【UVM源码学习】uvm_misc
【UVM源码学习】uvm_misc
140 0
【UVM源码学习】uvm_misc
【UVM源码学习】uvm_event
【UVM源码学习】uvm_event
330 0
【UVM源码学习】uvm_event
【UVM源码学习】uvm_heartbeat
【UVM源码学习】uvm_heartbeat
251 0
【UVM源码学习】uvm_heartbeat