Re: Fw: Contributions (was Re: disallow distributed switch branches)

From: Kevin Cameron <kevin_at_.....>
Date: Fri May 04 2007 - 10:54:47 PDT
Geoffrey.Coram wrote:
> Kevin -
> I was somewhat sympathetic to your request to easily be able to
> short a pair of nodes, knowing only the hierarchical path to them:
>
>    V(a.b.x,a.b.y) <+ 0.0;
>
> It seems like a reasonable thing to want to do.
>
> However, this causes too many problems in other areas because of
> the fact that it's an OOMR.  If I have a bipolar transistor model
> that's been compiled previously, and then in a new design, I
> decide to short the b-e junction
>     V(top.i1.ibias.b, top.i1.ibias.e) <+ 0.0;
> then this would require re-compiling the BJT model!  (Generally,
> compact models are written with I(b,e) <+ ..., and in any case,
> your most recent post (below) said you want the compiler to
> collapse the nodes.  Either way, you've changed the topology
> of the BJT and perhaps even a larger module that has been
> pre-compiled.)
>   

My issue was more that with the current understanding of the semantics the

  V(top.i1.ibias.b, top.i1.ibias.e) <+ 0.0;

- would have no effect if there is already a Voltage contribution on that branch.

To be sure that you get the short you need a new operator (say):
   
  V(top.i1.ibias.b, top.i1.ibias.e) <= 0.0;



> David's suggestion:
>   
>>> What I had in mind was:
>>> I(a.b.x,a.b.y) <+ V(a.b.x,a.b.y)*Gshort;
>>>       
>
> is nice, and does *not* add rows to the matrix; a voltage source
> always does because you need an extra unknown for the current
> through the source (unless you collapse the nodes -- but how
> does the simulator know that your 0-v source isn't really an
> ammeter? in which case collapsing the nodes means you lose
> the ability to probe the current).
>   

It didn't actually say I wanted the compiler to collapse the nodes, my 
point was that if the compiler is smart enough it will be able to do so 
if it can, doing hacky work-arounds for deficiencies in the language and 
tools prevents a smart compiler from doing those optimizations (since 
the compiler doesn't know what the hack is there for).

Note: the other form of the short circuit -

  I(a,b): V(a,b) == 0;

Can be generalized to

   I(a,b): V(a,b) == func();

 - and the compiler/solver would probably not be able to differentiate 
between a short or a fixed voltage or a variable voltage. And given that 
all those cases should work, I think your claims about having to 
recompile etc. are probably moot.

Kev.

> -Geoffrey
>
>
>
> Kevin Cameron wrote:
>   
>> But basically you are proposing a "hack" to fix a language deficiency.
>> If the user asks for a short-circuit (or fixed voltage) I see no reason
>> not to give it to them. It might cause the simulator problems, but it's
>> easier for other tools to work out a short-circuit is what is intended -
>> i.e. the simulator vendor can fix this "under the hood" with resistors
>> if they want, but the user should not have to do it. If it's
>> recognizable as a static assignment the compiler can collapse the nodes.
>>
>> Kev.
>>     


-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.
Received on Fri May 4 10:55:02 2007

This archive was generated by hypermail 2.1.8 : Fri May 04 2007 - 10:55:05 PDT