Hard time routing differential pairs

I am having a hard time routing differential pairs. One of the reasons might be that I am not quite used to doing complex boards like this.

Some of my issues are:

  1. Routing is not flowing smoothly, it looks like something is freezing every turn I make.

  2. Most of the time, wires don’t connect to the end pins in good shape when using Shove mode.
    image

  3. They also don’t connect when using Highlight Collisions mode.

  4. Then, connecting a pair of DF from the end to a via, does not work either.

I am not sure if I am making something wrong of what is going on here.

Do you guys have any clue?

Hi,

unfortunately, I have a hard time routing differential pairs, too.

For me, it helps to set the grid to the smallest possible option and then try to route them. I try to always route away from the pads, else you get an ugly routing like in your first picture. But connecting both pairs together is then the hard part.

Sometimes I got so frustrated, that I route two single traces together, but I only have PCIe 1.0 and Gigabit Ethernet on my board. For faster signals, that may not work.

So, in the end I always get a differential pair, but it isn’t a smooth process.

EDIT: I think the “freezing”, which I also see, comes from the DRC while routing.

I have not used differential pairs in real projects, but only in short tests for forum posts and the algorithm does seem sub-optimal :slight_smile:

Same problem here. I eventually gave up and routed both signals separately, adjusting the length afterwards.

The differential pair router has quite a big problem in connecting two ends of a wire. I usually have to fight and be very cautious to not set a fixed part of the pair I route at this moment to the point where it should be connected. If the distance between the last set point and the connection point is big enough the router normally is able to connect both, at least for me. What also helps is to make sure the last fixed point is centered on the same x/y coordinate as the connection point.

This is why feature requests to implement simultaneous routing of multiple signals make me laugh. Not because of the request, which is sensible…

Well, I can only say “mea culpa”, the diff pair mode in the router is quirky as hell. Hope I’ll be able to fix some of these issues for the V7.

Tom

3 Likes

Anyways thx for your work so far and looking forward to improvements :wink:

Making turns with differential pairs is hard since maybe DRC is not allowing us to place them in that specific place/position/shape, but we don’t have much visual feedback from the router on that, I feel.

Also, the same happens with placing differential pair vias. Sometimes is quite hard to place them since, for some reason, they are not being allowed, and the feedback to the user is not quite communicative.

I came up with this approach using 3 steps, similar to what @Tojan said.

  1. I route differential the pair (6) close to the pins, but not too close, and then I place the vias (v).

  2. After I route from the pins to the vias, ending before trying to connect them. Them I route using single traces (x) from this end to the via.

  3. And then I can have a better shape of the wire.

Here are some tweaks that may be useful for some.

  • To have more balanced traces in the end, vias can be moved centralizing vertically (in this case) with the pads before steps #1 and #2

  • Vias can be moved close to the pins, before step #2, by removing the 2 last sections of the red traces since they were routed using single trace mode (x). Blue traces have to be increased too.

I thought it could come from the complexity of the board. But DRC does not help too since it is closely related.

Do you have an idea if is it possible to improve this? Is it possible to disable DRC while routing differential pair traces?

That would be awesome, Tom @twl.

This is the result of this process.

By default differential, pair vias cannot be placed this close to the pads for some reason.

Actually, here I could place them quite close.

I have done some differential routing. It is not too easy perhaps because I don’t know all the settings which could make this easier. Corner mode is one problem, if the rule allows only 45 degree corners, and so on. Making turns is not easy either, I get extra kinks by accident but corners do not always come where I want.

Sometimes I think my machine is too slow, when everything seems to freeze. Sometimes it help if I click to show to the router that I am happy so far.
Zooming closer sometimes helps too with connecting ends. And sometimes I just do “the last mile” by hand for each track separately.
You need plenty of room to get vias and really for the whole differential pair.
I do not have any clear advise, except practise/trial and error. There seems to be some helpful settings which are not on on default.

Thanks, @LM21 It looks like you are having the same issues as we do.

Now, the computer I am using is not that bad and it is quite recent too. Just for reference, it is a Dell XPS 15, 9510 with i9, 32 GB RAM.

Have you noticed that sometimes differential route wire are in opposite order. Like if pad has p on top and your route has p lower wire of the pair.

Do you mean, the rastnets are switched? I saw some pairs switched but it is normal, I think. It depends on the IC, I think. Or if you are using custom symbols/footprints you may check if the pins on both matches. And also check if you are not connecting them wrong.

Maybe I could reproduce what you said.

See these two blue rastnests on the left?

If the “Show rastsnest with curved lines” is selected, then they appear like this:

It confuses a bit, indeed if the zoom is close enough, if maybe be always the case.

Another interesting fact is that I saw I could pain ratsnest. Then I made this group blue. Like the ones above. But when you are routing DifPais they have to appear Blue and Red, if they appear both the same color, for me, Blue, then it looks like something is wrong in that traces… it is better to remove it and start again.

Ah, maybe the second thing that may be related to what you said @LM21 is that sometimes when I start routing from let’s say _P trace, then it does not end when I connect a pad with _P. But instead ends when I click the pad with _N.

KiCad has has gone too far with this curved lines. For instance tracks could be be smooth, but I curved tracks which look funny.

I wonder if it is from Schematic? I have done all kinds of routing errors but usually some tool complains about them.