Eugene
|
Jonathan,
I don't agree 100% with your position on macro models but that may have to do with what we call a macro model. I think of a macro model as a combination of behavioral models (SpectreHDL, VerilogA, etc.) and passive primitive models that follow the original architecture. Consider an active filter. The macro model might consist of a behavioral version of the op amp, surrounded with passive simulator primitive elements. By staying true to the original architecture, one can split the overall model into static nonlinear models and passive linear primatives. Such a marco model is usually more accurate and easier to build than a pure behavioral version of the complete filter.
Furthermore, if library of behavioral models must be pin accurate, it is often easier to model the building blocks behaviorally instead of building individual behavioral models of each separate combination of those blocks. This approach forces one to follow the original architectures using a library of simpler behavioral models. Again, models that follow the original architecture are what I call macro models.
Where I agree with you 100%, is in the application of the old fashion macro models build completely from simulator primitives, i.e. no VerillogA or SpectreHDL etc. I spent a lot of time doing that in the 80s. It was a real pain. There's actually a book on how to do it for power supplies. Modern behavioral languages have eased that pain considerably.
Visjnoe, Ken's book on Spectre and Spice has a very good section (4.4.6) on macro modeling that I think will answer many of your questions.
-Eugene
|