Re: Potential Contributions

From: <edaorg_at_.....>
Date: Thu Feb 01 2007 - 00:15:50 PST
I think we are wandering back into the discussion about whether blocks 
in a module are concatenated or not.

If analog blocks are concatenated then I would expect the potentials to 
sum, so I think that would be a reasonable way to differentiate 
summing/parallel behavior.  So you could do something like:

module inductor(a,b)
     ...
     branch (a,b) ind;

     analog : L begin // ideal ("L" is block label)
          ...
          V(ind) <+ ...;
     end

`ifdef LOSSY_INDUCTORS
     analog : continue L begin // add losses
          ...
          V(ind) <+ ...;
     end
`endif

endmodule

I think differentiating semantics on whether a branch is named or 
unnamed is a little hard to justify since I'm sure users will miss the 
subtlety of the difference and make mistakes.

Kev.

Ken Kundert wrote:
> Kevin,
>     Indeed, the loop of voltage sources issue is a tangent. Concerning
> the original issue, I would have to say that I am not yet in agreement.
>
> I have wanted multiple analog block in a module to improve the
> modularity of my models. I would like to describe distinct effects each
> in their own analog blocks, and perhaps be able to enable or disable
> them by enabling or disabling the block. I have found this to be
> particularly desirable in Verilog-AMS testbench modules. For example, a
> typical test bench module for a complicated mixed-signal circuit would
> have many have hundreds or thousands of lines of code, and tens or
> hundreds of initial and always blocks that are used to perform
> individual tests and set drive, load, or bias conditions. It is nice to
> be able to group these together, so that, for example, all supply
> related code is together, all stimulus related code is together, etc.
> Consider the supply related code. In a mixed signal design it will
> contain both analog and event-driven behavior. The event driven behavior
> might determine which supply signals should be enabled and the analog
> code would actually create the supply signals for the analog portion of
> the design.
>
> To see why it is undesirable to associate unnamed branches with the
> block rather than the module consider the model of a nonlinear lossy
> inductor. Assume that there is a logical separation of the model into
> code that describes the nonlinear inductor and code that describes the
> loss. If I put these into one analog module (and assuming that they both
> contribute to the potential of the branch) then they would go in series.
> However, if they were each in their own analog blocks they end up in
> parallel, which is not what I wanted.
>
> Presumably I could address this issue in one of two ways. Either I could
>  force them to be combined in series by creating a named branch and have
> them both contribute to that. Or I could combine both effects into a
> single analog block and separate them by placing them both in their own
> named blocks. The former is undesirable because I am forced to use named
> branches. The latter is undesirable because it constrains the modulatity
> (all analog behavior must be adjacent, and cannot be intermingled with
> the event-driven behavior).
>
> The rationalization for associating unnamed branches with analog blocks
> rather than with the module seems a bit of a cop out. It basically
> results in branches from different blocks being combined in parallel.
> But in a multirate setting if we can combine branches in parallel, why
> can't we also combine them in series. Wouldn't the same basic techniques
> apply? And if for some reason we cannot combine them in series, then
> what do we do about named branches declared at the module scope?
>
> One more thing. I noticed in the v2.3 syntax that a named branch cannot
> be declared in an analog block. This, combined with the current
> proposal, implies that unnamed analog branches are associated with
> blocks and named branches are associated with modules. This means that
> named branches would no longer be a superset of unnamed branches. This
> is problematic because the expressive ability of unnamed branches is
> less than named branches, meaning that there will be some things that
> you can do at the module level that you cannot do at the block level.
> That does not seem like a good idea to me.
>
> Instead, I recommend:
> 1. associating the unnamed branches with the module
> 2. specifying the behavior of multirate contributions so that they are
> the same for both named and unnamed branches
> 3. allow named branches to be declared within analog blocks
>
> -Ken
>
> Kevin Cameron wrote:
>   
>> This thread was originally intended to clarify how potential
>> contributions from multiple analog blocks combined, and I  think it's
>> probably gone a bit off topic.
>>
>> If we are in general agreement that potential contributions to a node
>> pair from multiple analog blocks are considered as being in parallel and
>> handling them is left to the simulator (not a language issue) then I
>> think we can move on.
>>
>> Kev.
>>
>>
>> Marq Kole wrote:
>>     
>>> Kev,
>>>
>>> Why would superconducting switches not be supported by the "do
>>> nothing" approach? As stated before, the language allows them, it can
>>> be the solver that refuses. Verilog-A gives you the option to switch
>>> the solver to one that does work for you. Some would rather like to
>>> keep the solver's limitations because it provides valuable feedback on
>>> the structure of the design, other would want to use the solver's
>>> abilities to circumvent certain problems because they know what
>>> they're doing. I do not see the superiority of one view over the
>>> other, and hence it becomes an implementation issue.
>>>
>>> The only restriction is that if you really want to make portable code
>>> you will have to model carefully. When/if SQUIDs and Josephson
>>> junction devices are getting more common we will surely see the market
>>> requiring the solver to handle them correctly. We don't need to change
>>> the language.
>>>
>>> Portable Verilog-AMS code is at this moment restricted by more mundane
>>> notions like how much of the standard is actually implemented in each
>>> compiler/simulator. I propose that once we get to the point that the
>>> solvers actually make the difference in portability we reopen the
>>> discussion. My guess would be no earlier than 5 years from now...
>>>
>>> Cheers,
>>> Marq
>>>
>>>
>>> Marq Kole
>>> Competence Leader Robust Design
>>>
>>> Research
>>> NXP Semiconductors
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> *edaorg@v-ms.com*
>>>
>>> Sent by:
>>> owner-verilog-ams@server.eda.org
>>>
>>> 31-01-2007 09:34
>>>
>>>     
>>> To
>>>     verilog-ams <verilog-ams@server.eda-stds.org>
>>> cc
>>>     "Muranyi, Arpad" <arpad.muranyi@intel.com>
>>> Subject
>>>     Re: Potential Contributions
>>> Classification
>>>     
>>>
>>>
>>>
>>>     
>>>
>>>
>>>
>>>
>>>
>>> Muranyi, Arpad wrote:
>>> Can't resist not to chime in...
>>>  
>>> Since when are physical devices ideal?  I.e. when will
>>> a real life voltage source have zero impedance?  Let
>>> me know if you see one, I would like to get one of those.
>>> Superconductors.
>>>
>>> In particular: Josephson Junction logic circuits rely on switching the
>>> state of a SQUID from superconducting to resistive states; in the
>>> superconducting state the SQUID is an ideal 0V source - it switches to
>>> resistive when you drive too much current through it or apply a large
>>> enough magnetic field.
>>>
>>> Here are some links :
>>>
>>> _http://swordfish.eecs.berkeley.edu/markj.www/COSLGate.html__
>>> __http://books.google.com/books?id=8_mngdg77sUC&pg=PA300&lpg=PA300&dq=josephson+junction+%22voltage+state%22+logic&source=web&ots=pFt5FKyaFe&sig=4SvM-ZtRuw77AFK5hdBqNPKsZ3s#PPP1,M1_
>>> <http://books.google.com/books?id=8_mngdg77sUC&pg=PA300&lpg=PA300&dq=josephson+junction+%22voltage+state%22+logic&source=web&ots=pFt5FKyaFe&sig=4SvM-ZtRuw77AFK5hdBqNPKsZ3s#PPP1,M1>
>>> _
>>>  
>>> Also, believe it or not, 0.3+0.6 is NOT equal 0.9!!!
>>> Try this in Matlab:  isequal(0.3+0.6,0.9), the answer
>>> will be a FALSE.  The point is that if the voltage
>>> sources are defined using equations, you may get
>>> inequalities without noticing...
>>> I'm aware of that, but the cases I'm considering (as likely) are those
>>> where some identical components have been instantiated in parallel and
>>> the voltage is more likely derived from parameters  (or zero for
>>> switches), so rounding error mismatch is not likely.
>>>
>>> Kev.
>>>  
>>> I would join the camp that doesn't mess with the ideal
>>> sources with additional series resistors.  In this
>>> day of age, when we are modeling "shorts" as transmission
>>> lines and argue over how good or bad the lossy T-line model
>>> is depending on its algorithms, I would think that a decent
>>> engineer should not expect that two ideal sources connected
>>> in parallel would be a correct netlist.
>>>  
>>> I got curious about the inductor case.  Yes, HSPICE will
>>> bail out with an error if I connect a V source and an
>>> inductor in parallel.  But only if I use an ideal inductor!
>>> Once I define its resistive parasitics like this:
>>>  
>>> L1  n1 n2 L=1nH R=0.001
>>>  
>>> it will work without an error.  This is what I call being
>>> in agreement with physics...
>>>  
>>> Arpad
>>> =============================================================
>>>
>>> _
>>> ------------------------------------------------------------------------
>>> _*From:* __owner-verilog-ams@server.eda.org_
>>> <mailto:owner-verilog-ams@server.eda.org>_
>>> [__mailto:owner-verilog-ams@server.eda.org__] *On Behalf Of
>>> *__edaorg@v-ms.com_ <mailto:edaorg@v-ms.com>_*
>>> Sent:* Tuesday, January 30, 2007 6:49 PM*
>>> To:* verilog-ams*
>>> Cc:* Geoffrey.Coram*
>>> Subject:* Re: Potential Contributions
>>>
>>> Geoffrey.Coram wrote:
>>> Kevin Cameron wrote:
>>>  
>>> According to Marq at least one simulator company has it's simulator
>>> handling this with sharing the current across the sources, I'll presume
>>> that they had some motivation for doing so.
>>>   
>>> Since one simulator actually allowed unequal voltage sources to
>>> be placed in parallel, it is almost certain that this simulator
>>> indeed did place GMIN-like resistors in series with the voltage
>>> sources.
>>>
>>> I would guess the motivation was along the lines:
>>> Customer: hey, why can't I do this?  The voltages are equal!
>>>  What a dumb simulator.
>>> AE: OK, I'll ask R&D to fix it.
>>>
>>> and R&D might not have ever seen the test case, which might
>>> have had exactly the sorts of problems Ken mentions.
>>>  
>>> I'm with the "customer" - if the physics/electronics makes sense it
>>> should be allowed in the HDL, and the simulator should make it's best
>>> effort to handle it.
>>>  
>>> We need a definition of the behavior of parallel potentials for the LRM,
>>> my view is that they should be allowed as long as the potential is
>>> exactly the same and the current will be split evenly across the
>>> potentials (and the user gets a warning). If you disagree propose
>>> something different.
>>>   
>>> As Marq pointed out, the potential is quite likely to be
>>> not exactly equal: 1/1/3 versus 3.  I've also seen cases where
>>> (on Intel machines) one floating-point number is stored in
>>> an 80-bit register in the CPU and compared to a 64-bit number
>>> in the cache, and they don't match in those extra bits.
>>>  
>>> Interesting, but I'd bet 0.0 == 0.0 will always work. Floating point
>>> numbers in Verilog are all supposed to be 64-bit IEEE, so getting a
>>> mismatch with an 80-bit register would be something for the compiler
>>> writers to fix.
>>>
>>> Kev.
>>> -Geoffrey
>>>  
>>> _
>>> ------------------------------------------------------------------------
>>> _
>>> mailto:dkc@grfx.com <mailto:dkc@grfx.com>
>>>
>>> -- 
>>> This message has been scanned for viruses and
>>> dangerous content by *_MailScanner_* <http://www.mailscanner.info/>*,
>>> and is
>>> believed to be clean. *
>>>
>>> *
>>> -- 
>>> This message has been scanned for viruses and
>>> dangerous content by **_MailScanner_* <http://www.mailscanner.info/>*,
>>> and is
>>> believed to be clean. *
>>>
>>> -- 
>>> This message has been scanned for viruses and
>>> dangerous content by *MailScanner* <http://www.mailscanner.info/>, and is
>>> believed to be clean. _
>>>       
>
>   


-- 
http://www.grfx.com
mailto:dkc@grfx.com


-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.
Received on Thu Feb 1 00:18:01 2007

This archive was generated by hypermail 2.1.8 : Thu Feb 01 2007 - 00:18:08 PST