jsonnet format specification
----------------------------

Root object:
- Contains a single key: "Netlist"
- "Netlist" is an object with these required fields:
  - "BySoftware": string
  - "ByModule": string
  - "Components": array of Component objects
  - "Nets": array of Net objects

Components:
- "Components" is an array, zero or more items.
- Each Component object has:
  - "Refdes": string (required)
  - "Footprint": string (may be empty, required field)
  - "Value": string (may be empty, required field)
  - "Device": string (may be empty, required field)
  - "Pins": array of Pin objects (required)
  - "Attribute": optional array of attributes

Pins:
- Each Pin object has:
  - "Number": string (required)
  - "PinName": string (may be empty, required field)
  - "Attribute": optional array of attributes


Nets:
- "Nets" is an array, zero or more items.
- Each Net object has:
  - "Name": string (required)
  - "Connections": array of Connection objects (required, non-empty)
  - "Attribute": optional array of attributes

Connection object:
- Each Connection object has:
  - "Refdes": string (required)
  - "PinNum": string (required)

"Attribute":
- Attribute objects are used in Components, Pins, and Nets.
- Each Attribute object has:
  - "Key": string (required)
  - "Value": string (required)

General notes:
- Strings may be empty ("").
- Arrays may be empty unless otherwise noted.


