I don't understand how differential routing works (it probably doesn't)

Length matching of the individual tracks is not good. I don’t understand what the CAD is trying to say. With last PCB I had to match the lengths my self. A PCB CAD does this automatically.
See the picture. What is wrong, and what should I do. And of course, that strange selection of only one pin at left side of the track, makes me think about bugs.the

You have told KiCad that you want this trace to be 100 mm long, but the current trace is only around 11.5 mm long and there’s not enough space to make it longer.

See | | | Documentation | KiCad

You probably want to use “skew tuning” to make both tracks the same length instead of “differential pair tuning” (to make both tracks a specific length).


Thank you. Looks like usefull info. I can’t try it now, because my Win 10 has no emails or forums now, and this Win7 has no KiCad.
Is the skew “tuning” automatic, that is, does it match those tracks by itself.

Another question, Why did KiCad select only one of the connector pin pairs. 6-1 and 6_2, but not 5_1 and 5_2, that was confusing, I was afraid that KiCads lengths are also wrong.

FYI. This is a Raspberry board with DSI LCD. First PCB didn’t work, probably because I routed those diff. pairs normally. It works now when I really carefully made all the 3 pairs to have same length. (Manually, I drew the curves my self.)

It almost works. (I put KiCad forum password on this machine) The Skew seems to work only after I have opened and closed settings dialog. But KiCadf is crashing regularly now. I can only start reroute those diff pairs before Kicad crashes.

Sometimes the signals have to be Isochronous signals. They arrive at the same. Lengths are equal. The traces on a pair are close together so the noise is the same on both traces and comparing subtracts the noise.

MIPI DSI at the speed used in Raspi LCD (I assume you have the ‘official’ one) works over anything routed better than a coathanger, really. And the D-PHY/DSI specification specifies automatic inter-lane deskew on the protocol level. So if it doesn’t work for you, I’d rather look for cuts in ground planes, poor decoupling (or no stitch between Vdd/GND) and similar issues.

First version, the non-funtional one, I routed with differential pairs but each pair had its own natural length.
Then I matched lengths, by hand by the wayu. And the board worked. I added some vias, but I still think it was the length matching, as there were good stich vias already. But it is hard to say ofcourse, there wont be more tests with less vias.
I found a app note with very strict requirements. I used that with length matching.
layout_design_guide.pdf (1.2 MB)

This post reminded me of an earlier post (last year) that I made a video for that shows three examples… It may not help you but it’s too hot to be outside now thus, killing time…

Quality not very good but, it’s free!

Looks very easy. How it is possible that it is difficult here.

Imitate what I did in video. Sorry the video isn’t ideal but, you should be able to figure out the off-screen clicks.

It’s simple (“very easy” as you surmise)

This is a quite deep abstraction on top of that poorly engineered tooltip message.

What about having a better feedback to the user? The user deserves it. Right? He was already designing a quite complicated board. He doesn’t need to be decoding messages too. Right?

What is not close to be easy is to select those tracks. Come on, you made the selection look really hard as you were doing this with a stylus on an upside-down tablet.

Edit: Forgot to mention an improved way of doing that. Click one segment, and hit u. If the track is not selected completely, hit u again (maybe multiple times).

Which command gives us this popup?

Having only one net highlighted is normal here.

  • Remove the meandered parts, replace them with straight tracks, then use the “Tune length of a differential pair” tool again.
  • Set desired Target length in Length Tuning Settings (accessible in a menu by right-clicking on the toolbar icon, or when the tool is active, via normal context menu, or Ctrl+L).
  • Target lengths need to be determined manually. Generally, layout the longest pair first. Then length-match other pairs to your constraints.
  • Thin yellow lines show exactly how the router calculates the length. For “Tune length of a DP”, the maximum value of both paths is used.

Also the meander geometry shown on your screenshot is impossible to create in 7.0.

Try using 7.0.2 for now

A quick answer, I have 7.0.5

Yes, 7.0.2 should crash less in DP routing.

This is one of my custom plugins… Here’s my YouTube video on making it

1 Like

Ah, ok thanks. I have to give it a try.

Hey @BlackCoffee I could not find your plugin, just this video with no sound. How can I access it?