sv 组合数组与非组合数组
组合数据:信号名定义在位宽的右侧
如:
wire [0:3] a; //一维数组
wire [0:3][0:7] b; //二维数组
b占据的地址空间是连续的32bit
组合数组不能使用边界位宽来定义
如以下这样是错误的
wire [4] c; //这是一个错误的定义方式,这样的定义只允许在非组合数组中出现
非组合数据:信号定义在位宽的左侧
如
logic a [4];
logic b [4][8];
或者是
logic a [0:3];
logic b [0:3][0:7];
上述两种定义方式是相同的结果:a分配4bit地址空间,b分配24bit地址空间。
那么,这两种数组的定义方式,用哪种更方便呢?
建议使用组合数组,这样地址空间是连续的,在进行仿真时,速度更快,赋初值时也是可以按照向量的方式来给值的。