IEEE BCTM 2006 Presentation - MOS-AK
Download
Report
Transcript IEEE BCTM 2006 Presentation - MOS-AK
Verilog-A is for Equation
Specification, not for
Modeling
Colin McAndrew
Laurent Lemaitre
Zoltan Huszka
Geoffrey Coram
Freescale Semiconductor
Freescale Semiconductor
Austriamicrosystems
Analog Devices
MOS-AK Meeting
Saturday December 13, 2008
Overview
• A Brief History of Verilog-A for Compact Modeling
• A Brief Review of How Circuit Simulators Work
• How to Leverage Understanding of How Simulators Work to
Implement Desired Equations
thinking outside the “equivalent network” modeling box
example 1: BJT excess phase
example 2: single formulation resistor that can handle R=0
• Summary
McAndrew/Lemaitre/Huszka/Coram MOS-AK December 2008
Slide 2
What is Verilog-A?
• Initially (mid to late 1990’s), a language for analog behavioral
modeling to enable
top down AMS design at the block level
efficient top-level AMS verification
• VHDL-AMS is a “competing” language developed around the
same time for the same purposes
• So how does Verilog-A relate to compact modeling?
McAndrew/Lemaitre/Huszka/Coram MOS-AK December 2008
Slide 3
Automation in Compact Modeling
• In the late 1980’s automation began to creep into the
development of simulators
especially for the time-consuming and error-prone task of
implementing compact models (symbolic derivative generation)
added impetus to the on-going migration from “diffused” model
code to “modular” model code
• Simulator-model interfaces of the 1980’s and 1990’s:
WATAND
Saber/MAST – major commercial success
Tektronix (very early pioneer)
ADMIT plus various compilers (AT&T)
iSMILE
CMC Type-II interface (DOA circa 1995; engineering ≠ CS)
McAndrew/Lemaitre/Huszka/Coram MOS-AK December 2008
Slide 4
VBIC
SP
R3_CMC
HiCUM
BSIM
Mextram
PSP
MM11
EKV
MOSVAR
Common Language/Interface
Problem
The Solution
Eldo
ADS
Spectre
Nexxim
aSPICE
APLAC Nanosim
HSPICE
Golden
Gate
Ultrasim
McAndrew/Lemaitre/Huszka/Coram MOS-AK December 2008
Slide 5
Automated Model Implementation
• Mostly flopped in mid 1990’s
VBIC was the first public model defined in high level code
generated FORTRAN and C also provided
> these were used
> high-level pseudo-code was not! (except by Tektronix)
> chasm between engineers and advanced software techniques
• Many misconceptions
code is slow compared to hand-coded C
> within 10% of hand coded and getting better
> will be faster one day (proven already), then works for all models!
cannot use for parameter extraction
> if it’s in a simulator it’s in your simulator-based extractor!
different code for different simulators will give different results
> different compile flags on the same platform give different results!
McAndrew/Lemaitre/Huszka/Coram MOS-AK December 2008
Slide 6
Enter Verilog-A
• Significant issue with the concept (high-level language +
compilers) was the lack of a standard high-level language!
• Verilog-A was obviously the solution for this
VHDL-AMS touted as well initially
• Minor deficiencies overcome by compact model additions
•
defined in LRM2.2
CMC accepted models defined in Verilog-A circa 2004
• Verilog-A has become the de facto standard language for
defining compact models
McAndrew/Lemaitre/Huszka/Coram MOS-AK December 2008
Slide 7
Moving Beyond “Models”
• You can use Verilog-A to define “physical” compact models
• But this can be very restrictive
constrained to think in terms of equivalent networks
constrained to think in terms of I(V), Q(V) relations
• A circuit simulator is an equation solver
• Think of what equations you want to force the simulator to
solve, then develop Verilog-A constructs to force this
not thinking in terms of physical representation
McAndrew/Lemaitre/Huszka/Coram MOS-AK December 2008
Slide 8
How SPICE Works: Simple BJT Model and Circuit
Ibc
x
RB
Qbc
c
Icc
b
Ibe
Vc
Qbe
+
–
Ib
e
RE
McAndrew/Lemaitre/Huszka/Coram MOS-AK December 2008
Slide 9
System Equations (DC): MNA
• Unknowns are V(x), V(b), V(c), V(e), and Ic=I(Vc)
g B V (b) V ( x) I b
x
g B V ( x) V (b) I be (Vbe ) I bc (Vbc ) 0
b
I be (Vbe ) I cc (Vbe , Vbc ) g EV (e) 0
e
I bc (Vbc ) I cc (Vbe , Vbc ) I c 0
c
V (c) Vc
• Vbe=V(b)–V(e) and Vbc=V(b) –V(c)
McAndrew/Lemaitre/Huszka/Coram MOS-AK December 2008
Slide 10
Branch Jacobian Entry (Element Matrix Stamp)
• Solve KCL SI (V)=f(V)=0 at each node, plus the “voltage
equation” for voltage sources (and inductors)
nonlinear, so need iterative Newton solution
Vk+1=Vk+dVk, JkdVk=-f(Vk), Jk= ∂I/∂V |V=Vk
• Easy to set up Jacobian Jk in an algorithmic fashion
rows are defined by nodes that the current flows between
> +ve for flow into node, –ve for flow out-of node
columns are defined by the branch control voltages
> +ve for first node, –ve for second, for Vab=V (a)-V (b)
voltage sources and inductors add a row for the voltage equation
and a column (unknown system variable) for the current
McAndrew/Lemaitre/Huszka/Coram MOS-AK December 2008
Slide 11
Jacobian Assembly (“Stamping”)
V(x)
SI(x)
SI(b)
SI(c)
SI(e)
Vc
V(b)
V(c)
V(e)
Ic
gB
0
0
0
g B
g
g
g
g
g
g
0
B
be
bc
bc
be
B
0
g bc g ce g cc g bc g cc
g ce
0
0
g
g
g
g
g
g
g
1
be
ce
cc
cc
be
ce
E
0
0
1
0
0
• gbece=∂Ibe
cc/Vbe, gcc=∂Icc/Vbc, gm= gce + gcc , go= gcc
McAndrew/Lemaitre/Huszka/Coram MOS-AK December 2008
Slide 12
SPICE
• Circuit simulators are not really “circuit simulators”
for DC they are multidimensional nonlinear equation solvers
for transient they are nonlinear ordinary differential equation
(ODE) solvers
> multidimensional nonlinear equation solvers at each time point
• Instead of thinking of Verilog-A as a means to define
equivalent network models, think of it as a means of
specifying equations for numerical solution
formulate the equations you want
understand how MNA equations are set up
work out how to use Verilog-A to set up the desired equations
McAndrew/Lemaitre/Huszka/Coram MOS-AK December 2008
Slide 13
Weil-McNamee Excess Phase for BJTs
• Goal: implement a phase shift for gm with the least possible
change in the magnitude of gm
network approach leads to 2nd order Bessel (linear phase) filter
straight forward to implement as RLC circuit (L. Wagner, IBM)
Itxf =V(xf2)
I tzf
I txf
1
s
0
TD /3
s2
3 02
1
0
, s j ddt()
TD
xf1
Itzf
TD
xf2
1W
McAndrew/Lemaitre/Huszka/Coram MOS-AK December 2008
Slide 14
How Can We Get Rid of the Pesky Inductor?
I tzf
V (xf2) I txf
I txf 1 sTD s 2 TD2 3
I txf sTD I txf s TD I txf 3
I txf sTDV (xf1)
V (xf1) I txf s TD I txf 3
xf2
xf1
Itzf
TD
V(xf2)
V(xf1)
TD /3
1W
McAndrew/Lemaitre/Huszka/Coram MOS-AK December 2008
Slide 15
Can We Better Approximate an Ideal Phase Shift?
I txf
I tzf e jTD
Itxf =2V(xf) Itzf
I tzf 1 sTD
1 sTD 2
I tzf
1 sTD 2
I tzf
2
I tzf
1 sTD 2
2V (xf) I tzf
xf
Itzf
TD /2
1W
• Only 1 added system variable!
I tzf V (xf) ddtTDV (xf) 2
McAndrew/Lemaitre/Huszka/Coram MOS-AK December 2008
Slide 16
Phase Response
McAndrew/Lemaitre/Huszka/Coram MOS-AK December 2008
Slide 17
Magnitude Response
McAndrew/Lemaitre/Huszka/Coram MOS-AK December 2008
Slide 18
What about Resistors?
p
m
V RI or I GV ?
McAndrew/Lemaitre/Huszka/Coram MOS-AK December 2008
Slide 19
The “Solution” ... sort of
• For “reasonable” R:
natural for NA (SPICE)
efficient for NA
nasty for R=0 or small R
• For “small” R:
extra MNA system variable
no worries for R=0 or small R
I GV
V RI
McAndrew/Lemaitre/Huszka/Coram MOS-AK December 2008
Slide 20
The “... sort of” Solution
`include "disciplines.h"
`define rm 0.001
module
r_va(p,m);
inout
p,m;
electrical
p,m;
parameter real R = 1.0 from[0.0:inf);
analog begin : analogBlock
if (R<`rm)
V(p,m) <+ I(p,m)*R;
EASY TO DEFINE
else
I(p,m) <+ V(p,m)/R; HARD TO IMPLEMENT
end // analogBlock
endmodule
McAndrew/Lemaitre/Huszka/Coram MOS-AK December 2008
Slide 21
Why “... sort of” is not Enough
• Does work in Verilog-A
excellent feature of the language
• Does not (easily) work for
built-in model implementation via ADMS
some model interfaces for some simulators
dynamic switching for the case when R varies with bias
• Do not want to switch formulations during iterative solution
dynamically adds extra system variable I(p,m)
• Observation: must have this current for V=RI formulation
• Conclusion: explicitly include in model formulation
McAndrew/Lemaitre/Huszka/Coram MOS-AK December 2008
Slide 22
How do We Force Verilog-A to do What We Want?
• For simplicity of implementation in model interfaces, need to
get rid of voltage contribution
only want strict nodal analysis formulation
• How can we do this for R=0?
• Want V(p,m)=0
• Set up current
contribution for
this as the only flow
into a node
• Forces set up of
equation we want!
V(p)
I_r
V(m)
. . . . . . .
0 1 0 0 0 1 0
. . . . . . .
V(p,m)
McAndrew/Lemaitre/Huszka/Coram MOS-AK December 2008
Slide 23
The R=0 Solution
`include "disciplines.h"
module
r_va(p,m);
inout
p,m;
electrical
p,m,I_r;
parameter real R = 1.0 from[0.0:inf);
analog begin : analogBlock
I(I_r) <+ V(p,m);
I(p,m) <+ 1.0e-6*V(I_r);
end // analogBlock
endmodule
second equation forces V(I_r) to be current flowing between p and m
McAndrew/Lemaitre/Huszka/Coram MOS-AK December 2008
Slide 24
Extension for Small Nonzero R
`include "disciplines.h"
module
r_va(p,m);
inout
p,m;
electrical
p,m,I_r;
parameter real R = 1.0 from[0.0:inf);
analog begin : analogBlock
I(I_r) <+ V(p,m)-1.0e-6*R*V(I_r);
I(p,m) <+ 1.0e-6*V(I_r);
end // analogBlock
endmodule
first equation forces V(p,m)=I*R (voltage on node I_r is current p→m)
McAndrew/Lemaitre/Huszka/Coram MOS-AK December 2008
Slide 25
Final Result
`include "disciplines.h"
`define rm 0.001
module
r_va(p,m);
inout
p,m;
electrical
p,m,I_r;
parameter real R = 1.0 from[0.0:inf);
analog begin : analogBlock
I(I_r) <+ V(p,m)-1.0e-6*R*V(I_r);
if (R<`rm)
I(p,m) <+ 1.0e-6*V(I_r);
else
I(p,m) <+ V(p,m)/R; // I=G*V formulation
end // analogBlock
endmodule
McAndrew/Lemaitre/Huszka/Coram MOS-AK December 2008
Slide 26
Final Model
• Manipulated Verilog-A equations we want to solve
• Resistor model that does not switch formulations from current
contribution to voltage contribution
strictly nodal formulation
easy to implement in all simulator model interfaces
numerically well behaved for all R≥0
can be adapted to use same “switch” for voltage variable R
> direct bias dependence
> indirect bias dependence (e.g. self-heating)
• Cost is added system variable V(I_r) is added for all values
of R, not just R<`rm
McAndrew/Lemaitre/Huszka/Coram MOS-AK December 2008
Slide 27
Summary
• Circuit simulators are equation, not circuit, solvers
• Historical modeling approach of equivalent networks and a
physical approach may not always give desired result
• By thinking about what equations you want to implement or
solve, and understanding how MNA is set up, you can use
Verilog-A to implement “non-obvious” but useful models
• Note: if “currents” are mapped to node voltages (i.e. system
variables), they need to be scaled by the voltage/current
tolerance ratio (default is 1.0e6)
McAndrew/Lemaitre/Huszka/Coram MOS-AK December 2008
Slide 28