Interactive routing

Routing a board, especially one bristling with high pin-count, dense component packages like BGAs, is not a trivial task.

And while we all dream of the ultimate autorouter – that’s the one that somehow transmutes that myriad of design and routing requirements in your head into a range of carefully scoped, suitable design rules, and then routes the board with the grace and flow of an Olympic ice skater… Ok, let’s just focus on interactive routing today.

Autorouters are useful and definitely have their place – for example autorouting the board and tidying up the results, or running test routes on an area of the board to see if it will be routable, or running a test route overnight to see if there are enough signal layers available – they are all useful techniques in helping you get your board routed.

That said, whatever your approach to routing the board, it will definitely include some of your hard-wrung hand routing. A modern board with dense component packages, fast switching speeds and critical timing requirements can demand tailored routing techniques such as controlled impedance routing, differential pair routing, matched lengths, and careful and selective use of layer pairs in a well designed layer stackup.

On top of that, routing is not a simple linear process of routing each net in turn. It is a complex, non-linear process of transforming a mass of connection lines (affectionately known as the ratsnest), into neat and orderly layers of routes – a process requiring constant re-working and adjusting of existing routes, as new routes are laid.

To achieve an optimal routing result, the design environment needs a broad range of tools and features that help you, as the designer, perform that sometimes imposing transformation task. With the winter 09 release, Altium Designer builds on its already impressive interactive routing capabilities by bringing all of the interactive routing tools together, in the one routing engine.

And why does that matter, you ask? Simple; by integrating all of the interactive tools in the one engine you get consistency – it doesn’t matter if you’re routing one net, a differential pair, or a bus, or even if you're dragging 16 routes to make room for more routing – the behavior in one is the same in all. You want those routes you’re dragging to push other routing, no problems. You want that bus to hug an existing route, no problems.

Routing is a broad and deep topic, with simply too much to cover in this short piece. Instead I’ll just touch on some of the more important aspects of routing, while discussing the behavior and capabilities of this powerful, single interactive routing engine.

Get the rules right

Design rules are king in board design, spending time setting them up will pay big dividends during the design process. As tempting as it might be, don’t be lazy and specify a single routing width design rule that covers all possible routing widths that will be needed for every net on the entire board. Here’s a simple test to ask yourself – can I route this net at any width within the range of the applicable width rule? If the answer is no, then add a rule that correctly covers that net. Using net classes helps make the rule definition process much more efficient.

Stack up those layers

Defining the layer stack for a modern board is something of a black art – not only do you need enough layers to route all the connections, good stackup design is essential to achieve optimal signal integrity and EMC/EMI performance from the finished board.

The layer stackup must factor in any impedance controlled routing requirements, as well as cater for the separation of quiet nets (such as data and clocks) from noisy nets (such as address lines), if necessary. Other important things to keep in mind:

  • Include a plane layer (power or ground) adjacent to each signal layer, to provide the best possible return paths for single-sided signals.
  • Route high speed signals on internal layers, to minimize radiation and control the impedance.
  • Pair and position power & ground planes in the stackup to give the thinnest possible core/prepreg layer between them, maximizing the capacitance between the planes.
  • Use thicker copper for plane layers to reduce resistance, if possible.

There are many industry experts and commentators you can consult about potential stackup definitions, including:

http://www.hottconsultants.com/tips.html

http://www.sigcon.com/pubsIndex.htm #layer stack

http://www.bethesignal.net/

http://www.freelists.org/archive/si-list/

http://www.pcbmatrix.com/Forum/

Where to begin…?

So where to begin routing? This question is a bit like asking ‘how long is a piece of string’, there is no single answer. Plan and route the power and ground nets first, especially those that can’t be carried on a plane layer. And be thoughtful about splitting a ground plane layer, this creates a discontinuity and increases the signal return path inductance for any signal net that crosses the split. To learn more about appropriate use of planes, read Tim Williams’ excellent article.

As for the signal nets, using a net-oriented focus you can start with the most important nets, such as clocks, differential pairs, nets with specific timing requirements, and so on. Using a placement-oriented focus, look for tight and congested areas first. Altium Designer includes an excellent fanout tool, so use it to fanout BGA and other high density surface mount packages. Run it via the Autoroute menu, or right click on a component to fanout just that component. To confirm that you have the clearance, width, and routing via style design rules suitably configured for fan out, try fanning out one net yourself first.

Read more about getting ready to route…

Routing a single net

In the early days of software-based board design, routing a net was a bit like building a brick wall, you placed one brick (track segment), then another, then another, and on and on (and on) it went, a slow and methodical process.

Routing in Altium Designer today is a completely different ball game. Now when you press those familiar P, T shortcut keys, click on a pad, and start to move the mouse, a continuous stream of segments will appear, snaking between the pad you clicked on and your cursor, as the software attempts to find a legitimate route path for this connection. You can guide the path by simply clicking to place the routing up to that point.

The router has numerous operating modes – how to deal with obstacles, if it should try to hug existing routes or minimize the overall route length, glossing effort (how hard it tries to remove kinks in the route), where the track width should be taken from, the list goes on. While you are actually routing press Shift+F1 to display a list of shortcuts you can use to switch between the various modes (or display the Shortcuts panel). The current configuration is displayed on the Status bar, or if you find that too crowded then enable the Heads Up Display.

A real time-saver is auto-complete, Ctrl+Click and the current connection is finished, if there is a path available on the current layer. Alternatively, P, T to start routing, then Ctrl+Click on a new connection – if it can be completely routed, it will! Don’t worry too much if there are small kinks that you don’t like, it can be faster to accept the route and tidy these up yourself.

Remember, like all the interactive routing features, Ctrl+Click also uses the current obstacle avoidance mode (that’s tech-talk for walkaround, or push and shove). Don’t be afraid to try it in push and shove mode, you’ll be surprised how well it can muscle and weave its way through a tight area.

Ctrl+Click to autocomplete the route, existing objects can be pushed and shoved to make room.

Read more about interactively routing a single net…

Who said re-routing was no fun?

If you think there’s something not right about the idea of having to modify the routing you’ve already done, you’re not the only one. That said, the reality is you cannot route a dense board without constantly re-tuning the existing routing. Altium Designer meets this retuning need in two distinctly different ways.

Loop removal – In case this term is new to you, in Altium Designer-speak this term means you can press P, T to start the interactive router, and then click on an existing route, click, click, click to define the new path, and as soon as you come back to meet the old route, any redundant track segments (that’s the old loop) are automatically removed. This technique is very handy for tidying up existing routing.

Route a new path, and the old loop is automatically removed.

Track dragging – When you have multiple routes you need to modify, you can just drag them all out of the way! Ctrl+Click and drag on any track to slide it to a new location, while keeping the joining segments all neat and tidy. Now that all interactive routing tools are in the one routing engine, dragging also supports push and shove, so by simply choosing the last route in a set you can easily drag them all to a new location. And since it also supports obstacle hopping, you can quickly work around existing pads and locked tracks. Experiment with which segment you grab, and try it with different snap grids – you’ll be really surprised how effective and efficient track dragging is.

Ctrl+Click and drag on a track segment, and push them all to a new location.

Read more about modifying existing routing…

Bus routing

Bus, or multi-net routing is very flexible in Altium Designer, with a bus simply meaning the set of nets you happen to have selected to route together. The trick to efficient multi-net routing is selecting the pads or track ends – using the Edit » Select » Touching Line command (S, L shortcuts) helps. Hold Ctrl as you draw the line to select the pads within a component, instead of the parent component. Switch routing layers in the same way you normally do, and press the 5 shortcut to cycle possible via patterns.

Complete the nets to their target pads using the Ctrl+Click autocomplete shortcut. If you find the nets will not autocomplete, check if you currently have a large number of unplaced segments from the cursor back to the starting location. If so place these first, then try to autocomplete.

Press the 5 shortcut to toggle the via pattern style, Ctrl+Click to finish all routes to their target pads.

Differential pairs

Since the same routing engine delivers all interactive routing in the winter 09 release, differential pair routing is now as flexible and fluid as single sided routing – hug existing routes, push and shove to work through a tight region, Shift+T to pin swap the pair, and Ctrl+Click to autocomplete the pair to their target pads.

Pin swapping can also be performed on a differential pair.

Read more about differential pair routing…

Length equalization

A standard technique for avoiding skew in timing-critical signals is to equalize their routed net lengths. Building on Altium Designer’s support for tuning the lengths of existing routes (Tools menu), is the ability to tune the length of a net as you route it. Press Shift+A while routing to enable the length equalization mode, then press Tab to open the Interactive Length Tuning dialog, where you can select how the target length is defined, and configure the length equalization accordion sections.

Press Shift+A to enable the interactive length equalization feature.

Read more about length equalization…

The good gets better

The greatest challenge for a software tool is to enhance your skills and abilities, without becoming heavy and onerous. Altium Designer’s improved interactive routing engine does just that, helping you route and re-route more efficiently and effectively, without demanding you slavishly follow a specific sequence, or learn different techniques to extract the best performance from each mode. If you remember Shift+F1 to display the shortcuts, the Status bar or Heads Up Display to track your current settings, and Ctrl+Click and drag to modify existing routing, you’re all set to actually enjoy interactively routing your board.