Differential net tuning produces deceptively incorrect results
Simple diff pair
Individual segment lengths top left to right 0.3339, 2.4330, 0.6449, 1.9451, 0.8791, 0.5449, 0.1769, 0.3807 = 7.3385 which is not equal to the Routed length of 8.8852 difference 1.5467 mm
The segment lengths of the bottom trace are 0.3339, 2.3594, 0.6449, 2.0924, 0.8791, 0.4712, 0.2888, 0.3016 = 7.3713 . Routed length 8.9160 difference 1.5447
skew between the sum segment lengths = 0.0328 an agreement. Skew between routed lengths 0.0308
Now I want to match the length of two traces where the lower line has to reach 0.5 mm deeper in.
The tool is telling me that there is over 2mm of skew from going 0.5 mm additional trace length. Something isn’t making any sense here.
An expanded view of a typical 1 column deep fan out.
Starting with the top red trace we’ll sum the individual segment lengths. Routed length = 18.0629 Bottom Routed length = 14.3543 0.8845, 0.3420, 0.0492, 8.2606, 0.4526, 3.2627, 0.7228, 1.1000 = 15.0744 mm 0.2121, 0.4678, 0.2562, 7.9062, 0.4526, 3.3364, 0.7228, 1.1000 = 14.4541 mm
for a true difference of the individual summed segments of 0.6203 mm which seems exactly correct as the two traces are offset upward from the center line of pad M15 by about 0.1 mm.
However, the difference between the route lengths is 3.7086 mm
Now, running the length matching tool to tune out the real mismatch of 0.6203 mm we get
The segments for the bottom trace, left to right are now 0.2121 + 0.4678 + 0.2562 +0.1570 + 0.4271 + 0.1570 + 0.1571 + 0.4271 + 0.1571 +0.1570 + 0.4271 + 0.1570 + 0.1571 + 0.4271 + 0.1571 +7.1062 + 0.4526 + 3.3364 + 0.7228 +1.1000 = 16.6189
So, in an effort to match the lengths of a differential pair the tool added 16.6189 – 14.4541 = 2.1648 mm to the shorter length making it 1.5445 mm too long!
Of course the deception is that the tool told the user that everything was perfect with that little green message box that says Tuned: skew 0.000 mm Use the tool and end up with a skew that is three times worse than what on started with!
Application: KiCad PCB Editor x86_64 on x86_64
Version: 7.0.10-7.0.10~ubuntu23.04.1, release build
Libraries:
wxWidgets 3.2.2
FreeType 2.12.1
HarfBuzz 6.0.0
FontConfig 2.14.1
libcurl/7.88.1 OpenSSL/3.0.8 zlib/1.2.13 brotli/1.0.9 zstd/1.5.4 libidn2/2.3.3 libpsl/0.21.2 (+libidn2/2.3.3) libssh/0.10.4/openssl/zlib nghttp2/1.52.0 librtmp/2.3
Platform: Ubuntu 23.04, 64 bit, Little endian, wxGTK, ubuntu, x11
Build Info:
Date: Dec 31 2023 13:35:21
wxWidgets: 3.2.2 (wchar_t,wx containers) GTK+ 3.24
Boost: 1.74.0
OCC: 7.6.3
Curl: 7.88.1
ngspice: 38
Compiler: GCC 12.3.0 with C++ ABI 1017
Build settings:
KICAD_SPICE=ON