| 
   Range
    
    
     
   
   Formal Definition
   A specified subset of values of a
   scalar type. 
   Simplified Syntax
   range left_bound to
    right_bound 
   range left_bound downto
    right_bound 
   range <> 
   Description
   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. 
   Examples
   Example 1 
   1 to 1007 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.
 
   Example 2 
   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.
 
   Important Notes
    
 
   |