Re: disallow distributed switch branches

From: Geoffrey.Coram <Geoffrey.Coram_at_.....>
Date: Fri Apr 20 2007 - 11:09:04 PDT
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.

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:09:30 2007

This archive was generated by hypermail 2.1.8 : Fri Apr 20 2007 - 11:09:41 PDT