KiCad: The case for Database driven design

'nuther database quandry:
I am wondering how to deal with alternate symbols.
Example: for a dual schottky like a BAT54S I have two symbols that have different use cases:


But I only have one part number in the database, which can only map to one symbol. For a part with an alternate footprint they must have different part numbers, but not for an alternate symbol.
Any options?

ā€¦i think at the moment no, if you like you can up-vote the following feature request:

Is it possible to make a symbol with two units for this?
It would mean that both units share one of the pins and I donā€™t know if KiCad accepts that.
Maybe itā€™s just a bad idea even if it works. I guess this can lead to difficult to find errors if you use those units in different places and forgot they share a pin.

Hmm. I will just live with one symbol. This is not a common situation, but there are applications. Decades ago people fussed about demorgan gate equivalents ā€“ same issue I guess.

I think itā€™s a bug which it has been there all along and you should report. The symbol browser makes a hyperlink of the datasheet field, assuming itā€™s a URL without expanding variables in the target, and not going through the system or registered PDF viewer. I know the last because I have set xdg-open to use Firefox, but this hyperlink goes to Chrome.

1 Like

So a database is used to select a symbol and subsequent footprint, but what about a part that has no symbol yet has a footprint? I have a small box on my top level schematics I call Other which is where I stick mounting holes, mounting pads that get grounded, and other oddball stuff so I could create a little symbol and put it there. Is that the best way to handle something like this light-pipe? It needs to be put on the board so its mounting holes are added, it pokes the appropriate distance off the board, and the leds are placed appropriately under it. This will also put it on the bom (though it really should be on a higher-level assembly bom):

The workflow of having no symbol at all is not supported at the moment. My advice is to create a symbol (it can have no pins if it needs no electrical connections) to represent this part. Best practice for mounting holes (in my opinion) is to have a symbol for them even without using a database library.

For a light pipe with NPTH mounting holes, I would create a symbol for it (with no pins) to put in your Other box.

2 Likes

+1

My company takes this same approach. Holes, screws, heat sinks, etc. all go on the schematic. We even have a PCB symbol that represents a physical PCB as a part. That way, the schematic BOM includes every single part needed for a build, including the PCB and all hardware. All of this is in our database library. We are an Altium shop at the moment, but we have completed a standard design in KiCAD and will be sending it to our PCB house shortly to prove out our workflow. Assuming that goes well, we will start transitioning to KiCAD next year.

Also, we have successfully converted several libraries to KiCAD and things are looking pretty good. My current task is convincing my company to shell out for support. Iā€™m almost there.

John

5 Likes

Exactly the same here. Just another $$cad and
anticipated time-frame. Iā€™m just there.

2 Likes

That makes a lot of sense to include the extra parts so they auto-generate on the bom. Even the bare pcb (with vendor, costā€¦) ā€“ elegant. Could even add enclosure, accessories, manual, packaging, assembly/test costā€¦ Flag those extra lines items to exclude for pcb build bom, but a super-bom could give you the entire product and cost with one click. Well, for simple 1-board products. Hmm, just thinking out loud.

The most difficult thing is to decide what falls under ā€˜boardā€™ and what under ā€˜systemā€™. Cables?, Panel connectors? SW? All boundary stuff is always difficult to decideā€¦

Simple, if the PCBA isnā€™t performing the inclusion of said component on the board, then itā€™s a system BOM item.

PCBA do not appreciate you sending them a BOM and then telling them after the fact to ignore items that arenā€™t even marked DNP.

5 Likes

@JohnSG -

"My company takes this same approach. Holes, screws, heat sinks, etc. all go on the schematic. We even have a PCB symbol that represents a physical PCB as a part. "

This is how I always did it. Made parts for mounting holes, etc.

Great to hear that you are in a corporate environment moving to KiCad from Altium!!

@teletypeguy ā€œBut I only have one part number in the database, which can only map to one symbol.ā€

That, in my opinion, is how it should be. If you need another symbol, you create another part number. Which impliesā€¦ that you have your own set of part numbers that are the database key field. I.e. you should create a ā€˜corporateā€™ part numbering system (just dumb numbers - donā€™t try to put any intelligence into the number, start at a million or ten million and go up sequentially) and not use the manufacturers part number. The manufacturers part number is a field that is associated with your corporate part number like any other.

Iā€™m probably stating the obvious, but it wasnā€™t clear that your database is set up that way from your post.

well, there are cases in which having multiple schematic parts for the same internal code is handy:

  • when you and your colleagues have different preferences on the graphical representation :slight_smile:
  • when you work with big FPGAs or high pin count micro controllers;
    often we prepare different schematic symbols for different projects to provide a clearer interpretation of the schematic.

With OrCad CIS you simply have to provide different names separated by commas in the symbol column of the db.

Thanks, too bad itā€™s missing Device lib with the two R and C symbol :wink:

@craftyjon How do you set generic placeholder values on the R/C symbols for the kicad_dbl library to update those with whatā€™s in the database?

I skimmed through the doc and I donā€™t think that part is covered: Schematic Editor | master | English | Documentation | KiCad

Itā€™s not missingā€¦ these are provided as part of the default KiCad libs.

How do you set generic placeholder values on the R/C symbols for the kicad_dbl library to update those with whatā€™s in the database?

You donā€™t need to do so. You just configure the fields in the database config file.

Cool I didnā€™t know the default library had generic symbols.

How can I unbundle this mess though?

To get something clean like:

Also ${Capacitance} does not update with the Capacitance field, is that my setup missing something?

Place the symbol on a schematic instead of looking at it in the symbol editor. Using the symbol editor with a database library is not useful.

Yes we have a company number system that encompasses everything we use from parts to board-assemblies to manuals to packaging stuff, and this will be the ID key in the new db.

However, I disagree that a different schematic symbol should have a different part number for the same manufacture part number and footprint (different footprints should, of course, have different part numbers. As an example, maybe I want one of these two symbols for a db9 (de9 for you purists) ā€“ same part number but different symbols:


Now I have not used a db9 in many years, but this could apply to a 2x5 header that I want in two versions, or the dual diodes I showed before, or maybe I like the alternate gate symbols with bubbled inputs sometimesā€¦
I will now need to define different part numbers (for the same part) pointing to different symbols, such as:
1001234 is symbol A for part 1001234
1001234-alt is symbol B for part 1001234
or something like that. It is not unworkable, just requires some bom cleanup later. Being able to select an alternate symbol at schematic time would be nice, but would be a new feature request that would likely be way down in the priority queue.

But I am not complaining as the database functionality is great, and is forcing me to go through my entire spreadsheet number system, rearranging, adding symbol/footprint/datasheet fields for kicad, to pull into a db soon and get started working with it.