Tiempos de subida y bajada iguales del inversor CMOS

Actualmente estoy intentando diseñar un inversor en el software de diseño Microwind que tenga tiempos de subida y bajada iguales. El tiempo de subida se define como el tiempo que tarda la salida del circuito en pasar del 10 al 90 por ciento de su valor total, y el tiempo de caída del 90 al 10 por ciento de su valor total.

Tengo entendido que, dado que la movilidad de los agujeros no es tan rápida como la movilidad de los electrones, el PMOS debe dimensionarse de manera que su ancho sea entre dos y tres veces mayor que el del NMOS. Sin embargo, parece que no puedo obtener una coincidencia completa en los tiempos de subida y bajada.

Mi flujo de trabajo es tal que diseño el inversor en Microwind y lo exporto como un formato de lista de red PSPICE, utilizando modelos de nivel 3 para NMOS y PMOS, que luego simulo con LTspice para investigar los tiempos de subida y bajada. Lo he hecho con tres casos: el ancho P es igual al ancho N, el ancho P es 2,5 veces el ancho N y el ancho P es 3,0 veces el ancho N.

Puedo observar que la diferencia entre los tiempos de subida y bajada cae de 2,277 ps a 1,177 ps a 1,073 ps a medida que la relación aumenta de 1 a 2,5 a 3,0, respectivamente. Sin embargo, no sé si esto es "suficientemente bueno" o no. Para fines de laboratorio, mi profesor ha indicado que es suficiente simplemente mostrar la mejora, pero me molesta la diferencia.

¿Es esto simplemente un artefacto de mi simulación causado por algún aspecto de los modelos MOSFET? ¿Es esto indicativo de un problema con mi diseño en el diseño? He adjuntado una netlist para la simulación 3.0. Los únicos parámetros que parecen cambiar de una proporción a otra son los anchos del PMOS (el parámetro "W=" en el elemento "MP1") y los capacitores que Microwind está agregando a la lista de conexiones. Sospecho que esto podría ser donde me estoy equivocando. Si estas capacitancias se reducen a partir de las longitudes físicas de, digamos, las líneas Vdd y Gnd, entonces tal vez la capacitancia adicional de esas longitudes sea suficiente para influir un poco en mis tiempos de subida y bajada (Mis líneas Vdd y Gnd no son perfectamente idénticas en todos los sentidos). diseños).

Mis disculpas si esta pregunta ha sido respondida, pero numerosas consultas diferentes al motor de búsqueda del sitio no parecieron mostrar ninguna entrada que aborde el problema del tiempo de subida y bajada como se investigó en la simulación ( Igualdad de tiempo de subida y bajada en CMOS circuitos ; esta entrada solo parece abordar los "por qué" de los tiempos de subida y bajada iguales que son deseables).

*
* IC Technology: CMOS 90nm - 6 Metal
*
VDD 1 0 DC 1.00
VA 6 0 PULSE(0.00 1.00 0.48N 0.03N 0.03N 0.48N 1.00N)
*
* List of nodes
* "Z" corresponds to n°3
* "A" corresponds to n°6
*
* MOS devices
MN1 0 6 3 0 N1  W= 0.80U L= 0.10U
MP1 1 6 3 1 P1  W= 2.40U L= 0.10U
*
C2 1 0  0.975fF
C3 3 0  1.160fF
C4 1 0  1.233fF
C6 6 0  0.033fF
*
* n-MOS Model 3 :
* low leakage
.MODEL N1 NMOS LEVEL=3 VTO=0.35 UO=500.000 TOX= 1.8E-9
+LD =0.008U THETA=0.300 GAMMA=0.400
+PHI=0.150 KAPPA=0.200 VMAX=130.00K
+CGSO=100.0p CGDO=100.0p
+CGBO= 60.0p CJSW=240.0p
*
* p-MOS Model 3:
* low leakage
.MODEL P1 PMOS LEVEL=3 VTO=-0.35 UO=200.000 TOX= 1.8E-9
+LD =0.008U THETA=0.300 GAMMA=0.400
+PHI=0.150 KAPPA=0.150 VMAX=100.00K
+CGSO=100.0p CGDO=100.0p
+CGBO= 60.0p CJSW=240.0p
*
* Transient analysis
*
.TEMP 27.0
.TRAN 0.01N 2.00N
* (Pspice)
.PROBE
.END
No es para desanimar a nadie que tenga sabiduría para impartir, me muero de hambre, pero acabo de terminar de ejecutar esta lista de conexiones a través de ngspice (estoy más familiarizado con el entorno GNU/Linux y he estado haciendo todo este trabajo de clase en una VirtualBox de Windows XP). Después de cambiar la línea de análisis de transitorios a ".tran .01ps 2.00ns" para garantizar muchos puntos de datos a medida que pasa de cero a 2ns, obtuve una diferencia mucho más reconfortante en los tiempos de subida y bajada de 0.03ps. Aunque, jugando al abogado del diablo, ¿debería estar más consolado por eso? ¿O todavía no es lo suficientemente bueno?
Estás modelando y simulando algo. Tal modelo, y la simulación que se ejecuta a partir de él, probablemente no sea tan similar al comportamiento de la vida real que le permitiría sacar más conclusiones de las que ya tiene. Por lo tanto, no tiene sentido perseguir estos números más de cerca, ya que el circuito real no se comportará exactamente así: las tendencias son la conclusión importante en esta simulación, y ya lo entendiste. Si desea construir un circuito de este tipo en la vida real, debe probar el resultado y luego acercarse iterativamente al resultado deseado.
¿Cómo estás "observando" el tiempo de subida y bajada? La determinación de estos parámetros desde la ventana del gráfico no es muy precisa. En su lugar, debe usar declaraciones .measure para automatizar la medición.
Dentro de LTspice, estaba usando la opción de hacer que dos cursores se ejecutaran a lo largo de un trazo en un gráfico. Entre la falta de granularidad asociada con el movimiento del mouse y mi tstep inicial de 0.01ns, sospecho que esto podría ser suficiente para explicar la falta de precisión en mis mediciones. Para la ejecución de ngspice, bajé tstep a 0.01ps, y ngspice envió cada punto de datos a un archivo que luego examiné manualmente para encontrar el mejor punto de voltaje (alrededor de las marcas de 0.900V y 0.100V) y comparar las marcas de tiempo.

Respuestas (1)

Definición del modelo de nivel 3: "Semiempírico": un modelo más cualitativo que utiliza la operación observada para definir sus ecuaciones. Esto data de 1980 ... Cualquier tipo de resultado decente (es decir, dentro del 10% de la realidad) necesitaría usar modelos de nivel 5 (AKA BSIM3). Recomendaría usar BSIM 3V3, que es el nivel de modelo 49 en la jerga de Star-HSPice.

Siempre que vaya a utilizar modelos obsoletos, debe prestar atención a su profesor y solo observar las tendencias. Sospecho que probablemente hay una razón por la que dijo eso.

Estás tratando con resultados ajustados a la curva.

Además, a menos que tenga habilitada la extracción parásita, es casi seguro que las capacidades de los rieles, como notó, no se extraen. El CJSW significa capacitancia, pared lateral de unión y es un valor calculado basado en el ancho y los tamaños S/D (como un ejemplo). Hay excelentes guías SPICE que te dicen cuáles son todos los parámetros, te sugiero que las busques y las leas.

¡Gracias por las sugerencias! He estado revisando los diversos modelos SPICE para MOSFET y es alucinante cuánto tiempo y energía se ha invertido en ellos durante décadas. Siempre he tratado los modelos como una caja negra, aunque cada vez está más claro que tendré que sumergirme en los diversos parámetros si quiero comprender completamente sus limitaciones dentro de la simulación. El siguiente enlace parece una buena referencia para los diversos modelos MOSFET: web.engr.oregonstate.edu/~moon/ece323/hspice98/files/… . Tengo mi trabajo cortado para mí.