RE: ddx and analog_expressions

From: McAndrew Colin-rp3881 <Colin.Mcandrew@freescale.com>
Date: Wed May 12 2004 - 10:30:27 PDT

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