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.
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.
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.