typedef - 使用 typedef + 压缩数组(与多维压缩数组相比)的每个元素的有符号类型是否有效
问题描述
我有一个关于具有多个打包维度的签名属性的问题,该属性是使用 typedef 分阶段定义的。
基本上,
logic signed [1:0][2:0] foo;
* foo[0] 没有签名(如果你期望有符号的元素,有符号是没有意义的)因为所有的整个打包数组都是有符号的,但每个元素都没有符号。
但,
typedef logic signed [1:0] foo_t;
foo_t [2:0] foo;
* foo[0] 已签名。好奇怪啊。。
Q1> 会发生什么?为什么要签??
Q2> 是否与逻辑签名的声明相同 [1:0][2:0] foo; // ??
Q3> LRM 说 [1:0] 指数变化最快,这不是我的预期。逻辑签名 [2:0][1:0] foo; //??
解决方案
这是允许的语法(BNF)的产物。signed
关键字将符号应用于logic
整个标识符,而不是您要打包的单个元素 ( )。除了您发现的 typedef 阶段之外,没有任何语法可以让您控制每个维度的符号性。
当您分阶段创建多维数组时,您添加的每个维度的变化速度都比前一个要慢。所以在维度上,你的 typedef 相当于
logic signed [2:0][1:0] foo;
foo_t [2:0] foo; // the [2:0] gets added to the left of [1:0]
推荐阅读
- python - 为什么 VSCode 不在断点处停止调试?
- r - 在 R 中重塑分段数据帧
- python - 三角函数图
- c - 未定义的函数引用,使用 makefile 编译
- javascript - onresize 函数中的 location.reload() 强制用户留在页面上
- collision-detection - 解决移动凸多边形与静态凸多边形的碰撞而不改变其方向
- web-services - 从 web 服务获取属性
- informatica - 条件变量扩展 informatica
- pine-script - 是否可以在 tradingview cryptoscreener 中创建自定义过滤器
- javascript - Uncaught SyntaxError: 'super' 关键字在覆盖方法和继承类上出现意外