Making PCBs is fun these days. Years ago I always paid a lot of money and got one single layer PCB without mask or silk screen. Now there are many PCB manufacturers which make prototyping PCBs for reasonable prices. But normally they don’t allow you to make panels (putting multiple circuits on one PCB). At least two manufacturers exist which allow you to create up to 5 panels per PCB:Â seeedstudio.com and iteadstudio.com (their PCB options look so similar that I think it’s the same manufacturer).
But how do you create the panelized production files?
Doing it by hand is too cumbersome. It could be done with the gerber files. But I chose to write a little python script panelize.py which duplicates the specified parts in a kicad PCB file (.brd). The advantage is that the panelized version is still editable with kicad and I still can run the checks.
The usage is pretty easy. First create a PCB. Here I also created the final PCB outline and some silk screen lines which separate the boards. This could also be done after panelizing. But if it is done before panelizing nothing gets lost if the script is run again.
Then I ran the following command:
panelize.py leddriver.brd leddriverp.brd \ Â Â Â Â Â Â Â source-area 19350/25850 32750/30350 \ Â Â Â Â Â Â Â copy 19350/30750 \ Â Â Â Â Â Â Â copy 19350/35650 \ Â Â Â Â Â Â Â copy 19350/40550 \ Â Â Â Â Â Â Â rotate 33150/25850 bottom-left 270
First it expects input and output file, after that the commands are following.
source-area specifies the source for following copies, it obviously needs two x/y coordinates to get a rectangle. It can be changed between copies.
copy copies the parts, tracks, zones and texts in the source area to the specified coord.
rotate makes a rotated copy. It needs to know the destination coordinate, which corner of the source are has to be put there, and the angle.
There is only one more command: help.
And then the result is:
It looks nice and passes the checks. Since the tool also clones the nets (wire names) no ratsnest shows up between the boards. So far I am happy with this tool but obviously it needs a few more features…
Edit: panelize.py got a permanent place here.