Take the 2-minute tour ×
Electrical Engineering Stack Exchange is a question and answer site for electronics and electrical engineering professionals, students, and enthusiasts. It's 100% free, no registration required.

On various places across the net, I read that (some) synthesis tools do not respect VHDL libraries. These tools just throw all entities and packages into a single namespace, so that you cannot have mylib.someEntity and yourLib.someEntity in the same project. I know that Altera Quartus used to have that problem last time I checked (but that was a while ago). I'm afraid that some of the info on usenet archives might be outdated, so I'm looking for up-to-date info.

I also believe most simulators support libraries today.

My question: Which synthesis tools do support VHDL libraries and which don't? If there are any simulators that do not support libraries, I'd also like to hear that.

Can you please also mention the version numbers of the tools, for future reference?

share|improve this question
    
Good question! To flaggers: This post is not really a candidate for community wiki. See this blog post: The future of community wiki for more information. As it stands, Chiggs has done a good job of answering the question in one post. If more tools need to be added later, this can be done via suggested edits, and we'll revisit the possibility of CW on Chiggs' answer then. –  Kevin Vermeer Sep 9 '11 at 13:39
add comment

3 Answers

up vote 4 down vote accepted

I use the following tools which all have full library support:

  • Riviera-PRO (from at least version 2006.02 onwards)
  • Xilinx ISE (from at least version 10 onwards)
  • Quartus (from at least version 10.0 onwards; Two or more entities with the same name cannot be used, however, only packages)
  • Synplify (from at least version 9.0 onwards)

The only caveat is that the XST tool in the Xilinx toolchain is incapable of performing automatic file ordering on projects where entity names exist in multiple libraries (it ungraciously gets stuck looping forever trying to resolve dependencies).

share|improve this answer
    
+1 thanks for adding these 4 synthesis tools –  Philippe May 24 '11 at 18:41
add comment

Quartus uses a single library by default, but different libraries can be used if required:

http://quartushelp.altera.com/9.1/mergedProjects/hdl/vhdl/vhdl_pro_libraries.htm

Two or more entities with the same name cannot be used, however, only packages.

share|improve this answer
    
I don't understand. Are you saying that Quartus does support different libraries? Do you have a pointer to their documentation? -- thanks –  Philippe May 16 '11 at 19:32
    
I said that they can be used if required! It isn't the default behaviour, though. –  Leon Heller May 16 '11 at 20:22
    
+1 Thanks for the link, @Leon. Since entities cannot have the same name, I'd qualify this as "almost" supports libraries. –  Philippe May 16 '11 at 21:10
add comment

Synplify E2010.09-SP1-1 is OK: you can tell it what library to compile each file into in the project file

Sample code follows for others to try (not my normal coding style, I'd normally not use positional mapping, but in this simple situation it looked a bit cleaner).

The gate-view shows two LUTs one with an AND and one with an XOR.

lib1.vhd

library ieee;
use ieee.std_logic_1164.all;
entity test is
    port (a, b : in  std_logic;
          o    : out std_logic);
end entity test;
architecture a1 of test is
begin
    o <= a and b;
end architecture a1;

lib2.vhd

library ieee;
use ieee.std_logic_1164.all;
entity test is
    port (
        c, d : in  std_logic;
        o    : out std_logic);
end entity test;
architecture a1 of test is
begin
    o <= c xor d;
end architecture a1;

top.vhd

library ieee;
use ieee.std_logic_1164.all;

library lib1;
library lib2;

entity top is
    port (
        a, b, c, d : in std_logic;
        o1, o2     : out std_logic);
end entity top;

architecture a1 of top is
begin  -- architecture a1
    test_1: entity lib1.test port map (a, b, o1);
    test_2: entity lib2.test port map (c, d, o2);
end architecture a1;
share|improve this answer
    
+1 Thanks Martin. Symplify passes the test! –  Philippe May 17 '11 at 12:21
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.