psp102, workaround adms ddx() translation

our adms .xml files do not support translation
of ddx() expressions, except at the toplevel in assignments.
  foo = ddx();         is supported
  foo = bar * ddx();   is not
This commit is contained in:
rlar 2017-07-17 21:10:47 +02:00
parent b9c85ccf6a
commit 9d0d90dad3
1 changed files with 51 additions and 50 deletions

View File

@ -2216,39 +2216,40 @@
vsat = Vds - vdss; vsat = Vds - vdss;
temp = Idse + Iimpacte + Igidle - Igde - isjun; // Total drain-current temp = Idse + Iimpacte + Igidle - Igde - isjun; // Total drain-current
gm = CHNL_TYPE * ddx(temp, V(`Gint, S)); gm = ddx( CHNL_TYPE * temp, V(`Gint, S));
gmb = -CHNL_TYPE * ddx(temp, V(S, `Bint)); gmb = ddx(-CHNL_TYPE * temp, V(S, `Bint));
gds = -CHNL_TYPE * ddx(temp, V(D, S)) - (gm + gmb); gds = ddx(-CHNL_TYPE * temp, V(D, S));
gds = gds - (gm + gmb);
gjs = -ddx(idjun, V(D, `Bjd)); gjs = ddx(-idjun, V(D, `Bjd));
gjd = -ddx(isjun, V(S, `Bjs)); gjd = ddx(-isjun, V(S, `Bjs));
css = CHNL_TYPE * ddx(Qd, V(D, S)); css = ddx( CHNL_TYPE * Qd, V(D, S));
csg = -CHNL_TYPE * ddx(Qd, V(`Gint, S)); csg = ddx(-CHNL_TYPE * Qd, V(`Gint, S));
csb = CHNL_TYPE * ddx(Qd, V(S, `Bint)); csb = ddx( CHNL_TYPE * Qd, V(S, `Bint));
csd = css - csg - csb; csd = css - csg - csb;
cgs = -CHNL_TYPE * ddx(Qg, V(D, S)); cgs = ddx(-CHNL_TYPE * Qg, V(D, S));
cgg = CHNL_TYPE * ddx(Qg, V(`Gint, S)); cgg = ddx( CHNL_TYPE * Qg, V(`Gint, S));
cgb = CHNL_TYPE * ddx(Qg, V(S, `Bint)); cgb = ddx( CHNL_TYPE * Qg, V(S, `Bint));
cgd = cgg - cgs - cgb; cgd = cgg - cgs - cgb;
cds = -CHNL_TYPE * ddx(Qs, V(D, S)); cds = ddx(-CHNL_TYPE * Qs, V(D, S));
cdg = -CHNL_TYPE * ddx(Qs, V(`Gint, S)); cdg = ddx(-CHNL_TYPE * Qs, V(`Gint, S));
cdb = CHNL_TYPE * ddx(Qs, V(S, `Bint)); cdb = ddx( CHNL_TYPE * Qs, V(S, `Bint));
cdd = cdg + cds + cdb; cdd = cdg + cds + cdb;
cbs = -CHNL_TYPE * ddx(Qb, V(D, S)); cbs = ddx(-CHNL_TYPE * Qb, V(D, S));
cbg = -CHNL_TYPE * ddx(Qb, V(`Gint, S)); cbg = ddx(-CHNL_TYPE * Qb, V(`Gint, S));
cbb = -CHNL_TYPE * ddx(Qb, V(S, `Bint)); cbb = ddx(-CHNL_TYPE * Qb, V(S, `Bint));
cbd = cbb - cbs - cbg; cbd = cbb - cbs - cbg;
cgsol = -CHNL_TYPE * ddx(Qfgd, V(D, S)); cgsol = ddx(-CHNL_TYPE * Qfgd, V(D, S));
cgdol = CHNL_TYPE * ddx(Qfgs, V(`Gint, S)); cgdol = ddx( CHNL_TYPE * Qfgs, V(`Gint, S));
cjsbot = -MULT_i * CHNL_TYPE * ABDRAIN_i * ddx(qdjunbot, V(D, `Bjd)); cjsbot = ddx(-MULT_i * CHNL_TYPE * ABDRAIN_i * qdjunbot, V(D, `Bjd));
cjsgat = -MULT_i * CHNL_TYPE * LGDRAIN_i * ddx(qdjungat, V(D, `Bjd)); cjsgat = ddx(-MULT_i * CHNL_TYPE * LGDRAIN_i * qdjungat, V(D, `Bjd));
cjssti = -MULT_i * CHNL_TYPE * LSDRAIN_i * ddx(qdjunsti, V(D, `Bjd)); cjssti = ddx(-MULT_i * CHNL_TYPE * LSDRAIN_i * qdjunsti, V(D, `Bjd));
cjs = cjsbot + cjsgat + cjssti; cjs = cjsbot + cjsgat + cjssti;
cjdbot = -MULT_i * CHNL_TYPE * ABSOURCE_i * ddx(qsjunbot, V(S, `Bjs)); cjdbot = ddx(-MULT_i * CHNL_TYPE * ABSOURCE_i * qsjunbot, V(S, `Bjs));
cjdgat = -MULT_i * CHNL_TYPE * LGSOURCE_i * ddx(qsjungat, V(S, `Bjs)); cjdgat = ddx(-MULT_i * CHNL_TYPE * LGSOURCE_i * qsjungat, V(S, `Bjs));
cjdsti = -MULT_i * CHNL_TYPE * LSSOURCE_i * ddx(qsjunsti, V(S, `Bjs)); cjdsti = ddx(-MULT_i * CHNL_TYPE * LSSOURCE_i * qsjunsti, V(S, `Bjs));
cjd = cjdbot + cjdgat + cjdsti; cjd = cjdbot + cjdgat + cjdsti;
end else begin end else begin
ise = is - isjun; ise = is - isjun;
@ -2287,39 +2288,39 @@
vsat = Vds - vdss; vsat = Vds - vdss;
temp = Idse + Iimpacte + Igidle - Igde - idjun; temp = Idse + Iimpacte + Igidle - Igde - idjun;
gm = CHNL_TYPE * ddx(temp, V(`Gint, S)); gm = ddx( CHNL_TYPE * temp, V(`Gint, S));
gmb = -CHNL_TYPE * ddx(temp, V(S, `Bint)); gmb = ddx(-CHNL_TYPE * temp, V(S, `Bint));
gds = CHNL_TYPE * ddx(temp, V(D, S)); gds = ddx( CHNL_TYPE * temp, V(D, S));
gjs = -ddx(isjun, V(S, `Bjs)); gjs = ddx(-isjun, V(S, `Bjs));
gjd = -ddx(idjun, V(D, `Bjd)); gjd = ddx(-idjun, V(D, `Bjd));
cdd = CHNL_TYPE * ddx(Qd, V(D, S)); cdd = ddx( CHNL_TYPE * Qd, V(D, S));
cdg = -CHNL_TYPE * ddx(Qd, V(`Gint, S)); cdg = ddx(-CHNL_TYPE * Qd, V(`Gint, S));
cdb = CHNL_TYPE * ddx(Qd, V(S, `Bint)); cdb = ddx( CHNL_TYPE * Qd, V(S, `Bint));
cds = cdd - cdg - cdb; cds = cdd - cdg - cdb;
cgd = -CHNL_TYPE * ddx(Qg, V(D, S)); cgd = ddx(-CHNL_TYPE * Qg, V(D, S));
cgg = CHNL_TYPE * ddx(Qg, V(`Gint, S)); cgg = ddx( CHNL_TYPE * Qg, V(`Gint, S));
cgb = CHNL_TYPE * ddx(Qg, V(S, `Bint)); cgb = ddx( CHNL_TYPE * Qg, V(S, `Bint));
cgs = cgg - cgd - cgb; cgs = cgg - cgd - cgb;
csd = -CHNL_TYPE * ddx(Qs, V(D, S)); csd = ddx(-CHNL_TYPE * Qs, V(D, S));
csg = -CHNL_TYPE * ddx(Qs, V(`Gint, S)); csg = ddx(-CHNL_TYPE * Qs, V(`Gint, S));
csb = CHNL_TYPE * ddx(Qs, V(S, `Bint)); csb = ddx( CHNL_TYPE * Qs, V(S, `Bint));
css = csg + csd + csb; css = csg + csd + csb;
cbd = -CHNL_TYPE * ddx(Qb, V(D, S)); cbd = ddx(-CHNL_TYPE * Qb, V(D, S));
cbg = -CHNL_TYPE * ddx(Qb, V(`Gint, S)); cbg = ddx(-CHNL_TYPE * Qb, V(`Gint, S));
cbb = -CHNL_TYPE * ddx(Qb, V(S, `Bint)); cbb = ddx(-CHNL_TYPE * Qb, V(S, `Bint));
cbs = cbb - cbd - cbg; cbs = cbb - cbd - cbg;
cgsol = CHNL_TYPE * ddx(Qfgs, V(`Gint, S)); cgsol = ddx( CHNL_TYPE * Qfgs, V(`Gint, S));
cgdol = -CHNL_TYPE * ddx(Qfgd, V(D, S)); cgdol = ddx(-CHNL_TYPE * Qfgd, V(D, S));
cjsbot = -MULT_i * CHNL_TYPE * ABSOURCE_i * ddx(qsjunbot, V(S, `Bjs)); cjsbot = ddx(-MULT_i * CHNL_TYPE * ABSOURCE_i * qsjunbot, V(S, `Bjs));
cjsgat = -MULT_i * CHNL_TYPE * LGSOURCE_i * ddx(qsjungat, V(S, `Bjs)); cjsgat = ddx(-MULT_i * CHNL_TYPE * LGSOURCE_i * qsjungat, V(S, `Bjs));
cjssti = -MULT_i * CHNL_TYPE * LSSOURCE_i * ddx(qsjunsti, V(S, `Bjs)); cjssti = ddx(-MULT_i * CHNL_TYPE * LSSOURCE_i * qsjunsti, V(S, `Bjs));
cjs = cjsbot + cjsgat + cjssti; cjs = cjsbot + cjsgat + cjssti;
cjdbot = -MULT_i * CHNL_TYPE * ABDRAIN_i * ddx(qdjunbot, V(D, `Bjd)); cjdbot = ddx(-MULT_i * CHNL_TYPE * ABDRAIN_i * qdjunbot, V(D, `Bjd));
cjdgat = -MULT_i * CHNL_TYPE * LGDRAIN_i * ddx(qdjungat, V(D, `Bjd)); cjdgat = ddx(-MULT_i * CHNL_TYPE * LGDRAIN_i * qdjungat, V(D, `Bjd));
cjdsti = -MULT_i * CHNL_TYPE * LSDRAIN_i * ddx(qdjunsti, V(D, `Bjd)); cjdsti = ddx(-MULT_i * CHNL_TYPE * LSDRAIN_i * qdjunsti, V(D, `Bjd));
cjd = cjdbot + cjdgat + cjdsti; cjd = cjdbot + cjdgat + cjdsti;
end end
`ifdef LocalModel `ifdef LocalModel