Direkte Instanziierung

Gast #3861251
Lesenswert?

Hallo zusammen,
kann mir jemand die Vor- und Nachteile einer direkten Instanzierung 
erklären ?

Es besteht ja die Möglichkeit mit component zu arbeiten. Wie z.B.
1
--
2
-- [...]
3
component async_adder is
4
      port (
5
      ain    : in  std_ulogic_vector(3 downto 0);
6
      bin    : in  std_ulogic_vector(3 downto 0);
7
      result : out std_ulogic_vector(4 downto 0)
8
      );
9
end component;
10
-- [...]
11
--
12
--Spaeter im Code dann die Instanz:
13

14
dev1 : async_adder
15
   port map (
16
      ain    => sw_ain,
17
      bin    => sw_bin,
18
      result => data);

Jetzt besteht ja auch die Möglichkeit, über die direkte Angabe der 
entity+architecture mein Modul "async_adder" einzubinden. Wie z.B. :
1
dev1 : entity work.async_adder(rtl)
2
   port map (
3
      ain    => sw_ain,
4
      bin    => sw_bin,
5
      result => data);

Aufgrund der Übersichtlichkeit habe ich habe bis jetzt immer den 
direkten Weg verwendet.

Gruß Till
#3861299
Lesenswert?

Nachteil ist z.B. bei Xilinx Vivado, dass du dann an das direkt 
Instanziierte Modul keine Konstanten wie '0' anlegen kannst. Aus 
irgendeinem Grund kann VIVADO zumindest für die IP-Cores das nicht 
auflösen. Bei eigenen Modulen klappt es mittlerweile. Auch muss 
natürlich die Library in die die Module kompiliert werden, passen. Auch 
da wieder Negativbeispiel VIVADO: Seit neuestem muss man explizit work 
wieder neu einstellen, weil die der Meinung sind, xilinx_default_lib 
wäre doch was viel sinnvolleres.
Ich nutze das aber zumindest für die eigenen Module immer, die IP Cores 
Component Deklarationen laden dann bei mir in einem Package. Sonst hab 
ich ja schon hunderte Zeilen nur für die Deklaration z.B. vom MGT.
Gast #3862389
Lesenswert?

Christian R. schrieb:
> Liegt wohl an der
> Kompilierreihenfolge, dass er vokn den Cores nicht kennt, was an den
> Ports erwartet wird.

Ist bei ISE und PlanAhead recht ähnlich und hat m.E. folgenden 
Zusammenhang:
die direkte Instanziierung funktioniert nur bei Modulen, welche in VHDL 
vorliegen. Wenn man jedoch Module in Netzlisten hat, geht das so nicht 
mehr. Je nach Modul erstellt der IP Core Gen mal ein VHDL-Modul, mal 
eine fertige Netzliste.

Für diese Netzlisten-Module benötigt man dann eine 
Komponentenbeschreibung (im Package, in einem Wrapper-Modul oder im 
Deklarationsteil des aktuellen Moduls).

grüße

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren