PSPICE Friends

Status
Not open for further replies.

lambchops511

Senior member
Apr 12, 2005
659
0
0
Hi All,

I am using PSPICE and I am trying to get the HP Memristor model simulating. The SPICE Model is given in this paper:http://dx.doi.org/10.1109/ISCAS.2011.5937942

Code:
MemristorHPTest

.SUBCKT modelmemristor plus minus PARAMS:
+phio=0.95 Lm=0.0998 w1=0.1261 foff=3.5e-6
+ioff=115e-6 aoff=1.2 fon=40e-6 ion=8.9e-6
+aon=1.8 b=500e-6 wc=107e-3
G1 plus internal value={sgn(V(x))*(1/V(dw))^2*0.0617*(V(phiI)*exp(-V(B)*V(sr))-(V(phiI)+abs(V(x)))*exp(-V(B)*V(sr2)))}
Esr sr 0 value={sqrt(V(phiI))}
Esr2 sr2 0 value={sqrt(V(phiI)+abs(V(x)))}
Rs internal minus 215
Eg x 0 value={V(plus)-V(internal)}
Elamda Lmda 0 value={Lm/V(w)}
Ew2 w2 0 value={w1+V(w)-(0.9183/(2.85+4*V(Lmda)-2*abs(V(x))))}
EDw dw 0 value={V(w2)-w1}
EB B 0 value={10.246*V(dw)}
ER R 0 value={(V(w2)/w1)*(V(w)-w1)/(V(w)-V(w2))}
EphiI phiI 0 value={phio-abs(V(x))*((w1+V(w2))/(2*V(w)))-1.15*V(Lmda)*V(w)*log(V(R))/V(dw)}
C1 w 0 1e-9 IC=1.2
R w 0 1e8MEG
Ec c 0 value={abs(V(internal)-V(minus))/215}
Emon1 mon1 0 value={((V(w)-aoff)/wc)-(V(c)/b)}
Emon2 mon2 0 value={(aon-V(w))/wc-(V(c)/b)}
Goff 0 w value={foff*sinh(stp(V(x))*V(c)/ioff)*exp(-exp(V(mon1))-V(w)/wc)}
Gon w 0 value={fon*sinh(stp(-V(x))*V(c)/ion)*exp(-exp(V(mon2))-V(w)/wc)}
.ENDS modelmemristor

Vtest IN 0 DC 0 SIN(0 1 1 0 0 0)

X0    IN  X modelmemristor
R0    X   0 2400


.TRAN 0 2 uic
.PROBE

.END


First, the above code runs: however when I change my .TRAN to ".TRAN 0 10 uic" I get an error specifically:"INTERNAL ERROR -- Overflow in device X0.Gon, Sinh" ... any ideas?

Thanks a lot.
 

PsiStar

Golden Member
Dec 21, 2005
1,184
0
76
I glanced over this & I do not have PSPICE code completely memorized, but I believe that you are attempting to increase the simulation time. If you lookup the shape of the sinh function you will see that it rapidly rises to large values which seems to be the issue.

I forget if there is an option for requesting the pspice engine to run with more accuracy. Maybe .opt accurate = 1 maybe? I might be getting that confused with HSPICE tho.o_O

Else, the intermediate values can be plotted some other options (you will need to look up) or just try smaller increments in .TRAN such as ".TRAN 0 5 uic" to find the limit.
 

lambchops511

Senior member
Apr 12, 2005
659
0
0
Thanks for the comment.

However; if you look inside the SINH ... theres a STP function in it which bounds the input to the SINH to -1 or 1... so SINH should never reach large values...
 
Status
Not open for further replies.