Welche Synthesewerkzeuge unterstützen VHDL-Bibliotheken?

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.someEntityund nicht yourLib.someEntityim 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?

Gute Frage! Hinweisgeber: Dieser Beitrag ist nicht wirklich ein Kandidat für das Community-Wiki. Weitere Informationen finden Sie in diesem Blogbeitrag: Die Zukunft des Community-Wikis . So wie es aussieht, hat Chiggs die Frage in einem Beitrag gut beantwortet. Wenn später weitere Tools hinzugefügt werden müssen, kann dies über vorgeschlagene Änderungen erfolgen, und wir werden dann die Möglichkeit von CW auf Chiggs 'Antwort erneut prüfen.

Antworten (3)

Ich verwende die folgenden Tools, die alle volle Bibliotheksunterstützung bieten:

  • Riviera-PRO (ab Version 2006.02)
  • Xilinx ISE (ab Version 10)
  • Quartus (ab Version 10.0; zwei oder mehr Entitäten mit gleichem Namen können nicht verwendet werden, jedoch nur Pakete)
  • Synplify (ab Version 9.0)

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.

Ich verstehe nicht. Wollen Sie damit sagen, dass Quartus verschiedene Bibliotheken unterstützt ? Hast du einen Hinweis auf ihre Dokumentation? -- Danke
Ich sagte, dass sie bei Bedarf verwendet werden können! Es ist jedoch nicht das Standardverhalten.
+1 Danke für den Link, @Leon. Da Entitäten nicht denselben Namen haben können, würde ich dies als "fast" unterstützte Bibliotheken bezeichnen.

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;