Diseño de un inversor CMOS de área mínima y respuesta simétrica Javier Valcarce y Enrique Alonso 28 de marzo de 2006 Índice 1. Inversor CMOS 1.1. Diseño . . . . . . . . . . . . . . . . . . . . . . . . 1.2. Esquema eléctrico . . . . . . . . . . . . . . . . . 1.3. Análisis DC (respuesta) . . . . . . . . . . . . . . 1.4. Análisis transitorio y paramétrico (retardo) . . . 1.4.1. Retardo intrínseco . . . . . . . . . . . . . 1.4.2. Retardo en función de la carga . . . . . . 1.5. Cálculo teórico del retardo . . . . . . . . . . . . . 1.5.1. Modelo DC del MOS . . . . . . . . . . . . 1.5.2. Retardo de subida . . . . . . . . . . . . . 1.5.3. Retardo de bajada . . . . . . . . . . . . . 1.6. Simulación vs cálculo teórico. Frecuencia máxima 1.7. Layout y celda estándar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 . 3 . 3 . 3 . 6 . 6 . 6 . 6 . 6 . 6 . 8 . 9 . 10 2. Puerta AND 12 2.1. Ubicación e interconexión de celdas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.2. Fichero GDSII para fabricación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 A. Cálculo del retardo con Octave 12 1 PÁGINA EN BLANCO 2 1. 1.1. Inversor CMOS Diseño Queremos diseñar un inversor CMOS de entrada en paralelo con respuesta simétrica y área mínima. Una condición de diseño es que para la mitad de la tensión de entrada, las corrientes de los transistores pMOS y nMOS deben ser iguales por lo que Wp Wn Kp0 = Kn0 (1) Lp Ln el área total que ocupan es A = Wp Lp + Wn Ln y nos interesa que sea mínima por lo que la segunda ecuación de diseño que tenemos es mı́n {A} = mı́n {Wp Lp + Wn Ln } (2) Como tenemos cuatro incógnitas y dos ecuaciones fijamos el valor de dos de ellas al valor mínimo que permite la tecnología (800nm) y despejamos las dos restantes. Debemos hacer las cuentas con las dimensiones efectivas en lugar de con las dibujadas Wn = 800nm −→ Wne = Wn − 2(−50nm) = 900nm Lp = 800nm −→ Lpe = Lp = 800nm despejando Wpe de (1) tenemos que Wpe = 1 Kn0 Lpe Wne Kp0 Lne (3) y sustituyendo (3) en (2) la función área A ya sólo depende de la variable independiente Lne A(Lne ) = Wne Lne + Kn0 1 Lpe 2 Wne Kp0 Lne (4) si minimizamos esta función derivando e igualando a cero, vemos que el valor de Lne que minimiza el área es s Kn0 L∗ne = Lp (5) Kp0 sustituyendo este valor en (3) obtenemos Wpe . Las dimensiones de los transistores son, pasánsolas ya a dimensiones dibujadas Wp Wn Lp Ln = 1450nm = 800nm = 800nm = 1439nm Estas dimensiones habrá después que corregirlas ligeramente al hacer el análisis DC en el simulador para que la respuesta del inversor sea perfectamente simétrica. 1.2. Esquema eléctrico Dibujamos el esquema eléctrico del inversor usando un transistor pMOS y nMOS con las dimensiones calculadas anteriormente y añadimos pads de E/S para crear un símbolo de circuito (Fig. 1). Para simular el circuito dibujamos otro esquema en el que conectamos una fuente VPULSE, el condensador de carga y el símbolo del inversor anteriormente creado (Fig. 2). 1.3. Análisis DC (respuesta) El análisis DC realiza un barrido entre 0V y 5V de la tensión de entrada y nos permite ver la respuesta del inversor. Viendo la gráfica Vsalida = f (Ventrada ) podemos ver si la respuesta es simétrica o no (Fig. 3). Con las dimensiones calculadas vemos que no es exactamente simétrica porque no pasa por el punto (2.5V, 2.5V) sino por el (2.5V, 1.95V) por lo que hay que ajustar ligeramente las dimensiones de los transistores. Como la tensión en el nMOS es menor que en el pMOS, su resistencia también lo es. Para aumentarla, tiene que pasar menos corriente y para eso debemos disminuir la relación Wn /Ln . Si aumentamos ligeramente Ln hasta 1550nm la respuesta corta a la bisectriz del primer cuadrante justo en (2.5V, 2.52V) que es ya una muy buena aproximación (Fig. 4). 3 Figura 1: Esquema electrico del inversor Figura 2: Circuito para simular el inversor 4 Figura 3: Respuesta del inversor con Figura 4: Respuesta del inversor con 5 Wn Ln Wn Ln original corregido (a) Tiempo de subida (b) Tiempo de bajada Figura 5: Tiempo de subida/bajada en la señal de entrada 1.4. Análisis transitorio y paramétrico (retardo) 1.4.1. Retardo intrínseco El retardo1 del inversor depende de la capacidad de carga y de los tiempos de subida τrise y bajada τf all de la señal de entrada. Si la entrada es lenta, la salida también lo será aunque nuestro inversor sea muy rápido. Por otra parte, una variación muy rápida en la entrada provoca sobreoscilación en la salida, por lo que habrá que llegar a un compromiso. Eligiendo capacidad de carga 0 y un tiempo de subida y de bajada que provoque sobreoscilación pequeña (<10 %) podremos ver el retardo intrínseco del circuito, i.e, el debido únicamente a sus capacidades parásitas. Hemos utilizado una señal cuadrada de 50MHz (T = 20ns) al 50 % con tiempos trise = 60ps y tf all = 60ps (Fig. 5). Los retardos que se obtienen al hacer el análisis transitorio (Fig. 6) son los siguientes: Retardo intrínseco de subida τrise = 110ps con sobreoscilacíón = +0.45V Retardo intrínseco de bajada τf all = 118ps con sobreoscilacíón = −0.43V 1.4.2. Retardo en función de la carga Mediante un análisis paramétrico usando como parámetro la capacidad de carga podemos ver que al aumentar la capacidad aumenta el retardo de la salida (Fig. 7). El estudio de los resultados de simulación se hace el apartado 1.6 1.5. Cálculo teórico del retardo 1.5.1. Modelo DC del MOS Para cálcular el retardo del inversor usamos el modelo DC todos los que tiene. 0 V2 Id = K Vds (Vgs − Vth ) − 2ds K (V − V )2 2 gs th del MOS con λ = 0, que es el más sencillo de si Vgs < Vth si Vds < Vgs − Vth si Vds ≥ Vgs − Vth El retardo se puede calcular de forma aproximada considerando que la des/carga del condensador se hace siempre a través de transistores saturados. En realidad los transistores siempre entran en óhmnica a medida que la tensión v del condensador se aproxima a Vcc /2 y por tanto la des/carga es más lenta y el retardo mayor. A continuación se presenta el cálculo EXACTO del retardo. 1.5.2. Retardo de subida La carga del condensador se produce a través del transistor pMOS. A medida que la tensión del condensador v crece desde 0V hasta Vcc /2 el pMOS pasa por dos estados de funcionamiento distintos: 1 El retardo se mide desde el 50 % de la entrada hasta el 50 % de la salida 6 Figura 6: Sobreoscilación de la salida y retardo intrínseco (a) Subida (b) Bajada Figura 7: τrise y τf all en función de la capacidad de carga Para 0V < v < 0.78V el pMOS se encuentra saturado y su modelo equivalente es una fuente de corriente constante. Al tiempo de carga en este estado le llamaremos ∆τrise1 Para 0.78V < v < 2.5V el pMOS se encuentra en zona lineal y su modelo equivalente es una fuente de corriente no constante. Al tiempo de carga en este estado le llamaremos ∆τrise2 Una vez resueltos estos dos modelos, el tiempo de subida (el que transcurre desde que v pasa de 0V a 2.5V ) será la suma ∆τrise = ∆τrise1 + ∆τrise2 pMOS en saturación 2 Considerando siempre valores absolutos Isat = Kp (Vgs − Vth ) = cte El condensador se carga a corriente constante C dv = Isat dt 7 que es una ecuación diferencial lineal con coeficientes constantes y se resuelve integrando Z Z Cdv − Isat dt = C1 Cv − Isat t = C1 la constante C1 de integración queda determinada al aplicar la condición inicial v(0) = 0 C1 = 0 el tiempo de carga del condensador hasta la tensión v = Vth es entonces ∆τrise1 = tv=V th = Vth C Isat pMOS en zona óhmnica 2 Considerando siempre valores absolutos Id = Kp Vds (Vgs − Vth ) − Vds /2 El condensador se carga ahora a corriente no constante, ya que Id depende de Vds y esta a su vez de la tensión v del condensador dv C = Id dt sustituyendo Vds = Vcc − v en la expresión de Id dv = Kp (Vcc − v)(Vgs − Vth ) − (Vcc − v)2 /2 dt dv C = −Kp /2 v 2 + −Kp (Vgs − Vth ) + Kp Vcc v + −Kp /2Vcc2 + Kp Vcc (Vgs − Vth ) dt | {z } | {z } | {z } C a c b que es una ecuación diferencial no lineal con coeficientes constantes y se resuelve integrando 2 Z Z 1 dv − dt = C1 av 2 + bv + c 2av + b −2 tanh−1 √ C√ − t = C1 con ∆ = 4ac − b2 < 0 −∆ −∆ C la constante C1 de integración queda determinada al aplicar la condición inicial v(0) = Vth y vale 2aVth + b 2 −1 √ √ tanh C1 = C −∆ −∆ el tiempo de carga del condensador hasta la tensión v = Vcc /2 es entonces ∆τrise2 1.5.3. = t v=Vcc /2 = C√ 3 2 2aVth + b aVcc + b −1 −1 √ √ tanh − tanh −∆ −∆ −∆ Retardo de bajada La descarga del condensador se produce a través del transistor nMOS y los cálculos son análogos a los anteriores, pero ahora con el nMOS. A medida que la tensión del condensador v decrece desde 5V hasta 2.5V el nMOS pasa por dos estados de funcionamiento distintos: Para 4.24V < v < 5V el nMOS se encuentra saturado y su modelo equivalente es una fuente de corriente constante. Al tiempo de carga en este estado le llamaremos ∆τf all1 Para 2.5V < v < 4.24V el nMOS se encuentra en zona lineal y su modelo equivalente es una fuente de corriente no constante. Al tiempo de carga en este estado le llamaremos ∆τf all2 Una vez resueltos estos dos modelos, el tiempo de bajada (el que transcurre desde que v pasa de 5V a 2.5V ) será la suma ∆τf all = ∆τf all1 + ∆τf all2 R 1 2 Nota: √ dv = √−2 tanh−1 2av+b + C1 con ∆ = 4ac − b2 < 0 av 2 +bv+c −∆ −δ 3 Nota: tanh−1 (x) ± tanh−1 (y) = tanh−1 x±y 1±xy pero esto no parece que nos ayude a simplicar mucho las expresión 8 nMOS en saturación Este cálculo es igual al del apartado anterior correspondiente, pero ahora el condensador se descarga a través del nMOS y por tanto hay que cambiar las constantes, corrientes, tensiones y condiciones iniciales del nMOS. Directamente ∆τf all1 = tv=Vcc −V th =C Vth Isat nMOS en zona óhmnica Este cálculo es igual al del apartado anterior correspondiente, pero ahora el condensador se descarga a través del nMOS y por tanto hay que cambiar las constantes, corrientes, tensiones y condiciones iniciales del nMOS. Directamente 2 aVcc + b 2a(Vcc − Vth ) + b √ √ ∆τf all2 = tv=Vcc /2 = C √ tanh−1 − tanh−1 −∆ −∆ −∆ esta vez con a = −Kn /2, b = Kn (Vcc − Vth ), y c = 0 como coeficientes de la EDO no lineal. 1.6. Simulación vs cálculo teórico. Frecuencia máxima El estudio teórico muestra que la relación entre el retardo y la capacidad es lineal, algo que confirma también la simulación (Fig. 8). La constante de proporcionalidad se puede calcular de forma teórica (como ya hemos hecho) o a partir de los datos de simulación mientras que la ordenada en el origen es el retardo intrínseco y sólo se puede obtener por simulación. En la tabla 1 se comparan los resultados de la simulación con los obtenidos de forma teórica. El retardo teórico es similar al obtenido por simulación. El error en la estimación de la pendiente de la gráfica hace que la direfencia entre ambos retardos (teórico y simulación) sea cada vez mayor a medida que aumentamos C. C 1.0e-14F 2.0e-14F 3.0e-14F 4.0e-14F 5.0e-14F 6.0e-14F 7.0e-14F 8.0e-14F 9.0e-14F 1.0e-13F Teórico (ps) ∆τrise ∆τf all 109 118 218 235 326 353 435 470 544 588 653 706 761 824 870 941 979 1059 1088 1178 Simulación (ps) ∆τrise ∆τf all 121 123 240 246 358 368 477 491 595 613 713 735 831 857 950 979 1068 1101 1186 1223 Cuadro 1: Incremento del retardo (∆) de subida/bajada en función de la capacidad de carga C El retardo del inversor, como hemos visto, depende tanto de sus capacidades intrínsecas (retardo intrínseco) como de la capacidad de carga. Cuando la puerta está conectada a otras, su carga es la capacidad de entrada de las puertas a las que se conecta. Por otra parte, el retardo total de una serie de puertas conectadas en serie, es la suma de los retardos.4 Por ejemplo, si nuestro inversor tiene una capacidad de entrada de C=10e-14F y tenemos 10 inversores en serie, el retardo total de la cadena es aproximadamente de (10-1) · [130ps (intrínseco) + 1223ps (incremento)] = 1.43us. Si estás puertas forman un bloque combinacional en un sistema digital síncrono, entonces la frecuencia máxima de operación del circuito es Tclk > 1.43us =⇒ Fmax = 698KHz o dicho de otra forma, si tenemos una frecuencia de reloj de 698KHz, entonces no podemos poner más de 10 puertas como estas en serie. 4 Se debe tomar el mayor de los dos retardos, en nuestro caso el de bajada 9 −9 Retardo (s) vs Capacidad (F) x 10 3 Subida Bajada Ajuste lineal y = p1·x + p2 Subida: p1=11781 p2=1.1607e−10 Bajada: p1=12056 p2=1.2950e−10 2.5 Retardo (s) 2 1.5 1 0.5 0 0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 Capacidad (F) 2 −13 x 10 Figura 8: τrise y τf all en función de la capacidad de carga 1.7. Layout y celda estándar A partir del esquema eléctrico del inversor usamos Virtuoso XL para crear un layout inicial. Como queremos crear una celda estándar que pueda conectarse a otras, debemos modificar este layout para adaptarlo a las normas y medidas de una celda estándar: Altura: 57.9µm Carriles de alimentación • Altura: 6µm • Capa: MET1 • Posición vertical: VSS en el borde inferior de la celda y VDD a 2.5µm del borde superior Altura del pozo: 32.8µm. Conexiones con el exterior (acceso vertical): • Capa: MET2 • Dimensiones del área de conexión: 2µm × 2µm Debemos dibujar la celda lo más estrecha posible, pero dejando un margen mínimo para que al interconectar otras celdas a los lados se sigan cumpliendo las reglas de diseño (DRC), el margen será de al menos la mitad de las distancias mínimas. Al crear el layout señalamos donde están los puntos de interconexión externos, los cuales deben estar situados en un contacto. Por último: la comparación del layout con el esquema usando la herramienta LVS (Layout vs Schematic). Para verificar que no falta nada, hacemos click sobre cada componente en el esquema y debemos ver como se ilumina el objeto correspondiente en el layout y viceversa. El layout del inversor se muestra en la Fig. 9 10 Figura 9: Layout del inversor 11 2. Puerta AND Para la realización de la puerta AND utilizamos una puerta estándar NAND de la biblioteca del fabricante y nuestro inversor conectados en serie (Fig. 10). Partimos del esquema eléctrico al cual debemos incorporar los PADS tipo P necesarios para la fabricación. En este caso el tamaño del circuito esta limitado por el tamaño de los pads (padlimited) ya que son mucho más grandes que nuestras dos celdas. 2.1. Ubicación e interconexión de celdas Utilizando Virtuoso XL obtenemos un layout a partir del esquema eléctrico de la puerta AND. Aunque existe una herramienta que realiza la ubicación y trazado de las pistas de interconexión automáticamente, lo vamos a hacer a mano. En primer lugar debemos colocar las dos celdas (NAND e inversor) juntas, de forma que los carriles de Vdd y Vss estén en contacto. A continuación añadimos elementos de la biblioteca para realizar la parte externa el circuito, i.e, CORNERS y SPACERS. Una vez colocados los CORNERS, SPACERS y PADS correctamente (deben coincidir exactamente), debemos realizar las líneas de interconexión, esto incluye tanto las líneas de interconexión entre las dos celdas (salida de NAND con entrada del inversor) como la conexión de los terminales externos de las celdas (A, B, C, Vdd y Vss). Trazamos las pistas (la verticales en MET2 y las horizontales en MET1) y situamos los terminales de E/S en las pistas correspondientes. El layout final se muestra en la Fig. 11. 2.2. Fichero GDSII para fabricación Una vez finalizado el layout debemos enviarlo a fabricación. El fabricante acepta el formato .gds, que contiene la información necesaria para fabricar el circuito utilizando el proceso tecnológico correspondiente. Se genera desde el menú EXPORT->STREAM en el programa principal. A. % % % % % % % % % % % % % % % % % Cálculo del retardo con Octave function [risetime, falltime] = delay(C) Calcula el retardo de un inversor CMOS (cálculo simplificado sin tener en cuenta las resistencias de las fuentes de corriente) risetime - Retardo de subida (hasta el 50% de Vcc=5V) falltime - Retardo de bajada (hasta el 50% de Vcc=5V) C - Capacidad de carga en faradios lma009, curso 2005/2006 Javier Valcarce García | javier.valcarce@gmail.com Enrique Alonso Fernandez | torpedix@hotmail.com function [risetime, falltime] = delay(C) Vcc = 5; % Transistor pMOS, parametros en valor absoluto % p_W = 1450; p_L = 800; p_K = 12.625e-6 * p_W / p_L; p_Vth = 0.78; % Corriente en saturación p_isat = p_K * (Vcc - p_Vth)^2; 12 Figura 10: Esquema electrico de la puerta AND 13 Figura 11: Layout FINAL de la puerta AND 14 % Coeficientes de la EDO p_a = -p_K/2; p_b = -p_K*(Vcc-p_Vth) + p_K*Vcc; p_c = -p_K/2*Vcc^2 + p_K*Vcc*(Vcc-p_Vth); p_delta = 4*p_a*p_c - p_b^2; p_selta = sqrt(-p_delta); % Transistor nMOS % n_W = 900; n_L = 1400; n_K = 32.780e-6 * n_W / n_L; n_Vth = 0.76; % Corriente en saturación n_isat = n_K * (Vcc - n_Vth)^2; % Coeficientes de la EDO n_a = -n_K / 2; n_b = +n_K * (Vcc-n_Vth); n_c = 0; n_delta = 4*n_a*n_c - n_b^2; n_selta = sqrt(-n_delta); % retardo: tiempo hasta llegar a la mitad de Vcc v = Vcc/2; % La constante C1 = 0; risetime1 = C1 % La constante C2 = risetime2 = C2 de integración para risetime1 es + C * p_Vth / p_isat; de integración para risetime2 es 2*C / p_selta * atanh((2*p_a * p_Vth + p_b) / p_selta); + -2*C / p_selta * atanh((2*p_a * v + p_b) / p_selta); % La constante de integración para falltime1 es C3 = -Vcc*C; falltime1 = -(C3 + C * (Vcc-n_Vth)) / n_isat; % La constante de integración para falltime2 es C4 = -2*C / n_selta * atanh((2*n_a * (Vcc - n_Vth) + n_b) / n_selta); falltime2 = C4 + 2*C / n_selta * atanh((2*n_a * v + n_b) / n_selta); risetime = risetime1 + risetime2; falltime = falltime1 + falltime2; 15