Differential routing pair issues

I’m routing a differential pair for an USB connection. Calculation for standard FR4 results in a weird combination of spacing/width 0.55mm track width / 0.12mm tracks spacing. I set this as differential pair values and started routing but traces are not routed… it seems that pads can be reached/connected but the tracing is aborted when I click on the destination pad. No error is reported I tried also to disable DRC but nothing changed and I’m stuck into tracing… how can I fix this?

Your net clearance is larger than the diff pair separation allows (gray area around the traces). Therefore, make a new netclass with the clearance set to this small value and place the two traces in there.

As this looks like a very small clearance you might run into manufacturing problems (you will need a much more expensive process just because of these two traces.)
So you might want to ask yourself the question if it is really necessary for such short traces. My guess is that you could route it normally and not see a measurable difference in the resulting board.

Thnx Rene. I’ve not experience in USB routing I need to check with my PCB manufacturer prices anyway I could evaluate the difference in impedance of routing it with 0.2 spacing. Thnx again.

USB 2 isn’t really so sensitive, maybe unless you reeeeally need every bps. Just use normal traces.

1 Like

Might be a good read: Questions regarding impedance matching of USB

0.5mm width / 0.2 spacing lead to 106 ohm on std. FR4 (1.6mm Er 4.6)

And does it really matter?

Good question… usb 2.0 standard prescribe 90 ohm with a tollerance of 10% then it shouldn’t fit… but as Rene states probably with traces of this length (13mm) it doesn’t really matter. I have also to keep into account that this connection really doesn’t use lots of bandwidth since it’s just a HID device.

You can’t imagine the ways we have violated all rules of USB design and yet all the boards so far have worked in that respect (in low speed).

(I can’t of course recommend this to anyone, but this works as anecdotal evidence that USB 2 can handle pretty much.)

I hope to share some of your luck ! :slight_smile:

The two issues I have encountered with USB 2 are noise sources and EMC. The first was due to the fact the control board sits under a motor, and as soon as the motor starts up the USB drops out. The second is an ESD hit (6kV air discharge) on the front panel connector caused the MCU to hang up.

So my advice with USB is make sure the data lines are well protected from noise sources, and place ESD protection devices on all lines that go to external connectors.


Good hints! ESD are a big concern also for man-handled tools like this. I’ll put some protection to prevent handling discharges.

I’m working on a different board where I have to route 5 differential pairs (3 USB and 2 ETH).
I noticed that the differential pair routing length tuning doesn’t work correctly (or at least not as I expected).
Devices to be connected are almost near (less than 20mm). Routes completed correctly and I also tuned their length but while one of the trace is matching the desired length (within tollerance) the other one is 1mm shorter. To achieve a comparable length I had to tune the shorter trace independently this’s the result (after manual tuning).

you can notice the small miter to tune the shorter trace.

Where’s the problem?

Thnx again for your answer but I forgot to ask an important thing. Why KiCAD doesn’t warn about such kind of incompatibleness (I’m referring to the original post)? I found also the same problem when routing differential pairs and trying to connect to pin whith the wrong size. A warning message should be helpful and avoid wasting time.

Because the traces are not coming symmetrically to your IC, so the extra 1mm is to compensate for the difference in length between the end connection, if you would route “centered” to pin 2 or 7, that wouldn’t be the case.

Sorry but I haven’t got this… the result of the differential pairs length matching is correct? I.e. asking to tune a pair with a target of 18 mm length can result in a pair with one trace 18mm long and one 17mm?
If I tune the length ‘manually’ in the way I’m doing I going to have problems or not?

It is a difficult problem, you have many constrains (space between tracks, track width, total length of track, etc.), so what kicad does when you lay your differential pair is to make sure is that one track is of the correct length, if you lay your track symmetrically, then normally both will be of the same length, if that is not the case, then you have to correct the “skew” between the tracks of the differential pair (the length difference between both of them), in this case I believe you are talking about USB 2.0 , the skew here is not such an issue and you can easily leave the tracks as they were.

From StackExchange:

While the length and impedance are both important, 1mm of length differential will not affect your system’s performance in any way, even for usb-2.0 high-speed.

From the USB spec:

7.1.3 Cable Skew
The maximum skew introduced by the cable between the differential signaling pair (i.e., D+ and D- (TSKEW)) must be less than 100 ps and is measured as described in Section 6.7.

Assuming a perfect propagation velocity (i.e. C, the speed of light), a differential length of ~2.99 cm would produce a skew of 100 ps. As such, your 1 mm of trace length differential will not be a problem.

Added: On a real PCB, your signals travel slower than speed of light. For a stripline (inner layer) you divide the speed of light in vacuum by the square root of the relative dielectric constant (e_r). So about half speed. This means the 100ps is more like 15mm. For the outer layers, the speed is slightly higher (about 10%).

The topic of differential pairs was discussed previously here, take a look, lots of nice tips:


Ok I got this. Thanks a lot!

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.