This is the biggest usability improvement on the list. Computers are good at menial sorting, humans hate it.
For those not in the know: your nice, organised schematic gets turned into a randomly assorted pile of parts when you first open the PCB editor. Now imagine your board has over a hundred parts, including lots of duplicated copy+pasted bits.
My workarounds have been to:
1. Number the parts with special codes/prefixes to make manual untangling and grouping faster.
2. Import parts into the PCB editor as a draw the schematic. It's annoying extra work (the schematic undergoes lots of changes) and requires you to assign valid footprints from the start (so your work is constantly interrupted by having to draw missing ones OR your assign invalid ones and forget to fix them later).
They listed it at the very end of the Release Notes but its a killer feature - I have been struggling with the random packing of components onto the PCB when the first export to PCB is done.
It almost made me delete most of the schematic and then incrementally add to schematic and then make it add to PCB but its such a pain.
This new Pack and Move feature seems like a life-saver, since we can use it anytime to add components to a selection with Shift-select and then that will pull it into the other desired grouping area on the PCB.
It appears to now, yes. It didn't before. One of the bigger headaches (for me, as a beginner) was when you had bypass capacitors that need to be physically as close to an IC as possible. However, the two pins go to a voltage source and ground. According to Kicad, those could be placed anywhere on the board, and have no direct relation to the IC itself. This meant you had to carefully find each capacitor by its reference and move it to where it needed to be - often it was packed somewhere completely irrelevant. Now it appears to be much simpler since you can select the components from the schematic and pack them together in the PCB editor, saving a lot of time.
Long time since I last used it for complex board (life is weird), but the way I do it is to crossselect the part from the schematic. I remember earlier versions used a local socket between the layout and schematic tools to allow for that.
Really indispensable. Not sure how the current feature works, but for things like power supply capacitors that are electrically connected to tons of ICs and pins but logically belong to one specific pin, I can't think of a better approach.
I'm still on version 5 due to apt/snap issues, but what I miss the most is a way to place footprints of a group of components (as opposed to placing them all at once).
I'm still on 5.1.x as snapping is broken. Not apt/snap, but proximity snap. In 5.1.x the best way to place a group is to use https://github.com/MitjaNemec/Kicad_action_plugins 'replicate layout' (components and traces). See also, right click and Select ... Same schematic sheet (components only).
Version 7 doesn't seem to have made it to either of those yet, but have you considered installing a newer version through an additional package manager like Guix or Nix?
From a skim of the website, I'm surprised they don't have a Linux binary to download, but there is a PPA avail. Or, you could compile from source if the dependencies aren't too messy.
I wish they made migration easier. I'll probably use KiCad 7.0 for new projects, but for old I think I need to stick with 5.1.
When I import most projects to 6.0, I get so many errors, violations and whatnot that make no sense when taking a closer look so I just don't trust it.
Did you report those? Even try to make a minimal reproducible file that triggers the error? Might be a simple thing they can fix if pointed in the right direction.
We said goodbye to Altium Designer when KiCad 6.0 was released. Altium’s focus and resources shifted towards trying to turn AD into a cloud-based tool. As a result the software people actually wanted to use suffered. Every release introduced a plethora of new bugs. Nobody really cared for cloud EDA. Altium thought they would be able to sell the company to Autodesk. This almost happened. In the end that did not happen.
KiCad 6.0 easily covered 95% of PCB design needs, if not 98%. With 7.0 things are better yet. At this point, I can’t see people paying thousands of dollars per year for maintenance on tools like AD. It makes no sense at all.
Don't underestimate the inertia of processes at established companies. If a company maintains a part library, if the company has more than a few EEs- it can be a multi-man-month effort with potential for costly mistakes.
I like KiCad very much, I use it professionally but I also was the one that mandated AD to be the tool everyone at $WORK must use for production designs a few years ago- solely because it was the common denominator CAD that all EEs at the company/time knew to some degree. The cost of having production designs in a mixture of CAD tools was definitely larger than a few Altium licenses.
Now, if that was a new/my own company, I would mandate KiCad or GTFO.
Absolutely, a couple years ago KiCad wasn't ready for production use, even just a day a month of hitting some obscure issue would have paid for the AD licences, never mind the better part libraries etc. Now of course you'll need the AD licences to work on old designs anyways so it's tricky to transition.
Over the weekend I put together a toy project with a few ICs and maybe a dozen passives in KiCad and I was amazed to see how easy everything was. And now with a new release they're probably fixing things I hadn't even been annoyed by yet.
Hopefully having an open codebase means we start seeing some nice autoplacement and autorouting trickle in from hobbyists and academia, like we've seen in the 3D printer slicers world.
> Don't underestimate the inertia of processes at established companies.
I understand. The approach we took was to start new designs on KiCad and leave prior work on AD, unless a port is absolutely necessary.
All of our libraries are created using custom tools we wrote nearly 20 years ago. The good news is that these tools can be updated to regenerate the libraries for KiCad. That’ the power of a part description data structure that is independent from the EDA tool.
Starting with KiCad version 6.0 I saw no compelling reason to throw money at AD for the shit job they have been doing maintaining their software. At the end of the day people vote with their wallets. For me this isn’t about free at all. It’s about tool quality and other parameters. We are donating money to KiCad because it is going in the right direction. Altium is not. We were with them for over 20 years. They took us for granted. Goodbye.
>I can’t see people paying thousands of dollars per year for maintenance on tools like AD. It makes no sense at all.
I started to use Kicad at v5. Some interesting projects in v4 did not load clean.
v6 was released, it had some problems to load v5 projects. And now v7 seems to not load some v6 projects.
If the AD story for support loading old version projects is good then I think they will do fine.
I want to learn PCB design, mostly with ARM and ESP based designs. How would I learn basics? I know theory part but I really couldn't figure out why they determine which component and which value they have to use. I mean there are resistors, capacitors all over the place but I really want to learn reason behind it. Also I guess there are some basics related power, battery, UART, USB etc. Is there any source that covers all of these concepts?
There are certain usage patterns that you will find all over the place, e.g.:
- Current-limiting resistors
- The resistor divider (two resistors between e.g. 3.3V and GND. The point between the two resistors will be between 3.3V and 0V, depending on the resistor values. Sometimes you need a certain voltage. For example to bias transistors.
- Delays, using a resistor and a capacitor. The values will determine the delay.
- Capacitors next to oscillators
- Filters, using a resistor and a capacitor. The order and the values will determine the cutoff frequency.
- Most capacitors on a PCB probably sit right next to a chip. Often, at least one per chip. They get rid of noise already on the line, and act as short-term energy storage for the chip next to it.
- Decoupling capacitors to get rid of the DC component of a signal (i.e. if there is a signal fluctuating between 4.5V and 5.5V before the cap, it'll be -0.5V and 0.5V behind the cap. Often, you need to add a DC component and later remove it, so that's two capacitors already.
Obvious but it never occurred to me that experienced person sees far fewer parts than layman when looking at the board, for expert its like yeah "file read there", "serialization here" (if I were to use programming analogy) but layman sees gazillion little parts magically working together.
"if there is a signal fluctuating between 4.5V and 5.5V before the cap, it'll be -0.5V and 0.5V behind the cap" if there's a resistance to ground after the capacitor. I've accidentally planned an audio amp with input decoupling capacitors, didn't add ground resistors before the capacitors, so if you plug it into an audio output with DC-blocking capacitors but not resistors to ground, the voltage in the middle could be anything.
Also worth mentioning are pull-up or pull-down resistors. They give a pin a default state when nothing is driving the pin. You will often see them on reset pins and on inputs from buttons.
> I mean there are resistors, capacitors all over the place but I really want to learn reason behind it.
There are some good YouTube channels that go into this. EEVBlog[1] has made a lot of really nice videos about the fundamentals, as has w2aew[2]. And I found MicroType Engineering[3] to be a good source of practical information on designing circuits.
Capacitors next to ICs are almost always for decoupling[4]. Similar to how the cistern in your toilet provides a large amounts of water in a short amount of time without affecting the water pressure in the rest of the house, hence decoupling the local water flow from the main supply,
decoupling capacitors can supply a lot of current for a short amount of time.
However what values to use can seemingly be a bit of a black art[5], not helped by the fact there's so much outdated information and rules of thumb out there from the days of through-hole components which just doesn't apply to modern surface mounted components (like needing multiple different values).
On the other hand, resistors on a data line can be there to protect against ESD events[6], for example.
Some of it might be a bit more advanced than what you need right now, but there's definitely some good stuff for people starting out. If for nothing else highlighting areas you should be aware of.
Also Phil's Lab, especially for PCB design specifically (though he covers schematics too, I'd say it's typically not as beginner-friendly/a faster-paced run-through so you understand what he's laying out).
Make: Electronics by Charles Platt will take you through all the whys and wheres, starting at the very basics. I highly recommend it.
Also, I'll recommend the "Follow the example" approach of just looking at the data sheets for various components and modules. Especially stuff like the Arduino Uno - It's got a microcontroller, and then everything around it is just support. You start to see patterns where there (for example) a 10uF and 0.1uF Capacitor around power inputs. And they're everywhere so even if you don't know why (yet) you do know that you need capacitors around power inputs.
I started by building a programmable mechanical keyboard based on this macropad tutorial (see link). If you want to simplify it somewhat, replace all the microcontroller circuitry (oscillator, capacitors, USB interface, etc.) with an Arduino, and use through-hole diodes. It's a really cool feeling to finish your design, order custom PCBs from jlcpcb, do a bit of soldering, and end up with a useful, working keyboard.
Yes, this is the way. Datasheets and application notes will tell you nearly everything you need to know. If you don’t understand why something is done or how something works, look it up at that point. Starting from fundamentals is going to be a much slower path than just following manufacturer examples.
For designing with basic components I recommend starting with microcontrollers on a breadboard. There's plenty of great youtube channels that talk about this stuff as well, like GreatScott and Ben Eater
Phil's Lab on YouTube has great PCB design tutorials that cover how to think about layout and design, how to use Kicad, and even how to turn your design into a real product.
So you want to learn electronics? I suggest that you take the time to actually learn the theory behind it and learn how resistance, capacitance, inductance affects the system. It is hard but helps a lot. If you want to understand digital systems, then learn how digital basic components work and how you combine them to create more complex systems. Had electronics as my major in my bachelor's degree, and the mental model is really important when it comes to electronics, and the only way to really understand it and get the correct mental model is by repeatedly analyzing the networks and the change over time (resistance,capacitance,inductance) and all of sudden it makes perfectly sense!
Underlying theory is important, but seeing practical examples that _explicitly applies theory_ has been critical in my particular electronics adventure. There are more ways to apply Ohm's Law (or Kirchhoff's Laws) than you can shake a stick at and seeing someone explicitly do the math and apply it while explaining a circuit that I am interested in has helped me get better at applying it.
I think the hardest things for me so far been (a) getting my head around the idea that everything in a circuit is happening all at once (rather than iteratively like an algorithm) and (b) "input" and "output" are convenience terms, e.g. an opamp can sink current through its "output". Both of these insights have come from seeing real circuits analyzed on YouTube.
In addition to the other replies which list a number of good resources, I've found reddit.com/r/PrintedCircuitBoard interesting to watch. It's mostly people asking for reviews of their projects, and there's a lot of tips and tricks to pick up in the review comments.
You can also see a nice progression there from beginner PCBs to more advanced things.
This feels like a major step forward, not for the software itself (although it probably is) but for the release schedule. KiCad 5 came out in 2018. KiCad 6 was long delayed and waterfalled and did not come out until late 2021/early 2022. And now only a year later we see KiCad 7. Seems like release engineering is coming more on lockdown which is super great news!
Pretty sure Kicad Services Corp is a big factor in the tighter release cadence. Seth Hillibrand and co have done the best job of “Red Hatting” Kicad and becoming a professional services org that supports Kicad users for a fee.
Also helps them guide and drive development of wanted features. I’m convinced there’s no way ODBC support would have happened without it. That’s a feature no hobbyist or maker would care about- it’s specifically geared towards people who collaborate with other engineers and component sourcing departments.
The forced workflow is a feature IMO. In a production engineering scenario, it's very helpful to have tools that enforce some level of best practice. Especially since the time and money to rework incorrectly designed circuit boards can prohibitive.
A built in command line interface for exporting BOMs/netlists/gerbers is incredible. It's probably not going to be as powerful as Ki-Bot at first, but I'm going to try and integrate it into my GitHub actions asap.
And, the new dragging behavior is obviously what we should have had from the start. Going to make doing quick drawings much easier.
Yes! Pretty psyched about the `kicad-cli`. Software CI/CD feels miles ahead of of hardware CI/CD - stuff like this is awesome for pushing forward on that front
Is there a good guide how to use git with kicad? Right now I just copy folders with version numbers. Using it in github sounds like a neat way. Which files should be in my gitignore?
KiBot [0] is super handy for this, the documentation has an explicit section on CI/CD usage.
It does have to basically script drive the GUI to achieve some functionality which has now been added to the kicad cli, so hopefully going forward CI/CD with KiCad will be even easier!
Kicad is excellent - I found 6.0 to be much improved and more useable than the version I had previously.
I just downloaded 7.0 and it already is a LOT snappier and happier with loading the symbol libraries.
I need to check if there have been any improvements in the auto-router integrations - it was pretty rough the last time I tried it out.
How are parts libraries? I see that there are a bunch on github maintained by companies like Digikey. It's been a while since I did a pcb design but my last was using jlpcb's online editor and I was pleasantly surprised how easy it was to do since they had a massive public parts library.
I used to use eagle back in the day but stopped being a fan once it was bought/ruined by autodesk. I hate managing parts libraries.
Managing the files and folders and paths in KiCad should be considered a war-crime. Symbols here, footprints there, 3d models somewhere else entirely by default, would you like to centralize your parts or have them portable per project? Can't have the best of both worlds, sorry!
(Edit to add: Oh yeah, any time you click to change a file, any environment variables you had in the path get replaced with the absolute path, so things which had been perfectly resilient against path breakage get brittle again automatically!)
Actually making footprints, though, is super easy. If I have a datasheet, I don't even bother searching for a footprint from someone else (which was probably badly translated from some awful interlingua format), I just make my own.
Bonus if I can find a 3d model of the part. (I work with more connectors than chips, so these are frequently available.) Makes it super easy to doublecheck my footprint, and then I can see housing clearance and stuff in 3D as I lay out the board. Kicad is really, really good at this now.
>(Edit to add: Oh yeah, any time you click to change a file, any environment variables you had in the path get replaced with the absolute path, so things which had been perfectly resilient against path breakage get brittle again automatically!)
Where? Many of the editing fields are supposed to resolve paths back to variables when possible.
I use built-ins for KiCad when avail, or make manually using DSes otherwise. (Schematic and footprint). You can also download from certain websites, but I've found those are hit+miss; overall had an easier experience doing by hand, even though that sounds bad. I'll usually start by C+Ping a similar one. I have a separate KiCad library with its own Git repo for footprints, and one for schematic parts.
I use app.ultralibrarian.com and snapeda.com. There is also https://github.com/DasBasti/lcsc2kicad that automates downloading and converting footprints from LCSC for Kicad to use. It is handy as well.
I'm absolutely delighted that KiCad is as usable and continues to be developed on. I remember a time not too long ago where the Mac version was tragically unmaintained. I now do all my EDA in KiCad. I'm not a professional EE. All my stuff is hobbiest, and relatively amateur, but it's so nice to have tools that are so flexible.
This is the biggest usability improvement on the list. Computers are good at menial sorting, humans hate it.
For those not in the know: your nice, organised schematic gets turned into a randomly assorted pile of parts when you first open the PCB editor. Now imagine your board has over a hundred parts, including lots of duplicated copy+pasted bits.
My workarounds have been to:
1. Number the parts with special codes/prefixes to make manual untangling and grouping faster. 2. Import parts into the PCB editor as a draw the schematic. It's annoying extra work (the schematic undergoes lots of changes) and requires you to assign valid footprints from the start (so your work is constantly interrupted by having to draw missing ones OR your assign invalid ones and forget to fix them later).
This new Pack and Move feature seems like a life-saver, since we can use it anytime to add components to a selection with Shift-select and then that will pull it into the other desired grouping area on the PCB.
https://github.com/ignamv/kicad_scripts#place_footprintspy
(This does sound like an extremely useful feature either way, but I'm curious.)
Really indispensable. Not sure how the current feature works, but for things like power supply capacitors that are electrically connected to tons of ICs and pins but logically belong to one specific pin, I can't think of a better approach.
I'm still on 5.1.x as snapping is broken. Not apt/snap, but proximity snap. In 5.1.x the best way to place a group is to use https://github.com/MitjaNemec/Kicad_action_plugins 'replicate layout' (components and traces). See also, right click and Select ... Same schematic sheet (components only).
When I import most projects to 6.0, I get so many errors, violations and whatnot that make no sense when taking a closer look so I just don't trust it.
KiCad 6.0 easily covered 95% of PCB design needs, if not 98%. With 7.0 things are better yet. At this point, I can’t see people paying thousands of dollars per year for maintenance on tools like AD. It makes no sense at all.
Don't underestimate the inertia of processes at established companies. If a company maintains a part library, if the company has more than a few EEs- it can be a multi-man-month effort with potential for costly mistakes.
I like KiCad very much, I use it professionally but I also was the one that mandated AD to be the tool everyone at $WORK must use for production designs a few years ago- solely because it was the common denominator CAD that all EEs at the company/time knew to some degree. The cost of having production designs in a mixture of CAD tools was definitely larger than a few Altium licenses.
Now, if that was a new/my own company, I would mandate KiCad or GTFO.
Over the weekend I put together a toy project with a few ICs and maybe a dozen passives in KiCad and I was amazed to see how easy everything was. And now with a new release they're probably fixing things I hadn't even been annoyed by yet.
Hopefully having an open codebase means we start seeing some nice autoplacement and autorouting trickle in from hobbyists and academia, like we've seen in the 3D printer slicers world.
I understand. The approach we took was to start new designs on KiCad and leave prior work on AD, unless a port is absolutely necessary.
All of our libraries are created using custom tools we wrote nearly 20 years ago. The good news is that these tools can be updated to regenerate the libraries for KiCad. That’ the power of a part description data structure that is independent from the EDA tool.
Starting with KiCad version 6.0 I saw no compelling reason to throw money at AD for the shit job they have been doing maintaining their software. At the end of the day people vote with their wallets. For me this isn’t about free at all. It’s about tool quality and other parameters. We are donating money to KiCad because it is going in the right direction. Altium is not. We were with them for over 20 years. They took us for granted. Goodbye.
I started to use Kicad at v5. Some interesting projects in v4 did not load clean. v6 was released, it had some problems to load v5 projects. And now v7 seems to not load some v6 projects.
If the AD story for support loading old version projects is good then I think they will do fine.
- Current-limiting resistors
- The resistor divider (two resistors between e.g. 3.3V and GND. The point between the two resistors will be between 3.3V and 0V, depending on the resistor values. Sometimes you need a certain voltage. For example to bias transistors.
- Delays, using a resistor and a capacitor. The values will determine the delay.
- Capacitors next to oscillators
- Filters, using a resistor and a capacitor. The order and the values will determine the cutoff frequency.
- Most capacitors on a PCB probably sit right next to a chip. Often, at least one per chip. They get rid of noise already on the line, and act as short-term energy storage for the chip next to it.
- Decoupling capacitors to get rid of the DC component of a signal (i.e. if there is a signal fluctuating between 4.5V and 5.5V before the cap, it'll be -0.5V and 0.5V behind the cap. Often, you need to add a DC component and later remove it, so that's two capacitors already.
There are some good YouTube channels that go into this. EEVBlog[1] has made a lot of really nice videos about the fundamentals, as has w2aew[2]. And I found MicroType Engineering[3] to be a good source of practical information on designing circuits.
Capacitors next to ICs are almost always for decoupling[4]. Similar to how the cistern in your toilet provides a large amounts of water in a short amount of time without affecting the water pressure in the rest of the house, hence decoupling the local water flow from the main supply, decoupling capacitors can supply a lot of current for a short amount of time.
However what values to use can seemingly be a bit of a black art[5], not helped by the fact there's so much outdated information and rules of thumb out there from the days of through-hole components which just doesn't apply to modern surface mounted components (like needing multiple different values).
On the other hand, resistors on a data line can be there to protect against ESD events[6], for example.
Some of it might be a bit more advanced than what you need right now, but there's definitely some good stuff for people starting out. If for nothing else highlighting areas you should be aware of.
[1]: https://www.youtube.com/@EEVblog/playlists
[2]: https://www.youtube.com/@w2aew/playlists
[3]: https://www.youtube.com/c/MicroTypeEngineering
[4]: https://www.youtube.com/watch?v=BcJ6UdDx1vg
[5]: https://www.youtube.com/watch?v=k7aPb585Y6k
[6]: https://www.youtube.com/watch?v=6OxE06n6n44
Also, I'll recommend the "Follow the example" approach of just looking at the data sheets for various components and modules. Especially stuff like the Arduino Uno - It's got a microcontroller, and then everything around it is just support. You start to see patterns where there (for example) a 10uF and 0.1uF Capacitor around power inputs. And they're everywhere so even if you don't know why (yet) you do know that you need capacitors around power inputs.
https://wiki.ai03.com/books/pcb-design/page/pcb-guide-part-1...
https://youtube.com/playlist?list=PL3bNyZYHcRSUhUXUt51W6nKvx...
https://youtube.com/@PhilsLab
I think the hardest things for me so far been (a) getting my head around the idea that everything in a circuit is happening all at once (rather than iteratively like an algorithm) and (b) "input" and "output" are convenience terms, e.g. an opamp can sink current through its "output". Both of these insights have come from seeing real circuits analyzed on YouTube.
You can also see a nice progression there from beginner PCBs to more advanced things.
Deleted Comment
Also helps them guide and drive development of wanted features. I’m convinced there’s no way ODBC support would have happened without it. That’s a feature no hobbyist or maker would care about- it’s specifically geared towards people who collaborate with other engineers and component sourcing departments.
But ODBC support was by Jon Evans (https://www.kicad.org/blog/2022/12/Development-Highlight-Dec...), who is a lead developer but not employed by KSC. He works elsewhere and added it for his own benefit and that of his buddies elsewhere.
The tighter release schedule is something everyone wanted, just because v6 got too unwieldy.
And, the new dragging behavior is obviously what we should have had from the start. Going to make doing quick drawings much easier.
It does have to basically script drive the GUI to achieve some functionality which has now been added to the kicad cli, so hopefully going forward CI/CD with KiCad will be even easier!
0: https://github.com/INTI-CMNB/KiBot
My gitignores don't have anything special. They ignore the *-bak files that kicad makes.
Now that kicad has a stable sort order for its files the diffs are pretty clean and git works pretty well.
I used to use eagle back in the day but stopped being a fan once it was bought/ruined by autodesk. I hate managing parts libraries.
(Edit to add: Oh yeah, any time you click to change a file, any environment variables you had in the path get replaced with the absolute path, so things which had been perfectly resilient against path breakage get brittle again automatically!)
Actually making footprints, though, is super easy. If I have a datasheet, I don't even bother searching for a footprint from someone else (which was probably badly translated from some awful interlingua format), I just make my own.
Bonus if I can find a 3d model of the part. (I work with more connectors than chips, so these are frequently available.) Makes it super easy to doublecheck my footprint, and then I can see housing clearance and stuff in 3D as I lay out the board. Kicad is really, really good at this now.
Where? Many of the editing fields are supposed to resolve paths back to variables when possible.
I'm absolutely delighted that KiCad is as usable and continues to be developed on. I remember a time not too long ago where the Mac version was tragically unmaintained. I now do all my EDA in KiCad. I'm not a professional EE. All my stuff is hobbiest, and relatively amateur, but it's so nice to have tools that are so flexible.
Then you'll be just fine, we didn't rock the boat on interface/interaction like 5->6 was.