Making fiducials

My assembly house requires fiducials and making them in kicad is non-trivial and did not find clear docs on it, so I thought I’d share here what works for me.

Fiducial requirement: 1mm diameter, 2mm diameter solder mask free.

Create a circular SMD pad with 1mm X and 1mm Y size.
Deselect “F.Paste” from the “Techical Layers”.
Click on the “Local Clearance and Settings” tab and set “Net pad clearance” to 0.5 ((2-1)/2). Also set “Solder mask clearance” to 0.5.

I’d upload screenshots but it seems like I can’t yet. For now you can find them at: http://damad.be/joost/attic/kicad/

I’ve checked with oshpark and even though it looks like they are wrong on oshpark. If you look carefully they’re actually correct.

Ah, can’t upload because you haven’t posted enough on the site. That’s a thing you earn with Discourse, forgot about that. I verified it works with my account though.

These look great! Are these the standard for your board house or others you’ve seen?

I guess it depends on the pick-n-place machines used.

Did you include a keepout area around the pad as well, and if so, I’m curious what the diameter was?

Sorry… should have included this in the question above as well: did you need to set the origin point in KiCad to one of the fiducial as well, prior to generating a placement file?

I don’t believe this is necessary, but ask your fab first, some may have specific requirements in this regard.

Just make sure the fiducials are contained in the pick and place file, then at least my assembly house knows what to do just fine.

I did a lot of work with Small Batch Assembly to nail down the best way of setting this stuff up and that was his guidance as well. Make place at least two fiducials in opposing corners as far apart as possible, make them .5mm with a 1mm clearance of solder mask and copper around it, make the reference designator FID** and you should be good. Good practice to place it in the lower left and upper right corners.

… as long as it double check that it’s in the placement file :slight_smile: – you have to go into the module properties and set it the “Attributes” field to “Normal + Insert”, and then it will be listed in the placement file.

On the topic of setting the origin point, I discovered that laying that user based origin point on the lower left hand fiducial guarantees nothing but positive X / Y axis values in the placement file, which saves you time on all the hand massaging you have to do with CSV files and such.

2 Likes

Was playing with the .pos generation the other day…can’t you just force insert on all parts? Or is this because you did a “no pop” on some components?

Yeah, in my case, I had a couple of no-pop 0Ω 0805s sitting around that I didn’t want placed until the end user was ready to enable those portions of the circuit. By selecting “Force Insert” when generating the .pos file (a poorly chosen file extension if ever there was one), you would push a placement listing for every surface mount module on your board. It’s all text files though, and if you select the reference designator as the primary index it’s easy enough to go through and remove the no-pops.

Really, a lot of this stuff boils down to inconsistency of the modules that are bundled with KiCad. Some modules are set to “normal” some are set to “normal + insert”… some modules have their pads set to be exposed through the paste mask, some don’t. You just have to be thorough when doing your double checks.

Hi Chris,
I have watched all of your tutorials and found them very useful. One last thing that is holding up my PCB from being sent to the manufacturer. How do I make Panels?
Thank you,
VJ Falcao