Systemverilog
数据类型
l
合并数组和非合并数组
1
)合并数组:
存储方式是连续的,中间没有闲置空间ã€?/p>
例如ï¼?/p>
32bit
的寄存器,可以看成是
4
�/p>
8bit
的数据,或者也可以看成æ˜?/p>
1
�/p>
32bit
çš?/p>
数据ã€?/p>
表示方法ï¼?/p>
数组大小和位,必须在变量名前指定,数组大小必须是ã€?/p>
msb
ï¼?/p>
lsb
�/p>
Bit[3:0] [7:0] bytes
ï¼?/p>
2
)二维数组和合并数组识别ï¼?/p>
合并数组ï¼?/p>
bit [3:0] [7:0] arrys;
大小在变量名前面放得,且降序
二维数组ï¼?/p>
int arrays[0:7] [0:3] ;
大小在变量名后面放得,可降序可升åº?/p>
位宽在变量名前面,用于识别合并和非合并数组,位宽在后面,用于识别数组中元ç´?/p>
个数ã€?/p>
3
)非合并数组
一般仿真器存放数组元素时使ç”?/p>
32bit
的字边界ï¼?/p>
byte
�/p>
shortint
�/p>
int
都放在一个字中ã€?/p>
非合并数组:字的地位存放变量,高位不用ã€?/p>
表示方法ï¼?/p>
Bit [7:0] bytes;
4
)合并数组和非合并数组的选择
ï¼?/p>
1
)当需要以字节或字为单位对存储单元操作ã€?/p>
ï¼?/p>
2
)当需要等待数组中变化的,则必须使用合并数组。例如测试平台需要通过å?/p>
储器数据的变化来唤醒,需要用åˆ?/p>
@
ï¼?/p>
@
只能用于标量或者合并数组ã€?/p>
Bit[3:0] [7:0] barray[3] ;
表示合并数组ï¼?/p>
合并数组中有
3
个元素,
每个元素æ—?/p>
8bit
ï¼?/p>
4
个元素可以组成合并数ç»?/p>
可以使用
barry[0]
作敏感信号ã€?/p>
l
动态数ç»?/p>
随机事物不确定大小ã€?/p>
使用方法ï¼?/p>
数组在开始是空的ï¼?/p>
同时使用
new[]
来分配空间,
�/p>
new[n]
指定元素的个数ã€?/p>
Int dyn[];
Dyn = new[5]; //
分配
5
个元素空é—?/p>
Dyn.delete() ; //
释放空间