Re: Merged version of chapter 6

From: Ken Kundert <ken_at_.....>
Date: Thu Jun 15 2006 - 09:48:10 PDT
Sri,
    I have added my suggested changes for the indirect assignments
section below.

-Ken

Sri Chandra wrote:
> Ken Kundert wrote:
>> Ken Kundert wrote:

>>> 5. At the bottom of page 114 the indirect branch assignment statement is
>>> described with no introduction. Another paragraph is needed that
>>> describes why the fixed-point form described in the first paragraph is
>>> insufficient, which necessitates the indirect assignment statement.
>>>     
> 
> I am not sure what exact introduction you are looking for. I generally
> use the direct contribution statements as its more straighforward and
> easier to understand. If you have any introduction that you would like
> to see added, if you could send it to me i can have a read through it
> and add it appropriately.
> 
>>> 6. Later in that same section it is said that using a normal
>>> contribution statement results in the wrong tolerances, but no
>>> description of how the indirect branch assignment handles tolerances is
>>> given.
>>>     
> 
> Not exactly sure whether i understand this point.

6.3.2 Implicit Contributions
An important feature of contribution statements is that the value of
the target may be expressed in terms of itself. This is referred to as
an implicit or fixed-point formulation.

Example:
    I(diode) <+ is*limexp(V(diode)/$vt - r*I(diode)) - 1);

Notice that I(diode) is found on both sides of the contribution
operators. The underlyign implementation of the simulator will find
the value of I(diode) that equals the sum of the contributions made to
it, even if the contributions are a function of I(diode) itself. This
in feature is demonstrated again in Section 5.1.3.4, where I(a,c)
appears on both sides of the contribution operator.

6.3.3 Indirect branch assignments
Contribution statements are not the only way that values can be assigned
to analog signals. Indirect branch assignments provide an alternative
approach that is useful in cases where contributions do not behave as
needed. Once such case is the ideal opamp (or nullor). In this model,
the output is driven to the voltage that results in the input voltage
being zero. The constitutive equation is

    vin = 0,                                                       (1)

which can be formulated with a contribution statement as

    V(out) <+ V(out) + V(in);

This statement defines the output of the opamp to be a controlled
voltage source by assigning to V(out) and defines the input to be
high impedance by only probing the input voltage. That the desired
behavior is achieved can be seen by subtracting V(out) from both
sides of the contribution operator, resulting in (1). However, this
approach does not result in the right tolerances being applied to
the equation if out and in have different disciplines. In this
situation the tolerances for the equations would come from V(out)
because it is the target of the contribution, but the final equation
does not contain V(out). It would be better if the tolerances for the
equation were taken from V(in).

The indirect branch assignment should be used in this situation.

V(out): V(in) == 0;

which reads ‘drive V(out) so that V(in) == 0’. This indicates out is
driven with a voltage source and the source voltage needs to be
adjusted so that the given equation is satisfied. Any branches
referenced in the equation are only probed and not driven. In
particular, V(in) acts as a voltage probe.

The left hand side of the equality operator must either be an access
function, or ddt or idt applied to an access function. The tolerance
for the equation is taken from the argument on the left side of the
equality operator, in this case V(in) as desired.

The syntax for an indirect assignment is shown ...

Indirect branch assignments shall not be used ...



Received on Thu Jun 15 09:48:18 2006

This archive was generated by hypermail 2.1.8 : Thu Jun 15 2006 - 09:48:28 PDT