Escolar Documentos
Profissional Documentos
Cultura Documentos
Marek Mierzwinski, Patrick O'Halloran, and Boris Troyanovsky Tiburon Design Automation Santa Rosa, CA
1st International MOS-AK Meeting Dec 13, 2008, San Francisco
Outline
Some motivation and background history Implementation issues
Performance Debugging Practical considerations in distributing models
Future directions/Conclusions
Model developer
Designer
Independent implementations
Vendors
Motivation
Compact model development is challenging Adding new models to circuit simulators can prove just as challenging
Proprietary (non-portable) interfaces Limited capabilities Burden on model developer to
hand-calculate derivatives write analysis-specific code handle software engineering details
Tiburon Design Automation www.tiburon-da.com
Motivation (cont.)
Analog Hardware Description Languages (AHDLs) can provide important benefits:
Ease of development Model portability
Across different simulators Across various analysis types
Why Verilog-A
Natural language for compact model development Succinct
derivatives, loads all handled by compiler simple parameter support
History
Verilog-A is a precisely defined subset of the Hardware Description Language, Verilog-AMS
Development overseen by OVI/Accellera late 1990s
Barriers to Adoption
Performance
Important for transistor-level models Must eventually be comparable w/ builtins
Availability
Verilog-A now supported by virtually all major commercial vendors Support for all analysis types, e.g. transient, harmonic balance, shooting, nonlinear noise.
Advanced features
noise paramsets
Tiburon Design Automation www.tiburon-da.com
10
End user experience must be as good as or better than using existing model distribution method
11
Existing Models
Most compact transistor models have been implemented in Verilog-A:
BSIM3, BSIM4, BSIM5 SPICE Gummel-Poon, diode, MOS1, MOS3, pTFT, aTFT NXP MEXTRAM 504, MOS Model 9/11 PSP (Penn State/NXP MOSFET) EKV HiCUM Level 0/Level 2, VBIC, VBIC, FBHBT Parker-Skellern, Angelov, Curtice, TOM *implemented by developers MESFET
Tiburon Design Automation www.tiburon-da.com
www.bmas-conf.org/2004/papers/bmas04-coram.pdf
Tiburon Design Automation www.tiburon-da.com
Performance
Model can have a big influence
execution speed memory use
Nodal Analysis
f(x(t)) + ddt(q(x(t))) = u(t)
f => resistive q => reactive (inductors, capacitors) u => current sources For a hypothetical circuit with current sources, resistors, capacitors:
x is vector of voltages, all the equations are standard KCL, and so PURE NODAL ANALYSIS.
Tiburon Design Automation www.tiburon-da.com
V(a, b) <+ K;
this necessitates adding an extra state variable "I" (the flow through the source) into the x vector, with the corresponding extra equation branch: xa - xb == K ( or in reality -xa + xb + K == 0 )
Inductances
Similarly, inductances in Verilog-A also add an additional state variable:
V(a, b) <+ L * ddt(I(a,b));
translates to
- xa + xb + ddt(L * Iab) == 0 where Iab is the flow through the inductor.
Tiburon Design Automation www.tiburon-da.com
Performance Impact
Extra equations introduced from
Voltage contributions on the left-handside, or Current access on the right-hand side
Branch-ddt Equations
Branch-ddt equations are state variables related to implementing ddt() equations How they arise:
From the basic nodal KCL
g(x(t))*ddt(h(x(t)))
Tiburon Design Automation www.tiburon-da.com
Branch-ddt (cont)
The Verilog-A code
phi - ddt(x) == 0
to effectively contribute x*phi
Qbd_ddt; Qbs_ddt;
Qbd_ddt; Qbs_ddt;
Probing Mistakes
Common mistake when probing port current:
$strobe(I(port_name));
Introduces unnamed branch
Effectively shorts port_name to ground
23
Superfluous Assignments
Consider:
24
Memory States
Variables are initialized to zero on first call to module The simulator retains the value between calls to module
If used in assignment before it is assigned, it will have the value of the previous iteration
Also known as hidden states Compact models should not use them
could cause unexpected behavior
Tiburon Design Automation www.tiburon-da.com
Collapsible Nodes
Native models can remove or collapse unneeded nodes Common idiom for collapsible nodes: if(Rc > 0.0) I(c, ci) <+ V(c, ci)/Rc; else V(c, ci) <+ 0.0; // if not collapsed, adds state variables Implementations may treat as
Collapsible node, or Switch branch
Performance Summary
Be aware of what causes extra equations Collapse nodes when possible Watch out for
memory states superfluous equations
Debugging
Basic
$strobe outputs every converged iteration $debug outputs every call to module Use macros to disable in general use
`ifdef DEBUG
Iteractive debugging
Tiburon Design Automation www.tiburon-da.com
Compile-Time Diagnostics
List of state variables
Collapsible nodes
Memory states
Superfluous assignments Unused variables Floating nodes
Tiburon Design Automation www.tiburon-da.com
29
Diagnostics (cont.)
Check for addition of extra state variables
Probing current through a branch Voltage branches Switch branches
30
Diagnostics (cont.)
Compiler output
=== Summary information for module 'mos3_va': Branch information: <unnamed>(b, di) : Current Branch (implicit) <unnamed>(b, si) : Current Branch (implicit) <unnamed>(di, d) : Statically shorted branch <unnamed>(di, si) : Current Branch (implicit) <unnamed>(g, di) : Current Branch (implicit) <unnamed>(g, si) : Current Branch (implicit) <unnamed>(si, s) : Statically shorted branch Branch ddt operators: [ line 685, col 15 ] [ line 686, col 15 ] Potential memory states: 'Arga' 'Argb' 'Beta_T' 'CdOnCo' 'CsOnCo' 'Delta_L' 'Fermig' 'Fermis' 'Kappa' 'Vgst' 'Wkfng' 'Wkfngs' === End of summary information for module 'mos3_va':
1. Compile with flag 2. Simulate 3. Simulator runs until floating point exception occurs
Tiburon Design Automation www.tiburon-da.com
Interactive Debugging
Allows quick iterative investigation of module
34
Additional RF Restrictions
Explicit use of time $abstime Analog Operators
Allowed:
Differentiation ddt(), ddx() Delay absdelay() Laplace laplace() Integration idt() without initial conditions
Others are:
Not safe for RF analysis Not (typically) useful for compact modeling
Tiburon Design Automation www.tiburon-da.com
35
Model Distribution
Complete model support requires
model version control schematic capture information simulator dependent
End-user experience
easy installation look and feel of native device
instance/modelcard multiplicity
Parameter Case
Verilog-A is case sensitive Some simulators are case sensitive, others are not Provide aliases aliasparam AREA=Area;
IP Protection
Compiled libraries effectively hides source code as well as built-in models Model parameters can be hidden in source code by assigning them as default values
Example ADS
Design Kits provide a convenient mechanism for distributing complete model package End user opens a zipped file
Example
Users have a one-step process to install model
Example
Users see no difference when using Verilog-A implemented models
Future Directions
Tools for improved model development
Automatic checking of smoothness, continuity, etc. Automated checks for passivity / stability / etc. where appropriate
42
Conclusion
Continued growth and adoption of Verilog-A presents numerous benefits for
Compact model developers Circuit designers Tool vendors
Benefits include
Portable, robust compact models Ease of development Fast model distribution and modification
Tiburon Design Automation www.tiburon-da.com
43