Kevin Cameron <kevin@sonicsinc.com> wrote on
18-04-2007 01:57:59:
<snip>
> > Even if they would switch in such a way
that they all have the same
> > nature, the suggested course of action is to disallow switch
branches
> > distributed over multiple analog blocks. An OOMR contribution
is not
> > making a switch branch either, so I don't see the issue.
> Not quite seeing your point either - probably need an example of what
> you are disallowing.
This would be disallowed:
module test_distr_switch(a, b, c, d);
inout a, b, c, d;
electrical a, b, c, d;
analog
if (V(c, d) > 0)
V(a, b) <+ 0;
analog
I(a, b) <+ 0;
endmodule
or:
module test_distr_switch(a, b, c, d);
inout a, b, c, d;
electrical a, b, c, d;
branch (a, b) ab;
analog
if (V(c, d) > 0)
V(ab) <+ 0;
analog
I(ab) <+ 0;
endmodule
But this would be allowed:
module test_par_switch(a, b, c, d);
inout a, b, c, d;
electrical a, b, c, d;
branch (a, b) ab1, ab2;
analog
if (V(c, d) > 0)
V(ab1) <+ 0;
else
I(ab1) <+ 0;
analog
I(ab2) <+ 0;
endmodule
And syntactically this would be allowed, but raises
a run-time error in many simulators:
module test_par_switch(a, b, c, d);
inout a, b, c, d;
electrical a, b, c, d;
analog begin : switch1
branch (a, b) ab;
if (V(c, d) > 0)
V(ab) <+ 0;
else
I(ab) <+ 0;
end
analog begin : switch2
branch (a, b) ab;
if (V(c, d) > 0)
V(ab) <+ 0;
else
I(ab) <+ 0;
end
endmodule
Essentially switching module level branches should
occur in a single analog block. Consequentially, if you switch a branch
in one analog block, you can no longer contribute to it from other, concurrent
analog blocks.
Marq
--
This message has been scanned for viruses and
dangerous content by
MailScanner, and is
believed to be clean.
Received on Wed Apr 18 03:44:08 2007