Me gustaría medir la corriente de fuga de un inversor CMOS. Como esta corriente depende de la entrada, decidí medir algo promedio, es decir, la corriente de fuga de un anillo con dos inversores CMOS para que tanto los dispositivos PMOS como los NMOS tengan la oportunidad de estar tanto en estado de encendido como de apagado. Estoy usando un simulador SPICE para este propósito. Mi circuito es el siguiente (se omiten las instrucciones no tan relevantes):
X1 in int dd ss bn bp inverter
X2 int in dd ss bn bp inverter
Vdd dd 0 1
Vbp bp 0 1
Vbn bn 0 0
Vss ss 0 0
.ic V(in) = 0
.probe dc Ileak = par('abs(I(Vdd)) / 2')
donde inversor es un subcircuito basado en dispositivos BSIM4 (v4.7).
Dado que tengo poca experiencia en esta área, realmente no puedo decir si lo que estoy haciendo tiene sentido. Agradecería si alguien pudiera confirmar que el circuito sirve para el propósito deseado.
Hay un aspecto más que me gustaría aclarar. Mi objetivo global es obtener una estimación aproximada de la corriente de fuga de un circuito más grande en función de las medidas de este pequeño anillo. Entiendo que esta estimación probablemente será (muy, muy) vaga y abstracta. Sin embargo, tal enfoque es lo suficientemente bueno para mí. Sin embargo, me gustaría llevar esta estimación lo más que pueda, y me pregunto si sería mejor incluir algunas cargas en el circuito entre los dos inversores como se muestra a continuación:
.subckt load in dd ss bn bp
X1 in int dd ss bn bp inverter M = 3
X2 int out dd ss bn bp inverter M = 12
.ends
X1 in int dd ss bn bp inverter
X1_1 int dd ss bn bp load
X2 int in dd ss bn bp inverter
X2_1 in dd ss bn bp load
Vdd dd 0 1
Vbp bp 0 1
Vbn bn 0 0
Vss ss 0 0
.ic V(in) = 0
.probe dc Ileak = par('abs(I(Vdd)) / 2')
donde la carga es un subcircuito con un par de inversores ligeramente agrandados.
Si entendí correctamente su intención, está tratando de medir las corrientes de fuga utilizando la simulación de CC en el siguiente circuito:
El código que obtuve (omitiendo todas las configuraciones habituales) es:
********* Simulation Settings - Parameters and SPICE Options *********
*-------- Devices: SPICE.ORDER > 0 --------
MNMOS_1 N_1 IC Gnd Gnd NMOS W=250n L=250n AS=225f PS=2.3u AD=225f PD=2.3u
MNMOS_2 IC N_1 Gnd Gnd NMOS W=250n L=250n AS=225f PS=2.3u AD=225f PD=2.3u
MPMOS_1 N_1 IC Vdd Vdd PMOS W=500n L=250n AS=450f PS=2.8u AD=450f PD=2.8u
MPMOS_2 IC N_1 Vdd Vdd PMOS W=500n L=250n AS=450f PS=2.8u AD=450f PD=2.8u
VVdd Vdd Gnd DC 2.5
********* Simulation Settings - Analysis section *********
.dc lin vVdd 0 2.5 100m
********* Simulation Settings - Additional SPICE commands *********
.ic v(IC)=0
.print DC gate_leak<A>='(abs(i2(mNMOS_1))+abs(i2(mNMOS_2))+abs(i2(mPMOS_1))+abs(i2(mPMOS_2)))/4'
.print DC subth_leak<A>='(abs(i3(mPMOS_1))+abs(i3(mPMOS_2)))/2'
.end
Tenga en cuenta el uso de la función abs() : es necesaria porque las corrientes pueden tener signos diferentes.
La sintaxis del comando de impresión es:
i<#terminal>(<device_type><name>)
En el ejemplo anterior:
Y las huellas resultantes:
Puede ver que el modelo que utilicé no modela las fugas de la puerta en absoluto, o el valor es extremadamente pequeño (supongo que lo primero es cierto). La fuga por debajo del umbral, por otro lado, parece tenerse en cuenta. De todos modos, dijiste que tus modelos son precisos, por lo tanto, no debería ser un problema para ti.
La información anterior lo ayudará a obtener los resultados que desea, pero creo que estos resultados no serán demasiado precisos. De hecho, para corrientes subliminales serán muy imprecisos. La razón de esta inexactitud es que las corrientes subumbrales tienen una dependencia exponencial del sesgo de puerta a fuente. En la simulación de CC, este sesgo será constante para cada transistor. En aplicaciones reales, siempre hay algo de ruido que afecta el sesgo de puerta a fuente.
Una forma de mejorar ligeramente los resultados será agregar alguna fuente de voltaje de "ruido" en serie a la entrada de cada inversor. Si barre el valor de este ruido, podrá tener una idea de cómo las corrientes de fuga pueden verse afectadas por el ruido. Sin embargo, para aproximaciones que sean buenas, deberá realizar un análisis transitorio y agregar fuentes de voltaje de ruido que se aproximen al ruido real que esperaría que estuviera presente en su sistema.
Si esta tarea no es solo educativa, sino que estas medidas se van a tener en cuenta durante el desarrollo de un hardware real, tendrá que ejecutar el análisis Monte-Carlo para comprobar los valores de las corrientes de fuga para una amplia gama de condiciones de funcionamiento.
Espero que esto ayude.
iN(M)
donde N
está el número del pin deseado del dispositivo especificado por M
. Además, si tuviera que medir todas las corrientes juntas sin necesidad de conocer la contribución de cada una individualmente, ¿sería correcto medir solo una corriente que fluye a través del nodo de tierra? ¡Gracias!Vdd
, no sobre el nodo de tierra. ¡Gracias!
marcador de posición
Iván
joe hass
vasiliy
Iván
.ic
comando; He actualizado el código de arriba.Iván
Vdd
, ¿no es así? Acerca de su pregunta con respecto a mi definición de la corriente de fuga subumbral , de acuerdo con la literatura que estoy leyendo, es la corriente entre la fuente y el drenaje de un transistor cuando el transistor está apagado/cerrado.vasiliy
marcador de posición
Iván
Russel McMahon
Iván
vasiliy