非零起始索引向量用作非打包数组索引的取值规则咨询
数组索引求值规则说明
在SystemVerilog中,使用向量作为非打包数组的索引时,直接取向量的原始整数值作为索引,不会因为向量的位宽起始偏移(比如[31:2])补全低位。
针对你的代码:
logic myArray [1023:0]; logic [31:2] myVal; logic result; assign myVal = 30'hA; // 1010b assign result = myArray[myVal];
myVal的类型是[31:2],表示它存储30个bit(从第2位到第31位),赋值30'hA后,它的整数值就是十进制10(0xA),而不是把低两位补0得到的0x28(十进制40)。myArray[myVal]等价于myArray[10],取的是数组中索引为10的元素值。
简单来说:向量作为索引时,看的是它代表的数值大小,和向量的位宽起始位置无关,不会自动补全被截断的低位。
内容的提问来源于stack exchange,提问作者ahmouse
相关产品推荐
相关产品推荐

