2016-05-02 24 views
1

Ich versuche ein "dynamisches" 2D-Array zu erstellen, das ich mit Generics in meiner Entity festlegen kann.Illegale Syntax für Subtyp-Anzeige VHDL200X

folgte ich dem Beispiel in https://s3.amazonaws.com/verificationhorizons.verificationacademy.com/volume-8_issue-3/articles/stream/vhdl-2008-why-it-matters_vh-v8-i3.pdf auf Seite 32.

Die Erklärung meiner Art innerhalb der Verpackung (TypeDeclarations):

library ieee; 
use ieee.std_logic_1164.all; 
use ieee.numeric_std.all; 

package TypeDeclarations is 

-- Type BusArray ----------------------------------------------------- 
-- Can be used by: DArray((Y - 1) downto 0)((X - 1) downto 0);  -- 
                    -- 
    type TArray is array (natural range <>) of std_logic_vector; -- 
                    -- 
---------------------------------------------------------------------- 
end package; 

meine Einheit:

-- Libraries 
library ieee; 
use ieee.std_logic_1164.all; 

-- Own libraries 
use work.TypeDeclarations.all; 

entity DynamicRegisterSet is 
    generic (
     INPUT_DATAWIDTH : integer := 1; 
     OUTPUT_DATAWIDTH : integer := 8; 
     N_REGISTERS  : integer := 1); 
    port (
     MCLK : in std_logic := '0'; 
     WE : in std_logic := '0'; 

     -- input data 
     DATA : in std_logic_vector((INPUT_DATAWIDTH-1) downto 0) := (others => '0'); 
     SEL : in integer range 0 to (INPUT_DATAWIDTH-1) := 0; 

     -- in/output data (register set) 
     REGISTERSET : inout TArray((N_REGISTERS-1) downto 0)((OUTPUT_DATAWIDTH-1) downto 0) := (others => (others => '0'))); 
end DynamicRegisterSet; 

Dies ist Das erste Mal, dass ich den aktualisierten Compiler (VHDL200X) verwende, glaube ich nicht, dass ich das falsch mache, aber sonst würde ich diese Nachricht nicht bekommen:

VHDL \ CommonBlocks \ DynamicRegisterSet \ Sources \ DynamicRegisterSet.vhd“Zeile 25: Illegale Syntax für den Subtyp Indikation

jemand irgendwelche Vorschläge? Ich würde es sehr schätzen, danke!

+0

Es sind nicht 49 Zeilen Code geschrieben ... –

+0

Zeilen davor sind Kommentare, es gibt den Fehler bei REGISTERSET: das ist Zeile 49 – MVT

+0

Was Werkzeug verwendest du? – Paebbels

Antwort

1

Xilinx ISE 14,7 hat keine VHDL-2008 Unterstützung ...

Sie eine Hand voll von VHDL-2002 unterstützen/2008-Feature, aber ungezwungene Array-Elemente werden nicht unterstützt.

Vivado hat die VHDL-2008-Unterstützung in 2016.1 hinzugefügt und als Standard festgelegt. Aber soweit ich sehen kann, ist es keine vollständige VHDL-2008-Unterstützung.

Es gibt ein Xilinx XST-Synthese-Benutzerhandbuch, das diese Funktionen im Abschnitt VHDL auflistet. (Sorry ich habe nicht die UG-Nummer auf meinem Handy.)

+0

Es ist okay, Danke für die Unterstützung, ich bin nur verblüfft. Ich dachte, dass diese Änderung so offiziell und so klein war, dass ich dachte, dass sie vollständig implementiert wurde, um VHDL-Designs kompatibel zu halten. Ich glaube, ich habe mich geirrt :). Wissen Sie, dass dies auch bei anderen FPGA-Herstellern der Fall ist? – MVT

+1

Die Unterstützung von 2008 in Altera Quartus Prime und Lattice Diamond ist besser. Ich habe keine Informationen über Symplify, aber ich vermute, dass es immer besser wird. – Paebbels

+0

Ich verwende jetzt Gitterdiamant, aber ich habe jetzt den gleichen Fehler, wenn ich versuche, einen Prüfstand zu generieren: p ist noch nicht vorbei – MVT