gm=ddx(idio,V(a));
looks good to me. ddx(ic,V(t)) looks like an error to me.
if q=C*V(t,b) then ddx(ic,V(t)) would be zero,
real q;
q = [some function of V(t,b)];
I(t,b) <+ ddt(q);
ceff = ddx(q,V(t));
is what should be done. or am I missing something?
taking ddx() of a ddt() quantity does not seem to
make sense, we wanted derivatives for printing
and for some model usage, but these were
w.r.t. voltage. for a DC OP analyses ddt() is dropped
anyway.
colin
-----Original Message-----
From: owner-verilog-ams-devmod@eda.org [mailto:owner-verilog-ams-devmod@eda.org] On Behalf Of Geoffrey.Coram
Sent: Wednesday, May 12, 2004 9:17 AM
To: VerilogA Device Modeling Reflector
Subject: ddx and analog_expressions
Hi -
I had written the syntax for ddx as
ddx(expression, ...)
but I'm trying to decide if that ought to be
an analog_expression.
If I have
I(a,b) <+ IS * (limexp(V(a,c)/$vt)-1);
I'd like to write
gm = ddx(IS * (limexp(V(a,c)/$vt)-1), V(a));
but this won't work in the proposed syntax because
the inside is an analog_expression.
If I write
parameter real IS = 1e-14;
real idio;
idio = IS * (limexp(V(a,c)/$vt)-1);
I(a,c) <+ idio;
gm = ddx(idio, V(a));
It looks to me that "idio" (a real_identifier)
is a primary and thus an expression (a plain
expression as well as an analog_expression), so
the proposed syntax is fine.
Now, what if I have
real q, ic;
q = [some function of V(t,b)];
ic = ddt(q);
I(t,b) <+ ic;
ceff = ddx(ic,V(t));
Really, the last statement should be
ceff = ddx(q,V(t));
so what does ddx(ic,V(t)) give me?
-Geoffrey
Received on Wed May 12 10:31:06 2004
This archive was generated by hypermail 2.1.8 : Wed May 12 2004 - 10:31:14 PDT