RE: [vhdl-200x-ft] to_dstring, dread, and dwrite

From: Bailey, Stephen <SBailey@model.com>
Date: Mon Aug 09 2004 - 20:45:37 PDT

Dave,

It is better to keep the routines in the package nearest to the declaration
of the type. In this case, why not have an additional parameter that flags
whether or not the bit_vector is interpreted as signed or unsigned (with a
default value of unsigned) for the context of the read/write routines?

-Steve Bailey

> -----Original Message-----
> From: owner-vhdl-200x-ft@eda.org
> [mailto:owner-vhdl-200x-ft@eda.org] On Behalf Of David Bishop
> Sent: Monday, August 09, 2004 8:55 AM
> To: vhdl-200x-ft@eda.org
> Subject: [vhdl-200x-ft] to_dstring, dread, and dwrite
>
> There is a basic issue with the decimal interpretation of a
> binary string.
> Is it signed or unsigned?
>
> To resolve this problem, I have moved all of the "d"
> functions into packages where a decimal value is defined for
> the vector.
> Example: If you want to do a "dwrite" of a bit_vector, you
> would need to do that with "numeric_bit_unsiged" as that is
> the only package where a decimal interpretation of a
> bit_vector is defined.
>
> To resolve some of the ambiguity with FT8 and FT5A, I would
> propose the
> following:
>
> Place the following functions in
> in standard.textio:
>
> procedure HREAD (L: inout LINE; VALUE: out BIT_VECTOR;
> GOOD : out BOOLEAN);
> procedure HREAD (L: inout LINE; VALUE: out BIT_VECTOR);
> procedure HWRITE (L: inout LINE; VALUE: in BIT_VECTOR;
> JUSTIFIED: in SIDE := RIGHT; FIELD:in WIDTH := 0);
> procedure OREAD (L: inout LINE; VALUE: out BIT_VECTOR;
> GOOD : out BOOLEAN);
> procedure OREAD (L: inout LINE; VALUE: out BIT_VECTOR);
> procedure OWRITE (L: inout LINE; VALUE: in BIT_VECTOR;
> JUSTIFIED: in SIDE := RIGHT; FIELD:in WIDTH := 0);
> alias bread is READ [line, BIT_VECTOR, boolean] ;
> alias bread is READ [line, BIT_VECTOR] ;
> alias bwrite is write [line, BIT_VECTOR, side, width] ;
> alias dread is READ [line, INTEGER, boolean] ;
> alias dread is READ [line, INTEGER] ;
> -- to_string routines
> function justify (value : string; justified : side := RIGHT;
> field : width := 0) return string;
> function to_string ( VALUE : in integer; JUSTIFIED : in
> SIDE := RIGHT;
> FIELD :in WIDTH := 0) return string ;
> alias to_dstring is to_string [integer, side, width return string];
> function to_string (VALUE : in bit_vector; JUSTIFIED : in
> SIDE := RIGHT;
> FIELD :in WIDTH := 0) return string ;
> alias to_bstring is to_string [bit_vector, side, width
> return string];
> function to_hstring (VALUE : in bit_vector; JUSTIFIED : in
> SIDE := RIGHT;
> FIELD :in WIDTH := 0) return string ;
> function to_ostring (VALUE : in bit_vector;JUSTIFIED : in
> SIDE := RIGHT;
> FIELD :in WIDTH := 0) return string ;
>
> Place the following in IEEE.std_logic_1164:
> alias bread is read [line, STD_ULOGIC, BOOLEAN] ;
> alias bread is read [line, STD_ULOGIC] ;
> alias bread is read [line, STD_ULOGIC_VECTOR, BOOLEAN] ;
> alias bread is read [line, STD_ULOGIC_VECTOR] ;
> alias bread is read [line, STD_LOGIC_VECTOR, BOOLEAN] ;
> alias bread is read [line, STD_LOGIC_VECTOR] ;
> alias bwrite is write [line, STD_ULOGIC, side, width] ;
> alias bwrite is write [line, STD_ULOGIC_VECTOR, side, width] ;
> alias bwrite is write [line, STD_LOGIC_VECTOR, side, width] ;
> procedure HREAD (L : inout LINE; VALUE : out STD_ULOGIC_VECTOR;
> GOOD : out BOOLEAN);
> procedure HREAD (L : inout LINE; VALUE : out STD_ULOGIC_VECTOR);
> procedure HWRITE (L : inout LINE; VALUE : in STD_ULOGIC_VECTOR;
> JUSTIFIED : in SIDE := RIGHT; FIELD : in WIDTH := 0);
> procedure HREAD (L : inout LINE; VALUE : out STD_LOGIC_VECTOR;
> GOOD : out BOOLEAN);
> procedure HREAD (L : inout LINE; VALUE : out STD_LOGIC_VECTOR);
> procedure HWRITE (L : inout LINE; VALUE : in STD_LOGIC_VECTOR;
> JUSTIFIED : in SIDE := RIGHT; FIELD : in WIDTH := 0);
> procedure OREAD (L : inout LINE; VALUE : out STD_ULOGIC_VECTOR;
> GOOD : out BOOLEAN);
> procedure OREAD (L : inout LINE; VALUE : out STD_ULOGIC_VECTOR);
> procedure OWRITE (L : inout LINE; VALUE : in STD_ULOGIC_VECTOR;
> JUSTIFIED : in SIDE := RIGHT; FIELD : in WIDTH := 0);
> procedure OREAD (L : inout LINE; VALUE : out STD_LOGIC_VECTOR;
> GOOD : out BOOLEAN);
> procedure OREAD (L : inout LINE; VALUE : out STD_LOGIC_VECTOR);
> procedure OWRITE (L : inout LINE; VALUE : in STD_LOGIC_VECTOR;
> JUSTIFIED : in SIDE := RIGHT; FIELD : in WIDTH := 0);
> function to_string (VALUE :in std_ulogic_vector; JUSTIFIED
> :in SIDE := RIGHT;
> FIELD :in WIDTH := 0) return string ;
> alias to_bstring is to_string [std_ulogic_vector, side,
> width return string];
> function to_hstring (VALUE:in std_ulogic_vector; JUSTIFIED
> :in SIDE := RIGHT;
> FIELD :in WIDTH := 0) return string ;
> function to_ostring (VALUE :in std_ulogic_vector;JUSTIFIED
> :in SIDE := RIGHT;
> FIELD :in WIDTH := 0) return string ;
> function to_string (VALUE :in std_logic_vector; JUSTIFIED
> :in SIDE := RIGHT;
> FIELD :in WIDTH := 0) return string ;
> alias to_bstring is to_string [std_logic_vector, side,
> width return string];
> function to_hstring (VALUE:in std_logic_vector; JUSTIFIED
> :in SIDE := RIGHT;
> FIELD :in WIDTH := 0) return string ;
> function to_ostring (VALUE :in std_logic_vector;JUSTIFIED
> :in SIDE := RIGHT;
> FIELD :in WIDTH := 0) return string ;
>
> Place the following in IEEE.numeric_std and IEEE.numeric_bit
> alias bread is read [line, UNSIGNED, BOOLEAN] ;
> alias bread is read [line, UNSIGNED] ;
> alias bread is read [line, SIGNED, BOOLEAN] ;
> alias bread is read [line, SIGNED] ;
> alias bwrite is write [line, STD_ULOGIC, side, width] ;
> alias bwrite is write [line, UNSIGNED, side, width] ;
> alias bwrite is write [line, SIGNED, side, width] ;
> procedure HREAD (L : inout LINE; VALUE : out UNSIGNED;
> GOOD : out BOOLEAN);
> procedure HREAD (L : inout LINE; VALUE : out UNSIGNED);
> procedure HWRITE (L : inout LINE; VALUE : in UNSIGNED;
> JUSTIFIED : in SIDE := RIGHT; FIELD : in WIDTH := 0);
> procedure HREAD (L : inout LINE; VALUE : out SIGNED;
> GOOD : out BOOLEAN);
> procedure HREAD (L : inout LINE; VALUE : out SIGNED);
> procedure HWRITE (L : inout LINE; VALUE : in SIGNED;
> JUSTIFIED : in SIDE := RIGHT; FIELD : in WIDTH := 0);
> procedure OREAD (L : inout LINE; VALUE : out UNSIGNED;
> GOOD : out BOOLEAN);
> procedure OREAD (L : inout LINE; VALUE : out UNSIGNED);
> procedure OWRITE (L : inout LINE; VALUE : in UNSIGNED;
> JUSTIFIED : in SIDE := RIGHT; FIELD : in WIDTH := 0);
> procedure OREAD (L : inout LINE; VALUE : out SIGNED;
> GOOD : out BOOLEAN);
> procedure OREAD (L : inout LINE; VALUE : out SIGNED);
> procedure OWRITE (L : inout LINE; VALUE : in SIGNED;
> JUSTIFIED : in SIDE := RIGHT; FIELD : in WIDTH := 0);
> function to_string (VALUE :in UNSIGNED; JUSTIFIED :in SIDE
> := RIGHT;
> FIELD :in WIDTH := 0) return string ;
> alias to_bstring is to_string [UNSIGNED, side, width
> return string];
> function to_hstring (VALUE:in UNSIGNED; JUSTIFIED :in SIDE
> := RIGHT;
> FIELD :in WIDTH := 0) return string ;
> function to_ostring (VALUE :in UNSIGNED;JUSTIFIED :in SIDE
> := RIGHT;
> FIELD :in WIDTH := 0) return string ;
> function to_string (VALUE :in SIGNED; JUSTIFIED :in SIDE := RIGHT;
> FIELD :in WIDTH := 0) return string ;
> alias to_bstring is to_string [SIGNED, side, width return string];
> function to_hstring (VALUE:in SIGNED; JUSTIFIED :in SIDE := RIGHT;
> FIELD :in WIDTH := 0) return string ;
> function to_ostring (VALUE :in SIGNED;JUSTIFIED :in SIDE := RIGHT;
> FIELD :in WIDTH := 0) return string ;
> function to_dstring (VALUE :in SIGNED; JUSTIFIED :in SIDE := RIGHT;
> FIELD :in WIDTH := 0) return string ;
> function to_dstring (VALUE :in UNSIGNED; JUSTIFIED :in
> SIDE := RIGHT;
> FIELD :in WIDTH := 0) return string ;
> procedure DREAD (L : inout LINE; VALUE : out UNSIGNED;
> GOOD : out BOOLEAN);
> procedure DREAD (L : inout LINE; VALUE : out UNSIGNED);
> procedure DWRITE (L : inout LINE; VALUE : in UNSIGNED;
> JUSTIFIED : in SIDE := RIGHT; FIELD : in WIDTH := 0);
> procedure DREAD (L : inout LINE; VALUE : out SIGNED;
> GOOD : out BOOLEAN);
> procedure DREAD (L : inout LINE; VALUE : out SIGNED);
> procedure DWRITE (L : inout LINE; VALUE : in SIGNED;
> JUSTIFIED : in SIDE := RIGHT; FIELD : in WIDTH := 0);
>
> Place the following in IEEE.numeric_unsigned and
> IEEE.numeric_bit_unsigned (with errors for negative numbers)
> procedure HREAD (L: inout LINE; VALUE: out INTEGER; GOOD
> : out BOOLEAN);
> procedure HREAD (L: inout LINE; VALUE: out INTEGER);
> procedure HWRITE (L: inout LINE; VALUE: in INTEGER;
> JUSTIFIED: in SIDE := RIGHT; FIELD:in WIDTH := 0);
> procedure OREAD (L: inout LINE; VALUE: out INTEGER; GOOD
> : out BOOLEAN);
> procedure OREAD (L: inout LINE; VALUE: out INTEGER);
> procedure OWRITE (L: inout LINE; VALUE: in INTEGER;
> JUSTIFIED: in SIDE := RIGHT; FIELD:in WIDTH := 0);
> procedure BREAD (L: inout LINE; VALUE: out INTEGER; GOOD
> : out BOOLEAN);
> procedure BREAD (L: inout LINE; VALUE: out INTEGER);
> procedure BWRITE (L: inout LINE; VALUE: in INTEGER;
> JUSTIFIED: in SIDE := RIGHT; FIELD:in WIDTH := 0);
>
> function to_dstring (VALUE :in STD_LOGIC_VECTOR; JUSTIFIED
> :in SIDE := RIGHT;
> FIELD :in WIDTH := 0) return string ;
> procedure DREAD (L : inout LINE; VALUE : out STD_LOGIC_VECTOR;
> GOOD : out BOOLEAN);
> procedure DREAD (L : inout LINE; VALUE : out STD_LOGIC_VECTOR);
> procedure DWRITE (L : inout LINE; VALUE : in STD_LOGIC_VECTOR;
> JUSTIFIED : in SIDE := RIGHT; FIELD : in WIDTH := 0);
>
> function to_dstring (VALUE :in STD_ULOGIC_VECTOR;JUSTIFIED
> :in SIDE := RIGHT;
> FIELD :in WIDTH := 0) return string ;
> procedure DREAD (L : inout LINE; VALUE : out STD_ULOGIC_VECTOR;
> GOOD : out BOOLEAN);
> procedure DREAD (L : inout LINE; VALUE : out STD_ULOGIC_VECTOR);
> procedure DWRITE (L : inout LINE; VALUE : in STD_ULOGIC_VECTOR;
> JUSTIFIED : in SIDE := RIGHT; FIELD : in WIDTH := 0);
>
>
> function to_dstring (VALUE :in BIT_VECTOR; JUSTIFIED :in
> SIDE := RIGHT;
> FIELD :in WIDTH := 0) return string ;
> procedure DREAD (L : inout LINE; VALUE : out BIT_VECTOR;
> GOOD : out BOOLEAN);
> procedure DREAD (L : inout LINE; VALUE : out BIT_VECTOR);
> procedure DWRITE (L : inout LINE; VALUE : in BIT_VECTOR;
> JUSTIFIED : in SIDE := RIGHT; FIELD : in WIDTH := 0);
>
Received on Mon Aug 9 20:45:44 2004

This archive was generated by hypermail 2.1.8 : Mon Aug 09 2004 - 20:45:50 PDT