¿Qué herramientas de síntesis admiten bibliotecas VHDL?

6

En varios lugares de la red, leí que (algunas) herramientas de síntesis no respetan las bibliotecas VHDL. Estas herramientas simplemente lanzan todas las entidades y paquetes en un solo espacio de nombres, por lo que no puede tener mylib.someEntity y yourLib.someEntity en el mismo proyecto. Sé que Altera Quartus solía tener ese problema la última vez que lo revisé (pero eso fue hace un tiempo). Me temo que parte de la información sobre los archivos de usenet puede estar desactualizada, por lo que estoy buscando información actualizada.

También creo que la mayoría de los simuladores son compatibles con las bibliotecas de hoy.

Mi pregunta : ¿Qué herramientas de síntesis admiten bibliotecas VHDL y cuáles no? Si hay simuladores que no admiten bibliotecas, también me gustaría escuchar eso.

¿Puede mencionar también los números de versión de las herramientas, para futuras consultas?

    
pregunta Philippe

3 respuestas

4

Uso las siguientes herramientas, todas con soporte completo de biblioteca:

  • Riviera-PRO (desde al menos la versión 2006.02 en adelante)
  • Xilinx ISE (desde al menos la versión 10 en adelante)
  • Quartus (desde al menos la versión 10.0 en adelante; no se pueden usar dos o más entidades con el mismo nombre, sin embargo, solo paquetes)
  • Synplify (desde al menos la versión 9.0 en adelante)

La única advertencia es que la herramienta XST en la cadena de herramientas Xilinx es incapaz de realizar el ordenamiento automático de archivos en proyectos donde existen nombres de entidades en varias bibliotecas (sin gracia se atasca en bucle siempre tratando de resolver dependencias) .

    
respondido por el Chiggs
2

Quartus usa una sola biblioteca de forma predeterminada, pero se pueden usar diferentes bibliotecas si es necesario:

enlace

Sin embargo, no se pueden usar dos o más entidades con el mismo nombre, solo paquetes.

    
respondido por el Leon Heller
1

Synplify E2010.09-SP1-1 está bien: puede indicarle en qué biblioteca debe compilar cada archivo en el archivo de proyecto

A continuación se muestra un código de muestra para que otros lo intenten (no es mi estilo de codificación normal, normalmente no uso el mapeo posicional, pero en esta simple situación se veía un poco más limpio).

La vista de la puerta muestra dos LUT, una con un AND y una con un 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;
    
respondido por el Martin Thompson

Lea otras preguntas en las etiquetas