Re: disallow distributed switch branches

From: Geoffrey.Coram <Geoffrey.Coram_at_.....>
Date: Fri Apr 20 2007 - 04:50:32 PDT
Kevin Cameron wrote:
> 
> You are confusing the issues. The problem is if you have
> 
>    module A ...
>        electrical a,b;
>        analog  V(a,b) <+ 5;
>        analog  V(a,b) <+ 6;
>    endmodule
> 
> Which would work under Marq's proposed rules giving V(a,b) == 11, but if you split it into submodules:
> 
>    module A ...
>        electrical a,b;
>        B;
>        C;
>   endmodule
> 
>   module B..
>        analog  V(A.a,A.b) <+ 5;
>   endmodule
>   module C
>        analog  V(A.a,A.b) <+ 6;
>   endmodule
> 
> That fails because the contributions are now considered as being in parallel.

I think, actually, that this fails now because
a) module A has a branch (a,b) that has nothing
assigned to it, so by 5.1.6, "If a value is not
assigned to a branch, the branch flow is set 
to zero (0)."
b) the contributions in the analog blocks of B and C
would make (a,b) into a switch branch
c) 5.3.1.3 says it is illegal to contribute to
an external switch branch from within an analog block

If you re-wrote module A as:

   module A ...
       electrical a,b;
       B;
       C;
       analog V(a,b) <+ 0;
  endmodule

then I believe that the last sentence of Section 7.5
(for source branches, contributions can be made to
the output signal) means that the contributions in
modules B and C add to the 0, and you should get 11.

-Geoffrey

-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.
Received on Fri Apr 20 04:50:50 2007

This archive was generated by hypermail 2.1.8 : Fri Apr 20 2007 - 04:51:02 PDT