RNLRich Netlist
ES

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

RICH NETLIST · LANGUAGE 0.3Serie estándar 0.3

Recorrido por el lenguaje

El lenguaje de un vistazo, seguido de nueve secciones — una idea en cada una — y varios ejemplos, todos prácticos

La introducción explica por qué existe RNL; este recorrido muestra qué aspecto tiene el lenguaje y luego aborda las reglas del estándar del lenguaje 0.3 que la introducción no desarrolla en detalle. Cada ejemplo se ha comprobado sin errores con rnl check del conjunto de herramientas, salvo los que contienen errores deliberados; los dibujos se han dispuesto a mano para esta página.

  1. T0De un vistazoAnatomía de una sentencia, familias de palabras clave y cómo surte efecto un nivel
  2. T1OracionesNotación y oraciones estándar
  3. T2DefinicionesAS y ATTACH; escribe la tuya propia
  4. T3Valores por defectoQué obtienes sin escribir nada
  5. T4Conjuntos y seleccionesExpansión de un nivel, selección por condición, evaluación una vez por nivel
  6. T5CablesPuntos compartidos, seis modos, buses y agrupaciones
  7. T6TextoEtiquetas, anotaciones, claves y marcado
  8. T7Orientacióny hacia arriba, ocho códigos y relaciones de orientación
  9. T8PrioridadCómo se resuelven los conflictos; convivencia de tres registros
  10. T9EncabezadoVersión, paquetes de alias y terminales de PDK
  11. EEjemplosJerarquía, símbolos personalizados, reglas y rellenos, ediciones y conflictos

T0 · De un vistazo

Qué aspecto tiene el lenguaje RNL

La notación que sigue corresponde al estándar del lenguaje 0.3: 46 palabras clave; escritas como oraciones estándar, las sentencias se leen como prosa y también pueden escribirse en chino. El entorno de ejecución del conjunto de herramientas implementa todas las palabras clave. Las versiones 0.x no prometen compatibilidad entre sí; las herramientas siguen leyendo archivos de la versión 0.2.

Anatomía de una sentencia

Palabra clave Objeto del netlist Nombre local Definición Texto libre
* @RNL(author="designer") { * Input pair: %dp1 = #M1(in_p) and #M2(in_n) treated @AS $DIFFERENTIAL_PAIR; * }
ConsejoPasa el cursor sobre cualquier parte o pulsa Tab para recorrerlas.

Dos maneras de escribir una misma sentencia

El texto libre es solo para las personas, de modo que una misma sentencia puede escribirse como notación escueta o como una oración estándar. Las máquinas leen exactamente lo mismo y las herramientas pueden convertir entre los distintos estilos en cualquier sentido.

Notación
Inglés

Prefijos de referencia

Distingue de un vistazo qué pertenece al netlist y qué pertenece a RNL.

Instancia en el netlistsolo referenciada, nunca creada
Redun nodo del netlist
Terminalpor nombre o por posición, como #M1:1 (empezando en 1)
Puerto de este subcircuitodefinido por .subckt; un signo # aislado representa el propio subcircuito
Nombre en este nivelvinculado una vez por nivel y visible únicamente en él
Definiciónun símbolo, estilo, definición o conjunto; se hereda hacia los niveles inferiores
Rol en una definiciónocupado por objetos al aplicarse; en un símbolo, un ? aislado representa la instancia dibujada con él
Punto“_” deja ese eje al solucionador; %j = (10, 10) es un punto con nombre
Conjuntoordenado; se expande un nivel dentro de otro conjunto, mientras que {{…}} se mantiene como un único miembro
Busun grupo de redes o instancias con índices, como #XI<3:0>
Objeto hijocomo una etiqueta nombrada mediante key
Tuberíapasa un resultado a la parte siguiente; => %x le asigna nombre

Formas de las sentencias

Objeto + palabra clave

Coloca M1 en (10, 20). También basta con indicar un solo eje, como en @PLACE(x=10); el otro queda a cargo del solucionador.

Conjunto

Las llaves contienen un grupo ordenado de objetos: M1 y M2 comparten la misma coordenada y.

Roles

Los paréntesis inmediatamente después de un objeto indican qué rol de la definición ocupa; “and” y “are treated” son texto libre.

Asignación de nombre

Asigna nombre al objeto que crea la sentencia para poder usar %g0 más adelante, por ejemplo al colocarlo; => %g0 al final hace lo mismo.

Tubería

Cada parte pasa su resultado a la siguiente: primero lo coloca y luego lo refleja de izquierda a derecha.

Registro

Un registro, con sentencias separadas por punto y coma. El encabezado del registro se aplica a todas las sentencias que contiene: author registra quién lo escribió y priority establece la prioridad por defecto (salvo en AS y ATTACH, que solo heredan la prioridad del registro cuando es "disabled").

Familias de palabras clave

Las 46 palabras clave se dividen en nueve familias. Haz clic en cualquiera para ver qué hace y su oración estándar.

Cinco restricciones de disposición

Toda intención de disposición se reduce a estas relaciones: las cuatro primeras actúan sobre las coordenadas x o y, y la quinta sobre las orientaciones. Una restricción que solo nombra un eje no fija el sentido; una dirección como "left-to-right" fija cuál va primero.

Alinear: misma coordenada y, en una fila.

Ordenar: estrictamente a lo largo de x. Si solo se indica el eje, tanto el orden directo como el inverso cumplen la restricción; "left-to-right" fija el sentido.

Distribuir: pasos iguales entre vecinos, por ejemplo para centrar la cola.

Distancia: B al menos 3 unidades a la derecha de A; con "x" como dirección, cualquiera de los dos puede ir primero.

Relación de orientación: B es la imagen especular horizontal de A; hacia dónde mira cada uno lo decide el solucionador.

Cómo surte efecto un nivel de un circuito

Una vez leído todo un nivel, se procesa en nueve fases fijas. Por eso un nombre puede utilizarse antes de su definición y una sentencia errónea solo se afecta a sí misma; los objetos generados por reglas, como las tierras que añade el paquete estándar, reciben igualmente símbolos y posiciones.

Recorrido por el lenguajeNueve secciones prácticas: oraciones, definiciones, valores por defecto del paquete estándar, conjuntos y selecciones, cables, texto, orientación, prioridad y encabezado.

T1 · Oraciones

Las sentencias se leen como hechos: notación y oraciones

Las máquinas leen únicamente la notación: referencias que empiezan por # & % $, palabras clave que empiezan por @, parámetros entre paréntesis, llaves, puntos y coma y =>. Las palabras situadas entre ellos son texto libre, estén o no presentes. Las oraciones estándar asignan sus palabras a cada palabra clave para que las sentencias de un mismo tipo se lean igual en todas partes; el paquete de alias en chino convierte esas mismas oraciones al chino.

Las máquinas leen
Se lee como

Cómo se escriben las oraciones estándar

  • Hechos, no órdenesUna sentencia expresa qué se cumple en el dibujo, no una acción por ejecutar. Los objetos son el sujeto, la palabra clave es el verbo o sustantivo y los parámetros son sus valores; solo se añaden palabras de enlace como is, are, has y there is.
  • Ni más ni menos de lo que diceNo se emplean palabras que afirmen más que la propia sentencia, como must, only o required: los lectores las toman al pie de la letra, pero las máquinas las ignoran.
  • Una glosaUn código o eje puede ir seguido de “, i.e., …” para explicar su significado: #M2 @ORIENT("MX"), i.e., flipped upside down.
  • Qué puede contener el texto libreFuera de los paréntesis, entre los tokens puede ir cualquier carácter salvo @ # & % $ ? " ; = { } ( ) [ ] < >, incluida la puntuación; delante de cada @ debe haber un espacio.

Cuatro descuidos frecuentes

Una referencia dentro del texto libre sigue siendo una referencia, mientras que un nombre sin su prefijo se convierte en texto libre.

El texto libre M3 tiene el mismo nombre que la instancia #M3; ¿falta un prefijo?

M3 no lleva #, por lo que es texto libre: solo se alinean M1 y M2.

Sin mensaje: esta sentencia es perfectamente válida.

#M2 sigue siendo un objeto incluso dentro de la “explicación”: PLACE recibe dos objetos y coloca cada uno, de modo que M2 también acaba en x = 0. Pon los comentarios meramente explicativos entre /* */.

Una referencia va seguida de . y un nombre: los terminales usan :, por lo que .d aquí es texto libre.

Esto hace referencia al propio M1, no a su drenador; CURRENT solo acepta terminales, así que la sentencia falla. Escribe #M1:d.

Una referencia va seguida de !: un nombre que contenga ese carácter debe ir entre comillas, como en &"vdd!".

Sin comillas, esto es la red vdd seguida del texto libre “!”, y este nivel no tiene ninguna red vdd.

Un archivo completo

El OTA de cinco transistores de la introducción, mostrando el archivo completo en el paso 2.

ota5t.sp Abrir en el visor

T2 · Definiciones

AS dice qué son las cosas; ATTACH dice qué se les añade

Una definición (@DEFINE) consta de roles, parámetros y un cuerpo. Al aplicarla con AS o ATTACH se crea un uso: un objeto al que se puede dar nombre y seleccionar. Los pares diferenciales, los pares reflejados, las tierras y las etiquetas de puerto surgen de este modo, y sus definiciones residen en el paquete estándar.

@AS

Los objetos juntos forman la estructura. La definición va al final y los objetos ocupan sus roles: M1 ocupa in_p y M2 ocupa in_n.

@ATTACH

El elemento se añade sobre los objetos. La definición va al principio: se añade una tierra en la red vss; existe únicamente para la visualización y no crea ninguna conexión.

Qué son las cosas y cómo se dibujan

$CURRENT_MIRROR tiene el cuerpo vacío: aplicarlo registra “esto es un espejo de corriente” y no cambia nada en el dibujo. $MIRRORED contiene restricciones en su cuerpo; al aplicarse, los objetos sustituyen a los roles y las restricciones se expanden en este nivel. $DIFFERENTIAL_PAIR tiene ambas cosas: registra un par diferencial y su cuerpo sitúa la cola centrada debajo del par. Las restricciones de los cuerpos del paquete estándar tienen todas prioridad low: lo que escribe el autor tiene preferencia y PRIORITY sobre un uso las desactiva.

Aplicación y expansión
Dibujado

Escribe la tuya propia

En el cuerpo, los roles se escriben ?a y los parámetros ?gap. Los parámetros se pasan entre los paréntesis de AS al aplicarla; si se omiten, se usa el valor por defecto. Arrastra el control deslizante para cambiar gap y observa cómo cambian a la vez el archivo y el dibujo.

pair.sp
Dibujado

min=?gap es un mínimo: un solucionador puede separarlas más; este dibujo muestra la disposición más compacta.

Definiciones en el paquete estándar

El lenguaje en sí no sabe nada de pares diferenciales. Estas son definiciones ordinarias que el paquete estándar escribe en RNL; haz clic en cualquiera para verla. Una definición con el mismo nombre escrita en un archivo tiene prioridad sobre ellas.

T3 · Valores por defecto

Aunque no escribas nada, se dibuja igualmente

El paquete estándar es un archivo RNL que contiene símbolos por defecto, estilos, definiciones y reglas de relleno. Se carga antes de cada archivo, de modo que cualquier cosa escrita en un archivo puede sustituirlo; consulta la galería de paquetes estándar para ver el contenido de cada paquete. La etapa en emisor común de abajo comienza como un netlist escueto; avanza por los dos ajustes predefinidos para añadir tres líneas de RNL y observar cómo cambia el relleno automático del paquete estándar (mostrado en gris).

ce.sp
Visor RNL

    Símbolos por defecto

    En un netlist SPICE, los símbolos se eligen primero según la primera letra del nombre de la instancia y luego según el tipo del modelo; en un netlist Spectre, según el master y el tipo del modelo. SET-SYMBOL en un archivo se evalúa después, por lo que los sustituye.

    InstanciasSímboloTerminales
    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; tipo pmos $PMOS_4TERMd g s b
    Q*$NPN; tipo pnp $PNPc b e

    Los símbolos de los demás elementos, como F, H, B, S, W, J, T y U, así como el aspecto de cada símbolo, se encuentran en la galería de paquetes estándar.

    Reglas de relleno (extracto)

    El paquete estándar está escrito en el propio RNL. Unos pocos conjuntos sirven de puntos de enganche para los archivos: basta con añadirles o quitarles miembros para que el relleno se adapte.

    T4 · Conjuntos y selecciones

    Los conjuntos se expanden un nivel; las selecciones son reglas

    Las llaves escriben un conjunto ordenado. Un conjunto referenciado dentro de otro aporta sus miembros; para conservarlo como un único miembro, envuélvelo en otro par de llaves. Los objetos elegidos por una selección también forman un conjunto, y una selección se evalúa en su propio nivel y una vez en cada nivel inferior.

    Expandido o como un único miembro

    Supongamos %s1 = {#M1 #M2} y %s2 = {#M3 #M4}. En nuestra prueba comparativa de escritura con LLM, unas 15 ejecuciones produjeron la forma de la izquierda cuando pretendían expresar la de la derecha. Pulsa “Otra disposición” para ver qué disposiciones permite cada una.

    Miembros:M1 M2 M3 M4

    Cuatro instancias ordenadas una por una: solo M1 M2 M3 M4 o el orden inverso.

    Miembros:{M1 M2} {M3 M4}

    Los dos grupos se ordenan según sus centros; dentro de cada grupo vale cualquier orden.

    Selección por condición

    Una selección elige objetos dentro de un ámbito según una condición: con #, el ámbito es todo el nivel; con una red, el ámbito son los objetos conectados a esa red. Haz clic en una sentencia para ver qué selecciona.

      enable.sp

      Una vez en cada nivel

      Una regla se trata como una definición: escrita en el nivel superior, se evalúa en el nivel superior y una vez en cada subcircuito inferior, examinando en cada caso únicamente los objetos de ese nivel. Con recursive=false surte efecto solo en el nivel donde está escrita.

      Nivel superiorM9 nchXA ampXB ampR1
      Subcircuito ampM1 nchM2 nchM3 pch
      Subcircuito bias (dentro de amp)MB nchRB

      T5 · Cables

      Solo un punto compartido une cables

      WIRE recibe una red y una lista ordenada de puntos, cada uno de los cuales es un terminal o un objeto punto. La red es solo una indicación; las conexiones las sigue definiendo el netlist. Que los cables dibujados se unan depende exclusivamente de si comparten el mismo objeto punto o terminal.

      tee.sp
      Dibujado

      Seis modos de trazado

      Se recorren todos los puntos de la lista; cómo va un cable entre dos puntos vecinos lo define mode. Salvo auto, cada modo es una regla estricta que los visores siguen fielmente. Haz clic en cualquier lugar del dibujo para mover el punto final.

      Buses, tomas y agrupaciones

      Los netlists no tienen buses: un bus es solo una manera de dibujar varias redes como una única línea gruesa. Un cable individual que comparte un punto con el bus constituye una toma (tap). Una agrupación (BUNDLE) dibuja un grupo de instancias como un solo símbolo cuyos pines representan los terminales del mismo nombre de sus miembros.

      bus.sp
      Dibujado

      Para no escribir el trazado a mano, &D<1> @ROUTE confía toda la red al solucionador: las ramificaciones, las rutas y los puntos de unión quedan a su cargo.

      T6 · Texto

      El texto sobre un objeto es una etiqueta; sobre un punto, una anotación

      A qué se acopla TEXT decide tres cosas: de quién lee las propiedades ${…}, dónde se coloca el texto por defecto y, cuando lleva key, de quién es objeto hijo. La posición propia del texto es independiente; puede fijarse con PLACE o mediante dx y dy.

      text.sp
      Dibujado

      Marcado de texto

      El marcado de texto utiliza un pequeño subconjunto de LaTeX que los modelos de lenguaje conocen bien. Los subíndices y superíndices requieren llaves, por lo que g_m se muestra tal cual; ${…} lee las propiedades del objeto al que está acoplado el texto, aquí M1 (W=2u L=0.5u). Un comando desconocido se muestra tal como está escrito junto con una advertencia, y el texto sigue siendo válido.

      Muestra

      T7 · Orientación

      x hacia la derecha, y hacia arriba; ocho códigos de orientación

      Las coordenadas son unidades de cuadrícula con y hacia arriba, igual que en Virtuoso. Una orientación actúa respecto al origen del símbolo: las posiciones de los pines y las direcciones de salida de los cables cambian con ella, pero los terminales a los que corresponden no. Solo se aceptan estos ocho códigos; R90 gira en sentido antihorario, y MYR90 y MXR90 primero reflejan y luego giran.

      Relaciones de orientación

      ORIENT-RELATION no fija ninguna dirección, sino únicamente la relación: la orientación de B es la de A seguida de esta transformación. $MIRRORED utiliza "MY": gire como gire A, B es su imagen especular de izquierda a derecha.

      T8 · Prioridad

      Los conflictos no son errores: primero por prioridad y luego por orden

      Todo hecho geométrico tiene una prioridad: disabled, low, normal (por defecto) o high. Los hechos se incorporan por orden de prioridad, de mayor a menor, y dentro de una misma prioridad primero el escrito más tarde; cada hecho se conserva a menos que contradiga los ya conservados. Un PLACE consta de dos hechos, x e y, que pueden descartarse por separado; los hechos expandidos a partir de un uso ocupan, en el orden de sentencias, la posición de la sentencia que crea dicho uso.

      Cómo conviven tres registros

      1Diseñador

      Semántica y restricciones, con prioridad normal por defecto. Se edita libremente.

      2Solucionador

      Coordenadas y cables, con prioridad high. Se reemplaza en bloque en cada resolución; hash registra la entrada que resolvió.

      3Editor

      Las ediciones manuales se añaden a continuación, también con prioridad high: dentro de una misma prioridad prevalece la posterior, de modo que sustituyen a las del solucionador.

      Cuando cambia la entrada y el hash deja de coincidir, el resultado anterior se sigue mostrando; el visor solo sugiere volver a resolver, sin dar error. En la siguiente resolución, las coordenadas de prioridad high del editor actúan como posiciones fijas y todo lo demás se reajusta.

      E · Ejemplos

      Unos pocos ejemplos breves

      El archivo está a la izquierda y el dibujo a la derecha. Pasa el cursor sobre una línea para ver qué parte del dibujo controla; pasa el cursor sobre una parte del dibujo para marcar las líneas que hacen referencia a ella.

      Visor RNL