RNLRich Netlist
DE

Translated from English by AI; it may contain errors. Report an issue · The English terms are the normative ones. Glossary

RICH NETLIST · LANGUAGE 0.3Standardserie 0.3

Sprachüberblick

Die Sprache auf einen Blick, danach neun Abschnitte mit je einem Kernkonzept und einige Beispiele – alles interaktiv zum Ausprobieren

Die Einführung erläutert, warum es RNL gibt; dieser Überblick zeigt, wie die Sprache aussieht, und behandelt anschließend die Regeln des Sprachstandards 0.3, auf die die Einführung nicht im Detail eingeht. Jedes Beispiel wurde mit rnl check aus dem Toolkit fehlerfrei geprüft (mit Ausnahme der Beispiele mit absichtlichen Fehlern); die Zeichnungen wurden für diese Seite von Hand platziert.

  1. T0Auf einen BlickAufbau einer Anweisung, Schlüsselwortfamilien, wie eine Ebene wirksam wird
  2. T1SätzeNotation und Standardsätze
  3. T2DefinitionenAS und ATTACH; eigene Definitionen schreiben
  4. T3StandardpaketWas man erhält, wenn man gar nichts schreibt
  5. T4Mengen und AuswahlenEntpacken um eine Ebene, Auswählen nach Bedingung, einmal pro Ebene
  6. T5LeitungenGemeinsame Punkte, sechs Modi, Busse, Bündel
  7. T6TextBeschriftungen, Anmerkungen, Schlüssel, Textauszeichnung
  8. T7Ausrichtungy nach oben, acht Codes, Ausrichtungsrelationen
  9. T8PrioritätWie Konflikte aufgelöst werden; Zusammenspiel dreier Einträge
  10. T9KopfeintragVersion, Alias-Pakete, PDK-Anschlüsse
  11. EBeispieleHierarchie, eigene Symbole, Regeln und Ergänzungen, Änderungen und Konflikte

T0 · Auf einen Blick

Wie die Sprache RNL aussieht

Die folgende Notation entspricht dem Sprachstandard 0.3: 46 Schlüsselwörter; als Standardsätze geschrieben lesen sich Anweisungen wie normale Sätze, und sie lassen sich auch auf Chinesisch verfassen. Die Laufzeitbibliothek des Toolkits implementiert sämtliche Schlüsselwörter. Versionen 0.x geben untereinander kein Kompatibilitätsversprechen; Werkzeuge lesen weiterhin Dateien der Version 0.2.

Aufbau einer Anweisung

Schlüsselwort Netzlistenobjekt Lokaler Name Definition Freitext
* @RNL(author="designer") { * Input pair: %dp1 = #M1(in_p) and #M2(in_n) treated @AS $DIFFERENTIAL_PAIR; * }
TippFahren Sie mit der Maus über einen Teil oder wechseln Sie mit der Tab-Taste durch die Elemente.

Zwei Schreibweisen für dieselbe Anweisung

Freitext dient nur dem Menschen; daher kann ein und dieselbe Anweisung als reine Notation oder als Standardsatz geschrieben werden. Maschinen lesen exakt dasselbe, und Werkzeuge können verlustfrei zwischen den Schreibweisen umwandeln.

Notation
Englisch

Referenzpräfixe (Sigils)

Auf einen Blick erkennen, was zur Netzliste und was zu RNL gehört.

Instanz in der Netzlistenur referenziert, nie neu erzeugt
Netzein Knoten in der Netzliste
Anschlussnach Name oder nach Position wie #M1:1 (ab 1 gezählt)
Port dieser Teilschaltungdefiniert durch .subckt; ein einzelnes # steht für die Teilschaltung selbst
Name auf dieser Ebeneeinmal pro Ebene gebunden, nur dort sichtbar
Definitionein Symbol, Stil, eine Definition oder Menge; wird nach unten vererbt
Rolle in einer Definitionwird beim Anwenden durch Objekte ausgefüllt; in einem Symbol steht ein einzelnes ? für die damit gezeichnete Instanz
Punkt„_“ überlässt diese Achse dem Solver; %j = (10, 10) ist ein benannter Punkt
Mengegeordnet; entpackt sich in einer anderen Menge um eine Ebene, während {{…}} ein einzelnes Element bleibt
Buseine Gruppe indizierter Netze oder Instanzen, etwa #XI<3:0>
Kindobjektetwa eine mit key benannte Beschriftung
Weiterleitung (Pipe)reicht ein Ergebnis an den nächsten Teil weiter; => %x gibt ihm einen Namen

Formen von Anweisungen

Objekt + Schlüsselwort

Setzt M1 auf (10, 20). Auch eine einzelne Achse genügt, etwa @PLACE(x=10); die andere bleibt dem Solver überlassen.

Menge

Geschweifte Klammern fassen eine geordnete Gruppe von Objekten zusammen: M1 und M2 teilen sich dasselbe y.

Rollen

Runde Klammern direkt nach einem Objekt geben an, welche Rolle der Definition es ausfüllt; „and“ und „are treated“ sind Freitext.

Benennung

Benennt das von der Anweisung erzeugte Objekt, sodass %g0 später verwendet werden kann, etwa zum Platzieren; => %g0 am Ende bewirkt dasselbe.

Weiterleitung (Pipe)

Jeder Abschnitt reicht sein Ergebnis an den nächsten weiter: erst platzieren, dann links-rechts spiegeln.

Eintrag

Ein Eintrag mit durch Semikolons getrennten Anweisungen. Der Eintragskopf gilt für jede Anweisung darin: author hält fest, wer ihn geschrieben hat, und priority legt die Standardpriorität fest (außer für AS und ATTACH, die die Priorität des Eintrags nur dann erben, wenn sie „disabled“ lautet).

Schlüsselwortfamilien

Die 46 Schlüsselwörter gliedern sich in neun Familien. Klicken Sie eines an, um seine Funktion und seinen Standardsatz zu sehen.

Fünf Layoutbedingungen

Jede Layoutabsicht lässt sich auf diese fünf Relationen zurückführen: Die ersten vier wirken auf x- oder y-Koordinaten, die fünfte auf Ausrichtungen. Eine Bedingung, die nur eine Achse nennt, gibt keine Richtung vor; erst eine Richtungsangabe wie "left-to-right" legt die Reihenfolge fest.

Ausrichten (Align): gleiches y, in einer Zeile.

Reihenfolge (Order): strikt entlang x. Nur mit Achsenangabe erfüllen sowohl Vorwärts- als auch Rückwärtsreihenfolge die Bedingung; "left-to-right" legt die Richtung fest.

Gleichmäßig verteilen (Distribute): gleiche Abstände zwischen Nachbarn, etwa um den Fußtransistor zu zentrieren.

Abstand (Distance): B mindestens 3 Einheiten rechts von A; mit "x" als Richtung darf jedes der beiden zuerst stehen.

Ausrichtungsrelation: B ist das links-rechts gespiegelte Abbild von A; wohin beide jeweils zeigen, entscheidet der Solver.

Wie eine Schaltungsebene wirksam wird

Sobald eine gesamte Ebene eingelesen ist, wird sie in neun festen Phasen verarbeitet. Deshalb darf ein Name schon vor seiner Definition verwendet werden und eine fehlerhafte Anweisung betrifft nur sich selbst; durch Regeln erzeugte Objekte – wie die vom Standardpaket ergänzten Massen – erhalten dennoch regulär ihre Symbole und Positionen.

SprachüberblickNeun interaktive Abschnitte: Sätze, Definitionen, Vorgaben des Standardpakets, Mengen und Auswahlen, Leitungen, Text, Ausrichtung, Priorität und Kopfeintrag.

T1 · Sätze

Anweisungen lesen sich wie Fakten: Notation und Sätze

Maschinen lesen nur die Notation: Referenzen mit # & % $, Schlüsselwörter mit @, Parameter in runden Klammern, geschweifte Klammern, Semikolons und =>. Die Wörter dazwischen sind Freitext, ob vorhanden oder nicht. Die Standardsätze geben jedem Schlüsselwort feste Begleitwörter, sodass sich gleichartige Anweisungen überall gleich lesen; das chinesische Alias-Paket überträgt dieselben Sätze ins Chinesische.

Maschinen lesen
Bedeutung

Wie die Standardsätze aufgebaut sind

  • Fakten statt BefehleEine Anweisung beschreibt, was in der Zeichnung gilt, nicht einen auszuführenden Befehl. Objekte bilden das Subjekt, das Schlüsselwort das Verb oder Substantiv, Parameter seine Werte; ergänzt werden nur Bindewörter wie is, are, has und there is.
  • Nicht mehr behaupten, als dastehtKeine Wörter, die mehr versprechen als die Anweisung selbst, wie must, only oder required: Menschliche Leser verlassen sich darauf, während Maschinen sie ignorieren.
  • Erläuternder ZusatzAuf einen Code oder eine Achse kann „, i.e., …“ zur Erklärung der Bedeutung folgen: #M2 @ORIENT("MX"), i.e., flipped upside down.
  • Was Freitext enthalten darfAußerhalb runder Klammern darf zwischen Tokens alles stehen außer @ # & % $ ? " ; = { } ( ) [ ] < >, einschließlich Satzzeichen; vor jedem @ muss ein Leerzeichen stehen.

Vier typische Stolpersteine

Eine Referenz inmitten von Freitext bleibt eine Referenz, während ein Name ohne Präfix zu Freitext wird.

Der Freitext M3 hat denselben Namen wie die Instanz #M3; fehlt hier ein Präfix?

M3 hat kein #, ist also Freitext: Nur M1 und M2 werden ausgerichtet.

Keine Meldung: Dies ist vollkommen gültig.

#M2 bleibt auch innerhalb der „Erklärung“ ein Objekt: PLACE erhält zwei Objekte und platziert beide, sodass auch M2 bei x = 0 landet. Reine Kommentare gehören in /* */.

Auf eine Referenz folgen . und ein Name: Anschlüsse verwenden :, daher ist .d hier Freitext.

Dies verweist auf M1 selbst statt auf seinen Drain; da CURRENT nur Anschlüsse akzeptiert, schlägt die Anweisung fehl. Schreiben Sie #M1:d.

Auf eine Referenz folgt !: Ein Name mit diesem Zeichen muss in Anführungszeichen stehen, etwa &"vdd!".

Ohne Anführungszeichen ist dies das Netz vdd gefolgt vom Freitext „!“, und auf dieser Ebene gibt es kein Netz vdd.

Eine vollständige Datei

Der Fünf-Transistor-OTA aus der Einführung mit der vollständigen Datei in Schritt 2.

ota5t.sp Im Viewer öffnen

T2 · Definitionen

AS sagt, was die Dinge sind; ATTACH sagt, was ihnen hinzugefügt wird

Eine Definition (@DEFINE) besitzt Rollen, Parameter und einen Rumpf. Ihre Anwendung mit AS oder ATTACH erzeugt ein Anwendungsobjekt (Usage), das benannt und ausgewählt werden kann. Differenzpaare, gespiegelte Paare, Massen und Portsymbole entstehen alle auf diese Weise, und ihre Definitionen stehen im Standardpaket.

@AS

Die Objekte bilden gemeinsam das Ganze. Die Definition steht am Ende, und die Objekte füllen ihre Rollen: M1 füllt in_p, M2 füllt in_n.

@ATTACH

Das Element wird den Objekten hinzugefügt. Die Definition steht am Anfang: An Netz vss wird eine Masse ergänzt; sie dient nur der Anzeige und stellt keine elektrische Verbindung her.

Was Dinge sind und wie sie gezeichnet werden

$CURRENT_MIRROR hat einen leeren Rumpf: Seine Anwendung vermerkt „dies ist ein Stromspiegel“ und ändert nichts an der Zeichnung. $MIRRORED enthält Bedingungen im Rumpf; beim Anwenden werden die Rollen durch die Objekte ersetzt und die Bedingungen in diese Ebene expandiert. $DIFFERENTIAL_PAIR vereint beides: Es vermerkt ein Differenzpaar, und sein Rumpf setzt den Fußtransistor mittig unter das Paar. Alle Bedingungen in den Rümpfen des Standardpakets haben die Priorität low: Was der Autor schreibt, hat Vorrang, und PRIORITY auf einer Anwendung schaltet sie ab.

Anwenden und expandieren
Gezeichnet

Eigene Definition schreiben

Im Rumpf werden Rollen als ?a und Parameter als ?gap geschrieben. Beim Anwenden stehen Parameter in den runden Klammern von AS; ohne sie gilt der Standardwert. Verschieben Sie den Regler für gap und beobachten Sie, wie sich Datei und Zeichnung gemeinsam ändern.

pair.sp
Gezeichnet

min=?gap ist ein Mindestabstand: Ein Solver darf sie weiter auseinanderrücken; diese Zeichnung zeigt die dichteste Anordnung.

Definitionen im Standardpaket

Die Sprache selbst weiß nichts von Differenzpaaren. Dies sind gewöhnliche, in RNL geschriebene Definitionen des Standardpakets; klicken Sie eine an, um ihren Quelltext zu sehen. Eine gleichnamige Definition in einer Datei überdeckt sie.

T3 · Standardpaket

Selbst wenn Sie nichts schreiben, entsteht eine Zeichnung

Das Standardpaket ist eine RNL-Datei mit Standardsymbolen, Stilen, Definitionen und Ergänzungsregeln. Es wird vor jeder Datei geladen, sodass alles in einer Datei Geschriebene es überschreiben kann; den Inhalt der einzelnen Pakete zeigt die Galerie der Standardpakete. Die Emitterschaltung unten beginnt als reine Netzliste; schalten Sie durch die beiden Voreinstellungen, um drei RNL-Zeilen hinzuzufügen und zu beobachten, wie sich die automatische Ergänzung des Standardpakets ändert (grau dargestellt).

ce.sp
RNL-Viewer

    Standardsymbole

    In einer SPICE-Netzliste werden Symbole zuerst nach dem ersten Buchstaben des Instanznamens und dann nach dem Modelltyp gewählt; in einer Spectre-Netzliste nach Master und Modelltyp. Ein SET-SYMBOL in einer Datei folgt später und überschreibt diese Vorgaben.

    InstanzenSymbolAnschlüsse
    R* C* L*$RESISTOR $CAPACITOR $INDUCTORp n
    V* I*$VOLTAGE_SOURCE $CURRENT_SOURCEp n
    D*$DIODEa k
    E* G*$VCVS_4TERM $VCCS_4TERMp n cp cn
    M*$NMOS_4TERM; Typ pmos $PMOS_4TERMd g s b
    Q*$NPN; Typ pnp $PNPc b e

    Die Symbole der übrigen Elemente wie F, H, B, S, W, J, T und U sowie das Aussehen jedes Symbols finden Sie in der Galerie der Standardpakete.

    Ergänzungsregeln (Auszug)

    Das Standardpaket ist selbst in RNL geschrieben. Einige Mengen dienen als Anknüpfungspunkte für Dateien: Fügt man Elemente hinzu oder entfernt sie, passt sich die Ergänzung automatisch an.

    T4 · Mengen und Auswahlen

    Mengen entpacken sich um eine Ebene; Auswahlen wirken als Regeln

    Geschweifte Klammern bilden eine geordnete Menge. Wird eine Menge innerhalb einer anderen Menge referenziert, bringt sie ihre einzelnen Elemente ein; soll sie als ein einziges Element erhalten bleiben, umschließt man sie mit einem weiteren Klammerpaar. Auch durch eine Auswahl (Selection) gefundene Objekte bilden eine Menge, und eine Auswahl wird auf ihrer eigenen Ebene sowie je einmal auf jeder Ebene darunter ausgewertet.

    Entpacken oder als ein Element behalten

    Angenommen, %s1 = {#M1 #M2} und %s2 = {#M3 #M4}. In unserem LLM-Schreibbenchmark erzeugten rund 15 Durchläufe die linke Form, obwohl die rechte gemeint war. Klicken Sie auf „Andere Anordnung“, um zu sehen, welche Platzierungen jede Form zulässt.

    Elemente:M1 M2 M3 M4

    Vier einzeln nacheinander geordnete Instanzen: nur M1 M2 M3 M4 oder genau umgekehrt.

    Elemente:{M1 M2} {M3 M4}

    Die beiden Gruppen werden nach ihren Mittelpunkten geordnet; innerhalb jeder Gruppe ist die Reihenfolge beliebig.

    Nach Bedingung auswählen

    Eine Auswahl sucht Objekte aus einem Bereich anhand einer Bedingung heraus: Mit # ist der Bereich die gesamte Ebene, mit einem Netz sind es die an dieses Netz angeschlossenen Objekte. Klicken Sie eine Anweisung an, um zu sehen, was sie auswählt.

      enable.sp

      Einmal auf jeder Ebene

      Eine Regel wird wie eine Definition behandelt: Auf der obersten Ebene geschrieben, wird sie auf der obersten Ebene und je einmal in jeder Teilschaltung darunter ausgewertet, wobei sie jeweils nur die Objekte der betreffenden Ebene betrachtet. Mit recursive=false wirkt sie nur auf ihrer eigenen Ebene.

      Oberste EbeneM9 nchXA ampXB ampR1
      Teilschaltung ampM1 nchM2 nchM3 pch
      Teilschaltung bias (innerhalb von amp)MB nchRB

      T5 · Leitungen

      Nur ein gemeinsamer Punkt verbindet Leitungen

      WIRE nimmt ein Netz und eine geordnete Liste von Punkten entgegen, jeweils ein Anschluss oder ein Punktobjekt. Das Netz dient nur der Zuordnung; die elektrischen Verbindungen werden weiterhin durch die Netzliste definiert. Ob gezeichnete Leitungen miteinander verbunden sind, hängt allein davon ab, ob sie sich dasselbe Punktobjekt oder denselben Anschluss teilen.

      tee.sp
      Gezeichnet

      Sechs Leitungsmodi

      Jeder Punkt der Liste wird durchlaufen; wie eine Leitung zwischen zwei Nachbarpunkten verläuft, bestimmt mode. Abgesehen von auto ist jeder Modus eine strikte geometrische Vorschrift, der Viewer exakt folgen. Klicken Sie in die Zeichnung, um den Endpunkt zu verschieben.

      Busse, Abzweige und Bündel

      Netzlisten kennen keine Busse: Ein Bus ist lediglich eine Darstellungsweise, bei der mehrere Netze als eine dicke Linie gezeichnet werden. Teilt sich eine einzelne Leitung einen Punkt mit dem Bus, entsteht ein Abzweig (Tap). Ein Bündel (BUNDLE) zeichnet eine Gruppe von Instanzen als ein gemeinsames Symbol, dessen Pins für die gleichnamigen Anschlüsse der einzelnen Elemente stehen.

      bus.sp
      Gezeichnet

      Wer den Pfad nicht selbst angeben möchte, übergibt mit &D<1> @ROUTE das gesamte Netz an den Solver: Verzweigungen, Pfade und Knotenpunkte legt dieser dann selbst fest.

      T6 · Text

      Text an einem Objekt ist eine Beschriftung; an einem Punkt eine Anmerkung

      Woran TEXT gehängt wird, entscheidet über drei Dinge: wessen Eigenschaften ${…} ausliest, wo der Text standardmäßig platziert wird und – bei Angabe eines key – wessen Kindobjekt er ist. Die eigene Position des Textes ist davon unabhängig und kann mit PLACE oder über dx und dy gesetzt werden.

      text.sp
      Gezeichnet

      Textauszeichnung

      Die Textauszeichnung nutzt eine kleine Teilmenge von LaTeX, die Sprachmodelle gut beherrschen. Tief- und Hochstellungen benötigen geschweifte Klammern, sodass g_m unverändert angezeigt wird; ${…} liest Eigenschaften des Objekts, an dem der Text hängt, hier M1 (W=2u L=0.5u). Ein unbekannter Befehl wird mit einer Warnung so angezeigt, wie er geschrieben wurde, und der Text bleibt gültig.

      Anzeige

      T7 · Ausrichtung

      x nach rechts, y nach oben; acht Ausrichtungscodes

      Koordinaten sind Rastereinheiten mit y nach oben, genau wie in Virtuoso. Eine Ausrichtung wirkt um den Ursprung des Symbols: Pinpositionen und Abgangsrichtungen der Leitungen drehen oder spiegeln sich mit, die zugehörigen Anschlüsse bleiben dieselben. Nur diese acht Codes sind zulässig; R90 dreht gegen den Uhrzeigersinn, und MYR90 sowie MXR90 spiegeln zuerst und drehen danach.

      Ausrichtungsrelationen

      ORIENT-RELATION legt keine absolute Richtung fest, sondern nur das Verhältnis: Die Ausrichtung von B ergibt sich aus der von A, gefolgt von dieser Transformation. $MIRRORED nutzt "MY": Wie auch immer A gedreht wird, B ist sein links-rechts gespiegeltes Abbild.

      T8 · Priorität

      Konflikte sind keine Fehler: erst zählt die Priorität, dann die Reihenfolge

      Jeder geometrische Fakt besitzt eine Priorität: disabled, low, normal (Standard) oder high. Fakten werden in der Reihenfolge ihrer Priorität (höchste zuerst) und innerhalb derselben Priorität in umgekehrter Schreibreihenfolge (spätere zuerst) aufgenommen; jeder Fakt bleibt erhalten, sofern er nicht den bereits behaltenen widerspricht. Ein PLACE besteht aus zwei Fakten, x und y, die unabhängig voneinander verworfen werden können; aus einer Anwendung expandierte Fakten nehmen in der Anweisungsreihenfolge die Position der Anweisung ein, die die Anwendung erzeugt.

      Wie drei Einträge zusammenspielen

      1Entwickler

      Semantik und Bedingungen, standardmäßig normal. Nach Belieben bearbeitbar.

      2Solver

      Koordinaten und Leitungen, Priorität high. Wird bei jedem Lösen als Ganzes ersetzt; hash speichert den Hashwert der gelösten Eingabe.

      3Editor

      Manuelle Änderungen werden dahinter angehängt, ebenfalls mit Priorität high: Da innerhalb einer Prioritätsstufe das Spätere gewinnt, überschreiben sie den Solver.

      Ändert sich die Eingabe, sodass der Hash nicht mehr passt, wird das alte Ergebnis weiterhin angezeigt; der Viewer schlägt lediglich ohne Fehlermeldung ein erneutes Lösen vor. Beim nächsten Lösen gelten die high-Koordinaten des Editors als feste Positionen, an die sich alles Übrige anpasst.

      E · Beispiele

      Einige kompakte Beispiele

      Links steht die Datei, rechts die Zeichnung. Fahren Sie mit der Maus über eine Zeile, um zu sehen, welchen Teil der Zeichnung sie steuert; fahren Sie über ein Element der Zeichnung, um die Zeilen hervorzuheben, die darauf verweisen.

      RNL-Viewer