The end of 2022 is here and quite some work has been accomplished on various parts of KiCad over the year.
We are all working to hopefully have a KiCad 7 release by the end of January 2023 but no promises!
This is a highlight of some (but not all) of the new features added since the last development highlight.
PCM automatic updates
Each time you launch KiCad, the plugin status is automatically queried in the background and displayed:
You can also disable the update checking behavior in Preferences.
Drag & Drop
lulu731 in MR #1244 added the drag and drop handles needed to various parts of KiCad that results in the following actions:
.kicad_pro, .pro files trigger opening project
gerber and job files open Gerber Viewer
Eagle and Cadstar files trigger open project
Schematic gets appended
Drawing Sheet Editor
macOS Apple Sillycon support
Adam Wolf spent time in troubleshooting and identifying changes needed to get KiCad to build and package correctly as native Apple silicon processors (M1, M2, etc) bundles. Resulting in commit 98775afc and MR #376 kicad-mac-builder which took plenty of effort to decipher the correct process with Apple’s continuing effort to locking down the macOS ecosystem for better or for worse.
Command Line Interface
Mark Roszko in a slew of commits has added a new
kicad-cli binary to the KiCad packages.
kicad-cli binary was necessary to work around limitations on applications being both GUI and console on Windows at the executable level.
Along with wxWidgets having a distinction between a GUI and console app for initializatin.
kicad-cli brings all the necessary functions to automate export elements of schematic and pcb designs.
The currently avaiable commands are:
kicad-cli sch export bom kicad-cli sch export netlist kicad-cli sch export pdf kicad-cli sch export svg kicad-cli pcb export drill kicad-cli pcb export dxf kicad-cli pcb export gerber kicad-cli pcb export pdf kicad-cli pcb export pos kicad-cli pcb export step kicad-cli pcb export svg
You can use the
-h argument to find out more about the command specific options.
These changes have also enabled the STEP export to work headless on Linux, unlike the original
We hope this is a useful mechanism for users to adopt. We do plan to introduce a GUI based jobs system in KiCad 8 but see this as a interim solution.
Schematic Editor Improvements
Seth Hillbrand in commit 524b129c added support for explicitly marking placed components in a schematic as "DNP" or Do Not Populate. The resulting components are also greyed out in the schematic and excluded from any KiCad generated placement files.
Simulation Model Editor
Mikolaj Wielgus in MR #1220 added a simulation model editor. This is a new dialog available as a "Simulation Model" button in the Symbol Properties of any schematic symbol. It allows you to configure simulation model parameters in a GUI rather than spice text inserted on schematic and the resulting configuration gets passed to the simulator as expected. You can do everything from configuring a symbol as "standard" spice models (resistors,caps,diodes,bjts), to assigning custom models in libraries (it will even load the library and let you select individual models contained within) and even let you customize the schematic pin to spice pin pin mapping.
A long requested feature by certain users of KiCad has been the ability to link component selection to a database which is common in other schematic CAD tools. Jon Evans went ahead in MR #1282 to add connectivity to external databases via ODBC functionality across KiCad’s three main platforms.
The database library system allows creating a centralized database of symbol to footprint associations along with any metadata about your parts that can be shared across your schematics by you and others connected to the same database.
As a warning, KiCad’s intention is only to utilize a database as a source of information. It will never provide an interface to manage said information and it is up to user’s to integrate it with some other external tooling as part databases get very workflow specific very fast.
More information can be found here: https://gitlab.com/kicad/code/kicad/-/issues/7436 and prelimary documentation is available here: https://docs.kicad.org/master/en/eeschema/eeschema.html#database_libraries
An ongoing forum discussion about the feature is also here: https://forum.kicad.info/t/kicad-the-case-for-database-driven-design/34621
Hyperlinks on Schematics
Jeff Young and Roberto Fernandez Bautista in commit 840bcffefb7f9108b72eeba715536c4320fe9bee, commit 9b007ca4bf042f9915faeef0f87e4aefcc40b4d3 added support for hyperlinks inside schematics. This means you can place a text object on a schematic page and fill in a new Hyperlink property that makes the text object become clickable.
Supported hyperlinks are:
#:<pagenumber>(where <pagenumber> is any valid schematic page)
PDF Bookmarks (Table of Contents)
Now in a schematic PDF generated by the Plot action in the Schematic Editor, you will find bookmarks populated with a list of sheets and links to symbols within the sheet. Clicking on items on the bookmark list will jump to the relevant page and location.
Jeff Young in commit 8afc1db7a6 added the export of placed component info in schematics to the plotted PDF. This is a list of component field data displayed when the symbol is clicked in a PDF viewer. Unforunately, the functionality required for this to work is implemented per PDF spec but support across PDF viewers is not consistent. Adobe PDF Reader/Acrobat are known to display the list correctly.
Also added by Jeff Young in addition to Component Info and the implementation of schematic hyperlinks by Roberto, hyperlinks are also embedded into the PDF and interactable.
Hyperlinks between pages
Hyperlinks to external URLs
Sheet symbols link to datasheets
PCB Editor Improvements
Various PCB Layout Tool Enhancements
Mike Williams has worked on various quality of life additions
Background bitmaps in the board and footprint editor
A sometimes requested feature by some users has been the ability to display an image in the background so that PCB traces can be copied easily from some original reference PCB being reverse engineered.
Ever wanted to just completely unroute a footprint for reasons? commit ca0c9f12e0 has made this possible.
Auto-complete trace route
A nifty new utility added in commit 1a023f5dd that may be invaluable to power users with Hot keys, you can now draw traces partially and ask the PCB Editor to complete the trace the rest of the way to the nearest ratsnest end. It will stop and force you to manually route if it can’t find a route.
Attempt to Finish Selection
Related to the trace route completion feature, you can now select items and ask the PCB Editor to attempt to "auto route" traces between them. It will iterate each unrouted part of the item and attempt to connect it to the nearest rats nest.
|This is not intended to be an autorouter but instead a useful power tool to make connections quickly that sort of acts like one 😉|
This panel in the PCB Editor enables typing query strings with wildcards and filtering out objects on the design while displaying all of the results in a list. The list can be clicked on to select objects on the editing canvas.
Jon Evans took over work that was years ago started by Maciej Suminski to implement a unified properties system for editing within KiCad. The purpose of a unified properties system is to enable dynamically generated GUI interfaces that can be reused across multiple types of items rather than having to create dialogs for every possible object and it’s editing options.
The Properties Panel is now available in the PCB Editor as a result.
One immediate benefit is the Properties Panel allows multi-editing objects with similar properties, simply select the objects you want together and the potential options are displayed.
Future plans beyond 7.0 will be bringing the properties panel to the Schematic Editor and Drawing Sheets Editor.
Improved footprint spread and Pack & Move Footprint Tool
Have you ever drawn a large schematic and then finally opened the PCB board to begin a layout and find yourself staring at a jumbled mess of components to place? Well fear not!
First the algorithim that placed components on the PCB was improved to result in a more compact result.
Here is a before and after example of this change:
Secondly, a powerful new tool was added that let’s you select a logical portion of your schematic yourself in the Schematic Editor and with a new right click menu option in the PCB Editor, you can now "Pack and Move" the selected components as one compacted group rather than having to jump around all over the PCB Editor to locate and drag components.
STEP Exporter Changes
Mark Roszko in a series of commits overhauled the STEP exporter to use the same PCB parsing engine as the rest of KiCad. It’s independence from the main KiCad codebase resulted in various bugs over time and became hard to maintain as the main PCB format evolved.
This change now brings the addition relative 3d model paths to the footprint. Simply start the paths with the expected ./ or ../ and the 3D viewer and STEP exporter will attempt to find the model relative to the footprint file. This change should allow better portability of footprint libraries.
Finally, "3D Path Aliases" were removed from KiCad. These were an independent system from the "Environment Variable" system also used for paths. It had it’s own file format and usage syntax which both introduced unexpected bugs. Unifying the system makes the usage of Environment Variables standard throughout KiCad. "3D Path Aliases" will be automigrated to an Environment variable on launch. However, the alias may get renamed if the alias had characters beyond uppercase A-Z,0-9 and underscores due to the limitations of Environment Variables across platforms.
End of Year Wrap Recap
The KiCad developers held a recap livestream on December 17th, 2022. It covers a few more features and discussions on the future of KiCad.
2022 Codebase Contributors
The above features weren’t the only contributions made to KiCad, we would like to thank all of the contributors this year for contributing to the KiCad codebase (this includes translators in this list!)
1481 Jeff Young 576 jean-pierre charras 510 Seth Hillbrand 372 Mark Roszko 205 Mikolaj Wielgus 202 Jon Evans 157 Mike Williams 109 Alex 95 Wayne Stambaugh 77 Henrik Kauhanen 70 Tomasz Wlostowski 67 Roberto Fernandez Bautista 59 Ivan Chuba 49 co8 j 48 Ulices 46 taotieren 45 Eric 43 ZbeeGin 41 Wellington Terumi Uemura 40 Mark Hämmerling 37 Jan Straka 37 Toni Laiho 33 Ian McInerney 32 Arnau Llovet Vidal 30 Thomas Pointhuber 25 Fabien Corona 25 김랑기 23 markus-bonk 20 Sylwester Kocjan 20 qu1ck 19 Tokita, Hiroshi 19 gurqja3810 16 Marco Ciampa 16 WhiteChairFromIkea 16 aris-kimi 15 dsa-t 14 Mustafa Selçuk ÇAVDAR 12 Maciej Suminski 10 Simon Richter 10 이기형 9 Jonathan Haas 9 boonchai k 8 Ola Rinta-Koski 8 YunJiSang 7 Steffen Mauch 7 VicSanRoPe 7 박세훈 6 Axel Henriksson 6 Kevin Lannen 6 Kuzemko Alexsandr 6 Miklós Márton 6 kmn4555 5 KwonHyeokbeom 5 Simon Schaak 5 Tian Yunhao 4 Ettore Atalan 4 Graham Keeth 4 Jan Mrázek 4 Konstantin Baranovskiy 4 Mario Luzeiro 4 Neko Nekowazarashi 4 ky107601 4 obit 4 김세영 3 Andrey Fedorushkov 3 Bevan Weiss 3 Jakub Janek 3 Rigo Ligo 3 kliment 3 minsu kim (0xGabriel) 2 Adam Wolf 2 Alex Gellen 2 Alexander Dewing 2 Allan Nordhøy 2 Barabas Raffai 2 Bas Wijnen 2 Brian Fiete 2 Eduardo Behr 2 Frank Zeeman 2 Greg Davill 2 Grzegorz Szymaszek 2 Huanyin Liu 2 Kliment 2 Krzysztof Kawa 2 Miklos Marton 2 Rafael Silva 2 Scott Hanson 2 Steven A. Falco 2 ___davidpr 2 lulu731 2 luz paz 2 lê văn lập 2 prometheus 2 김용재 2 이윤성 1 Adam Wahab 1 Andrii Shelestov 1 Artem 1 Benedikt Freisen 1 Bobbe 1 Brian Mayton 1 BugRepellentExtraStrong 1 Bế Trọng Nghĩa 1 Chetan Shinde 1 CloverGit 1 Daniil Nikolaev 1 Davide Gerhard 1 Dejan Smole 1 Evils 1 Forrest Voight 1 Franck 1 Franck Bourdonnec 1 Francois Berder 1 Frank Palazzolo 1 Gökhan Koçmarlı 1 Hanna Breisand 1 Håvard Syslak 1 J RB 1 Johannes Maibaum 1 Jose Perez 1 Keisuke Nakao 1 Lorenzo Marcantonio 1 Mads Dyrmann 1 Marcel Hecko 1 Marco Langer 1 Marcus A. Romer 1 Michael Misirlis 1 Michal Sojka 1 Ondřej Čertík 1 Pavel Dovgalyuk 1 Peter B 1 Petri Niemelä 1 Petter Reinholdtsen 1 Radek K 1 Sašo Domadenik 1 Scott Candey 1 Stanislav Kaliuk 1 Stefan 1 Stefan Hamminga 1 Tanay Gupta 1 Tom Keddie 1 Trần Phi Hải 1 Vesa Solonen 1 Vitan Košpenda 1 Werni 1 Yang sheng 1 Zoltan Puskas 1 Zoran 1 alexfanqi 1 canwail 1 dana 1 frutiemax 1 hogthrob 1 jeongsuAn 1 leonardokr 1 lukas-heiligenbrunner 1 magical-obama 1 maksz42 1 passionateengineer 1 pondahai 1 ssantos 1 willliam 1 yangyangdaji 1 МАН69К 1 木 王 1 김낙환 1 김호진 1 남우근 1 이상수
It has been two full months since the February development highlight went over the changes in January.
Here’s a fresh update on new features and changes that have happened to 6.99 nightlies. This isn’t a complete list as many changes come in smaller incremental changes that are hard to talk about.
It’s only been a month since the 6.0 release and work is well under way for the future 7.0 release with many features and improvements to come over the course of the year.
As a friendly reminder, nightlies are currently unstable, you can use them for testing and experimenting but we make no guarantees on the stability right now. Use them at your own risk, keep backups, especially if you are upgrading nightly versions.