II. | New Blockpacking Formats II.1. The .blocks format
The .blocks file specifies the name and other optional information about each block/terminal node in the floorplan. Each line specifies a single block/terminal node. After the standard header, the format specifies: NumSoftRectangularBlocks : number of soft rectangular block nodes NumHardRectilinearBlocks : number of hard rectilinear block nodes NumTerminals : number of terminal (pad etc.) nodes Then, one line for each soft rectangular block node with format as follows: nodeName softrectangular area minAspectRatio maxAspectRatio [ : symmetry (default none)] Then, one line (or more if the vertex-list is too long) for each hard rectilinear block node with format as follows: nodeName hardrectilinear vertexNumber vertex1, vertex2, ..., vertexN [ : symmetry (default none)] (Note: this format can distribute over arbitrary number of lines, as long as ``nodeName hardrectilinear vertexNumber'' stay on the first line and each individual vertex stays on a same line) Then, one line for each terminal node with format as follows (if NumTerminals is greater than 0): nodeName [ nodeDimensions (default (0,0)] [ : symmetry (default none)] terminal - nodeName
- is an arbitrary-length alpha-numeric string, which may include any number of characters from: {(a-z), (A-Z), (0-9), '_', '/', '\', '+' and '-'} node names are case-sensitive.
- ``softrectangular''
- is a literal which declares that the node is a soft rectangular block.
- area, minAspectRatio and maxAspectRatio
- are all doubles which specify the area, minAspectRatio, or max aspect ratio of the soft rectangular block, respectively.
- ``hardrectilinear''
- is a literal which declares that the node is a hard rectilinear block.
- vertexNumber
- is the number of vertices of the hard rectilinear block.
- vertex1, vertex2, ..., vertexN
- is a list of all vertices of the hard rectilinear block in a clockwise order, vertex1 != vertexN. Each vertex is a pair of parentheses enclosed and comma separated doubles indicating the X-, then Y- coordinate of the vertex, relative to the left-bottom corner of the hard rectilinear block's bounding box.
- nodeDimensions
- is a pair of parentheses enclosed and comma separated doubles indicating width, then height when in N orientation.
- symmetry
- specifies the axes about wihch the node may be flipped. Symmetry is given as any combination (in any order) of 'X', 'Y' and 'R90'. R90 means the node may be rotated 90 degrees. If no symmetry is present, the node is assumed to be not flippable.
- ``terminal''
- is a literal which indicates that the node is a terminal.
II.2. The .spatialconstr format
The .spatialconstr file specifies relative and absolute spatial constraints for placed objects. After the standard header, the format specifies: First, the global layout constraints: layout region and snapping constraint - layoutRegion vertex1, vertex2, ..., vertexN
- every placed object must lie entirely within the rectilinear region defined by (in consecutive order) vertex1, vertex2, ..., vertexN (vertex1 != 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 EndFixedConstraints - 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
- OneDimConstraints
nodeName1 dim coordinate nodeName2 dim coordinate ... nodeNameN dim coordinate EndOneDimConstraints - 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.
- RegionConstraints
nodeName1 vertex1, vertex2, ..., vertexN1 nodeName2 vertex1, vertex2, ..., vertexN2 ... nodeNameN vertex1, vertex2, ..., vertexN3 EndRegionConstraints - placed object must lie entirely within the rectilinear region defined by (in consecutive order) vertex1, vertex2, ..., vertexN (vertex1 != vertexN); each vertex is specified by a pair of doubles separated by a comma and enclosed by parentheses, e.g., (50.0 , 40.4)
- GroupingConstraints
GrConstraint1 xspan,yspan nodeName1, nodeName2, ..., nodeNameN GrConstraint2 xspan,yspan nodeName1, nodeName2, ..., nodeNameN ... GrConstraintM xspan,yspan nodeName1, nodeName2, ..., nodeNameN EndGroupingConstraints - 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.
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 EndAlignmentConstraints - 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; - AdjacencyConstraints
nodeName11 nodeName22 dim minOverlap nodeName21 nodeName22 dim minOverlap ... nodeNameN1 nodeNameN2 dim minOverlap EndAdjacencyConstraints - 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. - PitchmatchConstraints
nodeName11 nodeName22 dim nodeName21 nodeName22 dim ... nodeNameN1 nodeNameN2 dim EndPitchmatchConstraints - 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.
IN the above, ``layoutRegion'', ``snappingConstraint'', ``FixedConstraints'', ``EndFixedConstraints'', ``OneDimConstraints'', ``EndOneDimConstraints'', ``RegionConstraints'', ``EndRegionConstraints'', ``GroupingConstraints'', ``GrConstraintM'', ``EndGroupingConstraints'', ``AlignmentConstraints'', ``EndAlignmentConstraints'', ``AdjacencyConstraints'', ``EndAdjacencyConstraints'', ``PitchmatchConstraints'', ``EndPitchmatchConstraints'' are all literals, each indicating the beginning / end of a spatial constraint. |