An aggregate builds a value of an array or record type from a list of element associations. VHDL only allows these associations in a fixed order, positional first, then named, and finally others. Sigasi reports the association that breaks this order as an error.
type config is record
width : integer;
depth : integer;
signed : boolean;
cached : boolean;
end record;
-- Positional associations, then named associations, then 'others'
constant default_cfg : config := (8, 256, signed => true, others => false);The check applies to every aggregate, whether it is used in a declaration, an assignment, or nested inside another aggregate.
Positional associations order
A positional association that follows a named association is an error (rule 2). Move the positional associations to the front of the aggregate, or turn them into named associations as well.
constant c : config := (8, signed => true, 256, cached => false); -- positional after named
constant c : config := (8, 256, signed => true, cached => false); -- positional first‘Others’ position in associations
The others choice covers all elements that were not associated yet, so it has to be the last association. Sigasi reports any positional or named association that comes after others as an error (rule 3).
constant c : config := (8, 256, others => false, signed => true); -- association after 'others'
constant c : config := (8, 256, signed => true, others => false); -- 'others' lastMultiple others in associations
An aggregate can contain only one others choice. A second one is an error (rule 4), since the first others already covers every remaining element.
constant c : config := (8, 256, others => false, others => true); -- second 'others'
constant c : config := (8, 256, others => false);