Wie unterscheidet sich das ASIC-Design von der FPGA-HDL-Synthese?

Ich habe einige Erfahrung mit FPGA/HDL-Tool-Suiten wie Xilinx ISE, Lattice Diamond usw. Der allgemeine Arbeitsablauf besteht aus dem Schreiben von Verilog/VHDL, der Simulation, dem Testen und der anschließenden Programmierung des FPGA.

Ich habe einige Leute sagen hören, dass das ASIC-Design sehr unterschiedlich ist. Welche Toolsets werden für die beiden Haupttypen von ASICs, ASICs auf Gate-Ebene und ASICs auf Transistorebene, verwendet? Ich habe mich mit High-Level-Synthesis-Tools wie Catapult C und Cadence C to Silicon beschäftigt, aber ich habe noch nie welche ausprobiert. Können Sie die verschiedenen Arten von Tools erläutern, die im ASIC/FPGA-Bereich verfügbar sind und den typischen HDL-Workflow verändern/beschleunigen können?

Antworten (2)

Typischerweise ist das ASIC-Design aufgrund der Komplexität und Menge der Arbeit eine Teamaufgabe. Ich gebe eine grobe Reihenfolge der Schritte an, obwohl einige Schritte parallel oder außerhalb der Reihenfolge ausgeführt werden können. Ich werde Tools auflisten, die ich für jede Aufgabe verwendet habe, aber es wird nicht enzyklopädisch sein.

  1. Erstellen Sie eine Zellbibliothek. (Alternativ verfügen die meisten Prozesse über Gatterbibliotheken, die im Handel erhältlich sind. Ich würde dies empfehlen, es sei denn, Sie wissen , dass Sie etwas benötigen, das nicht verfügbar ist.) Dies beinhaltet das Entwerfen von Gattern mit mehreren Treiberstärken für so viele Logikfunktionen wie nötig, das Entwerfen von Pad-Treibern/Empfängern, und alle Makros wie ein Array-Multiplikator oder Speicher. Sobald der Schaltplan für jede Zelle entworfen und verifiziert ist, muss das physische Layout entworfen werden. Ich habe Cadence Virtuoso für diesen Prozess zusammen mit analogen Schaltungssimulatoren wie Spectre und HSPICE verwendet .

  2. Charakterisieren Sie die Zellbibliothek. (Wenn Sie eine Gatterbibliothek eines Drittanbieters haben, wird dies normalerweise für Sie erledigt.) Jede Zelle in Ihrer Bibliothek muss simuliert werden, um Zeittabellen für die statische Zeitanalyse (STA) zu generieren. Dazu wird die fertige Zelle genommen, die Layoutparasiten mit Assura , Diva oder Calibre extrahiert und die Schaltung unter verschiedenen Eingangsbedingungen und Ausgangslasten simuliert. Dadurch wird ein Timing-Modell für jedes Gate erstellt, das mit Ihrem STA-Paket kompatibel ist. Die Timing-Modelle liegen normalerweise im Liberty -Dateiformat vor. Ich habe Silicon Smart und Liberty-NCX verwendetum alle erforderlichen Bedingungen zu simulieren. Denken Sie daran, dass Sie wahrscheinlich Timing-Modelle im "Worst Case", "Nominal" und "Best Case" benötigen, damit die meisten Softwareprogramme ordnungsgemäß funktionieren.

  3. Synthetisieren Sie Ihr Design. Ich habe keine Erfahrung mit High-Level-Compilern, aber am Ende des Tages muss der Compiler oder die Compilerkette Ihr High-Level-Design übernehmen und eine Netzliste auf Gate-Ebene generieren. Das Syntheseergebnis ist der erste Blick auf die theoretische Systemleistung und der erste Punkt, an dem Probleme mit der Laufwerksstärke angesprochen werden. Ich habe Design Compiler für RTL-Code verwendet.

  4. Platzieren und routen Sie Ihr Design. Dies nimmt die Netzliste auf Gate-Ebene vom Synthesizer und verwandelt sie in ein physisches Design. Idealerweise erzeugt dies ein Pad-to-Pad-Layout, das bereit für die Fertigung ist. Es ist wirklich einfach, Ihre P&R-Software so einzustellen, dass sie automatisch Tausende von DRC-Fehlern macht, also ist auch in diesem Schritt nicht alles Spaß und Spiel. Die meisten Softwareprogramme verwalten Probleme mit der Laufwerksstärke und generieren Uhrbäume wie angewiesen. Einige Softwarepakete umfassen Astro, IC Compiler, Silicon Encounter und Silicon Ensemble. Das Endergebnis von Ort und Route ist die endgültige Netzliste, das endgültige Layout und die extrahierten Layout-Parasiten.

  5. Statische Zeitanalyse nach dem Layout. Das Ziel hier ist zu überprüfen, ob Ihr Design Ihre Timing-Spezifikation erfüllt und keine Setup-, Hold- oder Gating-Probleme aufweist. Wenn Ihre Designanforderungen streng sind, verbringen Sie möglicherweise viel Zeit damit, Fehler zu beheben und die Korrekturen in Ihrem P&R-Tool zu aktualisieren. Das letzte STA-Tool, das wir verwendet haben, war PrimeTime .

  6. Physische Überprüfung des Layouts. Nachdem ein Layout vom P&R-Tool generiert wurde, müssen Sie überprüfen, ob das Design den Prozessdesignregeln entspricht (Design Rule Check / DRC) und dass das Layout mit dem Schaltplan übereinstimmt (Layout versus Schematic / LVS). Diese Schritte sollten befolgt werden, um sicherzustellen, dass das Layout korrekt verdrahtet und herstellbar ist. Auch hier sind einige Tools zur physischen Verifizierung Assura , Diva oder Calibre .

  7. Simulation des endgültigen Designs. Je nach Komplexität können Sie möglicherweise eine Simulation auf Transistorebene mit Spectre oder HSPICE , eine "schnelle Gewürz" -Simulation mit HSIM oder eine vollständig digitale Simulation mit ModelSim oder VCS durchführen . Sie sollten in der Lage sein, mit Hilfe Ihres STA- oder P&R-Tools eine Simulation mit realistischen Verzögerungen zu erstellen.

Mit einer bestehenden Gate-Bibliothek zu beginnen ist eine enorme Zeitersparnis, ebenso wie die Verwendung aller Makros, die Ihrem Design zugute kommen, wie z. B. Speicher, ein Mikrocontroller oder alternative Verarbeitungsblöcke. Die Verwaltung der Designkomplexität spielt ebenfalls eine große Rolle – ein einzelnes Taktdesign ist einfacher zu verifizieren als eine Schaltung mit mehreren Taktdomänen.

Da Sie Virtuoso erwähnt haben, bietet Cadence eine vollständige Toolchain für das Design (ich glaube, es heißt Opus), in der es möglich ist, mit den Schaltplänen zu beginnen, die einzelne Zelle zu entwerfen, die parasitären Effekte zu bewerten, sie zu charakterisieren und sie dann in die obere Ebene einzubauen .
Ich denke, jeder große Anbieter bietet eine komplette Toolchain an. Letztendlich nutzten wir mehrere Anbieter in unserer Toolchain und konnten so die Tools verwenden, mit denen wir am besten vertraut waren oder die den besten Ruf in der Branche hatten.
Eigentlich weiß ich es nicht ... Ich habe Opus an meiner Universität verwendet, und das lag daran, dass wir einige Bibliotheken hatten ... es war eine Unix-basierte Software und ich muss sagen, dass ich es nicht einmal so sehr mochte. ..
Die Auswahl von Tools für die Unterstützung von Bibliotheken oder Design-Kits ist praktisch eine Voraussetzung. Wenn Sie nicht die unterstützte Version einer bestimmten Software verwenden, können einige Inkompatibilitäten Ihr Design zerstören oder Ihnen falsche Messwerte liefern. Abgesehen davon läuft die überwiegende Mehrheit der EDA-Tools, die ich gesehen habe, auf Unix/Linux-Systemen. Die meisten haben steile Lernkurven.
Beachten Sie, dass 3,4,5 und 7 auch Teil eines typischen großen FPGA-Flusses sind.
@MartinThompson Absolut. Je mehr Sie die Grenzen Ihrer Technologie (ASIC/FPGA) erweitern, desto kritischer werden diese Schritte. Abgesehen davon geben Ihnen die ASIC-Versionen dieser Tools viel mehr Möglichkeiten, in Schwierigkeiten zu geraten.
Beachten Sie, dass 1 und 2 kein allgemeiner Teil des Designs sind. Diese Schritte sind Teil der sogenannten „Prozessqualifizierung“, und die Ergebnisse (vollständig charakterisierte Bibliotheken) werden von FAB Vendor bereitgestellt. Einige Unternehmen führen jedoch ein "vollständiges kundenspezifisches Design" durch und müssen 1 und 2 selbst durchführen.
@AliChen Ich hatte einige Prozesse, bei denen es keine für meine Spezifikationen geeignete Gate-Bibliothek gab. Ich dachte, ich hätte die Erklärung zur Entwicklung der Gate-Bibliothek in meiner Antwort ausreichend qualifiziert.
Nein, nein, Ihre Antwort ist hervorragend. Es berührt einfach nicht viel den FPGA-Teil der OP-Frage.

Die Antwort von W5VO konzentriert sich tendenziell auf das Back-End, und dies ist ein wesentlicher Unterschied zwischen ASIC- und FPGA-Flows. aber es fehlt der Teil der digitalen Designverifizierung.

Wenn ein Design auf Silizium eine Million Dollar und mehr kosten kann und Sie im Vergleich zu einem FPGA viel mehr verwendbare Gates auf einem ASIC packen können, dann verbringen Sie viel mehr Zeit außerhalb des Labors und der Leiterplatten vor Workstations, auf denen Simulatorfarmen laufen und Emulatoren und Schreiben von Tests, um ein ASIC-Design vollständiger zu verifizieren, bevor Sie es für die Produktion freigeben. FPGA-Entwickler neigen dazu, einen großen Teil ihrer Tests durchzuführen, indem sie das FPGA in dem System verwenden, dessen Teil es werden soll.

Ich würde hinzufügen, dass sich der grundlegende Arbeitsablauf für einen Digitaldesigner zwischen ASIC und FPGA nicht wesentlich unterscheidet, aber ASIC hat viel mehr Flexibilität in Bezug auf verfügbare Makro-/Mikroelemente, Platzierung und Routing, während FPGA auf ihre vorgefertigten Logikblöcke beschränkt ist und begrenzt in der Verbindungstopologie. Daher kann FPGA das Leistungsniveau von ASIC nicht erreichen und kann leicht unterschiedliche Designlösungen vorschreiben.
Hallo Ali Chen. Wenn digitales Design und digitale Verifizierung als getrennt betrachtet werden, dann ist der Fluss für rein digitales Design für FPGA vs. ASIC enger, aber wie ich erwähnte, gibt es eine große Trennung bei der Verifizierung. :-)