I’m using Kicad 9 and I read other similar threads, but I kindly request some hints to avoid beginner’s mistakes.
Actually, the final design is easy to describe: it is a circular PCB filled by push buttons and LEDs, arranged in a XY matrix way.
The complexity rises about the nested repeated layout parts:
at higher level there is a “quarter” module (i.e. 1/4 of the circle) that as to be repeated 4 times in the 4 quadrants - rotated or better “mirrored” on the same layers of course)
each quarter module can be divided into 9 sectors, where I can find similar patterns: 3 * 8x8 matrix + 2 * 35 (the two topmost and leftmost sectors, see the picture below) + 1 * 58 (the incomplete square at the center)
the previous subdivision is to find other patterns to simplify the layout
The first beginners mistake I see here is a beginner taking on a relatively big / complex project. Beginners make mistakes, and the bigger your project is, the more tedious and boring hours it takes to clean up those mistakes. My recommendation is to start with a few small dummy projects such as a NE555 blinking LED. Not to be manufactured, but only to get to know KiCad. This separates the learning of KiCad itself, from the stress of getting your project right.
How are you going to manufacture this? How big is it?
Is each yellow square a separate PCB?
If multiple PCB’s, how are you going to do the interconnects?
What do the greyed out sections represent? Is that going to be manufactured but unpopulated, cut of or other?
35? That looks like:
Half of those tiles will be mirrored, and that probably has consequences for the matrix.
I think you have already given this much more thought than anyone likely to be reading this is going to . . . there is generally always a better approach, what you need is something that is good enough.
This isn’t going to be 1 PCB though is it ? it looks like that would be too big to be fabricated.
Sorry, I’m not a beginner in electronic. I made PCB for 15+ years, I say “beginner” in this specific topic of Kicad (layout replication).
The PCB will be a single one (about 220 mm in diameter) so not very big and will be populated in SMD by JLCPCB. The yellow squares are to highlight the “logic” submodules I talked about in my question.
And the greyed out sections are just to show how the final design come from.
About the mirroring - that’s the point I was talking about. I’m not sure if it is even possible to replicate the layout without messing up all the stuff.
For example this is a draft of my 8x8 section routed:
Given the amount of work needed to route the whole PCB I’m looking for an efficient solution to re-use the layout already routed.
I thought about smaller PCBs interconnected but the problem is I have no space to connect them, because all the buttons and LEDs must be placed on the grid without any gap.
You mentioned mirroring / rotating only for the 4 quadrants. not for the yellow tiles in each quadrant.
So apart from this electronics experience, what is your experience in KiCad (not other PCB programs).
Leds’ look like those serial RGB leds. not a matrix with separate driver chips. That makes things easier for you. (all those details matter for giving fitting advise. I don’t have a (working) crystal ball)
Replicating the layout (old plugin or the new method in V9 (which I do not have yet). is probably not going to help much here, your “single sheet” would almost boil down to a single LED / button. I’ve seen some scripted approaches for very repetitive designs, but I doubt it’s worth writing such a script for a one-off PCB. For the schematic you can use SKiDL to very quickly create your arrays (of arbitrary size, it’s just a number in a python loop).
Working with arrays and copy & paste is probably the quickest approach here. Are all your LED’s on a single string, or is that divided into sections?
Back in 2019 I did an experiment. The goal was to make as much use of Copy & paste as I could. It was a fun experiment to figure out and to document it.
I’ve made fairly big LED boards in the past and my advice is to try to keep it simple.
If you can fit everything in a single board that would be the best option.
If you must have multiple boards, it’s always best if they are exactly the same (4 copies of the same board, instead of 4 variations of a very similar board) - do you really need mirroring or can you make it work by rotating that 1/4th of a circle? Bear in mind that your main constraint is probably the position of the buttons and the LEDs, not the copper connections.
Regarding the way to organize your schematic - don’t fret too much about it. The strategy I’d use here (an d that I’ve used in the past) is to create a layout of your main components in an external program (such as Inkscape - which you seemed to have done already) - maybe mark buttons with a circle and LEDs with a square, import this layout into a user layer in KiCad, and then start placing your blocks. I’d go sequentially line-by-line (but it all depends on the way your circuit is built).
Before KiCad had the repeated layout feature I’d create an array of a component (or circuit) and have the array tool place it automatically in the board and then I’d go one by one and rename all the references sequentially and then update the PCB so the components would be linked to the schematic - though now things look a lot easier with this repeated layout thing, but I haven’t tested the new feature yet.
This sounds like a great application for autorouter. I would also write a python or bash script to place the footprints as desired - if you’re not a coder ChatGPT can probably handle it.
Yes, that could work in this situation, I think even the freerouter thing is good enough for this, and it has a direct interface to KiCad. But once the footprints are placed, most tracks can be laid with a simple two dimensional array.
And regarding tigogalas post. The array tools in KiCad are also improving, just like many other aspects of KiCad.
A little bit later…
Oops, the feature I saw recently is in the Post V9 thread, so not yet in KiCad’s stable release.