Re: hierarchical parameter passing in DC sweep

From: Marq Kole <marq.kole_at_.....>
Date: Tue Aug 23 2005 - 06:44:47 PDT
Geoffrey,

> > For solving the matrix this should not be a problem as these separate
> > circuits would correspong to independent (block-)diagonal entries. As
> > necessary, one of p and n could be in a ground statement, so all nodes
> > in the circuit would then have a defined path to ground.
> 
> I believe that you do need one of {p,n} to be ground, and you also need
> the terminals "a" and "b" to be connected somehow to ground in your
> simulator netlist.  Else there are multiple solutions to the circuit,
> which is the same as having a singular matrix.  (If you have a solution
> (V(p), V(n)), then (V(p)+5,V(n)+5) is also a solution.)
> 
You're right, but a ground statement should solve that for the p,n branch,
while the a,b branch in this case was connected to a grounded voltage 
source
and a resistor - essentially all necessary requirements for solution were
accounted for.

> > I had hoped to use this as a basis for the validation suite, but it
> > seems I need a more down-to-earth approach.
> 
> I also think you'll find your approach too limiting for a complete
> validation suite: you can't get small-signal results from inside
> the Verilog-A module.  Many problems I've seen result from bad
> derivatives.
>
It would have worked quite nicely for DC, DCsweep, and transient; the 
noise
and AC could have been handled by less independent means as these are only
small test cases. The fact that the files that contain the output values
are completely independent of the output syntax of any particular 
simulator
makes this approach - or a variation thereof - extremely suitable for
automated validation.

> > I readily accept the explanation on Verilog-D - fact is that there is
> > no explicit statement either allowing or disallowing it - unless there
> > is something to this extent in the Verilog-D standard (and then also 
in
> > System-Verilog?). To prevent differentiation of behaviour in the 
Verilog-AMS
> > simulators, something about this should be added to the LRM, probably 
in
> > chapter 9 on scheduling semantics as the parameter changes should only 
be
> > performed at specific times in the whole simulation cycle.
> 
> I found this statement in the SV-3.1a LRM (section 21.2 on page 327,
> or page 343 of the PDF):
> 
>   A module, interface, program or class can have parameters, which are
>   set during elaboration and are constant during simulation.
> 
> Or in 1364-2001 (section 3.11):
> 
>   Parameters are not variables, they are constants.
> 
>   Parameters represent constants; hence, it is illegal to modify their
>   value at runtime.
> 
> 
> But, as I said before, this is terribly restrictive for analog
> designers: can you imagine never being able to sweep the supply
> voltage -- after all, the dc value of the voltage source is a
> parameter, and hence "must" be constant according to 1364.
> 
> Every Spice-like simulator I know that supports Verilog-A allows V-A
> parameters to be swept in the same manner that parameters of built-in
> primitives can be swept.  I have not done much with hierarchical
> instantiation of V-A modules within other V-A modules -- my V-A modules
> usually look like primitives (V-A compact modeling).
> 
For the top-level parameters that is true: it appears much less true for
parameter passing. It was also the first time I tried to pass down a
parameter from the top-level (Spice) environment to a module instance
inside Verilog-A. I think it is at least established that this is an issue
that needs to be addressed in the Verilog-AMS LRM.

> -Geoffrey
Received on Tue Aug 23 06:47:57 2005

This archive was generated by hypermail 2.1.8 : Tue Aug 23 2005 - 06:48:46 PDT