Hi Geoffrey,
I am not very clear about the query. I agree that analog expression as first expression allows you to use limexp inside ddx (as well as other expressions like real) which cannot be done if its just an expression.
But if I understand you correctly you don't want any analog operators to be used as part of ddx.
ddx(ic, V(t)) where ic is ddt(...) should always return 0 during a DC sweep, since the timebased proportional value using ddt is 0. [However during transient it might return a valid number].
regards,
Sri
> -----Original Message-----
> From: owner-verilog-ams-devmod@eda.org
> [mailto:owner-verilog-ams-devmod@eda.org] On Behalf Of Geoffrey.Coram
> Sent: Thursday, May 13, 2004 1:47 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 17:12:10 2004
This archive was generated by hypermail 2.1.8 : Wed May 12 2004 - 17:12:18 PDT