There are two kinds of attributes:
Regular attached attributes are attached to an object to associate the info with a specific object. For example: a pin number associated with a pin. Unattached attributes usually convey some information which is global in nature. For example: a device= attribute (which lives inside symbols) and specifies what device the entire symbol represents.
There is a third type of attribute which is a special case of #2 but turns into #1. This special type of attribute is known as a prompted attribute. If you place an unattached visible attribute inside a symbol and then instantiate that symbol, then that unattached attribute gets "promoted" to an attached attribute. This newly promoted attribute gets attached to the symbol. This mechanism of attribute reattachement (from within a symbol) is known as attribute promotion.
There are some gotchas about attribute promotion:
(promote-invisible "enabled")to the *gschemrc files (or editing system-gschemrc), invisible floating attributes will also be promoted (and in memory removed)
However, if you enable this, then component slotting will break, because gschem expects certain floating attributes to be inside the symbol (in memory even though they are invisible). So you can add:
(keep-invisible "enabled")to the *gschemrc files (or editing system-gschemrc). This is enabled by default, but has no effect unless promote-invisible is enabled.
So, to summarize, attribute promotion takes floating attributes inside symbols and attaches them to the outside of a placed symbol. Three *rc keywords control this behavior: attribute-promotion, promote-invisible, and keep-invisible.
Ales Hvezda 2006-01-23