Developing and Releasing Compact Models Using Verilog-A - Mos-AK

advertisement
Developing and
Releasing Compact
Models Using Verilog-A
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
Tiburon Design Automation
www.tiburon-da.com
Compact Model Distribution
Foundry
Model extracted
Design verified
Model
developer
Independent
implementations
Designer
Vendors
Tiburon Design Automation
www.tiburon-da.com
Model and simulation
flow verified
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
4
Motivation (cont.)
• Analog Hardware Description
Languages (AHDLs) can provide
important benefits:
– Ease of development
– Model portability
• Across different simulators
• Across various analysis types
– Suitable for full range of model types
• Behavioral level down to transistor level
Tiburon Design Automation
www.tiburon-da.com
5
Why Verilog-A
• Natural language for compact model
development
• Succinct
– derivatives, loads all handled by compiler
– simple parameter support
• Standard
• Implemented in most simulators
Tiburon Design Automation
www.tiburon-da.com
History
• Verilog-A is a precisely defined subset
of the Hardware Description
Language, Verilog-AMS
– Development overseen by OVI/Accellera
– late 1990’s
• Active effort to merge with
SystemVerilog
Tiburon Design Automation
www.tiburon-da.com
Barriers to Adoption
• Performance
– Important for transistor-level models
– Must eventually be comparable w/ builtins
• Compact modeling constructs
– Greatly improved with v2.2 language
standard
Tiburon Design Automation
www.tiburon-da.com
8
Barriers to Adoption (Cont.)
• “Inertia”
– Misconceptions regarding language
capabilities
– Existing code base of non-AHDL-based
device models
– Lack of familiarity within model
development community
– Lack of comprehensive
debugging/development methodology
Tiburon Design Automation
www.tiburon-da.com
9
Overcoming the Barriers
• Performance
– No theoretical reason for Verilog-A to be
inferior in performance to built-ins
• 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
Overcoming the Barriers
• For the user
End user experience must be as good
as or better than using existing model
distribution method
Tiburon Design Automation
www.tiburon-da.com
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
Writing Compact Models
Excellent
primer on
implementing
compact device
models in
Verilog-A
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
• Choice of particular constructs can
result in performance degradation
– Avoidable state variables
Tiburon Design Automation
www.tiburon-da.com
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
Voltage Sources in Verilog-A
However, if we have a voltage source
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 )
Tiburon Design Automation
www.tiburon-da.com
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
• Result: extra state variables impact
efficiency for compact models.
• Work-around: Use current
contributions, avoid unnecessary
current probes
Tiburon Design Automation
www.tiburon-da.com
Branch-ddt Equations
• Branch-ddt equations are state
variables related to implementing
ddt() equations
• How they arise:
From the basic nodal KCL
f(x(t)) + ddt(q(x(t))) == u(t)
Note that it does not support terms of the
form
g(x(t))*ddt(h(x(t)))
Tiburon Design Automation
www.tiburon-da.com
Branch-ddt (cont)
The Verilog-A code
x = V(a, b);
I(a, b) <+ x * ddt(x);
introduces extra state variable phi,
phi - ddt(x) == 0
to effectively contribute
x*phi
which fits into the f(x(t)) + ddt(q(x(t))) form.
• Should be avoided in compact models.
Tiburon Design Automation
www.tiburon-da.com
Branches from Conditionals
• When variables
that depend on
ddt() are used in
conditionals, the
compiler must
create extra
branch equations
if (Vds < 0.0)
Mode = -1; // Inverse mode
else
Mode = 1;
…
Qbd_ddt = ddt(Qbd);
Qbs_ddt = ddt(Qbs);
if (Mode == 1) begin
t0 = TYPE * Ibd +
t1 = TYPE * Ibs +
end
else begin
t1 = TYPE * Ibd +
t0 = TYPE * Ibs +
end
I(b,di) <+ t0;
I(b,si) <+ t1;
Qbd_ddt;
Qbs_ddt;
Qbd_ddt;
Qbs_ddt;
Typical MOSFET code
Tiburon Design Automation
www.tiburon-da.com
Avoiding Branches from
Conditionals
• Place the
arguments to
ddt() in the
conditionals
if (Mode == 1) begin
t0 = TYPE * Ibd;
arg0 = Qbd;
t1 = TYPE * Ibs;
arg1 = Qbs;
end
else begin
t1 = TYPE * Ibd;
arg1 = Qbd;
t0 = TYPE * Ibs;
arg0 = Qbs;
end
I(b,di) <+ t0 + ddt(arg0);
I(b,si) <+ t1 + ddt(arg1);
Improved MOSFET code
Tiburon Design Automation
www.tiburon-da.com
Probing Mistakes
Common mistake when probing port current:
$strobe(I(port_name));
• Introduces unnamed branch
– Effectively shorts port_name to ground
– Adds additional state variable
• Instead use
$strobe(I(<port_name>));
• Easily detected at compile-time
Tiburon Design Automation
www.tiburon-da.com
23
Superfluous Assignments
Consider:
(10)
(11)
(12)
(13)
(14)
x = V(a, b)/R;
if(type == 1)
x = V(a, b)/R1;
else
x = V(b, a)/R2;
Diagnostic message from compiler:
Warning: Assignment to ‘x’ may be superfluous.
[ filename.va, line 10 ]
Tiburon Design Automation
www.tiburon-da.com
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
• Informative diagnostics should be issued
Tiburon Design Automation
www.tiburon-da.com
26
Performance Summary
• Be aware of what causes extra
equations
• Collapse nodes when possible
• Watch out for
– memory states
– superfluous equations
Tiburon Design Automation
www.tiburon-da.com
Debugging
• Basic
– $strobe – outputs every converged iteration
– $debug – outputs every call to module
– Use macros to disable in general use
`ifdef DEBUG
• Compile time diagnostics
• Compiler flags for runtime
– Too expensive for production code
– Very useful during development phase
• Iteractive debugging
Tiburon Design Automation
www.tiburon-da.com
Compile-Time Diagnostics
• List of state variables
• List of branch types
– Voltage- / Current- / Switch- Branches
• 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
• In many cases, not necessary/desired
for compact modeling
• Invisible to developer unless
diagnostics are issued
Tiburon Design Automation
www.tiburon-da.com
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':
Tiburon Design Automation
www.tiburon-da.com
Compiler Flag Example
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
Tiburon Design Automation
www.tiburon-da.com
Portability Across Analysis
Types
• Certain language constructs are not
supported by RF analyses (e.g, Harmonic
Balance, Shooting, Envelope)
• Should be avoided for reasons of
– portability
– consistency across analyses
– efficiency
• Typically not required (or desired) for
compact models
Tiburon Design Automation
www.tiburon-da.com
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
Tiburon Design Automation
www.tiburon-da.com
Parameter Case
• Verilog-A is case sensitive
• Some simulators are case sensitive,
others are not
• Provide aliases
aliasparam AREA=Area;
Tiburon Design Automation
www.tiburon-da.com
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
Tiburon Design Automation
www.tiburon-da.com
Example ADS
• Design Kits provide a convenient
mechanism for distributing complete
model package
• End user opens a zipped file
Tiburon Design Automation
www.tiburon-da.com
Example
Users have a
one-step process
to install model
Tiburon Design Automation
www.tiburon-da.com
Example
Users see no
difference when
using Verilog-A
implemented
models
Tiburon Design Automation
www.tiburon-da.com
Future Directions
• Tools for improved model
development
– Automatic checking of smoothness,
continuity, etc.
– Automated checks for passivity / stability
/ etc. where appropriate
Tiburon Design Automation
www.tiburon-da.com
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
Tiburon Design Automation
www.tiburon-da.com
Download