The library model provides a "derived symbol" that reuses a symbol from a 
reference library (like the kicad distributed libs) and allows the user to 
modify fields.  This works great for a hobbyist workflow where you lay out 
a circuit with placeholder symbols, then fill in the values.

But many users will prefer to work from a curated library of orderable, 
BOM-able parts, often in a dblib or an http lib.  For these users, the 
curated fields are valuable and their immutability is a benefit.  But 
sometimes a symbols tweak, or even a new symbol, is needed for clean 
layout.  Kicad has no mechanism for preserving the values but changing out 
the symbols and pins.

It is possible to copy and paste a curated library part and update the 
symbol locally, but then the derivative part is subject to rot, stagnating 
while the source part can be updated in the library to add new fields, such 
as lifecycle status, etc.

I propose a "variant of" library feature, which is the inverse of "derived 
from".  It attaches the immutable fields from a library part to a user's 
symbol and pin design.

This is useful in many applications such as:

   - Arranging microcontroller, fpga, or buffer pins to match the function 
   of a circuit
   - matching a part to the style of an existing design
   - breaking a symbols into multiple units (This is often done for simple 
   analog and logic parts, like amplifiers, buffers, flip-flops, but many 
   complex chips may come as a lumped symbol
   - Annotating different treatment of the same part in schematic variants, 
   for automatic inclusion of notes in the BOM

I'm working on a patch to implement this.  The behavior is:

   - The patch adds a 'variant of'  selector just below the 'derived from' 
   checkbox in the new part dialog.
   - The new part can have any name
   - The new part cannot mutate any of the source part's parameters, but 
   can add new parameters
   - If the variant-of part adds a parameter that conflicts with a 
   parameter in the source part, the source part parameter wins.
   - position of the field text does not count as mutation
   - the variant part automatically inherits updates from the source on 
   loading (if the source is connected)
   - A part place in the schematic is never updated automatically.  A 
   schematic part can be updated from the variant in the library just the same 
   any other part.
   - The variant can have new fields as needed.  These are not affected by 
   update of the inherited fields

The change does involve a file format change, not only for libraries, but 
for schematics, so it's not trivial.  But I believe it would be a valuable 
addition to version 11.

I am planning to submit a patch, but would be grateful for feedback.


   
   

-- 
You received this message because you are subscribed to the Google Groups 
"KiCad Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion visit 
https://groups.google.com/a/kicad.org/d/msgid/devlist/aa1e18bf-18cf-4542-9dbe-14234e3371cbn%40kicad.org.

Reply via email to