I am routing an HDMI signal from a Raspberry Pi CM4 board. I hope that the distance is not so large so I can get away with a lot of things (and I will be using only smaller resolutions anyway), but I would like to at least match the differential pairs lengths.
The connectors are on opposite sides, so I need to use some vias and unfortunately I need to swap the order of the signals.
The ‘Tune skew of differential pair’ tool says, that the pair is tuned:
but the net inspector shows 3.5mm difference in total track lengths. More interestingly, if I click on different part of the same track, I get different skew value - more than 2cm:
First, I thought that it is taking into account only the one segment, but the segment is only about 7mm long - how could the difference be 21?. It looks more like it is comparing one segment on the one signal with the whole track on the other…
What am I doing wrong?
Here is the butchered down project, with removed most of the unrelated things… diffmatching.zip (1.7 MB)
Thanks a lot! It did not occur to me that it would be related to track locking. After unlocking the tracks, everything works perfectly.
I do not need them locked, I had them locked only because I had to do the final “twist” to swap those + and - signals and as soon as I dragged one of the vias, KiCad decided that it is a good idea to move the whole track effectively breaking the controlled impedance on the whole track
Just an update.
It seems like the locking is not the only problem. I unlocked all the tracks and it seemed to be working on one pair. However, on the CLK signal it still did not work properly. The net inspector properly showed that the N signal is shorter - which corresponds to the layout as it is the “inner” signal. However the tune tool did say that the P signal is shorter and added meanders to it.
I tried the testing version ( Version: 7.0.8-43-ge6e29b6c4c, release build ) and it seems to be working now.
One more update: It seems that even the testing version still has some problems. On one pair it does not calculate the whole length - you can clearly see that the yellow line in the middle is not on the whole track - it ends in vias. The same happens when I click on the bottom half, the yellow line is displayed only to the vias.
Yeah, you are right again. There were small segments - probably from me dragging the vias - that were so small that I was not able to select them until I moved the via away. The track cleanup tool fixed the issue.
I’ve had a really hard time routing the diff pair tracks and I had to drag the vias to move one over the other so I could cross them and that probably caused the small track slivers. I still do not know why it did cause only on one pair…