Who uses KiCad in a Professional Setup? And How?


I’m curious, how many professional users of KiCad are out there, and how their work flow looks like. I’m talking of 20+ designs per year.

In Team14 we use KiCad from the very beginning (2017), and I used it in different commercial and hobby projects since 2012.

Over the time we developed a procedure, which leads from the schematic down to the Gerber/BOM and order lists, with KiCad and many different python tools and scripts. That procedure also includes a custom database (a big csv-file), from where all other things were derived. It’s a quite interwoven process and thus maintenance is rather time consuming. Further more, in the current state of development, it isn’t quite user friendly either.

I’m thinking of it building a centralized GUI, to run and monitor all the different scripts for a given project. If I knew, others would also need something like this, I would be a bit more motivated to implement that. But perhaps this is too specific to our work flow anyway.

Here is a flow chart, which isn’t completely up to date, since the current extension to this only exist on paper.
overview.pdf (25.2 KB)

How do you get along with all the hassle of parts database, ordering lists, assembling prototypes and generating production files?

Greets, Karl


Hi Karl,
There is an old thread , probably you know it already, but I believe it does not fulfill the 20+ designs per year :wink:

I do not have any experience on that magnitude, I just left my preference here: I prefer no GUIs :stuck_out_tongue:
I am thinking something that will do the process by its own on request or periodic running, then there could be some service that will provide the status and progress of that workflow so maybe you can even thinking to generate JSON, MQTT to create some dashboard…
That would be something that you could integrate on a server, checking the project repositories and integrate with some online platform of the project ( JIRA, Redmine, Gitlab, … )

my 2 cents ( of € ) !



Printed wiring board design has never been my primary function, though it was an important part of other design work I performed. In my current position I have done only 4 boards so far this (calendar) year and probably did 20+ boards in only 2 of the last 25 years. My “processes” are probably similar to yours: a collection of scripts, manual intervention recalled from memory, and notes scribbled into personal documents.

What you propose is an integrated business IT system that links the design function with manufacturing, purchasing, accounting, configuration control and inventory management. That is something much different from what KiCAD is, or is likely to become in my lifetime. I have the deepest respect and admiration for a tool that can effectively do all of those things. Among the dozen or so employers I’ve had, from 5-man shops to giant corporations, I don’t think ANY of them had tools which performed all of those functions reliably and efficiently. Several threads on this Forum have dealt with extending the BOM functionality for better support of manufacturing and/or purchasing. These may provide starting points for your development efforts.



@dchisholm, thank you for your words.

thanks for the link. very interesting anyway.

Generating all downstream production files on a build server seems to be a nice idea. If that would be working, that would probably increase the quality of a design and force the user to set all needed properties and dependencies correctly.

So what are these outputs:

  • BOM single, can be created with KiBOM
  • BOM grouped, also with KiBOM
  • Pick’n’place file: I think, PCBnew cannot be run from a shell with parameters to export a .pos file, right?
  • same for Gerber and drill files

@pointhi do you know anything about a CLI for PCBnew and eeschema? Running ERC and DRC automatically would also be very important.

Greets, Karl


This might help you:


I also work with similar workflow. To me one of the challenges is to keep the internal database reference (UID) “in sync” with manually entered data e.g. schematic-visible value, choosen footprint.
I do a “cross check” on output files where I perform a lookup for e.g. value in a UID string, to find obvious errors. But I’m aware this is not 100% error free approach.
How do you deal with that?


It does not seem that DRC is accessible from Python at the moment:


Exporting a SVG/PNG/Gerber on the other hand is possible using the plotter interface. But not as easy as I would like to get it.


That’s the tricky part and what I meant by ‘interwoven’. Unfortunately there is no such end checking. A way, I’ve been thinking about, could be, to export the data in an easily copy’n’pastable way, which was entered into the schematic and is not already part of the database. A merge tool would be very handy here - but I don’t know any for CSV-files. It would then be an iterative process. My idea further is to generate ‘atomic’ parts out of the database, which links the symbol, footprint and InternalName (as we call it, think it’s your ‘UID’). Perhaps a data sheet link would also help.

Thanks for that info. Do I understand that correctly, that the Python interface is only usable within a running KiCad instance? Or can it also be used from an external shell/Python script? Currently I haven’t had a look into the Python scripting within KiCad.


With respect to your requirement to produce the output files on a build server, I wonder if you might have come across this project ? It is based on using a makefile to script the production of the desired output files. this seems like a sensible and very flexible approach. The author recognises the point that @pointhi raises - that DRC is not (yet) scriptable.


@John_Pateman thanks for that link - didn’t know about that.


@KarlZeilhofer, actually I am using these 2 python plugins to solve this steps:

  1. KiCost (https://pypi.org/project/kicost/) for the BOM/cost and purchase list at online distributors;
  2. iBOM (https://github.com/openscopeproject/InteractiveHtmlBom) for help with assembly by ourselves.

But I do most of hobby board and University projects. I good workflow could be nice.
I already used to some professional layout, but none take a complex mechanical assembly or needed too much infos.


More like 10 a year but it is professionally sort of part time though… they get ordered in quantities of 300-400 , around 100 and around 50 depending on which boards they are still get gets into the tens of thousands of dollars a year.

Mostly small PCBs 5x5mc or 10x10ish 2 layer.

One thing I think is pretty important for some fabs,especially like the small local one I use in Charlotte, is that you give them notes on assembly of certain things. I do this by putting it in the comments layer of the PCB design and making PDF of that and include it in the zip file I send them basically an “assembly drawing”.

That’s in addition to the BOM + gerbers + drl file. Also I check my boards on freedfm.com before ordering from anywhere takes about 30min but saves me the headache of paying and then having to reorder if there is a problem.

If you have mostly done larger DIP or through hole components, and move to doing SMT, make not of your pad soldermask clearances they will likely be too wide and cause parts to bridge.

I version my boards 1 2 3 etc… but if there is no change to gerbers (implying no NRE for boards I’ve ordered before) I only make it a point reversion so 1.1 1.2 1.3 etc…


I design PCB professionally but we are a very small firm and I am busy with not only PCBs so I design about 5…10 PCB a year and these are only 2-layers PCB till now.
I don’t use KiCad yet (only one PCB as first try few months ago), but I plan to use it shortly.
We do not assemble our PCBs - since 2004 we order them at contract manufacturer so I don’t care about generating ordering for elements and other things you discuss.
We have never used any scripts during our documentation generation. I have never contact with anyone else designing PCBs so first time I got the knowledge that people uses some scripts to get anything from inside the schematic or PCB file was about an year ago when I start to read this forum. We use Protel 3 and work with its binary file formats. My first experiments with KiCad were to find if I will be able to get all I need without writing any scripts (I don’t know Python). I found I can.

I decided to write here hoping it can be useful for someone.
Mainly I wont to point at one source of errors, and don’t know if it relates to KiCad.
At the beginning (about 1997) we tried to generate BOMs directly from Protel, so we added to all symbols the element to be used specification. When you put a symbol at schematic its contents is copied there with no connection to source in library.
I don’t know yet if KiCad works the same way.
Let us assume that some time after you have to change that specification. The reason can be - the part is no longer in production, or contract manufacturer told you that part manufacturer changed the distribution rules and they can’t order 100pcs for your PCBs now, and they will not order 3000pcs of element used only by you. In both cases I assume you found the direct replacement so you don’t generate the new symbol for it but just change in symbol definition in library the description of part to use and assume if I design the next PCB I will got the right description. And it works correct until you have to make the next version of that old PCB. You get those old part specification in your BOM. It is easy to overlook it.
After it happened few times to us we decided that specification of elements have to come from other source than schematic to always be up-to-date.
So from BOM generated form Protel I use only 3 columns: Number of parts used, Part name, Part references.
This columns I copy to OpenOffice spreadsheet and then the rest is automatically added. There is the function to find the row by lookup column for text and get contents from other column in that row. OpenOffice functions are translated to language you use so I don’t know english name of that function and I think (not sure) I can’t change language as easily as in KiCad. Then I sort my BOM by one column got the same way from lookup tabele. Then I copy and paste to another spreadsheet only texts (without functions) and done.
The same way I have got BOM for that one PCB designed by me with KiCad. I have only had to change some columns order. I plan that when I will switch to KiCad I will do my spreadsheet once more (to clear it from parts we don’t use since years and to be compatible with KiCas - in Protel we use parts like 10u/25V and KiCad 5 don’t allow for use ‘/’ in part name).
I think the order lists can be also done at the same process. As you fill and copy columns with part specification for Digi and other column for other source. Then just delete rows with empty specification for selected source. Of course it is not fully automatic, but it takes not a lot of time (may be summary less then designing all scripts). With Protel much more time I spend on getting the PCB pictures I liked. Because of this, how to get it more easily in KiCad, was one of my first questions I was trying to answer.


We’ve been using it professionally for a couple of years and are nearing 20 designs per year. We’re also transitioning from a single PCB designer to a team of three, so the monumental question of process has been thrust into the limelight again.

I’m a big fan of small tools + checklists, rather than monolithic solutions. So essentially we have a wiki that documents parts of our procedure, and each engineer is able to use tools or do things manually as necessary to ensure a good output. Things change too quickly, and you become too resistant to improvement if you have highly automated processes.

We have moved to a shared footprint and symbol library that sits in an SVN repo. Once a part is verified (usually by the empirical confirmation that occurs when you populate the PCB) it gets committed to the library for future use.

And we do use kifield heavily for keeping the schematic BOM neat. We do not however, automate the product BOM - usually we keep a separate spreadsheet that contains all components (enclosures, mounting hardware, batteries, etc.) and just merge it with the schematic BOM as necessary.

Component ordering is also a manual process - though we’re free to leverage the distributors various CSV import tools which get better and better. Automation is too hard when there’s always a part or two that needs to come from a different distributor, or you need to do some on the fly substitutions.

Similarly for Gerber generation - when the time comes we just run the plot functions manually from KiCad. It doesn’t happen very often, so I find a checklist that reminds you of our conventions is a very low overhead way of ensuring we get consistent, efficient work done, but doesn’t tie us to APIs / manufacturer requirements / feature sets that are all highly subject to change.


I have been using Kicad professionally for more than five years so far. I believe it is now a very good package and, importantly, it looks like being constantly developed with very interesting new features added every year.

I find that the main interesting fact about Kicad, apart from the obvious advantage of being completely free, is the that all the project files are text files with a published and free format which you can easily understand.

Many companies are thinking to move from other packages to Kicad and, normally, apart from learning the package itself which, in my opinion, is not a very big task, the real obstacle is indeed dealing with two different PCB project types because the translation of legacy projects into Kicad which can be a bit of work.

During the last five years, I have translated into Kicad projects from Orcad (Capture, Layout, Allegro), Cadstar and Altium Designer and I have always felt it was worth the effort. Some of them were complex using hierarchical schematic sheets, BGA devices and multilayer boards (8 to 12 layers).

If anybody needs help on such kind of translations I believe I can help, so could contact me if needed.


I have been using KiCad now for ~2 years for making LED-PCBs. Per year I design approx. 20 pcbs.


Purism uses it for development of Librem 5 smartphone


What a great example of the KiCad 3D Render:


the image is not viewable…
Is that this one?


I can see both images.