Medir la corriente de fuga de un inversor CMOS

3

Me gustaría medir la corriente de fuga de un inversor CMOS. Como esta corriente depende de la entrada, decidí medir algo promedio, a saber, la corriente de fuga de un anillo con dos inversores CMOS para que tanto los dispositivos PMOS como los dispositivos 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 (no se omiten las instrucciones 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).

Como tengo poca experiencia en esta área, realmente no puedo decir si lo que estoy haciendo tiene sentido. Le agradecería que alguien confirmara que el circuito cumple con 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 basado en las mediciones 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 empujar esta estimación tanto como 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 cargar es un subcircuito con un par de inversores ligeramente agrandados.

    
pregunta Ivan

1 respuesta

5

Si entendí correctamente su intención, está tratando de medir las corrientes de fuga utilizando la simulación de CC en el siguiente circuito:

Elcódigoqueobtuve(omitiendotodaslasconfiguracioneshabituales)es:

*********SimulationSettings-ParametersandSPICEOptions**********--------Devices:SPICE.ORDER>0--------MNMOS_1N_1ICGndGndNMOSW=250nL=250nAS=225fPS=2.3uAD=225fPD=2.3uMNMOS_2ICN_1GndGndNMOSW=250nL=250nAS=225fPS=2.3uAD=225fPD=2.3uMPMOS_1N_1ICVddVddPMOSW=500nL=250nAS=450fPS=2.8uAD=450fPD=2.8uMPMOS_2ICN_1VddVddPMOSW=500nL=250nAS=450fPS=2.8uAD=450fPD=2.8uVVddVddGndDC2.5*********SimulationSettings-Analysissection*********.dclinvVdd02.5100m*********SimulationSettings-AdditionalSPICEcommands*********.icv(IC)=0.printDCgate_leak<A>='(abs(i2(mNMOS_1))+abs(i2(mNMOS_2))+abs(i2(mPMOS_1))+abs(i2(mPMOS_2)))/4'.printDCsubth_leak<A>='(abs(i3(mPMOS_1))+abs(i3(mPMOS_2)))/2'.end

Tengaencuentaelusodelafunciónabs():esnecesarioporquelascorrientespuedentenerdiferentessignos.

Lasintaxisdelcomandodeimpresiónes:

i<#terminal>(<device_type><name>)

Enelejemploanterior:

  • Losterminales2y3representanGateySourcerespectivamente
  • msignificaMOSFET

Ylosrastrosresultantes:

Puede ver que el modelo que utilicé no modela las fugas de la puerta, o el valor es extremadamente pequeño (supongo que el primero es verdadero). La fuga por debajo del umbral, por otro lado, parece ser tenida en cuenta. De todos modos, usted dijo que sus modelos son precisos, por lo tanto, no debería ser un problema para usted.

La información anterior le ayudará a obtener los resultados que desea, pero creo que estos resultados no serán demasiado precisos. De hecho, para las corrientes por debajo del umbral serán muy inexactas. El motivo de esta inexactitud es que las corrientes por debajo del umbral tienen una dependencia exponencial en el sesgo de la Puerta a la Fuente. En la simulación de CC, esta polarización será constante para cada transistor. En aplicaciones reales, siempre hay algo de ruido que afecta al sesgo de la Fuente a la Fuente.

Una forma de mejorar ligeramente los resultados será agregar una 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 las aproximaciones que sean buenas en absoluto, tendrá que 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 mediciones se tomarán en cuenta durante el desarrollo de un hardware real, tendrá que ejecutar el análisis de Monte-Carlo para verificar los valores de las corrientes de fuga para toda una gama de condiciones de funcionamiento.

Espero que esto ayude.

    
respondido por el Vasiliy

Lea otras preguntas en las etiquetas