Forum: FPGA, VHDL & Co. Xilinx Netzliste in VHDL konvertieren


von mss (Gast)


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

von Kest (Gast)


Lesenswert?

Welche Tools stehen Dir zur Verfügung?

Soweit ich weiß, in freien (WebPack und Co) gibt es sowas nicht.

Kest

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Das klingt nach "von hinten durch die Brust ins Auge". Kannst du dein 
Problem mal etwas ausführlicher schildern?

von T.M. (Gast)


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.

von Michael N. (bigmike47)


Lesenswert?

meiner meinung nach ein vollkommen schwachsinniges vorhaben. ich wuesste 
im moment keinen einzigen fall, wo man vhdl-code nicht gleich so 
schreiben koennte, dass an der gewuenschten stelle ein FF instanziert 
wird.

von Fpgakuechle K. (Gast)


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
        );

von mss (Gast)


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

von mss (Gast)


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

von Fpgakuechle K. (Gast)


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 ...

von Fpgakuechle K. (Gast)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.