RE: EXTERNAL: Re: [vhdl-200x] VHDL 2008 : std_logic_textio package

From: Degroat, Joanne <>
Date: Fri Sep 20 2013 - 11:49:49 PDT
Hi all,
    We changed emails here at OSU so my posts were bouncing.

I have this to contribute.   I will only repost the latest as it is the most relevant.

> Just a thought.


> In the early days and today the default for all design entities was/is


> LIBRARY std, work;

> USE std.standard.ALL;


> But in those early days when this was specified there were no other libraries and the only other package in STD was textio.


> Maybe it is time to make the default for all design units


> LIBRARY, std,  work,   IEEE;     (and another???)


> USE std.standard.ALL;   IEEE.std_logic_1164.ALL;    (others that are commonly used????)


> And even possibly others.


> This is not backward compatible for the simulators, i.e., some new code would not work on older simulators.  To be able to do that the code would need the library clause

> and USE statements to be explicit for older simulators.   But all existing  code would work with the new simulator systems.


> Joanne

From: [] On Behalf Of Jones, Andy D
Sent: Thursday, September 19, 2013 4:59 PM
Subject: RE: EXTERNAL: Re: [vhdl-200x] VHDL 2008 : std_logic_textio package

A reference to IEEE packages using an IEEE prefix is consistent with other IEEE packages (e.g. numeric_std_unsigned & numeric_std), which also declare library IEEE.

However, I believe this is counterproductive. In general, units that reference packages expected to reside in the unit's own library should reference those packages with a work prefix. This provides portability for testing/renaming libraries (e.g. ieee_proposed), to avoid duplicate library names, with no changes to the library files themselves.

This is what 'work' was created for in the first place! The units themselves should contain no dependency on what their own library is called.

Therefore, I suggest changing all IEEE packages that reference IEEE packages to reference those packages using the work prefix, instead of the IEEE prefix, and to remove the "library IEEE;" statement.

Andy D Jones
Electrical Engineering
Lockheed Martin Missiles and Fire Control
Dallas TX

From:<> [] On Behalf Of David Koontz
Sent: Saturday, September 14, 2013 6:35 PM
Subject: EXTERNAL: Re: [vhdl-200x] VHDL 2008 : std_logic_textio package

On 15 Sep 2013, at 8:16 AM, chuck and teril swart <<>> wrote:

In my opinion, the best solution, and the one most compatible with existing implementations is to
change the default library declarations in 13.2 to read something like:
"Every design unit except a context declaration and package STANDARD is assumed to contain the following implicit context items as part of its context clause:
library STD, WORK, IEEE; use STD.STANDARD.all;"
Are there problems with this solution? Maybe. First, will package std_logic_1164 compile? Its the first package in library IEEE and maybe library IEEE doesn't exist until after this package compiles. I don't think that this is a real problem.

As long as you didn't also include implicit use clauses for packages found in library IEEE,  that would work.  ( "a)  A potentially visible declaration is not made directly visible if the place considered is within the immediate scope of a homograph of the declaration", preventing things like changing type and subtype declarations as done for std_logic_vector in 2008, possibly precluding developing new versions of packages by other than tool vendors).

Personally I see this as a defect in the description provided by the std_logic_textio package declaration introduced as the result of the 2008 changes to package std_logic_1164, specifically adding various flavors of READ, WRITE, HREAD, HWRITE, OREAD and OWRITE instead of placing those in the  package std_logic_textio.

std_logic_textio is simply missing a library clause for library IEEE.  The package declaration for std_logic_textio has no meaning other than providing backward compatibility and should have contained the library clause making library logical name IEEE visible.

Adding additional an additional implicit context item seems the wrong solution. It defeats the purpose in having the library logical name IEEE made visible if there are no dependencies on it being visible other than for purposes of avoiding correcting the text of the std_logic_textio package declaration.  You could as easily argue that the packages found in library IEEE should be moved to library STD.


This message has been scanned for viruses and
dangerous content by MailScanner<>, and is
believed to be clean.

This message has been scanned for viruses and
dangerous content by MailScanner<>, and is
believed to be clean.

This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.
Received on Fri Sep 20 11:50:23 2013

This archive was generated by hypermail 2.1.8 : Fri Sep 20 2013 - 11:50:55 PDT