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
Welche Tools stehen Dir zur Verfügung? Soweit ich weiß, in freien (WebPack und Co) gibt es sowas nicht. Kest
Das klingt nach "von hinten durch die Brust ins Auge". Kannst du dein Problem mal etwas ausführlicher schildern?
"...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.
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.
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 | );
|
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
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
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 ...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.