MARCO GSRC T2 Fabrics: Bookshelf

Fundamental Slot (see other slots)

Spatial Constraints Slot, rev. 1.0

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