Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

[Moved] Current drawn from supply with SPICE

Status
Not open for further replies.

dnanar

Junior Member level 1
Joined
May 8, 2014
Messages
17
Helped
0
Reputation
0
Reaction score
0
Trophy points
1
Activity points
140
Hi,


First, I apologize if I post that thread in the wrong section of the forum, but my question is 2/3 analog 1/3 digital.


I'm making a simple simulation in (H)SPICE of a 1 bit full adder. I'm a bit curious about the current drawn from the supply of my full adder: the current drawn when my input rises and my input gets down has a totally different shape (a,b is my input only b vary, c and s are my output, vdd is my supply):

screen.png

Does anybody know why when my input b goes up, i(vdd) rises? I thought i(vdd) should only fall, as it does when my input b goes down... I would be grateful if someone has an answer and know how to make i(vdd) shape when b goes up similar to i's shape when b goes down.

As a side note, I also don't understand why on average i(vdd) is around -25u... I thought it should be null (closer to 0 I mean), but that don't really matter for my problem.


Thank you!

P.S: My HSPICE code, if it's a mistake on that side...


Code:
.option abstol=1e-17 reltol=1e-17 post

*simulation
.tran 0.1p 100n 
.param vdd=1
.param Vdd10=0.1

*parameters
.param Tstart=80n
.param Tsimu=5n
.param Tsimu2=10n
.param Cval=10f
.param tstep=50p

Vdd     dd      0       DC      vdd 
Vdd2    dd2     0       DC      vdd 

Va   a   0 DC 0 
Vb   b   0 DC 0 pulse 0 vdd Tstart tstep tstep Tsimu Tsimu2
Vcin cin 0 DC 0

**** our circuitry to measure current from input supply ***
Xfa a b cin s c supply 0 fulladder

Xinv1 s  0 dd2 0 inverter *just to have some load after it
Xinv2 c 0 dd2 0 inverter
***************************************************************

.subckt fulladder vA vB vC S C vdd gnd
        XP1 n0 vA vdd TP m=8  *size: http://www.cs.tufts.edu/comp/103/notes/Lecture13%28Adders%29.pdf
        XP2 n0 vB vdd TP m=8
        XP3 n1 vC n0  TP m=8
        XN1 n1 vC n2  TN m=8
        XN2 n2 vA gnd TN m=4
        XN3 n2 vB gnd TN m=4

        XP4 l1 vA vdd TP m=8
        XP5 n1 vB l1  TP m=8
        XN4 n1 vA l2  TN m=4
        XN5 l2 vB gnd TN m=4

        Xi1 n1 C vdd gnd inverter

        XP6 n3 vA vdd TP m=4
        XP7 n3 vB vdd TP m=4
        XP8 n3 vC vdd TP m=4
        XP9 sb n1 n3  TP m=4
        XN6 sb n1 n4  TN m=2
        XN7 n4 vA gnd TN m=2
        XN8 n4 vB gnd TN m=2
        XN9 n4 vC gnd TN m=2

        XP10 l3 vA vdd TP m=6
        XP11 l4 vB l3  TP m=6
        XP12 sb vC l4  TP m=6
        XN10 sb vA l5  TN m=3
        XN11 l5 vB l6  TN m=3
        XN12 l6 vC gnd TN m=3

        Xi2 sb S vdd gnd inverter
.ends

.subckt inverter vin vout vdd gnd 
        XN vout vin gnd TN m=1
        XP vout vin vdd TP m=2
.ends

.subckt TN v1 v2 v3 m=1
        Mn v1 v2 v3 v3 N_50n W='m*50n' L=50n
.ends

.subckt TP v1 v2 v3 m=1
        Mp v1 v2 v3 v3 P_50n W='m*50n' L=50n
.ends


*our mosfet model
.param vth0n=0.22
.param vth0p=-0.22 

.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    = vth0n         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    = vth0p        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
*
 

Re: Current drawn from supply with SPICE

I'm answering to myself as I progressed a bit but still don't have the answer.

When looking more carefully to the voltage of my output, I saw that somehow i get a small negative voltage in my output:

screen.png

I guess this small drop makes my current rises. Does anyone know how to get ride of the drop of my output voltage? I've tried to change a bit the sizes of my transistors for the adder but didn't help much. Can anyone tell me if the size of my transistor looks okay please? Or if it's something else which is wrong?

Thanks.
 

Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top