Xilinx Netzliste in VHDL konvertieren

Gast #638565
Lesenswert?

hallo,

folgendes problem:
ich habe verhaltensbeschriebenen vhdl-code.
jetzt habe ich den code durch die synthese gejagt und eine netzliste 
erhalten. diese gibt mir ja jetzt strukturbeschrieben die funktionalität 
meines designs wieder.
an dieser strukturbeschreibung möchte ich jetzt etwas ändern. ich möchte 
nämlich spezielle ff's einbauen, was ich in der verhaltensbeschreibung 
logischerweise nicht machen kann.

die frage lautet jetzt: kann ich aus der netzliste auch wieder 
struktur-vhdl erzeugen? und wenn ja, wie geht das?

danke
mss
Gast #638708
Lesenswert?

"...ich möchte
nämlich spezielle ff's einbauen, was ich in der verhaltensbeschreibung
logischerweise nicht machen kann..."
Sowas kann man doch ganz einfach als Komponente instanziieren. Im 
Prinzip kann man schon aus der Edif eine VHDL-Beschreibung erzeugen, nur 
ist die wenn die Hierarchie platt gemacht wird, für den Betrachter 
erstmal völlig ohne Struktur. Da stelle ich mir schon schwer vor, die 
Stelle zu finden, wo du die FFs brauchst.
Gast #639573
Lesenswert?

Alter Schwede, ist ja wirklich Zeit mal wieder ins Forum zu posten.

1. Es ist kein Schwachsinn direkt FF in VHDL aufzunhemen, es gibt 
etliche Fälle in der das Synthese nicht die gewünschte Hardware einbaut. 
Zum Beispiel DDR-FF oder FF in die IO-PADzellen.

2. man kann die Ergebnisse nach XST, map oder par in VHDL oder in eine 
lesbare EDIFF Netzliste zurückumwandeln, nennt sich Backannotion. Das 
ist aber zur Analyse und Simulation gedacht aber nicht um diesen VHDL 
wieder zur FPGA-Synthese,-implemetierung zur verwenden. Wenns 
interessiert der soll mal das Tool netgen von Xilinx ausprobieren, oder 
mgd2vhdl sowie ngdanno.

3. Was du suchst ist die direkte Instanziierung von FF, im Librarayguide 
stehen alle die es gibt und Beispiele wie man diese in VHDL einbindet.
sieht dann etwa so aus


vor der entity (Bibliothek)
1
LIBRARY unisim;
2
USE unisim.ALL;
3
USE unisim.VCOMPONENTS.OFDDRRSE;

in der architecture vor begin (dekleration)
1
 COMPONENT OFDDRRSE
2
     PORT(
3
        Q  : OUT std_ulogic;
4
        C0 : IN  std_ulogic;
5
        C1 : IN  std_ulogic;
6
        CE : IN  std_ulogic;
7
        D0 : IN  std_ulogic;
8
        D1 : IN  std_ulogic;
9
        R  : IN  std_ulogic;
10
        S  : IN  std_ulogic);
11
  END COMPONENT;
12
  ATTRIBUTE box_type OF  OFDDRRSE: COMPONENT IS "PRIMITIVE";
13

14

15
--synopsys translate_off
16
  FOR ALL : OFDDRRSE USE ENTITY unisim.OFDDRRSE;
17
--synopsys translate_on

nach architecture (instanziierung)
1
  OFDDRRSE_inst : OFDDRRSE
2
     PORT MAP (
3
        Q  => resetgate_DDRFF,                        -- Data output (connect directly to top-level port)
4
        C0 => clk_i,                       -- 0 degree clock input
5
        C1 => inv_clk,                       -- 180 degree clock input
6
        CE => '1',                       -- Clock enable input
7
        D0 => all_readout_signals(E_RG_POS),                       -- Posedge data input
8
        D1 => all_readout_signals(E_RG_NEG),                       -- Negedge data input
9
        R  => '0',                        -- Synchronous reset input
10
        S  => '0'                         -- Synchronous preset input
11
        );
Gast #640088
Lesenswert?

hallo,
gut dann erläutere ich mal mein problem:
ich habe ein prozessor verhaltensbeschrieben bekommen. nicht 
strukturbeschrieben.

@Autor: Michael Niegl (bigmike47)
natürlich kann man in vhdl gleich die struktur beschreiben und dadurch 
die benötigten ff einbauen. geht aber hier nicht, da ich einen gegebenen 
prozi komplett neu schreiben müsste -> neu schreiben, simulieren ...


nun das ganze dient um einen scanpfad nachträglich in die schaltung 
einzubauen. die mir dafür zur verfügung stehenden tools erlauben mir das 
jedoch nur mit struktur-vhdl.
da scan-pfade in der regel irregulär eingefügt werden, ist das 
unstrukturierte und geflattete design nach der umwandlung 
(netzliste->vhdl) nicht problematisch.

ich werd nochmal das ise-tutorial wälzen, ich glaub mit ngdbuild geht 
das.
ich poste dann mein ergebnis

bye
mss
Gast #640133
Lesenswert?

ok, habs jetzt herausgefunden, mit

  netgen -ofmt vhdl <*.ngc>

kann man die netzliste *.ngc in vhdl-code umwandeln. instanziert werden 
komponenten der library unisim

  netgen -ofmt vhdl <*.ngd>

wandelt ebenfalls netzlisten in vhdl-code, verwendet aber komponenten 
der library simprim


bye
mss
Gast #640831
Lesenswert?

Scanpfad einfügen? ... ersetzt du die FF durch ein Paar FF-Shadow FF? 
Also
in der netzliste die "normalen FF" durch eigene FF-Konstrukte?
Manche Synthesetools (cadance) können das in der mapping phase.

Erinnert mich irgendwie an eine uralte Diplomarbeit ...
Gast #640952
Lesenswert?

mss wrote:
> hallo,

> nun das ganze dient um einen scanpfad nachträglich in die schaltung
> einzubauen. die mir dafür zur verfügung stehenden tools erlauben mir das
> jedoch nur mit struktur-vhdl.
> da scan-pfade in der regel irregulär eingefügt werden, ist das
> unstrukturierte und geflattete design nach der umwandlung
> (netzliste->vhdl) nicht problematisch.
>
> ich werd nochmal das ise-tutorial wälzen, ich glaub mit ngdbuild geht
> das.

Zum scanpfad einfügen musst du nicht über backannotiertes vhdl gehen (zu 
vermeiden, da zweimal Synthese). Besser du gehts über eine netzliste,
da sieht in etwa so aus:

-Synthese
-umwandlung in EDIFF netzliste (ngc2edif (?))
-in der netzliste bei den Referenzen zu den FF den Namen der FF in den 
Namen Deiner scanpfad-FF ändern
-Eine netzliste für deinen scanpfad und Scanpath-FF per Hand/script 
schreiben. In diesen darf es nur Referenzen zu FPGA-primitiven geben.
-ngdbuild "verheiratet" alle Netzlisten, dann gehts wie üblich mit map, 
par weiter.

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