¿Por qué el oscilador de anillo muestra un gráfico irregular?

Estoy tratando de diseñar un oscilador de anillo en CADENCE usando 180 CMOS. En lugar de mostrar una salida de reloj invertida, la salida cambia en rangos de menos de milivoltios. Cuando conecto solo 9 inversores como este esquema:ingrese la descripción de la imagen aquí

El gráfico de salida para los últimos 3 nodos es así:ingrese la descripción de la imagen aquí

La vista ampliada de este gráfico es:ingrese la descripción de la imagen aquí

estos cambios ocurren en menos de nanovoltios, lo que debe considerarse nada más que ruido (supongo)

Si aumento significativamente la cantidad de CMOS (45 CMOS), entonces este gráfico se convierte en esto donde la variación aún no cruza el rango de milivoltios:ingrese la descripción de la imagen aquí

No hice ningún cálculo para esto, ya que para un propósito de simulación, pensé que no sería necesario. No estoy buscando ninguna frecuencia específica en este momento. Siempre que el mosfet sea suficiente para el diseño de la muestra.

¿Dónde podría cometer errores? ¿Qué tipo de cálculo debo hacer rápidamente para diseñar correctamente este oscilador de anillo?

Intente establecer una condición inicial en una puerta, puede estar buscando una solución estable, que por supuesto no está allí. ¿Los modelos CMOS incluyen capacitancia?
Sí, CMOS incluye capacitancia. No hay una opción de configuración de condición inicial en la puerta. Pero si uso un condensador y su voltaje inicial es 0, entonces funciona bien. Pero en el caso práctico, no puedo usar un condensador allí y no habrá posibilidad de establecer la condición inicial. Será un problema ?
Parece que podría ser simplemente un alias entre la forma de onda real y los puntos donde se muestrea. Eliminaría esa posibilidad antes de preocuparme por lo que realmente está haciendo el circuito.
@Anklon Puede usar un capacitor muy, muy pequeño como gancho para colgar una condición inicial, 1fF o 1aF, por ejemplo, esperaría diferencias más grandes entre las etapas del oscilador de anillo en la fabricación real.

Respuestas (1)

No tengo acceso a CADENCE.

Pero lo primero que me llama la atención de inmediato es que el ancho de su PMOS debe ser el doble (¿o más?) El ancho de su NMOS debido a la movilidad. Probablemente desee 20:1 en PMOS y 10:1 en NMOS, o algo así. Así que al usar w = 2 m para su NMOS luego use w = 4 m para su PMOS.

Aparte de eso, todavía no veo otros problemas. Pero tampoco tengo tus modelos y niveles. (Solo uso LTspice).


Aquí hay un ejemplo de mi carrera usando 9 etapas:

ingrese la descripción de la imagen aquí

Aquí está el esquema en LTspice que usé:

ingrese la descripción de la imagen aquí


Otra posibilidad son los modelos subyacentes que está utilizando. Los modelos detallados que estoy usando están aquí:

.model  N_50n  nmos  level = 54
+binunit = 1            paramchk= 1            mobmod  = 0          
+capmod  = 2            igcmod  = 1            igbmod  = 1            geomod  = 0          
+diomod  = 1            rdsmod  = 0            rbodymod= 1            rgatemod= 1          
+permod  = 1            acnqsmod= 0            trnqsmod= 0          
+tnom    = 27           toxe    = 1.4e-009     toxp    = 7e-010       toxm    = 1.4e-009   
+epsrox  = 3.9          wint    = 5e-009       lint    = 1.2e-008   
+ll      = 0            wl      = 0            lln     = 1            wln     = 1          
+lw      = 0            ww      = 0            lwn     = 1            wwn     = 1          
+lwl     = 0            wwl     = 0            xpart   = 0            toxref  = 1.4e-009   
+vth0    = 0.22         k1      = 0.35         k2      = 0.05         k3      = 0          
+k3b     = 0            w0      = 2.5e-006     dvt0    = 2.8          dvt1    = 0.52       
+dvt2    = -0.032       dvt0w   = 0            dvt1w   = 0            dvt2w   = 0          
+dsub    = 2            minv    = 0.05         voffl   = 0            dvtp0   = 1e-007     
+dvtp1   = 0.05         lpe0    = 5.75e-008    lpeb    = 2.3e-010     xj      = 2e-008     
+ngate   = 5e+020       ndep    = 2.8e+018     nsd     = 1e+020       phin    = 0          
+cdsc    = 0.0002       cdscb   = 0            cdscd   = 0            cit     = 0          
+voff    = -0.15        nfactor = 1.2          eta0    = 0.15         etab    = 0          
+vfb     = -0.55        u0      = 0.032        ua      = 1.6e-010     ub      = 1.1e-017   
+uc      = -3e-011      vsat    = 1.1e+005     a0      = 2            ags     = 1e-020     
+a1      = 0            a2      = 1            b0      = -1e-020      b1      = 0          
+keta    = 0.04         dwg     = 0            dwb     = 0            pclm    = 0.18       
+pdiblc1 = 0.028        pdiblc2 = 0.022        pdiblcb = -0.005       drout   = 0.45       
+pvag    = 1e-020       delta   = 0.01         pscbe1  = 8.14e+008    pscbe2  = 1e-007     
+fprout  = 0.2          pdits   = 0.2          pditsd  = 0.23         pditsl  = 2.3e+006   
+rsh     = 3            rdsw    = 150          rsw     = 150          rdw     = 150        
+rdswmin = 0            rdwmin  = 0            rswmin  = 0            prwg    = 0          
+prwb    = 6.8e-011     wr      = 1            alpha0  = 0.074        alpha1  = 0.005      
+beta0   = 30           agidl   = 0.0002       bgidl   = 2.1e+009     cgidl   = 0.0002     
+egidl   = 0.8          
+aigbacc = 0.012        bigbacc = 0.0028       cigbacc = 0.002
+nigbacc = 1            aigbinv = 0.014        bigbinv = 0.004        cigbinv = 0.004
+eigbinv = 1.1          nigbinv = 3            aigc    = 0.017        bigc    = 0.0028
+cigc    = 0.002        aigsd   = 0.017        bigsd   = 0.0028       cigsd   = 0.002
+nigc    = 1            poxedge = 1            pigcd   = 1            ntox    = 1
+xrcrg1  = 12           xrcrg2  = 5          
+cgso    = 6.238e-010   cgdo    = 6.238e-010   cgbo    = 2.56e-011    cgdl    = 2.495e-10     
+cgsl    = 2.495e-10    ckappas = 0.02         ckappad = 0.02         acde    = 1          
+moin    = 15           noff    = 0.9          voffcv  = 0.02       
+kt1     = -0.21        kt1l    = 0.0           kt2     = -0.042        ute     = -1.5
+ua1     = 1e-009       ub1     = -3.5e-019     uc1     = 0             prt     = 0
+at      = 53000
+fnoimod = 1            tnoimod = 0          
+jss     = 0.0001       jsws    = 1e-011       jswgs   = 1e-010       njs     = 1          
+ijthsfwd= 0.01         ijthsrev= 0.001        bvs     = 10           xjbvs   = 1          
+jsd     = 0.0001       jswd    = 1e-011       jswgd   = 1e-010       njd     = 1          
+ijthdfwd= 0.01         ijthdrev= 0.001        bvd     = 10           xjbvd   = 1          
+pbs     = 1            cjs     = 0.0005       mjs     = 0.5          pbsws   = 1          
+cjsws   = 5e-010       mjsws   = 0.33         pbswgs  = 1            cjswgs  = 5e-010     
+mjswgs  = 0.33         pbd     = 1            cjd     = 0.0005       mjd     = 0.5        
+pbswd   = 1            cjswd   = 5e-010       mjswd   = 0.33         pbswgd  = 1          
+cjswgd  = 5e-010       mjswgd  = 0.33         tpb     = 0.005        tcj     = 0.001      
+tpbsw   = 0.005        tcjsw   = 0.001        tpbswg  = 0.005        tcjswg  = 0.001      
+xtis    = 3            xtid    = 3          
+dmcg    = 0e-006       dmci    = 0e-006       dmdg    = 0e-006       dmcgt   = 0e-007     
+dwj     = 0e-008       xgw     = 0e-007       xgl     = 0e-008     
+rshg    = 0.4          gbmin   = 1e-010       rbpb    = 5            rbpd    = 15         
+rbps    = 15           rbdb    = 15           rbsb    = 15           ngcon   = 1
*
.model  P_50n  pmos  level = 54
+binunit = 1            paramchk= 1            mobmod  = 0          
+capmod  = 2            igcmod  = 1            igbmod  = 1            geomod  = 0          
+diomod  = 1            rdsmod  = 0            rbodymod= 1            rgatemod= 1          
+permod  = 1            acnqsmod= 0            trnqsmod= 0          
+tnom    = 27           toxe    = 1.4e-009     toxp    = 7e-010       toxm    = 1.4e-009   
+epsrox  = 3.9          wint    = 5e-009       lint    = 1.2e-008   
+ll      = 0            wl      = 0            lln     = 1            wln     = 1          
+lw      = 0            ww      = 0            lwn     = 1            wwn     = 1          
+lwl     = 0            wwl     = 0            xpart   = 0            toxref  = 1.4e-009   
+vth0    = -0.22        k1      = 0.39         k2      = 0.05         k3      = 0          
+k3b     = 0            w0      = 2.5e-006     dvt0    = 3.9          dvt1    = 0.635        
+dvt2    = -0.032       dvt0w   = 0            dvt1w   = 0            dvt2w   = 0          
+dsub    = 0.7          minv    = 0.05         voffl   = 0            dvtp0   = 0.5e-008     
+dvtp1   = 0.05         lpe0    = 5.75e-008    lpeb    = 2.3e-010     xj      = 2e-008     
+ngate   = 5e+020       ndep    = 2.8e+018     nsd     = 1e+020       phin    = 0          
+cdsc    = 0.000258     cdscb   = 0            cdscd   = 6.1e-008     cit     = 0          
+voff    = -0.15        nfactor = 2            eta0    = 0.15         etab    = 0          
+vfb     = 0.55         u0      = 0.0095       ua      = 1.6e-009     ub      = 8e-018     
+uc      = 4.6e-013     vsat    = 90000        a0      = 1.2          ags     = 1e-020     
+a1      = 0            a2      = 1            b0      = -1e-020      b1      = 0          
+keta    = -0.047       dwg     = 0            dwb     = 0            pclm    = 0.55       
+pdiblc1 = 0.03         pdiblc2 = 0.0055       pdiblcb = 3.4e-008     drout   = 0.56       
+pvag    = 1e-020       delta   = 0.014        pscbe1  = 8.14e+008    pscbe2  = 9.58e-007  
+fprout  = 0.2          pdits   = 0.2          pditsd  = 0.23         pditsl  = 2.3e+006   
+rsh     = 3            rdsw    = 250          rsw     = 160          rdw     = 160        
+rdswmin = 0            rdwmin  = 0            rswmin  = 0            prwg    = 3.22e-008  
+prwb    = 6.8e-011     wr      = 1            alpha0  = 0.074        alpha1  = 0.005      
+beta0   = 30           agidl   = 0.0002       bgidl   = 2.1e+009     cgidl   = 0.0002     
+egidl   = 0.8          
+aigbacc = 0.012        bigbacc = 0.0028       cigbacc = 0.002
+nigbacc = 1            aigbinv = 0.014        bigbinv = 0.004        cigbinv = 0.004
+eigbinv = 1.1          nigbinv = 3            aigc    = 0.69         bigc    = 0.0012
+cigc    = 0.0008       aigsd   = 0.0087       bigsd   = 0.0012       cigsd   = 0.0008
+nigc    = 1            poxedge = 1            pigcd   = 1            ntox    = 1
+xrcrg1  = 12           xrcrg2  = 5          
+cgso    = 7.43e-010    cgdo    = 7.43e-010    cgbo    = 2.56e-011    cgdl    = 1e-014     
+cgsl    = 1e-014       ckappas = 0.5          ckappad = 0.5          acde    = 1          
+moin    = 15           noff    = 0.9          voffcv  = 0.02       
+kt1     = -0.19        kt1l    = 0            kt2     = -0.052        ute     = -1.5
+ua1     = -1e-009      ub1     = 2e-018       uc1     = 0             prt     = 0
+at      = 33000
+fnoimod = 1            tnoimod = 0          
+jss     = 0.0001       jsws    = 1e-011       jswgs   = 1e-010       njs     = 1          
+ijthsfwd= 0.01         ijthsrev= 0.001        bvs     = 10           xjbvs   = 1          
+jsd     = 0.0001       jswd    = 1e-011       jswgd   = 1e-010       njd     = 1          
+ijthdfwd= 0.01         ijthdrev= 0.001        bvd     = 10           xjbvd   = 1          
+pbs     = 1            cjs     = 0.0005       mjs     = 0.5          pbsws   = 1          
+cjsws   = 5e-010       mjsws   = 0.33         pbswgs  = 1            cjswgs  = 5e-010     
+mjswgs  = 0.33         pbd     = 1            cjd     = 0.0005       mjd     = 0.5        
+pbswd   = 1            cjswd   = 5e-010       mjswd   = 0.33         pbswgd  = 1          
+cjswgd  = 5e-010       mjswgd  = 0.33         tpb     = 0.005        tcj     = 0.001      
+tpbsw   = 0.005        tcjsw   = 0.001        tpbswg  = 0.005        tcjswg  = 0.001      
+xtis    = 3            xtid    = 3          
+dmcg    = 0e-006       dmci    = 0e-006       dmdg    = 0e-006       dmcgt   = 0e-007     
+dwj     = 0e-008       xgw     = 0e-007       xgl     = 0e-008     
+rshg    = 0.4          gbmin   = 1e-010       rbpb    = 5            rbpd    = 15         
+rbps    = 15           rbdb    = 15           rbsb    = 15           ngcon   = 1   

Lo otro es dar las condiciones iniciales a la CADENCIA. Configuré el nodo llamado Osc en un voltio, para comenzar.

LTspice es un poco diferente en su funcionamiento, internamente. Así que podría ser otra cosa.

Gracias por todos los problemas por los que has pasado. Pero probé 2: 1 PMOS: relación de longitud de puerta NMOS pero no ayudó. Más tarde descubrí que es un problema para la configuración de la condición inicial. Pero mi preocupación es que, en el caso práctico, no pude establecer valores iniciales todo el tiempo. Entonces, ¿hacer cumplir la condición inicial creará problemas?
@Anklon Con .tran en Spice, resulta que el método de integración en sí mismo puede afectar la Q del sistema y, cuando se usan pasos de tiempo normales, el método Gear tiende a sobreamortiguar la respuesta, mientras que el método trap tiende justo al contrario. Una parte notable de LTspice es que utiliza un método de integración trapezoidal especialmente modificado que es absolutamente único en mi conocimiento. Es completamente neutral en este sentido. Ningún otro SPICE lo hace de esta manera y, debido a esto, tengo muchos menos problemas con el inicio del oscilador usando LTSpice y su método de integración de trampa modificado.
@Anklon En el fondo de mi mente, hay algo más sobre LTspice que ayuda... algo que tiene que ver con tratar de salir de las áreas mínimas/máximas locales. No fue recocido simulado. Era algo más. Pero también le dio a LTspice una ventaja única para los osciladores. Pero ya no puedo recordar la referencia y realmente no puedo decir si mi memoria es precisa en este punto. Pero sí sé que todos los simuladores de Spice tienen problemas aquí y técnicas que deben aplicarse para salir de los "bolsillos" locales y que, por lo general, vale la pena probar LTspice si tiene problemas aquí. También es gratis.
@Anklon No creo que agregar una condición inicial le cause ningún problema y creo que resolverá los problemas. Así que úsalo cuando funcione para ti. LTspice se inicia con y sin él. La única diferencia es la fase relativa a t = 0 .