Re: disallow distributed switch branches

From: Kevin Cameron <kevin_at_.....>
Date: Fri Apr 20 2007 - 11:29:59 PDT
Geoffrey.Coram wrote:
Kevin Cameron wrote:
  
In this case I would suggest modifying the operator to (say) "<++" i.e.:

     analog V(top.mybase.Ibr) <++ 6.0;

That would also work for multiple analog blocks in a module.
    

It's kind of late for that, I think (as well as for Arpad's suggestion to make <+ an assignment rather than contribution operator).  It would be a huge backwards-compatibility fiasco.
  
I think you misunderstood, I was only suggesting <++ for contributions to non-local branches, i.e. OOMRs and branches shared across analog blocks. E.g.

       module foo...
          electrical a,b;
          analog begin
             V(a,b) <+ 2.0;
            
V(a,b) <+ 2.0;
          end
       endmodule

is equivalent too:

       module foo...
          electrical a,b;
          analog V(a,b) <++ 2.0;
         
analog V(a,b) <++ 2.0;
       endmodule


Kev.

A number of models do things like this:
  I(dio) <+ is * exp(V(dio)/$vt) - is;
...
  I(dio) <+ ddt(qd);
where the "static" (dc) quantities are computed in a different section than the "dynamic" quantities.  In fact, per a strict reading of the 2.0 LRM, ddt() had to appear by itself on the RHS, the syntax didn't allow
  I(dio) <+ id + ddt(qd);
because ddt() is an analog operator.

Presently, some models have
  begin : evaluateStatic
  end
  begin : evaluateDynamic
  end
which is used as a hint by some simulators (the open-source ADMS, I think) to optimize calculations: eg, you bypass evaluateDynamic when you're doing dc Newton.

I think it would come as a surprise to many modelers to find that changing the code to read
  analog begin : evaluateStatic
  end
  analog begin : evaluateDynamic
  end
would either require this new "<++" or cause the contributions in the dynamic section to replace the contributions in the static.

-Geoffrey
  


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

This archive was generated by hypermail 2.1.8 : Fri Apr 20 2007 - 11:30:21 PDT