![芯片验证调试手册:验证疑难点工作锦囊](https://wfqqreader-1252317822.image.myqcloud.com/cover/927/47548927/b_47548927.jpg)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
2.1.9 数组的选取可以用两个变量作为索引边界吗?
实际上,数组索引的问题,跟索引变量是否为动态变量没有关系。在对数组索引时,应该避免的问题是用两个变量进行索引,例如bit[31:0]v1;int idx1 = 3,idx2 = 0;那么v1[idx1:idx2]在编译时,编译器不允许通过。但是可以选择一个变量作为某一个索引,而采取固定位宽的方式去选取某一个数组的片段(slice)。
关键词:
数组选取,array slice,index
避坑指南:
遗憾的是,目前没有好的办法可以直接利用两个变量去选择某个数组的片段,但是可以通过“-=”“+=”的片段选择符号,或“<<”“>>”的位移操作符号,间接达到选取数组片段的目的。
参考代码:sv_array_variable_slice.sv
![](https://epubservercos.yuewen.com/563682/26947507002660206/epubprivate/OEBPS/Images/txt002_11.jpg?sign=1738852627-Lp5sNhjGRwSpADUpa6GHiG7lZqXLIvMA-0-f7865ea3d7e41b29b2763d5e78cf2276)
![](https://epubservercos.yuewen.com/563682/26947507002660206/epubprivate/OEBPS/Images/txt002_12.jpg?sign=1738852627-LoPKrUwMLT7BHT9vYE0ECN8MQutA5EfF-0-0e9d0200deb1f97da186793e2dce1ffb)
仿真结果:
![](https://epubservercos.yuewen.com/563682/26947507002660206/epubprivate/OEBPS/Images/txt002_13.jpg?sign=1738852627-C92DWfg0nOxnMGfy5Vf9ot3m3ukRgAPH-0-c23dee00f76eef5ccc8d2ca95bafd471)
阅读手记: