像这样实例化的队列是什么意思?队列的大小是否可变?

问题描述

bit [31:0] queue_1[$];

我从上面的表达式中了解到,这里实例化的队列是大小为 32 的位类型,但我在某处读到队列是一个可变大小参数。 问题来了,如果队列是可变大小参数,那么为什么我们在它前面使用 [31:0] ? 队列不会包含在 [31:0] 的那些参数中吗? (系统 Verilog 的新手需要一些帮助)。

解决方法

SystemVerilog 队列是一个大小不固定的数组。它可以增长和缩小。

bit [31:0] queue_1[$];

是一个 32 位、2 态数字的队列。类型 bit 是一种二态类型(它可以有值 1'b01'b1)。这将是一个 1 位、2 状态数字的队列:

bit queue_1[$];

在 SystemVerilog 中,变量名称左侧的维度称为压缩维度。它们代表一个数字中的位数。变量名称右侧的维度称为未压缩维度。它们表示数组中元素的数量。例如,这是一个由 16 个 32 位数字组成的数组:

bit [31:0] array [0:15];