首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >何时使用(‘)进行Verilog数组初始化?

何时使用(‘)进行Verilog数组初始化?
EN

Stack Overflow用户
提问于 2014-04-18 21:59:24
回答 2查看 38.1K关注 0票数 5

可以使用或不使用'进行数组初始化。

代码语言:javascript
复制
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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-19 07:46:54

基于IEEE 1800-2009:

数组赋值模式 (1)的优点是,它们可以通过在模式前加上类型名称来创建自确定类型的赋值模式表达式。此外,赋值模式中的项可以使用'{ n{element} }之类的语法复制,并且可以使用default:语法默认。但是,数组分配模式中的每个元素项必须与目标数组的元素类型相同。相反,解压数组连接 (2)禁止复制、默认和显式类型,但它们提供了从任意元素和数组组合数组值的额外灵活性。

所以:

代码语言:javascript
复制
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
票数 12
EN

Stack Overflow用户

发布于 2014-04-21 14:54:39

在简单的情况下,正如您已经显示的,赋值模式和未打包的数组连接在功能上存在重叠。事实上,在SystemVerilog的早期版本中,它们使用了完全相同的语法(没有“”),但事实证明,分配上下文类型规则太复杂,无法使用完全相同的语法,因此添加了“前缀”来区分这两种类型。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23163042

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档