On 07/07/16 14:50, Brian Drummond wrote:
One project I am working on, has apparently been designed with
different compilation units written to different VHDL language
standards, and I guess this is inevitable on large projects developed
over time, reusing old code.

GHDL allows compilation of each source file to its appropriate
standard, and these compilations are recorded in the appropriate "obj-
std.cf" files.

However at elaboration, what are the rules for elaborating a unit
compiled with one standard, but whose components are compiled to
another?

It it worth than that: even IEEE packages are different.

Is this illegal as per the LRM?

The LRM doesn't tell anything about this, as there is only one 'valid'
LRM version: the last one.


Some commercial simulators seem to allow it.

If I compile a unit with the default (93) and recompile it with (08) it
is in both .cf files. The older object file has presumably been
replaced, so an attempt to elaborate the unit with -93 should fail
timestamp/hash checks)

ghdl -e --std=xx allows me to select either for elaboration, but any
required units that are only compiled to another standard, are simply
reported as missing, instead of instantiated after searching other
libraries.

Are there incompatibilities in the object files that would prevent an
elaboration mixing versions?

Are there any use cases for mixing versions to allow reuse of older
code?

I'm not asking for an "enhancement" to ghdl to allow this, just
exploring the space. (And for the current project, building everything
for VHDL-2008 simply works).

Using the latest version is the right way to do it (at least with ghdl).

Tristan.


_______________________________________________
Ghdl-discuss mailing list
Ghdl-discuss@gna.org
https://mail.gna.org/listinfo/ghdl-discuss

Reply via email to