www.mikrocontroller.net

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


Autor: mss (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Kest (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welche Tools stehen Dir zur Verfügung?

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

Kest

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

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

Autor: T.M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Michael Niegl (bigmike47)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Fpga Kuechle (fpgakuechle) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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)
LIBRARY unisim;
USE unisim.ALL;
USE unisim.VCOMPONENTS.OFDDRRSE;

in der architecture vor begin (dekleration)
 COMPONENT OFDDRRSE
     PORT(
        Q  : OUT std_ulogic;
        C0 : IN  std_ulogic;
        C1 : IN  std_ulogic;
        CE : IN  std_ulogic;
        D0 : IN  std_ulogic;
        D1 : IN  std_ulogic;
        R  : IN  std_ulogic;
        S  : IN  std_ulogic);
  END COMPONENT;
  ATTRIBUTE box_type OF  OFDDRRSE: COMPONENT IS "PRIMITIVE";


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

nach architecture (instanziierung)
  OFDDRRSE_inst : OFDDRRSE
     PORT MAP (
        Q  => resetgate_DDRFF,                        -- Data output (connect directly to top-level port)
        C0 => clk_i,                       -- 0 degree clock input
        C1 => inv_clk,                       -- 180 degree clock input
        CE => '1',                       -- Clock enable input
        D0 => all_readout_signals(E_RG_POS),                       -- Posedge data input
        D1 => all_readout_signals(E_RG_NEG),                       -- Negedge data input
        R  => '0',                        -- Synchronous reset input
        S  => '0'                         -- Synchronous preset input
        );

Autor: mss (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: mss (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Fpga Kuechle (fpgakuechle) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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 ...

Autor: Fpga Kuechle (fpgakuechle) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.