xmlnet: Generic Netlist XML Format Specification

1. Root element: <Netlist>

  Attributes (required):
    BySoftware: text string identifying the software that generated the netlist.
    ByModule: text string identifying the module/plugin that generated the netlist.

  Contains exactly two child elements, in order:
    <Components>
    <Nets>

2. Components Section

  <Components>
    Contains zero or more <Component> elements.
  <Component>

  For each <Component>, a Refdes (reference designator) attribute is required, (e.g., U1, R2).

  Child elements (in fixed order):
    <Footprint> - may be empty or contain text.
    <Value> - may be empty or contain text.
    <Device> - may be empty or contain text.
    <Pins> - holds pin definitions.
    Zero or more <Attribute> elements.

  <Pins>, contains zero or more <Pin> elements.

  <Pin>, mandatory attribute "Number": pin number as text.

  <Pin> Child elements (in order):

    <PinName> - may be empty or contain text.
    Zero or more <Attribute> elements.

3. Nets Section

  <Nets> Contains zero or more <Net> elements.

  <Net>, mandatory attribute "Name": name of the net (e.g., GND, Vcc, clk).

  <Net> Child elements (in order):
    Zero or more <Connection> elements.
    Zero or more <Attribute> elements.

  <Connection> with no child elements;  attributes (all required):
     Refdes: the reference designator of the component whose pin is being connected
     PinNum: the pin number on that component that's being connected to the parent net


4. Attributes (used in multiple places)

  <Attribute> woth no child elements; must have two attributes:
    Key: attribute key.
    Value: attribute value.

  Can appear zero or more times inside <Component>, <Pin>, or <Net>.


5. General Notes

  <Footprint>, <Value>, <Device>, and <PinName> may be empty (<Device/>) or hold text.

  <Components> and <Nets> can be empty (<Components/>, <Nets/>) or contain multiple entries.






