Subprograms

## Single syntax for functions and procedures to do without declaration and definition regions. E.g.:

package subs is end package subs;

package body subs is begin
    function "&"(a, b: std_ulogic) return std_ulogic_vector is begin
        return a & b;
    end function "&";
end package body subs;

This is equivalent to the following:

package subs is
    function "&"(a, b: std_ulogic) return std_ulogic_vector;
end package subs;

package body subs is begin    
    function "&"(a, b: std_ulogic) return std_ulogic_vector is begin
        return a & b;
    end function "&";
end package body subs;


std.standard

Provide unresolved versions of these types:

## Boolean, bit, integer, character, real, time, and vectors of these

E.g.:

package standard is
    /* IEEE Proposed:
        Unresolved types.
    */
    type unresolved_boolean is ('X',false,true);
    type unresolved_bit     is ('X','0','1');

    /* TODO Add undefined values. */
    --type unresolved_integer is (range -2147483648 to 2147483647, undefined);
    type unresolved_integer is range -2147483648    to 2147483647;

    type unresolved_real    is range -1.0e308       to 1.0e308;
    type unresolved_time    is range -2147483647    to 2147483647
        units
            fs;
            ps  = 1000 fs;
            ns  = 1000 ps;
            us  = 1000 ns;
            ms  = 1000 us;
            sec = 1000 ms;
            min = 60 sec;
            hr  = 60 min;
        end units;

    alias u_boolean is unresolved_boolean;
    alias u_bit     is unresolved_bit;
    alias u_integer is unresolved_integer;
    alias u_real    is unresolved_real;
    alias u_time    is unresolved_time;

    subtype natural     is u_integer range 0 to u_integer'high;
    subtype positive    is u_integer range 1 to u_integer'high;

    type u_boolean_vector   is array(integer range <>) of u_boolean;
    type u_bit_vector       is array(integer range <>) of u_bit;
    type u_integer_vector   is array(integer range <>) of u_integer;
    type u_real_vector      is array(integer range <>) of u_real;
    type u_time_vector      is array(integer range <>) of u_time;

    subtype boolean         is resolved u_boolean;
    subtype bit             is resolved u_bit;
    subtype integer         is resolved u_integer;
    subtype real            is resolved u_real;
    subtype time            is resolved u_time;

    subtype boolean_vector  is (resolved) u_boolean_vector;
    subtype bit_vector      is (resolved) u_bit_vector;
    subtype integer_vector  is (resolved) u_integer_vector;
    subtype real_vector     is (resolved) u_real_vector;
    subtype time_vector     is (resolved) u_time_vector;

    type byte               is array(7 downto 0)        of bit;
    type byte_vector        is array(natural range <>)  of byte;

    type signed_vector      is array(natural range <>)  of signed;
    type unsigned_vector    is array(natural range <>)  of unsigned;
end package standard;


ieee.std_logic_1164

## TODO



-- Daniel Kho - 2016-07-13

Comments


External links to these examples will be provided later for easy download and review. -- DanielKho - 2016-07-13

Topic revision: r1 - 2016-07-13 - 07:53:01 - DanielKho
 
Copyright © 2008-2026 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback