问题描述
bit [31:0] queue_1[$];
我从上面的表达式中了解到,这里实例化的队列是大小为 32 的位类型,但我在某处读到队列是一个可变大小参数。 问题来了,如果队列是可变大小参数,那么为什么我们在它前面使用 [31:0] ? 队列不会包含在 [31:0] 的那些参数中吗? (系统 Verilog 的新手需要一些帮助)。
解决方法
SystemVerilog 队列是一个大小不固定的数组。它可以增长和缩小。
bit [31:0] queue_1[$];
是一个 32 位、2 态数字的队列。类型 bit
是一种二态类型(它可以有值 1'b0
或 1'b1
)。这将是一个 1 位、2 状态数字的队列:
bit queue_1[$];
在 SystemVerilog 中,变量名称左侧的维度称为压缩维度。它们代表一个数字中的位数。变量名称右侧的维度称为未压缩维度。它们表示数组中元素的数量。例如,这是一个由 16 个 32 位数字组成的数组:
bit [31:0] array [0:15];