I recently enquired on the KiCad discord channel about the ability to link a parts database to KiCad, and received the response that Database linked Libraries are planned for the V7 Kicad Release. I made a few further posts about it, but before I pressed the issue further, I wanted to better inform myself on KiCad’s capabilities.
Upfront, this capability is planned for the version 7 release, so if you bear with me and read through this and think it is useful, go vote for and comment on, and provide further input on it here:
A little about my background. I’m not a heavy user of PCB schematic capture or layout tools, but over the years I have need to learn and use them for various work and personal projects. In order of tools learned, I came from Orcad/Orcad Layout, then migrated to Altium Designer, and today use (occasionally) Mentor Graphics Xpedition Designer/Layout in a commercial/professional environment. My day job is mostly related to RF/microwave design (which all of the above tools fail at to varying degrees, forcing us back to caveman use of autocad, etc), but for more normal digital/analog design, work well.
I have need to use a PCB design system again for a personal project, and while I have most of the options available to me, I would really like to migrate to and become a supporter of KiCad. Unfortunately, each time I have evaluated its suitability for a project, I have stopped investing time and effort as soon as I learned that it has not yet adopted the ability to link a parts database. Having used (and built) a database linked design ’environment’ in each of the above named systems (Orcad, Altium, Mentor), I find the benefits so core to a successful design that not having that capability in KiCad a non-starter for consideration. That said, I see KiCad being so close to rivaling the above commercial offerings, that I’m here to plead the case for database driven part libraries, with the hope that others will fan the flame and make this happen, pushing KiCad into the realm of professional PCB layout tools.
I refrained from doing this for a month, and to make sure I wasn’t speaking/pleading out of touch, with KiCad’s capabilities, have been spending time better learning this tool via Peter Dalmaris’ ‘KiCad Like a Pro Course’. I haven’t completed the whole course, but have started a simple design of my own that is do-able (because its so simple) without the subject database libraries, but this can’t wait. KiCad needs this capability.
So what is it? Rather than storing part information in the symbol and linking to a footprint, a parts database centralizes all part information parametrically in a database with links to symbols, footprints, 3d models, datasheets, images, etc.
The Benefits/Opportunities/Pro’s of this approach are multi-faceted.
- A library of commonly used partsis developed
- All pertinent information is stored and managed from one central place (a database)
- All part parameters are stored and filterable parametrically (This is the most important from a design perspective!!)
- Each part is standalone and once built, need to only be maintained as needed (i.e. pricing, or current inventory if those are important to the user)
- A small database can be developed quickly by downloading and populating whole families of parts
- A part is built only one time. You learn it once, gather all the information once, and reuse that information many times going forward. But the work in building the part is done only once!
- Once setup, you’ll never go back!!
The Con’s of this approach are minimal in my opinion
- Takes time to build.
- Can get out of date (pricing most likely, but parts obsolescence also)
What do I mean by parametric? Basically, you populate the fields of a part with the following filterable information
User/Company Part Number
Manufacturer Part Number
Distributor Part Number
Characteristic (for something that doesn’t really fit any of the other categories but doesn’t warrant its own category)
Sub-Characteristic (for something that doesn’t really fit any of the other categories but doesn’t warrant its own category)
Alternate Part Information
Library Ref was the symbol name (reused as needed)
Footprint Ref was the footprint name (reused as needed)
Yes, it takes time to build this, but not a tremendous amount of time for the benefit gained. It took me a few days to populate a data base of several thousand parts a few years ago by downloading parametric part data from DigiKey and populating an access database with the above fields (not every part will have every field populated). But once built, you have developed an “ecosystem” that you design within and build upon as you move forward. And that was just one person’s effort. A community build parts database could be phenomenal!
So once the database is built, if I needed a resistor, I’d filter on type (resistor), value (100 ohm for example) and footprint (0805). That would get me down to a handful of parts to choose from. A preferred part is something I might keep in stock
Not all fields would be populated, only those pertinent to a part. I did this in the past using Altium, and 3D models weren’t available for hardly anything then, but a parts height, combined with the footprint, could give a very good representation…
Again, when you work like this, you are much more working in a design ecosystem that on just a schematic.
The primary benefit for me, as a small company, was the ability to parametrically search the database for a part, and have all the info on that part in one place. If I needed a capacitor, I filtered on caps, then the cap value, then maybe the tolerance or temp rating, etc. I had the data sheet for that cap linked so I could easily get more info on it. And all that info was made part of the electronic schematic (although not all was shown).
When I created a BOM from the finished schematic, the manufacturer part number, digikey part number, and price, along with the total quantity and the ref designator for each instance of its use was pulled into an excell sheet. All that parametric data was also available any time I touched the part. I found it indispensable, and I can’t imagine building a board with more than about 30 parts on it and not doing it that way now. Also, all the footprints and schematic symbols were controlled by me - no update could wipe them out, etc… My database was built in Access, although it could have easily been migrated to something else.
So that’s the ask, and the pitch for the ask. As awesome as KiCad has become, I don’t think it will seriously compete with commercial offerings until this capability is implemented and implemented well.
If you think the above sounds like the cat’s ass (and it is, once you work this way), then I again ask that you give it some momentum for the next release, and development ASAP.
Looking forward to other’s thought’s and comments.