Hallo Freunde, ich hab mal eine eher theoretische Frage: Ist in einem fertigen ASIC der VHDL-Code eigentlich festverdrahtet, oder gibt es dort auch wie beim FPGA einen variablen Logikteil, der aus einem Flash o.ä. geladen wird? Ich hab nämlich schon mehrfach gesehen, daß bei der Entwicklung eines ASICs zuvor ein Prototyp aus diskreter Hardware und FPGA aufgebaut wird. Nun wird hier im Forum ja regelmäßig diskutiert, daß es zwischen FPGA und ASIC einige wesentliche Unterschíede gibt, insbesondere der Umgang mit Clocks. Jetzt frag ich mich: Wie kann es denn funktionieren, daß man auf einem FPGA einen VHDL-Code entwickelt, der dann im ASIC in Hardware gegossen werden soll, wenn es solch wichtige Unterschiede gibt? Man müßte doch eigentlich den VHDL-Code auf dem ASIC selbst (mit all seinen Eigenheiten) entwickeln.
Bronco schrieb: > Wie kann es denn funktionieren, daß man auf einem FPGA einen VHDL-Code > entwickelt, der dann im ASIC in Hardware gegossen werden soll, wenn es > solch wichtige Unterschiede gibt? Es ist einfacher, ein synchrones FPGA-Design auf ein ASIC abzubilden, als ein asynchrones ASIC-Design auf ein FPGA. Das ist der Hauptunterschied. Super ASIC-Entwickler können nicht auch automatisch mit FPGAs umgehen, und ein tolles FPGA-Design ist nicht automatisch gut auf ein FPGA übertragbar. Hier spielen zuallererst die angesprochenen Taktübergänge oder lokale Takte eine Rolle, dann aber auch der Reset: in einem FPGA gibt es schon einen "Reset-Controller", auf einem ASIC muss ich den erst mal implementieren. SuperWilly schrieb: > Such mal nach "HardCopy ASIC" von Altera. Dabei kommt dann kein "richtiges" ASIC raus, sondern "nur" ein hart verdrahtetes FPGA, das aber den ganzen "All-Inclusive-Komfort" (Reset, Takt, PLL, Multiplier, usw.) eines FPGAs hat...
bei der asicentwicklung, wird nen fpga nur zur verifikation der logischen funktionen genutzt wenn es um interaktion mit anderen geräten geht die man nicht so gut modellieren kann. da nutzt man dann ewigkeiten lange testvektoren mit etlichen eingangsvektoren um sicher zustellen das bei deinen gesamtsystem nicht irgendwelche zustände eintreten die nicht mit "einberechnet" wurden. der ganze rest bei der asic entwicklung bzw des digitalteil eines asic da braucht man keinen fpga. für timing-, verbrauchsanalyse, emv etc da musste mit teuren simulationstools (ich glaub die waren fast alle von cadance...irgendwie virtuoso xl oder so) arbeiten. die simulieren dir dann deine netzliste die aus deinem layout erstellt wurde durch (sogar mit parasitären effekten die selbstständig aus dem layout berechnet wurden)... also is ne analoge simulation einer digitalen schaltung. dauert auch und braucht viel rechenpower. naja und die rein logische funktion vom asic wird eh erstmal ausgiebig mit simulation verifiziert.
Lothar Miller schrieb: > und ein tolles FPGA-Design ist nicht automatisch gut > auf ein FPGA übertragbar. Stimmt, das erlebe ich jeden Tag ;)
Bronco schrieb: >> und ein tolles FPGA-Design ist nicht automatisch gut >> auf ein FPGA übertragbar. > Stimmt, das erlebe ich jeden Tag ;) Hmmm... Stimmt zwar, war aber nicht echt nicht so gemeint. Man darf eher ein beliebiges "FPGA" in diesem Satz durch "ASIC" ersetzen... ;-)
G.A. schrieb: > bei der asicentwicklung, wird nen fpga nur zur verifikation der > > logischen funktionen genutzt wenn es um interaktion mit anderen geräten > > geht die man nicht so gut modellieren kann. nicht ganz, man kann auch die Timing-Simulation sowie die asynchronen Vorgänge in Form einer compilierten Simulation sehr gut untersuchen. Die Sim läuft dann zwar nicht in Echtzeit, das tut die FPGA-Platform meistens aber ohnehin nicht.
ich hab auch nicht behauptet, das man nen asic vom asynchronen bishin zum kompletten analogen verhalten nicht gut durchsimulieren kann...ich schrieb doch auch am ende, das man dafür gerade keinen fpga braucht sondern gute rechner und simulationstools. nein es ging darum, das es zum teil schwer sein kann eine reale gegenschnittstelle mit möglichst hoher testabdeckung zu modellieren. wenn man das gegenstück als reale hardware aber zur hand hat, ist es manchmal sinnvoller die logischen funktionen (also den reinen digitalteil) auf nen fpga zu packen und sich das zusammenspiel der beiden über nen längeren zeitpunkt anzugucken, als zu versuchen möglichst präzise und komplett das gegenstück zu modellieren. beispiel du hast nen großen bus zu nem anderen chip über den dynamische daten,steuersignale, w/e kommen die ebenfalls dynamische prozess in der asiclogik steuern... nun kann man sich sicher gedanken über mögliche testvektoren für die eingänge machen, aber der aufwand steigt exponentiell mit der dynamik der asiclogik. da ist es manchmal einfacher die reale hardware als testvektor-erzeuger zu benutzen und an nen fpga anzuschliessen. man beachte es geht hier gerade nur um äußere " einflüße" auf nen asic. man kann aber ebenso durch nen fpga das spiel auch in die andere richtung betrachten.
SuperWilly schrieb: > Such mal nach "HardCopy ASIC" von Altera. Das ist aber eine andere Schiene, als klassische ASIC-Entwicklung.
on-semi hat auch ein fpga->asic Verfahren im angebot http://www.onsemi.com/PowerSolutions/content.do?id=16621
in prinzip ist es gleich man muss nur mehr simulieren und verfizieren damit man sicher ist das auch wirklich keine fehler drinnen sind!
>in prinzip ist es gleich man muss nur mehr simulieren und verfizieren >damit man sicher ist das auch wirklich keine fehler drinnen sind! Naja, um den Produktionstest muss man sich auch selbst kümmern; Scan-ketten und generierte Testpattern und auch Analogtest machen ein wenig Arbeit... Hier ein asic-flow in Stichpunkten.. http://asic-interview.blogspot.de/2010/01/asic-flow.html und die englische Wikipeida hat diese Artikel dazu: http://en.wikipedia.org/wiki/Physical_design_(electronics) http://en.wikipedia.org/wiki/Design_for_testing http://en.wikipedia.org/wiki/ATPG
Als ASIC-Laie und FPGA-Halbgebildeter habe ich mir dies überlegt (vielleicht wurde es hier mit anderen Worten bereits gesagt): Nicht alle Flipflops/Latches müssen einen definierten Startwert haben, weil sie ohnehin vor dem ersten Lesen mindestens einmal beschrieben werden. Bei einem ASIC wird man in diesem Fall den Reset einsparen wollen. Die Startwerte sind dann zufällig. Man muss durch Simulation sicherstellen, dass alle FFs/Latches ohne Reset tatsächlich vor dem ersten Lesen beschrieben werden. Beim FPGA dagegen haben alle Flipflops definierte Startwerte, auch wenn man sie nicht explizit initialisiert. Wenn man ein Flipflop übersieht, welches man hätte initialisieren müssen, kann es sein, dass die Konfiguration trotzdem zuverlässig funktioniert, weil der implizite Initialwert passt.
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.