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?
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.
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 .
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.
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.
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.
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 .
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 .
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.
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.
Klatsch
W5VO
Klatsch
W5VO
Martin Thomson
W5VO
Ale..chenski
W5VO
Ale..chenski