disallow distributed switch branches

From: Marq Kole <marq.kole_at_.....>
Date: Wed Apr 18 2007 - 03:45:32 PDT

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

This archive was generated by hypermail 2.1.8 : Wed Apr 18 2007 - 03:44:20 PDT