Work in progress: last updated Sat Nov 20 1999
|
Linda (Huaizhi) Wu Wayne Dai Andrew B. Kahng |
File formats for spatial constraints ------ .spatialconstr file
1. The .spatialconstr format
The .spatialconstr file specifies relative and absolute spatial constraints
for placed objects.
The file format is as follows:
<standard header> (as specified in UCLA's standard-cell
placement file formats rev1.2)
First, the global layout constraints: layoutRegion and snappingConstraint
layoutRegion <vertex1, vertex2, ..., vertexN>
// every placed object must lie entirely within the rectilinear region
// defined by (in consecutive order) vertex1, vertex2, ..., vertexN.
// vertex 1 != vertexN; each vertex is specified by a pair of doubles
// separated by a comma and enclosed by parentheses, e.g., (50.0 , 40.4)
snappingConstraint { y1, y2, ..., yN } | <startAt, step, num>
// y1, ..., yN is an explicit list of allowed y-coordinates at which
// all horizontal object edges must be located.
// startAt, step, num give a shorthand notation for defining the
// minimum allowed y-coordinate (startAt), the interval between
// allowed y-coordinates (step), and the total number of distinct
// allowed y-coordinates (num).
Next, the fixed/onedim/region/grouping location constraints:
FixedConstraints
<nodeName1> <location> <orientation>
<nodeName2> <location> <orientation>
...
<nodeNameN> <location> <orientation>
// location is the location of the origin of the placed object.
// it is a pair of parenthesis enclosed and white-space separated
// doubles indicating the X-, Y- coordinate of the block vertex.
// for a rectangular block, the origin is its left-bottom vertex;
// for a non-rectanglular block, the origin is its first vertex in
// its vertexList
EndFixedConstraints
OneDimConstraints
<nodeName1> <dim> <coordinate>
<nodeName2> <dim> <coordinate>
...
<nodeNameN> <dim> <coordinate>
// dim is either H or V, coordinate is the y-coord or x-coord,
// respectively, at which the origin of the object must be placed
EndOneDimConstraints
RegionConstraints
<nodeName1> <vertex1, vertex2, ..., vertexN1>
<nodeName2> <vertex1, vertex2, ..., vertexN2>
...
<nodeNameN> <vertex1, vertex2, ..., vertexN3>
// placed object must lie entirely within the rectilinear region defined
// by (in consecutive order) vertex1, vertex2, ..., vertexN.
// vertex 1 != vertexN; each vertex is specified by a pair of doubles
// separated by a comma and enclosed by parentheses, e.g., (50.0 , 40.4)
EndRegionConstraints
GroupingConstraints
GrConstraint1
<xspan,yspan>
<nodeName1, nodeName2, ..., nodeNameN>
GrConstraint2
<xspan,yspan>
<nodeName1, nodeName2, ..., nodeNameN>
// each grouping constraint GrConstraint specifies that the entire
// list of objects must be placed within some bounding box of width
// xspan and height yspan within the layout region
EndRegionConstraints
Next, alignment/adjacency/pitchmatch constraints.
AlignmentConstraints
<nodeName11> <nodeName12> <dim> <00 | 01 | 10 | 11>
<nodeName21> <nodeName22> <dim> <00 | 01 | 10 | 11>
...
<nodeNameN1> <nodeNameN2> <dim> <00 | 01 | 10 | 11>
// if dim = H, then the two placed objects must have horizontal edges
// of their bounding boxes aligned at the same y-coordinate:
// case 00: both top edges;
// case 01: top edge of object1 aligned with bottom edge of object2;
// case 10: bottom edge of object1 aligned with top edge of object2;
// case 11: both bottom edges;
// if dim = V, then the two placed objects must have vertical edges
// of their bounding boxes aligned at the same x-coordinate:
// case 00: both left edges;
// case 01: left edge of object1 aligned with right edge of object2;
// case 10: right edge of object1 aligned with left edge of object2;
// case 11: both right edges;
EndAlignmentConstraints
AdjacencyConstraints
<nodeName11> <nodeName22> <dim> <minOverlap>
<nodeName21> <nodeName22> <dim> <minOverlap>
...
<nodeNameN1> <nodeNameN2> <dim> <minOverlap>
// if dim = H, then the boundaries of the bounding boxes of
// the two placed objects must intersect in a horizontal segment
// of length at least minOverlap.
// if dim = V, then the boundaries of the bounding boxes of
// the two placed objects must intersect in a vertical segment
// of length at least minOverlap.
EndAdjacencyConstraints
PitchmatchConstraints
<nodeName11> <nodeName22> <dim>
<nodeName21> <nodeName22> <dim>
...
<nodeNameN1> <nodeNameN2> <dim>
// if dim = H, then the horizontal boundaries of the bounding boxes of
// the two placed objects must be of equal length.
// if dim = V, then the vertical boundaries of the bounding boxes of
// the two placed objects must be of equal length.
EndPitchmatchConstraints