An verschiedenen Stellen im Netz habe ich gelesen, dass (einige) Synthese-Tools VHDL-Bibliotheken nicht respektieren. Diese Tools werfen einfach alle Entitäten und Pakete in einen einzigen Namespace, sodass Sie mylib.someEntity
und nicht yourLib.someEntity
im selben Projekt haben können. Ich weiß, dass Altera Quartus das letzte Mal, als ich nachgesehen habe, dieses Problem hatte (aber das ist schon eine Weile her). Ich befürchte, dass einige der Informationen zu Usenet-Archiven veraltet sein könnten, daher suche ich nach aktuellen Informationen.
Ich glaube auch, dass die meisten Simulatoren heute Bibliotheken unterstützen.
Meine Frage : Welche Synthesewerkzeuge unterstützen VHDL-Bibliotheken und welche nicht? Wenn es Simulatoren gibt, die Bibliotheken nicht unterstützen, würde ich das auch gerne hören.
Können Sie bitte auch die Versionsnummern der Tools für zukünftige Referenzzwecke angeben?
Ich verwende die folgenden Tools, die alle volle Bibliotheksunterstützung bieten:
Der einzige Vorbehalt besteht darin, dass das XST -Tool in der Xilinx-Toolchain nicht in der Lage ist, eine automatische Dateisortierung für Projekte durchzuführen, bei denen Entitätsnamen in mehreren Bibliotheken vorhanden sind (es bleibt ungnädigerweise in einer ewigen Schleife hängen, wenn es versucht, Abhängigkeiten aufzulösen).
Quartus verwendet standardmäßig eine einzige Bibliothek, aber bei Bedarf können verschiedene Bibliotheken verwendet werden:
http://quartushelp.altera.com/9.1/mergedProjects/hdl/vhdl/vhdl_pro_libraries.htm
Zwei oder mehr Entitäten mit demselben Namen können nicht verwendet werden, jedoch nur Pakete.
Synplify E2010.09-SP1-1 ist in Ordnung: Sie können ihm mitteilen, in welche Bibliothek jede Datei in der Projektdatei kompiliert werden soll
Es folgt Beispielcode, den andere ausprobieren können (nicht mein normaler Codierungsstil, ich würde normalerweise keine Positionszuordnung verwenden, aber in dieser einfachen Situation sah es etwas sauberer aus).
Die Gate-Ansicht zeigt zwei LUTs, eine mit einem UND und eine mit einem 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;
oben.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;
Kevin Vermeer