Routing (electronic design automation)
In
The task of all routers is the same. They are given some pre-existing polygons consisting of
Almost every problem associated with routing is known to be
Design rules sometimes vary considerably from layer to layer. For example, the allowed width and spacing on the lower layers may be four or more times smaller than the allowed widths and spacings on the upper layers. This introduces many additional complications not faced by routers for other applications such as printed circuit board or multi-chip module design. Particular difficulties ensue if the rules are not simple multiples of each other, and when vias must traverse between layers with different rules.
Types of routers
The earliest types of EDA routers were "manual routers"—the drafter clicked a mouse on the endpoint of each line segment of each net. Modern PCB design software typically provides "interactive routers"—the drafter selects a pad and clicks a few places to give the EDA tool an idea of where to go, and the EDA tool tries to place wires as close to that path as possible without violating design rule checking (DRC). Some more advanced interactive routers have "push and shove" (aka "shove-aside" or "automoving") features in an interactive router; the EDA tool pushes other nets out of the way, if possible, in order to place a new wire where the drafter wants it and still avoid violating DRC. Modern PCB design software also typically provides "autorouters" that route all remaining unrouted connections without human intervention.
The main types of autorouters are:
- Line-probe router
- Pattern router[6][10]
- Channel router[11][10][6][12]
- Switchbox router[12]
- River router[12]
- Spine and stitch router[13]
- Gridless router[14][10][6][15]
- Area router
- Graph theory-based router[16]
- Racal-Redac / Zuken)
- Allegro PCB Router) (gridless since version 10)
- Topological router
- )
- Eremex's Delta Design)
- gEDA suite)
- EAGLE 7.0and higher)
- SimplifyPCB (a topological router with a focus on bundle routing with hand-routing results)[20]
How routers work
Many routers execute the following overall algorithm:
- First, determine an approximate course for each net, often by routing on a coarse grid. This step is called global routing,[21] and may optionally include layer assignment. Global routing limits the size and complexity of the following detailed routing steps, which can be done grid square by grid square.
For detailed routing, the most common technique is rip-up and reroute aka rip-up and retry:[3]
- Select a sequence in which the nets are to be routed.
- Route each net in sequence
- If not all nets can be successfully routed, apply any of a variety of "cleanup" methods, in which selected routings are removed, the order of the remaining nets to be routed is changed, and the remaining routings are attempted again.
This process repeats until all nets are routed or the program (or user) gives up.
An alternative approach is to treat shorts, design rule violations, obstructions, etc. on a similar footing as excess wire length—that is, as finite costs to be reduced (at first) rather than as absolutes to be avoided. This multi-pass "iterative-improvement" routing method[22] is described by the following algorithm:
- For each of several iterative passes:
- Prescribe or adjust the weight parameters of an "objective function" (having a weight parameter value for each unit of excess wire length, and for each type of violation). E.g., for the first pass, excess wire length may typically be given a high cost, while design violations such as shorts, adjacency, etc. are given a low cost. In later passes, the relative ordering of costs is changed so that violations are high-cost, or may be prohibited absolutely.
- Select (or randomly choose) a sequence in which nets are to be routed during this pass.
- "Rip up" (if previously routed) and reroute each net in turn, so as to minimize the value of the objective function for that net. (Some of the routings will in general have shorts or other design violations.)
- Proceed to the next iterative pass until routing is complete and correct, is not further improved, or some other termination criterion is satisfied.
Most routers assign wiring layers to carry predominantly "x" or "y" directional wiring, though there have been routers which avoid or reduce the need for such assignment.[23] There are advantages and disadvantages to each approach. Restricted directions make power supply design and the control of inter-layer crosstalk easier, but allowing arbitrary routes can reduce the need for vias and decrease the number of required wiring layers.
See also
- Electronic design automation
- Design flow (EDA)
- Integrated circuit design
- Place and route
- Auto polarity (differential pairs)
- Auto crossover (Ethernet)
References
- ISSN 0036-1399.
- S2CID 17511882.
- ^ LCCN 91-72187.
- ^ Ritchey, Lee W. (December 1999). "PCB routers and routing methods" (PDF). PC Design Magazine (February 1999). Speeding Edge. Archived (PDF) from the original on 2018-10-22. Retrieved 2018-10-22.
- S2CID 40700386.
- ^ LCCN 2004057106. Archived(PDF) from the original on 2017-09-25. Retrieved 2017-09-25.
- .
- IFIPSProceedings. Vol. H47. pp. 1745–1478.
- . (NB. This contains one of the first descriptions of a "line probe router".)
- ^ ISBN 978-0-87170-285-2. Retrieved 2017-09-27.
- ^ ISBN 978-1-48321784-0. Retrieved 2018-10-22.
- ^ McLellan, Paul (2012-04-23). "Channel Routing Memories". Archived from the original on 2021-05-18. Retrieved 2022-01-01.
- (PDF) from the original on 2018-10-22. Retrieved 2018-10-22.
- ^ Webb, Darrell (2012-12-20). "A Tribute to Alan Finch, the Father of Gridless Autorouting". Archived from the original on 2018-10-22. Retrieved 2018-10-22.
- S2CID 3357923. Archived from the original(PDF) on 2018-10-22. Retrieved 2018-10-22.
- ^ "Computer-Partner Kiel GmbH: "Bloodhound" entflechtet Leiterplatten auf 16 Lagen". Computerwoche (in German). 1992-03-13. Archived from the original on 2018-10-21. Retrieved 2018-10-20.
- EDN Network. Archivedfrom the original on 2018-10-21. Retrieved 2018-10-20.
- ^ a b Redlich, Detlef. "1.6. Rechnergestützter Leiterplattenentwurf - Entflechtung" (PDF). Schaltungsdesign (in German). Ernst-Abbe-Hochschule Jena (EAH). Archived from the original (PDF) on 2018-10-21. Retrieved 2018-10-20.
- ^ "Simplify Design Automation – the next generation in design methodology".
- IEEE Press. pp. 481–489.
- ^ Rubin, Frank (1974). "An iterative technique for printed wire routing". Proceedings 11th Design Automation Workshop. pp. 308–13.
- .
Further reading
- Scheffer, Louis K.; Lavagno, Luciano; Martin, Grant (2006). "Chapter 8: Routing". Electronic Design Automation For Integrated Circuits Handbook. Vol. II. Boca Raton, FL, USA: ISBN 978-0-8493-3096-4.