(2012/07/23 edit: thanks to Graham and Dams for their precious remarks, this post has been updated with some additional infos)

First of all, let's emphasize the fact that this blog post is entirely based on my experience only. Therefore, it will be purely subjective even if I'll try to define objective grading criterias for schematics/PCB tools ;-) .
It will also cover a very small portion of what these softwares can do, as I want to focus on the features you usually use the most.
To plant the background, I've already routed 30+ PCBs on Cadence Allegro, some of them being 6 layers. On Altium Designer, I think I've only routed 5 or 6 PCBs, all 4 layers.

First, I'll explain here my personal definition of a good software, starting with the schematics part.
Well, a schematics editor is usually not that complex. You trace wires, add some net labels, off-page connectors... basic things. However, things may get a bit trickier when it comes to adding your own components.
IMHO, a schematics software should provide an easy way to draw your parts, and a clear way to manage your component library, to stay organized. The rest (mutiple netlists, multiple properties, pin properties) are just a 'plus' in my opinion. If you are thorough, if you know what you're doing and if you have a clearly defined way of proceeding when doing every single project... well you may choose to not even use them, choosing your own personal method to do without.
A friend of mine is a big fan of Design Rule Checking (DRC) that may warn you from stupid mistakes you may have done (wrong connections, unconnected pins...). Well, I've never done any mistake that could have been prevented by using it, so I'll remain skeptical.
As for the whole 'I have a huge pre-existing component library' argument... well I don't buy it. It never takes me more than 3 minutes to draw my own parts, and even if the software already had the part I would spend one minute checking it (right package, right pinout, etc etc...).

However, I am way more demanding when it comes to the PCB part.
A PCB routing software should be easy to use (o rly?). To define that subjective criteria, I'd like to propose here a simple 'easiness measurement metric' defined as number of clicks + number of keystrokes + mouse moving distance to perform a given function.
Why? Well because a good portion of the time you spend routing your PCB (time is money) is the time taken to perform simple actions. When you have to click 5 times, move the mouse 5cm to the right and 4cm to the left to do a simple thing, and you have to do this simple thing one hundred times on your PCB... it can get pretty long and frustrating.
Obviously you can design your own keystrokes for some (but not all) of the software functions. On Altium, it is actually very easy (either hold Ctrl + double click on the function you want to assign a shortcut to, or go to DXP > Customize).

A PCB routing software should have all these neat little functionalities that make visualizing your schematics from the layout in front of you easier. Obviously, having 2 screens when routing a PCB is for me a must.
I actually have three screens at home (two horizontal and one vertical) in this configuration: schematics > pcb > datasheets (and chats ;-) ).

The software should also provide utilities to display only what you need on the screen, and no extra stuff that would mess with your brain processing. Things should be clear, simple.
For example, why is Altium requiring me to display the layer I want to put a trace on?. If I just want to make a simple strap and I know there is nothing on the other layers, I really don't need to spend time switching views...

As for the schematics part, database management is also a very important part of the PCB software. I personally want to be sure where all my components are located.
On this topic, Altium and Allegro do things differently: Altium has a single file containing all the footprints of a given library, whereas Allegro create a single file for every component and pad. Being a maniac and a perfectionist, I prefer the Allegro way.

So let's start the comparison.

Allegro vs Cadence

First, you have to know that I've followed a eagle > allegro > altium > soon cadstar trajectory. So I am/may be biased :-D .
As I didn't find any huge difference between Cadence Capture & Altium schematics tools, I choose to only focus on the PCB part. In my opinion, this is the part where there is a real difference between the two software suites.

The visual aspect

Let's set the scene. You're about to spend several days on a very complex task that is going to use all of your brain (well, only if you have size and cost constraints obviously). You'll be spending all this time looking at your screen and your eyes will inevitably get tired.
I personally set all my PCB softwares background black and work in a low light environment. I find it quite resting and allows me to relax.
I need to be able to identify my schematics nets quite easily. Altium directly display the net names on the traces and component pads.

While on Allegro you need to leave your mouse on the component/net/pad/trace to know what it is.

I actually think that both methods are good, as I always color my power lines because I route them last. Concerning the high speed signals, I usually route them first so I really don't need to be reminded all the time where they are.
This is where Altium and Allegro differs: net colouring. For Allegro, it is quite easy: pick the tool, choose the color and apply it to the net. This net will then have its color completely changed.
When you do the same on Altium, on a zoomed out view it looks the same:

But when you zoom in, things look quite different:

Edit: this can be changed by going in the DXP > preferences > PCB editor > Board insight color overrides menu.
Most of the time, I only display one layer at a time when routing. On a 4 layers PCB, first layer is for signals, second for GND, third for power supplies and the last for the remaining signals. On a 6 layers PCB, the 2 additional layers are usually dedicated for vertical / horizontal buses.
As a general rule, you want to optimize as much as you can your first layer use.

Anyway, both softwares provide a 3D view of your circuit, useful when creating your enclosure box.
On Altium, you can even route in 3D, but I seriously think it is pointless. By the way, Altium 3D view is much better than Allegro's.


I also fail to see the point of having a nice 3D view, except to attract clients with shiny pictures displaying your know-how. A rough 3D model of your board is more than enough for the mechanical guys ;-) .

The views

I always create personallized views of the PCB i'm working on.
Sometimes I just want to display the board copper in order to maximize the space between the traces, and sometimes I just want to display copper + packages keepouts to put all the components as close to each other as I can.
On Altium, the 'easiness metric' result for this function is way higher than in Allegro. You need to click on the bottom left of the page, click on the top left of the popup window to select the view, and finally click on the bottom right on OK.
In Allegro, things are much easier:

This panel on the bottom right of your screen allows you to switch on the fly between your stored views (.color files) and the generated gerber views. How cool is that.
And if you don't want to use this little menu, you can also click on the little boxes to choose what you want to display.

The filters

The what?
Let me explain here. You usually don't want your PCB software to behave the same way throughout the entire routing process. Sometimes you may want to only move/stretch/ripup/delete traces, sometimes components, etc etc...
On Allegro, you have this very neat little panel on your right that allows you to apply a filter:

This way, you'll only be able to click on the filtered elements. This allows faster mouse movements as you don't need fine mouse control and thus provides you a better routing performance.
On Altium, it is +/- inexistant, as it has a smarter filter tool that allows you to build queries to select/modify parts of your design.
Great if you want to spend a few minutes building your query (depending on how long you have been using Altium).

Let's talk about how you know what you're going to click on.
Allegro higlights the element it thinks you want to select. Simple and logic right? However, it may require you to do some fine mouse movements to precisely point to the right element.
Altium asks you every time what you want to select if there's more than one element around your mouse. This leads to this:

So my mouse is right in the middle of the via, i'm double clicking, and this pops up every f*cking single time.
Master, do you want to choose the via, the part, or one of the two traces around it? Major facepalm here.
One additional thing that may be useful: the ability on Allegro to quickly switch the way you move your parts: either pick it up from symbol origin or from the user pick.
That means choosing between one or two clicks to move your component. Sounds stupid, right? Well, very useful to do either fine or coarse positioning.

The debug

Ok, this blog post is becoming weirder and weirder
I don't know if this already happened to you, but sometimes I fear that the software has done something to my routing and I have no idea what.
I also like to see what the software understands for everything that I do.
Allegro has just the thing:

Yes, a console. You can even enter your own commands in it! Redefining keystrokes on the fly, seeing debug messages... it is actually perfect for a geek like me.

Putting traces on your board

Altium and Allegro have two complete approaches here as well.
Allegro checks that each end of any trace is properly centered on the destination pin/pad. while Altium just checks that the copper is just touching it.
In my opinion, this encourages easy routing and neglecting proper connections. But it is not that important anyway.
Let's talk about Altium's stretching algorithm.
Let's say you have this via:

And you want to strech it to the left:

(Edit) By default, it is quite annoying.
Luckily, this can be changed by going to DXP > Preferences > PCB Editor > Interactive Routing > Set "Routing Gloss Effort" to Strong.
Allegro has the correct behavior by default.

Something I also wanted to show you. As I told you, I only display one layer when routing in Allegro:


Let's say I want to add a via in the center and I have no idea what's under:

Not only Allegro shows the bottom trace I'm disturbing, but it is also doing the proper changes to it. Nice feature right? (I swear I'm not sponsoring Allegro here).

The conclusion

There ain't any.
As I told you, this is my personal opinion only and I'm sure that if you have actually read this post ;-) you'll understand what I prefer.
People route in many different ways and I'm not saying mine is the right one.
For information, I have been told that Allegro's license is currently cheaper than Altium's.
It is also worth mentionning that this article is a bit useless if you aren't an entrepreneur... when you come to your job, I don't think you have a choice on the tool you're gonna use :-D (well, except at mine!).

(2012/07/24) The conclusion of the conlusion

After being featured in Hackaday this post has created a lot of reactions.
First, thanks a lot to all the people that pointed out the details I didn't know about.
Obviously, I have a better knowledge of Allegro than of Altium. So I could say more things about what Allegro had that Altium hadn't rather than the other way around.
However, I think that everyone will agree if I say that both software suites are comparable in the sense that there are no important tools that are missing in one or another. It's a matter of preferences.
Still, there are a few things that will make me prefer Allegro: smarter rat enabling, better debugging, user component placement when going from the schematics to the PCB, faster filters, absence of this annoying popup window ;-) .

That's all folks!