• We’re currently investigating an issue related to the forum theme and styling that is impacting page layout and visual formatting. The problem has been identified, and we are actively working on a resolution. There is no impact to user data or functionality, this is strictly a front-end display issue. We’ll post an update once the fix has been deployed. Thanks for your patience while we get this sorted.

PSPICE Friends

Status
Not open for further replies.

lambchops511

Senior member
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.
 
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.😵

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.
 
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.
Back
Top