Group

LRM §4.6, §4.7.

A group is a named collection of items.

Syntax:

group group_template_name is( class, ... );              -- group template declaration
class = entity | architecture | label | signal | function | group | type | {etc.}  [ < > ] 
group group_name: group_template_name ( name, ... );     -- group declaration

Description:

Groups relate different named items for the purposes not specified by the language, and have no meaning for simulation. Groups can be used to pass information to downstream tools.

Setting up a group requires two declarations (a group template declaration and a group declaration).

The group template declaration defines pattern of a group connecting named items with the specified class. A class with range <> allows zero or more units belonging to this group, and must be the last item in this class list.

The group declaration connects named items having the specified characteristics.

The user-defined attributes are connected individually with each named item, so each separate named item can have its own attributes. In case when the user wants to assign information to several related named items, a group consisting of these units can be defined, and then specify attributes for the entire group.

The attribute specification of a group is realized in a similar way to other attribute specifications. First, the attribute of a given type is declared and it is specified for the given group in its declaration part which contains declaration of the particular group.

Example:

architecture Rtl of Ent1 is
  group Operations is (function, label <>);
  group Counters: Operations ("+", C1, C2);
begin
  C1: X <= A + B;
  C2: Y <= C + D;
end Rtl;

Note:

See also:

Attributes (user-defined)