Halbleitertechnologie von A bis Z

Alles über Halbleiter und die Waferfertigung

1. Einführung & Motivation

Warum DRC allein nicht reicht

Ein Layout, das den Design Rule Check vollständig besteht, ist geometrisch einwandfrei: Alle Breiten, Abstände, Umschließungen und Dichten liegen innerhalb der zulässigen Grenzen. Das sagt jedoch nichts darüber aus, ob die gezeichneten Polygone tatsächlich die Schaltung realisieren, die im Schaltplan entworfen wurde. Ein fehlender Kontakt, zwei vertauschte Anschlüsse oder ein versehentlich doppelt gezeichneter Transistor verletzen keine einzige Design Rule – das Layout bleibt „DRC clean", obwohl die Schaltung elektrisch nicht mehr dem Entwurf entspricht.

Solche Fehler entstehen leicht: Beim manuellen Route eines komplexen Blocks, beim Kopieren und Anpassen bestehender Layoutzellen oder schlicht durch einen vergessenen Verbindungsschritt. Je größer der Chip, desto unwahrscheinlicher wird es, einen einzelnen fehlenden Kontakt unter Millionen von Strukturen visuell zu entdecken.

Die Idee hinter LVS

Der Layout-versus-Schematic-Vergleich (LVS) löst dieses Problem, indem er nicht die Geometrie selbst prüft, sondern die daraus resultierende Schaltungstopologie. Aus dem physischen Layout wird automatisiert eine Netzliste extrahiert – eine Liste aller Bauelemente (Transistoren, Widerstände, Kapazitäten) mit ihren Anschlüssen und den Netzen, die sie verbinden. Diese extrahierte Netzliste wird anschließend mit einer Referenz-Netzliste verglichen, die direkt aus dem Schaltplan stammt.

Stimmen beide Netzlisten überein – dieselben Bauelemente, dieselben Verbindungen, dieselben Bauelement-Parameter – gilt das Layout als „LVS clean". Jede Abweichung wird als Mismatch gemeldet und muss vor dem nächsten Schritt im Entwurfsablauf behoben werden. LVS ist damit die notwendige Ergänzung zum DRC: Der DRC stellt sicher, dass das Layout fertigbar ist, der LVS stellt sicher, dass das Gefertigte auch die richtige Schaltung ist.

2. Netzlisten-Extraktion aus dem Layout

Von Polygonen zu Bauelementen

Der erste Schritt der LVS-Extraktion identifiziert Bauelemente rein aus der Layer-Geometrie – ganz ähnlich wie ein DRC-Werkzeug, nur mit anderem Ziel. Überlappt eine Polysilizium-Struktur eine Diffusionsfläche, erkennt der Extraktor dort einen Transistor: Die Breite des Polysiliziums an der Überlappung liefert die Gate-Weite W, die Ausdehnung der Diffusion senkrecht dazu die Gate-Länge L. Ob es sich um einen NMOS oder PMOS handelt, ergibt sich aus dem Diffusionstyp (N⁺ oder P⁺) beziehungsweise daraus, ob die Diffusion in einer N-Wanne liegt.

Analog werden weitere Bauelemente erkannt: Eine Metall-Isolator-Metall-Struktur liefert einen Kondensator, ein schmaler, hochohmiger Polysilizium- oder Diffusionsstreifen ohne Gate-Funktion einen Widerstand. Jedes gefundene Bauelement wird mit seinen extrahierten geometrischen Parametern in die Netzliste aufgenommen.

Von Kontakten zu Netzen

Parallel dazu ermittelt der Extraktor die elektrische Konnektivität: Alle Polygone, die auf derselben Ebene direkt aneinandergrenzen oder sich überlappen, sowie alle Ebenen, die über Kontakte oder Vias miteinander verbunden sind, werden zu einem gemeinsamen Netz zusammengefasst – unabhängig davon, über wie viele Metalllagen und Vias sich dieses Netz erstreckt. Technisch läuft das im Kern auf eine Union-Find-Operation über alle leitfähigen Polygone hinaus: Zwei Polygone gehören genau dann zum selben Netz, wenn ein leitfähiger Pfad zwischen ihnen existiert.

Das Ergebnis ist eine vollständige Netzliste: eine Liste aller Bauelemente mit ihren Anschlüssen, wobei jeder Anschluss einem der zuvor ermittelten Netze zugeordnet ist. Diese Netzliste enthält zu diesem Zeitpunkt noch keine Namen wie „VDD" oder „OUT" – sie referenziert Netze zunächst nur über interne Kennungen. Erst der Abgleich mit dem Schaltplan (Abschnitt 3) ordnet ihnen wieder sprechende Namen zu.

Das folgende Diagramm zeigt einen einfachen Inverter im Layout und die daraus extrahierte, vereinfachte Netzliste.

Inverter-Layout und daraus extrahierte Netzliste: W/L-Extraktion am Gate, Netz-Konnektivität über Kontakte

3. Die Referenz-Netzliste aus dem Schaltplan

Vom Schaltplan zur Netzliste

Während die Layout-Netzliste aus Geometrie gewonnen wird, entsteht die Referenz-Netzliste auf direktem Weg: Ein Schaltplan-Eingabewerkzeug (Schematic Capture) kennt für jedes platzierte Symbol – Transistor, Widerstand, Kondensator – bereits dessen Anschlüsse (Pins) und deren Bedeutung. Verbindet der Entwerfer zwei Pins durch eine gezeichnete Leitung oder durch identische Netzbezeichner, gehören sie zum selben Netz. Diese Extraktion ist trivial im Vergleich zur Layout-Seite, da keine Geometrie interpretiert werden muss – die Konnektivität liegt bereits explizit vor.

Netznamen wie VDD, GND, IN oder OUT vergibt meist der Entwerfer selbst, entweder durch Beschriftung einzelner Leitungen oder durch spezielle globale Netz-Symbole für Versorgungsspannungen, die werkzeugübergreifend als „überall gleich" gelten – ein an mehreren Stellen im Schaltplan platziertes VDD-Symbol verbindet all diese Punkte zu einem einzigen Netz, auch ohne durchgezogene Leitung dazwischen.

Hierarchie und Flattening

Reale Schaltpläne sind praktisch immer hierarchisch aufgebaut: Ein Inverter ist eine Zelle, die in einem Gatter wiederverwendet wird, das wiederum Teil eines Multiplexers ist, der in einem Register instanziiert wird. Der Netzlisten-Compiler muss diese Hierarchie auflösen – entweder vollständig flach (jede Instanz einer Zelle wird zu eigenständigen Bauelementen expandiert) oder hierarchisch, wobei gleich aufgebaute Instanzen nur einmal als Referenzzelle geprüft und danach lediglich ihre Verschaltung untereinander verglichen wird.

Hierarchisches LVS ist bei Speicherblöcken mit tausendfach wiederholten, identischen Zellen (z. B. SRAM-Arrays) der einzig praktikable Ansatz – ein vollständig geflachter Vergleich würde bei jeder Instanz erneut die komplette Zellstruktur durchrechnen, obwohl sich nur die Position im Layout unterscheidet.

Die so gewonnene Referenz-Netzliste gilt als „golden" – als der verbindliche Sollzustand, gegen den die aus dem Layout extrahierte Netzliste im nächsten Schritt verglichen wird. Das folgende Diagramm zeigt den Schaltplan desselben Inverters aus Abschnitt 2 und die daraus gewonnene Referenz-Netzliste.

Inverter-Schaltplan und daraus abgeleitete Referenz-Netzliste (golden)

4. Der Vergleichsalgorithmus

Die Netzliste als Graph

Um zwei Netzlisten algorithmisch zu vergleichen, wird jede von ihnen zunächst in einen Graphen überführt: Bauelemente und Netze werden zu Knoten, jeder Anschluss eines Bauelements an ein Netz wird zu einer Kante zwischen ihnen, beschriftet mit der Anschlussrolle (Drain, Gate, Source, Bulk). Das Ergebnis ist ein sogenannter bipartiter Graph – Bauelement-Knoten sind ausschließlich mit Netz-Knoten verbunden, nie direkt untereinander.

Zwei Netzlisten sind genau dann elektrisch gleich, wenn zwischen ihren beiden Graphen eine Isomorphie existiert: eine eindeutige Zuordnung, die jeden Knoten des einen Graphen auf genau einen Knoten des anderen abbildet, sodass Kanten, Kantenbeschriftungen und Knotenattribute (Bauelement-Typ, W/L) erhalten bleiben. Graphisomorphie ist im allgemeinen Fall rechnerisch aufwendig – für Schaltungen mit Millionen von Transistoren wäre ein naiver Brute-Force-Vergleich aller möglichen Zuordnungen aussichtslos.

Iterative Verfeinerung statt Brute Force

LVS-Werkzeuge umgehen dieses Problem durch iterative Klassenverfeinerung. Zunächst erhält jeder Knoten eine grobe Anfangsklasse aus leicht bestimmbaren Merkmalen – Bauelement-Typ und Parameter bei Bauelement-Knoten, Anzahl angeschlossener Terminals bei Netz-Knoten. Anschließend wird wiederholt verfeinert: Jeder Knoten bekommt eine neue, feinere Klasse zugewiesen, die sich aus der Multimenge der Klassen seiner Nachbarn (samt Kantenbeschriftung) ergibt. Zwei zunächst gleich klassifizierte Knoten trennen sich, sobald sich ihre Nachbarschaften unterscheiden.

Dieser Vorgang wiederholt sich, bis sich keine Klasse mehr weiter aufteilen lässt. In gut entworfenen, wenig symmetrischen Schaltungen bleiben danach fast nur noch einelementige Klassen übrig – jeder Knoten ist damit eindeutig einem Knoten der jeweils anderen Netzliste zugeordnet. Nur für die wenigen verbleibenden, tatsächlich symmetrischen Gruppen (etwa parallel geschaltete, identische Dummy-Finger eines Transistors) muss der Algorithmus noch alle verbleibenden Zuordnungsmöglichkeiten innerhalb dieser kleinen Gruppe durchprobieren – ein Aufwand, der selbst bei Millionen Bauelementen praktikabel bleibt, weil diese Restgruppen erfahrungsgemäß winzig sind.

Das folgende Diagramm zeigt diesen Verfeinerungsschritt am Beispiel des Inverters aus den vorigen Abschnitten: links die Anfangsklassen, rechts das Ergebnis nach einer Verfeinerungsrunde.

Iterative Klassenverfeinerung auf dem bipartiten Inverter-Graphen: Anfangsklassen vs. nach einer Verfeinerungsrunde

5. Typische Mismatches

Vier wiederkehrende Fehlerbilder

Obwohl LVS-Werkzeuge im Detail sehr unterschiedliche Fehlermeldungen ausgeben, lassen sich die allermeisten Mismatches auf eine Handvoll wiederkehrender Ursachen zurückführen. Wer diese Muster kennt, findet die Fehlerursache im Layout meist deutlich schneller, als sich blind durch die Fehlerliste zu arbeiten.

Offenes Netz entsteht durch einen fehlenden oder falsch platzierten Kontakt: Zwei Strukturen, die laut Schaltplan verbunden sein sollen, bleiben im Layout elektrisch getrennt. Die Netzliste zeigt dann statt eines Netzes zwei – der LVS meldet meist ein „net not found" oder eine Netzanzahl-Abweichung, weil ein im Schaltplan erwartetes Netz im Layout in zwei Teile zerfällt.

Vertauschte Anschlüsse passieren leicht beim Kopieren oder manuellen Verdrahten eines Transistors: Source und Drain sind im Layout an die jeweils falschen Netze angeschlossen. Da Source und Drain bei den meisten MOSFETs geometrisch symmetrisch und damit austauschbar sind, bleibt das Layout DRC-clean – die Schaltung funktioniert danach aber elektrisch anders als beabsichtigt, oder gar nicht.

Fehlendes oder zusätzliches Bauelement entsteht meist durch einen Kopier-Fehler – eine Zelle wurde versehentlich doppelt platziert, oder beim Löschen eines Testelements wurde eine benötigte Struktur mit entfernt. Die beiden Netzlisten unterscheiden sich dann bereits in der schieren Bauelement-Anzahl, oft schon der einfachste aller Mismatches zu finden.

Parameter-Mismatch betrifft meist die Transistorweite W oder -länge L: Wurde im Layout eine andere Gate-Breite gezeichnet als im Schaltplan vorgesehen, bleibt die Konnektivität vollständig korrekt – Topologie und Bauelement-Typ stimmen überein, nur der Zahlenwert weicht ab. Viele LVS-Werkzeuge melden das nicht als harten Fehler, sondern als Warnung mit einer einstellbaren Toleranzgrenze, da geringfügige Abweichungen durch Rundung auf das Grid oft unvermeidlich sind.

Das folgende Diagramm zeigt alle vier Fehlerbilder im direkten Vergleich Layout vs. Schaltplan.

Vier typische LVS-Mismatches: offenes Netz, vertauschte Anschlüsse, Bauelement-Mismatch, Parameter-Mismatch

6. LVS im Entwurfsablauf

Position zwischen DRC und Parasitic Extraction

LVS läuft im Entwurfsablauf grundsätzlich nach dem Design Rule Check: Ein Layout muss zunächst DRC-clean sein, bevor ein LVS-Lauf sinnvolle Ergebnisse liefert – auf einem geometrisch fehlerhaften Layout (etwa mit sich überlappenden, eigentlich getrennten Strukturen) ließe sich ohnehin keine verlässliche Netzliste extrahieren. Beide Prüfungen zusammen bilden das, was in der Praxis als „Signoff" bezeichnet wird: Ein Layout, das weder DRC- noch LVS-clean ist, geht nicht zur Fertigung.

Wie beim DRC ist auch der LVS-Lauf kein einmaliges Ereignis am Ende, sondern Teil eines iterativen Zyklus: Jede gemeldete Abweichung – offenes Netz, vertauschter Anschluss, fehlendes Bauelement – muss im Layout behoben werden, wonach die Extraktion und der Vergleich erneut laufen. Bei umfangreichen Blöcken beschleunigen inkrementelle LVS-Läufe, die nach einer kleinen Layout-Änderung nur die betroffene Umgebung neu vergleichen, diesen Zyklus erheblich gegenüber einem vollständigen Neuvergleich des gesamten Blocks.

Was danach folgt

Ist ein Block sowohl DRC- als auch LVS-clean, schließt sich üblicherweise die Parasitic Extraction an: Aus der bereits verifizierten Layout-Geometrie werden nun zusätzlich die parasitären Widerstände und Kapazitäten der Verdrahtung berechnet und der Netzliste hinzugefügt – eine Aufgabe, die LVS selbst nicht übernimmt, da sie ausschließlich auf Konnektivität und Bauelement-Parameter prüft, nicht auf elektrische Feinheiten der Verdrahtung. Die so parasitär-annotierte Netzliste dient anschließend der Post-Layout-Simulation, die zeigt, ob die Schaltung auch mit den realen, layoutbedingten Verzögerungen und Spannungsabfällen noch wie vorgesehen funktioniert.

Erst wenn auch dieser letzte Schritt die Spezifikation bestätigt, ist ein Block bereit für den Tape-out – die Freigabe der Maskendaten an die Foundry.

Das folgende Diagramm zeigt diesen Ablauf im Überblick, von Schaltplan und Layout bis zum Tape-out.

LVS im Entwurfsablauf: von Schaltplan und Layout über DRC, LVS, Parasitic Extraction und Post-Layout-Simulation bis zum Tape-out