structure - verilog 结构赋值模式中的冒号 (:) 表达式是什么?
问题描述
例如,
typedef struct packed {
logic foo_1;
logic foo_2;
} my_type
my_type foo_out;
assign foo_out = ‘{
foo_1 : sig_1,
foo_2 : sig_2
};
看起来是这样的,就像
assign foo_out = {sig_1, sig_2};
我在 LRM 中找不到任何使用冒号 (:) 的结构分配模式。任何人请在描述这种表达的地方发表评论。
解决方案
这是一个 SystemVerilog 表达式,它不是普通 Verilog 的一部分,因此如果您在 Verilog LRM 中搜索,您将找不到它。
从 SystemVerilog LRM:
有时将结构成员设置为一个值很有用,而不必跟踪有多少成员或名称是什么。这可以使用默认关键字来完成:
initial s1 = {default:2}; // sets x and y to 2
也可以使用 {member:value} 或 {data_type: default_value} 语法:
ab abkey[1:0] = {{a:1, b:1.0}, {int:2, shortreal:2.0}};
推荐阅读
- python - 在列表推导的每次迭代中生成多个值
- c# - 在 ItemsHost 面板上调用 Measure 后,无法更改 ItemsControl 上的 VirtualizationMode 附加属性
- firebase - Flutter firebase auth 工作正常并注册用户,但之后应用程序只是退出而不是导航到新屏幕。应用程序只是停止
- reactjs - MaterialUI withStyles:提供给`Route`的`object`类型的无效prop`component`,预期`function`
- javascript - 图表工具提示自动隐藏
- node.js - 如何修复节点 JS 错误 [ERR_HTTP_HEADERS_SENT]:在将标头发送到客户端后无法设置标头
- neo4j - 如何在 Jupyter 实验室或笔记本中显示 Neo4j 图形?
- r - clmm 不计算随机效应
- leaflet - 修复/偏移传单地图上的瓷砖坐标
- java - Java 以前的数组值设置为 0