Kicad refuses to let me hook up ground pad on SPH0645LM4H-B Footprint

I have tried several variants of the footprint including the ones from Digikey and Snapeda. Whenever I attempt to hook up the ground pad, Kicad pops up a dialog that says, “Cannot start routing inside a keepout area or board outline”. I do not see any keep out area or board outline with this footprint.

I remember this worked at one point.

Pad 3 is made up of four small circles and a larger circle where all four fit inside the width of the circle.

Here is what defines pad 3:
(fp_circle (center 0 0) (end 0.662 0) (layer F.Cu) (width 0.3))
(pad 3 smd circle (at 0 0.662) (size 0.3 0.3) (layers F.Cu F.Paste F.Mask))
(pad 3 smd circle (at 0 -0.662) (size 0.3 0.3) (layers F.Cu F.Paste F.Mask))
(pad 3 smd circle (at -0.662 0) (size 0.3 0.3) (layers F.Cu F.Paste F.Mask))
(pad 3 smd circle (at 0.662 0) (size 0.3 0.3) (layers F.Cu F.Paste F.Mask))

Are you by any chance on KiCad 5.0.x or 5.1.y (with y < 4)? There was a bug with circular features on the edge cut layer.

why not make this into a custom pad? (Integrate the circle into one of your circular pads)
Normal drawing features on copper are not supported (you should have gotten a warning when you tried to make this circle)

No. I did find the issue. It seems that if a circle on the copper layer is added in the footprint then it is considered a keepout area. In order to get around this, I modified one of the four pads inside the circle to have a custom shape primitive that matches where the copper circle was.

BTW, anyone know a way to submit footprints for Kicad and Digikey?

I did this. The weird thing is that when I integrated the ring into one of the pads I could not connect to the pad. The ring should be copper only with solder mask covering it and only the four circles around the ring should be free of solder mask. I ended up creating a fifth pad within the boundary of the circle and made that pad so it still had solder mask and no paste and that mostly works, though the nearby pad behaves a bit strangely when I try and run traces to it.

(module SPH0645LM4H-B (layer F.Cu) (tedit 5DCEC999)
(fp_text reference MIC1 (at -2.1 -0.875 -270) (layer F.SilkS)
(effects (font (size 0.9 0.9) (thickness 0.12)))
(fp_text value SPH0645LM4H-B (at 0 2.76) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
(fp_line (start -1.325 -2.46) (end -1.325 1.04) (layer F.Fab) (width 0.1))
(fp_line (start 1.325 -2.46) (end 1.325 1.04) (layer F.Fab) (width 0.1))
(fp_line (start -1.32 -2.46) (end 1.32 -2.46) (layer F.Fab) (width 0.1))
(fp_line (start -1.32 1.04) (end 1.32 1.04) (layer F.Fab) (width 0.1))
(fp_line (start 1.5 -2.6) (end 1.5 -2.2) (layer F.SilkS) (width 0.1))
(fp_line (start 1.1 -2.6) (end 1.5 -2.6) (layer F.SilkS) (width 0.1))
(fp_line (start -1.5 -2.6) (end -1.5 -2.2) (layer F.SilkS) (width 0.1))
(fp_line (start -1.1 -2.6) (end -1.5 -2.6) (layer F.SilkS) (width 0.1))
(fp_line (start 1.5 1.2) (end 1.1 1.2) (layer F.SilkS) (width 0.1))
(fp_line (start 1.5 0.8) (end 1.5 1.2) (layer F.SilkS) (width 0.1))
(fp_line (start -1.5 1.2) (end -1.1 1.2) (layer F.SilkS) (width 0.1))
(fp_line (start -1.5 0.8) (end -1.5 1.2) (layer F.SilkS) (width 0.1))
(fp_text user REF** (at 0 -0.6) (layer F.Fab)
(effects (font (size 0.5 0.5) (thickness 0.05)))
(fp_line (start -1.6 -2.71) (end -1.6 1.29) (layer F.CrtYd) (width 0.05))
(fp_line (start 1.6 -2.71) (end 1.6 1.29) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.6 -2.71) (end 1.6 -2.71) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.6 1.29) (end 1.6 1.29) (layer F.CrtYd) (width 0.05))
(pad 6 smd rect (at 0 -2.074) (size 0.6 0.522) (layers F.Cu F.Paste F.Mask))
(pad 5 smd rect (at 0.9 -2.074) (size 0.6 0.522) (layers F.Cu F.Paste F.Mask))
(pad 4 smd rect (at 0.9 -1.252) (size 0.6 0.522) (layers F.Cu F.Paste F.Mask))
(pad 2 smd rect (at -0.9 -1.252) (size 0.6 0.522) (layers F.Cu F.Paste F.Mask))
(pad “” np_thru_hole circle (at 0 0) (size 0.325 0.325) (drill 0.325) (layers *.Cu *.Mask))
(pad 1 smd rect (at -0.9 -2.074) (size 0.6 0.522) (layers F.Cu F.Paste F.Mask))
(pad 3 smd circle (at 0.662 0) (size 0.3 0.3) (layers F.Cu F.Paste F.Mask))
(pad 3 smd custom (at -0.5 -0.5) (size 0.1 0.1) (layers F.Cu)
(zone_connect 0)
(options (clearance outline) (anchor circle))
(gr_circle (center 0.5 0.5) (end 1.162 0.5) (width 0.3))
(pad 3 smd circle (at 0 -0.662) (size 0.3 0.3) (layers F.Cu F.Paste F.Mask))
(pad 3 smd circle (at 0 0.662) (size 0.3 0.3) (layers F.Cu F.Paste F.Mask))
(pad 3 smd circle (at -0.661 0) (size 0.3 0.3) (layers F.Cu F.Paste F.Mask))
(model /home/aaronw/kicad/library/aaron/SPH0645LM4H-B–3DModel-STEP-56544.step
(offset (xyz 0 0.65 0))
(scale (xyz 1 1 1))
(rotate (xyz -90 0 180))

You may have a look at this thread

Are you shure? The datasheet shows something different. It shows the ring fully exposed with paste sectioned up into arc segments.

You can use stepup as explained in the link posted by @maui
Alternatively take a look at this part of the script generator: (The RingPad class itself is what is responsible)
Example of what can be done with it:

1 Like

This is what the data sheet shows.

Here’s what the footprint from SnapEDA and Digikey shows:

I can look into the RingPad python script.

Snap eda is at most as trusted as the kicad library (or you for that matter). So if snap eda is in conflict with the datasheet then i would ignore snap eda.

They are additionally hindered by their “need” to provide assets for a wide variety of tools which might mean they need to make compromises to be able to have the same asset for all of them.

Yep, both SnapEDA and Digikey are wrong. I created a script and footprint, then modified it a bit in the editor since I wanted to rotate the solder mask by 45 degrees to match the datasheet (I couldn’t find a way to do this in the script).

The “-2” footprint would need to be modified to use the default path for the 3-D model. The 3-D model is from SnapEDA under a creative commons license. (2.4 KB) SPH0645LM4H-B.kicad_mod (6.9 KB) SPH0645LM4H-B-2.kicad_mod (6.8 KB) SPH0645LM4H-B–3DModel-STEP-56544.STEP (263.2 KB)

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