//VerilogA for pd,msmpd,veriloga `include "constants.vams" `include "disciplines.vams" module msmpd(Vin,Gnd,Ipow,Iphase,Ilam); parameter real Lg = 3u from (0:inf); parameter real Se = 3726E-12 from (0:inf); parameter real Aa = 2757E-12 from (0:inf); parameter real Ac = 3114E-12 from (0:inf); parameter real Cf = 0.02 from (0:inf); parameter real Cc = 0.5 from [0:inf); parameter real Cno = 1.0E-12 from (0:inf); parameter real Ci = 0.38 from (0:inf); parameter real EPSs = 12.9 from (0:inf); parameter real D = 6u from (0:inf); parameter real ALFA = 1e10 from [0:inf); parameter real Un = 5500E-4 from (0:inf); parameter real Up = 400E-4 from (0:inf); parameter real Vns = 8.5E4 from (0:inf); parameter real Vps = 8.5E4 from (0:inf); parameter real Fth = 4.2E10 from (0:inf); parameter real Tnr = 0.2n from (0:inf); parameter real Tpr = 0.65n from (0:inf); parameter real Cm = 10 from (0:inf); parameter real Rdark = 9.1E9 from (0:inf); parameter real Cp = 0.1p from [0:inf); parameter real Rs = 5 from [0:inf); parameter real Rgnd = 50 from [0:inf); input Vin,Ipow,Iphase,Ilam; output Gnd; electrical Vin,Gnd,Ipow,Iphase,Ilam,Nin1,Nin2,Npn,Npp; real HV; real Go,Rnr,Rpr; real Ct,Cga,Cgc; real F,Vp,Vn; real Fg,Vng,Vpg; real Rnt,Rpt; branch (Nin1,Nin2) CCp,CCt,BIp,BIn,RRdark; branch (Gnd,Npn) BIon; branch (Npn,Gnd) RRnt,RRnr,CCnon; branch (Gnd,Npp) BIop; branch (Npp,Gnd) RRpt,RRpr,CCnop; analog begin HV=`P_H*`P_C/V(Ilam); Go=`P_Q*Ci*(1-exp(-ALFA*D))/HV; Cga=Cc*Aa*sqrt(Cno*V(Npn,Gnd)*`P_EPS0*EPSs/Se/D/V(Nin1,Nin2)); Cgc=Cc*Ac*sqrt(Cno*V(Npp,Gnd)*`P_EPS0*EPSs/Se/D/V(Nin1,Nin2)); F=Cf*V(Nin1,Nin2)/Lg; Fg=V(Nin1,Nin2)/Lg; Vp=Up*F/(1.0+Up*F/Vps); Vn=(Un*F+Vns*pow(F/Fth,4))/(1+pow(F/Fth,4)); Vpg=Up*Fg/(1.0+Up*Fg/Vps); Vng=(Un*Fg+Vns*pow(Fg/Fth,4))/(1+pow(Fg/Fth,4)); Ct=Cga*Cgc/(Cga+Cgc); Rnt=Lg/Vng/Cno; Rpt=Lg/Vpg/Cno; Rnr=Tnr/Cno; Rpr=Tpr/Cno; V(Vin,Nin1) <+ I(Vin,Nin1)*Rs; I(CCp) <+ Cp*ddt(V(CCp)); I(CCt) <+ Ct*ddt(V(CCt)); V(RRdark) <+ I(RRdark)*Rdark; I(BIp) <+ Cm*Cno*V(Npp,Gnd)*Vp/Lg; I(BIn) <+ Cm*Cno*V(Npn,Gnd)*Vn/Lg; I(BIon) <+ V(Ipow,Gnd)*Go; V(RRnt) <+ I(RRnt)*Rnt; V(RRnr) <+ I(RRnr)*Rnr; I(CCnon) <+ Cno*ddt(V(CCnon)); I(BIop) <+ V(Ipow,Gnd)*Go; V(RRpt) <+ I(RRpt)*Rpt; V(RRpr) <+ I(RRpr)*Rpr; I(CCnop) <+ Cno*ddt(V(CCnop)); V(Gnd,Nin2) <+ Rgnd*I(Gnd,Nin2); end endmodule