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 ...
This archive was generated by hypermail 2.1.8 : Thu Jun 15 2006 - 09:48:28 PDT