The clock router connects multiple clocked cells to a single clock generator,
ensuring a constant wire length to each clocked cell.
It does this by building tree structures in user-specified routing channels,
adding serpentine wires if necessary to balance the length.
The Clock Router is run with the Clock Routing... command (in menu Tools / Routing).
The command prompts for a command file that specifies the clock routing task.
The command file contains directives that describe the source and destination nodes,
the routing channels, and other routing parameters.
These are the directives that can appear in the command file:
- SOURCE describes the clock-generator cell. It has these parameters:
- NODE specifies the cell name that generates clock signals.
- PORT specifies the port on the clock generator cell to connect.
- STUBX / STUBY (optional) is the X/Y delta of a "stub" arc that will be drawn out of the clock generator port.
- DESTINATION describes the cells that are being clocked. It has these parameters:
- NODE specifies the cell name for instances being clocked.
- PORT specifies the port on the clocked instances to connect.
- STUB (optional) is the length of a "stub" arc that will be drawn out of the clocked instances.
- LAYERS describes the horizontal and vertical layers to use for routing. It has these parameters:
- HORIZONTAL specifies the metal layer number for horizontal arcs. "1" means Metal-1, etc.
- VERTICAL specifies the metal layer number for vertical arcs. "1" means Metal-1, etc.
- HORIZONTAL-SCALE (optional) is a width-scale for horizontal arcs. The default value is 1, but anything
larger will cause horizontal arcs to scale by that factor over their default width.
- VERTICAL-SCALE (optional) is a width-scale for vertical arcs. The default value is 1, but anything
larger will cause vertical arcs to scale by that factor over their default width.
- CHANNEL describes a routing channel. It has these parameters:
- NAME specifies the name of this routing channel.
- IN specifies the side of the channel that has the input (from the clock generator).
- OUT specifies the side of the channel that has the output (to the clocked instances).
After the parameters comes a list of destinations.
The destinations can be cell instance names for the clocked instances,
or it can be the name of a previous routing channel.
Here is an example of clock routing. This is the command file:
# Clock routing command file
SOURCE NODE=clockGen PORT=clkOut STUBX=25 STUBY=0
DESTINATION NODE=destCell PORT=clk STUB=10
LAYERS HORIZONTAL=1 VERTICAL=2
CHANNEL NAME=a IN=down OUT=left d1 d2 d3 d4
CHANNEL NAME=b IN=down OUT=right d5 d6 d7 d8
CHANNEL NAME=whole IN=left OUT=up a b
Note that there are two CHANNELs named "a" and "b" that connect the two columns of four cells.
Then there is a third CHANNEL ("whole") that connects the "a" and "b" channels.