KiCAD 6.0: What Made It and What Didn’t

Hackaday - Tue Jan 18 15:00

I’ve been following the development of KiCAD for a number of years now, and using it as my main electronics CAD package daily for a the last six years or thereabouts, so the release of KiCAD 6.0 is quite exciting to an electronics nerd like me. The release date had been pushed out a bit, as this is such a huge update, and has taken a little longer than anticipated. But, it was finally tagged and pushed out to distribution on Christmas day, with some much deserved fanfare in the usual places.

So now is a good time to look at which features are new in KiCAD 6.0 — actually 6.0.1 is the current release at time of writing due to some bugfixes — and which features originally planned for 6.0 are now being postponed to the 7.0 roadmap and beyond.

Changes

As is often the case with big updates, most of the largest changes are invisible to the user, and are the result of significant code refactoring in order to create consistent frameworks for the developers to work to, whilst they add new features from the wish list. What we as users see are the changes that this under-the-hood work enables. A feature change often seems ‘easy’ from a user perspective, but requires extensive internal changes and a lot of developer effort behind the scenes. KiCAD is an old project, with three decades of code history, so unpicking a lot of that to build these consistent frameworks for future work has been a monumental undertaking. In a recent Contextual Electronics podcast interview with KiCAD developer [John Evans] the burden of this code history was explained in this context in a very helpful way, and you can really get a feel for just how tricky it can be to navigate as a new developer and why this update is so important.

Libraries and Schematic Files

Following on from the S-expression PCB library format KiCAD 5.0 introduced, symbol libraries are now described in the same format. KiCAD 6.0 will make the migration at the touch of a button. This format is designed to be human readable, which in turn makes it much easier to write other software that creates or modifies these files.

One useful change is that the dependency upon schematic libraries has been dropped, so once a sheet is completed, you only need the sheet file to open it. No more broken schematic sheets! No more chasing libraries for a handful of symbols, and design reuse is vastly simplified.

These changes, of course, have a downside — once you have opened and migrated a project from KiCAD 5.x, there is no way to go back, so make sure you make a copy first and/or use revision control. That said, so far, I have had no issues that would force me to move back to the previous release.

New Features

Curvy hashed goodness. In all seriousness, this is great news for flex PCB design

The updated or new feature list is so extensive, that simply listing it all here would be quite a long undertaking. As luck would have it, I don’t need to, as [Peter Dalmaris] published a preview of the changes coming in version 6.0 at the start of the year, when most new features and changes were already rolled out into the ‘nightlies’ for beta testing. The first highlight for me is the big update to the Design Rules Checking (DRC) system, which is now significantly more powerful and configurable, and even allows custom rules per board. This feature has its own special specification syntax, and will take some time to learn, but looks like time well spent. Another greatly improved area is the visibility control side panel, easing control of visible elements and helping produce a clutter-free display as you work between layers.

Curved traces look great. Feel free to argue in the comments about their utility. (Maybe in microwave RF designs?)  Hashed zone fills are great for those of us designing flexible circuits, or planes that need to be copper-light for thermal reasons. And while we’re talking about zone fills, there is now a configuration option to allow filleting of corners outside of the zone outline, which makes filleted zones look a lot nicer.

One feature that probably isn’t new to KiCAD 6.0, but I hadn’t noticed before, concerns drag selections. When click-dragging around a bunch of objects, to make a grouped selection, it turns out the tool is direction-sensitive. Dragging from left-to-right only selects items that are completely contained within the box — but the opposite — selecting from right-to-left selects any items the box touches, even partially. I really wish I’d have found this out years ago! Thanks to [Stargirl @thevalkyrie] on Twitter for the heads up on that.

Other big improvements are the unified project setup, with many more options to set PCB properties like stack-up, and at long last, net class definitions at schematic level with customisable colours and styles to improve clarity of design intention. Lastly, there is a new ‘rules file’ import feature for PCB fab definitions and constraints, which will hopefully enable easier setup of board constraints when moving between different manufacturer processes, and reduce the likelihood of the annoying issue of designing a tight board to the wrong rule set. (Never done that myself, oh no.)

The PCB editor has so many updates and design improvements that there is not the space here to do it justice. I suggest reading the release notes instead! The short version is that the workflow has been streamlined, tools have been expanded and regrouped and made more visible, and some of KiCAD’s rough edges and other oddities have been smoothed over.

A New Plugin And Content Manager

One very nice feature that has snuck in to release 6.0 at the last minute is the first version of the new plugin and content manager. This vastly improves the user experience for adding plugins, with the KiCAD project maintaining its own online repository, and new plugins arriving all the time.

This integrated management will enable much better visibility of community-contributed themes, libraries and software extensions, and will surely mark a new era of KiCAD customisation. At the time of writing, notable plugins include the excellent InteractiveHtmlBom, which I use extensively, KiBuzzard for your fancy labelling needs, and KiKit for panelisation tasks.

The repository is in the early stages, but new component libraries are already popping up there too. It’s isn’t entirely push button, however. If a Python plugin is complex enough to depend up non-default installed modules, then you need to manually invoke the Python package manger pip to meet those dependencies. Luckily, at least on windows, there is a special command interpreter menu item with all the Python paths set correctly, so it is a trivial matter to pop open a terminal, invoke pip, then crack on with your project. The Python plugins that need manual intervention should prompt you with instructions when they are first installed. Hopefully future versions of the package manager will deal with such issues automatically! Finally, in true open source style, it is easy enough to add additional repositories, so you can disconnect yourself from the official version if you or your organisation has other needs.

Postponed to 7.0

The wish list for KiCAD 6.0 was really big and ambitious, and in order to get something worth using out quicker, a feature freeze was enacted early last year in order to finish off the features that made the cut and iron out the bugs. Many really good features didn’t make enough progress, or relied on other changes before work could start. Regardless, let’s look at a few of the planned new tricks for the next release.

First off, the Python API is going to change. API access to the schematic object is currently not supported, making it impossible to create plugins that manipulate schematics. This will change in release 7.0, but not until the underlying schematic object is refactored to enable it. There is a planned object properties/introspection API which allow a new class of plugins to be created for even more powerful design manipulation. Fingers crossed!

The next big feature again concerns the schematic editor. Orthogonal wire dragging will be implemented, to enable moving symbols around and keeping the connections looking good. Net-ties! We’re going to finally get proper net-tie support!

The PCB editor is planned to get teardrop support, as well as modern features like trace refining. The ability to adjust trace length matching/meandering is also planned. Design reuse will be boosted by support for layout snippets, and there will be better support for pad stacks and more powerful thermal relief control.

The final and most interesting future feature — for me at least — is the planned PCB constraints management system. This is intended to allow constraints to be specified in the schematic and passed into the board editor, in order to constrain placement and layout as well as feed into the DRC system. This will be an epic feature if it actually happens. Details are scarce right now, but rest assured I’ll be tracking it.

So there we have it, a brief overview of where we are and where we’re going in the world of KiCAD. Keep an eye out for future stories and guides about this fantastic tool, as the KiCAD future is bright, and it’s all open source and therefore free from licensing charges.

Need some help finally taking the plunge to move to KiCAD? Then you’re going to want to checkout the official KiCAD forum, and drop in to the super active KiCAD Discord from time to time.