A specified subset of values of a
range left_bound to
range left_bound downto
The range specifies a
subset of values of a scalar type. This range can be null range if
the set contains no values. A range
can be either ascending or descending.
A range is called ascending
if it is specified with the keyword to
as the direction and the left bound value is smaller than the
right bound (otherwise the range is null). A range
is descending if the range
is specified with the keyword downto
as the direction and the left bound is greater than the right bound
(otherwise the range is null).
A value X belongs to a range if this range is not a null range and
the following relation holds:
lower bound of the range <= X <= upper bound of the range
A range can be undefined. Such a range is used in declaration of
unconstrained arrays and is illustrated in example 2.
1 to 100
7 downto 0
5 to 0
The first range is an ascending range of the values of integer type.
The second range is also of integer type, but descending. Finally,
the third range is null.
type Mem is array
(NATURAL range <>) of
Bit_Vector(7 downto 0);
The type Mem is declared as an unconstrained array of bytes (8-bit
wide vectors of bits). Note the way an undefined range is declared.