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!
> 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); |
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.
>> 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.
<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
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".
> 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?
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).
> ... 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.
<"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.
<"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 ..
> 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)
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 %)
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).
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
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.
@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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.