Forum: FPGA, VHDL & Co. Xilinx Synthese nur bestimmte Gatter ?


von Charakterlos (Gast)


Lesenswert?

Hallöchen allerseits,

kann man Xilinx ISE "beibringen" nur bestimmte Logik zur 
realisierung/implementierung einer VHDL zu verwenden ?

So, dass er z.B. nur NAND2 (inter LUT's, in der RTL dann auch sichtbar 
gemacht) Gatter verwendet ?

Ich benötige das, um eben den Komplexitätsgrad mehrer VHDL's zu 
normieren.
Was ich nicht benötige sind Gegenvorschläge oder andere Lösungsansätze 
für das Problem für diejenigen unter euch, die sich gerne Gedanken 
machen ;)

Also, kann man das Xilinx ISE beibringen, wenn ja wie ?

Dankeschön!

von Antti Lukats (Gast)


Lesenswert?

nein

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> inter LUT's
Wie meinen?

> Also, kann man das Xilinx ISE beibringen, wenn ja wie ?
Ich denke nicht, denn sogar wenn du die Gatter manuell instantiierst und 
von Hand verdrahtest, wird die Funktion soweit optimiert, dass eine 
Funktion mit 4 Eingängen auf 1 Lut geht. Dafür sind die Tools optimiert, 
das können sie gut.

> Ich benötige das, um eben den Komplexitätsgrad mehrer VHDL's zu
> normieren.
VHDL beschreibt ein System, in VHDL kommt nirgends ein NAND2 vor (*). 
Was willst du da normieren?

(*) es sein denn explizit in der Beschreibung
1
  a <= not(b and c);

von Ottmar (Gast)


Lesenswert?

Nein,
mir ist überhaupt kein FPGA synthese tool bekannt welches sich so fein 
steuern liese. ASIC synthese tools wie z.B. DC können dies aber.

von Panda panik (Gast)


Lesenswert?

>> Also, kann man das Xilinx ISE beibringen, wenn ja wie ?
>Ich denke nicht, denn sogar wenn du die Gatter manuell instantiierst und
>von Hand verdrahtest, wird die Funktion soweit optimiert, dass eine
>Funktion mit 4 Eingängen auf 1 Lut geht. Dafür sind die Tools optimiert,
>das können sie gut.


Optimierungen sind abschaltbar, manuelle Instantiierung wären somit ein 
Weg. Allerdings möchtest du nicht wirklich eine FSM per Hand mit 2er 
Gattern aufbauen.

von Panda panik (Gast)


Lesenswert?

<Ich benötige das, um eben den Komplexitätsgrad mehrer VHDL's zu
<normieren.


Klingt interessant, worum gehts dabei? Komplexitätsgrad sag mir in 
diesem Zusammenhang garnichts.


MfG

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Flächenkomplexität, Gatter(Anzahl)komplexität man kann alles was man 
will als Komplexitätsmaß nehmen.

z.B. kannst du jede beliebig komplexe Funktion auf Konstante Laufzeit 
bringen: Durch eine Look-Up Tabelle. Die wird nur u.U. dan irsinnig viel 
SPeicherplatz verbrauchen. Deshalb geht (meistens) auch der benötigte 
(Speicher)Platz in die Komplexitätsbetrachtung ein.

Da ein FPGA eh keine "Gatter" in dem Sinne hat (mal abgesehen von den 
Spezialitäten wie MUX5/6 etc) sondern belibiges durch die LUT 
implementiert wird wirds schwer.

Ich hatte es aber so verstanden, das einfach im RTL viewer NANDs 
auftauchen sollen, das ließe sich ggf durch manuelle Sachen erzwingen, 
dann kann mans aber auch gleich per Hand "malen".

von Klaus F. (kfalser)


Lesenswert?

> Also, kann man das Xilinx ISE beibringen, wenn ja wie ?

Warum sollte ISE überhaupt sowas implementiert haben?
ISE ist dazu gedacht, ein VHDL Design in deren Architektur (LUTs, 
Slices, IOs) umzusetzen.
Es ist schon schwierig genug dies möglichst optimal und fehlerfrei zu 
erreichen.
Warum sollte Xilinx auch nur eine Minute dafür verschwenden, ein VHDL 
Design in irgend etwas zu transformieren, das für sie keinen Zweck 
erfüllt?

von Charakterlos (Gast)


Lesenswert?

Erst einmal Danke für die zahlreichen Antworten.

@Lothar Miller
Ich will quasie, dass er die LUT's nur mit der bool'schen Funktion eines 
NAND2 füttert. Und erstmal mit nichts anderem. (Wenn das gelingt, dann 
wäre es mir eine Freude statt nur NAND2 auch NOR2 oder andere Gatter zu 
verwenden, die ich ihm vorgeben kann).

@Panda panik
"Optimierungen sind abschaltbar, manuelle Instantiierung wären somit ein
Weg. Allerdings möchtest du nicht wirklich eine FSM per Hand mit 2er
Gattern aufbauen."
Nein will ich nicht. Ich will ja gerade, dass XilinxISE mir die RTL nur 
mit NAND2 ausgibt. Wenn ich das alles vorher per Hand machen würde, 
bräuchte ich ja XilinxISE nicht ;)

"Klingt interessant, worum gehts dabei? Komplexitätsgrad sag mir in
diesem Zusammenhang garnichts."
Man kann ja bekannterweise jede logische Funktion mit NAND2 oder NOR2 
Gattern umformen, sodass nur ebensolche zum Einsatz kommen. Das dient 
dazu, einen Vergleich zu ermöglichen.
VHDL 1 umgeformt hat 7623 NAND2
VHDL 2 umgeformt hat 7213 NAND2
Man kann also erwarten, dass VHDL 2 in Bezug auf AREA weniger Platz 
brauchen würde, wenn man diese auf einen Wafer ätzt. Es geht also rein 
um einen Vergleich der VHDL's, und nicht die Portierbarkeit auf einen 
FPGA.

@Läubi ..
"Ich hatte es aber so verstanden, das einfach im RTL viewer NANDs
auftauchen sollen, das ließe sich ggf durch manuelle Sachen erzwingen,
dann kann mans aber auch gleich per Hand "malen""
Joa, ich suche halt nach einem Weg, mir die Handmalerrei zu sparen. Wenn 
man XilinxISE dazu bringen kann, warum denn nicht versuchen ?
evtl. kann es ja auch Altera Quartus ?

@Klaus Falser
"Warum sollte Xilinx auch nur eine Minute dafür verschwenden, ein VHDL
Design in irgend etwas zu transformieren, das für sie keinen Zweck
erfüllt?"
Da haben Sie voll und ganz recht. Dennoch besteht ja die Möglichkeit auf 
Einflussnahme auf das Werkzeug. Ob es jemanden hier vielleicht bekannt 
ist mit entsprechendem TCL Code einen Teil der Library auszublenden, so 
dass XilinxISE nur noch auf NAND2 "zugreifen" kann ? Ich habe dazu 
leider keinen Weg gefunden.

---
Und natürlich ist die Bedingung, dass es sich bei der VHDL 
ausschließlich nur um kombinatorische Logik handelt (ohne Latche und 
Clock-Netze).

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> ...  wenn man diese auf einen Wafer ätzt. Es geht also rein um
> einen Vergleich der VHDL's, und nicht die Portierbarkeit auf einen FPGA.
Dann wird es wohl ein (höherpreisiges) ASIC-Tool sein müssen (wie Ottmar 
schon trefflich bemerkte).
Denn Xilinx will an sich nichts anderes, als ein VHDL-Design auf 
Xilinx-FPGAs (und idealerweise ausschliesslich auf Xilinx-FPGAs) zu 
implementieren.

von Olle Dohle (Gast)


Lesenswert?

<"Klingt interessant, worum gehts dabei? Komplexitätsgrad sag mir in
<diesem Zusammenhang garnichts."
<Man kann ja bekannterweise jede logische Funktion mit NAND2 oder NOR2
<Gattern umformen, sodass nur ebensolche zum Einsatz kommen. Das dient
<dazu, einen Vergleich zu ermöglichen.
<VHDL 1 umgeformt hat 7623 NAND2
<VHDL 2 umgeformt hat 7213 NAND2
<Man kann also erwarten, dass VHDL 2 in Bezug auf AREA weniger Platz
<brauchen würde, wenn man diese auf einen Wafer ätzt. Es geht also rein
<um einen Vergleich der VHDL's, und nicht die Portierbarkeit auf einen
<FPGA.

Vergleiche nur auf Area sind aber reichlich zweckfrei, wenn man bedenkt 
das kleine designs meist langsamer sind. Man denke da nur an die 
Pipelines moderner CPU's. Ohne Pipelines deutlich kleiner aber sicher 
nicht GHz-tauglich.

Und wenn es dir nur um größer oder kleiner geht und nicht um den exakten 
Anteil an NAND-Gattern, dann zähl doch die LUT's. Weniger LUT's bedeuten 
in einem bestimmten Rahmen eben weniger Kombinatorik und entsprächen 
damit weniger NAND's. Und es gibt (gab?) auch FPGA mit anderen als LUT 
Strukturen (Actel Antifuse?). Vielleicht findest Du dort etwas, was sich 
besser auf die Gatterequivalente umrechnen lässt.

von bko (Gast)


Lesenswert?

<"Klingt interessant, worum gehts dabei? Komplexitätsgrad sag mir in
<diesem Zusammenhang garnichts."
<Man kann ja bekannterweise jede logische Funktion mit NAND2 oder NOR2
<Gattern umformen, sodass nur ebensolche zum Einsatz kommen. Das dient
<dazu, einen Vergleich zu ermöglichen.
<VHDL 1 umgeformt hat 7623 NAND2
<VHDL 2 umgeformt hat 7213 NAND2
<Man kann also erwarten, dass VHDL 2 in Bezug auf AREA weniger Platz
<brauchen würde, wenn man diese auf einen Wafer ätzt. Es geht also rein
<um einen Vergleich der VHDL's, und nicht die Portierbarkeit auf einen
<FPGA.

Ahhh ich verstehe, es geht also um Asics, dort allerdings werden
Flächenschätzungen und vergleiche tatsächlich in vielfachen
eines NAND2-Gatters (4 MOS-Transistor Zelle)
http://www.vlsitechnology.org/html/cells/vxlib013/nd2.html
gemacht:

z.B: ein NAND mit 2 Eingängen hat die Fläche X, eine Flipflop
ist ca. 6,2 mal größer, ein MUX dann 2.1 mal usw...
Die Synthese-Tools von zB. Cadence oder Synopsys geben tatsächlich
die Fläche eines Designs in vielfachen von NAND2-Gattern aus.
Das heißt aber nicht das diese Tools nur NAND2 Gatter verwenden, nein
sie zählen nur die Fläche der Zellen im Design nach der Synthese 
zusammen
und Teilen die Summe durch dann die Fläche eines NAND2 Gatters.

Aber dazu taugen FPGA-Tools nicht, denn die Struktur von FPGAs und Asics
unterscheiden sich denn doch zu stark.

Vorschlag ... ach nee du wolltest ja keine Gegenvorschläge oder andere 
Lösungsansätze  ..

von Morin (Gast)


Lesenswert?

> z.B: ein NAND mit 2 Eingängen hat die Fläche X, eine Flipflop
> ist ca. 6,2 mal größer, ein MUX dann 2.1 mal usw...

Dann verstehe ich den Plan nicht ganz. Beispiel: Eine boole'sche 
Funktion F braucht zur Implementierung den 15-fachen Platz eines NAND2 
(z.B. als "Complex Gate" [*]). Das Ergebnis, welches du gerne hättest, 
wäre die Zahl 15. Stattdessen forcierst du eine Implementierung von F 
durch ein reines NAND2-Netz, welche nicht mehr Platzoptimal ist und z.B. 
den 35-fachen Platz eines NAND2 belegt. Statt der gewünschten 15 
bekommst du also 35 als Ergebnis.

Das einzige, was nun einfach ist, ist das bestimmen der (nicht 
aussagekräftigen) Zahl von NAND2 durch Zählen der LUTs.

[*] so wurde das damals im Studium genannt. Gemeint war eine 
Implementierung als AND/OR/INVERT, realisiert durch Verschaltung von 
NMOS-FETs gegen Masse anhand der Disjunktiven Normalform von F und einer 
Verschaltung von PMOS-FETs gegen V anhand der Konjunktiven NF von F)

von Olle Dohle (Gast)


Lesenswert?

Die Größe (und damit die Kosten) eines Chips vom Hersteller A exakt zu 
bestimmen, in dem man eine Produktion mit der Technologie (Componenten 
Bibliothek) beim hersteller B vorraussetzt geht natürlich nicht. Du 
kannst aber die Anzahl von Bauelementen bestimmten typs bestimmen und 
dann amhand der Bauteilbibliothek umrechnen.

nach der synthese wird mir hier aufgelistet wieviel FF, Logik mit 2 
Eingängen, Logik mit 3 Eingängen MUX etc im Design steckt. Synthesetools 
synplicity aber der XST von der ISE sollte das auch so machen. Das ist 
bevor der mapper oder fitter dies in die 4er oder 6er LUTs "übersetzt", 
sollte also noch nicht technologiespez. optimiert sein. Jetzt kannst du 
dies anhand einer Bauteilbibliothek (z.B. 
http://www.eu.necel.com/_pdf/A12213XJ5V1UM00.PDF )das in NAND2 
Größenequivalente umrechnen, wobei ich z.B bei einer logik mit FanIn 3 
ein NOR mit 3 Eingängen voraussetzen würde.

Aber wie gesagt, auf genaue Zahlen würde ich mich garnicht einlassen 
sondern bei solchen Abschätzungen nur ein unterscheiden in
-nahezu gleich (Unterschied +-10%)
-etwas größer/kleiner  (Unterschied 10.. 25%)
-deutlich größer  (Unterschied 25 %)

von Charakterlos (Gast)


Lesenswert?

Uiuiui, dass nimmt nun eine Richtung mit der ich nicht klar komme.
Fakt ist, ich komme nicht an so ein Synthesetool. Deswegen ja auch 
explizit die Frage, ob man ISE mißbrauchen kann.

@bko
Mit dem Link http://www.vlsitechnology.org hast du mir sehr geholfen. 
Man kann ja leicht herausfinden, wieviele Gatter z.b. inverter Xilinx 
verwendet. Man könnte das ganze auf die librarys von der uni-Berkeley 
abbilden, und die Fläche der verschiedenen Gatter im Design addieren, um 
letztendlich am Schluß durch das NAND2 zu teilen. Allerdings hat 
XilinxISE Gatter, die es nicht in der o.g. library gibt z.B. NAND12 etc. 
Und da währe ich wieder bei meinem Anfangsproblem nur bestimmte Gatter 
zur Synthese zu erlauben.

@Morin
Ein sehr interessanter Aspekt! Zusätzlich zu einem reinen NAND2-Area 
Vergleich wäre ja auch die Skalierung durch logische Optimierung anhand 
der Synthese. D.h. wie stark differenziert sich die logische 
Beschreibung anhand einer VHDL durch NAND2 realisiert, im Gegensatz zu 
einer VHDL mit Complex-Gattern realisiert und normiert auf die Fläche 
eines NAND2 ?

Vielleicht kann man darauf Rückschlüsse ziehen, in Bezug auf 
Flächeneffiziente VHDL-Modellierung. (Aber darauf wollte ich ja garnicht 
hin, ich woill ja lediglich eine Vergleichbarkeit der Komplexität in 
Bezug auf die Fläche).

von Matthias (Gast)


Lesenswert?

Man könnte ISE ja eine Netzliste erzeugen lassen und sich eine SW 
schreiben, die LUT-Funktionen auf NAND-Gatter abbildet. Das drüberlaufen 
lassen und die Zahl ermitteln.

Ist zwar nicht gemütlich und ich zweifle, ob das so überhaupt Sinn macht 
(schließlich optimiert ISE ja auch die HW, die im FPGA vorhanden ist, 
nicht auf die library des ASIC-Herstellers), aber wer ASICs ohne 
ASIC-Synthesetool machen möchte darf nicht pingelig sein.

LG
Matthias

von Mathi (Gast)


Lesenswert?

Vielleicht sollte man mal darauf hinweisen, dass es freie Synthese-Tools 
gibt, die ein VHDL/Verilog-Design auf eine ASIC-Technologie abbilden 
können...
Da wäre z.B. Alliance der Uni Paris oder Signs der Uni Stuttgart.

von Charakterlos (Gast)


Lesenswert?

@Matthias
Danke für die Hinweise :)

Von meiner Seite ist das Thema abgeschlossen, Danke allen beteiligten.

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.