Warum Ringoszillator mit unregelmäßigem Diagramm?

Ich versuche, einen Ringoszillator in CADENCE mit 180 CMOS zu entwerfen. Anstatt den invertierten Taktausgang zu zeigen, ändern sich die Ausgänge in weniger als Millivoltbereichen. Wenn ich nur 9 Wechselrichter wie in diesem Schema anschließe:Geben Sie hier die Bildbeschreibung ein

Ausgabediagramm für die letzten 3 Knoten sind wie folgt:Geben Sie hier die Bildbeschreibung ein

Die vergrößerte Ansicht dieses Diagramms ist:Geben Sie hier die Bildbeschreibung ein

Diese Änderungen geschehen in weniger als Nanovolt-Wut, was als nichts als Rauschen betrachtet werden sollte (nehme ich an).

Wenn ich die Anzahl der CMOS erheblich erhöhe (45 CMOS), wird diese Grafik zu dieser, bei der die Variation den Millivoltbereich immer noch nicht überschreitet:Geben Sie hier die Bildbeschreibung ein

Ich habe dafür keine Berechnung durchgeführt, da ich dachte, dass dies für Simulationszwecke nicht erforderlich wäre. Ich suche im Moment keine bestimmte Frequenz. Vorausgesetzt, Mosfet sollte für das Musterdesign ausreichen.

Wo könnte ich Fehler machen? Welche Art von Berechnung sollte ich zu schnell durchführen, um diesen Ringoszillator richtig zu entwerfen?

Versuchen Sie, eine Anfangsbedingung für ein Gate festzulegen, es kann sein, dass es nach einer stabilen Lösung sucht, die natürlich nicht vorhanden ist. Enthalten die CMOS-Modelle eine Kapazität?
Ja, CMOS enthalten Kapazität. Am Gate gibt es keine Einrichtungsoption für die Anfangsbedingung. Aber wenn ich einen Kondensator und seine Anfangsspannung 0 verwende, funktioniert es gut. Aber im praktischen Fall kann ich dort keinen Kondensator verwenden und es besteht keine Möglichkeit, den Anfangszustand einzustellen. wird es ein Problem sein?
Es sieht so aus, als ob es sich einfach um ein Aliasing zwischen der tatsächlichen Wellenform und den Punkten handelt, an denen sie abgetastet wird. Ich würde diese Möglichkeit ausschließen, bevor ich mir Gedanken darüber mache, was die Schaltung tatsächlich tut.
@Anklon Sie können einen sehr sehr sehr kleinen Kondensator als Haken verwenden, um eine Anfangsbedingung aufzuhängen, beispielsweise 1fF oder 1aF. Sie würden größere Unterschiede zwischen Ringoszillatorstufen in der realen Fertigung erwarten.

Antworten (1)

Ich habe keinen Zugriff auf CADENCE.

Aber das erste, was mir sofort in den Kopf fällt, ist, dass Ihre PMOS-Breiten aufgrund der Mobilität doppelt (oder mehr?) So breit sein müssen wie Ihr NMOS. Sie möchten wahrscheinlich 20: 1 auf dem PMOS und 10: 1 auf dem NMOS oder so ähnlich. Also bei der Nutzung w = 2 μ für Ihr NMOS dann verwenden w = 4 μ für Ihr PMOS.

Ansonsten sehe ich noch keine weiteren Probleme. Aber ich habe auch nicht Ihre Modelle und Ebenen. (Ich benutze nur LTspice.)


Hier ist ein Beispiel für meinen Lauf mit 9 Etappen:

Geben Sie hier die Bildbeschreibung ein

Hier ist der Schaltplan in LTspice, den ich verwendet habe:

Geben Sie hier die Bildbeschreibung ein


Eine andere Möglichkeit sind die zugrunde liegenden Modelle, die Sie verwenden. Die detaillierten Modelle, die ich verwende, sind hier:

.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   

Die andere Sache ist, CADENCE die Anfangsbedingungen zu liefern. Ich habe den Knoten namens Osc auf ein Volt gesetzt, um anzufangen.

LTspice funktioniert intern etwas anders. Es könnte also etwas anderes sein.

Danke für all die Mühe, die du durchgemacht hast. Aber ich habe das Gate-Längenverhältnis PMOS: NMOS von 2: 1 ausprobiert, aber es hat nicht geholfen. Ich fand später heraus, dass es ein Problem für die Einrichtung der Anfangsbedingungen ist. Aber meine Sorge ist im praktischen Fall, dass ich nicht immer die Anfangswerte einstellen konnte. Das Erzwingen der Anfangsbedingung wird also Probleme verursachen?
@Anklon Mit .tran in Spice stellt sich heraus, dass die Integrationsmethode selbst das Q des Systems beeinflussen kann, und bei Verwendung normaler Zeitschritte neigt die Gear-Methode dazu, die Reaktion zu überdämpfen, während die Trap-Methode genau in die andere Richtung tendiert. Ein bemerkenswerter Teil von LTspice ist, dass es eine speziell modifizierte trapezförmige Integrationsmethode verwendet, die meines Wissens absolut einzigartig ist. Es ist in dieser Hinsicht völlig neutral. Kein anderes SPICE macht das so und deshalb habe ich viel weniger Probleme mit dem Oszillatorstart mit LTSpice und seiner modifizierten Trap-Integrationsmethode.
@Anklon Im Hinterkopf gibt es noch etwas anderes an LTspice, das hilft ... etwas, das damit zu tun hat, lokale Minima / Maxima-Bereiche zu verlassen. Es war kein simuliertes Glühen. Es war etwas anderes. Aber es gab LTspice auch einen einzigartigen Vorteil für Oszillatoren. Aber ich kann mich nicht mehr an die Referenz erinnern und kann nicht wirklich sagen, ob meine Erinnerung in diesem Punkt richtig ist. Aber ich weiß, dass alle Spice-Simulatoren hier Probleme und Techniken haben, die angewendet werden müssen, um aus lokalen "Taschen" herauszukommen, und dass LTspice normalerweise einen Versuch wert ist, wenn Sie hier Probleme haben. Es ist auch kostenlos.
@Anklon Ich glaube nicht, dass das Hinzufügen einer Anfangsbedingung Ihnen Probleme bereiten wird, und ich denke, es wird Probleme lösen. Verwenden Sie es also einfach, wenn es für Sie funktioniert. LTspice startet mit und ohne. Der einzige Unterschied ist die Phase relativ zu T = 0 .