Repeat, repeat and a little PCB


This is my PCB. And, same times you can see the problem. Height is 8 mm, width 10 mm- normal IC 7,62 mm size. I want make this type PCB, quantity will be X eg. 20 Y 20- so panel size will be “10 x 10 cm … 20x20 cm”.

So, mandatory is, one PCB size is about this one IC size, 8x10 mm. X1 is of couse same, but resistor values will be not same. So… X1, R1, R2, R3. Next one is X2, R4, R5, R6 etc etc. Also bottom silkscreen running number “001”, “002”… is mandatory.

So, design is same, but ref des and values not same.

  • How I can do this? Manually quite big work…

  • Size is quite little. No one PCB manufacturer can do this? It must be V-score or routing between every board. Or, row of holes.

  • Board outline is very easy in normal CAD… dxf input etc…

  • Running number bottom side is also easy, DXF import

  • But… PCB geometry, running refres etc need any other way.

So if I understand correctly you don’t want the same value of resistors on every board? So R1 is not the same value as R4 and so on?

If so, i would just duplicate the board and build a panel, then manually change R1 of the second board to R4 and so on. The same in the schematic.

If all boards should have the same values of their resistors, I don’t see the point in having different references on the boards.

Is the plan to hand-populate? if so the these variant issues is a red herring and thus they key is to panalise to maximise the number of cards you get in one order. Kikit (iirc??) will assist with this.

Isn’t this is what you want: Plugin:panelize?

Please notice: You will get lowest price/1pc of PCB with Vscoring, but not on JLC. JLC will charge additionally (12USD or so) for V-Scrored 100x100mm panel with such small pcbs, use “Mouse-bite” type panelization in JLC to be cheap (4USD/panel). Other services (allpcb/seeed) are OK for such small vscoring, you’ll get 100x100mm panel for 5 bucks.

If I put 10x10 panel, it is 100 pcb and, so, 3x100 resistor. Reference designators are R1 … R300. (As I wrote, R1-R3 first board, R4-R6 next, R7-R9 next etc etc.) I have 10 resistor values. Values are mixed to boards. So, no same values. 10x10 and it will be 100 different mixies with this 10 resistor values. R1…R300.

No, 300 resistors 0603, not hand populated. :slight_smile:

JLCPCB is most best and cheapest. But, I have used it. They can make V-scoring PCB, but they cannot assembly it. So, if I make this PCB: I must use other pcb+assembly company than JLC, if want V-scoring. But if I use JLCPCB, I must make traditional routing.

I rreally want use JLCPCB. Excelent service, excelent price. Panelizing is not needed, individual PCB ok.But, their production is as train, only one direction. Minimum PCB size is 20x20 mm. But, I really does not know is it possible put mousebites inside this 20x20. I think, 20x20 mm with mousebites is 2x2. So, I will make first order 2x2 = 4x3 = R1…R12, board numbered “001…004”. Then I change bottom silkscreen, “005…009” and make new BOM. Up to all my need.

JLCPCB problem is, “no V-scoring PCB and assembly”. But, for me, routing is not problem. But… I does not know, is it problem for JLCPCB, 10x8 mm little pieces and mousebites between it…

MOST BIG PROBLEM IS, ANYWAY, Kicad. “Step and repeat”. In my opionion it is not important make excelent scematic diagram: It is ok make one piece schema (X1 and R1 R2 R3), move it to PCB-side. And then, make any “step and repeat procedure” in PCB editor. But how?

  • Much work can be do in mechanics cad (freecad, autocad, etc) and move dxf-file.
  • But how this step&repeat in Kicad? I check also it extreme-way, but is it not simple. Extreme is, “open kicad pcb file with text editor, make much jinx in Excel, edit pcb-file with this text-way”.

So, most big problem is this “step and repeat”.

Second problem is pcb manufacturer + assembly. 10x8 mm is very little, and if use JLCPCB, V-scoring not possible.


OF COURSE it is possible this way. (This is not just 20x20, 20x17, but it is really not problem, adjustadjustAdjustfitting-.) 2x2 board, 20x20 mm, 0,8 mm break-holes (and 1 mm or thin pcb). Step and repeat this. And, mousebites.

But still: “step&repeat”. Panelizing tools. But, panelizer does not handle refdes…

So: still, most big problem is this “step and repeat”.

It should be possible to order this from jlcpcb with mousebites and routing.

  1. Make a panel in KiCad. Either by using a panel plugin or by simply duplicating the layout.
  2. Change the refdefs so there are no duplicates.
  3. Order.

Do you want to make this design once, or do you plan to make more similar designs in the future?

If it’s only for this one PCB, then I would not bother with trying to automate much.
You can draw one PCB, and then select it, press the [Right Mouse Button] and use Special Tools / Create Array. This tool is not aware of your part numbering, and the easiest way to fix it is probably to delete the footprints, and then place the correct footprints on the track ends (you can use the snap function for this). You can do this more effectively if you first copy some default footprints (resistor, connectors) to a project specific library, and then set text locations etc according to what fits with your project. When you do this you do not have to move the texts individually for all the PCB’s. If you want the texts in different locations for “R1”, “R2”, “R3”, then you can put 3 copies of the resistor in this library.

If you plan to do similar PCB’s more often, a more scripted approach may fit your use scenario better. For the schematic part you can use SKiDL (and then completely skip the schematic) Pcbnew also has some Python scripted capabilities built in. I have not used this myself though and can not advise further.

You may (or may not) find some useful hints if you follow the links in:

1 Like

“Create array” make just I need. But, it copy refdes. After this need any other tool for renumbering. I found one renumbering software (“Kicad PCB Renumbering Utility”), but look it is not working nowadays.

So, “make array” make just I need, but after this must make renumbering. I try search any tool, but no, no any tool. Maybe only way is “make array” but then must open pcb file to “notepad” and make manual edit…

More ideas? “Make array”, but renumbering is not possible…

Why not just do it manually in Pcbnew? If it takes 3 seconds per component and you want to change the refdef of 10 x 20 x 3 = 600 components, that’s 1800 seconds or 30 minutes. I bet you have spent more time then 30 minutes already on this?

See attached video where I duplicate a similar layout and change the refdefs of the components on the duplicated layout.

1 Like

KiCad V6.0.0-rc2 has a: Pcbnew / Tools / Geographical Reannotate. I have not used this myself yet though.

Of course manual work is sometimes faster. But, if you have a little lamp “this is maybe useful, later”, it is good spent time to it. And… only way to be a specialist is… sweat.

Panelizer, yes, but it does not handle refres.

Right solution is:

  1. Second mouse button > Special tools > Make array


  1. Tools > Geograpcical annotate.

Only “problem” is “make array” is really full-copy-paste. It is, net names are also same. This leave a ratnets. But, it is only a cosmetic problem. It is not “rename all nets automatically rename duplicates”.

This way is right, component placement file ok, gerbers ok, etc etc. Of course… I have it 10 different resistor values, all values are dropped to this area randomly. (Not randomly, logically, but eg. “10 k resistors found this and this and this and this, etc…”). But, it is easy: Component value not need in asssemly machine file. So, only Bom.

If you create an array, you create new footprints, and those are separate from the footprints you have imported from the schematic.

A manual way to fix this is to delete all the footprints created by the array, which only leaves the copper tracks, and then placing the pads of the already existing footprints on the ends of those tracks. The t shortcut key in KiCad opens a dialog to fetch a footprint by Refdes, so if you type “tr1[Enter]” then you have R1 attached to the cursor (whatever it’s previous location was (It does have to exist of course)) and you can place it.

Another totally manual way, is to setup your grid to the size of the PCB, then fetch the top resistor of each PCB, then shift the grid, place the second footprint of each PCB and repeat until finished.

But as I wrote before, if you plan to do similar things more often, then a scripted approach is probably more effective. Once you’ve learned how scripting in Pcbnew works you can probably write a script for this in half an hour or so. (And then generate arrays of arbitrary size in seconds).

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