Given a multi-pin net they construct a routing DAG as follows:

  1. Construct an RSMT to break the net into a set of two-pin nets
  2. Select a random vertex as root, and traverse the vertices using DFS
  3. During DFS, connect each two-pin net with directed paths conforming to the available patterns connecting the two end points, e.g., L-pattern

center

This process can be extended to other routing patterns:

center

DAG Terms:

  • A vertex is preceding if
  • The set of preceding vertices of is given by
  • A vertex is upstream of if there is a path from to in
  • The set of preceding vertices of can be divided into streams , where all vertices in a stream have the same upstream pin vertices.
  • is the minimum routing cost to connect all the upstream pins to vertex on layer .
  • is the wire cost needed to connect vertex to on layer
  • is the via cost needed to connect the -th and -th layer at vertex

The minimum vertex cost is updated recursively by the following equation:

The cost seeks to connect vertex to a stream via vertex on layer . You can think of the cost as current cost of selected plus additional wirelength for plus cost of vias to traverse to selected layer . Their algorithm computes for each pair , , in time by making use of the fact that the number of streams is bounded by .

Their DAG approach to pattern routing provides opportunities to avoid congestion. If an edge is an edge of the DAG crossing a congested regions, then alternative paths for can be created going around. Outside of a vague description of “create alternative paths on its two sides”, they give no explanation of how these augmentations are performed. Based on Figure 4, my assumption is that for any congested edge , two new alternative paths are added to the DAG, and , which traverse around the congested edge. I don’t know how it ensures edge isn’t also congested or if is congested.

center

They make use of three phases when solving:

  1. DAG-based L-pattern routing
  2. DAG-based pattern routing with augmentation
  3. Sparse graph maze routing

They speed up the maze routing by making the grid graph more sparse. Essentially they restrict the grid graph to only have the rows/columns such that contains a pin, or , where is a parameter controlling the sparsity of the grid graph. After each net is routed, they update .

center

The authors elude to CUGR 2.0 supporting multiple threads, “we use only one thread to demonstrate…”, but no mention of their parallelization strategy is given.