====== EDA Zusammenfassung ====== WiSe 2023/24, Dozent: Johannes Kliemt **Hinweis: keine Garantie auf Vollständigkeit und Korrektheit!** ===== Technologiegrundlagen ===== ASIC weil: - Hoher Takt durch räumliche Kompaktheit - geringer Energieverbrauch - geringe Stückkosten bei Massenproduktion [[https://youtu.be/AwRJsze_9m4?si=3iNqc4nadsi32-We|YouTube-Video zur Funktionsweise von Transistoren]] n-MOSFET: +--Vds----------+ +--Vds----------+ | | | | +--Vgs--+ | +--Vgs--+ | | | | | | | +------+ | g | +------+ | g | | | ----+---- | | | ----+---- | | s | ========= | d | s | ========= | d | +-+-+--+---------+--+-+-+ | +-+-+--+---------+--+-+-+ | | | n+ | | n+ | | | | | n+ ______/| n+ | | | | \____/ \____/ | | | \______/ \____/ | | | p | | | p | | +-----------+-----------+ | +-----------+-----------+ | | b | | b +--------------+ +--------------+ | | GND GND * p: Substrat (bulk) p-dotiert * n+: Wells (source, drain) stark n-dotiert * Polysilizium (gate) * Oxid (Isulator) zwischen Gate und Substrat Sperrbereich: - Vgs < Vt - Ids ~= 0 - kein Kanal bildet sich aus Linearbereich: - Vgs > Vt - Ids wächst mit Vds - Kanal bildet sich aus - vergleichbar mit Widerstand Sättigung: - Vds > Vgs - Vt - Ids unabhängig von Vds - Kanal wird abgeschnürt Kennlinien nur für ideale Transistoren! In der Realität: - Mobility Degradation: Ladungsträger an Oxid gezogen, Kollision, Abnahme der Mobilität - Velocity Saturation: laterales Feld, Verringerung der Geschwindigkeit - Channel Length Modulation: Diode an Drain in Sperrrichtung, Verarmungszone, kürzerer Kanal, auch nach Sättigung mehr Strom Body-Effekt: - Vorher: Annahme Bulk uns Source auf 0V - bei Reihenschaltung nicht unbedingt gegeben - Vt steigt -> Ids sinkt Leckströme: - Isub: Subthreshold, auch mit Vgs < Vt kann ein geringer Ids Strom fließen - Igate: Gate Leakage, Stromfluss zwischen Gate und Bulk durch extrem dünne Gate-Isolatoren - Ijunct: Junction Leakage, Drain und Bulk als in Sperrrichtung geschaltene Diode, trotzdem Stromfluss - Icont: Contention Leakage, Strom durch Pull-Up/Down Widerstand, bei CMOS irrelevant - Ishortcurcuit: Strom, der beim Schalten eines CMOS Netzes kurz fließen kann Temperaturauswirkungen - Hohe Temperatur: - Vt sinkt (leichterer Wechsel vom Valenz- ins Ladungsband) - Ids sinkt (Widerstand im Kanal steigt) Problem bei NMOS: Aufladen dauert länger als Entladen. Deswegen CMOS: - inverses/komplementäres PMOS Netz - Probleme hier beim Entladen -> Kombination - Stromfluss nur beim Schalten - Anstiegs- und Abfallzeiten weitgehend gleich - Transistoren müssen aufeinander abgestimmt werden ===== Fertigung ===== Czochralski Verfahren, Kristall ziehen, Silizium-Wafer sägen Fertigung in Planartechnik: - schrittweise Prozessfolge - Verändern der jeweils obersten Schicht - Photolithographie (Selektion) - Oxidation (SiO2) - Materialanlagerung - Ätzen (Selektion) - Diffusion/Ionenimplantation (Einbringung Diffusionsgebiete) Photolithographie: 1. Aufbringen von Photolack (positiv oder negativ) 2. Belichtung durch Maske 3. Struktur wird übertragen 4. Entfernen von maskiertem Photolack Alternativen: Röntgenlithographie, Elektronenstrahllithographie, Nanoimprint-Lithographie Oxidation: - Umwandeln von Si in SiO2 - nass (Wasserdampf) oder trocken (Sauerstoff) - sehr hohe Temperatur - Oxid wächst in das Substrat ein Materialanlagerung: - Verdampfung: Material als Gas auf Wafer, setzt sich ab - Sputtering: mit Ionen beschossen, Atome werden herausgeschlagen und bilden Schicht - CVD (Chemical Vapor Deposition): Chemische Reaktion an Waferoberfläche Ätzen: - selektive Entfernung - Struktur durch vorherige Photolithographie - isotrop (trocken, Gase) und anisotrop (nass, Säuren) Dotierung: - Ionenimplantation: Ionen auf Gitter geschossen, bleiben stecken, anschließend ausheilen - Diffusion: Einbringen von Fremdatomen bei hoher Temperatur, Wandern der Atome Prozess nicht optimal, Defekte erwartet. Bei LOCOS (Local Oxidation of Silicon) erkennbar am Vogelschnabel. Masken werden mit Markern bestückt zur genaueren Justierung. Wichtige Effekte: - Latch-up: unabsichtlicher Thyristor durch bipolare Bereiche. Lösung durch Schutzringe oder zusätzlichen Wannen - Antenna: während Fertigung Gate temporär nicht mit Drain verbunden, Ladung kann nicht abfließen, Gate zerstört STI (Shallow Trench Isolation): Alternative zu LOCOS - Vogelschnäbel (Instabilität) werden verhindert - Einfügen von Gräben zwischen den Wannen, “glatte” Struktur Yield: - Silizium durch Fremdatome verunreinigt - Bindungsfehler im Kristall - abhängig von Chipgröße ===== Entwurfsmethodik ===== Full-Custom: - Layoutelemente manuell entwerfen - Ausnutzen aller Freiheitsgrade - hohe Optimierungsmöglichkeit (Fläche, Timing, Power) - hoher Zeitaufwand - hohe Fehleranfälligkeit - nur sinnvoll bei Massenproduktion Standardzellenentwurf: - Zellen mit festgelegter Höhe und variabler Breite, genau spezifiziert - erleichtert automatisches Platzieren - IO-Zellen mit power rings - power rails für Vdd und Vss Makrozellen-Layout: - ähnlich zu Standardzellen - keine einheitliche Abmessung - erprobte Blöcke (zB SRAM) - erschwerte Verdrahtung - kombinierbar mit Standardzellen und/oder full-custom Array-Entwurf: - Layout und Logik bereits als Chip vorhanden - Programmieren der Verbindungen - PAL, PLA, FPGA - FPGA: CLB (Configurable Logic Block), BRAM, DSPs, …, CLB aus Slices mit LUTs und FFs, Verdrahtung programmierbar Bewertung entsprechender Chips: ^Kriterium ^PLD ^GA ^Standardzellen^Full-Custom^ |Entwurfszeit |sehr niedrig|niedrig|mittel |hoch | |Komplexität |niedrig |mittel |hoch |sehr hoch | |rel. Chipfläche |- |1 |0.7 |< 0.5 | |wirtsch. Stückzahl|1 |500 |5000 |50000 | Ebenen: 1. Algorithmische Ebene: Spezifikation zur Lösung eines Problems (Hochsprache) 2. PMS-Ebene (Processor, Memory, Switch): Beschreibung durch Hauptelemente eines Rechners 3. Befehlsebene: Beschreibung durch die Struktur der Befehle 4. RTL-Ebene (Register-Transfer-Layer): Register und Operationen, synthetisierbarer HDL 5. Logikebene: Beschreibung mit logischen Gattern und Flip-Flops 6. Schaltkreisebene: Ebene von Transistoren, Widerständen, Dioden und Kapazitäten Rechnerentwurfssprachen (VHDL, Verilog), Systementwurfssprachen (SystemC) Beschreibung so abstrakt wie möglich, aber so genau wie möglich. Abbildung von oberer Ebene in untere: Synthese ==== Y-Diagramm ==== verschiedene Domänen: 1. Funktionale Sicht: Anforderungen, was Gegenstand tun soll, Boolsche Funktionen, Automaten 2. Strukturelle Sicht: logische Struktur, Module mit Verbindungen, topologische Anordnung 3. Physikalische Schicht: konkrete Implementierung, exakte Ausdehnung und Anordnung aller Komponenten und Verbindungen Abstraktionsebenen: 1. Systemebene 2. Algorithmische Ebene 3. RTL-Ebene 4. Gatterebene 5. Schalterebene * Entwurfszustand: Schnittpunkt Domäne mit Ebene * Entwurfsschritt: Abbildung zwischen zwei Entwurfszuständen * Entwurfsmethode: Folge von Entwurfszuständen, die beim Layout (Mitte) endet * Syntheseschritt: Abbildung in Richtung Zustand, der Realisierung näher liegt * Analyseschritt: Umkehrabbildung der Synthese, “Verifikation” teilweise automatisierbar, teilweise auch gar nicht (bzw nur schwer) realisierbar ===== Synthese ===== Designflow: - entlang Y-Diagramm - standardisierten Dateien als Schnittstelle der Toolchain - mit Umkehrfunktion (Validierung) Standardzellenentwurf: 1. Design (Entwicklung der Funktionalität auf RTL-Ebene) 2. Synthese (Abbildung auf Netzliste mit Standardzellen) 3. Place and Route (Flurplan, Platzierung und Verdrahtung) 4. Signoff (Abschluss, Simulation, Validierungen) (skip) ===== PnR ===== Netzliste aus Standardzellen platzieren und verdrahten - Design einlesen - Flurplan (IOs, Makro-Zellen, Spannungsversorgung, Globale Netzdefinition) - Aufbau des Taktbaums - Routing - PnR-Verifikation (!= Signoff) - Export Standardzellen haben fertiges Layout. Oft nicht zugänglich, “grobe” Geometrie ausreichend. Prozessdaten in Captables. Jeweils BC (best case), WC (worst case) und TC (typical case). Flurplan: grobe Schaltungsstruktur mit Größendefinition und Anordnung der Teilschaltungen. IO-Zellen auswählen (je nachdem ob IO oder Logik limitiert). - Die Abmessung: Abmessung gesamter Chip (inkl. IO) - Core Abmessung: Größe der Fläche für Standardzellen + Makroblöcke - Core Utilization: Ausnutzung der Fläche für Logik - Aspect Ratio: Verhältnis Chiphöhe zu -breite - Core to IO / Die: Abstand Core-Bereich zu IO bzw bis Chipkante (zB für power rings) Platzieren der IO-Zellen als Ring um den Core (auch Spannungsversorgung). Designrules beachten. Zwischenräume und Ecken mit Filler-Zellen füllen. IO hat seinen eigenen Spannungsring. Makroblöcke im Core-Bereich platzieren. Halo-Blöcke außenrum. Globale Netze wie vcd! oder gnd! müssen definiert sein. Zellen haben Pins zu diesen globalen Netzen. Spannungsversorgung: - Spannungsring um den Core Bereich - Spannungsring um jeden Makroblock - Power-Rails für Standardzellen - bei großen Chips Stripes - Verbindung mit IO - horizontale/vertikale Verdrahtung nach Layern - Layerwechsel (VIAs) an Ecken Nach Flurplan Einfügen der Standardzellen: - Platzierungsverbote (zB unterhalb von Versorgungsleitungen) - End-Caps: Designregeln schreiben Abstände, Metallbreiten usw. vor Routing: erstmal Trial-Route für Machbarkeitsanalyse (grafische Staukarte) * Routing erfolgreich -> weiter * knapp verfehlt -> neue Platzierung? * weit verfehlt -> neuer Flurplan Achtung: Platzierungsstrategie wichtig, um später Zeitconstraints einzuhalten - Elemente innerhalb des kritischen Pfades nahe beieinander - Puffer, um Treiberfähigkeit zu erhöhen - mehrfaches Einfügen von Logik, Reduktion des Loads - Zusammenfassen von Logik, weniger Flächen- und Strombedarf Taktbaum: - Clock high-fanout - hohe Kapazität und hoher Skew, zudem anfällig für Rauschen - CTS (clock tree synthesis), Puffer in Baumstruktur (zB H-Baum) - Verringerung des Skews - Taktbaum wird meistens von Tool erstellt - Achtung: Netzliste wird verändert, Puffer brauchen Platz - Wechsel bei der STA: Ideal Clock -> Propagated Clock Genaues Routing: - Aufteilung des Designs in Blöcke, Verdrahtung untereinander und innerhalb - Reparieren von Fehlern (Kurzschlüsse, Abstände, MaxStack VIAs, …) - Optimierungen (Zeitverhalten, X-Talk, Antenna) Antenna: - Lange Metall-Bahnen, die nicht am Drain angeschlossen sind, verhindern - Re-Routing und Verlagern der Verbindung in höhere Schichten - VIA nahe des Gates - oder Einführung von Schutzdioden Crosstalk (X-Talk), Übersprechen: - Nahe Leitungen können sich gegenseitig beeinflussen - Vergrößerung des Abstands, Layerwechsel, Umsortierung der Netze, Umwege weitere Optimierungen: - DFM (Design for Manufacturing), Verdopplung der VIAs - Auch nachträgliches Ändern der Netzliste möglich, um Constraints zu erfüllen, ECO (Engineering Change Order) Timing Analyse: - jetzt auch Hold-Timings wichtig - Einhaltung durch Neuverdrahten zeitkritischer Bereiche - bei Hold-Violations automatisch Delay einbauen - Achtung: dadurch können Constraints verletzt werden - Iterativer Prozess: Routing -> Timing -> Re-Route -> Timing -> … Freie Flächen mit Filler-Zellen. Entweder leer oder mit Kapazitäten (stabilere Spannungsversorgung). Verbindung von N- bzw P-Wannen. “grobe” PnR-Verifikation: - geometrisch: Breite, Länge, Abstände, Überlappung, Kurzschlüsse - connectivity: offene, nicht verbundene Netze - antenna: Antenna-Constraints - metal density: Metall-Dichte zwischen min und max - Spannungsversorgung: vorhanden, IR-drop ===== Signoff ===== (skip) ===== Low Power ===== immer mehr Bedeutung weil: - Wärme: teure Kühlung notwendig, Ausfallraten nehmen zu - Mobile Geräte: Zeit bis zur nächsten Ladung soll maximiert werden auf unterschiedlichen Ebenen: - System-Design: Speichertyp, Bustyp, IO - Sub-System-Design/Algorithmen: welche ALU, Busbreite CPU, FPGA/ASIC/CPU - RTL: Pipelining, bus-encoding - Gatter/Netzlisten: Clock-Gating, Daten-Gating - Transistoren: Multi-Vth Pshortcircuit: wenn beide Transistoren etwas geöffnet Pswitching: Durch das Umschalten des Eingangs, Stromfluss durch Laden/Entladen des Kondensators Pswitching = alpha * C * Vdd^2 * fsys alpha: Aktivitätsfaktor fsys: Systemfrequenz Berechnung Gesamtleistung: - Ptotal = Pdynamic + Pstatic - Pdynamic = Pshortcurcuit + Pswitching - Pstatic = (Isub + Igate + Ijunc + Icontention) * Vdd Aktivitätsfaktor senken durch: - Clock-Gating - Data Isolation - Pipelining (Glitches filtern) alpha mit probabilistischem Modell abschätzbar, aber: - Modell nur bei gleichbleibender Wahrscheinlichkeit korrekt - nur wenn Gatter keine Verzögerung, Glitches! -> alpha > 1 möglich Frequenz: durch Verringern sinkt Leistung, wenn volle Performance nicht gebraucht aber abschaltbar Spannung: durch Technologie vorgeschrieben, geringer mit mehr Rauschen und längerem Delay Kapazität: Leitungslänge verringern, full-custom mit optimierten Gattern Parallelität: - verdoppeln der Komponenten, Halbierung der Frequenz - weniger Spannung notwendig - oder: Pipelining, Frequenz bleibt gleich Spannung absenken auch für Pstatic interessant, aber: trade-off zwischen geringen Leckströmen und geringem Delay im aktiven Modus Subthreshold Leakage: - eng mit Dotierung und damit Vth verbunden - LVT: Vt klein, Isub hoch, schnell, oft HP (high performance) oder SP (standard performance) bezeichnet - HVT: Vt hoch, Isub klein, langsam, oft LL (low leakage) bezeichnet - bei full-custom Einfluss auf Gate-Länge selbst - Mischung von LVT und HVT möglich, aber: Prozesskosten! - VTCMOS: variabel einstellbar, Body-Effect durch Vbb, benötigt zusätzliche Power-Leitungen Gate-Leakage reduzierbar durch dickere Oxid-Schicht oder alternativen Materialien (zB mit hoher Dielektrizitätszahl, High-K) Junction-Leakage gering und meist vernachlässigbar, in HVT beobachtbar: - BTBT (Band-to-Band-Tunneling): Strom von Drain nach Bulk, am schlimmsten bei Vdb = Vdd - GIDL (Gate-Induced-Drain-Leakage): Strom von Drain nach Bulk, angeregt durch hohe elektrische Felder zwischen G und D, am schlimmsten bei Vgd = -Vdd Stack-Effekt: - Bei Reihenschaltung (zB NAND), beeinflussen sich Leckströme gegenseitig - bei Abschaltung gezielt Eingaben setzen, um Stack-Effekt auszunutzen - trade-off: gezieltes Setzen erfordert Aktivität Power-Gating: - Achtung: Gating-Transistoren müssen beefy genug sein, im Betrieb viel Strom - Achtung: zusätzlich Daten-Gating betreiben, sonst ungültige Werte am Ausgang - Achtung: kostet viel dynamische Leistung, lohnt nur bei langer Abschaltung RTL Maßnahmen: - generell: Aktivitätsgrad vermindern - Achtung: bei falscher Strategie/Verwendung, mehr Strom oder sogar funktionsunfähig - keine Zurücksetzen Default-Werte - redundante Logik vermeiden - Pipelining: Glitches werden nicht weitergegeben, aber mehr FFs, trade-off - Zustandscodierung: Gray, One-Hot, One-Cold, bei Gray zB auch Invertierendes Übertragen - Register-Retiming: bei nicht-zeitkritischen Pfaden Register Umplatzieren - Vorberechnete Logik: zB MSB-Vergleiche bei Integern - Clock-Gating: Nur aktivieren, wenn wirklich geschalten werden soll, ICG-Zellen mit Latch, am besten schaltbar um gut testen zu können - Daten-Gating: Daten nicht berechnen, wenn nicht benötigt Rechnergestützt: - Re-Mapping: Komplexgatter - Datenpfad-Optimierung ===== Design for Test ===== * Verifikation: Funktionale Überprüfung, ob Design korrekt ist * Testing: Annahme, dass Design korrekt ist, korrekte Fertigung prüfen Hinzufügen von Testschaltung. Ziel: automatisches Testen BIST (Built-in Self Test): Test und Auswertung innerhalb des Chips Internal Scan Design: - Verbindung aller FFs über Multiplexer zu einem großen Schieberegister - spezielle Standardzellen - Test-Modus kann (de-)aktiviert werden - TM (Testmode), SE (ScanEnable), SI/SO (ScanIn/Out), Reset, Clock - FFs schreiben, einen Takt rechnen, neue Werte auslesen und vergleichen ATPG: Automatic Test Pattern Generation - Analyse der Scanchain - Auswahl der Testvektoren Fehlermodelle Modi-Analyse empfohlen -> MM-MC Entwurf JTAG (Joint Test Action Group): - Test auf Platinenebene - IO Zellen zu Schieberegister - Verhalten durch TAP (Test Access Point, Zustandsautomat) geregelt - TDI (Test Data In), TDO (Test Data Out), TCK (Test Clock), TMS (Test Mode Select), TRST (Test Reset) - Register: Instruction Register, Bypass, IDCODE (Kennung), X-Register (beliebig) - BSDL (Boundary Scan Description Language): JTAG Debugger internen Aufbau beschreiben