Anda di halaman 1dari 9

CAPEM: The Capacitance Extraction Tool

version 1.1

April 12, 2007

1 Overview
CAPEM is a 3d interconnect capacitance extraction tool which can handle com-
plex configurations of rectilinear conductors and dielectrics (see [1] included with
this distribution). It based on a floating random walk sampling technique.
Computation of capacitances with CAPEM requires a specification of con-
ductors and dielectrics and a set of Green’s function characterisation for the
corresponding dielectric configuration. CAPEM operation is a two-step proce-
1. Specify a dielectric configuration and generate green’s function (GF) char-
2. Specify the conductor configuration for the dielectric configuration of in-
terest and use GF characterisation generated in step 1 to compute the
The script is used as the interface to the extractor. This script as-
sumes that the working directory for CAPEM will be pointed to by an envi-
ronment variable CAPEM PROJECT DIRECTORY. The environment variable
CAPEM INSTALL must also be set and should point to the CAPEM installa-
tion directory.

2 Dielectric configurations and Green’s Func-

tion generation
The conductors are assumed to be embedded in a background dielectric stack
with layers of dielectrics. Deviations from the stack are described by boxes of
dielectrics. Thus, to describe a dielectric configuration, you must specify the
dielectric layers, together with the possible boxes of dielectrics that may be
present in the space of interest.
Using this description of dielectrics, a set of Green’s functions is character-
ized and then used during the extraction process. The following steps should
be followed:

1. Initialise a GF characterisation with the command -gf <gf-name>

A GF characterisation set directory with the following name is created:


Running the command creates template configuration files that have to

be modified to represent the desired configuration.
2. Move to the directory


and provide the relevant information in the configuration files. The fol-
lowing configuration files are needed.

slab.dat : layered dielectric description

box.dat : additional dielectric information
z.dat : Z-coordinate specification for
GF generation

3. Run -info gf

to check the active GF set. If the current GF characterisation is not the

desired one, Use -set -gf <gf-name>

to set the active GF set to gf-name.

4. Run -gen <number_of_grids_per_side> <single/nosingle>


number_of_grids_per_size : denotes the grid size ( use a number >= 8 )

single/nosingle : generate slab GF for single dielectric or not
: (for starters, use the single option)

If the number of grids per side is N , then the discretized GF will have
6(N − 1)2 points.
At this point, a GF set with name gf-name would be ready for use in capacitance

2.1 Dielectric Configuration Files
As noted above, there are three files to be specified. The first file slab.dat
specifies the dielectric stack. The following example shows a file which describes
a dielectric stack with two layers
2 ! Number of Dielectic Slabs
9 ! Number of Slab interface locations to characterize
1.0 50 ! <Diel Const> <Z-Coord of upper limit of slab>
! this means from z=-infinity to z=50, the
! dielectric constant is 1.0
2.0 100000 ! <Diel Const> <Z-Coord of upper limit of slab>
! this means from z=50 to 100000, the
! dielectric constant is 2.0
! In this file, z=100000 is assumed to be the upper limit of
! the space of interest
The file uses ’ !’ marks for adding comments. There are four lines in this file. The
first line specifies the number of dielectric layers (2). The second line specifies
the number of Green’s functions that must be characterized for each cube with
two layers (keep this 9 for now). The third and fourth lines (ignore the comment
lines) specify the two layers starting from the lower layer (dielectric strength 1.0
upto z = 50) and then the upper layer (dielectric strength 1.0 up to z = 100000).
The second file box.dat specifies the relative dielectric strengths of boxes of
dielectrics in the space. For example, if in the stack shown above, dielectric
boxes of dielectric strengh 3.0 are present, then there are four relative ratios of
box-to-slab dielectrics that are of interest, namely 1/3, 3/1, 2/3, 3/1. These are
specified in the file box.dat, shown below.
4 ! Number of Box epsilon ratios (make this 0 if Box GFs not needed)
3 ! Number of Half-Box interface locations to characterize
3 ! Number of One-fourth Box interface locations to characterize
3 ! Number of One-eighth Box interfaces locations to characterize
0.3333 half ! Half-Box case needed
3.0 nohalf ! Half-Box case not needed
0.6666 half ! Half-Box case needed
1.5 nohalf ! Half-Box case not needed
The first line specifies the number of box-slab strength ratios that will be used
(4). The second, third and fourth lines describe the number of interface locations
that must be characterized (more will need more memory, but give better speed).
The last four lines describe the ratios. Each ratio comes with an attribute
(half/nohalf). If you have used the half attribute for ratio x, then you do not
need it for ratio 1/x (you must specify the half option for at least one of x and
The last file z.dat is to be used only for efficiency improvement, and is not
described in this HowTo. Please consult [1] and the sample file generated by
the script for details.

3 Capacitance Extraction
Using a pre-characterized GF set, the capacitance extraction process proceeds
by defining the conductor geometry, some control parameters for guiding the
extraction, and identification of the active set of conductors. The process to be
followed is
1. Run the command -c <project-name>

The following directory will be created:


Running the command creates template configuration files that have to

be modified to represent the desired configuration for capacitance compu-
2. Specify conductor configuration and program parameters. Move to the


and provide relevant information in the configuration files. The following

configuration files are needed.

slab.dat : contains the slab dielectric information

: (must be consistent with the corresponding GF set)
box_diel.dat : contains a description of all the dielectric
: boxes present in the extraction space
conductor.dat : contains a description of all the conductors
: present in the extraction space.
agroup.dat : sets the conductors on whom capacitance
: is to be extracted.
program.param : defines the length scale and sets internal
: program parameters
walk.param : specifies parameters to control the random walks.
query.param : specifies parameters to tune the geometric data structure.

3. To compute the capacitances, Run -info projects to check the

’current project’ If the current project not the desired one, Use -set <project-name>

to set the current project as the active project.

4. Run -info gf to check the active GF characterization set. If it is
not the desired one, use -set gf <gf-name>

to set the ’current GF characterisation’ as gf-name.

5. Now that the set-up is complete, run -run

to extract the capacitance. Output from the script will be sent to the
standard output.
The script can be used to delete projects, and to find information about the
available GF sets, projects, program control parameters and so on. A summary
of such commands is given below: -d <project-name/gf-name> : delete the named project. -info projects : list the set of available projects. -info gf : list the available GF sets -info program : program parameters in the current active project -info walk : walk parameters in the current active project -info query : query parameters in the current active project -sync : make the data structures consistent

Use the “Sync” operation to make data structures consistent (do not remove
directories yourself!). Do not delete the capem-generated directories starting
with a dot from your working area!

4 File Formats
Hefore running the capacitance extraction using the “-run” option of the
script, some files have to be populated. These are
1. conductor.dat : Conductor description file
2. slab.dat : A Slab_Dielectric_File
3. box_diel.dat : A Box_Dielectric_File
4. agroup.dat : An Active_Group_File
5. program.param : A Program_Parameter_File
6. walk.param : A Walk_Parameter_File
7. query.param : A Query_Parameter_File
and are kept in the directory of the current active project.
Each of the specification files mentioned above has its own format. Com-
ments can be put to facilitate the reading. A comment starts with ’ !’ and ends
with EOF(End of File) or EOL(end of line i.e.
n). So the following example for a parameter xyz is valid

xyz ! some parameter
! some parameter xyz
will not work since the string xyz is now a part of the comment.

4.1 Conductor specification: the conductor.dat file

The conductors are represented as a set of rectilinear boxes, identified by their
body diagonal, and having a name. Each conductor.dat must have at least six
conductors defining a closed, hollow box, with each bearing the name “VSS”.
These six boxes represent the reference point at infinity in the solution of
Laplace’s equation. Several conductors can have the same name, and the set of
conductors bearing the same name is called a group. An example of such a file
is given below:
! start with six reference planes
-100000 -100000 -100000 100000 100000 -100000 VSS
-100000 -100000 100000 100000 100000 100000 VSS
-100000 -100000 -100000 100000 -100000 100000 VSS
-100000 100000 -100000 100000 100000 100000 VSS
-100000 -100000 -100000 -100000 100000 100000 VSS
100000 -100000 -100000 100000 100000 100000 VSS ! VSS specification is necessary
! parallel plate capacitor, with two 1000x1000 plates each 10 thick,
! separated by 90 units
! <Body Diagonal> <Group Name> (body diagonal format: lx ly lz hx hy hz)
0 0 0 1000 1000 10 a ! bottom plate
0 0 90 1000 1000 100 b ! top plate
The length unit is defined in the program.param file in the project.

4.2 Slab dielectric configuration: slab.dat

This file contains the information regarding the dielectric slabs or layers. The
extent of a layer is from the top surface of the preceding layer to an upper limit
which is specified in the file. Slab entries are to entered in the increasing order
of Z-Coordinate A sample file is
! first specify the number of slabs
2 ! Number of Dielectic Slabs
! the lowest slab is from z = -infinity to z = 50
! and has dielectric constant 1.0
1.0 50 ! <Diel Const> <Z-Coord of upper limit of slab>
! the second slab is from z = 50 to z = 100000 (infinity)
! and has dielectric constant 2.0
2.0 100000 ! <Diel Const> <Z-Coord of upper limit of slab>
Any number of slabs can be specified.

4.3 Box Dielectric file: box diel.dat
This file specifies the deviations in the dielectric configuration from the purely
layered structure specified in slab.dat. The deviations are expressed as a set of
dielectric boxes. Each box has a dielectric constant and is specified by its body
diagonal (in the same way as the conductors). A sample file is
0 ! number of z-coord GF files
1 ! number of box dielectrics
! <Body Diagonal> <Diel Const> box dielectric specification
300 300 40 700 700 60 2.0
This file specifies that there is one dielectric with dielectric constant 2.0. The
first integer in the file specifies the number of z-coordinate GF files that are
present in the characterization.

4.4 Program Parameters: program.param

This file specifies the scale factor, the virtual grid size during the extraction, the
size of internal hash tables, and the discretization count used in the characterized
GF set. A sample file is
! Note: order of specification must be exactly as listed below
! Scale factor: 1 unit is this many meters
! virtual grid size: one unit is sub-divided into this many grids
503 ! Group_Hash_Table size (don’t change it)
1000 ! Default_Group_Inflation (don’t change it)
! Discretrization_Count = 6 * (N-1)^2
! where N was the number of grids per side
! specified during the corresponding GF set
! generation

4.5 Walk Parameter File

This file specifies parameters which are used to control the random walks. The
walk parameter file contains parameters such as

1. a hash table size.

2. a random number generator seed.
3. the limit on the number of walks to be carried out.
4. the interval at which the capacitance values are updated.
5. the limit on the total number of walks started at each net.

6. the percentage error to which you wish to estimate the capacitances.
7. the threshold value for the capacitance for which you wish to control the
error (all capacitances less than this threshold will be essentially ignored).
A sample file is given below:
503 ! Map_Table_Size (leave unchanged)
1024 ! Random_Number_Generator_Seed (try different ones sometimes)
100000 ! Total_Number_of_Walks to be run
! increase if higher accuracy is desired
5000 ! Checking_Interval
! error estimation will be updated every 5000 cycles
! make it smaller if you want to use intermediate results
50000 ! Walk_Limit per group
! Increase if the group capacitances show different
! convergence rates
0.00001 ! Tolerance_Limit
! stop when the relative error is 0.01 percent
1.0e-21 ! Capacitance_Threshold
!(capacitances below this will not be checked for errors)
100000 ! Walk_Step_Limit
! if a particular walk takes more than these many steps,
! it will be aborted.
0 ! Sampling_Walk_limit (keep this 0)
1000 ! Reporting_Interval (to check progress)
0 ! Box_Tuning_Flag (leave this 0)

4.6 Query Parameters: query.param

There is also a query parameter file which describes the limits on the space
in which the conductors reside and sets certain parameters for internal search
functions. The choice of these parameters can enable you to trade off memory
versus speed. A sample file is shown below
! first define the space in which conductors reside
! specified using the body diagonal
-100000 -100000 -100000 100000 100000 100000 ! Universal_Box_Diagonals
! The next three numbers specify the size of boxes into
! which the space will get divided (keep this to be universal box_size/100
! for good results
1000 ! X_Dimension_Threshold
1000 ! Y_Dimension_Threshold
1000 ! Z_Dimension_Threshold
! The next two numbers should be left as they are
! do not change them.
10 ! Skeleton_Threshold
10 ! Ambiguity_Threshold

5 Result Interpretation
The numbers produced by CAPEM are statistical estimates and should be used
carefully. The tool provides the estimate µ together with the standard deviation
σ. Since the estimate is approximately normally distributed, this means that you
can say with 95% confidence that the actual value lies between [µ − 2σ, µ + 2σ].
To gain higher confidence, use repeated runs with different random seeds and
aggregate the results.
Also, the performance of the tool is much better in the single dielectric or
dielectric stack case. With box dielectrics, the estimates take longer to converge.
Thus, in modeling your problem avoid box dielectrics if you can. Typically
box dielectrics appear conformally with the conductors, and in these cases, the
estimates converge much faster.

[1] M. P. Desai, “An Efficient Capacitance Extractor Using Floating Ran-
dom Walks,” preprint (included with this distribution as capem