How do I create a soldermask on a pad different to the pad itself?



Am trying to make a footprint for this Osram TopLED.

The pads are enormous - for heatsinking reasons I guess - but the exposed area for the pads should be much smaller than the pads and in the corners of said pads.

I assume one needs to untick the solder mask box on the pad and then draw a filled polygon on the soldermask layer. However, although it’s obvious how to draw lines, I just can’t see a way how to draw a filled rectangle. How does one go about doing that please?

Thanks :slight_smile:


The way we do it over at the official lib is by having one pad per layer. So one pad defines the copper area (This pad has a pin number assigned.)

Then we add a separate pad for the mask layer. (It has no copper assinged, only the mask layer selected, no pin number)

And we then also add (multiple) paste only pads for such a footprint that define where solderpaste will be placed. (Again without pin number, no copper and only the paste layer ticked.)

As an example see any footprint with an exposed pad. In particular footprints that define a separate mask area. One example would be the footprint for Package_SO:HTSSOP-16-1EP_4.4x5mm_P0.65mm_EP3.4x5mm_Mask2.46x2.31mm_ThermalVias as found in the new library.


On the other hand it’s not necessary or even usually wanted to make such big pads in a footprint. You can make ordinary pads (about the size of the mask holes) and in the board layout add copper zones around the pads. That way your layout isn’t resticted by the large pads.


Thanks folks, both interesting suggestions, will have a play.


Hmmm, actually, eelik, is the problem with your method not exactly the same as mine? You have to add the copper zone and there’s no way of doing that!


If you put the “big pad” in the Footprint, you can nod forget them.
If you do as Eelik suggested you have the freedom in the shape and size of the zones.
You can even just start with a fat thick trace from the pins without any zones.

I like Rene’s idea of using “pads” in the Footprint.

But why would there be “no way to add the copper zone” ???
Copper zones can be connected to any net.


Hi Paul,

When you create the footprint, I can see no way of adding a copper zone, just as there’s no way of adding a filled polygon on the top mask layer.


The suggested idea is that you make a “normal” footprint with 4 pads the size of the suggested masked area. (The pads will include a mask cutout, copper and most importantly a pin number unique to every pad.)
You then need a symbol with all 4 pins (including the once that should not be connected)

When you then use that footprint in pcb_new you can create 4 zones of the size and shape you desire. These zones are then connected to the same net as the pad to which you want it to connect. (Make sure you choose connection style solid to ensure good thermal connection.)


@Rene_Poschl In which case your idea is a million times better. I have seventy-two LEDs on this board; there’s no way I’m placing that many LEDs and then drawing four extra zones - one for each one of those four pads on the seventy-two LEDs! That’s 288 zones to draw, If you then move the LED you have to move the zones. Madness!


Looking more carefully I see there are one anode and three cathodes. Basically it could be done with one huge ground zone for cathodes and tracks to each anode. The footprint of the data sheet is a suggestion only. So, which solution is best depends on many things.


Could it be something like this?
It is possible with version v5.0.0-rc2-dev
Purple is soldermask.



That looks ok.
How does that plot, when mixed with simpler stackup pads ?
ie the Plot routine needs to be smart enough to understand/apply

if SpecificMaskGiven then use that, else use copper-pad+/-


I was curious, so I created this stackup, with deliberate different paste and mask from copper,

    (pad 1 smd rect (at 0 -1.25 180) (size 1.4 2.1) (layers F.Paste))
    (pad 1 smd rect (at 0 -1.25 180) (size 2.9 0.6) (layers F.Mask))
    (pad 1 smd rect (at 0 -1.25 180) (size 1.9 1.1) (layers F.Cu)
      (net 2 XIN32) (solder_mask_margin 0.0762) (solder_paste_margin -0.0762) (clearance 0.0762))
    (pad 2 smd rect (at 0 1.25 180) (size 1.9 1.1) (layers F.Cu F.Paste F.Mask)
      (net 3 XOUT32) (solder_mask_margin 0.0762) (solder_paste_margin -0.0762) (clearance 0.0762))

and gerber plotted, 5.0.0rc2 - and that does create expected paste/mask, without ‘pollution’ from F.Cu


That pad file looks good, I have done that, too. In pcbnew it looks like what pedro gave.


I don’t know what “stackup pads” are.

The picture I sent is a pad edited with the footprint editor in pcbnew.
I created the pad with no F.paste no F.Mask layers.
Then I add the rectangle polygon on the F.Mask layer.

Do the same with the 4 pads of your footprint and the F.Mask rectangles will be part of the footprint.

You will need to add the F.Paste Mask too.


Then it’s different from the “official” way. Yours probably works well, but what Rene suggested is that you create a pad and change it to have only Mask or Paste layer and no copper layers at all.

I guess “stackup pad” means a pad with several layers stacked upon each other.


Yes, as in the file snippet above, they all have the same XY & pin number here, and are ‘stacked’ one per required layer. That allows any mix of larger/smaller/offset.


The ‘no pin number’ detail here raises a question - it seems to not matter if a pin number is used for paste/mask pads ? Is there any reason to prefer no pin number, over having a pin number ?

To me having a pin number makes it very clear which pin it is supposed to relate to.

It also means editors can be easily enhanced to select ‘all pin 1 stacks’ for example, to do a move-pin.

In other PCB pgms I’ve used, this padstack info is all pin-subgrouped, so any move of a pin, moves all items.


Just try it. (In all kicad versions on all possible platforms with all possible arrangements of copper and non copper pads.)

If you have a pad with a pin number kicad wants it to be connected to that net. So if it has no copper this will become difficult. (might be a problem for example if a mask only pad is not fully within an area also covered by copper.)

The safest option is not to include a pin number in pads without copper. In the official lib this can also be used to help the test scripts to decide if a pad is such a special pad or if it is a normal pad.

These two reasons are why we do not allow assigning pin numbers to non copper pads in the official lib.


Yes, with no copper, I can certainly see connecting to a non copper pad could ‘become difficult’…

Which leads to the obvious question, of why does kicad expect any non-copper pad to be connected ?

Actually checking that, kicad does seem to behave as I’d expect/hope ? - I moved a Pin 1 Mask layer pad, to entirely outside the pad, and DRC gives no unconnected reports. ( 5.0.0rc2, win64)

Looks like kicad does not expect non-copper pads to be connected (even with a pin number) ?