Grid Dimensions

DIMENSIONS [ROWS] [COLUMNS]

This is the overall size of each layer in the design. This must be specified in the input file. If not specified, the parser will return an error asking for the grid size to be specified in the input file. Figure [1] depicts the coordinate system used in our router.

Figure [1] Figure [1]


Number of Layers

NUMLAYERS [N]

N layers will be added to the design. Each layer will be the same size that was specified by the DIMENSIONS tag. In the case that the NUMLAYERS tag is excluded from the input file, the parser will assume that the design consists of one layer and that the single layer has bi-directional oreintation.

Layers will be indexed similar to an array. The bottom layer will be index 1, next will be 2, then 3, and so on. Most of the design work will be done in METAL/LAYER 1.

To reference a layer simply append the layer's index to the LAYER_ tag. For example, a reference to the 4th layer would be: LAYER_4


Default Track Capacities

DEFEDGECAP [HORIZONTAL] [VERTICAL]
DEFEDGECAP [BOTH]

Either tag can be used. The first tag takes 2 separate values, while the second tag only takes one value and sets both the horzontal and vertical edge capacity to the input value. The default edge capacity is the default for all layers and all edges. If the input file contains a default capacity for a specific layer (see the LAYER_[N] tag), then this will override the default capacity for the whole design. Furthermore, if you set a specific edge to have a different capacity than the default, then it will override the default. The DEFEDGECAP tag must be specified in the input tag must be specified in the input file. This is to ensure that every track has a specified capacity. If not specified, the parser will return an error requesting a default edge capacity.


Layer Orientations and Capacities

LAYER_[N] [ORIENTATION] [DEFAULT H CAPACITY] [DEFAULT V CAPACITY]
LAYER_[N] [ORIENTATION] [DEFAULT CAPACITY]
LAYER_[N] [ORIENTATION]

Orientations are specified using H for horizontal, V for vertical, or B for both horizontal and vertical. If a layer is horizontally oriented, then it will not contain vertical routing tracks. Figure [2] depicts the vertical and horizontal tracks for the router.

Figure [2] Figure [2]

Each layer in the design must be oriented at one point or another. Layers can be individually initialize using the LAYER_[N] tag, or they can be set equal to another layer. The layer's default capacities override the overall default edge capacity.


Using a Defined Layer to Initialze Another Layer

SETEQUAL {LAYERS TO BE INIT} [LAYER TO COPY]

This will set all of the layers that are specified in the braces to be have the same orientation and capacities as the layer specified in the brackets. This is enough to orient layers. These "copied" layers can then be changed to have different orientations and capacities than the layer that it was copied from.


Obstacles

OBSTACLES
[Individual obstacle descriptions]
.
.
.
END OBSTACLES

Individual Obstacle Descriptions:
[ROW 1] [COLUMN 1] [ROW 2] [COLUMN 2] LAYER_[N] -[CAPACITY REDUCTION]
[ROW 1] [COLUMN 1] [ROW 2] [COLUMN 2] {LAYERS} -[CAPACITY REDUCTION]
[ROW 1] [COLUMN 1] [ROW 2] [COLUMN 2] {ALL / ODD / EVEN} -[CAPACITY REDUCTION]
[ROW 1] [COLUMN 1] [ROW 2] [COLUMN 2] -[CAPACITY REDUCTION]
[ROW 1] [COLUMN 1] [ROW 2] [COLUMN 2]

Obstacles can be specified as part of the grid. An obstacle over an edge (set of edges) either partially or wholly prevents nets from being routed over this edge (edges).

The description of obstacles is an optional section of the input file, the start and end of the section are denoted by the keywords OBSTACLES and END OBSTACLES.

An individual obstacle is specified by coordinates; for rectangular obstacles, the top left and bottom right coordinates need to be specified, and for straight-line obstacles, the end points of the line need to be specified. Figure [3] shows an example of obstacle specification.

Figure [3] Figure [3]

Obstacles must occupy whole cells, groups of cells, or edges. It is not permitted for an obstacle to span a portion of an edge or a cell, therefore, obstacle coordinates must be whole numbers.

Obstacles result in a partial or total reduction in edge capacity. The extent of this reduction can be included as part of the obstacle description. If nothing is specified, we assume a total reduction in edge capacity (i.e. no nets can be routed over the affected edges). If an obstacle spans a cell, all four edges bordering the cell are affected, if it spans several cells, all edges on the boundary of the rectangle as well as all internal edges (between cells) are affected. Reduction in edge capacities is specified as a negative integer in the obstacle description.

Obstacles can occupy either a single layer or multiple layers, if the layer(s) an obstacle occupies is not specified, the default is layer 0. Multiple layers must be specified within braces {}. We also allow the use of the keywords ALL, ODD and EVEN to specify layers.


Setting Capacities for Individual Tracks

SPECIFICCAP
[Individual track capacity descriptions]
.
.
.
END SPECIFICCAP

Individual Track Capacity Descriptions:
[ROW] [COLUMN] [ORIENTATION] LAYER_[N] [CAPACITY]
[ROW] [COLUMN] [ORIENTATION] {LAYERS} [CAPACITY]
[ROW] [COLUMN] [ORIENTATION] [ALL/ODD/EVEN] [CAPACITY]

If some tracks are required to have different capacities from the default capacity, individual track capacities can be specified in a separate section of the input file.

The start and end of the specific capacities section are denoted by the keywords SPECIFICCAP and END SPECIFICCAP respectively. The specific capacities section is an optional section in the input file.

The location of a track is specified by its position in the grid. Grid locations are [row][column] pairs, each pair can be used to index two edges - one horizontal and one vertical. Figure [4] shows the indexing scheme.

Figure [4] Figure [4]

The orientation variable can take values of H, V or B (for horizontal, vertical, or both). Since a [row][column] pair can index two edges, the orientation variable is required to distinguish between the two. Note also that the orientation of a layer as specified in the layer description will override any individual track descriptions in this section, for example, if this syntax is used to assign capacities to vertical edges in all layers, the changes will only be reflected in layers that possess vertical tracks, strictly horizontal layers will be unaffected.

The layer can be specified as either a single layer, a group of layers, or using the keywords ALL, ODD or EVEN (as described in the section on obstacles).

Track capacity is specified as a single integer. The above parameters are all required to be present in a track capacity description. There are no defaults and a track description that is incomplete will be ignored.


Specifying Capacities for Special Layers

SPECLAYERS
[Individual layer capacities]
.
.
.
END SPECLAYERS

Individual layer capacities:
LAYER_[N] or {LAYERS or tags ALL/ODD/EVEN}
[Grid Format for specified layer]

Grid Format (for N x M layer - N rows, M column):
For layers permitting horizontal and vertical routing -
[H CAPACITY 0,0] [H CAPACITY 0,1]...[H CAPACITY 0,M-2]
[V CAPACITY 0,0] [V CAPACITY 0,1]...[V CAPACITY 0,M-1]
[H CAPACITY 1,0] [H CAPACITY 1,1]...[H CAPACITY 1,M-2]
[V CAPACITY 1,0] [V CAPACITY 1,1]...[V CAPACITY 1,M-1]
.
.
.
[V CAPACITY N-2,0] [V CAPACITY N-2,1]...[V CAPACITY N-2,M-1]
[H CAPACITY N-1,0] [H CAPACITY N-1,1]...[H CAPACITY N-1,M-2]

Strictly horizontal (strictly vertical) layers will have only hs (vs) specified.

In case (for whatever reason) it's necessary for a layer(s) to have entirely different edge capacities with no defaults, we allow a grid-type capacity specification.

Grid-type capacity specifications are to be specified in a separate section of the input file that starts and ends with the keywords SPECLAYERS and END SPECLAYERS.

Individual capacites for a layer(s) consist of the layer identification followed by the capacity specification. We allow specification of a single layer, multiple layers (in braces), or the use of keywords ALL, ODD and EVEN as before.

The grid format consists of rows of numbers. Eac row of numbers represents either horizontal capacities across a single row or vertical capacities across all the columns for a single row. Figure [5] shows an example grid with edge capcities indicated. The grid format for the figure would be:

1 2 3
4 5 6 7
8 9 10
11 12 13 14
15 16 17
18 19 20 21
22 23 24

Figure [5] Figure [5]

In the above description, there are no defaults for layer number, i.e. any specification not accompanied by a layer number will be ignored. For the grids themselves, an incomplete row will be completed by extending the last capacity read, and if there are fewer rows than the number required to completely specify the grid, the last horizontal/ vertical capacities entered will be used to fill the grid.


Return to Input Format