Routing is the process of defining a connective path between the nodes in each net. This path is defined by placing PCB design objects – such as tracks, arcs and vias – on the copper layers, to create a continuous connection between the nodes. Rather than placing these objects one by one to build up the connective path, you interactively route the connection.
In the PCB editor, interactive routing is an intelligent process. After launching the command you click on a pad to select a connection to be routed, the interactive router then attempts to define a route path from that pad, all the way to the current cursor location.
The size of the track that is placed is controlled by the applicable routing width design rule and your current Track Width Mode setting. How the interactive router responds to existing objects, such as pads on other nets, depends on the current Routing Conflict Resolution mode. When it encounters an object, the Interactive Router handle this conflict by applying a Walkaround, Hug and Push, Push, Ignore, or Stop conflict resolution strategy.
Interactive routing can be performed on:
a single net - Place » Interactive Routing, or on
two nets defined as a differential pair - Place » Interactive Differential Pair Routing, or on
a set of selected nets - Place » Interactive Multi-Routing.
This article will explain the process of interactively routing a single net, and the settings that control that process. If you are looking for information on specialized routing techniques, such as differential pair or controlled impedance routing, refer to The Routing parent page.
Interactively Routing a Net
Below are some useful tips for interactive routing, a number of these are demonstrated in the animation below:
Run the Place » Interactive Routing command (P, T), then click on an object that has a net attribute, to start routing. This can be: a pad, a connection line, an existing via, a track end on a partially routed net, in fact any object that belongs to the net.
The PCB editor will jump to the nearest electrical object on that net, such as the center of a pad or the end of a track segment, and then attempt to define a route path from there to the current cursor location.
The ability of the Interactive Router to reach the current cursor location depends on the current Routing Conflict Resolution mode, which is displayed on the Status bar when the Interactive Routing command is running.
Press Shift+R to cycle through the available conflict resolution modes, you can configure which modes are available in the Interactive Routing page of the Preferences dialog.
If the mode is set to Walkaround, Push and Hug, or Push, the Interactive Router will attempt to find a path around and between existing objects, as shown in the animation below.
Potential route path segments are displayed as hatched (placed on next click), or hollow (the look-ahead segment, use this to work out where the previous segment should go).
Click the mouse button to place all hatched segments.
Press Spacebar to toggle the corner direction.
Press Shift+Spacebar to cycle through the available corner modes (learn more).
Press Backspace to rip up the last placed segment(s).
Ctrl+Click to instruct the interactive router to attempt to automatically complete the current route. If it does not auto-complete it does not mean the connection cannot be routed, it could be that the distance is too far, or it could be that the termination point is on another layer.
Press Shift+F1 to display a list of in-command shortcuts.
Interactively routing a connection, after launching the command and clicking on a connection line, the Interactive Router finds a path from the pad to the current cursor location, weaving
around existing objects. In this example the conflict resolution mode is Walkaround. A click of the mouse button will place all hatched track segments, Ctrl+Click to auto finish the route.
Press Shift+F1 while routing to display a menu of available in-command shortcuts - you can use the shortcut key strokes, or you can select a command from the menu.
An important part of understanding the interactive router is to first understand how connectivity is managed in the PCB Editor. Once the components have been placed into the PCB workspace connection lines are displayed, indicating which pads connect to each other in each net.
Connection lines are automatically created between each pad in the net, in accordance with the applicable Routing Topology rule (the default is Shortest).
In this design, the GND and 5V nets use a different color for their connection lines.
The arrangement, or pattern of the connection lines in a net is called the topology. The topology is defined by the applicable Routing Topology design rule, with the default rule targeting All nets and applying a topology of Shortest.
The PCB Editor includes a net analyzer that constantly monitors the location of all objects in the workspace, and updates the connection lines when any net-type object is edited (including an object being moved). For example, when a component is moved, the far end of each connection from that component can jump from one target pad to another target pad, as they updated to maintain the topology defined by the applicable design rule. An example of this is shown for the 3V3 net in the animation below, which has a topology of shortest.
Note how the 3V3 connection lines jump around as R7 is moved, automatically being rearranged to keep the shortest overall connection length.
The net analyzer monitors all the objects attached to a net, for example when a connection is routed, the connection line between those 2 pads is automatically removed by the net analyzer. Or if a net is partially routed, then a shorter connection line will be displayed between the two closest route points on the net.
It does not matter if you choose to ignore the connection line and route the net from/to a different location, as soon as routing is terminated the net analyzer runs, and removes the connection line if it is no longer required, as shown in the animation below.
Even though the connection line connects the pad centers, you are free to route wherever you choose.
The net analyzer constantly monitors the routing progress and updates the connection line.
Because the arrangement of connection lines is determined by the routing topology design rule, it is possible that the connection line will not attach to the end of the track, instead attaching to some other point in the net that is closer to another point in the net. If preferred, connection lines can be forced to the track ends by enabling the Smart Track Ends option in the PCB Editing – General page of the Preferences dialog. The animation below demonstrates this. Note that you can force the net analyzer to run and update the connection lines by performing an action that the software sees as you editing an object belonging to that net. Edit actions include: moving an object, clicking and holding on an object, or double clicking to open that object's properties dialog.
Note how the GND net connection line is attached to pad 1 instead of the end of the route, once
Smart Track Ends has been enabled and an edit performed, the connection line jumps to the end of the route.
To learn more about how the connectivity is created in the schematic, refer to the Creating Connectivity article.
Finding a Net and Controlling the Color of the Connection Lines
An unrouted board can appear intimidating - a mass of connection lines crisscrossing all over the board. A good approach to routing is to work from the schematic, where you can easily locate important components and critical nets. You can cross-select and cross-probe directly from the schematic components and nets, highlighting the equivalent item on the PCB. To learn more, refer to the Working Between the Schematic and the Board article.
You can also control the display of the connection lines by masking or hiding the nets you are not interested in. Setting the color of important connection lines will also help you manage the routing process. Refer to the Finding a Net on the Board section of The Routing article to learn more.
In the PCB panel, right-click on selected nets to change the color of their connection lines.
Controlling the Routing Width and Via Size as you Route
When you run the Interactive Routing command and click to start routing, a series of track objects are created from the nearest pad up to the current cursor location. The width of these tracks is determined by the current Track Width Mode setting, which is displayed on the status bar during routing.
There a four possible Routing Width Source settings:
The selection of User Choice / Min rule / Preferred rule / Max rule is stored in, and can be selected using, the Track Width Mode dropdown in the PCB Editor - Interactive Routing page of the Preferences dialog, as shown in the adjacent image.
Changing the Track Width Mode While Routing
You can cycle through the 4 routing width options by pressing the 3 shortcut key during interactive routing. The current mode is displayed on the Status bar. If you forget any of the in-command shortcuts, press Shift+F1 to display a list while running the command.
To change the track width source while routing, press the 3 key on the keyboard.
When you change the track width mode, you move between the values defined in the applicable design rule (min/preferred/max), and user choice.
If you select User Choice, the track width will be:
the width of existing routing, if the Pickup Track Width from Existing Routing option is enabled, and the click location is on existing routing, or
the last-used, user-choice width, if it falls within the the range defined by the applicable rule for the net you are routing. If it does not, the width will be clipped to the nearest value that is within the range allowed by the rule.
Changing the User Choice Routing Width while Routing
To change the width while routing, the following shortcuts are used. Note that if the Interactive Routing Width Sources options were set to one of the Rule-based width options, that option is changed to User Choice whenever one of these shortcuts is used.
Shift+W - use this shortcut during routing to pop up the Choose Width dialog. Click on a new width to close the dialog and continue routing at the chosen width. Available widths can be edited by clicking the Favorite Interactive Routing Widths button in the PCB Editor - Interactive Routing page of the Preferences dialog.
Tab - use this shortcut if the required width is not defined as a favorite. Pressing Tab will pop up the Interactive Routing for Net dialog, as shown further down the page. The dialog opens with the current width selected, simply type in a new value and press Enter to close the dialog and continue routing at the new width.
Remember, if you use one of these techniques to change the width during routing, the Track Width Mode is automatically changed to User Choice.
The routing track width must be between the minimum and maximum values specified in the applicable Routing Width design rule. If you attempt to change the width to a value that is outside the range defined by the rule's Minimum and Maximum settings, the software will automatically clip it back to within Min-Max range.
Changing Layers and adding a Via while Routing
There are two approaches to interactively change layers during routing:
Press the * key on the numeric keypad. Each press of that key will move you down to the next available signal layer.
Use the Ctrl+Shift+Wheel Scroll shortcut combination. Hold Ctrl+Shift, then scroll the mouse wheel forwards to move down through the available signal layers, scroll the mouse wheel backwards to move up through the available signal layers. Note that this shortcut can be used at any time to change layers, if you are not currently routing then this shortcut combination will step through all enabled layers.
A via is automatically added at the last corner, where the last hatched segment meets the hollow look-ahead segment. As with the routing width, the size of the via is determined by the current Via Size Mode selected in the Interactive Routing Width Sources options, as shown in the animation below.
Use the Ctrl+Shift+Scroll shortcut to change layers, and the 4 shortcut to cycle through the via size choices.
Changing the Via Size Mode while Routing
As with the routing width, there are 4 possible via sizes that the software can select from during interactive routing:
the designer's preferred via size (User Choice); or
the applicable Routing Via Style design rule - you choose between the minimum, preferred, or maximum values.
You can cycle through the 4 via size options by pressing the 4 shortcut key during interactive routing. The current mode is displayed toward the right-hand end of the Status bar, as shown in the animation above.
Changing the User Choice Via Size while Routing
As well as changing the track width during routing, when you press Tab to open the Interactive Routing for Net dialog, you can also change the via size. As with the track width, the size you enter must be between the minimum and maximum values defined in the applicable Routing Via Style design rule.
Press Tab to edit the routing width and via size while routing.
Automatically Changing the Routing Width as You Route
A common challenge with modern component technology is needing to route a net at different widths as you route across the board. For example, routing into or out of a BGA will often require narrower escape routes, switching to the preferred width at the edge of the BGA footprint.
This can be achieved manually during interactive routing, using the techniques described earlier on this page. You can also automate this width-switching behavior, by adding a placement room and a room-based routing width rule. Once this has been done, tracks will automatically neck and expand as the room is entered or exited.
The feature works by:
Defining a Placement Room rule for the region of the board that requires narrower routes.
Defining a Width Constraint rule, of a higher priority, that defines the width of the routes within the room. This rule will use the TouchesRoom scope, as discussed below.
Once this has been done, the width will change automatically as you route into, or out of, the placement room, as shown in the animations below.
Width rules are obeyed, and track segments are intelligently sized as the room boundary is crossed.
Room-based routing requires a placement room to be defined first. A placement room is also design rule. While you can create the rule and then define the room from the design rule dialog, it can be more efficient to do it the other way around, interactively create the room and Altium Designer creates the design rule for you.
Creating the Room Rule
The Design » Rooms submenu has a number of room definition commands.
Rooms are a useful feature for controlling where components are placed, and also for controlling what rules are applied within that area of the board.
A room created around selected components will result in the following:
A Component Class of the selected components is created. Review the class (Design » Classes) and update the Component Class Name as you require.
A Placement Room Definition design rule is created. The rule is scoped to target the Component Class created in step 1, if you changed the Component Class name then the rule scope (Full Query) must be updated to match.
The Placement Room Definition design rule is also automatically named. Update the name as required and take note of the name, because the room will be referenced in other design rules by its Name.
If required, resize the room. To do this, click once to select it, then click and hold on a vertex to move a corner or an edge. After clicking on a vertex to move it, you can also press Shift to perform a symmetrical resize.
In this example the rule has been scoped to target a specific BGA footprint ('BGA50P18X18-180'), rather than a component class.
A Placement Room Definition design rule is normally scoped to target one or more components. In this situation, where it is ultimately being used to control the routing within the area defined by the room, you do not actually have to scope it to target specific components. For example, the scope of the rule (Full Query) could be set to All, and the routing would still behave as required. The advantage of scoping it to target the component(s) within it, is that if the component(s) need to be moved, then the Design » Rooms » Move Room command can be used to move the room and the components together.
Creating the Room-based Routing Rule
Once the room has been defined, the routing width rule can then be defined. The image below show an example of a Routing Width rule that is scoped to instruct Altium Designer to set the routing width to 0.075mm whenever the routing touches the room named Room_BGA. Altium Designer's interactive routing engine will automatically terminate the current track segment and start a new segment at the room boundary, to satisfy a rule such as this.
A Routing Width design rule scoped to set the width of all nets to 0.075mm within the room Room_BGA. Note that this rule appears first in the tree, indicating that it is the highest priority routing width rule.
The Routing Conflict Resolution Mode
As mentioned, how the interactive router responds to objects already in the PCB workspace, such as pads on other nets, depends on the current Routing Conflict Resolution mode. Configure which conflict resolution modes are available during routing in the PCB Editor - Interactive Routing page of the Preferences dialog.
Conflict resolution modes include:
Ignore Obstacles – ignore existing objects (routing can be freely placed). Violations are highlighted.
Push Obstacles – push existing tracks and vias to make room for the new route.
Walkaround Obstacles – attempt to find a path around existing objects. The clearance to other objects is defined by the applicable Clearance design rule.
Stop At First Obstacle – in this mode the routing engine will stop at the first obstacle that gets in the way.
Hug And Push Obstacles – in this mode the routing engine will closely follow existing objects, and only push them when there is insufficient room for the track being routed.
AutoRoute on Current Layer – this mode applies autorouter intelligence to the interactive router, automatically selecting between pushing and walking around, to give the shortest overall route length.
AutoRoute on Multiple Layers – this mode also applies autorouter intelligence to the interactive router, automatically selecting between pushing, walking around or switching layers, to give the shortest overall route length.
The current Conflict Resolution mode is displayed on the Status bar at the bottom of Altium Designer. Use the Shift+R shortcut keys to cycle through the available modes during interactive routing.
Other Interactive Routing Options and Features
There are a number of other options for the interactive router that are configured in the PCB Editor - Interactive Routing page of the Preferences dialog. It is important to understand the role of these options to get the maximum benefit from the Interactive Router.
Restrict to 90/45
Pressing Shift+Spacebar cycles through the available routing corner modes, which include arc and any angle modes. If these modes are not required, enable the Restrict to 90/45 option to limit corners to 90 or 45 degrees.
Follow Mouse Trail
If this option is enabled the route path tends to follow the path drawn with the cursor.
Automatically Terminate Routing
Enable this option to automatically drop the current net when the target pad is reached. If this option is not enabled, use the Right Mouse button or Esc key to drop the current connection (typically this option is enabled).
Automatically Remove Loops
An existing route path can be redefined by simply routing a new path. Start interactively routing anywhere along the existing route path, route the new path, returning to meet the old path where required. As soon as the new path meets the existing path, all segments in the redundant loop are automatically removed if the Automatically Remove Loops option is enabled (typically this option is enabled).
To re-route, simple route the new path, when the new route comes back to meet the existing route a loop is created, Altium Designer will automatically remove this if Loop Removal is enabled.
Note that certain nets may require loops (multiple paths to the same point), such as a power or ground net. For these nets the Automatically Remove Loops feature can be selectively disabled, to do this double click on the net name in the PCB Panel (set the panel mode to Nets) to open the Edit Net dialog, where the Remove Loops option can be turned off for just that net.
Routing Gloss Effort
As the cursor is moved during interactive routing, the routing engine continually attempts to find the shortest path from the last click location, up to the current cursor location. How well it can smooth the routing and reduces the number corners is determined by the Routing Gloss Effort.
The current Routing Gloss Effort setting is displayed on the Status bar, use the Ctrl+Shift+G shortcuts to cycle the setting. Note that the stronger the setting, the fewer corners in the final route.
Glossing is a calculation intensive task that runs as in the background, it can affect the performance of the Interactive Router, particularly when routing multiple nets simultaneously. The stronger the Gloss setting, the more time it takes to perform the calculations.
Look Ahead Behavior
During interactive routing, for the net currently being routed the track segments are either displayed as hatched, or hollow (empty). All hatched segments are placed with the next mouse click.
The hollow segment is called the Look Ahead segment, its purpose it to allow the designer to plan ahead, that is, to consider where the next segment might be placed, without needing to commit to it. The Look Ahead mode is toggled on and off using the 1 shortcut key (while routing).
The hollow or empty segment is called the Look Ahead segment, use it to plan where future segments will be placed.
Press the 1 shortcut during routing to toggle the Look Ahead mode on and off.
Shortcuts available during Interactive Routing
* on the numeric keypad to switch to the next available routing layer, and insert a via.
Alternatively, hold Ctrl+Shift while scrolling the mouse wheel to cycle to the next available routing layer, and insert a via. Each mouse wheel click moves one layer.
Shift+R to cycle through the available routing conflict resolution modes.
Shift+Spacebar to cycle available corner modes (learn more). For the arc in corner options, use the , and . keyboard buttons to decrease or increase the arc size.
Spacebar toggles the direction of the last corner.
Backspace to rip up the last-placed segment(s).
Shift+W to pop up the Choose Width dialog and change the routing width.
Ctrl+Mouse Click to automatically complete the current connection.
Press Shift+F1 while routing to display the interactive routing shortcuts (or tilda (~)).
For a complete list of shortcuts for all of the editors, refer to the Shortcut Keys article.