IMPORTANT: Symbol Library Table Merged into Development Branch

Yes, the new symbol library file format will be similar in design to the current footprint file format. Symbols will be one symbol per file for the most part. There may be some exceptions.

1 Like

Rescuing is not remapping. Rescuing occurs when the symbol in the cache is different from the same symbol found in the library or the symbol in the cache cannot be found in any library. Remapping maps the library symbol links of the schematic symbols to the new library table.

Prior to my commits on Friday, the symbol library table dialog had no effect. It was just part of an incremental development path.

2 Likes

Windows nightlies are fixed.

4 Likes

Are more than one path to symbol libs respected?
(In other words more than the standard KICAD_SYMBOL_DIR path?)

You can use any environment variable you want for legacy plugin entries in the symbol library table as long as it is a valid absolute file path. The legacy schematic plugin only supports file paths, not urls.

After spending some time to reorganize my custom libaries the last weeks, I finally got to test this in a VM. I cannot say I got hildogjr’s manual method above to work. What did work very well for me is (two distinct strategies):

  1. If all links to the symbol libraries are up to date in the project (typically for the latest version of a recent project), make sure only the libraries in use are are defined for the project in the old version so that the correct libraries get linked. Edit references to these libraries manually into the global sym-lib-table. Then open the schematic in the new version and when loading the project use the remap symbols tool , which then works beautifully. Make sure to save the schematic after the conversion, otherwise one gets into trouble.

  2. For archival purposes of older projects and/or where the the link to the original libraries may be broken (this refers to point 5 in the blog post),
    a) while still using the old version, copy and rename the copied *-cache.lib file for the project to “project.lib” (or a name of your choice).
    b) Copy a sym._lib-table file with the following content into the project folder (assuming you named the library “project.lib”):

(sym_lib_table
(lib (name project)(type Legacy)(uri ${KIPRJMOD}/project.lib)(options “”)(descr “Legacy Project lib.”))
)

c) Still in the old version with the project open in Eeschema (do not perform any rescue when opening), delete all the links to the libraries under preferences- component libraries. Add a local reference to “project.lib”. [It is also possible to execute the step a) above in the file dialog]. Upon pressing OK in the component libraries dialog, if there were any broken links to libraries, this will now appear to be fixed (provided that the *-cache.lib file was up to date). Close the schematics (no save needed).
d) Open the schematic in the new version and use the remap symbols tool upon opening. This should now work flawlessly. Make sure to save the schematic.

A further comment: I tested this with the Nov. 25 nightly (pretending to be patiently waiting for the Windows nightly to get updated again :wink: ). With this version if getting into the rescue dialog when opening the old schematics, the rescue will not automatically cause the rescue library to be added to the project. It is then important to skip the remap upon opening the project, then add the rescue library as a local library at the top under Manage Symbol Library Tables, and finally use the remapping tool from the tools menu before saving the schematics.

Late edit: Note that paragraph c) belongs under 2. above, the quotation messed up the formatting

1 Like

When will I be able to force an update of all symbols in a design from library?

Propagate changes made in symbols/part library like text properties added/changed for example.

In layout you can force refresh of a footprint and also all footprints when reading the netlist.

Eeschema also need this functionality.
Libraries constantly gets maintained and bug corrected etc.
This must be able to push into old schematics.

A global refresh would perhaps be somewhat risky? But an equivalent to the Exchange Footprint function of PCBnew could be very useful. Already now, a number of features are updated in the schematics when the corresponding symbol in the referenced library is updated. Metadata remains though. However once symbols will be stored together with the project in ver.6, there will be more need for these kind of functions.

In pcb_new the footprints are really stored within the pcb file. This is not the case for eeschemas symbols.
They are cached in the so called cache lib.
If a symbol changes in the library, kicad will ask you if you want to rescue the symbol or use the symbol that is currently in the lib. (If kicad detects a change between the cached symbol and the library symbol)
This dialog should pop up as soon as you open the schematic.

But remember in kicad v4 symbol names need to be unique over all libs. Kicad will take the symbol with the specified name from the lib having the highest priority. So if you change a symbol from the official lib and safe it in your own lib, kicad might still take the other official symbol. To go around this make sure your personal lib is near the top in the component libs dialog.

yes,

this wording “rescue” is a very confusing one, i wish that could be changed one day.

on to the topic.

metadata is not updated.

you will manually need to add same part again from lib, give it the same refdes as the old one,
given that you know which ones has changed and can keep track of that , and being willing to repeat over and over again.

of course its completely unacceptable.

this is actually a very important feature, not lacking in any other e-cad tool i have worked with.
(cadence, orcad / mentor, design capture / dx design )

? if i change a symbol in the lib and don’t rescue it (unselect the tick mark for that symbol in the rescue dialog) -> it is updated in the schematic. (Behavior of a 2 year old nightly. And of 4.0.6 under fedora)

My test documented. After i change the symbol in the lib and save it the rescue dialog opens automatically. (You can also start it from the menu if it does not open)


I then tell it not to rescue my symbol which results in then new library symbol in my schematic

(Note that the pin CANL did indeed move in the schematic.)

including your metadata fields ?

the text fields you add to the symbol/part ?
footprint being one of the fields
and much more you can add, like manufacturer, tolerance, rating etc etc

i doubt kicad even will notice you have done any changes to them.

so the refresh/reload of symbols should not be a pop-up question from kicad about rescuing, it should be an option in tools or somewhere to refresh design lib so you can do it at will, not when kicad thinks he found something.

ps
I never rescue.
ds

also most if the time when you edit a symbol and keep schematics open at the same time kicad will just refresh the symbol in schematics without any questions about rescue.

but text fields will not be updated and for some of us that metadata/text in the library is mighty important.

In most cases you would not want to have you metadata messed up, just because KiCad finds another version of your symbol.

However, what one could dream about is a tool that would let you search out for instance all capacitors with a value of 100nF and let you update all the different metadata fields for those symbols. (A nice feature could be that it would only update those fields that were edited,leaving the rest alone.) This would make it easier to enter metadata that can be used for BOM creation.

Currently the most efficient strategy to accomplish the same end result is to create “atomic” parts for the most used symbols, so that the information is already there when inserted into the schematic.

2 Likes

I always have atomic parts with real world part numbers.

And kicad will not mess up my local library (design local library).
Beacuse updates should be done at user request only.

Right click the part in the schematic and select from:
1 update this part
2 update all of this part in entire schematic.
3 update every part in schematic

This exists. For stable: use kifield, nightly has a table editor.

This generic part problem with 100nf as part no instead of a real part # is a dead end for kicad.

You get up and about quickly but in the end professional needs cannot be catered for.

One could at least hope for an understanding but the way of thinking is so different that I notice people don’t even understand what I try to explain.

Not being able to update the parts (unique atomic parts) in your local design library with the outside version of that exact atomic part is a huge problem.

To delete your part in the schematic and put in the exact same part again is the only way to get your meta data/text fields refreshed.
It’s not something one can live with long term.

Thanks Rene, I had not fully discovered the table editor, I thought it was just for displaying an overview, but discovered now one can update the fields. However I found the edit to be a bit shaky. Sometime it would take a double click, other time not. And if I edit and apply changes to one field the next symbol I click on will also get that value, so may be some more work is needed there (using unsigned Dec. 8 Windows nightly).

I do think see what Nicholas is after though, One has created a schematic, without much metadate or with incorrect ones in it and now you want to use a pre-existing “molecular” part to get that metadata for BOM/ordering info updated instead of retyping it in again.

For my molecular parts, I have symbol names like R_1206_10K_RC1206FR-0710K and with all needed footprint and ordering info defined. On insertion I change the value to 10K. The part will still reference R_1206_10K_RC1206FR-0710K in my custom library, it is just the displayed value that is changed. If I look at its properties all the original info for that part is displayed and ready for use in Pcbnew or creating a BOM.

I see now that a later nightly carries the possibilty to read in the fields from the lib when you open the properties dialog in eeschema

this is such a great step forward in the right direction.

now you should also be given the possibility within same properties dialogue to do this on all components of same value, not only the one you opened the prop dialogue on

unfortunately when you read in text fields that was not placed before in the schematic they end up far away from the component.

but still a great step forward

another problem found is that the visibility (show) properties as stored in the library is not honored.

fields gets in, but show flags are not updated.