Fish and chips
Fish and chips

Reputation: 25

Does this queue have a variable size?

  bit    [31:0] queue_1[$];

All I understood from the above expression is that the queue instantiated here is of type bit with a size of 32, but I read somewhere that the queue is a variable size parameter.

If a queue is a variable size parameter, then why are we using [31:0] in front of it? Isn't the queue going to be contained in those parameters of [31:0]?

Upvotes: 1

Views: 369

Answers (1)

Matthew
Matthew

Reputation: 13977

A SystemVerilog queue is an array whose size is not fixed. It can grow and shrink.

bit [31:0] queue_1[$];

is a queue of 32-bit, 2-state numbers. The type bit is a 2-state type (it can have values 1'b0 or 1'b1). This would be a queue of 1-bit, 2-state numbers:

bit queue_1[$];

In SystemVerilog, dimensions to the left of the variable name are called packed dimensions. They represent the number of bits in a number. Dimensions to the right of a variable name are called unpacked dimensions. They represent the number of elements in an array. So, for example, this is an array of 16 32-bit numbers:

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

Upvotes: 3

Related Questions