Geoffrey.Coram wrote:
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.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 archive was generated by hypermail 2.1.8 : Fri Apr 20 2007 - 11:30:21 PDT