转 一篇 Systemverilog的一个牛人总结 (2012-12-12 16:47:06) 转载▼ 标签: systemverilog 验证 面向对象 杂谈 分类: Dreamywork Sy stemv erilog 数据类型 l 合并数组和非合并数组 1)合并数组: 存储方式是连续的,中间没有闲置空间
例如,32bit 的寄存器,可以看成是4 个8bit 的数据,或者也可以看成是1 个32bit 的数据
表示方法: 数组大小和位,必须在变量名前指定,数组大小必须是【msb:lsb】 Bit[3:0] [7:0] by tes ; 2)二维数组和合并数组识别: 合并数组: bit [3:0] [7:0] arry s; 大小在变量名前面放得,且降序 二维数组: int array s[0:7] [0:3] ; 大小在变量名后面放得,可降序可升序 位宽在变量名前面,用于识别合并和非合并数组,位宽在后面,用于识别数组中元素个数
3)非合并数组 一般仿真器存放数组元素时使用32bit 的字边界,by te、shortint、int 都放在一个字中
非合并数组:字的地位存放变量,高位不用
表示方法: Bit [7:0] by tes; 4)合并数组和非合并数组的选择 (1)当需要以字节或字为单位对存储单元操作
(2)当需要等待数组中变化的,则必须使用合并数组
例如测试平台需要通过存储器数据的变化来唤醒,需要用到@,@只能用于标量或者合并数组
Bit[3:0] [7:0] barray[3] ; 表示合并数组,合并数组中有 3 个元素,每个元素时 8bit,4 个元素可以组成合并数组 可以使用 barry[0]作敏感信号
l 动态数组 随机事物不确定大小
使用方法:数组在开始是空的,同时使用 new[]来分配空间,在 new[n]指定元素的个数
Int dy