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
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
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