EMX Virtuoso interface tutorial
March 2015
Integrand Software, Inc.
Introduction
The Cadence Virtuoso interface is provided along with
EMX for users who want the convenience of Virtuoso as
the GUI for EMX.
Several features have been added to allow EMX
simulations and Modelgen models to be directly
incorporated into a design flow with Cadence.
The interface supports most of the EMX command-line
options
A suite of examples for a generic 65nm process file has
been created. Use these examples as a starting point for
learning how to use EMX in the Cadence environment.
Please refer to the “EMX_Virtuoso_Reference” for more
details about the GUI.
2
Installing EMX and Modelgen
Contact support@integrandsoftware.com for license files.
Obtain the EMX interface from Integrand
(emxinterface_date.tar.gz)
The EMX manual is distributed with the tarball and is
called “manual.pdf” and there is a gdsview manual called
“gdsviewmanual.pdf”. Please read these manuals before
using EMX.
3
Interface setup
Install EMX and Modelgen in the
same directory.
Modify the file
“emxskill/emxconfig.il”
Set the EMX_interface_path
Set the EMX_path
Set the postcript viewer
EMX_ps_viewer
Set the work directory
There is a .cdsinit file that loads
the interface.
You can modify your .cdsinit file
to include the command
• (load “emxskill/emxconfig.il”)
4
Interface setup (continued)
Set the work directory
There is a .cdsinit file that loads
the interface.
Set the pole zero model button
to “t” if you have licensed this
feature
You can change the default
Linux viewer for the
documentation from nautilus to
the viewer installed on your
system
5
Interface setup (continued)
Set the black box button to
“t” if you want to use black
box features.
There are a number of
options that can be
modified by the user.
The options commented out
using “;” are the defaults.
6
Interface setup (continued)
This emxinterface can be further
customized/modified by users
by modifying the file
emxskill/emxform.ils
7
Using the Interface
(overview)
8
Tutorial material
Several examples have been set up for this tutorial.
These examples can be used to learn about the various
features of the Cadence interface.
Examples include
• symind (symmetric inductor)
• symind_ct (center tapped inductor)
• symind with shield
• balun
• momcap
• mimcap
• tcoil
• transmisson line
9
Virtuoso Layout
Create a layout
using Virtuoso
Use EMX menu
icon to access the
EMX simulator
interface
In this example the ports P1 and
P2 are labels on the drawing layer
10
Generic 65nm .proc file. It is
an ASCII file that should be
created from the appropriate
design manual. See the EMX
manual for setting up a process
file.
EMX simulator interface
Use load state to get the settings for the
various examples. These are text files
that can be stored in the EMX_work
directory or in the cell view.
11
View the
process
This is a
postscript/PDF
file generated
by EMX.
12
View the raw .gds
13
View the GDS layout after the rules of the
process file are applied (e.g., bias, slotting
rules, via merge)
14
Run on multi-CPU machine
Run EMX to generate S-parameters
15
Choose model
A specific model topology can be chosen using devices,
tap,shield, and mode. The model topology that best
matches the layout should be chosen.
16
View the L and Q results in single-ended mode
17
Generate circuit model
18
Compare Model vs EMX simulation: Spectre is
used to playback model to check model vs EMX
accuracy
19
Generate Schematic
20
Schematic with temp coefficients
The default temperature coefficients tcr1 and tcr2
can be set up in emxskill/emxconfig.ils
21
Using symbol/cdf instead of schematic
Generate symbol with CDF
parameters for the model
NOTE:the configuration option
EMX_RLCK_model_schematics=nil
will have to be set)
Temperature coefficients
can be set
22
Generate schematic_nport
which points to S=parameters
23
Generate Schematic using EMX PZ model
24
Generate schematic at DC
which can be used for LVS
purposes
25
Using Cadence pins (symind_ct example)
Cadence pins can be used
for ports. The pin layer
should be included in the
process file
Pins with a direction only
will be treated as an EMX
edge port
Pins with properties for all
directions will be treated
as internal ports with the
size of the pin rectangle
being the size of the port
X1: Edge port CT<0>: Internal port
26
The devices
Inductor
Tapped inductor
Shield inductor
Tapped shield inductor
Interconnect2
Interconnect3
Interconnect4
Tcoil
Shield tcoil
Mim capacitor
Mom capacitor
Transmission line
Differential transmission line
Transformer
Tapped primary transformer
Tapped secondary transformer This is the list of currently supported passive
Dual tapped transformer components for which EMX can create RLCK
Shield transformer lumped models. The models can be
Tapped primary shield transformer
optimized for single-ended, differential or
common-model behavior.
Tapped secondary shield transformer
The schematics are in the document
Dual tapped shield transformer
model_schematics.pdf 27
Using the Interface
(detailed)
28
The .proc technology file is an
ASCII file which contains all the
material properties of the
technology
The cross section picture is
generated by EMX to provide a
detailed visualization of the ASCII
.proc file
29
Default units
Metal layer to GDSII
mapping.
Via layer to GDSII
mapping and via merge
setting.
Boolean operations for
defining via for MIM
capacitor. E.g., When the
via7 is in the ctm region it
connects to CTM.
30
Definitions of
parameters (no
units allowed)
Metal8 sheet resistance is
Metal9 sheet resistance is
defined in a table as a
only a function of width
function of width and
spacing
Metal9 has a bias as a
function of width
31
Substrate definition
Conductor definition
Dielectric definition and
location
Grow or shrink the metals Temperature coefficient
to account for metal bias of metal
32
MiM cap definition
Via definitions and
temperature
coefficients of vias
Identify the MIM
layers
33
GDSview
GDSview is used to
see what EMX is
simulating
34
GDSview
GDSview is used to view the “processed structures” as input to EMX
• processed means, bias applied, via-merging applied, etc.
GDSview quick commands
• left mouse button: zoom
• right mouse button: get dimensions
• h: come close to an metal edge, when a label appears, input “h” and
the layer is hidden
• v: make all the layers re-appear
• z: zoom in
• c: re-center the layout
• x: zoom out
NOTE: Read the GDSview manual to learn more about this tool in detail
35
Advanced options
GUI can be used to
set features that are
not frequently used
For example the
number of threads in
a multi-thread
simulation can be
set here.
36
Accuracy options (Edge and thickness mesh)
Edge mesh and thickness mesh should roughly correspond to
skin depth. Setting 1um should give good accuracy with
reasonable speed. Decreasing this number to 0.5 or lower will
reduce the speed and increase accuracy. These settings can be
used for structures like inductors, transformers where the
routing metal is reasonably wide.
For MOM capacitors use the edge mesh to be the same as the
width of the finger (e.g., 0.1um).
37
Cadence Pins
Cadence pins can be used instead
of labels in the layout
The pins need to be at the 0th level
in the layout hierarchy
The edge port injects current
uniformly into the entire edge
The internal port injects current into
the shape the size of the pin rectangle
X1: Edge port CT<0>: Internal port 38
Cadence Pins
In the EMX .proc file make sure that the pin layers are
Identified (metal1 drawing + metal1 pin)
In the Advanced Options GUI choose
label pins and label depth 0
39
Automatic pin order
The pin order is
sorted alphabetically
in the n-port block
40
Visualization in Matlab
EMX can generate Matlab .m files for
• Structure mesh
• Current plots
The option “--matlab-mesh” is used to generate meshes
The option “--print-currents” is used to generate current
plots
The resulting .m files are in the appropriate EMX_work
directory
41
Mesh
42
Current plotting
Run EMX at a single frequency
Add the option “--print-currents”
43
Current plotting
44
Inductor Meshing
For inductors, transformers, baluns,etc.
• Usually sufficient to have an edge mesh
and thickness mesh roughly the order of
the skin depth at the highest frequency
(usually 1um for default accuracy and
0.5um for higher accuracy) edge-mesh=1
• The mesh is finest on the edges and thickness-mesh=1
corners to capture current crowding most
efficiently
• For narrow routing should have at least 3
mesh elements across the side to ensure
that EMX captures the current crowding
• Refining the mesh will lead to
convergence (a tradeoff with simulation
time).
• Inductance converges quickly, Q more
slowly edge-mesh=0.4
thickness-mesh=0.4
45
Capacitor meshing
Meshing should be on the
order of the finger width,
e.g.,
• Edge-mesh=0.1
• Thickness-mesh=1
• 3d=*
Q is determined a lot by
the substrate and the
shield under the capacitor
at higher frequencies not
just metal loss
46
Combined structures
When you have inductors
and capacitors in the same
structure it is possible to
have different meshes for
different metals
Fine mesh by default,
coarse mesh for specific
metals
47
Octave support
Recent Octave versions
(3.6.4).
Almost as good as
Matlab for graphics
graphics_toolkit(‘fltk’)
Free.
Viewing meshes and
currents and charges
Support for Linux and
Windows
View of Mesh (using geomview)
EMX also creates a geomview
mesh file mesh.list
Execute “geomview mesh.list”
Geomview can be obtained from
http://www.geomview.org/
49
Accuracy options (Via merge)
Global via merge setting Via specific merge settings
The via merge setting can be applied globally (all vias within
0.5um will be merged), or it can be controlled on a layer by
layer basis within the process file. It is recommended to use the
process files to control the via merging.
50
Accuracy options (3D metals)
By default metals in EMX are assumed to be 2.5D. If you set 3D
metals to “*” then all metals are treated as 3D. For structures
like inductors it is sufficient to make only the thick metals 3D
(e.g., metal8 metal9). For MOM capacitors all metals need to be
treated 3D to ensure that the sidewall capacitance is captured
accurately.
51
Ports
By default ports in EMX are assumed to be “edge ports”. Current
is injected uniformly into the closest edge. With the GUI you can
specify signal ports and ground ports. By default ground is
assumed to be the bottom of the substrate. See the user
manual for more information on ports.
Internal ports can be specified using the advanced option of the
interface. Internal ports have a certain size and the assumption
is that the current is locally injected into that location.
52
Port ordering
The ports are order in the same sequence as that entered in the
GUI.
If Cadence Pins are used then you do not need to specify the
ports and can simply use “*” and the Cadence internal port
ordering will be used. This is only useful if you use the S-
parameter output. Note: In order to create models and
generate plots the order needs to follow the EMX convention
order.
53
Frequencies
You can set the frequency range from DC (0) to
any high frequency and provide the step size.
EMX is stable at DC.
54
Advanced options
By default EMX only accounts
for via resistance. In order to
include via capacitance and
inductance enter the via name.
For all vias use “*”.
55
Advanced options
Internal ports can be used
instead of the default
edge ports. Port sizes can
be specified.
Internal ports are like
having current injected
from the top through a
via of the size specified
56
Advanced options
The port labels can be set
at any level in the
hierarchy. If the label
depth is 0 then only labels
at the top layer will be
seen. GDSview will show
you the labels that EMX is
going to see.
Cadence pins can be used
to specify labels for ports.
Needed for Black-box LVS.
57
Advanced options
RLC mode is quasi-static.
To run EMX in full-wave
mode turn on Radiation.
58
Advanced options
Most commands from the
EMX manual or gdsview
manual can be used here.
Read the EMX user
manual for details.
For example,
“--matlab-mesh” to
generate a mesh
“--scaling=0.9” to run
EMX on a half-node.
“--temperature=100” to
run EMX at 100 degrees
59
Advanced options
The location where all the work
and temporary files are kept
can be changed
60
Advanced options (multi-threading)
With the appropriate license EMX
can be run in multi-threaded
mode.
The number of threads can be
specified (if you input 0) then it
determines the number of CPUs
on the machine. The Simul
frequencies can be used to do
multiple frequencies at a time.
Typically you can use
“Threads=0, Simul freqs=2” for
optimum speed.
61
Fitting and comparison
Simulations can be compared with other data files for
either comparison purposes or for building a models. For
example simulation can be compared to measurements.
62
Cadence Waveform viewer
The Waveform viewer uses the native plotting
capabilities of Virtuoso. The calculator and
other functions of WaveScan can be used.
63
Saving form state
The simulation settings can be saved to a text file which can be
reloaded later using load. The form states for these examples
are in the directory “states” and need to be copied to the
working directory. The state can be stored in the cell view.
64
Summary of examples
2 port inductor
(single-ended)
65
Summary of examples
Center-tapped
inductor
(differential)
66
Summary of examples
Inductor with shield
(single-ended)
67
Summary of examples
4 port transformer
68
Summary of examples
MOM capacitor
69
Summary of examples
MIM capacitor
70
Summary of examples
Tcoil
71
Summary of examples
Tline
72
EMX Misc Features
User defined topologies
When using Modelgen the user has a list for predefined
topologies that can be used to generate a RLCK model
It is now possible for the user to generate a model based
on their own topology (and their own fitting risk)
EMX will also generate a schematic associated with this
user defined topology
User defined model
The capabilities for user
defined models has been
enhanced
The designer can create a
schematic view that EMX will
use to build the model
A generic schematic for a simple inductor
A simple schematic is
drawn by the designer
Various constraints can be
use to help with the model
generation
Constraints
Objective function can be
chosen to be one of the
supported topologies
Ranges can be set for
components
Individual components can
have values assigned
Symmetric can be
enforced
Order of magnitude can be
assigned to help optimizer
Resulting model
The final model will be generated using the constraints
S-parameters objective function
The individual devices have a
complicated objective function
for fitting (e.g., inductors fit,
S-params, Z-params, L, Q,
etc.).
When the designer does non
know the underlying topology
S-parameters alone can be fit.
In this case “sparam2” was
used.
S-param fit
S-parameter fit may
not be as good an
inductor objective
function but may be
acceptable depending
on context
EMX black box flow
Designers often use EMX to simulate component ensembles
(e.g., VCOs, LNAs).
Typically the active circuitry is omitted from the layout and
EMX is used only on the passive blocks
The EMX results are then manually stitched together with the
schematics for the active circuitry. This step can be somewhat
error prone.
The EMX interface and EMX has been modified to be able to
use EMX on a real circuit layout
• EMX is used for the passive circuitry/interconnect
• The foundry models are extracted for the actives
• The user chooses the cells that EMX is going to simulate
• Multiple EMX views are now supported (S-pars, PZ, Model)
• A final integrated netlist and schematic is generated that includes
the EMX results combined with the foundry models
Setting up the EMX interface
The black box flow needs to be enabled in “emxconfig.il”
EMX 4.2 or later needs to be used
Separate view names need to be provided
Example of amplifier design
A simple amplifier is
used to illustrate the
flow
It contains an inductor,
a MOM capacitor and
transistors
amp2
Inductor and MOM cap layout
Inductor and capacitor layout
Cadence pins need to be used for the ports (in this case
internal ports)
Cadence pins are always at the 0th level of the hierarchy.
Selecting only caps and transistors as
bboxes
Now EMX will be
used to simulate the
inductor and all the
interconnect
excluding the
capacitor and
transistors
S-parameter view
EMX S-parameter view (includes inductor)
The N-port block is a pointer to the S-parameters
Only the caps and transistors come from the foundry
models
Temperature
Option 1: Use the TCR coefficients in the Spectre model
to get temperature effects
Option2: Run EMX at a particular temperature
Running EMX at a certain temperature may be slightly
more accurate since it can account for different
temperature coefficients for different metals.
87
Temperature coefficients
The EMX .proc file can contains the temperature
coefficients of the metals
tcr1=0.003
The temperature coefficients may be
different for different metals
88
OPTION 1
Run EMX, create model,
create symbol schematic
89
OPTION1
Setup tcr1 to 0.003 in
emxskill/emxconfig.il
90
OPTION1
Create a testbench
Change the
temperature in ADE
Run the simulation
91
OPTION2
Run EMX at a different
temperature
Create symbol and
schematic and export
to a different symbol
with temperature
encoded
92
Comparison of OPTION1 and OPTION2
−Model (with tcr=0.003) at 25C
−Model (with tcr=0.003) at 100C
−EMX simulation at 25C
−EMX simulation at 100C
For this case, both approaches give roughly the same result.
93
Mask simplification
The process file may have an emxmask statement that restricts
the entire layout considered by EMX to a particular region.
94
Mask simplification
There is a --excluded-cells-file option that can be used
to omit cells matching various regular expressions
“ex.txt” contains “momcap*”
95
--included-cells-file
The path to a file that contains the names of
the sub cells that need to be kept will only
simulate those structures. In this case the
two inductors will be kept and the MOM cap
will be removed.
96
Mask simplification and hierarchy
There is an
“--included-cells-file”
to simulate only a few
of the cells in the
layout
Consider a layout
composed of 3 sub
cells: 2 inductors and
a MOM capacitor
The inductors have
the same port name
P2 in the sub cells P2 is used in two subcells
97
Unique labels
MOM capacitor
--unique labels will add suffixes to the original labels to avoid
duplication. In the EMX form you will need to add the suffix in
names of the ports (e.g., “P2_2”) in the signals field.
98
Meshing fill
To account for the effect
of metal loss in the fill the
fill needs to be meshed
into at least 3 elements
You can exclude fill by an
using the “fill” command
in the .proc file
99
Excluding fill
Fill can be included or excluded from the
simulation by modifying the process file
EMX will throw out all metal shapes less
than 1um in size
100
Zoom of fill current
There is circulating
currents in the fill. If
you superpose all
the currents then it
is causing an
opposing current
flow to the flow in
the inductor.
This is the reason
for the decrease in
Q
101
Frequencies
DC simulation is
allowed
Multiple-grids of
frequencies is allowed
using --multi-sweep
102