Re: Questions on BNF

From: Geoffrey.Coram <Geoffrey.Coram_at_.....>
Date: Wed Sep 06 2006 - 06:09:49 PDT
Sri Chandra wrote:
[re ddx(??, V(x,y)]
> 
> I remember that we had this discussion in the committee during LRM2.2
> meetings. The reason (probably Geoffrey might remember better) was to
> very clearly state when writing the equation which terminals are held
> constant while taking the symbolic derivative. Hence it was decided to
> go for the voltage of a node.
> 
> As an aside, i think there were some request for the second argument to
> be for eg. temperature since people would want to take derivative with
> other quantities. That discussion was deferred.

Sri is correct.  If you have Vgs, Vgd, Vgb as your independent
variables, then ddx(Ids, V(g,s)) != ddx(Ids, V(g)).  The simulator
must compute ddx(Ids, V(g)) because V(g) is the unknown and those
derivatives are the ones that must go in the matrix.

One could certainly take ddx(Ids, Temp(th)) where "th" is a node
or port belonging to the thermal discipline.

There was also some discussion of ddx(Ids, analog_expression)
or perhaps ddx(Ids, identifier) but these aren't needed by the
simulator so why should we burden the simulator/compiler with
trying to figure this out.  The user should instead use Maple
or Mathematica to compute it.


> The confusion comes especially when you use repeated arguments ie.
> udf_fn(a,a,...) where the arguments are inout its a bit confusing what
> the values should be. In that sense i think it is a good idea to clearly
> define what the intent is, and i think explicitly stating
> copy-in/copy-out is probably a good thing. 

At the time we wrote LRM 2.2, we hadn't considered repeated arguments,
and it seemed that the implementation could do pass-by-reference
without any side effects.  We did not want to introduce "ref" as
a new keyword, since there are likely designs that use it as an
identifier.

-Geoffrey
Received on Wed Sep 6 06:10:00 2006

This archive was generated by hypermail 2.1.8 : Wed Sep 06 2006 - 06:10:02 PDT