Skip to content

Sorted netlists, take 3#456

Merged
ducky64 merged 8 commits intomasterfrom
sorted-netlist-4
Mar 16, 2026
Merged

Sorted netlists, take 3#456
ducky64 merged 8 commits intomasterfrom
sorted-netlist-4

Conversation

@ducky64
Copy link
Collaborator

@ducky64 ducky64 commented Mar 16, 2026

Adds a final net naming good-ness criteria based on path ordering, so there should be no more ties.

Updates netlists.

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates the net naming tie-break logic in the netlist generator to use traversal-based path ordering, then regenerates example KiCad netlists to reflect the new deterministic naming.

Changes:

  • Add a final net-name “goodness” criterion based on path_traverse_order / path_ordering to break remaining naming ties deterministically.
  • Regenerate example .net outputs to match the new naming and ordering.

Reviewed changes

Copilot reviewed 51 out of 51 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
edg/electronics_model/NetlistGenerator.py Adds traversal-order tie-breaker to deterministic net naming and updates call site.
examples/UsbUart/UsbUart.net Regenerated netlist with updated net naming.
examples/UsbKey/UsbKey.net Regenerated netlist with updated net naming / ordering.
examples/UsbFpgaProgrammer/UsbFpgaProgrammer.net Regenerated netlist with updated net naming / ordering.
examples/TofArray/TofArray.net Regenerated netlist with updated net naming / ordering.
examples/TestLed/TestLed.net Regenerated netlist with updated net naming.
examples/TestBlinkyWithSchematicImport/TestBlinkyWithSchematicImport.net Regenerated netlist with updated net naming / ordering.
examples/TestBlinkyWithModeledSchematicImport/TestBlinkyWithModeledSchematicImport.net Regenerated netlist with updated net naming / ordering.
examples/TestBlinkyWithLibraryExport/TestBlinkyWithLibraryExport.net Regenerated netlist with updated net naming / ordering.
examples/TestBlinkyWithLibrary/TestBlinkyWithLibrary.net Regenerated netlist with updated net naming / ordering.
examples/TestBlinkyPacked/TestBlinkyPacked.net Regenerated netlist with updated net naming / ordering.
examples/TestBlinkyMicro/TestBlinkyMicro.net Regenerated netlist with updated net naming / ordering.
examples/TestBlinkyImplicit/TestBlinkyImplicit.net Regenerated netlist with updated net naming / ordering.
examples/TestBlinkyExpanded/TestBlinkyExpanded.net Regenerated netlist with updated net naming / ordering.
examples/TestBlinkyComplete/TestBlinkyComplete.net Regenerated netlist with updated net naming / ordering.
examples/TestBlinkyChain/TestBlinkyChain.net Regenerated netlist with updated net naming / ordering.
examples/TestBlinkyBasicBattery/TestBlinkyBasicBattery.net Regenerated netlist with updated net naming / ordering.
examples/TestBlinkyBasic/TestBlinkyBasic.net Regenerated netlist with updated net naming.
examples/TestBlinkyArray/TestBlinkyArray.net Regenerated netlist with updated net naming / ordering.
examples/SwdDebugger/SwdDebugger.net Regenerated netlist with updated net naming / ordering.
examples/Simon/Simon.net Regenerated netlist with updated net naming / ordering.
examples/SevenSegment/SevenSegment.net Regenerated netlist with updated net naming / ordering.
examples/RobotOwl/RobotOwl.net Regenerated netlist with updated net naming / ordering.
examples/RobotDriver/RobotDriver.net Regenerated netlist with updated net naming / ordering.
examples/RobotCrawler/RobotCrawler.net Regenerated netlist with updated net naming / ordering.
examples/ProtectedCharger/ProtectedCharger.net Regenerated netlist with updated net naming / ordering.
examples/PicoProbe/PicoProbe.net Regenerated netlist with updated net naming / ordering.
examples/PcbBot/PcbBot.net Regenerated netlist with updated net naming / ordering.
examples/Multimeter/Multimeter.net Regenerated netlist with updated net naming / ordering.
examples/LedMatrix/LedMatrix.net Regenerated netlist with updated net naming.
examples/Keyboard/Keyboard.net Regenerated netlist with updated net naming.
examples/JacdacKeyswitch/JacdacKeyswitch.net Regenerated netlist with updated net naming / ordering.
examples/IotThermalCamera/IotThermalCamera.net Regenerated netlist with updated net naming / ordering.
examples/IotRollerBlinds/IotRollerBlinds.net Regenerated netlist with updated net naming / ordering.
examples/IotLedDriver/IotLedDriver.net Regenerated netlist with updated net naming / ordering.
examples/IotKnob/IotKnob.net Regenerated netlist with updated net naming / ordering.
examples/IotIron/IotIron.net Regenerated netlist with updated net naming / ordering.
examples/IotFan/IotFan.net Regenerated netlist with updated net naming / ordering.
examples/IotDisplay/IotDisplay.net Regenerated netlist with updated net naming / ordering.
examples/IotCurtainCrawler/IotCurtainCrawler.net Regenerated netlist with updated net naming / ordering.
examples/HighSwitch/HighSwitch.net Regenerated netlist with updated net naming / ordering.
examples/Fcml/Fcml.net Regenerated netlist with updated net naming / ordering.
examples/EspProgrammer/EspProgrammer.net Regenerated netlist with updated net naming.
examples/EspLora/EspLora.net Regenerated netlist with updated net naming / ordering.
examples/DeskController/DeskController.net Regenerated netlist with updated net naming / ordering.
examples/Datalogger/Datalogger.net Regenerated netlist with updated net naming / ordering.
examples/CanAdapter/CanAdapter.net Regenerated netlist with updated net naming / ordering.
examples/BleJoystick/BleJoystick.net Regenerated netlist with updated net naming / ordering.
examples/BldcController/BldcController.net Regenerated netlist with updated net naming / ordering.
examples/BasicKeyboard/BasicKeyboard.net Regenerated netlist with updated net naming.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines 271 to +275
lambda pin: len(pin.links), # prefer longer link paths
lambda pin: -len(pin.ports), # prefer shorter (or no) port lengths
lambda pin: not (pin.ports and pin.ports[-1].isnumeric()), # disprefer number-only ports
lambda pin: -path_ordering.get(
pin.port_component(must_have_port=False), len(path_ordering)
@ducky64 ducky64 merged commit bb6e1f8 into master Mar 16, 2026
12 checks passed
@ducky64 ducky64 deleted the sorted-netlist-4 branch March 16, 2026 05:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants