An Algorithm to Resolve
Cyclic Vertical Constraints in Channel Routing
Bryan Preas
Computer Science Laboratory
Xerox Palo Alto Research Center
3333 Coyote Hill Road

Palo Alto, CA 94304
Abstract
Most modern, automatic layout systems for VLSI circuits are based on channel routing. The wide range of uses and the importance of channel routing have inspired many good channel routing algorithms. However, no existing algorithm is sufficiently general to be used as the only detailed router in modern design automation systems. No channel router can simultaneously route channels with cyclic vertical constraints, with rectilinear channels and with wires and terminals that can have different widths and spacings. This paper presents a new algorithm for resolving cyclic vertical constraints. When this algorithm is used with a constraint-based channel router, these drawbacks are overcome. This new algorithm is implemented within a constrained left-edge and dogleg channel router and is sufficiently general that it is the only general purpose, detailed router within the Xerox PARC DATools system.
1. Introduction
Most modern, automatic systems for VLSI circuit layout are based on channel routing. Channel routing algorithms are used within module generators to stitch the active circuit elements together and are used as detailed routers within standard cell, gate array, and general cell automatic layout systems.
The wide range of uses and the importance of detailed routing in automatic layout systems have inspired many good channel routing algorithms. Taken as a whole, these algorithms provide a wide range of capabilities. However, many existing algorithms were (implicitly) developed with standard cell and gate array requirements in mind. No existing algorithm is sufficiently general to be used as the single detailed router in modern, VLSI design automation systems. The existing algorithms suffer from one or more of the following drawbacks:
(1) Completion of all of the interconnections cannot be guaranteed in all cases. This condition usually occurs when cyclic vertical constraints are encountered. When cyclic constraints can be processed, they are addressed implicitly or iteratively; this approach is too inefficient when many complex, cyclic vertical constraints exist.
(2) All wire segments must have the same width and that width must be uniform along the length. The terminals to be connected must have the same widths and be placed on a uniform grid.
(3) The channel boundaries must be uniform. Irregular or rectilinear boundaries are not permitted.
This simplified model is not appropriate in modern, general cell design environments. In very large circuits, complete automation is mandatory. Neither the designer nor the other parts of the design automation system is able to alter the arrangement of terminals on the sides of the channels to accommodate the router. Typically, power and clock busses are wider than signal wires and must be routed in the channels. In larger circuits, power busses must be tapered (width varies along the length.) Channels with extreme variations along the boundary are the norm. Terminals can have different widths and spacings because the cells along the channel boundary may be constructed using radically different design styles.
One class of channel routing algorithms (the constraint-based algorithms) can (or can be generalized to) satisfy the variable geometry requirements (different widths and spacings for both terminals and wires and rectilinear channels). However, these algorithms cannot generate sufficiently rich wiring patterns to complete the interconnections for all possible problem instances. This paper presents a new algorithm for cyclic vertical constraint processing that allows these algorithms to guarantee completion of all the interconnections. This algorithm resolves cyclic constraints by adding non-terminal doglegs to enough wire segments to break all of the cycles. The resulting acyclic constraint graph can be used as input to any constraint-based channel router.
The next section evaluates existing channel routing algorithms in light of the requirements imposed by modern, VLSI design automation systems. Section 3 describes an algorithm for resolving cyclic vertical constraints by determining the locations and wire segments for non-terminal doglegs to break all of the cycles in the constraint graph. This algorithm is implemented as part of a dogleg channel router [Deu76]. Implementation enhancements, the subject of Section 4, include a switchbox routing capability and the ability to route wire segments with different widths and widths that vary along the lengths. Results are presented in Section 5. However, comparative results are not available since no other algorithm can route channels that demonstrate the effectiveness of this new algorithm. This router is sufficiently robust that it is the only general purpose router used at Xerox PARC.
2. Channel Routing Algorithms
Channel routing algorithms are very specialized; they can operate only on channels and consider only restricted wiring patterns as potential solutions. However, these restrictions allow the algorithms to consider all the interconnections simultaneously.
This article assumes a familiarity with channel routing; more background is available in [Bur86, Lor88]. Figure 1 illustrates the terminology used. Channel routing algorithms can be divided into three categories: constraint-based, greedy, and hierarchical. This section describes these categories in sufficient detail to understand their strengths and limitations for general cell, VLSI design.
Figure 1. Channel routing terminology is defined after [Lor88]. This more general channel model is required by general cell design systems.
2.1 Constraint-Based Channel Routing
Constraint-based channel routing algorithms concentrate on assigning trunk segments to tracks. The minimal requirements to prevent overlap of branch layer routing belonging to different nets are captured in a vertical constraint graph as illustrated in Figure 2. Thus, the constraint graph is a partial order of trunk segments. A complete order can be derived either by evaluating alternatives using geometric domain checks or by topological operations.

Figure 2. In a constraint graph the nodes represent trunk segments and the directed arcs represent constraints caused by branch layer wires. In this example either routing (a) or (b) is allowed by the constraint graph (c).
Trunk Ordering Using Geometrical Checks. A complete ordering of the trunk position can be determined by evaluating the alternative assignments of trunks (within the limits allowed by the vertical constraint graph) to tracks. The evaluations are performed using geometric design rule checks. Deutsch [Deu76] describes a (terminal) dogleg channel routing algorithm where trunk segments between two adjacent terminals on a net are restricted to one track. Doglegs are allowed only at terminal positions. More recently, a different approach to handling constraints was reported [Ree85]. This router assigns trunks to tracks but allows some vertical constraint violations to occur. A pattern router is then used to fix up the branch layer routing.
Trunk Ordering using Topological Operations. These algorithms use topological operations to derive a complete ordering among the trunk segments from the partial order of the constraint graph. [Yos82] defines an interval graph [Oht79] and merging operations on the constraint graph and the internal graph to determine which trunks are to be put on the same tracks. [Che86] defines an augmented constraint graph that contains both vertical (directed) constraints (to capture the branch layer constraints) and horizontal (undirected) constraints (to capture the trunk layer constraints). Operations are defined to assign directions to the horizontal constraints. Once directions are defined for the horizontal constraints, compaction techniques [Wol88] are used to determine the positions of the trunk segments.
Evaluation of Constraint-Based Algorithms. As a group, these algorithms can route wires and terminals with different widths and spacings. These algorithms are easily adaptable to rectilinear channels, and can be extended to handle different width trunk segments as described in Section 5.
Unfortunately, the ability to guarantee that all interconnections can be routed remains problematic. Most of the algorithms discussed assume a vertical constraint graph that is free of cycles [Deu76, Yos82, Che86]. Authors assume that the terminals can be arranged by the designer or an automatic placement program [Per76] to provide a cycle-free problem instance. Several authors [Deu76, Sat80, Hig80] propose using non-terminal doglegs to break vertical constraint cycles but provide no algorithm for determining the positions. [Kel86] provides an algorithm but for a simplified channel model. Completion guarantees are not addressed. YACR2 [Ree85] can route channels with cyclic vertical constraints but does so inefficiently. It does not look for cycles but discovers them one at a time and must route the entire channel between iterations. The complicated heuristics are difficult to apply in a general routing model.
2.2 Greedy Channel Routing
The greedy channel routing algorithm determines positions for wiring segments in a left-to-right, column-by-column scan [Riv82]. The wiring within each column is completely specified before the next column is processed. The algorithm specifies five greedy rules to assign wiring segments to positions.
The greedy algorithm typically produces very good resulting routes, and always finds a solution. Unfortunately, the rules require all of the terminals to be on a grid. If terminals were allowed to be off-grid, there would be an interaction between columns, and the column-by-column approach would be infeasible. Wide power terminals could interact with many signal terminals.
2.3 Hierarchical Channel Routing
The third category of channel routing uses successive refinement in a hierarchical manner [Bur83]. First, the channel is split along the trunk direction into two routing regions and wiring segments are assigned to one of the two regions. This gives rise to a Two-By-N routing problem (with N columns or terminal positions). Both integer and dynamic programming solutions are described. Each routing region is then split into two more regions and the process continues until positions have been assigned for all wire segments.
This algorithm produces very good routing solutions for gate array and standard cell problems. However, the approach is not applicable for general cell layout systems because uniformity of the routing surface is a critical assumption. This integer and dynamic programming solutions require that terminals be on a grid and that wires have the same width.
2.4 Channel Routing Summary
Constraint-based algorithms come the closest to satisfying all of the requirements for general cell, VLSI design. These algorithms have been (or can be) extended to meet the variable geometry requirements. Furthermore, they can complete all interconnections when enhanced with an algorithm to resolve cyclic vertical constraints. The next section presents such an algorithm. The resulting acyclic graph can then be input to any constraint-based channel routing algorithm.
3. Resolving Cyclic Vertical Constraints
This section presents an algorithm to transform a vertical constraint graph with cycles into an acyclic graph by adding non-terminal doglegs to enough trunk segments to break all of the cycles. When used with a constraint-based channel router, this algorithm can guarantee completion of all routing. The algorithm minimizes the channel density by selecting the best, single dogleg to break each cycle. Because a single dogleg is used (more doglegs per cycle might be better) and because cycles are processed sequentially, the results may be less than optimal. Remember, however, that dogleg channel routing is NP-complete [Szy85] and that modern routing channels are too complex to enumerate all solutions and then choose the best. This means that we must resort to heuristics such as the one described here to find a minimal solution.
The remainder of this section describes the algorithm. Section 3.1 provides an overview and presents the actual algorithm while Section 3.2 provides more details. While this order of presentation separates some closely related topics, it does allow the concepts to be discussed before the details.
3.1 The Approach
The algorithm determines how to break all the cycles in a vertical constraint graph. For each trunk segment within a cycle, the segment is broken by finding the least-cost dogleg that will divide the segment into two new segments that do not propagate any constraints. Then, the least-cost dogleg over all the trunk segments in the cycle is chosen to break the cycle.
To divide trunk a segment into two segments that do not propagate any constraints, we do the following. All of the terminals on the upper boundary of the channel are connected to a new segment (the upper segment) and the terminals on the lower boundary are connected to a separate, new segment (the lower segment). When the two new segments are connected using a non-terminal dogleg (that generates no new cycles), the existing cycle is broken as shown in Figure 3. Unless otherwise specified, the width of the dogleg wire is the same as the width of the trunk segment. This method of breaking cycles is simple and produces good results. More discussion is presented in Section 3.2.

Figure 3. To break cycles in the vertical constraint graph, a segment is divided into an upper and a lower segment. A non-terminal dogleg is used to connect the segments.
Sometimes, it is not possible to find a position suitable for a non-terminal dogleg within the span of the channels. All possible positions might be unsuitable because of existing branch layer wiring, interference from other doglegs, or because a new constraint cycle would be created. When this happens, the dogleg must be deferred to one of the two intersecting channels as shown in Figure 4. With an appropriate design of the system in which the channel router is embedded [Kan76], it is possible to route all of the channels in an order that will allow the deferred doglegs to be routed at the same time the intersecting channels are routed. Rules that determine where a dogleg can be placed are discussed in Section 3.2.
The algorithm to transform a constraint graph with cycles into an acyclic graph is shown in Algorithm 1. Note that it is always possible to break every cycle because deferred doglegs are always possible.
Figure 4. It is not always possible to insert a non-terminal dogleg within a channel. Completion can be guaranteed when doglegs can be deferred to one of the intersecting channels.
3.2 The Details
The previous section discusses the concepts and presented an overview of the algorithm. This section provides more detail.
Constraining. At the lowest level is the Constraining function. Given two items on the branch layer (terminals or non-terminal doglegs) and a set of design rules, Constraining returns a Boolean variable that indicates if the items constrain each other.1 With each branch layer item, we have an associated position, p, and a width, w. The operation of Constraining is illustrated by Figure 5 and Algorithm 2. Constraining answers the same question that InTheSameColumn answers in gridded channel routers.
1 Sometimes via-to-line spacings can be used instead of via-to-via spacings. This level of complexity is omitted in this paper.
GenerateAcyclicVerticalConstraintGraph: PROCEDURE [vcg, terminals, nets, rules] RETURNS [acyclicVcg, pins]
pins ← terminals (*pins are terminals plus non terminal doglegs *)
WHILE cycles exist in vcg DO
density ← CurrentTrackDensity[pins, nets] (* Cost of Doglegs *)
segsInCycle ← ChooseACycle[vcg]
doglegbest ← worstPossibleDogleg
FOR each trunkSegment in segsInCycle DO
searchRanges ← GenerateRangesForSeg[trunkSegment] (* Reducing the Search Space *)
FOR each range in searchRanges WHILE no dogleg found DO
FOR each appropriate position in range DO (* Reducing the Search Space *)
IF DoglegAllowed[trunkSegment, position, vcg, pins, nets, rules] THEN
(* Where Doglegs Are Allowed *)
dogleg ← GenerateDogleg[trunkSegment, position] (* Breaking the Segments *)
IF BetterThan[dogleg, doglegbest, density] THEN(* Cost of Doglegs *)
doglegbest ← dogleg
END FOR each appropriate position
IF no dogleg found for this trunkSegment THEN
doglegleft ← GenerateDogleg[trunkSegment, leftEndOfChannel] (* Breaking the Segments *)
doglegright ← GenerateDogleg[trunkSegment, rightEndOfChannel] (* Breaking the Segments *)
IF BetterThan[doglegleft, doglegbest, density] THEN(* Cost of Doglegs *)
doglegbest ← doglegleft
IF BetterThan[doglegright, doglegbest, density] THEN(* Cost of Doglegs *)
doglegbest ← doglegright
END FOR each range in searchRanges
END FOR each trunkSegment
Insert doglegbest into pins, vcg, nets
END WHILE cycles exist
RETURN [vcg, pins]
Algorithm 1. This algorithm generates an acyclic vertical constraint graph by inserting non-terminal doglegs. Bold comments refer to subsections in Section 3.2.
Constraining: PROCEDURE [item1, item2, rules] RETURNS [Boolean]
w1 ← Max [item1.w, rules.branch.viaSize]
w2 ← Max [item2.w, rule.branch.viaSize]
constraining ← SELECT FROM
item1.p = item2.p: TRUE
item1.p < item2.p: (item2.p-w2) - (item1.p+w1) < rules.branch.minSpace
item1p > item2.p: (item1.p-w1) - (item2.p+w2) < rules.branch.minSpace
END SELECT
RETURN [constraining];
Algorithm 2. This algorithm determines if two branch layer items (terminals or non-terminal doglegs) interact with each other (in a design rule sense).

Figure 5. Branch layer items constrain each other if they are closer (horizontally) than the minimum branch spacing.
Where Doglegs Are Allowed. It is now possible to define the rules that determine whether it is possible to put a dogleg at a (horizontal) position within a channel. A non-terminal dogleg is forbidden if any of the following conditions is true:
(1) If the dogleg would constrain terminals on both the top and bottom of the channel and those terminals belong to the same net. If this were allowed, it would be impossible to connect a net directly across a channel as shown in Figure 6.
(2) If the dogleg would constrain an existing non-terminal dogleg. The constraint graph mechanism (as we have defined it) cannot represent the constraint that both segments a1 and a2 must be either above or below both segments b1 and b2 as illustrated in Figure 7. Hence, the configuration is disallowed.
(3) If a dogleg would introduce a new constraint cycle. It is not appropriate to introduce a new constraint cycle in the process of breaking another. This rule can be stated in two parts:
(3a) If the dogleg constrains an upper terminal, ut, and there is a directed path in the constraint graph from the dogleg segment to the segment connected to ut, or,
(3b) If the dogleg constrains a lower terminal, lt, and there is a directed path in the constraint graph from the segment connected to lt to the dogleg segment.

Figure 6. A dogleg is not allowed if it would prohibit a net with simple topology from crossing a channel. In this case, net 1 can not be routed with a normal topology.
Figure 7. Both segments a1 and a2 must be either above or below both segments b1 and b2. Interacting doglegs are disallowed because the constraint graph cannot represent this complexity.
Breaking the Segments. In Section 3.1, it is stated that to break a cycle, a segment in the cycle is broken into two new segments, one connecting the upper terminals and the other connecting the lower terminals. A single non-terminal dogleg that generates no new cycles connects these two new segments. This method has several advantages: it is easy to implement, the interactions of multiple doglegs within one net do not have to be considered, and legal positions for doglegs are not a function of the topology of its net (as would be the case, for example, if each two-terminal segment could be broken separately). This simple approach to breaking segments also has drawbacks; however, this section argues that the drawbacks aren't all that bad.
This approach always does the right thing for two-terminal nets (the majority of nets), but nets with three or more terminals can be routed inefficiently. An extreme example is shown in Figure 8. Fortunately, such extreme configurations rarely occur. Furthermore, the probability that all segments in a cycle would be broken in such a bad way is very small. (Remember that the best dogleg over all segments is chosen to break the cycle.)
Figure 8. In some cases, breaks with two non-terminal doglegs are better than breaks with one non-terminal dogleg.
Another drawback is that more non-terminal doglegs than necessary may be inserted if a (terminal) dogleg router [Deu76] is used. That router inserts doglegs at terminal locations; these doglegs can also break constraint cycles. When the algorithm discussed here is applied to the terminal configuration of Figure 9, it will break either the segment of net 1 or net 2 with a non-terminal dogleg as shown in Figures 9(a) and 9(c). However, the actual routing produced is shown in Figures 9(b) and 9(d). Just as the (terminal) dogleg router is not required to use terminal doglegs, neither is it required to use non-terminal doglegs. The (terminal) dogleg router selects from its several routings, the solution that 1) has the lowest channel density, 2) has the shortest branch length, and 3) has the smallest number of vias. The selected routings (Figures 9(b) and 9(d)) have equal densities and branch lengths but smaller via counts compared to the routings in Figures 9(a) and 9(c).









Figure 9. Even though extra doglegs are inserted as indicated by the X, no penalty is incurred. The better routings, (b) and (d), are selected by the (terminal) dogleg router.
Cost of Doglegs. To compare alternative doglegs, a three-part cost comparison is used. A dogleg on a power supply net is more expensive than a dogleg that is on a signal net. If the nets are the same type then a second priority comparison is made. If dogleg1 results in a smaller channel density than dogleg2, then dogleg1 has the lowest cost. If the densities produced are the same, then the dogleg that produces the smallest trunk overlap is selected. Overlap occurs when two segments of the same net cross the same abscissa. This last comparison selects for the shortest wire length.
Note that the channel density as used in this paper is a generalization of that defined in [Deu76]. In that reference, channel density is defined as maximum count of segments whose extent includes any terminals abscissa. In the more general environment considered here, channel density is the maximum over all abscissa of the sum of segment widths and spaces that include an abscissa.
Reducing the Search Space. It is usually not necessary to search the entire channel before finding the best position to insert a dogleg. Based on the relationship of terminals on the upper and lower boundaries of the channel, ranges along the channel can be prioritized as shown in Figure 10. If any dogleg is allowed in region 1, then its cost is less than or equal to that of any dogleg in either regions 2. A similar statement can be made for regions 2 and 3. Thus, searching can terminate after a region has been processed if a dogleg has been found.
Of course, within the regions, it is not necessary to evaluate every possible position. In fact, no more than one inquiry per terminal plus at most one inquiry between terminals pairs plus the boundary positions need be searched.
4. Channel Router Implementations Extensions
The channel router that follows the algorithms to resolve cyclic constraints is based on the dogleg router [Deu76], but two extensions enhance the generality. The first enhancement generalizes trunk segments to allow different trunk segment widths and widths that can vary along the length. The second enhancement permits the channel router to route switchboxes (fixed terminals on the ends as well as the sides).






Figure 10. Search ranges for doglegs can be prioritized based on the configuration of terminals. Any dogleg in region 1 is no worse than any dogleg in region 2. Likewise for regions 2 and 3.
In order to route the generalized trunk segments, the concept of assigning trunks dynamically to statically defined tracks is retained. However, the function, Fitcheck, that checks if a trunk can be assigned to a track, must be generalized. When all trunks have the same width, Fitcheck only need check the horizontal extent of the trunk segments to determine a valid assignment. When trunks can have different widths, design rule interference with trunks on surrounding tracks must be checked.
The implementation of the channel router is also extended to allow switchbox routing. This allows fixed terminals on the ends as well as the sides of the channel. The following modifications are included:
(1) Track coordinates are assigned by considering the positions of the terminals on the channel's ends. Thus, the tracks' spacings may differ and require extra computation in Fitcheck.
(2) Extra constraints must be included in the vertical constraint graph to capture the order of the terminals on the ends of the channel.
(3) Trunk segments connected to terminals on the channel ends are assigned permanently to the corresponding tracks.
(4) Non-terminal doglegs are required to resolve any over-constrained trunks. For example, a trunk that connects a left end terminal in one track to a right end terminal in a second track must have a non-terminal dogleg.
5. Results
The algorithm to resolve cyclic vertical constraints by inserting non-terminal doglegs and the (terminal) dogleg router is implemented in Cedar programming language and is a part of the DATools package [Bar88]. This is the only detailed router within this automatic layout system.
For instances of channel routing problems with acyclic vertical constraint graphs and with regular geometry (uniform widths and spaces for wire segments and terminals), this router produces the same results as the (terminal) dogleg router.
It is only with irregular geometry channels or cyclic constraints that differences appear. Plots 1, 2, 3 and 4 show channels produced by this router. These examples were taken from the highest (hierarchical) level of general cell circuits designed at Xerox PARC. Table 1 shows the characteristics of the channels. Note that these channels have much different characteristics than standard cell examples [Deu76]: more nets, more pins, lower pin density, and power busses in the channels. Packing is typically not as tight because no placer actively moves the terminals to reduce the channel density. These channels illustrate the types of problems that channel routers for general cell environments must solve.
6. Conclusions
The widespread use of channel routing has produced many good channel routing algorithms. However, most were inspired by standard cell and gate array layout styles and their simple, regular geometries. The requirements for general cell VLSI design are much more severe and no single channel router could meet the requirements. The algorithm presented here can efficiently transform a vertical constraint graph with cycles into an acyclic one. When this algorithm is combined with a constraint-based channel router, it can route channels with irregular geometries and also guarantees completion of all routing. Examples from four channels taken from VLSI designs illustrate the operation.
Table 1. Characteristics of Example Channels
Example Density Nets Pins Cycles Source Comments
 (mm)
1 532 123 361 2 High Speed Cache Rectilinear Sides; 3 different wire widths
2 1404 569 1575 13 High Speed Cache 3 different wire widths
3 612 94 297 3 High Speed Cache Rectilinear Sides; 3 different wire widths
4 1108  272 748 8 Memory Controller Dogleg in Vdd Bus; 2 different wire widths
References
[Bar88] Barth, R., L., Monier, and B. Serlet, "Patchwork: layout from schematic annotations," Proc. of 25th Design Automation Conference, pp 250-255, June, 1988.
[Bur83] Burstein, M., and R. Pelavin, "Hierarchical wire routing," IEEE Transactions on Computer Design, vol. CAD-2, no. 4, pp. 223-234, October 1983.
[Bur86] Burstein, M., "Channel routing," in Layout Design and Verification, T. Ohtsuki, editor, Elsevier Science Publishers B. V. (North Holland), Chapter 4, pp 133-167, 1986.
[Che86] Chen, H. H., and E. S. Kuh, "Glitter: a gridless variable-width channel router," IEEE Transactions on Computer Design, vol. CAD-5, no. 4, pp. 459-465, October 1986.
[Deu76] Deutsch, D. N., "A 'dogleg' channel router," in Proc. 13th Design Automation Conference, pp. 425-433, June 1976.
[Hig80] Hightower, D. W., and R. L. Boyd, "A generalized channel router," in Proc. 17th Design Automation Conference, pp. 12-21, June 1980.
[Kan76] Kani, K., H. Kawanishi, and A. Kashimota, "ROBIN: a building block LSI routing problem," in Proc. of the Intl. Symposium on Circuits and Systems, pp. 658-661, 1976.
[Kel86] Keller, F. V., and D. A. Mlynksi, "A graph-theoretical channel-router for constraint-loop-problems," in Proc. 1986 IEEE International Symposium on Circuits and Systems, pp. 311-314, May 1986.
[Lor88]  Lorenzetti, M. J., and D. S. Baeder, "Routing," in Physical Design Automation of VLSI Systems, B. T. Preas and M. J. Lorenzetti, editors, Menlo Park, CA: Benjamin/Cummings Publishing Company, Inc., Chapter 5, pp 157-210, 1988.
[Oht79] Ohtsuki, T. O., H. Mori, E. S. Kuh, T. Kashiwahara, and T. Fujisawa, "One-dimensional logic gate assignment and interval graphs," IEEE Transactions on Circuits and Systems, vol. CAS-26, pp. 675-684, September 1979.
[Per76] G. Persky, "PRO-an automatic string placement program for polycell layout," in Proc. 13th Design Automation Conference, pp. 417-424, June 1976.
[Ree86] Reed, J., A. Sangiovanni-Vincentelli, and M. Santomauro, "A new symbolic channel router: YACR2," IEEE Transactions on Computer Design, vol. CAD-4, no. 3, pp. 208-219, July 1986.
[Riv82] Rivest, R. L. and C. M. Fiduccia, "A 'greedy' channel router," in Proc. 19th Design Automation Conference, pp. 418-424, June 1982.
[Sat80] Sato, K., H. Shimoyama, T. Nagai, M. Ozaki, and T. Yahara, "A 'grid-free' channel router," in Proc. 17th Design Automation Conference, pp. 22-30, June 1980.
[Szy85] Szymanski, T. G., "Dogleg channel routing is NP-complete," IEEE Transactions on Computer-Aided Design, vol. CAD-4, no. 1, pp. 31-41, January 1985.
[Wol88] Wolf, W. H., and A. E. Dunlop, "Symbolic layout and compaction," in Physical Design Automation of VLSI Systems, B. T. Preas and M. J. Lorenzetti, editors, Menlo Park, CA: Benjamin/Cummings Publishing Company, Inc., Chapter 6, pp. 211-281, 1988.
[You82] Yoshimura T. and E. Kuh, "Efficient algorithms for channel routing," IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems, vol. CAD-1, no. 1, pp. 25-35, January 1982.
 Plot 1 Plot 2 Plot 3 Plot 4
files:
///Users/Preas.pa/papers/VLSI89.tioga
///Users/Preas.pa/datools/MCChannels.dale -- the MC channels
///Users/Preas.pa/datools/ModifiedDiscriminable.ColorMap -- NReadColors ModifiedDiscriminable
///Users/Preas.pa/datools/VLSI89Figures.dale
///7.0/Commands/ExpandedMargins.style
/firedrake/cedar/users/curry.pa/ScChannels.dale
last Updated:
January 17, 1989 2:09:20 pm PST