Professional Documents
Culture Documents
Guide
Product Version 12.0
December 2012
Contents
About This Manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Audience . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
How This Manual Is Organized . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Conventions Used in This Manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Related Documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1
Basics of Cell Library Characterization . . . . . . . . . . . . . . . . . . . . . . . .
13
14
14
15
15
15
16
17
19
19
20
20
21
26
27
28
29
30
30
30
30
30
31
December 2012
2
Getting Started . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
33
34
34
35
36
36
41
43
45
46
46
48
48
3
Preparing for Library Characterization . . . . . . . . . . . . . . . . . . . . . . . . .
49
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Inputs to Encounter Library Characterizer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SPICE Inputs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Encounter Library Characterizer Command File . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Simulation Setup File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Configuration File (elccfg) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Statistical Configuration File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Property File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Liberty (.lib) File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Outputs of Encounter Library Characterizer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
50
51
51
51
53
54
57
58
59
59
4
Performing Cell Library Characterization . . . . . . . . . . . . . . . . . . . . . .
61
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Performing Library Characterization for Standard Cells . . . . . . . . . . . . . . . . . . . . . . . . .
Performing Library Characterization using a Pre-driver Cell . . . . . . . . . . . . . . . . . . . . . .
Performing ECSM-Based Power Characterization for Level-Shifter Cells . . . . . . . . . . . .
62
63
65
67
December 2012
69
71
73
75
77
80
81
83
85
87
91
93
94
94
95
96
97
99
5
Performing Cell Library Validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
101
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ecsmChecker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
libdiff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
LibVsSpice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
EtsvsSpice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
102
103
104
109
110
6
Troubleshooting Library Characterization Issues . . . . . . . . . . . .
113
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Characterizing Failed Cells . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Handling Failures During Various db_spice Stages . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Adjusting Transient Time to Prevent Simulation Failure . . . . . . . . . . . . . . . . . . . . . . . . .
114
115
116
118
December 2012
A
Simulation Setup File Format
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
Case-Sensitivity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Wildcards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Define Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
GROUP Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
AOCV GROUP Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
INDEX Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
MARGIN Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
NOMINAL Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROCESS Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PWL Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SIGNAL Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SIMULATION Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Control Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SET_CELL Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SET_DEFINES Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SET_GROUP Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SET_PIN Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SET_PROCESS Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
General Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Standard Cell Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Level Shifter Cell Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
I/O Cell Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
B
Property File Format
122
122
122
122
123
125
128
130
132
135
136
138
139
139
140
142
143
144
144
148
148
153
155
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
C
Gate File Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Gate File
169
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
December 2012
Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Gates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Making Gate File Corrections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Creating a Gate File to Aid Cell Recognition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.................................................................
171
171
177
179
180
184
D
Bool File Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
185
Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Boolean Operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Pin Attribute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Logical Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Tri-state Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Sequential Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Using a BOOL File to Aid Cell Recognition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
186
187
187
188
188
189
191
193
E
Specification File Format
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ARC Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
BUNDLE Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
CHECK Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
COMPLEMENTARY Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
DESIGN Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
END_OF_DESIGN Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
INHIBIT Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
NODE Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PORT Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
REGISTER Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
VECTOR Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
December 2012
195
197
197
199
199
201
201
201
201
202
202
205
205
207
December 2012
Audience
This manual is written for library developers who work with standard cell libraries. Such library
developers must also have a good understanding of UNIX and Tcl/Tk programming and
concepts of cell layout, SPICE modeling, and circuit simulation.
December 2012
text
text
* (asterisk)
library.lib
[ ]
[ | ]
December 2012
10
{ | }
{ [ ] [ ] }
...
.
.
.
Use white space (tabs or spaces) to separate a command and its arguments.
Related Documents
For more information about Encounter library characterizer, see the following documents. You
can access these and other Cadence documents with the Cadence Help System online
documentation system.
README file
Contains installation, compatibility, and other prerequisite information, including a list of
Cadence Change Requests (CCRs) that were resolved in this release. You can read this
file online at downloads.cadence.com.
December 2012
11
December 2012
12
1
Basics of Cell Library Characterization
This chapter describes Encounter library characterizer automatic cell library characterization
in more detail, including the potential problems in cell library characterization and how
Encounter library characterizer solves them.
This chapter presents the following topics:
December 2012
13
December 2012
14
Inverter
2-input NAND
Full adder
4-input NAND
2-input NOR
December 2012
15
To measure tpLZ
To measure tpLZ
Library characterization output for tristate logic cells includes standard propagation delays
and propagation delays for the high-impedance states (low to Z, high to Z, Z to low, and Z to
high). Encounter library characterizer generates input load models and output source models,
as well as the capacitance of the high-impedance ports, which is needed when multiple
outputs are connected together.
Since it is not possible to measure the off-state delays (tpLZ and tpHZ) directly, Encounter
library characterizer uses internal nodes to characterize these delays. It automatically
recognizes tristate logic and identifies the internal nodes to use for the off-state
characterization.
Note: N-channel open drain circuits have only low-to-Z propagation delays, and p-channel
open drain circuits have only high-to-Z propagation delays.
Bidirectional Cells
Bidirectional cells, which contain ports that are both inputs and outputs, are composed of
tristate logic outputs and combinatorial inputs. Encounter library characterizer automatically
recognizes this type of circuitry and identifies the internal nodes necessary for off-state
delay characterization. Figure 1-3 on page 17 shows an example of a bidirectional cell.
December 2012
16
To measure tpLZ
December 2012
17
to initialize latches
Specifically for sequential logic cells, Encounter library characterizer automatically generates
a comprehensive suite of vectors to validate race conditions. These vectors switch all
combinations of the inputs to calculate input timing constraints.
In addition, for dynamic sequential logic cells, Encounter library characterizer automatically
adds internal nodes to enable drive strength checking, as shown in Figure 1-5 on page 18.
Figure 1-5 Dynamic Sequential Logic Cells
D flip-flop
(pseudo-dynamic)
Register bit
(dynamic)
December 2012
18
December 2012
19
Level shifters
Schmitt trigger
CVSL
State Dependency
The propagation delay between some input ports and output ports depends on the status of
other input ports. Two types of logic are state-dependent:
December 2012
20
Binary Search
In sequential logic, the register state is determined by the timing between two input ports.
Examples are the setup and hold time between the data port and the clock port, the release
and removal time between the clock and the asynchronous port, and the recovery time
between asynchronous ports (see Figure 1-10 on page 22).
December 2012
21
The start value specifies a value that is known to pass for setup time simulation and to fail
for hold time simulation. The end value specifies a value that is known to fail for setup time
simulation and to pass for hold time simulation. The binary search stops when the size of the
search range shrinks to less than the step value. By default, binary search uses the
following values: Bisec = 3.0ns 3.0ns 10ps
Binary search then uses the following equation to determine the next simulation point:
D - CK = (Latest Pass Point + Latest Fail Point)/ 2
In a binary search for setup time, the initial Latest Pass Point equals -start, and the
initial Latest Fail Point equals end. In a binary search for hold time, the initial Latest
Pass Point equals end, and the initial Latest Fail Point equals -start.
If the simulation result for the output Q is the same as the expected waveform (rise or fall),
and the CK to Q delay satisfies the delay tolerance check, the simulation passes. Otherwise,
the simulation fails.
December 2012
22
d0 x EC_BI_DRATIO
d0
Figure 1-12 on page 24 illustrates the initial binary search simulation. This step passes
because it uses the start value (6ns) set in the SIMULATION statement in the setup file.
This step also measures the delay (d0) from the clock (CK) to the output Q. This delay is used
for the delay tolerance check, to ensure that the setup time chosen is not so close to the
switching point that the simulation fails.
December 2012
23
6.0n
d0
Figure 1-13 on page 24 illustrates the first simulation. In this step, the simulation fails because
it uses the end value (6ns) set in the SIMULATION statement in the setup file.
Figure 1-13 Binary Search Step 1
Latest Pass (-6.0ns)
D
CK
6.0n
The following simulations use the following equation to measure the next simulation point:
D - CK = (Latest Pass Point + Latest Fail Point)/ 2
Figure 1-14 on page 25 illustrates the next simulation. Using this equation, the simulation
point is:
(-6.0 ns + 6.0 ns)/2 = 0 ns
This simulation fails because Q is different than the estimated waveform.
December 2012
24
CK
D
CK
3.0n
December 2012
25
D
CK
1.5n
Binary search continues until the size of the search range shrinks to less than the 10ps value
set in the SIMULATION statement in the setup file. When this occurs, the latest simulation
pass value becomes the setup time value (see Figure 1-17 on page 26).
Figure 1-17 Final Binary Search Step
D
CK
2.25n
December 2012
26
Level
Symbol
Default*
Impact on
Vthi
50%
Delay
Vtho
50%
Delay
Vih
100%
Slew
Vil
0%
Slew
Voh
100%
Slew
Vol
0%
Slew
Vish
90%
Slew
Visl
10%
Slew
Vosh
90%
Slew
Vosl
10%
Slew
* Percentage of VDD
Pin-to-Pin Delay
Pin-to-pin delay is the time that it takes a change at an input pin to effect a change at an output
pin. The time is measured from the point when an input signal switches through an input
threshold voltage (Vthi) to the point when an output signal switches through an output
threshold voltage (Vtho), as shown in Figure 1-18 on page 28.
December 2012
27
INPUT
Vtho
OUTPUT
delay
delay
Because the amount of delay depends on the input slew rate and the output pin capacitance,
library characterization executes simulations by using different input slew rates and output
loading capacitance combinations.
The input slew rate, output loading, and calculated pin-to-pin delay is saved as a twodimensional delay table (delay model).
The output slew rate, which is also calculated during these simulations, is saved in a
second table (output slew model).
Using the characterization data contained in these two tables, the Encounter library
characterizer cell library characterization provides the delay/driver model for specific pin-topin delays.
Power Consumption
Power consumption refers to three types of power:
Switching power, which is due to the charging and discharging of the loading capacitance
Short-circuit power, which is due to the current draw from supply to ground when the
output switches. Short-circuit power depends on both the input slew rate and the output
loading capacitance.
Static leakage power, which is due to the static current drawn from supply to ground
when the circuit is stable
Encounter library characterizer characterizes all three types of power consumption and saves
the results in tabular format in the database.
December 2012
28
OR
power = Integ(I(VDD)-I(LEAKAGE))*VDD - (1/2*Cload*VDD*VDD)
Input Constraints
For sequential logic cells, Encounter library characterizer characterizes the input signal
constraints, including setup time, hold time, release time, removal time, recovery time, and
minimum pulse width. It characterizes the constraints by using a delay-tolerance-based
binary search method. The results are saved as a table of input slew rates.
From a cells sequential logic, Encounter library characterizer determines the properties of
the clock signal, data signal, preset signal, and clear signal and generates the constraint
definition, as follows:
Setup, hold: data to clock
Release, removal: clear/preset to clock
Recovery: clear/preset to preset/clear
Minimum pulse width: clock/clear/preset
December 2012
29
K-Factor Model
Encounter library characterizer generates a simplified output driving model called a K-factor
model. It calculates this model as follows:
delay(C load) = D0 + (K-Factor x C load )
December 2012
30
Distributed Processing
Since Encounter library characterizer executes many simulation jobs to obtain accurate
results, it contains a distributed (parallel) processing system to minimize throughput time.
The distributed processing system is based on the server-client model and can therefore use
multiple CPUs across a network. Encounter library characterizer contains load-sharing
software that monitors each computers workload and invokes jobs on machines with less
loading.
The Encounter library characterizer distributed processing system differs from a typical batch
system by monitoring the number of free simulator licenses, so simulations will not fail
because there are no licenses available.
The distributed processing system supports multiple users. The order in which jobs are
submitted can be controlled by user-defined priorities.
December 2012
31
December 2012
32
2
Getting Started
This chapter describes the configuration requirements for Encounter library characterizer.
December 2012
33
downloads.cadence.com, where you can review the README before you download the
Encounter library characterizer software.
In the software installation, where it is also available when you are using or running the
Encounter library characterizer software.
where:
install_dir is the actual installation directory.
December 2012
34
Product Licenses
Encounter library characterizer offers a wide range of features and functionality. The features
to which you have access are determined by your product license. The following table shows
a list of Encounter library characterizer features that are supported through different licenses:
License
Features
ETS L or ELC XL
ETS XL or ELC
GXL
Important
The first ELC XL/GXL and ETS L/XL license enables simulations to run on a single
processor. Every additional ELC XL/GXL and ETS L/XL license allows you to run
parallel simulations on three additional CPUs. Therefore, if you have 4 licenses, it
will allow 10 parallel simulations.
December 2012
35
This modification is needed for all the machines on which you will run the simulation.
2. Add the following line to the /etc/rpc file:
ipsd 574786868 ipsd
December 2012
36
Type ipsd.
Tip
For more information on the ipsd command, see the Executables chapter of the
Encounter Library Characterizer Text Command Reference.
You can specify multiple simulator license files by specifying this variable for each
simulator.
2. Specify the ipsc command to configure an IPSC daemon:
ipsc [-c number_of_jobs] [-f] [-i] [-l license_file[:license_file...]]
[-n feature_name] [-w machine_load_threshold] [-s ipsd_server]
Tip
For more information on the ipsc command, see the Executables chapter of the
Encounter Library Characterizer Text Command Reference.
a. To configure an IPSC daemon that manages the other IPSC daemons, and does not
assign simulation jobs, specify the ipsc command without a simulator license
feature name.
December 2012
37
This IPSC daemon assigns simulation jobs for the Spectre simulator.
Note: You can configure multiple IPSC daemons to assign ELDO, hSpice, and Spectre
simulations at the same time.
Specify the ipsc command for each simulator that the library characterizer wants to run.
For example, to configure IPSC daemons to assign ELDO and Spectre simulations,
specify the ipsc command twice, once for each simulator:
ipsc -n ELDO
ipsc -n SPECTRE
When you specify a simulator, IPSC checks for the simulators license. If you did not
previously set the license file with the LM_LICENSE_FILE variable, or if you want to
specify a different license file, you can use the -l argument to do so.
Multiple users can submit jobs to different simulators at the same time. You can monitor the
job status by using the ipsstat command.
Running IPSD/IPSC
Use the following steps to run IPSD/IPSC:
Start the IPSD daemon on the host as well as the client machine:
ipsd
Start the IPSC daemon on the host machine using the following command if all the
machines are on the same network:
ipsc host client1 client2
If all the machines are on different networks, use the following command to start the
IPSC daemon on the host machine:
ipsc -s host client1 client2
Use the ipsc command to specify the settings for parallel simulation:
December 2012
38
Where:
-c specifies that the maximum number of parallel jobs that can be submitted for
simulation will be 4.
Verify that the network resource control daemon is installed on the network by typing the
following UNIX command:
shell 100> ipsstat
A report on the connection to the control daemon and the availability of simulation
servers on the network is output.
Note: Use the ipsstat command with the -ipsc option to display the IPSC
configuration for a specific host on the network. For example to display the IPSC
information for host1, use the following command:
ipsstat -ipsc host1
-c client_name
Specifies the name of the client machines on which Encounter library characterizer is
running. To list the names of all such machines on the network, type -c all.
-u user_name
December 2012
39
-s server_machines
Specifies the names of the simulation server machines to be monitored. The default is
the list of machines specified by the IPSSERVER variable.
The following example shows a report generated by the ipsmon command. In this report,
DESIGN lists the cell names on which the library characterizer is running simulations. For
each cell name:
PID is the process identification number for the simulation job on the machine
PROCESS
ID
SITE
PID
STATUS
----------+----------+--------+---------+-------+-------------------+----------+--------+---------+-------+-------------------+----------+--------+---------+-------+---------BUFX20
worst
D0001
dstorm17
16393
BUFX20
worst
D0000
dstorm18
16399
----------+----------+--------+---------+-------+---------BUFX20
worst
D0001
dstorm17
16393
BUFX20
worst
D0000
dstorm18
16399
----------+----------+--------+---------+-------+---------INVXL
worst
D0000
dstorm17
16402
BUFX20
worst
D0000
dstorm18
16399
----------+----------+--------+---------+-------+---------INVXL
worst
D0000
dstorm17
16402
INVXL
worst
D0001
dstorm18
16450
----------+----------+--------+---------+-------+---------INVXL
worst
D0001
dstorm18
16450
----------+----------+--------+---------+-------+----------
December 2012
40
You can specify one or more names by separating them with a colon (:).
2. Specify the ipsmon command with the machine names using the -s argument.
For example, the following command returns job information for the user named
student, who is running jobs on machines named student1, student2, and
student3.
ipsmon -c all -u student -s student1:student2:student3
2. To define the LSF bsub command options to submit a batch job to the LSF queue,
specify:
set_var EC_LSF_OPTIONS lsf_bsub_options
For example, to run jobs on machines in the rh_any LSF host group, specify:
set_var EC_LSF_OPTIONS -m rh_any
Note: By default, Encounter library characterizer uses the sgsimlsf run script, which
includes the EC_LSF_OPTIONS variable. This script can be found in the
install_dir/etc/elc/bin directory. If you want to use a user-defined run script
instead, specify the EC_SIM_LSF_CMD variable. This variable can also be used to
specify bsub command options.
3. To specify the number of parallel jobs to submit to the LSF queue at once, specify:
set_var EC_SIM_LSF_PARALLEL number
The following variables run three parallel simulation jobs on the same local host using
the Spectre simulator:
set_var EC_SIM_USE_LSF 1
December 2012
41
Note: The EC_SIM_LSF_CMD variable specifies the command to submit simulation jobs.
If you specify this variable as null (), the library characterizer calls the specified
simulator (EC_SIM_NAME) to run jobs on the local host.
December 2012
42
December 2012
43
-al
-C log_file
-cdb cmd_file
-dpm cmd_file
-L log_file
-Q
December 2012
ELC GXL
ELC XL
ETS XL
ETS L
44
-r rechar_file
-S cmd_file
-slc cmd_file
-version
-L logfile
Specifies the name of the log file. The default name is elc.log. This parameter is
optional.
-C command_logfile
Specifies the name of the command log file, which contains a log of all of the commands
that you used during your Encounter library characterizer session. The default name is
elc_cmd.log.
December 2012
45
You can also execute a previous command by typing the following command:
elc> !command_name
or this command:
elc> !history_number
In the shell environment, you can also execute any UNIX command in addition to the
Encounter library characterizer commands.
To run a command file in interactive mode, type the following:
elc> source cmd_file
-S cmd_file
Specifies the name of the command file.
L logfile
Specifies the name of the log file. The default name is elc.log.
Encounter library characterizer reads the command file, executes the commands, and
outputs any messages to the log file.
December 2012
46
ALL
NONE
list
December 2012
47
To see the entire list of commands and their syntax, type the following on the Encounter
library characterizer prompt:
help
December 2012
48
3
Preparing for Library Characterization
Overview on page 50
December 2012
49
Overview
Encounter library characterizer is a unified characterization engine that enables you to
generate timing and power models in Liberty library format. In addition, it enables you to
generate ECSM-based timing, noise, and power models in a compact library. Finally, it
provides you the ability to consider the effects of process variations on timing or leakage
during characterization.
You can use Encounter library characterizer to generate the views necessary to support your
design flow even if the required library views are not available. In addition, you can perform
re-characterization on existing libraries to suit different design requirements.
Encounter library characterizer provides characterization capabilities for the following:
ECSM Timing
ECSM Power
ECSM Noise
Statistical ECSM
Current waveform at power-grid pins for different combinations of slew and load
Sensitivities to device parameters at the arc level for all load, slew, delay, waveform,
and timing check tables
CCS Timing
December 2012
50
SPICE Inputs
A SPICE-format subcircuit (SUBCKT) file, which includes all the transistors and local RC
component circuits defined for each standard cell
An optional parameter library file, which defines the device parameters for different
process corners
Note: Encounter library characterizer accesses a central database, which stores the circuit
and RC information. All commands starting with db_ are used to access the database. They
either read the information in the database or read the information and write additional
information to it. Depending on the type of access, all commands have a database lock
function that verifies that more than one user can access the database and run multiple
parallel processes on it at the same time. Encounter library characterizer checks the lock
every time that you enter a command to access the database. It also creates a lock on each
December 2012
51
Enter variables whose values you will change from time to time in the command file. To
reset the variables in the command file, use the following command:
elc> set_var variable_name variable_value
Enter variables whose values will not change in the elccfg file. This is the default
configuration file that resides in the working directory. Encounter library characterizer
reads this file automatically if it finds it in the working directory.
Note: See the Configuration File (elccfg) section for more information on how to change
the variable settings in the configuration file.
Tip
See the Environment Variables chapter in the Encounter Library Characterizer
Text Command Reference for a list of variables that you can use in either of the
files.
December 2012
52
Imports a subcircuit file and runs the automatic circuit recognition function
Sets up the SPICE simulation conditions and runs the SPICE simulation on all vectors
Outputs the cell library characterization results to the test.alf and test.lib files
Process corner definitions, such as temperature, voltage, and corner parameter names
Simulation condition definitions for each device process corner for the SPICE simulation
Signal measurement levels, such as the voltage threshold level and the high/low voltage
level
Derating factors for the calculation results, such as the delay across the I/O pads,
interconnect delays, and setup and hold constraints
Tip
You can use the default setup file included in the Encounter library characterizer
package, then modify it. You can find it in the installation directory:
$install_dir/etc/elc/misc/setup.default
December 2012
53
Directive
Description
SUBCKT
MODEL
December 2012
54
DESIGNS
NON_RECHAR_DESIGNS
SETUP
AOCV_SETUP
PROCESS
LIB
CORNER
December 2012
55
XDESIGNS
EXPAND
STAT_CONFIG
SYNLIB
BOOL
Specifies the bool file name. A bool file is an ASCII file, which
describes macro cell logic with functions, including tristate,
bidirectional, and sequential logic.
This is an optional directive.
56
SUBCKT="subckt_file";
MODEL="model_file";
DESIGNS="INVD1 DFFD1";
SETUP="setup_file";
PROCESS=process_corner;
LIB=library_file;
CORNER=ss;
EXPAND=cell_name;
STAT_CONFIG=stat_config;
SYNLIB=incr.lib;
BOOL=bool_file
where,
The variation value is defined by n*sigma_value/n.
Random Parameter Variation
In the case of random variation, all transistors in the chip are considered to be noncorrelated.
This means that different variation values will be applied to different transistors. To specify
random parameter variation, use the values_random keyword. The syntax of specifying a
random parameter variation is as follows:
parameter=parameter_name values_random = value scope={local|global}
type={nmos|pmos}
December 2012
57
The global parameter variation is specified for the a1, a2, a3, and a4 parameters.
The values 0, 2.12798, and 1 for the a1 parameter signify the nominal_value,
n*sigma_value, and n values, respectively. This means that the variation value for
the a1 parameter is 2.12798. Similarly, the variation values for the a2, a3, and a4
parameters are 1.45779, 1.89527, and 1.56212, respectively. These values are used
for sensitivity calculation for global variation of the respective parameters.
The random parameter variation is specified for param1, param2, param3, and param4
parameters.
The values 0.5, 0.8, 1, and 1.2 are used for sensitivity calculation for random variation
of the param1, param2, param3, and param4 parameters, respectively.
The scope option specifies that the param2 and param3 parameters are subcircuitscoped.
The type option specifies that the param2 parameter affects only NMOS type
transistors, and the param3 parameter affects only PMOS type transistors. Using the
type option improves the run time.
Property File
A property file contains property information that is not defined in the ALF library, such as
area, footprints, scan attributes, and pad attributes. You can use a property file to add extra
December 2012
58
Library Compiler (.lib) file that can contain the following information:
Timing or ECSM-timing
ECSM-noise
Power or ECSM-power
ALF file, which contains the library characterization results in advanced library format.
You can later convert this file to Library Compiler (.lib), Verilog, or VHDL libraries, or to
datasheets in HTML format.
Library report file, which provides all the characterization results for each cell.
December 2012
59
December 2012
60
4
Performing Cell Library Characterization
Overview on page 62
Performing Library Characterization of Standard Cells Using Multiple PVT and Multiple
Corners on page 91
December 2012
61
Overview
This chapter describes the steps required to perform basic, incremental, and statistical cell
library characterization. In addition, it describes other library characterization tasks, such as
characterization of level shifter cells, hierarchical cells, and generation of non-linear input
slew.
December 2012
62
b. Load the design and SPICE model data, perform circuit recognition, create the
simulation vectors, and load the characterization conditions:
db_prepare -f
December 2012
63
December 2012
64
Pre-driver Method
If you have characterized the pre-driver cell, Encounter library characterizer can use a table
lookup approach to obtain the actual loading capacitance. The capacitance is changed on the
output pin of the input circuit cell, so the input circuit generates a more accurate input slew
rate for the characterized cell. The input circuit is connected to a voltage control voltage
source to enable the transfer of the non-linear waveform to the characterized cell input.
This method of connecting a pre-driver cell using voltage control voltage source (VCVS)
might result in a stiffened waveform at the input. You can overcome this by using a pre-driver
generated non-linear waveform. This flow is enabled by using the EC_PWL_FROM_DRIVER
and EC_RECHAR_DRIVER variables.
The following steps show how to use a pre-driver generated non-linear waveform:
1. Define the driver cell as the input circuit (INCIR) with the SIMULATION statement in the
setup file using the following syntax:
incir = string
For example, to define DRIVER as the input circuit, add the following information to the
test.setup setup file:
incir = DRIVER;
Note: This incir statement specifies the location where the INVX1 cell was copied, in
this case DRIVER.
It must have one input and one output. It can be either an inverter or buffer logic.
2. Create the following Encounter library characterizer configuration file (elccfg) to use
the copied cell to generate non-linear input slew rates:
EC_INPUT_NONLINEAR=1;
#To enable pre-driver generated non-linear waveform instead of VCVS
EC_PWL_FROM_DRIVER=1;
#To improve accuracy with EC_PWL_FROM_DRIVER, set the EC_RECHAR_DRIVER
environment variable to 1.
December 2012
65
When creating the elccfg configuration file, be sure to specify the following variables:
Set the EC_PWL_FROM_DRIVER variable to 1. This will extract the piece-wise linear
(PWL) information from the driver and apply it to the cell being characterized.
3. Type the following commands to perform characterization with the pre-driver set to
DRIVER:
db_open test_1
db_prepare -f
db_spice -simulator SPECTRE -d INVX1 -keep_log
For more information on generating non-linear input slew rates for cell characterization, refer
to Generating a Non-Linear Input Slew.
December 2012
66
b. Load the design and SPICE model data, perform circuit recognition, create the
simulation vectors, and load the characterization conditions:
db_prepare
4. Create the elccfg configuration file with the appropriate directives and environment
variables:
Note: The EC_CHAR environment variable uses the ECSM-POWER value, which indicates
that ECSM-based timing (default) and power characterization will be performed. In
addition, the EC_SIM_SUPPLY1_NAMES and EC_SIM_SUPPLY0_NAMES variables
specify the multiple power supply values (VDD and VDDIO) and ground supply value
December 2012
67
December 2012
68
4. Create the elccfg configuration file with the appropriate directives and environment
variables:
Note: The EC_CHAR environment variable uses the CCS-NOISE value, which indicates
that CCS-based noise characterization will be performed.
#Specify the environment variable settings.
EC_SIM_USE_LSF=1;
December 2012
69
Note: To create a noise library file (.lib) using the ALF file for extra customization:
alf2lib alf out.alf lib noise.lib ccs_noise -state
The newly created noise library file (noise.lib) will contain ccs_noise constructs, such
as:
propagated_noise_high
propagated_noise_low
dc_current
output_voltage_rise
output_voltage_fall
miller_cap_rise
miller_cap_fall
December 2012
70
4. Create the elccfg configuration file with the appropriate directives and environment
variables:
Note: The EC_CHAR environment variable uses the CCS-POWER value, which indicates
that CCS-based power characterization will be performed.
#Specify the environment variable settings.
EC_SIM_USE_LSF=1;
December 2012
71
Note: To create a power library file (.lib) using the ALF file for extra customization:
alf2lib alf out.alf lib power.lib ccs_power -state
The newly created power library file (power.lib) will contain ccs_power constructs,
such as:
dynamic_current
leakage_current
pg_current
switching_group
December 2012
72
4. Create the elccfg configuration file with the appropriate directives and environment
variables:
Note: The EC_SOI_CHAR environment variable should be set to 1, which indicates that
SOI characterization will be performed.
#Specify the environment variable settings.
EC_SIM_USE_LSF=1;
EC_SIM_LSF_CMD=" ";
EC_SIM_LSF_PARALLEL=10;
December 2012
73
Note: To create a library file (.lib) in the SOI format using the ALF file for extra
customization:
alf2lib alf out.alf lib soi.lib soi -state
This command generates three library files (.lib) that conform to the SOI
characterization methodology. These are:
December 2012
74
4. Create the elccfg configuration file with the appropriate directives and environment
variables:
Note: The EC_CHAR environment variable uses the AAE value, which indicates that
December 2012
75
Note: To create a library file (.lib) in the AAE format using the ALF file for extra
customization:
alf2lib alf out.alf lib aae.lib vivo -state
This command generates a library file (.lib) that conforms to the AAE characterization
methodology. The newly created power library file (aae.lib) will contain the following
constructs:
ecsm_stimulus - includes the time (time), voltage at input (vin) and voltage at
output (vout) parameters
ecsm_data - includes the time (time) and current at output (iout) parameters
December 2012
76
Fslew =
7e-12 2e-09 ;
1e-15 5.2891e-12;
};
set index (typical) {
Group(CQIVX20.A) = CQIVX20.A ;
Group(CQIVX20.Z) = CQIVX20.Z ;
}
set process (typical) {
simulation = std_cell;
index = std_cell;
signal = std_cell;
December 2012
77
Tip
For more information on how to create a simulation setup file for standard cells such
combinational cells, see the Standard Cell Library section in Appendix A,
Simulation Setup File Format.
3. Create the Encounter library characterizer command file named cmd_file with the
following commands:
a. Open a database named index_cell:
db_open index_cell
b. Load the design and SPICE model data, perform circuit recognition, create the
simulation vectors, and load the characterization conditions:
db_prepare -f
4. Create the elccfg configuration file with the appropriate directives and environment
variables:
Note: Specify the EC_GEN_AUTO_SETUP environment variable to automatically
generate slew and load indices for the cells or pins based on the slew and load ranges
specified in the original setup file. ELC creates the new setup file with the name specified
with the EC_GEN_AUTO_SETUP variable.
#Specify the environment variable settings.
EC_SIM_USE_LSF=1;
EC_SIM_LSF_CMD=" ";
EC_SIM_LSF_PARALLEL=10;
EC_SIM_TYPE="spectre";
EC_SIM_NAME="spectre";
EC_SPICE_SIMPLIFY=1;
EC_GEN_AUTO_SETUP=auto.st;
December 2012
78
December 2012
79
2. Specify the name of the new setup file using the SETUP directive. The default name is
elc.st.
SETUP="setup_file";
Note: If the setup file name already exists, the software does not overwrite the file.
Instead, it creates a new file with the same name and appends a number (.number) to
it. For example, if the file name setup_file already exists, it creates a new file
setup_file.1.
3. Specify the name of the process in the setup file using the PROCESS directive. The
default name is elc_process.
PROCESS=typical;
5. Create the simulation setup file using the input Liberty library specified using the SYNLIB
directive:
db_prepare -create_setup
Note: When you create a setup file from an existing .lib, the temperature and voltage values
in the .lib are used for setup file creation. You can use the EC_RECHAR_TEMPERATURE and
EC_RECHAR_VOLTAGE variables to overwrite the temperature and voltage values in the input
Liberty library specified using the SYNLIB directive.
December 2012
80
b. Load the design and SPICE model data, perform circuit recognition, create the
simulation vectors, and load the characterization conditions:
Note: While performing incremental characterization, you must specify the output
.lib file name with the -out option of db_prepare.
db_prepare -out incr_out.lib
4. Create the elccfg configuration file with the appropriate directives and environment
variables:
Note: The EC_INCREMENT_CHAR environment variable uses the ECSM-POWER value,
which indicates that the ECSM-based power information will be added to the output .lib.
In addition, the SYNLIB directive specifies the name of the .lib file on which incremental
characterization will be performed.
Tip
Alternatively, you can specify the ECSM-SI value for the EC_INCREMENT_CHAR
variable to perform incremental noise characterization.
#Specify the environment variable settings.
EC_SPICE_SUPPLY1_NAMES=VDD;
December 2012
81
December 2012
82
b. Load the design and SPICE model data, perform circuit recognition, create the
simulation vectors, and load the characterization conditions:
db_prepare -force
4. Create the elccfg configuration file with the appropriate directives and environment
variables:
Note: The EC_INCREMENT_CHAR environment variable uses the NATIVE-ECSMPOWER value, which indicates that the ECSM-based power information will be added to
the output .lib. In addition, the SYNLIB directive specifies the name of the .lib file on
which incremental characterization will be performed.
#Specify the environment variable settings.
EC_SPICE_SUPPLY1_NAMES=VDD;
EC_SPICE_SUPPLY0_NAMES=VSS;
EC_INCREMENT_CHAR=NATIVE-ECSM-POWER;
December 2012
83
December 2012
84
4. Create the Encounter library characterizer command file named cmd_file with the
following series of commands:
Note: The command file does not contain any input for statistical characterization.
a. Open a database named stat_char:
db_open stat_char
b. Load the design and SPICE model data, perform circuit recognition, create the
simulation vectors, and load the characterization conditions:
db_prepare
December 2012
85
December 2012
86
Important
Ensure that you specify elc_process with the -process option of the
db_output command. In the recharacterization flow, the software uses the default
process elc_process when the SETUP directive is not specified in the elccfg
configuration file.
5. Create the elccfg configuration file with the appropriate directives and environment
variables and ensure that the following settings are done for the recharacterization flow:
December 2012
87
Note: When you create a setup file from an existing .lib, the temperature and voltage
values in the .lib are used for setup file creation. You can use the
EC_RECHAR_TEMPERATURE and EC_RECHAR_VOLTAGE variables to overwrite the
temperature and voltage values in the input Liberty library specified using the SYNLIB
directive. However, these variables do not impact the temperature and voltage values of
a user-specified setup file.
PROCESS="rechar_process"
SUBCKT="SUBCKT";
MODEL="MODEL";
DESIGNS="CMPE22D1 DFD1";
LIB=spice_library_file;
December 2012
88
6. Ensure that the elccfg configuration file contains the following settings:
The SYNLIB directive specifies the name of the input library file.
The EC_SPECS_FROM_LIB variable is set to 1. When you set this variable to 1, the
software creates a directory called encounterlc.spec in the working directory.
The encounterlc.spec directory contains the specification files for the cells in
the input library.
In addition, you can use the following optional settings in the recharacterization flow:
Specify the PROCESS directive in the elccfg configuration file to define the process
name. By default, the software uses the elc_process process name.
December 2012
89
December 2012
90
The model parameter is optional. However, if you need to modify it, you need to specify
it in the setup file. When a process is used for simulation, the corresponding model file is
used by ELC for simulation.
3. Create the elccfg configuration file with the appropriate directives and environment
variables. Specify the PROCESS directive in the configuration file if ELC should run for all
the processes specified with the directive. Alternatively, if you need to run all the
processes specified in the setup file elc_multi.st, you should not specify the
PROCESS directive in the configuration file.
Ensure that the following settings are done for the library characterization flow:
#Specify the environment variable settings.
EC_SIM_USE_LSF=1;
EC_SIM_LSF_CMD="";
EC_SIM_LSF_PARALLEL=10;
EC_SIM_TYPE="spectre";
December 2012
91
4. Create the Encounter library characterizer command file named cmd_file with the
following series of commands:
a. Open a database named multi_corner_PVT:
db_open multi_corner_PVT
b. Load the design and SPICE model data, perform circuit recognition, create the
simulation vectors, and load the characterization conditions:
db_prepare -force
December 2012
92
December 2012
93
b. Load the design and SPICE model data, perform circuit recognition, create the
simulation vectors, and load the characterization conditions:
db_prepare
c. Copy the gate file for the design SAMPLEDESIGN to the specified location:
cp gate/SAMPLEDESIGN.gate test.ipdb/SAMPLEDESIGN.design/boundary/gate
Important
The gate file must be copied at the specified location before performing library
characterization.
d. Overwrite the existing simulation vectors in the database and generate new
simulation vectors:
db_gsim -force
December 2012
94
Important
When the db_gsim command is executed, the software displays a message
indicating that the gate file is being read.
e. Perform circuit simulation:
db_spice
4. Create the elccfg configuration file with the appropriate directives and environment
variables:
EC_SPICE_SIMPLIFY=1;
EC_SIM_USE_LSF=1;
EC_SIM_LSF_CMD="";
EC_SIM_LSF_PARALLEL=20;
EC_SIM_TYPE="spectre";
EC_SIM_NAME="spectre";
EC_CHAR=ECSM-POWER;
SUBCKT="SUBCKT";
MODEL="MODEL";
DESIGNS="SAMPLEGATE";
SETUP="SETUP";
PROCESS=typical;
95
In the above example, the EXPAND directive is used to specify a top-level cell called cellP5,
which will be expanded to make a flat netlist for cell recognition.
Important
You must use the EXPAND directive if the input subcircuit file has a hierarchical
structure.
96
3. Set the following environment variables to specify the rise and fall K-factor values:
set_var EC_INCIR_K value
or
set_var EC_INCIR_K_RISE value
set_var EC_INCIR_K_FALL value
or
set_var EC_INCIR_COUT_RISE value
set_var EC_INCIR_COUT_FALL value
December 2012
sampledata
97
3. Set the EC_CHAR variable with both ECSM-TIMING and CCS-TIMING values:
EC_CHAR CCS-TIMING ECSM-TIMING
Important
After you generate the CCS and ECSM timing data in the Liberty file, you can
choose to generate the ECSM and CCS timing data in separate Liberty files without
having to repeat steps 1, 2, and 4. This saves considerable run time.
After you complete the above steps, you can generate separate Liberty libraries containing
CCS and ECSM timing data, respectively.
Note: NLDM data in both CCS-based and ECSM-based libraries generated using the above
flow will remain identical.
December 2012
98
You can specify the AOCV group statement in the original setup file or in the AOCV
specific setup file.
3. Create the Encounter library characterizer command file named cmd_file with the
following commands:
a. Open a database named aocv_table:
db_open aocv_table
b. Load the design and SPICE model data, perform circuit recognition, create the
simulation vectors, and load the characterization conditions:
db_prepare
99
4. Create the elccfg configuration file with the appropriate directives and environment
variables:
#Specify the environment variable settings.
EC_SPICE_SIMPLIFY="1";
EC_SIM_TYPE="SPECTRE";
EC_SIM_NAME="spectre";
EC_SIM_LSF_TIMEOUT="-1";
EC_AOCV_FLOW="1";
EC_AOCV_SAMPLES="500";
EC_AOCV_STAGES="1 2 3 5 8 10 20 50"
#Specify the characterization inputs.
SUBCKT="subckt";
MODEL="model";
#Model should include the monte carlo simulatio variation parameter
DESIGNS="CMPE22D1 DFD1";
XDESIGNS=INVD1;
December 2012
100
5
Performing Cell Library Validation
December 2012
101
Overview
This chapter describes the steps required to perform validation of a cell library. In addition, it
describes the steps to validate the accuracy of the characterized data (timing data).
The following executables are used for semantic checking of cell librararies:
ecsmChecker
libdiff
The following two validation methods are used to correlate the accuracy of characterized data
against SPICE:
LibvsSpice
ETSvsSpice
December 2012
102
ecsmChecker
The ecsmChecker command validates the specified Liberty library and detects potential
errors. The validation results are printed in a log file. The log file contains warning messages
which indicate the issues detected in the input Liberty library based on the library validation
criteria specified.
The following command validates the sample.lib library and generates the log in the
results.txt file:
ecsmChecker sample.lib -o results.txt
Tip
For information on parameters of the ecsmChecker command, see the
Executables chapter of the Encounter Library Characterizer Text Command
Reference.
December 2012
103
libdiff
The libdiff command compares two library files and generates a report on the differences
between them. This is a standalone utility that can be invoked from the command line. The
libdiff utility is particularly useful when you want to compare a recharacterized library with
the input library that was used for performing recharacterization.
While comparing the libraries, the libdiff utility checks the differences in the following .lib
constructs:
Library-Level Properties
Thresholds
Operating Conditions
K-factors
Cell-Level Properties
Leakage Power
Pin-Level Properties
The libdiff utility can be used in the output file generation mode or in the view mode.
Tip
For information on parameters of the libdiff command, see the Executables
chapter of the Encounter Library Characterizer Text Command Reference.
Using the Output File Generation Mode
In this mode, the utility accepts two timing library files as input and generates a binary file
(.ldf extension) containing the line-by-line differences between the input libraries, a librarylevel summary report and an html report of the differences. You can view these reports in the
view mode. The timing libraries can be in one of the following formats:
Liberty format
December 2012
104
Important
The options specified in the syntax are applicable in the output file generation mode
only. In other words, the options used in the output file generation mode and the
options used in the view mode are mutually exclusive.
Note: To view libdiff reports for library files having different units, you need to set the
LIBDIFF_UNIT_SUPPORT variable, as shown:
setenv LIBDIFF_UNIT_SUPPORT 1
You must set this variable before running the libdiff utility in the output file generation
mode.
Using the View Modes to Report the Differences
The libdiff utility provides you the capability to view the differences between the libraries
in various other reporting modes. To view the reports, you need a .ldf file generated by the
libdiff utility. You can choose one of the following report types:
Important
The options specified in the syntax are applicable in the view mode only. In other
words, the options used in the view mode and the options used in the output file
generation mode are mutually exclusive.
December 2012
105
2. View the summary of the differences between the input timing libraries on the screen.
libdiff -view diff_file.ldf -format summ
***********************************************************
Libraries "test" and "test" were diffed, with "test" taken as the reference
1 cells changed
Timing deviation
Min:-0.01%
Max:-3.86%
Avg:-0.94%
Power deviation
Min:0.00%
Max:-7.22%
Avg:-0.34%
0 cells added
0 cells deleted
+--------------------+--------------------------------+-------------------------+
|
|
|
Cell
Timing Deviation
Power Deviation
+--------------------------------+----------------------------+
|
Min
Max
Avg
Min
Max
Avg
+--------------------+--------------------------------+-------------------------+
|HD_NAND2X1
-0.01
-3.86 |
-0.94
0.00
-7.22
-0.34
+--------------------+--------------------------------+-------------------------+
2. View the line-by-line differences between the input timing libraries on the screen:
December 2012
106
The following is an excerpt of the line-by-line differences reported by the libdiff utility:
|library (test) {
|library (test) {
| date : "today" ;
date : "today" ;
| revision : "4.4" ;
revision : "4.4" ;
| bus_naming_style : "%s[%d]" ;
bus_naming_style : "%s[%d]" ;
|capacitive_load_unit : (1.000000,pf) ; |
capacitive_load_unit : (1.000000,pf) ;
|current_unit : "1mA" ;
current_unit : "1mA" ;
...
...
| cell(HD_NAND2X1) {
C|
cell_leakage_power : 3.712790 ;
3.682860 ;
|
value :4.229660
|
|
value :4.263510
value :3.941390
C|
|
leakage_power () {
when : "((!(i0)) & (i1))";
leakage_power () {
leakage_power () {
value :4.578230
C|
cell_leakage_power :
leakage_power () {
C|
|
leakage_power () {
cell(HD_NAND2X1) {
leakage_power () {
when : "((i0) & (i1))";
value :2.684030
value :2.674240
...
...
Viewing the Comparison Results in HTML Format
To view the comparison results in HTML format:
1. Set the path to the browser that you wan to use:
setenv BROWSER path_to_browser_binary
2. Compare the sample1.lib and sample2.lib files and report the differences in the
diff_file.ldf file.
libdiff sample1.lib sample2.lib -diff diff_file.ldf
December 2012
107
The following is an example of the HTML format generated by the libdiff utility:
December 2012
108
LibVsSpice
The LibVsSpice script correlates the delay and output slew data from the characterized library
and from the SPICE simulator.
LibVsSpice has the following parameters:
Note: ELC should be run with the state-dependency (db_output -state) and ECSM
characterization (db_output -ecsm) options to get propogation delay and ECSM
differences in the report.
December 2012
109
EtsvsSpice
The EtsvsSpice script correlates the path delay from STA on a design that has been
constructed from characterized library cells and from the SPICE simulator. The script
compares ETS's result on a user specified netlist with SPICE's output and generates an
HTML report. It runs for all combinational cells as well as a mix of combinational cells with
sequential cells.
EtsvsSpice has the following parameters:
5. View the comparison report generated by the tcl script in the HTML format:
/tclsh EtsvsSpice.tcl -view html
December 2012
110
December 2012
111
December 2012
112
6
Troubleshooting Library Characterization
Issues
December 2012
113
Overview
This chapter describes troubleshooting techniques that you can use if you encounter
problems while performing library characterization tasks.
December 2012
114
Simulator accessibility
Network connectivity
Disk accessibility
Use the following steps to characterize the failed cell in such situations:
1. Identify the cells for which the simulation failed.
2. Specify the failed cell(s) with the -designs option of the db_spice command in the
command file, as shown:
db_open
db_spice -designs failedCell
db_output
Do not use the -f option with the db_prepare or db_spice command at the time of
characterization.
The db_prepare command is not required because the other cells are already
installed in the database.
December 2012
115
db_spice Stage
INITIAL
GENERATE
SIMULATE
December 2012
TRANSLATE
Troubleshooting Tip(s)
116
db_spice Stage
VERIFICATE
December 2012
117
Troubleshooting Tip(s)
Ensure that the supply settings
are correct
To troubleshoot this issue, you can use the db_wave command to generate the waveform for
the failed vector. The following figure shows the voltage and current waveform for the failed
vector D0000:
Notice that the rise time of the Z output has not reached the threshold values within the
specified transient time (40ns). You need to check the waveform for the output voltage
reaching 5% of the desired voltage. This issue can be addressed by increasing the transient
time to an appropriate value. Typically, the transient time value specified in the simulation
setup file should be sufficiently larger than the slews values.
The following figure shows the pass status of the D0000 vector after the transient time value
was changed to 60ns in the simulation setup file:
December 2012
118
December 2012
119
December 2012
120
A
Simulation Setup File Format
This appendix describes the format of the ASCII simulation setup file, which defines
simulation conditions such as voltage, temperature, process corner parameters, waveform
measurement levels, loading capacitance, and input slew.
The setup file is used as an input for library characterization.
For the complete syntax of the simulation setup file, see General Syntax on page 144.
This appendix presents the following topics:
December 2012
121
Case-Sensitivity
Statements and commands used in the setup file are case-insensitive.
Wildcards
You can use a question mark (?) or an asterisk (*) as wildcards in some simulation setup file
statements.
Here are some examples of wildcard usage:
mem* matches strings that start with mem, such as mem1 and memory.
bus? matches four-character strings that start with bus, such as busA and bus1.
bus?? matches five-character strings that start with bus, such as bus32 and bus64.
When defining wildcards, you can use combinations of ? and *, For example, *bus? matches
strings that contain bus but only have a single character following bus, such as bus1 and
databusA.
The following descriptions identify statements that support wildcards.
Define Section
The Define section defines parameters, groups, variables, and margins to be used in the
Control section. It includes the following statements, which are listed in alphabetical order.
GROUP Statement
GROUP ::=
GROUP group_name {
Pin = CellName.PinName [,CellName.PinName]*
December 2012
122
Descriptor
Keyword
Type
Default
Pin
Pin
string_list
None
Cell
Cell
string_list
None
GRP_CELL_CLKBUF_I
{ PIN
= CLKBUF*.A ; };
Group
GRP_CELL_CLKBUF_O
{ PIN
= CLKBUF*.Y ; };
Group
GRP_PIN_CLK
{ PIN
= *.CK ; };
Group
GRP_CELL_XL
{ CELL = *XL
; };
Group
GRP_CELL_X1
{ CELL = *X1
; };
Group
GRP_CELL_X2
{ CELL = *X2
; };
aocv_group group_name {
Cell = CellGroup ;
AOCV_Cell = CellName ;
STAGES = value1 value2;
SIMULATION_THRESHOLD = value;
DEF_SLEW = value;
DEF_LOAD = value;
} ;
December 2012
123
Descriptor
Keyword
Type
Default
Cell Group
CELL
string_list
None
Representative
AOCV Cell
AOCV_CELL
string_list
None
Number of depths of
the cell chain
STAGES
list_of_values
Monte Carlo
simulation threshold
SIMULATION_THRES value
HOLD
DEF_SLEW
value
DEF_LOAD
value
The CELL statement supports wildcards in the string_list. You can specify the AOCV
group statement in the original setup file or in the extra AOCV setup file.
Example
The following aocv_group statement defines the AOCV group of cells with the cell pattern
INV* and the representative AOCV cell INVD0BWP. All the parameters are applied to the
cells with the specified pattern. This representative aocv cell will be simulated and the derate
values will be used for the whole group.
aocv_group INV {
CELL = INV*;
AOCV_CELL = INVD0BWP;
STAGES = 1 5 8 10 20;
SIMULATION_THRESHOLD = 5;
DEF_SLEW = 0.5n;
December 2012
124
INDEX Statement
INDEX ::= Index index_name {
Slew =
values ;
Load = values ;
[Rslew = values ; ]
[Rload = values ; ]
[Fslew = values ; ]
[Fload = values ; ]
[Bslew = values ; ]
[Rslew_pwl = list_of_pwl_names ; ]
[Fslew_pwl = list_of_pwl_names ; ]
[BRslew_pwl = list_of_pwl_names ; ]
[BFslew_pwl = list_of_pwl_names ; ]
[internal = list_of_node_names ; ]
[glitch = glitch_levels_for_node_names ; ]
[AUTO_INDEX_CELL = cell_name; ]
[AUTO_INDEX_POINTS = value; ]
[AUTO_BSLEW_POINTS = value; ]
} ;
Specifies simulation input slew rates and output loading capacitance for cell library
characterization.
Slews defined by RSLEW or FSLEW overwrite slews defined by SLEW. Loads defined using
RLOAD or FLOAD overwrite loads defined by LOAD.
BSLEW defines the slew rates for the binary searches. If BSLEW is not defined, the binary
search algorithm uses the slew rates defined by SLEW.
Rslew_pwl and Fslew_pwl define the PWL names for rising input slew and falling input
slew, respectively.
BRslew_pwl and BFslew_pwl define the PWL names for rising and falling binary slew,
respectively.
December 2012
125
Descriptor
Keyword
Type
Default
Slew
list_of_values
None
Rslew
list_of_values
SLEW
Fslew
list_of_values
SLEW
Bslew
list_of_values
SLEW
Output load
capacitance
Load
list_of_values
None
Rload
list_of_values
LOAD
Fload
list_of_values
LOAD
Rslew_pwl
list_of_pwl_names
None
Fslew_pwl
list_of_pwl_names
None
BRslew_pwl
list_of_pwl_names
None
FRslew_pwl
list_of_pwl_names
None
December 2012
126
Descriptor
Keyword
Type
Default
list_of_node_names
None
glitch_levels
None
AUTO_INDEX_CELL
cell_name
None
Number of index
points generated
AUTO_INDEX_POINTS value
Examples
In the following INDEX statement, you specify the PWL names for rising input slew and
falling input slew using the Rslew_pwl and Fslew_pwl keywords, respectively:
Index MY_DEFAULT_INDEX {
slew
load
127
In the following INDEX statement, you specify the internal node names and
corresponding glitch levels using the internal and glitch keywords, respectively:
Group FF.INTERNAL {
cell = FF;
};
Index FF.INTERNAL {
internal = node1 node2;
glitch = 20 10;
};
Group(FF.INTERNAL) = FF.INTERNAL;
The internal statement specifies the internal node names, namely, node1 and node2.
The glitch statement specifies the corresponding glitch level (in percentage) of 20 and
10 for node1 and node2, respectively.
MARGIN Statement
MARGIN ::= Margin margin_name {
Cap = scale offset ;
Wcap = scale offset ;
Wresist = scale offset ;
Delay = scale offset ;
Ecap = scale offset ;
Power = scale offset [scale offset];
Current = scale offset [scale offset];
Slew = scale offset [scale offset];
Iopath = scale offset [ [scale offset] [scale offset] ] ;
Interconnect = scale offset [scale offset];
Setup = scale offset [scale offset];
Hold = scale offset [scale offset];
Release = scale offset [scale offset];
Removal = scale offset [scale offset];
Setup = scale offset [scale offset];
Recovery = scale offset [scale offset];
December 2012
128
Specifies the margin factors for cell library characterization. The margin factors include two
factors: a relative factor (scale) and an absolute factor (offset). They are applied to the
result data as follows:
results = number * scale + offset ;
Table A-4 MARGIN Statement Syntax
Descriptor
Type
Default
scale, offset
1.0, 0.0
scale, offset
1.0, 0.0
Wresist
scale, offset
1.0, 0.0
Delay
scale, offset
1.0, 0.0
Effective capacitance
factors
Ecap
scale, offset
1.0, 0.0
Power consumption
factors
Power
scale, offset
1.0, 0.0
Slew
scale, offset
1.0, 0.0
Iopath
scale, offset
1.0, 0.0
scale, offset
1.0, 0.0
Setup
scale, offset
1.0, 0.0
Hold
scale, offset
1.0, 0.0
Release constraint
factors
Release
scale, offset
1.0, 0.0
Removal constraint
factors
Removal
scale, offset
1.0, 0.0
Recovery constraint
factors
Recovery
scale, offset
1.0, 0.0
Width
scale, offset
1.0, 0.0
December 2012
Keyword
129
= 1.0 0.0 ;
hold
= 1.0 0.0 ;
release
= 1.0 0.0 ;
removal
= 1.0 0.0 ;
= 1.0 0.0 ;
delay
= 1.0 0.0 ;
power
= 1.0 0.0 ;
cap
= 1.0 0.0 ;
} ;
NOMINAL Statement
NOMINAL ::= Nominal nominal_name {
Cap = n_value n_value ;
Check = n_value n_value ;
Current = n_value n_value ;
Power = n_value n_value ;
Slew = n_value n_value ;
Delay = n_value n_value n_value;
};
Specifies the nominal factors with which to calculate the typical (average) values for cell
library characterization. You can define two scalesone for rising waveforms and one for
falling waveformsthat are used to calculate the average value from the minimum and
maximum values by using the nominal factors as follows:
average_value = (max min) * factor + min ;
For example, Figure A-1 on page 131 and Figure A-2 on page 131 show the hold time
characterization results for a gate. The first timing diagram shows the hold-time results for a
rising waveform, and the second shows the hold-time results for a falling waveform.
December 2012
130
If the setup file specified Nominal check 0.5 0.4, the average hold time for the rising
waveform would be reported as follows:
Average rise hold time = { (10 6) * 0.5 } + 6 = 8ns
Figure A-2 Hold-Time Characterization Results (Falling Input)
Note: Nominal delay defines three values: the first two are for rising and falling waveforms,
and the third is for delay-to-tristate measurements.
December 2012
131
Descriptor
Keyword
Type
Default
Gate capacitance
factor
Cap
value, value
0.5, 0.5
Constraint factor
Check
value, value
1.0, 1.0
Current source
factor
Current
value, value
0.5, 0.5
Power factor
Power
value, value
0.5, 0.5
Slew
value, value
0.5, 0.5
Delay factor
Delay
value, value
0.5, 0.5
Example
The following example shows a NOMINAL statement:
Nominal NOMINAL_SET_0 {
delay
power
= 0.5 0.5 ;
cap
= 0.5 0.5 ;
} ;
PROCESS Statement
PROCESS ::= Process process_name {
Voltage
= value ;
Temp
= value ;
Corner
= string ;
section
= string ;
lib
= string ;
model
= string ;
Vtn
= value ;
Vtp
= value ;
RCcorner
= string ;
Gtcorner
= strings ;
December 2012
132
The Gtcorner parameter defines the process corner data for cells as follows:
min_name:type_name:best_name
min_name:max_name
name1 name2 ...
name
Important
In Simplify mode, the section, lib, and model parameters specified in the
simulation setup file override the ones defined in the elccfg configuration file or the
command file. In non-Simplify mode, these parameters do not affect the
characterization.
Defines the simulation process conditions, that is, the device parameter conditions and the
simulation temperature and voltage operating conditions, for cell library characterization. You
must define the parameters of the PROCESS statement before defining the parameters of any
other statement.
Table A-6 PROCESS Statement Syntax
Descriptor
Keyword
Type
Default
Voltage
Voltage
value
None
Temperature
Temperature
value
None
strings
process_name
Library section
names in the library
model file for SPICE
simulation
section
string
None
lib
string
None
model
string
None
December 2012
133
Descriptor
Keyword
Type
Default
Voltage of NMOS
gate.
Vtn
value
None
Vtp
value
None
RCcorner
string
None
Translates to the
ecsm_vtn attribute,
which is used for
delay calculation.
Used as threhsold for
tristate cells so that
1->Z and 0->Z arcs
can be characterized.
Used for non-tristate
cells if the value is
lesser than the vh
value.
Voltage of PMOS
gate.
Translates to the
ecsm_vtp attribute,
which is used for
delay calculation.
Used as threhsold for
tristate cells so that
1->Z and 0->Z arcs
can be characterized.
Used for non-tristate
cells if the value is
lesser than the vl
value.
RC process corner
Example
The following PROCESS statement defines three process corners:
Process typical {
voltage
= 1.2
temp
= 25
December 2012
134
= 0.208 ;
Vtp
= 0.208 ;
} ;
Process best
voltage
= 1.32
temp
= 0
model
= model_tt.sp
Vtn
= 0.272 ;
Vtp
= 0.272 ;
} ;
Process worst
voltage
= 1.08
temp
= 125
Vtn
= 0.192 ;
Vtp
= 0.192 ;
} ;
PWL Statement
PWL ::= PWL pwl_grp_name {
pwl_name = pwl_waveform ;
[pwl_name = pwl_waveform ; ]*
};
Defines the piece-wise linear information that can be applied to the input waveform. You can
use any name for the PWLs that you define. PWL names are case insensitive. Before you use
the PWL statement in the setup file, ensure that the following conditions are met:
The time value must be the offset value from the transient start time, which is defined in
the SIMULATION statement. In addition, the first time value must be 0.
Example
The following PWL statement defines a PWL group called MY_DEFAULT_PWL, which contains
PWL names and their corresponding waveforms:
PWL MY_DEFAULT_PWL {
December 2012
135
SIGNAL Statement
SIGNAL ::= Signal signal_name {
Unit = {REL|ABS} ;
Vh
= rise_fall_levels
Vl
= rise_fall_levels
Vth
= rise_fall_levels
Vsh
= rise_fall_levels
Vsl
= rise_fall_levels
Tsmax
= value ;
incir
= string ;
slew_derate
= value ;
};
Sets the levels of the input or output signals for generating the simulation input waveforms,
initializing the output voltage level, and measuring the simulation waveforms for delay and
power in cell library characterization.
Table A-7 SIGNAL Statement Syntax
Descriptor
Keyword
Type
Default
Unit
REL|ABS
REL
REL is a percentage of
the voltage level unit;
ABS is the fixed value.
High-level voltage
Vh
value
1.0
Low-level voltage
Vl
value
0.0
Threshold-level
voltage
Vth
value
0.5
December 2012
136
Descriptor
Keyword
Type
Default
High-slew voltage
level
Vsh
value
0.8
Low-slew voltage
level
Vsl
value
0.2
Maximum output
slew, which is used
for max_cap
calculation
Tsmax
value
3.0 ns
incir
string
slew_derate
value
0.0
You can specify four values to individually define the input-rise, input-fall, output-rise, and
output-fall voltage thresholds, as in this example:
Vth = 0.1 0.2 0.15 0.25 ;
You can specify two values to define common input rise/fall and common output rise/fall
voltages, as in this example:
Vth = 0.1 0.2 ;
December 2012
137
= REL
Vh
Vl
Vth
Vsh
Vsl
tsmax
=
=
=
=
=
=
1.0
0.0
0.5
0.8
0.2
1.0n
1.0
0.0
0.5
0.8
0.2
} ;
SIMULATION Statement
SIMULATION ::= Simulation simulation_name {
Transient = start end step ;
Bisec = start end resolution ;
Resistance = value ;
Incir = string ;
};
Descriptor
Keyword
Type
Default
Transient simulation
Transient
value, value,
value
Binary search
Bisec
value, value,
value
December 2012
138
Descriptor
Keyword
Type
Default
Pulling resistance
Resistance
value, value,
value
1000000
string
Example
In the following example, the following conditions have been set:
Binary searches, which are used to accurately characterize setup and hold times, will
search for a maximum of 3 ns in steps of 10 ps.
Simulation STANDARD_CELL {
transient
= 1.0n
30n
10p ;
bisec
= 3.0n
3.0n
10p ;
resistance
= 10MEG ;
incir
= bf1xv ;
// binary search
} ;
Control Section
The Control section assigns the statements defined in the Define section to different
processes. The db_prepare or db_gsim command reads the Control section, installs the
processes appearing in the Control section, and installs all the parameters defined in the
statements in the database. The Control section includes the following commands. listed in
alphabetical order.
SET_CELL Command
SET_CELL ::= Set Cell ( process_name[,process_name]) {
Name = cell_name ;
Simulation = simulation_name ;
Index = index_name ;
December 2012
139
Assigns the statements for a specific cell. It overwrites the assignment in the SET_PROCESS
command and SET_GROUP command. It does not overwrite the assignment in the SET_PIN
command. The SET_CELL command must include a name definition that is used in cell library
characterization.
Table A-9 SET_CELL Command Syntax
Descriptor
Keyword
Type
Default
Cell name
Name
string
None
SIMULATION
statement
Simulation
string
None
INDEX statement
Index
string
None
SIGNAL statement
Signal
string
None
MARGIN statemen
Margin
string
None
NOMINAL statement
Nominal
string
None
Example
set cell (typical) {
name= PCI33DGZ
signal
= VDDPST
index
= tpz015g_5VTIO5x6d1 ;
} ;
SET_DEFINES Command
SET_DEFINES ::= Set define_card
(process_name[,process_name]) {
140
[signal|simulation|index|margin|nominal]
} ;
Assigns new statements for pins, cells, or groups. SET_DEFINES is used as a placeholder to
assign SIGNAL, SIMULATION, INDEX, MARGIN, and NOMINAL statements for pins, cells, or
groups. It specifies the format for the SET_SIGNAL, SET_SIMULATION, SET_INDEX,
SET_MARGIN, and SET_NOMINAL commands. SET_DEFINES overwrites the assignment
made by the SET_PROCESS command. If the SET_DEFINES command assigns statements
to the same group, cell, or pin with the SET_GROUP, SET_CELL, or SET_PIN command,
respectively, a conflict will result. Avoid assigning statements with both SET_DEFINES and
one of these commands. SET_DEFINES is used only for library characterization.
Table A-10 SET_DEFINES Command Syntax
Descriptor
Keyword
Type
Default
Group name
Group
string
None
Cell name
Cell
string
None
Pin name
Pin
string.string
None
Example
set index
(best,typical,worst) {
Group(XL)
= XL
Group(X2)
= X2
Group(X3)
= X3
Group(X4)
= X4
Group(X6)
= X6
Group(X8)
= X8
Group(X12) = X12 ;
Group(X16) = X16 ;
Group(X20) = X20 ;
Group(CK_SLW) = CK_SLW ;
} ;
set signal(typical) {
Group(VDD2.5V) = VDD2.5V ;
Group(VDD5.0V) = VDD5.0V ;
Group(VDDB) = VDDB ;
} ;
December 2012
141
SET_GROUP Command
SET_GROUP ::= Set Group( process_name[,process_name]) {
Name = group_name ;
Simulation = simulation_name ;
Index = index_name ;
Signal = signal_name ;
Margin = margin_name;
Nominal = nominal_name;
};
Assigns the statements for a specific group. It overwrites the assignments made by the
SET_PROCESS command. It does not overwrite the assignment made by the SET_CELL
command and the SET_PIN command. The SET_GROUP command must include a group
name definition that is used in cell library characterization.
Table A-11 SET_GROUP Command Syntax
Descriptor
Keyword
Type
Default
Group name
Name
string
None
SIMULATION
statement
Simulation
string
None
INDEX statement
Index
string
None
SIGNAL statement
Signal
string
None
MARGIN statemen
Margin
string
None
NOMINAL statement
Nominal
string
None
Example
set group (typical) {
name= 1XPAD_PINS
index= IO5x6d1
signal= VDD2.5V
;
;
;
} ;
December 2012
142
SET_PIN Command
SET_PIN::= Set Pin ( process_name[,process_name]) {
Name = cell_name.pin_name
Simulation = simulation_name ;
Index = index_name ;
Signal = signal_name ;
Margin = margin_name;
Nominal = nominal_name;
} ;
Assigns the statements for a single pin. It overwrites the assignments in the SET_PROCESS
command, SET_CELL command, and SET_GROUP command. The SET_PIN command must
include a pin name definition that is used in cell library characterization.
Table A-12 SET_PIN Command Syntax
Descriptor
Keyword
Type
Default
Pin name
Name
string.string
None
SIMULATION
statement
Simulation
string
None
INDEX statement
Index
string
None
SIGNAL statement
Signal
string
None
MARGIN statement
Margin
string
None
NOMINAL statement
Nominal
string
None
Example
set pin (typical) {
name= PCI33DGZ.PAD ;
signal
= VDD2.5V
index
= 5VTIO5x6d1
} ;
December 2012
143
SET_PROCESS Command
SET_PROCESS ::=
Simulation = simulation_name ;
Index = index_name ;
Signal = signal_name ;
Margin = margin_name;
Nominal = nominal_name;
} ;
Descriptor
Keyword
Type
Default
Simulation definition
Simulation
string
DEFAULT_
SIMULATION
Simulation index
Index
string
DEFAULT_INDEX
Signal levels
Signal
string
DEFAULT_SIGNAL
Margin factors
Margin
string
DEFAULT_MARGIN
Nominal factors
Nominal
string
DEFAULT_NOMINAL
Example
set process (best,typical,worst) {
simulation = std_cell
index
= X1
signal
= std_cell
margin
= m0
nominal
= n0
} ;
General Syntax
The complete syntax of the simulation setup file is as follows:
SETUP := DEFINE_SECTION* | SET_SECTION*
December 2012
;
144
DEFINE_SECTION :=
= value ;
Temp
= value ;
Corner
= string
LIB
= string
MODEL
= string
Vtn
= value ;
Vtp
= value ;
RC_Corner
= string
GT_Corner
= string
;
;
} ;
SIGNAL ::= Signal signal_name {
Unit = {REL|ABS} ;
Vh
= rise_fall_levels
Vl
= rise_fall_levels
Vth
= rise_fall_levels
Vsh
= rise_fall_levels
Vsl
= rise_fall_levels
Tsmax = value ;
};
SIMULATION ::= Simulation simulation_name {
Transient = start end step ;
Bisec = start end resolution ;
Resistance = value ;
};
INDEX ::= Index index_name {
Slew =
values ;
Load = values ;
[Rslew = values ; ]
[Rload = values ; ]
[Fslew = values ; ]
[Fload = values ; ]
[Bslew = values ; ]
} ;
December 2012
145
GROUP ::=
GROUP group_name {
Simulation = simulation_name ;
Index = index_name ;
December 2012
146
Simulation = simulation_name ;
Index = index_name ;
Signal = signal_name ;
Margin = margin_name;
Nominal = nominal_name;
} ;
SET_CELL ::= Set Cell ( process_name[,process_name]) {
Name = cell_name ;
Simulation = simulation_name ;
Index = index_name ;
Signal = signal_name ;
Margin = margin_name;
Nominal = nominal_name;
};
SET_GROUP ::= Set Group( process_name[,process_name]) {
Name = group_name ;
Simulation = simulation_name ;
Index = index_name ;
Signal = signal_name ;
Margin = margin_name;
Nominal = nominal_name;
};
SET_DEFINES ::= Set define_card
(process_name[,process_name]) {
December 2012
147
Examples
Following are three examples of simulation setup files. The first one is used to generate a
standard cell library, the second is used to create an I/O cell library, and the last one is used
for level-shifter cells.
December 2012
: 7X7
148
Section
Process typical {
voltage
temp
= 1.2
= 25
Vtn
= 0.208 ;
Vtp
= 0.208 ;
; // as voltage
; /* as temperature */
} ;
Process best
voltage
temp
= 1.32
= 0
; // as voltage
; /* as temperature */
Vtn
= 0.272
Vtp
= 0.272
} ;
Process worst
voltage
temp
= 1.08
= 125
Vtn = 0.192
Vtp = 0.192
; // as voltage
; /* as temperature */
} ;
Signal
std_cell {
unit
= REL
// relative value
Vh
= 1.0
1.0 ;
// 100% rise/fall
Vl
= 0.0
0.0 ;
Vth
= 0.5
0.5 ;
Vsh
= 0.8
0.8 ;
Vsl
= 0.2
0.2 ;
tsmax = 1.0n
// 50% rise/fall
} ;
Simulation std_cell {
transient
= 1.0n 60n
10p
bisec
resistance
= 10MEG;
// binary search
} ;
Index
BSlew
X1 {
= 0.0385N 0.5360N 2.0000N ;
slew
load
December 2012
149
XL {
load
} ;
Index
X2 {
load
} ;
Index
X3 {
load
} ;
Index
X4 {
load
} ;
Index
X6 {
load
} ;
Index
X8 {
load
= 0.00660P
0.02640P
0.06732P
0.14784P
0.30888P
0.62964P
1.51800P ;
0.03960P
0.10098P
0.22176P
0.46332P
0.94446P
2.27700P ;
0.05280P
0.13464P
0.29568P
0.61776P
1.25928P
3.03600P ;
0.06600P
0.16830P
0.36960P
0.77220P
1.57410P
3.79500P ;
} ;
Index
X12 {
load
= 0.00990P
} ;
Index
X16 {
load
= 0.01320P
} ;
Index
X20 {
load
= 0.01650P
} ;
Index
CK_SLW {
bslew
} ;
Group
PIN
CK_SLW {
= *.CK ;
} ;
December 2012
150
XL {
CELL = *XL ;
} ;
Group
X1 {
CELL = *X1 ;
} ;
Group
X2 {
CELL = *X2 ;
} ;
Group
X3 {
CELL = *X3 ;
} ;
Group
X4 {
CELL = *X4 ;
} ;
Group
X6 {
CELL = *X6 ;
} ;
Group
X8 {
CELL = *X8 ;
} ;
Group
X12 {
CELL = *X12 ;
} ;
Group
X16 {
CELL = *X16 ;
}
} ;
Group
X20 {
CELL = *X20 ;
} ;
Margin
m0 {
setup
= 1.0 0.0 ;
hold
= 1.0 0.0 ;
= 1.0 0.0 ;
delay
= 1.0 0.0 ;
power
= 1.0 0.0 ;
December 2012
151
= 1.0 0.0 ;
} ;
Nominal
n0 {
delay
power
= 0.5 0.5 ;
cap
= 0.5 0.5 ;
} ;
// Control Section
//
set process (best,typical,worst) {
simulation = std_cell
index
= X1
signal
= std_cell
margin
= m0
nominal
= n0
;
;
} ;
set index
//
(best,typical,worst) {
Group(XL)
= XL
Group(X1)
= X1
Group(X2)
= X2
Group(X3)
= X3
Group(X4)
= X4
Group(X6)
= X6
Group(X8)
= X8
Group(X12) = X12 ;
Group(X16) = X16 ;
Group(X20) = X20 ;
Group(CK_SLW) = CK_SLW ;
} ;
December 2012
152
Section
= 1.08 ; // as voltage
temp
= 125 ; // as temperature
Vtn
= 0.444932 ;
Vtp
= 0.48939 ;
} ;
// Defines the input and output voltage levels for a signal group called
// std_cell, which denotes the nominal voltage level specification.
Signal std_cell {
unit
= ABS
; //absolute value
Vh
= 1.08
Vl
= 0.0
Vth
= 0.504 ;
Vsh
= 0.756 ;
Vsl
= 0.324 ;
tsmax
} ;
// Defines the input and output voltage levels for a signal group called
// default_cell, which denotes voltage level specification other than
// the nominal voltage. This voltage is applied to the specified input,
// output, inout, or supply pins.
Signal default_cell {
unit
= ABS ;
Vh
= 0.864 ;
Vl
= 0.0
Vth
= 0.432 ;
Vsh
= 0.6048 ; //70%
Vsl
= 0.2592 ; //30%
tsmax
= 1.0936e-09 ;
//100%
;
//50%
} ;
// Defines the simulation control variables for cell library characterization.
December 2012
153
bisec
resistance
= 10MEG ;
incir
= "" ;
} ;
// Slews are quoted in a 0-100% scale
Group LVLHLD1.I {
PIN = LVLHLD1.I ;
};
Index LVLHLD1.I {
// halved for incorporting slew derate
Rslew =
Fslew =
};
Group LVLHLD1.Z {
PIN = LVLHLD1.Z ;
};
Index LVLHLD1.Z {
Rload =
Fload =
};
// Slews are quoted in a 0-100% scale
Group LVLLHD1.I {
PIN = LVLLHD1.I ;
};
Index LVLLHD1.I {
Rslew =
Fslew =
};
Group LVLLHD1.Z {
December 2012
154
PIN = LVLLHD1.Z ;
};
Index LVLLHD1.Z {
Rload =
Fload =
};
Group G_EXT {
PIN = LVLLHD1.VDDL LVLLHD1.Z ;
};
set index (elc_process) {
Group(LVLHLD1.I) = LVLHLD1.I ;
Group(LVLHLD1.Z) = LVLHLD1.Z ;
Group(LVLLHD1.I) = LVLLHD1.I ;
// Group(LVLLHD1.Z) = LVLLHD1.Z ;
Group (G_EXT) = LVLLHD1.Z ;
};
set process (elc_process) {
simulation = std_cell;
index
= std_cell;
signal
= std_cell};
: 6X5
December 2012
155
= 1.0
; // as voltage
temp
= 25
; /* as temperature */
Vtn
= 0.1
Vtp
= 0.1
} ;
Signal
INTERNAL {
unit
= REL
Vh
= 1.0
1.0 ;
Vl
= 0.0
0.0 ;
Vth
= 0.5
0.5 ;
Vsh
= 0.9
0.9 ;
Vsl
= 0.1
0.1 ;
tsmax = 2.0n
} ;
Signal VDD2.5V {
unit =
ABS ;
Vh
2.5 2.5 ;
Vl
0.0 0.0 ;
Vth
1.25 1.25 ;
Vsh
2.25 2.25 ;
Vsl
tsmax=
0.25 0.25 ;
2.0n ;
} ;
Signal VDD5.0V {
unit =
ABS ;
Vh
5.0 5.0 ;
Vl
0.0 0.0 ;
Vth
2.50 2.50 ;
Vsh
4.50 4.50 ;
Vsl
0.50 0.50 ;
tsmax=
2.0n ;
} ;
Signal VDDB {
unit =
ABS ;
Vh
1.5 1.5 ;
Vl
0.0 0.0 ;
Vth
0.75 0.75 ;
December 2012
156
1.35 1.35 ;
Vsl
0.15 0.15 ;
tsmax=
2.0n ;
} ;
Simulation core {
transient
= 0.1n 80n
bisec
10p
incir
= "" ;
resistance
= 10K;
} ;
Index
load {
BSlew
= 0.1n
0.5n
1.2n 1.5n ;
Slew
= 0.1n
0.2n
Load
= 0.1p
0.5p
} ;
Index Core5x6d0 {
Load = 0.012p 0.024p 0.048p 0.072p 0.120p 0.240p ;
} ;
Index 5VTIO5x6d0 {
Load = 0.012p 0.024p 0.048p 0.072p 0.120p 0.240p ;
} ;
Index 5VTIO5x6d1 {
Load = 0.024p 0.048p 0.096p 0.144p 0.192p 0.240p ;
} ;
Index 5VTIO5x6d2 {
Load = 0.024p 0.096p 0.192p 0.288p 0.480p 0.960p ;
} ;
Index IO5x6d0 {
Slew = 0.3n 0.6n 1.2n 1.5n 3.0n ;
Load = 5.000p 10.000p 15.000p 20.000p 25.000p 30.000p ;
} ;
Index IO5x6d1 {
Slew = 0.3n 0.6n 1.2n 1.5n 3.0n ;
Load = 10.000p 20.000p 30.000p 40.000p 70.000p 100.000p ;
} ;
Index IO5x6d2 {
Slew = 0.3n 0.6n 1.2n 1.5n 3.0n ;
Load = 20.000p 40.000p 60.000p 80.000p 100.000p 150.000p ;
December 2012
157
} ;
Group 1XPAD_PINS {
pin = *02*.PAD *04*.PAD
} ;
Group 2XPAD_PINS {
pin = *08*.PAD *12*.PAD
December 2012
;
158
} ;
Group X_PINS {
pin = *.XC *.XOUT
} ;
Group PCIPAD_PINS {
pin = PCI*.PAD ;
} ;
// set functions
set process (typical) {
simulation = core
index
= load
signal
= core
margin
= m0
nominal
= n0
} ;
set signal(typical) {
Group(VDD2.5V) = VDD2.5V ;
Group(VDD5.0V) = VDD5.0V ;
Group(VDDB)
= VDDB
} ;
set group (typical) {
name= 1XPAD_PINS
index= IO5x6d1
signal= VDD2.5V
} ;
set group (typical) {
name= 2XPAD_PINS
index= IO5x6d2
signal= VDD2.5V
} ;
set group (typical) {
name= 3XPAD_PINS
index= IO5x6d3
December 2012
;
;
159
} ;
set group (typical) {
name= PCIPAD_PINS ;
index= IO5x6d3
signal= VDD2.5V
} ;
set group (typical) {
name= X_PINS
index= Core5x6d0
} ;
set group (typical) {
name= C_PINS
index= 5VTIO5x6d1
} ;
/* you can use following set to set specific cell/pin condition */
//set pin (typical) {
//name= PCI33DGZ.PAD ;
//signal= VDD2.5V
//index= 5VTIO5x6d1
//} ;
//set cell (typical) {
//name= PCI33DGZ
//signal= VDDPST
;
;
//index= tpz015g_5VTIO5x6d1 ;
//} ;
December 2012
160
B
Property File Format
This appendix describes the Property file format that Encounter library characterizer uses
in its processing.
December 2012
161
December 2012
162
Where:
library library_name
Specifies the library name. You can use the * and ? wildcards
when specifying a library name.
tree_type tree_type_name
Specifies the tree_type_name in the
operating_conditions group of the output .lib.
default_power_rail power_supply_name
Specifies the default power_supply_name in the
power_supply group of the output .lib.
power_rail power_supply_name voltage_value
Specifies the power_supply_name and the
voltage_value in the power_supply group of the output
.lib.
cell cell_name
Specifies the cell name. You can use the * and ? wildcards
when specifying a cell name.
pg_pin pg_pin_name
Specifies the power/ground group name.
pin_name pg_pin_name
Specifies the power/ground pin name.
voltage_name voltage_pin_name
Specifies the voltage name.
pg_type power_type Specifies the power type values, such as primary_power,
ground_power, and so on.
The value specified with this statement is dumped with the
pg_type attribute in the output .lib file.
pg_function power_supply_name
Specifies the power supply name, which should be one of the
power/ground pins defined using the pg_pin statement.
December 2012
163
pin pin_name
Specifies the pin name. You can use the * and ? wildcards
when specifying a pin name.
Outputs test_scan_in.
out
Outputs test_scan_out.
enable
Outputs test_scan_enable.
in_inverted
Outputs test_scan_in_inverted.
out_inverted
Outputs test_scan_out_inverted.
enable_inverted
Outputs test_scan_enable_inverted.
scan_clock
Outputs test_scan_clock.
scan_clock_a
Outputs test_scan_clock_a.
scan_clock_b
Outputs test_scan_clock_b.
clock
Outputs test_clock.
December 2012
164
December 2012
165
Example
If you specify the following property file with the alf2lib command:
cell SDF* {
pin SE {
direction input;
scan enable;
};
pin SI {
direction input;
scan in;
};
pin Q* {
direction output;
scan out;
};
footprint asdf ;
property "foo: var;" ;
};
December 2012
166
167
SE1 SE2 SI
: - -
- : N N
) {\
- , \\\
H L/H L
: - -
L -
L/H
: - -
H L
: - -
- : L H
H H
: - -
- : H L - , \\\
H -
: - -
- : X X - , \\\
- -
: - -
- : L H - , \\\
- -
: - -
- : - -
- -
- , \\\
N , \\\
}";
};
Note: All special characters should have an escape sequence (\) as used in a string.
December 2012
168
C
Gate File Format
This appendix describes the Gate file format that Encounter library characterizer uses in its
processing.
December 2012
169
Gate File
A gate file contains primitive gates that describe a circuit. The db_gsim command uses the
gate file to generate a specification file that is then used to create the simulation vectors for
the design. The gate file can also be used to verify extracted circuits.
You can create a gate file using the db_gate command. (For syntax information, see
db_gate.) You can also create a gate file using the -g option with the db_gsim command,
but only if gate recognition fails. You cannot use the db_gsim command to create a gate file
if gate recognition has completed.
The gate file is created using following file format:
DESIGN (design_name);
// comment;
{port_type port_name (net_name, ...);}
[port_property;]
// comment;
{gate_type (net_name, ...);}
END_OF_DESIGN;
Where:
DESIGN design_name Specifies the name of the design.
port_type
Specifies the type of port. The port can be one of the following
types: INPUT, OUTPUT, INOUT, SUPPLY0, SUPPLY1, or
FEEDTHRU.
port_name
net_name
Specifies the name of the net associated with the port or gate.
port_property
Specifies a property for the specified ports. Ports can have the
following properties:
COMPLEMENTARY The input ports are complementary.
gate_type
December 2012
PULL_UP
PULL_DOWN
Specifies the type of gate. The gate can be one of the following
types: BUF, NOT, OR, NOR, AND, NAND, XOR, NXOR, MAJ, IMAJ,
MUX, IMUX, BUFIF1 (NMOS), BUFIF0 (PMOS), NOTIF1,
NOTIF0, CMOS, PUSHPULL, or AMP.
170
Ports
Port definitions in the gate file include the port type, port name and associated net names for
each port.
Figure C-1 on page 171 illustrates the different port types.
Figure C-1 Port Types
A
a
INPUT A (a);
OUTPUT A (a);
VSS
Tristate
p
VDD
A
A
B
INOUT A (a, n, p);
p
a
n
INPUT A (a);
FEEDTHRU B (a);
Gates
Gate definitions in the gate file include the gate type and associated net names for each gate.
There are two categories of gates that you can define: primitive gates; and tristate gates.
December 2012
171
Number of
Inputs
Primitive Gates
BUF
Y=A
NOT
Y=~A
OR
Y=A | B | C
NOR
Y=~(A | B | C...)
AND
Y=A&B&C
NAND
Y=~(A&B&C...)
XOR
Y=A^B^C
XNOR
Y=~(A^B^C...)
MAJ
IMAJ
MUX
Y=A?B:C
IMUX
Y=~(A?B:C)
AMP
3
2
Figure C-2 on page 173 illustrates the MAJ and IMAJ gate descriptions:
December 2012
172
IMAJ(Y, A, B, C);
A
A
B
MAJ
IMAJ
A
1
1
X
0
0
X
B
1
X
1
0
X
0
C
X
1
1
X
0
0
Y
1
1
1
0
0
0
A
1
1
X
0
0
X
B
1
X
1
0
X
0
C
X
1
1
X
0
0
Y
0
0
0
1
1
1
Figure C-3 on page 174 illustrates the MUX and IMUX gate descriptions:
December 2012
173
IMUX(Y, A, B, C);
MUX(Y, A, B, C);
A
B
MUX
IMUX
A
1
1
0
0
X
X
B
1
0
X
X
1
0
C
X
X
1
0
1
0
Y
1
0
1
0
1
0
A
1
1
0
0
X
X
B
1
0
X
X
1
0
C
X
X
1
0
1
0
Y
0
1
0
1
0
1
Tristate Gates
The following table describes tristate gate types:
Number of
Inputs
Tristate Gates
BUFIF1 (NMOS)
BUFIF0 (PMOS)
NOTIF1
NOTIF0
CMOS
PUSHPULL
December 2012
174
C
A
Y
A
B
B
A
Y
Bidirectional Switches
The following table describes MOSFET, or bidirectional switches. Bidirectional switches are
written out in the gate file if gate recognition fails. A specification file cannot be generated if
these switches exist; therefore, you must replace them with primitive or tristate gates. For
December 2012
175
Bidirectional Switches
Number of Nodes
NMOSX
NMOSX (D, S, G)
PMOSX
PMOSX (D, S, G)
CMOSX
PMOSX
D
G
D
G
December 2012
CMOSX
D
NG
176
PG
S
Examples
The following example describes and illustrates a NAND gate:
DESIGN (NAND2);
//PORT SECTION;
NAND2
VDD
INPUT A (A);
INPUT B (B);
OUTPUT Y (Y);
SUPPLY1 VDD (VDD);
SUPPLY0 VSS (VSS);
A
B
A
Y
//GATE SECTION
NAND (Y, A, B);
VSS
END_OF_DESIGN;
INPUT A (A);
INPUT EN(EN);
//GATE SECTION
EN
END_OF_DESIGN;
Y
A
N
(To measure tpLZ)
December 2012
177
DESIGN (BIO);
//PORT SECTION;
INPUT A (A);
INPUT EN(EN);
OUTPUT Y (Y);
EN
PAD
EN
END_OF_DESIGN;
PAD
A
//PORT SECTION;
INPUT P (P);
VDD
INPUT N(N);
OUTPUT Y (Y);
SUPPLY1 VDD (VDD);
SUPPLY0 VSS (VSS);
COMPLEMENTARY P, N;
//GATE SECTION
P
N
December 2012
P
Y
N
VSS
178
DESIGN (BIO);
Bidirectional IO
//PORT SECTION;
OUTPUT DIN (DIN);
INOUT EXT (EXT, NET634\#10,
NET635\#13);
D$1
POR_L
EN_OUT
DOUT
EXT
EN_IN
//GATE SECTION
NAND ($1, POR_L, EN_OUT);
NOT ($2, $1);
BUFIF0 (EXT, DOUT, $1);
NET635\#13
D$1
NET634\#10
or
db_gsim -g -d cell_name
Note: If you use the db_gsim command, the gate file is written out to the *.ipdb/
December 2012
179
db_gate -r gate.org
The generated gate file is as follows:
DESIGN ( TFF_1 );
//
=================
//
PORT DEFINITION
//
=================
INPUT NCLR ( NCLR );
INPUT T ( T );
OUTPUT NQ ( NQ );
OUTPUT Q ( Q );
SUPPLY0 VSS ( VSS );
SUPPLY1 VDD ( VDD );
//
December 2012
===========
180
INSTANCES
//
===========
NOT ( NET0197, NET86 );
NOT ( NET130, NET78 );
NOT ( NET134, NET74 );
NOT ( NET154, T );
NOT ( NQ, Q );
NOT ( Q, NET86 );
NAND ( NET82, NCLR, NET134 );
NAND ( NET86, NCLR, NET130 );
MUX ( NET74, NET154, NET0197, NET82 );
MUX ( NET78, NET154, NET86, NET82 );
END_OF_DESIGN;
3. Modify the gate file generated using the TFF-1 cell so that the cell name and pin names
are exactly the same as in the TFF_2 cell.
Consider that the TFF_2 cell has a port list as follows:
subckt TFF_2 ( CLK NCLR OUT_L OUT VDD VSS )
=================
//
PORT DEFINITION
//
=================
INPUT NCLR ( NCLR );
INPUT CLK ( CLK );
OUTPUT OUT_L ( OUT_L );
OUTPUT OUT ( OUT );
SUPPLY0 VSS ( VSS );
SUPPLY1 VDD ( VDD );
//
===========
//
INSTANCES
//
===========
NOT ( NET0197, NET86 );
NOT ( NET130, NET78 );
NOT ( NET134, NET74 );
NOT ( NET154,CLK );
NOT ( OUT_L, OUT );
NOT ( OUT, NET86 );
NAND ( NET82, NCLR, NET134 );
December 2012
181
4. If you are using a sequential design, note the register node net names. The register node
net names are reported by ELC while generating the gate file. If register pair nodes exist,
they are complementary to each other.
Note: If the design is not sequential, proceed to the seventh step.
The following example shows two pairs of register nodes that were reported during gate
file generation of TFF_1. These nodes correspond to internal register pair nodes for the
master and slave flop in TFF_1.
==============================
DESIGN : TFF_1
==============================
- register(NET134,NET82) is recognized.
- register(NET130,NET86) is recognized.
5. Identify the register nodes of the TFF_2 cell in the schematic of the netlist.
The following example shows the probable register nodes for the TFF_2 cell:
==============================
DESIGN : TFF_2
==============================
- loop node ( Q_L ) is found
- loop node ( R_L ) is found
- loop node ( Q ) is found
- loop node ( S_L ) is found
- register(R_L) is recognized.
- register(S_L) is recognized.
=> no simulation
Note: ELC also reports loop nodes, which are also known as probable register nodes.
6. Map these register nodes with the register nodes of TFF_1 and replace them in the gate
file, as shown:
DESIGN ( TFF_2 );
//
December 2012
=================
182
PORT DEFINITION
//
=================
INPUT NCLR ( NCLR );
INPUT CLK ( CLK );
OUTPUT OUT_L ( OUT_L );
OUTPUT OUT ( OUT );
SUPPLY0 VSS ( VSS );
SUPPLY1 VDD ( VDD );
//
===========
//
INSTANCES
//
===========
NOT ( NET0197, Q_L );
NOT ( Q, NET78 );
NOT ( R_L, NET74 );
NOT ( NET154,CLK );
NOT ( OUT_L, OUT );
NOT ( OUT, Q_L );
NAND ( S_L, NCLR, R_L );
NAND ( Q_L, NCLR, Q );
MUX ( NET74, NET154, NET0197, S_L );
MUX ( NET78, NET154, Q_L, S_L );
END_OF_DESIGN;
In this example, the register pair nodes, (R_L, S_L) and (Q, Q_L) correspond to
(NET134, NET82) and (NET130, NET86) in the TFF_2 cell.
Note: Set the EC_GATE_CHECK_UNKNOWN_NODE variable to 1 to skip checking the
existence of nodes in the subcircuit file while reading a gate file. The register node names
have to be the SPICE node names in the subcircuit file.
set_var EC_GATE_CHECK_UNKNOWN_NODE 0
In case of a netlist with parasitics, specify the node names using the
EC_ORIGINAL_NODE_NAME variable.
7. Replace all other TFF_1 cell specific net names used in the gate file with the ELC
generated net names (names starting with $). For example, replace NET0197, NET78,
NET74 and NET154 with $1, $2, $3 and $4, respectively.
Note: Ensure that there are no duplicate net name entries in the gate file.
DESIGN ( TFF_2);
//
=================
//
PORT DEFINITION
//
=================
December 2012
183
===========
//
INSTANCES
//
===========
NOT ( $1, Q_L );
NOT ( Q, $2 );
NOT ( R_L, $3 );
NOT ( $4, CLK );
NOT ( OUT_L, OUT );
NOT ( OUT, Q_L );
NAND ( S_L, NCLR, R_L );
NAND ( Q_L, NCLR, Q );
MUX ( $3, $4, $1, S_L );
MUX ( $2, $4, Q_L, S_L );
END_OF_DESIGN;
8. Use the gate file (gate.mod) created for TFF_2 to aid automatic simulation vector
generation as follows:
db_open test
db_prepare -f
cp gate.mod test.ipdb/TFF_2.design/boundary/gate //copy the created gate file
(gate.mod) to <ipdb_name>.ipdb/<cell_name>.design/boundary/gate
db_gsim f
December 2012
184
D
Bool File Format
This appendix describes the format of a BOOL file. The BOOL file is a Synspec original file
that describes macro cell functions including the tri-state, logical, and sequential functions.
This appendix presents the following topics:
December 2012
185
Syntax
The syntax of BOOL is as follows:
BOOL ::=
<macro_name>, <function_type>
{ ,
<outpin> = <boolean_expression> }* ;
}*
Example 1:
IO_pad,"GENERIC IO",
DATA_INP = MUX(EN_INP,#PAD#,DVDD12),
(#PAD#,PG,NG) = TBUF(DATA_OUT,EN_OUT);
Example 2:
IOPAD, "IO cell",
(#PAD#, I1_INANDOE33, I1_INOROEN33) = TBUF(I, !OEN),
C = #PAD# ;
December 2012
186
Boolean Operator
The following operators are available for BOOL:
Operator
Symbol
Operator Name
Syntax
~ and !
invert
Y = ~A
& and *
and
Y = A * B * C
| and +
or
Y = A + B + C
exclusive or
Y = A ^ B ^ C
complement
Y/YB = A
=>
multiplex function
Y = S?A:B
=> Y = S&A|(~S)&B
Y = A,
YB = ~A
Pin Attribute
The following pin attributes are available in BOOL:
Attribute
Description
[pin_name]
#pin_name#
STATE(pin_name1,
pin_name2,...pin_namen)
December 2012
187
Functions
The following functions are available in BOOL:
Function Type
Keywords
Logical Function
Tri-state Function
Sequential Function
DLSR(), DFSR()
Logical Function
Example: Y = AND(A, B, C)
=>
Y = A * B * C
Example: Y = OR(A, B, C)
=>
Y = A + B + C
Example: Y = XOR(A, B, C)
=>
Y=A^B^C
MUX() multiplexer
<output> = MUX(<input(1)>, <input(2)>, <input(3)>)
Example: Y = MUX(S, A, B)
December 2012
=> Y = S? A: B
188
Tri-state Function
Example: (Y, [P], [N]) = TBUF(A, EN), (Y, [P], [N]) = TBUF(A&B, ~EN)
(Y,[N]) = NOD(A)
December 2012
189
December 2012
190
Sequential Function
December 2012
191
December 2012
192
2. Load the design and SPICE model data, perform circuit recognition, create the
simulation vectors, and load the characterization conditions:
db_prepare -f
3. Specify a bool file (test.bool) for performing circuit recognition. The following
command overwrites the existing simulation vectors in the database and generates new
simulation vectors:
db_gsim -bool test.bool -force
December 2012
193
December 2012
194
E
Specification File Format
This appendix describes the format of the specification file, which the db_gsim command
generates from information in the database. The file is in ASCII format. Do not edit the
specification file.
This appendix presents the following topics:
Syntax
The syntax of the specification file is as follows:
{ DESIGN( <DesignName> ) ;
{ PORT( <PortName> )
+ DIRECTION( { INPUT | OUTPUT | INOUT } )
[ + LOGIC( <OutputLogicBooleanExpression> ) ]
[ + TRISTATE( <NgateNodeName>, <PgateNodeName> ) ]
[ + COMPLEMENT( <ComplementalPortName> ) ]
[ + CLOCK( {R|F|H|L} ) | + FORCE( {H|L} ) | + DATA ]
[ + ENABLE( {H|L|X} ) ]
[ + ONE_STAGE | + TWO_STAGE ]
[ + RISE( <RiseMinValue> [, <RiseMaxValue> ] ) ] [ + FALL(
<FallMinValue> [, <FallMaxValue> ] ) ]
[ + EFFECTED( <EffectedOutputPortName> ) ]
[ + SUPPLY1 | + SUPPLY0 | + FEEDTHRU | + BUS_KEEPER | + NAKED ]
+ NET_NUMBER( <NetNumber> )
[ + NAME_MAP( number )] ;
}*
[ NODE( <NodeName> )M
+ NET_NUMBER( <NetNumber> ) ;
December 2012
195
December 2012
196
Statements
The specification file includes the following statements. They are listed in alphabetical order.
ARC Statement
ARC( input_port, output_port )
+ POSITIVE_UNATE
+ NEGATIVE_UNAT
+ NON_UNATE
+ RISE_EDGE
+ FALL_EDGE
+ PRESET
+ CLEAR
+ TRISTATE_L
+ TRISTATE_H
+ NCH_OPEN_DRAIN_L
+ NCH_OPEN_DRAIN_H
+ PCH_OPEN_DRAIN_L
+ PCH_OPEN_DRAIN_H
December 2012
197
input_port
output_port
POSITIVE_UNATE
Indicates that the input and output ports change in the same
direction.
NEGATIVE_UNATE
Indicates that the input and output ports do not change in the
same direction.
NON_UNATE
Indicates that the input and output ports can be rising or falling
as the inputs rise.
RISE_EDGE
Specifies that the inputs change only on the rising edge of the
clock.
FALL_EDGE
Specifies that the inputs change only on the falling edge of the
clock.
PRESET
Specifies that the outputs change only on the rising edge of the
clock.
CLEAR
Specifies that the outputs change only on the falling edge of the
clock.
TRISTATE_L
TRISTATE_H
NCH_OPEN_DRAIN_L
Specifies that the threshold voltage at the NMOS gate is lowlevel active.
NCH_OPEN_DRAIN_H
Specifies that the threshold voltage at the NMOS gate is highlevel active.
PCH_OPEN_DRAIN_L
Specifies that the threshold voltage at the PMOS gate is lowlevel active.
December 2012
198
PCH_OPEN_DRAIN_H
Specifies that the threshold voltage at the PMOS gate is highlevel active.
BUNDLE Statement
BUNDLE( bundle_element_1 [ , bundle_element_n ]* ) ;
bundle_element
Example
CHECK Statement
CHECK( constraint_port [ : constraint_edge ] )
+ RELATED( related_port [ : related_edge ] )
December 2012
199
constraint_port
constraint_edge
HOLD
RELEASE
REMOVABLE
RECOVER
WIDTH_H
WIDTH_L
WHEN condition_boolean_expression
Specifies the conditions under which the constraints should be
checked. It is a Boolean expression.
December 2012
200
USE vector_name
COMPLEMENTARY Statement
COMPLEMENTARY( true_port_name , complementary_port_name ) ;
true_port_name
complementary_port_name
Specifies the name of the complementary port.
DESIGN Statement
DESIGN( design_name );
design_name
END_OF_DESIGN Statement
END_OF_DESIGN ;
Indicates the end of the design section. All statements for the target design must reside
between the DESIGN statement and END_OF_DESIGN statement.
INHIBIT Statement
INHIBIT( inhibit_state_boolean_expression ) ;
Specifies the logic that the input pins should have to avoid an electrical short in the design.
December 2012
201
inhibit_state_boolean_expression
Specifies the logic that the input pins should have to avoid a
short. This is a Boolean expression.
NODE Statement
NODE( node_name )
+ NET_NUMBER( net_number )
;
Specifies the internal nodes required in characterization. These nodes are automatically
extracted by the db_gsim command.
Options and Arguments
node_name
NET_NUMBER net_number
Specifies the number of the net to which the node is connected.
PORT Statement
PORT( port_name )
+ DIRECTION( {INPUT|OUTPUT|INOUT} )
+ LOGIC( output_logic_boolean_expression )
+ TRISTATE( ngate_node_name, pgate_node_name )
+ COMPLEMENT( complementary_port_name )
+ CLOCK( {R|F|H|L} )
+ FORCE( {H|L} )
+ DATA
+ ENABLE( {H|L|X} )
+ ONE_STAGE
+ TWO_STAGE
December 2012
202
Specifies the port information for the ports on the perimeter of the design.
Options and Arguments
port_name
DIRECTION( {INPUT|OUTPUT|INOUT} )
Specifies the direction of the port.
LOGIC( output_logic_boolean_expression )
Specifies the logic of the port. It is a Boolean expression.
TRISTATE( ngate_node_name, pgate_node_name )
Specifies the internal node names of the NMOS and PMOS
gates in a tristate buffer.
COMPLEMENT( complementary_port_name )
Specifies the name of the complementary input pin in a
differential input pair.
CLOCK( {R|F|H|L} )
December 2012
203
FORCE( {H|L} )
DATA
ENABLE( {H|L|X} )
ONE_STAGE
Specifies that the pin will be used for a single stage in the
design.
TWO_STAGE
Specifies that the pin will be used for two stages in the design.
SUPPLY0
FEEDTHRU
BUS_KEEPER
December 2012
204
NAKED
Specifies that the pin is a naked pin, which is a pin whose state
is determined by the state of other pins.
NET_NUMBER( net_number )
Specifies the number of the net to which the pin is connected in
the Encounter library characterizer database.
NAME_MAP
REGISTER Statement
REGISTER( true_reg_name [ , complement_reg_name ] )
+ LOGIC( true_reg_boolean_expression [ , complement_reg_boolean_expression ]
)
;
Specifies the internal register in a pair of nodes or a tristate register and its Boolean function.
Options and Arguments
true_reg_name
complement_reg_name
Specifies the name of the complementary pin in the register.
LOGIC true_reg_boolean_expression
complement_reg_boolean_expression
Specifies the logic of the true pin and the complementary pin.
Both are Boolean expressions.
VECTOR Statement
VECTOR( simulation_vector )
+ ID( vector_name )
+ DELAY( change_ports )
+ POWER( change_ports )
+ NO_DELAY( change_ports )
December 2012
205
next_change_input_ports )
+ TARGET( port_names ) ;
simulation_vector
ID( vector_name )
DELAY( change_ports )
Specifies a list of comma-separated port names between which
to measure the delay.
POWER( change_ports )
Specifies the ports between which to measure internal power.
NO_DELAY( change_ports )
Specifies that the list of comma-separated vectors will not be
used for delay calculation.
RACE( first_change_input_ports, next_change_input_ports )
Specifies the input port that changes first and the input port that
changes next under race conditions.
TARGET( port_names )
Specifies the comma-separated names of the target ports.
Table E-1 Simulation Vectors
Symbol
Vector Type
Function
Input
Input
Input
Input
December 2012
206
Symbol
Vector Type
Function
Input
Input
Output
Output
Output
Expect high Z
Output
Output
Output
Expect tpLZ
Output
Expect tpZH
Output
Expect tpHZ
Output
Expect tpZL
Output
Dont care
Examples
The following is an example of a specification file generated for an inverter called INVD1:
DESIGN(INVD1) + REFERENCE(N,P);
PORT(I) + DIRECTION(INPUT) + NET_NUMBER(0);
PORT(ZN) + DIRECTION(OUTPUT) + LOGIC(~I) + RISE(6.533333) + FALL(4.266666) +
NET_NUMBER(1);
PORT(VDD) + DIRECTION(INPUT) + SUPPLY1 + BULK + NET_NUMBER(2);
PORT(VSS) + DIRECTION(INPUT) + SUPPLY0 + BULK + NET_NUMBER(3);
ARC(I:ZN) + NEGATIVE_UNATE + ONE_STAGE
+ TRAN(10:01)
+ TRAN(01:10)
+ USE(D0000,D0001);
VECTOR(RD10) + ID(D0000) + DELAY(I) + TARGET(ZN);
VECTOR(FU10) + ID(D0001) + DELAY(I) + TARGET(ZN);
END_OF_DESIGN;
The following is an example of a specification file generated for a D flip/flop called DFD1:
DESIGN(DFD1) + REFERENCE(N,P);
PORT(D) + DIRECTION(INPUT) + DATA + NET_NUMBER(0);
December 2012
207
December 2012
208
Index
Numerics
0 logic state 15
1 logic state 15
database
accessing 51
closing 51
opening 51
db_close command 51
db_open command 51
Define section 122
DESIGN statement 201
distributed processing 31
batch mode 46
bidirectional cells 15, 16
binary search 21, 125
BUNDLE statement 199
ECSM
description of 30
END_OF_DESIGN statement
environment variables 52
exclusive logic 20
201
H
help, command-line 48
high-impedance states 15, 16
high-to-Z propagation delays 16
hold time
binary searches 139
characterization for sequential logic
characterizing 130
HTML 14
17
I
INDEX statement 125
INHIBIT statement 201
interactive mode 45
interface (pad) circuits 19
209
interface circuitry 15
ipsc command 37
ipsmon> command 39
ipsstat command 39
power consumption 28
process corners
in simulation setup file 133
specified by cell library
characterization 14
PROCESS statement 133
pulldowns 19, 139
pullups 19, 139
K
K-factor model 30
race conditions 18
recovery time
characterization for sequential logic
REGISTER statement 205
relative margin factor 129
release time
characterization for sequential logic
removal time
characterization for sequential logic
level shifters 19
Library Compiler
converting ALF file 14
log file 45, 46
low-to-Z propagation delay 16
M
man pages, command-line 48
margin factors 129
MARGIN statement 129
measurement levels 27
minimum pulse width 17, 29
multi-bit logic 15
Schmitt triggers 19
sense amplifiers 19
sequential logic cells 14, 15, 17, 29
SET_CELL statement 140
SET_DEFINES statement 141
SET_GROUP statement 142
SET_PIN statement 143
SET_PROCESS statement 144
setup time
binary searches 139
characterization for sequential logic
short-circuit power 28
SIGNAL statement 136
simulation
monitoring 39
running SPICE 19
vectors 206
simulation setup file
case sensitivity 122
Control section 139
Define section 122
example for I/O cell library
characterization 155
example for standard cell library
characterization 148
general syntax 144
O
30
P
parallel processing 31
pass transistor logic cells 20
path logic cells 15
pin-to-pin delay 14, 27, 28
PORT statement 203
December 2012
17
17
17
210
17
purpose 121
wildcards 122
SIMULATION statement 138
slc.log file 45, 46
.slcrc file 52
slew rate
in simulation setup file 125
input 28
output 28
specification file
format 195
statements in 197
SPICE format 14
SPICE simulation 19
state dependency 20
static leakage power 28
switching power 28
T
timing constraints 14
tristate logic cells 14, 15, 16
typical delay 130
V
VECTOR statement 206
Verilog
converting ALF file to 14
VHDL
converting ALF file to 14
W
wildcards
122
December 2012
211
December 2012
212