On the developer documentation reference the grammar suggests that symbols are hierarchical :
(symbol
"LIBRARY_ID" | "UNIT_ID"
[(extends "LIBRARY_ID")]
[(pin_numbers hide)]
[(pin_names [(offset OFFSET)] hide)]
(in_bom yes | no)
(on_board yes | no)
SYMBOL_PROPERTIES...
GRAPHIC_ITEMS...
PINS...
UNITS...
)
Where UNITS
would be child (symbol ... )
expressions, including all the required data (in_bom
, on_board
) and optional parameters (pin_numbers_hide
, etc). In practice however it looks like actual .kicad_sym
files do not have this restrict for child units of a symbol definition, and top level definitions do not contain the PINS
or GRAPHICS_ITEMS
, while child units do not contain sub-units.
Can anyone clarify what the distinction between top-level and child symbol units are in the source files? I think it should be something like this :
Top Level Symbols
------------------
(symbol
"LIBRARY_ID"
[(extends "LIBRARY_ID")
[(pin_numbers_hide hide)]
[(pin_names [(offset OFFSET)] hide)]
(in_bom yes | no)
(on_board yes | no)
SYMBOL_PROPERTIES
UNITS
)
Child Symbol Units
-------------------
(symbol
"UNIT_ID"
GRAPHIC_ITEMS
PINS
)
Is that accurate?