Array of testpads to footprint?

Hi there!

I am currently designing a PCB with a connection to a second mezzanine PCB.
They will not be connected by means of a few connectors at specified locations, but rather a ton of single pins (SMT).

Is there any way to just place “test pads” on the first PCB, then convert all the pads with the fixed location to a single footprint and import that footprint to the other PCB?

How would you do this?
I am afraid writing down the coordinates for every pin is just to much work…

Thanks for all the help :slight_smile:

Is this for some “cordwood” like PCB?

If this is so, then you will have the most flexibility when you design a 4 layer PCB, and use a single THT pin for your wire connections. Pins are always moved on all layers at the same time so they can not get out of sync. Then you would need to sort out the gerber files to divide them over 2 PCB’s instead of a single 4 layer PCB.

This way of designing PCB’s is very rarely used. Partly because it’s not fit for automation, but also because such boards are hard to repair.

For repair-ability it would be much better to bring all connections near to the edge of both of the PCB’s, so you can open them as a “book” when repairs are needed. Wires are also flexible, and they do not need to be exactly opposite each other. Making wires cross each other increases the chance of making mistakes, but as long as the wires are in the same order on both PCB’s it would be easy to hand solder them.

Yes… see vid below

Making an Array is easy… Setting/Changing Pad type is easy…

I did Not bother to change Pad type - I leave that to you… (hint, double-click the Pad - change it before making the Array)

Another way is to make a custom footprint library, and in that library define a footprint which has the same size as your PCB and then use that footprint in both projects. Make sure that you update this footprint in both projects if you change it. KiCad makes copies of the footprints in the libraries, and only (re-) loads them from the libraries if it is instructed to do so.

You can also experiment with:
Pcbnew / File / Plot / Plot Format: SVG **
And then later:
** … / File / Import / Import Graphics

You can use those graphics as a guide for footprint placement on the “other” pcb, or you can use them as a guide to design your custom footprint.

Yet another way is to work with a “template” project.
Such a template project can define board outline and connectors type and placement. If you have installed the default templates, then you can have a look at for example some of the arduino boards with:
KiCad / File / New Project from Template
Any KiCad project can be turned into a template.

The description (especially the mention of SMT) sounds more like a DIY BGA-type package.

After getting your Kicad ‘Sealegs’, so to speak, and digging-in a bit deeper, you can jimmy-up a graphic representation of the Footprints/PCB’s… and, perhaps make some Wire parts
(I posted some tut’s here)

Examples - for fun…

Yeah, thats basically it!

I really like this idea, this is probably the most flexible way to work with it.
One problem though: This allows for a ton of copper layers. Good. But you are still limited to two component layers. I do a lot of SMD, so there could be parts on top and bottom of each pcb, so 4 component layers in total.
Is this somehow possible in Kicad?


Oh yeah, I am a little afraid of manufacturing, debugging and repair. It is not for mass production but still…
But space is really tight in this application, so we really have to do this.


This is bound to be really hacky but you can move tracks and pads to inner layers by editing the board file by hand. I think @BlackCoffee might even have a simple plugin - not sure if his plugin can move tracks as well as pads though. It would be interesting to try it with a simple proof of concept - a four layer board representing the two two layer boards and try moving tracks and pads to inner layers. You could then place components on In1Cu, for instance followed by a global rename of the InCu1 layer to Bottom copper before generating the Gerbers. One obvious problem is that you will have no soldermask or silk on the inner leaves but you might be able to abuse another user layer or two for this. You could use blind vias between FCu and InCu1 and similarly beween InCu2 and BCu - but you would have to rename those in a text editor too. How many components are you thinking of in the inner layers and are they mainly one type? You could make a few ‘special’ inner layer components (would have to be different for In1 and In2) - obviously with adjusted silk and courtyards. Connectivity appears to work, as does the P&S router.
Whilst i think this might be interesting and doable, it is probably going to be quite prone to errors. How you assemble this is left as an interesting exercise - from what you say, it sounds like you are building it yourself so getting pos files etc working is less of an issue.
Using 5.99 - Magenta is InCu1 and blue is BottomCu.
Screen Shot 2020-12-06 at 12.00.31

Making a single 4 (or more) layer PCB in KiCad and then manually sorting out the layers for 2 PCB’s is already quite hackish, and about as far as I would dare to go myself. Hacking the file format further to put footprints on inner layers would be a bridge too far for me.

The next best thing is probably to design a custom “connector” footprint and then include that footprint on both PCB’s to make your connections. The connector should be on the same location for both PCB’s.

If you also design a custom schematic symbol for this connector footprint, then the chance of making mistakes in wiring is smaller. Just be extra sure that if you change the footprint, that you update it in the project for each of the PCB’s.

You can improve accessibility for repair and modifications a lot by putting all the power connections (thick wires) and high-speed signals near one of the long sides. Then you can use longer wires for the less critical signals and just fold them in between the PCB’s.
You can also put a few thicker wires near each corner which give mechanical stability, and are easily removable if access is needed. You can use long wires for these during repair.
Using castellated holes around the edges is another possibility. They’re probably strong enough for decent mechanical stability, and wires are easy to remove if needed.

If size is a real premium, then use 0.2mm lacquered wire for the connections. This wire can take upto a few hundred mA and you can put it through quite small holes. Working with this wire works best if you use 2 soldering irons. A hot iron to burn of the lacquer, and a cooler one for the soldering itself, so the flux evaporates slower and you have more time for soldering.

For some simple tests, you can open Pcbnew in “standalone” mode. That is: Start it directly from your OS, not from the KiCad Project Manager. In standalone mode you can open multiple PCB’s and put them on top of each other. Functionality is quite limited though. Everything gets mashed together, and after a PCB is “unselected” there is no way to tell which parts are on what PCB.

Pcbnew / File / Export / Step is a much better option. It exports a 3D STEP file with all components placed on the PCB (if KiCad has 3D models for them). Then you can load both PCB’s in any program that can read STEP files (such as FreeCAD) If the 3D models you used on the PCB are accurate you can use this to check for interferences of the assembly.

Sounds like some of us may remember the days of making 4-layer boards by stacking two 2-layer boards (with appropriate dielectric separation material) and fussing with soldering leads that poke through holes… OMG!

Considering that layers are generally connected using Vias, I see no sense in fussing with Plugin code to Move Pads to inner layers. I wouldn’t bother but, I’m sure a good coder could get there.

Thus, Yes, my plugins can move several things to different layers.

Because making Menu-Popup’s isn’t something I’ve had success with (inside of Kicad), the Plugins are coded to move Selected Items to specific layers. Because my needs are limited to the PCB’s I make, I have no need to populate the Toolbar with endless Icons… (Already have too many that causes Window to be wider than I prefer)

I recently posted some Info on making similar plugin’s so, if interested, look for posts within past two weeks.

Video shows moving items. Note that I limit moving Tracks to other Track layers only but, No limit on moving other items To Tracks.
Why? Because I don’t foresee needing to move a Track to Non-Track layer but, Do need to move drawn items To Tracks (to use them as Tracks).

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