DRC errors with differential pairs and small pitch pads

I am creating a daughter board for the new Raspberry Pi Compute Module 4. The project was previously meant as simple HAT on normal RPi but I decided to change it so it would use the CM4. This means that I need to include HDMI connector(s) and I have never done that before nor have I designed a 4-layer board. Also the pitch of the CM4 connector is rather small. I am also extensively using design of RPi’s I/O board that is made in KiCad (unfortunately V5.99).

I’ve compiled various CM4 related schematic symbols and footprints (see Raspberry PI Compute Module 4 Baseboard was designed in KiCad ). Everything seems work fine but I am getting a lot of DRC errors.

First type of error is on the differential pair:

ErrType(17): Two track ends too close
@(148,314 mm, 76,184 mm): Track 0,200 mm [HDMI1_TX2_P] on F.Cu, length: 5,290 mm
@(148,667 mm, 76,329 mm): Track 0,200 mm [HDMI1_TX2_N] on F.Cu, length: 4,665 mm
image

The differential pair has been made by KiCad, I did not modify it in any way. Interestingly the errors are only on 2 out of 8 pairs… I’ve calculated the parameters of the pairs to be wIdth: 0,254 mm gap: 0,1524 mm. I have to say that I struggled with the differential pair routing a lot. It did not connect, did not want to enter the pads, I had to start from both ends, etc… So maybe the DRC errors are related to that but the traces seems to be ok. Someone here on the forum suggested to use the “wireframe” mode to check the traces, but even with that they seem ok:

The next two errors are related to the small pitch of the CM4 connector:

On some pins DRC says that the track is too close to the next pin:
ErrType(4): Track too close to pad
@(105,200 mm, 78,300 mm): Track 0,200 mm [CE1] on F.Cu, length: 0,590 mm
@(105,200 mm, 77,900 mm): Pad 35 of RPi0 on F.Cu and others

However if I move the track a little in the direction of the opposite pin (39 in this case) and move it back then it changes to report too close to that pin (39).
Also the pin is reported as unconnected even though it is clearly connected to a copper pour. I have to change the zone minimum width to 0,197mm or create a short tracks like this:

I would say that it is safe to ignore the errors and to lower the zone width to 0,197mm (it is the largest number that will work) but as I said this is my first 4 layer board with pitch this small so I would like to not mess it up :slight_smile:

And KiCad version info:
Application: Pcbnew
Version: (5.1.8)-1, release build
Libraries:
wxWidgets 3.0.5
libcurl/7.71.0 OpenSSL/1.1.1g (Schannel) zlib/1.2.11 brotli/1.0.7 libidn2/2.3.0 libpsl/0.21.0 (+libidn2/2.3.0) libssh2/1.9.0 nghttp2/1.41.0
Platform: Windows 8 (build 9200), 64-bit edition, 64 bit, Little endian, wxMSW
Build Info:
wxWidgets: 3.0.5 (wchar_t,wx containers,compatible with 2.8)
Boost: 1.73.0
OpenCASCADE Community Edition: 6.9.1
Curl: 7.71.0
Compiler: GCC 10.2.0 with C++ ABI 1014

Build settings:
USE_WX_GRAPHICS_CONTEXT=OFF
USE_WX_OVERLAY=OFF
KICAD_SCRIPTING=ON
KICAD_SCRIPTING_MODULES=ON
KICAD_SCRIPTING_PYTHON3=OFF
KICAD_SCRIPTING_WXPYTHON=ON
KICAD_SCRIPTING_WXPYTHON_PHOENIX=OFF
KICAD_SCRIPTING_ACTION_MENU=ON
BUILD_GITHUB_PLUGIN=ON
KICAD_USE_OCE=ON
KICAD_USE_OCC=OFF
KICAD_SPICE=ON

Edit:
I decided to open the project in KiCad Nightly just for fun and to see if the errors will go away. The pitch related ones actually did go away but the differential ones changed to:


[diff_pair_gap_out_of_range]: Differential pair gap out of range (netclass ‘100R diff’ minimum gap: 0,1524 mm; actual: 0,1524 mm) Severity: error
@(149,4238 mm, 70,4085 mm): Track [HDMI1_TX2_P] on F.Cu, length 1,5692 mm
@(148,6666 mm, 71,6641 mm): Track [HDMI1_TX2_N] on F.Cu, length 1,5692 mm

I’ve seen this rounding errors on differential pairs before, what I do is to increase the gap of the pairs 1um, this way I don’t see this errors anymore when the tracks turn together.

I rerouted all the HDMI tracks to give them a little more separation between the pairs (just to be safe and I had the space on the PCB) and the error went away… I would call that a positive side effect… :slight_smile:
So now I am only left with the “track too close to pad” errors and I suppose I will solve them by decreasing pad to track by a small number or I will just ignore them…

If KiCad routes lays the tracks in a place they generate DRC errors, then it is a bug and should be reported on Gitlab.

Can you make a test project from the project above and upload it here?
It only has to contain the parts that generate the DRC errors. All other footprints are just a distraction and preferably removed from the project.

If you do that then I can do some test to try to find more info and make a bug report (issue) for it on gitlab.

1 Like

Sorry for the late reply, I’ve been away from a computer for a day :slight_smile:

I’ve gutted the project to contain mostly only the two problems I mentioned.

drc-problem-diff-pair.zip (168.7 KB)

I’ve removed the second HDMI as its differential pairs did not show any DRC errors and I’ve included the DRC report in the archive.

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