One of the most time consuming phases of board design is routing the nets. While the rules system handles the design constraints, such as the widths, via sizes, clearances, and so on, it is down to the designer to place the many thousands of track segments required to fully route a board.
Autorouters can ease this pain, but are generally regarded as inadequate, because:
- They fail to correctly consider the myriad of subtle design constraints that a human designer instinctively applies as they route.
- They take so long to fully configure that it is often more efficient to simply get on with routing the board interactively.
- The cleanup can be such a long and difficult process that it is often more efficient to route the board interactively.
The holy grail of PCB routing is to quickly produce high quality results, that meet the design rules, under the control of the designer. This is the challenge that ActiveRoute sets out to achieve.
What is ActiveRoute?
ActiveRoute is an automated interactive routing technology that delivers efficient multi-net routing algorithms, applied to the specific nets or connections selected by the designer. ActiveRoute also allows the designer to interactively define a route path or Guide, which then defines the river along which the new routes will flow.
Key ActiveRoute features
The key ActiveRoute features that make this approach significantly better than a combination of regular interactive routing and auto routing, include:
- Automatic optimization of the escape routes out of pin/via arrays - the most time consuming aspect of manual routing.
- High performance - signal nets routed < 1 second each.
- Obeys design rules for width, clearance, layers, topology & rooms by net and net class, observing priorities.
- Routes on multiple layers simultaneously and distributes the routes across those layers.
- An intuitive Route Guide that the designer can use to direct the placement of routes.
- Uses a River Route approach to give high completion rates without the need for vias.
- Able to route through polygon planes and re-pour them (if the re-pour option is enabled).
- Supports both single-ended and differential pair nets.
- Finishes with a powerful glossing tool that further reduces the number of corners and improves the overall look of the routing.
What ActiveRoute is Not
ActiveRoute is not an autorouter, it is a guided interactive router which focuses on clean, high-quality routing of a set of selected nets. Use ActiveRoute in the same way as you would approach the interactive routing task - choose the nets of interest, enable the layers you would like those nets routed on, think about the path they should follow, and route them.
If you select all of the nets on the board and ActiveRoute them, it is likely that you will be disappointed - ActiveRoute is not an autorouter, it cannot place vias and does not include power net routing strategies.
Setting up to ActiveRoute
1. Create net classes
ActiveRoute requires the nets to be selected, having net classes can greatly assist in the selection process when there is a high number of nets to be ActiveRouted. Refer to the Selection Techniques section later in this article to learn more about the best ways to select connections.
2. Shelve existing polygons
ActiveRoute can route through existing polygons if the Repour Polygons after Modification option is enabled in the PCB Editor - General page of the Preferences dialog. Alternatively, polygons can be shelved (made invisible, but retained in the design), using the Tools » Polygon Pours » Shelve Polygons command.
3. Configure the design rules
- Clearances – ActiveRoute obeys the applicable clearance design rules, applying them in order of their priority.
- Routing Widths – It uses the Preferred setting of the applicable width rules. As with interactive routing, to change widths in an area, for example when the route passes under a BGA, define a Room which applies a width design rule with a narrower Preferred width. If you can’t route it manually with the preferred width, ActiveRoute can’t either.
- Diff Pairs – ActiveRoute can route differential pairs. Ensure that the diff pairs are correctly defined (check in the Differential Pairs Editor mode of the PCB panel), and confirm that the Differential Pairs Routing rule(s) are correctly configured (Preferred values are used).
- Pad Entry – ActiveRoute attempts to use the most direct path in/out of a pad that obeys rules, without creating acute angles. It obeys the SMT to Corner and SMT Pad Entry rules, but does not always center the track in the pad (as the Interactive Router does when the SMT to Corner rule is enabled). It includes special algorithms for differential pair pads, focusing on pair coupling while maintaining neatness.
4. Configure the net topology
ActiveRoute will follow the pattern of the connection lines. If you have a set of nets that need a specific topology, for example a DDR3/4 fly-by, you can define the from-to order using xSignals. The xSignal Wizard (Design » xSignals » Run xSignals Wizard) can create xSignals for designs that include DDR3/4 and USB 3.0 -type signaling. Alternatively, point-to-point connection line patterns can be defined for a net by creating From-Tos, in the From-To Editor mode of the PCB panel.
5. Fanout the design
ActiveRoute does not place vias, so you must create fanouts for BGAs, connectors, and discrete components that use SMT pins (except for those pins to be routed on outer layers).
6. Route the power and ground
ActiveRoute is for signal nets, it ignores nets assigned to power planes, and nets that contain more than 20 pins (these are assumed to be power nets). If you want to use ActiveRoute on a previously completed design, delete the signal routes, but keep the power and ground routing, and the fanouts.
7. Enable the required routing layers
Enable the required routing layers in the PCB ActiveRoute panel, more on this below.
ActiveRoute has access to the new Gloss feature (Route » Gloss Selected), which it runs automatically as part of the ActiveRoute process.
The most common reason for ActiveRoute to fail is not enough room for the track(s) to fit – it is important to make sure the width and clearance rules are correctly configured.
Selection Techniques
ActiveRoute needs to know which connections/nets you want to route - you do this by selecting them. Connection lines can be selected directly, or you can select an existing route object, such as a pin, track, via or component, to indicate which connections/nets you want to ActiveRoute.
Use the following key/mouse combinations to select the required objects:
Select Within or Select Touching?
In Altium Designer, selection can either be objects that are Within the selection rectangle, or Touching the selection rectangle. This is controlled by the direction you move the mouse as you draw the selection rectangle:
|
Select Within - click and drag a blue rectangle from Left to Right to select all visible, unlocked objects that are completely within the selection rectangle. |
|
Select Touching - click and drag a green rectangle from Right to Left to select all visible, unlocked objects that touch the selection rectangle. |
Selected nets are routed at the Preferred width defined in the applicable Routing Width design rule. There is one exception to this, if the selected object is a dangling track stub, then that width is used.
Use the selection techniques to quickly select connections for routing, or deletion.
Performing an ActiveRoute
To perform an ActiveRoute:
1. Select the connection(s) to be routed
Using the techniques described above, select the connections/nets to be routed.
2. Enable the layers to ActiveRoute on
In the PCB ActiveRoute panel, enable the layer(s) that the selected connections are to be routed on. ActiveRoute will distribute the routes across these layers.
If no layer is selected, then it will route on the Active Layer, which is the selected tab at the bottom of the main PCB editor window.
The PCB ActiveRoute panel allows you to select which layers to route on, create a Route Guide, and to start ActiveRoute.
The PCB ActiveRoute panel can be opened like any other PCB panel, and then docked as desired.
3. Define a Route Guide, if required
To place a Route Guide:
- Select the connections you would like routed along the Route Guide.
- Click the Route Guide button in the PCB ActiveRoute panel.
- The cursor will appear to be holding all of the selected connections, indicating that this set of connections must flow through the Guide. Move the cursor to a suitable start location, at either end of the path you wish to define.
- Click to define the start location of the Guide, allowing room for the incoming connections to flow into the curved end of the Guide.
- The Guide is placed as if it is a very wide track, move the cursor to the location of the first corner that the Guide must make, then click to define that corner.
- Continue this process of path definition, stopping some distance away from where the connection lines terminate, allowing room for the connections to flow out of the Guide to their target pads / vias / track ends.
- Press the Up Arrow key to widen the Guide, or the Down Arrow key to narrow the Guide.
- Press Backspace to rip up the last Guide corner.
- Right-click to drop out of Guide placement mode.
Only one Route Guide can be defined at any time.
A simple animation showing a Route Guide being placed, and interactively changing the width during placement.
Route Guide Width
The default width is the sum of the applicable width+clearance design rules for the selected connections, divided by the number of layers, multiplied by 1.3.
RouteGuideWidth = ((W+C)/#Layers)*1.3)
- The Guide is expanded by a default value of 1.3, to ensure the routes will fit and enable them to wrap around obstacles, like vias, in the way of the path. The width is a hard boundary for the routing, if the routes do not fit then they are not placed.
- During Guide placement, the width can be increased / decreased by pressing the Up / Down arrow keys on the keyboard. The minimum size uses a multiplier of 1.0, the maximum size uses a multiplier of 5.0.
Editing the Guide
The Route Guide is a set of tracks, placed on a mechanical layer.
- The track segments are locked by default, if you unlock them you can re-shape the Guide, using the standard track dragging techniques.
- To remove the Guide, click on any segment to select it, then press the Delete key.
4. Run ActiveRoute
To run ActiveRoute, you can:
- Select the Route » ActiveRoute command.
- Click the ActiveRoute toolbar button.
- Click the ActiveRoute button in the PCB ActiveRoute panel.
- Use the Shift+A shortcut.
5. Monitor the progress and check for feedback
- The PCB Editor's Status Bar show the ActiveRoute progress.
- The Messages panel reports on the completion rates.
Building Your Proficiency
- A key ingredient to ActiveRoute proficiency is becoming fluent with the shortcuts. The key sequences you will use most often are:
- Alt+Click - to select an individual connection line.
- Alt+Click&Drag - to select connections within an area, drag from right to left to select all touched connections, or left to right to only select what fits inside the selection rectangle. Press Tab to extend the selection to include other connections in the same net(s).
- Ctrl+Click&Drag - to select pads in a component, drag from right to left to select all touched pads, or left to right to only select what fits inside the selection rectangle. Press Tab to extend the selection to include other route objects in the same net(s). Keep pressing Tab to cycle through all possible selection states.
- Click&Drag - to select existing track segments, drag from right to left to select all touched tracks, or left to right to only select what fits inside the selection rectangle. Press Tab to extend the selection to include other route objects in the same net(s). Keep pressing Tab to cycle through all possible selection states.
- Include Shift to retain the current selection, while performing another selection.
- Shift+A to ActiveRoute the current selection.
- Ctrl+Alt+G - to Gloss the current selection.
- Selection actions are only performed on objects that are visible:
- Press Shift+S to cycle in (out) of single layer mode, so only the layer of interest is showing.
- If the design uses placement rooms, these can be hidden to prevent them being selected/moved during Click&Drag actions, or if the room is locked, to stop them preventing the selection feature from working. Rooms are hidden in the Show / Hide tab of the View Configurations dialog.
- Fanout SMD pads. ActiveRoute does not change layers, so you will need to fanout SMD pads. To accelerate the fanout process:
- While routing a connection, press the / shortcut (numeric keypad) to drop a via and release this connection. Use the 2 shortcut if you don't have a numeric keypad (drops a via without suspending).
- Copy and paste an existing fanout, the PCB editor will automatically update the net names. This can be done for multiple fanouts.
- Preserve existing fanouts. ActiveRoute will modify fanouts if it sees a better solution, lock them if you do not want them changed. The easiest way to lock fanouts is to select the fanout tracks & vias, press F11 to open the PCB Inspector panel, and enable the Locked checkbox. This will lock all selected objects in a single action.
- If you use a Route Guide and find that the completion rate is low, it may be that there are too many obstacles along the path and the Guide needs to be wider. Press the Up arrow key to widen the Guide during placement.
- When ActiveRoute is finished, it automatically applies glossing (Route » Gloss Selected). The Gloss command can be used to smooth out tracks and improve the pad entries of any routing, not just ActiveRoutes. Particular attention has been applied to ensuring high-quality pad entries for differential pairs.
- If ActiveRoute does not work, it is usually because the rules are not properly configured. Check that the the rules are appropriate, for example the default rules that exist in a new PCB file might be too large for a high density BGA-type design.
- ActiveRoute observes the routing rules configured for widths, clearances, diff pair gaps, by layer, by room, and by class. ActiveRoute does not route with arcs or any-angle tracks.