Hi there, so I created a keyboard layout using the Ergogen keyboard layout editing tool that generates a KiCad PCB file and netlist programmatically without actually creating a schematic.
I used the “FreeRouting” plugin to do my auto-routing and it worked, and I ran the DRC and it passed and showed 0 Unconnected. When I got my board back I found I had a few unconnected pads due to errors in my Ergogen config.
One example - these two WS2812 LEDs are supposed to be connected in a chain, but I mislabeled them, so there were was no trace on the board when there should have been (between these two pads with the green line). When I add a jumper to these pads, the LED chain works as expected.
I see in the Net Inspector that there is only 1 Pad on those nets, but that wasn’t flagged anywhere.
This is my first time using KiCad and creating/ordering a PCB, so I’m wondering how to avoid this in the future, and I’m wondering why these pads didn’t show up as “Unconnected” in the DRC.
Is this because there is no schematic or is there something else I should check?
It would probably help to see the schematic or even better, the whole project. If you are currently at too low a level to post multiple images, a bit of reading on this forum will promote you to a higher level.
Ergogen is nothing to do with the KiCad package, so I have no idea how it generates the input data to the PCB layout.
Freerouting is also independent and is known to have bugs.
Freerouting and DRC connectivity checking will only work correctly if the netlist is correct. So you should look for the error in Ergogen, the tool you said you used, or your usage of it.
The thing is, if those pads were meant to be connected, they would be on the same net. So the netlist you got from Ergogen has a mistake.
You interpret DRC saying nothing is unconnected as there are no nets with only one pad. That’s not the case. It’s saying that all the nets have contiguous copper (including vias). Or put another way, there are no ratsnest lines left.
Nothing wrong with a programmatically generated netlist instead of starting with a schematic and I can see why Ergogen did it, but it’s still true that GIGO.
KiCads PCB main task is to make sure you make PCB according to the netlist. And as I understand PCB agreed with netlist so why would DRC have any doubts.
Start from schematic. It is the language electronics speak with each other.
… Use Ergogen instead. When you search that, at least you find a keyboard layout generator.
I have not used Ergogen myself. Main thing of Ergogen is apparently to do footprint placement on the PCB and generate outlines, either for the PCB itself, or for generating the case of the keyboard. It seems to be a nice tool that can save you a lot of time when generating a custom keyboard layout. Assume you have big hands, and want to make a keyboard for that, but you are guessing a bit of how big the keyboard needs to be for your hands… With Ergogen you can make adjustments, print the thing on paper or whatever to make some test runs and then iterate to improve. I quite like the concept and probably would be using it if I wanted to make a keyboard myself.
But you have to realize it’s just a tool. Tools have flaws, just like humans, and you remain responsible for verifying the whole design yourself. If you think you found a bug in Ergogen, then reporting it back to them may get it fixed. I don’t know how much of a community there is around that project.
Thank you @retiredfeline and @Piotr for answering the question.
So the netlist is the source of truth for the DRC and the routing.
I had some errors in my ergogen config that led to the netlist being incorrect for what I wanted. So now I know what to check next time, or suggest some error checking for Ergogen to do before generating the netlist.
Yes, everyone else - I know I used a nonstandard workflow.
If you are interested in making a keyboard, it’s a cool project. There’s a pretty supportive community and discord around it, and good docs - this is the most recommended starting point - Let's Design A Keyboard With Ergogen v4: Introduction — FlatFootFox .
And there’s a webapp you can use on a touch screen to touch-type with your fingers that will give you a base configuration for your hand and finger layout.
It depends on the current they carry and the voltage drop you can tolerate in the tracks. All the data (current, voltage drop, copper conductivity, thickness, etc) can be fed into formulae (cross sectional area, ohms law, etc.) from which you can calculate the track width required.
But if you are handling only a few mA as I suspect indicator LEDs do then it’s unlikely that the default is insufficient. These are not room illumination LEDs after all. All the same if you’re not short of room you should take advantage and widen the tracks, it doesn’t cost you any extra.
So sorry, I have no formulae for you, I just know it can be worked out from first principles if I had to pass an exam or something like that. Maybe you can find some rule of thumb formulae on the Interwebs.