可以使用或不使用'进行数组初始化。
int a[8] = '{0,1,2,3,4,5,6,7}; // Packed
int b[8] = {0,1,2,3,4,5,6,7}; // Unpacked是否有一种正确的方法,假设数组使用不可打包的类型,如int、string等?这两种方式似乎都很好。
EDA游乐场上的完整代码示例:http://www.edaplayground.com/x/3Tc
发布于 2014-04-19 07:46:54
基于IEEE 1800-2009:
数组赋值模式 (1)的优点是,它们可以通过在模式前加上类型名称来创建自确定类型的赋值模式表达式。此外,赋值模式中的项可以使用'{ n{element} }之类的语法复制,并且可以使用default:语法默认。但是,数组分配模式中的每个元素项必须与目标数组的元素类型相同。相反,解压数组连接 (2)禁止复制、默认和显式类型,但它们提供了从任意元素和数组组合数组值的额外灵活性。
所以:
int A3[1:3];
int A9[1:9];
A3 = '{1, 2, 3}; #legal
A9 = '{3{A3}}; #illegal
A9 = {A3, 4, 5, A3, 6}; #legal
A9 = '{9{1}}; #legal
A9 = {9{1}}; #illegal发布于 2014-04-21 14:54:39
在简单的情况下,正如您已经显示的,赋值模式和未打包的数组连接在功能上存在重叠。事实上,在SystemVerilog的早期版本中,它们使用了完全相同的语法(没有“”),但事实证明,分配上下文类型规则太复杂,无法使用完全相同的语法,因此添加了“前缀”来区分这两种类型。
https://stackoverflow.com/questions/23163042
复制相似问题