16.4.1
SDF for Floorplanning and Placement
In Section 13.5.6, “SDF in Simulation,” we discussed the structure and use of the
standard delay format (
SDF) to describe gate delay and interconnect delay. We may also use SDF with floorplanning and synthesis tools to
back-annotate
an interconnect delay. A synthesis tool can use this information to improve the logic structure. Here is a fragment of SDF:
(INSTANCE B) (DELAY (ABSOLUTE
(
INTERCONNECT A.INV8.OUT B.DFF1.Q (:0.6:) (:0.6:))))
In this example the rising and falling delay is 60 ps (equal to 0.6 units multiplied by the time scale of 100 ps per unit specified in a
TIMESCALE
construct that is not shown). The delay is specified between the output port of an inverter with instance name
A.INV8
in block A and the Q input port of a D flip-flop (instance name
B.DFF1
) in block B. A
'.'
(period or fullstop) is set to be the
hierarchy divider in another construct that is not shown.
There is another way of specifying interconnect delay using
NETDELAY
(a short form of the
INTERCONNECT
construct) as follows:
(TIMESCALE 100ps) (INSTANCE B) (DELAY (ABSOLUTE
(
NETDELAY net1 (0.6)))
In this case all delays from an output port to, possibly multiple, input ports have the same value (we can also specify the output port name instead of the net name to identify the net). Alternatively we can lump interconnect delay at an input port:
(TIMESCALE 100ps) (INSTANCE B.DFF1) (DELAY (ABSOLUTE
(
PORT CLR (16:18:22) (17:20:25))))
This
PORT
construct specifies an interconnect delay placed at the input port of a logic cell (in this case the
CLR
pin of a flip-flop). We do not need to specify the start of a path (as we do for
INTERCONNECT
).
We can also use SDF to
forward-annotate
path delays using
timing constraints
(there may be hundreds or thousands of these in a file). A synthesis tool can pass this information to the floorplanning and placement steps to allow them to create better layout. SDF describes timing checks using a range of
TIMINGCHECK
constructs. Here is an example of a single path constraint:
(TIMESCALE 100ps) (INSTANCE B) (
TIMINGCHECK
(
PATHCONSTRAINT A.AOI22_1.O B.ND02_34.O (0.8) (0.8)))
This describes a constraint (keyword
PATHCONSTRAINT
) for the rising and falling delays between two ports at each end of a path (which may consist of several nets) to be less than 80 ps. Using the
SUM
construct we can constrain the sum of path delays to be less than a specific value as follows:
(TIMESCALE 100ps) (INSTANCE B) (
TIMINGCHECK
(SUM (AOI22_1.O ND02_34.I1) (ND02_34.O ND02_35.I1) (0.8)))
We can also constrain skew between two paths (in this case to be less than 10 ps) using the
DIFF
construct:
(TIMESCALE 100ps) (INSTANCE B) (TIMINGCHECK
(
DIFF (A.I_1.O B.ND02_1.I1) (A.I_1.O.O B.ND02_2.I1) (0.1)))
In addition we can constrain the
skew between a reference signal (normally the clock) and all other ports in an instance (again in this case to be less than 10 ps) using the
SKEWCONSTRAINT
construct:
(TIMESCALE 100ps) (INSTANCE B) (TIMINGCHECK
(
SKEWCONSTRAINT (posedge clk) (0.1)))
At present there is no easy way in SDF to constrain the skew between a reference signal and other signals to be greater than a specified amount.
16.4.2 PDEF
The
physical design exchange format
(
PDEF
) is a proprietary file format used by Synopsys to describe placement information and the
clustering of logic cells. Here is a simple, but complete PDEF file:
(CLUSTERFILE
(PDEFVERSION "1.0")
(DESIGN "myDesign")
(DATE "THU AUG 6 12:00 1995")
(VENDOR "ASICS_R_US")
(PROGRAM "PDEF_GEN")
(VERSION "V2.2")
(DIVIDER .)
(
CLUSTER (NAME "ROOT")
(WIRE_LOAD "10mm x 10mm")
(UTILIZATION 50.0)
(MAX_UTILIZATION 60.0)
(X_BOUNDS 100 1000)
(Y_BOUNDS 100 1000)
(CLUSTER (NAME "LEAF_1")
(WIRE_LOAD "50k gates")
(UTILIZATION 50.0)
(MAX_UTILIZATION 60.0)
(X_BOUNDS 100 500)
(Y_BOUNDS 100 200)
(CELL (NAME L1.RAM01)
(CELL (NAME L1.ALU01)
)
)
)
This file describes two clusters:
-
ROOT
, which is the top-level (the whole chip). The file describes the size (
x
- and
y
-bounds), current and maximum area utilization (i.e., leaving space for interconnect), and the name of the wire-load table, '
10mm x 10mm
', to use for this block, chosen because the chip is expected to be about 10 mm on a side.
-
LEAF_1
, a block below the top level in the hierarchy. This block is to use predicted capacitances from a wire-load table named
'50k gates'
(chosen because we know there are roughly 50 k-gate in this block). The
LEAF_1
block contains two logic cells:
L1.RAM01
and
L1.ALU01
.
16.4.3
LEF and DEF
The
library exchange format
(
LEF
) and
design exchange format
(
DEF
) are both proprietary formats originated by Tangent in the
TanCell and
TanGate place-and-route tools which were bought by Cadence and now known as
Cell3 Ensemble and
Gate Ensemble respectively. These tools, and their derivatives, are so widely used that these formats have become a de facto standard. LEF is used to define an IC process and a logic cell library. For example, you would use LEF to describe a gate array: the base cells, the legal sites for base cells, the logic macros with their size and connectivity information, the interconnect layers and other information to set up the database that the physical design tools need. You would use DEF to describe all the physical aspects of a particular chip design including the netlist and physical location of cells on the chip. For example, if you had a complete placement from a floorplanning tool and wanted to exchange this information with Cadence Gate Ensemble or Cell3 Ensemble, you would use DEF.