Return to previous page Advance to next page
VHDL Reference Guide
Chapter 3: Data Types

Record Aggregates

Record aggregates (constants) have the same syntax as array aggregates (see the “Aggregates” section of the “Expressions” chapter). They can appear anywhere records appear.

The following line illustrates a named record aggregate in a description.

X <= (BYTE => "11110000", IX => 2);

The following line illustrates a positional record aggregate in a description.

X <= ("11110000", 2);

You can use the others construct in a named or positional record aggregate, just as you can in an array aggregate (see the “Aggregates” section of the “Expressions” chapter).

You can mix named and positional aggregates in a description, with the positional items listed first.

You cannot have a named item that refers to a field covered in the positional aggregate. The following four examples illustrate this caveat.

The following example shows a simple record type.

type rec is
   record
      a: integer;
      b: integer;
      c: integer;
      d: integer;
      e: integer;
   end record
end

The following example shows a named aggregate for the previous example.

(a => 1, b => 2, c => 0, d => 3, e => 0)

In a named aggregate, the items can appear in any order as shown in the following example.

(1, 2, d => 3, others => 0)

The previous example is equivalent to the second example or the following example of positional aggregate.

(1, 2, 0, 3, 0)

You can supply a set of choices in a description of a record aggregate, but a choice cannot be a range. See the following two examples.

The following example shows a record aggregate equivalent to the next example after it.

(b => 2, c => 2, d => 2, a => 1, e => 3)

The following example shows a record aggregate with a set of choices.

(b | c | d => 2, a => 1, e =>3)