Intuitive interactive routing
Electronic product design is what makes me get out of bed and go to work in the morning – the challenge of taking a neat idea and transforming it into a great product. Even though I’ve been doing it for 15 years, I never seem to tire of it.

I’ve seen plenty of change over that time too, not so much with what makes up a product – it still has a processor, digital IO, analog IO, programmable logic, and the embedded code of course. The changes have been in how the functionality is divided up across those implementation options – bigger faster processors mean I can do more in code, and that’s always good at helping reduce costs and delivering in fewer development cycles. Programmable logic has also gone from simple PLDs being used for address decoding, to massive devices (in capacity that is, not physical size!) that can soak up as much of the digital hardware as I can squish into them.

Over the years I’ve ranged across all aspects of the design process, over time moving from the more external elements of the process, like the board layout, in towards the intelligence of the product – the system design and the embedded code.

Back to basics

I’ve just been asked to take our latest project right through to board layout myself, something I was unsure about. I always struggled with the tangled mass of connection lines when I designed boards all those years ago. I don’t think my brain is spatial enough to ‘see’ routing paths across and through the board.

And that was back in the days of DIP40 processors and 2-layer or 4-layer boards. This design has an FPGA in a 680 pad BGA package on an 8-layer board – this is going to be interesting!

I’m thinking that this might be a good time to try the new routing features I was reading about in the Summer 08 release of Altium Designer.

The changing demands of routing

The one thing I do remember from my board design days is that routing is more an art form than a mere mechanical join-the-dots process. Superficially, the task hasn’t changed over the last 15 years. I still have to route each connection from A to B, while complying with the design rules. What has changed is that the number of components has decreased, but they tend to have a lot more pins on them.

The end result? Fewer components, with more connections between them. So while I need to find fewer overall routing paths, those paths can have 10 or 20 routes running along them, instead of one or two.

The design I was working on was an update to an existing product – mostly changes to component package types for the FPGA and the memory. So once I’d unrouted and tweaked a few placements, I was ready to route. The usual quick read of the Altium Designer What’s New document said that routing was a whole lot better in Summer 08. Well, I’m the perfect person to test that claim, since I'm weak on skills and high on expectations!

Routing modern component packaging technologies is well supported in Summer 08.

A new approach to routing

In my distant routing past, the thing that I found most tedious was the fact that I had to place every single track segment. Talk about tedious, click, click, click, click, and then some more clicks, and that was only the first of the 935 connections. And then of course as soon as you started routing the last of those 10 parallel connections, you’d realize that you should have hugged the existing objects a bit more, so there was enough room for this last connection!

Well wasn’t I in for a surprise, with the new interactive routing engine in the Summer 08 release. Launched using the familiar P, T shortcuts, it has a number of intuitive routing behaviors that made the process much more efficient.

Walkaround behavior meant I did not need to pay close attention to the routing path – a click on a connection and then off I go, moving the cursor toward the target pad and watching the pattern of segments appear, all neat and orderly. A click of the mouse and all the segments from the start to the cursor were placed, and Backspace soon removed them if I decide to rip them up again. I really liked they way I could toggle between shortest and hug too, telling the router if I wanted it to keep it as tight and short as possible, or if I wanted it to trace alongside the existing routing I was following.

This is excellent. I get to focus on the high-order task of finding a path, while the software does the drudgery of positioning the numerous segments it takes to route that connection. And if I find that it starts to deviate from my preferred course, I simply back up a bit and click to place the segments exactly where I want them.

We’re off to a good start, me and Summer 08!

No need to click as you move the mouse, Summer 08 automatically finds a routing path.

To push or not to push

Keeping one eye on the Shortcuts panel, one on the status bar, and the other on the actual routing, I’m soon pressing Shift+R and exploring the different interactive routing modes.

Another idea I really like is having different push behaviors on offer. I see the traditional push behavior in action – when I bump up against existing routing the domino effect kicks in, and they all do a left shuffle. But my favorite is the not-so-pushy push mode, if I’ve got room then no one else moves – those existing routes just push right back! As soon as I hit a tight spot where I can’t fit, like against a pad, then the existing routing starts to oblige and shuffle over a bit. While their reluctance initially seemed almost rude it actually makes a lot of sense: no wild shuffling of 20 routing paths, unless it is absolutely necessary. This is exactly what I need. I then squeezed a forgotten connection between some finished routing, noticing how it pushed a couple of vias as well as the tracks.

I really was enjoying the routing process, and while there were plenty of options, I could easily explore them using the Shortcuts panel.

There’s one shortcut that I just have to tell you about though…Autocomplete, the reluctant router’s best friend has arrived. I’ve routed this connection most of the way across and through the board, the target pad is in sight, I just hold the Ctrl key as I click and bingo, the routing is finished from my current cursor position right up to the target pad – now that’s just great!

 

Autocomplete accelerates the interactive routing process.

 

Better tools to meet the growing demands

Sure, the basic task is the same: place tracks to route each connection. The nature of those routes has changed though: signal switching speeds mean that I have to treat the routing as part of the circuit now – no more assuming the connection is ideal.

Looks like Altium Designer has saved me on that front as well. The routing width design rule was already configured in this board to route impedance critical nets between 55 and 70 ohms, with 60 ohms being preferred. It was like magic, watching the track widths change as I toggled routing layers, the in-built impedance calculator doing its job behind the scenes. Another chore being looked after, another plus for the Summer 08 release of Altium Designer.

The Shortcuts panel details shortcuts available while routing.

A new fan of interactive routing

Actually, what really impresses me most about routing in the Summer 08 release of Altium Designer is the way the right things just happen. Sure, I had avoided some of the pain because the carefully thought-through design rules were already configured for this board. But when it came down to routing, Altium Designer seemed to answer my every need, with:

- full compliance with the completely configurable design rules
- rule-compliant automatic fanout commands, with escape routing on BGAs
- impedance controlled interactive routing
- intuitive interactive routing with walkaround
- push and shove interactive modes
- hugging while interactively routing
- interactive rerouting of existing paths with automatic loop removal
- the ability to drop a via and not change layers (great for fanning out)
- autocomplete
- the ability to slide one or many existing routes, keeping everything neat and tidy
and the list goes on...

With Altium Designer’s new intuitive interactive routing behavior, and the fact that it lets me keep my focus on the high-level aspects of routing, I was actually starting to get a feel for the process.

I’ve just noticed that some of the routing around the FPGA is not as clean and simple as it could be. Sure I could route it with the current FPGA pin assignments, but I think now’s a good time to explore Altium Designer’s excellent pin swap capabilities …

And who said routing a board wasn’t fun!

The interactively routed board.