GCR(1ICD)

NAME
gcr - Gridless Channel Router

SYNOPSIS
gcr [-fhilostuUv] [-r rulefile] [-d dir] [-p level] [channel_file]

OPTIONS
The following arguments can be specified:

channel_file
    The name of the file in which the channel is described. If no channel_file is specified, gcr will search for a file called "channel".

-f  Disable the automatic fan out of terminals. If the channel was not routed completely due to terminal spacing constraints, gcr will automatically try solve the problem by moving ('fanning out') terminals. Use the '-f' option if you want to prevent this.

-h  Help: print the list of options.

-i  Interactive mode (some selected Apollo versions only). If this option is supplied, the program will start up in a window and display the channel.

-l  Generate a file called "<channel_file>.stat" containing the wire length and the number of vias used in each net. See the description below for more details.

-o  Invoke net scheduler optimizer. This option enhances gcr's performance as a river router. However, for large channels it will consume considerably more CPU-time, with only marginal improvements.

-s  Print detailed routing statistics.

-t  Trace option. If supplied, the program will print the result of each attempt to route a net.

-u  Pile Up the left- and right-side terminals at minimum spacing distance. If this option is not supplied, these terminals will be piled up in such a way that no territory overlap will occur in the adjacent channels.

-U  Pile Up the left- and right-side terminals at a little more than minimum spacing distance.

-v  Verbose mode. The actions performed by gcr are printed.

-r rulefile
    Sets the name of the design rule file to be used (default 'Route_rules').

-d dir
    Sets the directory in which the channel file is to be found to 'dir'.

-p level
    Set the postprocessing level to 'level'. Default: maximum postprocessing (level = 6). See description for more details.

DESCRIPTION
The program gcr is a 3-layer contour-based gridless channel router which is able to route irregularly shaped channels. Given a set of terminals, a net list and the shape of the channel, the program will generate the wire to interconnect the terminals of each net. The router attempts to minimize both the channel width and the number of contact holes. The terminals are allowed at any position and in any layer along the channel boundary. The width of each terminal and every wire segment can be specified. Gcr is called automatically by sequ, which generates the necessary input file. However, gcr can also be called as a separate tool. Unlike the other programs of the system, gcr reads its input out of normal files in the current project directory. Two input files are expected and two types of output are generated:

(input)
    A design rules file in which all relevant process parameters are specified. This file, called "Route_rules", is read from the current project directory. If no file with that name is present in the project directory, the default design rules file of the database will be used. In other words: the designer can specify his/her own design rules by placing a "Route_rules" file in the project directory. The syntax of this file is described in detail in the users manual or in the online manual pages route_rules(3ICD).

(input)
    A channel file in which the shape of the channel, the position and layer of each terminal, the connectivity of the terminals and a number of options can be specified. The name of this file can be specified in the invocation command line.

(output)
    A cell which is written into the layout view of the database. It contains all rectangles of which the wires in the channel consist. The name of the cell can be specified in the channel file. However, if no name was specified, the cell will obtain the name of the channel file itself.

(output)
    An output channel file of which sequ(1ICD) can deduce the width of the channel and the positions of the floating terminals on the left and right side boundaries of the channel. It resembles the input channel file very much. The output channel file will obtain the name of the input channel file name, extended with ".out".

(output, optionally)
    A Statistics file containing data about the wire length length of each net. This file will obtain the name of the input channel file name, extended with ".stat". If the '-S' option is supplied to sequ(1ICD), this program will collect the data of all individual channels to make global wire length statistics. The first line of the file contains the name of the channel, the total wire length of all nets, the total length in metal1, the total length in poly/metal2 and the total number of vias, respectively. In the next lines the length data of each net is specified (netname, total length, metal length, poly/metal2 length, number of vias)

POSTPROCESSING
The program gcr has a powerful postprocessor which removes unnecessary jogs in wires. Notice however, that postprocessing does not affect the channel width. There are 7 different levels of postprocessing which can be specified using the '-p' option:

level = 0
    No postprocessing at all. This is the fastest way to route the channel.

level = 1
    Simple postprocessing. On this level some metal wires are straightened. It takes about 7% extra cpu-time. The number of rectangles will remain unchanged.

level = 2
    Exhaustive postprocessing. On this level nearly all unnecessary wire bumps are removed. It takes 30-60% extra cpu-time, but 40-75% less rectangles are generated.

level = 3
    As the previous level, but also limited contact hole shift to minimize the wire length in some layers (as polysilicon). A level > 2 is only useful if the design rule parameter 'minlength[layer]' was specified in the "Route_rules" design rule file.

level = 4
    As the previous level, but more extensive contact hole shift (10% extra cpu time).

level = 5
    As the previous level, but also 'metalisation' of a few long POLY wires.

level = 6 (default)
    As the previous level, but also 'metalisation' of ALL long POLY wires. Depending on the number of terminals in the channel this could take some extra cpu-time.

AUTHOR
Patrick Groeneveld

FILES
proj_dir/Route_rules      or
ICDPATH/lib/process/process_name/Route_rules
proj_dir/channel                 (default input channel file)
proj_dir/layout/cell/box
proj_dir/layout/cell/term
proj_dir/layout/cell/info
proj_dir/layout/cell/nor
proj_dir/layout/cell/mc
proj_dir/channel.out             (output channel file)
proj_dir/channel.stat            (output statistics file)

SEE ALSO
H. Cai and P. Groeneveld, "Delft Placement and Routing System User's Manual", The Nelsis IC Design System Documentation, Delft, March 1988.
P. Groeneveld, "GCR: Gridless Channel Router Users Manual", TUD internal paper, Delft, July 1987.
glroute(1ICD), ipp(1ICD), route_rules(3ICD), sequ(1ICD).

DIAGNOSTICS
Warnings and error messages are very detailed. Therefore even small errors can produce an impressive amount of error messages.