Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions edg/electronics_model/NetlistGenerator.py
Original file line number Diff line number Diff line change
Expand Up @@ -261,7 +261,7 @@ def visit_portlike(self, context: TransformUtil.TransformContext, port: edgir.Po
self.path_traverse_order.append(context.path)

@staticmethod
def name_net(net: Iterable[TransformUtil.Path]) -> TransformUtil.Path:
def name_net(net: Iterable[TransformUtil.Path], path_ordering: Dict[TransformUtil.Path, int]) -> TransformUtil.Path:
"""Names a net based on all the paths of ports and links that are part of the net."""
# higher criteria are preferred, True or larger number is preferred
CRITERIA: List[Callable[[TransformUtil.Path], Union[bool, int]]] = [
Expand All @@ -271,6 +271,9 @@ def name_net(net: Iterable[TransformUtil.Path]) -> TransformUtil.Path:
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)
Comment on lines 271 to +275
), # prefer earlier paths
]

def pin_name_goodness(pin1: TransformUtil.Path, pin2: TransformUtil.Path) -> int:
Expand All @@ -292,7 +295,6 @@ def pin_name_goodness(pin1: TransformUtil.Path, pin2: TransformUtil.Path) -> int
return 0

best_path = sorted(net, key=cmp_to_key(pin_name_goodness))[0]

return best_path

def scope_to_netlist(self, scope: BoardScope) -> Netlist:
Expand Down Expand Up @@ -324,7 +326,7 @@ def scope_to_netlist(self, scope: BoardScope) -> Netlist:
raise InvalidPackingException(f"packed pins {connected1}, {connected2} not connected")

named_nets = sorted(
[(self.name_net(net), net) for net in nets],
[(self.name_net(net, path_ordering), net) for net in nets],
key=lambda pair: path_ordering[pair[0].port_component(must_have_port=False)],
)

Expand Down
16 changes: 16 additions & 0 deletions edg/electronics_model/test_netlist_naming.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import unittest

from ..core import TransformUtil
from .NetlistGenerator import NetlistTransform


class NetlistNameTestCase(unittest.TestCase):
def test_net_name_ordering(self) -> None:
path_block = TransformUtil.Path.empty().append_block("block")
path_link = TransformUtil.Path.empty().append_link("link")
path_porta = TransformUtil.Path.empty().append_block("block").append_port("a")
path_portb = TransformUtil.Path.empty().append_block("block").append_port("a")
order = {path_block: 0, path_link: 1, path_porta: 2, path_portb: 3}
self.assertEqual(NetlistTransform.name_net([path_block, path_portb, path_porta, path_link], order), path_link)
self.assertEqual(NetlistTransform.name_net([path_block, path_portb, path_porta], order), path_block)
self.assertEqual(NetlistTransform.name_net([path_portb, path_porta], order), path_porta)
12 changes: 6 additions & 6 deletions examples/BasicKeyboard/BasicKeyboard.net
Original file line number Diff line number Diff line change
Expand Up @@ -185,22 +185,22 @@
(node (ref U1) (pin 12)))
(net (code 8) (name "mcu.vusb_out")
(node (ref U1) (pin 14)))
(net (code 9) (name "sw.d[0,0].cathode")
(net (code 9) (name "sw.sw[0,0].sw")
(node (ref SW1) (pin 1))
(node (ref D1) (pin 1)))
(net (code 10) (name "sw.d[0,1].cathode")
(net (code 10) (name "sw.sw[0,1].sw")
(node (ref SW2) (pin 1))
(node (ref D2) (pin 1)))
(net (code 11) (name "sw.d[0,2].cathode")
(net (code 11) (name "sw.sw[0,2].sw")
(node (ref SW3) (pin 1))
(node (ref D3) (pin 1)))
(net (code 12) (name "sw.d[1,0].cathode")
(net (code 12) (name "sw.sw[1,0].sw")
(node (ref SW4) (pin 1))
(node (ref D4) (pin 1)))
(net (code 13) (name "sw.d[1,1].cathode")
(net (code 13) (name "sw.sw[1,1].sw")
(node (ref SW5) (pin 1))
(node (ref D5) (pin 1)))
(net (code 14) (name "sw.d[1,2].cathode")
(net (code 14) (name "sw.sw[1,2].sw")
(node (ref SW6) (pin 1))
(node (ref D6) (pin 1))))
)
12 changes: 6 additions & 6 deletions examples/BasicKeyboard/BasicKeyboard.svgpcb.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,12 @@ board.setNetlist([
{name: "mcu.gnd", pads: [["U1", "13"]]},
{name: "mcu.pwr_out", pads: [["U1", "12"]]},
{name: "mcu.vusb_out", pads: [["U1", "14"]]},
{name: "sw.d[0,0].cathode", pads: [["SW1", "1"], ["D1", "1"]]},
{name: "sw.d[0,1].cathode", pads: [["SW2", "1"], ["D2", "1"]]},
{name: "sw.d[0,2].cathode", pads: [["SW3", "1"], ["D3", "1"]]},
{name: "sw.d[1,0].cathode", pads: [["SW4", "1"], ["D4", "1"]]},
{name: "sw.d[1,1].cathode", pads: [["SW5", "1"], ["D5", "1"]]},
{name: "sw.d[1,2].cathode", pads: [["SW6", "1"], ["D6", "1"]]}
{name: "sw.sw[0,0].sw", pads: [["SW1", "1"], ["D1", "1"]]},
{name: "sw.sw[0,1].sw", pads: [["SW2", "1"], ["D2", "1"]]},
{name: "sw.sw[0,2].sw", pads: [["SW3", "1"], ["D3", "1"]]},
{name: "sw.sw[1,0].sw", pads: [["SW4", "1"], ["D4", "1"]]},
{name: "sw.sw[1,1].sw", pads: [["SW5", "1"], ["D5", "1"]]},
{name: "sw.sw[1,2].sw", pads: [["SW6", "1"], ["D6", "1"]]}
])

const limit0 = pt(-0.07874015748031496, -0.07874015748031496);
Expand Down
96 changes: 48 additions & 48 deletions examples/BldcController/BldcController.net
Original file line number Diff line number Diff line change
Expand Up @@ -948,92 +948,92 @@
(node (ref U7) (pin 2))
(node (ref C11) (pin 2))
(node (ref R27) (pin 2)))
(net (code 4) (name "mcu.gpio.bldc_en_1")
(net (code 4) (name "mcu.gpio.hall_u")
(node (ref U1) (pin 23))
(node (ref J3) (pin 2))
(node (ref R8) (pin 2))
(node (ref TP4) (pin 1)))
(net (code 5) (name "mcu.gpio.hall_v")
(node (ref U1) (pin 24))
(node (ref J3) (pin 3))
(node (ref R9) (pin 2))
(node (ref TP5) (pin 1)))
(net (code 6) (name "mcu.gpio.hall_w")
(node (ref U1) (pin 25))
(node (ref J3) (pin 4))
(node (ref R10) (pin 2))
(node (ref TP6) (pin 1)))
(net (code 7) (name "mcu.gpio.bldc_en_1")
(node (ref U1) (pin 12))
(node (ref U4) (pin 26))
(node (ref TP10) (pin 1)))
(net (code 5) (name "mcu.gpio.bldc_en_2")
(net (code 8) (name "mcu.gpio.bldc_en_2")
(node (ref U1) (pin 14))
(node (ref U4) (pin 24))
(node (ref TP11) (pin 1)))
(net (code 6) (name "mcu.gpio.bldc_en_3")
(net (code 9) (name "mcu.gpio.bldc_en_3")
(node (ref U1) (pin 17))
(node (ref U4) (pin 22))
(node (ref TP12) (pin 1)))
(net (code 7) (name "mcu.gpio.bldc_in_1")
(net (code 10) (name "mcu.gpio.bldc_in_1")
(node (ref U1) (pin 11))
(node (ref U4) (pin 27))
(node (ref TP13) (pin 1)))
(net (code 8) (name "mcu.gpio.bldc_in_2")
(net (code 11) (name "mcu.gpio.bldc_in_2")
(node (ref U1) (pin 13))
(node (ref U4) (pin 25))
(node (ref TP14) (pin 1)))
(net (code 9) (name "mcu.gpio.bldc_in_3")
(net (code 12) (name "mcu.gpio.bldc_in_3")
(node (ref U1) (pin 15))
(node (ref U4) (pin 23))
(node (ref TP15) (pin 1)))
(net (code 10) (name "motor_pwr.pwr")
(net (code 13) (name "motor_pwr.pwr")
(node (ref J1) (pin 2))
(node (ref R11) (pin 1))
(node (ref R13) (pin 1))
(node (ref U3) (pin 7))
(node (ref C2) (pin 1))
(node (ref R15) (pin 1)))
(net (code 11) (name "sw1.out")
(net (code 14) (name "sw1.out")
(node (ref U1) (pin 20))
(node (ref SW1) (pin 1)))
(net (code 12) (name "ledr.signal")
(net (code 15) (name "ledr.signal")
(node (ref U1) (pin 16))
(node (ref D1) (pin 2)))
(net (code 13) (name "ledr.res.a")
(net (code 16) (name "ledr.package.k")
(node (ref D1) (pin 1))
(node (ref R1) (pin 1)))
(net (code 14) (name "ledg.signal")
(net (code 17) (name "ledg.signal")
(node (ref U1) (pin 7))
(node (ref D2) (pin 2)))
(net (code 15) (name "ledg.res.a")
(net (code 18) (name "ledg.package.k")
(node (ref D2) (pin 1))
(node (ref R2) (pin 1)))
(net (code 16) (name "ledb.signal")
(net (code 19) (name "ledb.signal")
(node (ref U1) (pin 3))
(node (ref D3) (pin 2)))
(net (code 17) (name "ledb.res.a")
(net (code 20) (name "ledb.package.k")
(node (ref D3) (pin 1))
(node (ref R3) (pin 1)))
(net (code 18) (name "i2c_pull.i2c.scl")
(net (code 21) (name "i2c_pull.i2c.scl")
(node (ref U1) (pin 22))
(node (ref R4) (pin 2))
(node (ref TP1) (pin 1))
(node (ref J2) (pin 4)))
(net (code 19) (name "i2c_pull.i2c.sda")
(net (code 22) (name "i2c_pull.i2c.sda")
(node (ref U1) (pin 21))
(node (ref R5) (pin 2))
(node (ref TP2) (pin 1))
(node (ref J2) (pin 3)))
(net (code 20) (name "ref_div.output")
(net (code 23) (name "ref_div.output")
(node (ref R6) (pin 2))
(node (ref R7) (pin 1))
(node (ref U2) (pin 1)))
(net (code 21) (name "ref_buf.output")
(net (code 24) (name "ref_buf.output")
(node (ref U2) (pin 3))
(node (ref U2) (pin 4))
(node (ref TP3) (pin 1))
(node (ref R17) (pin 1)))
(net (code 22) (name "hall.phases.u")
(node (ref U1) (pin 23))
(node (ref J3) (pin 2))
(node (ref R8) (pin 2))
(node (ref TP4) (pin 1)))
(net (code 23) (name "hall.phases.v")
(node (ref U1) (pin 24))
(node (ref J3) (pin 3))
(node (ref R9) (pin 2))
(node (ref TP5) (pin 1)))
(net (code 24) (name "hall.phases.w")
(node (ref U1) (pin 25))
(node (ref J3) (pin 4))
(node (ref R10) (pin 2))
(node (ref TP6) (pin 1)))
(net (code 25) (name "vsense.output")
(node (ref U1) (pin 6))
(node (ref R11) (pin 2))
Expand All @@ -1053,14 +1053,14 @@
(node (ref R16) (pin 1))
(node (ref TP8) (pin 1))
(node (ref R18) (pin 1)))
(net (code 28) (name "isense.amp.r1.b")
(node (ref U3) (pin 2))
(node (ref R14) (pin 2))
(node (ref R16) (pin 2)))
(net (code 29) (name "isense.amp.r2.b")
(net (code 28) (name "isense.amp.amp.inp")
(node (ref U3) (pin 3))
(node (ref R15) (pin 2))
(node (ref R17) (pin 2)))
(net (code 29) (name "isense.amp.amp.inn")
(node (ref U3) (pin 2))
(node (ref R14) (pin 2))
(node (ref R16) (pin 2)))
(net (code 30) (name "isense_clamp.signal_out")
(node (ref U1) (pin 5))
(node (ref R18) (pin 2)))
Expand All @@ -1084,15 +1084,15 @@
(node (ref U4) (pin 15))
(node (ref U4) (pin 17))
(node (ref C6) (pin 1)))
(net (code 37) (name "bldc_drv.cp_cap.pos")
(node (ref U4) (pin 2))
(node (ref C7) (pin 1)))
(net (code 38) (name "bldc_drv.cp_cap.neg")
(node (ref U4) (pin 1))
(node (ref C7) (pin 2)))
(net (code 39) (name "bldc_drv.vcp_cap.pos")
(net (code 37) (name "bldc_drv.ic.vcp")
(node (ref U4) (pin 3))
(node (ref C8) (pin 1)))
(net (code 38) (name "bldc_drv.ic.cpl")
(node (ref U4) (pin 1))
(node (ref C7) (pin 2)))
(net (code 39) (name "bldc_drv.ic.cph")
(node (ref U4) (pin 2))
(node (ref C7) (pin 1)))
(net (code 40) (name "curr_amp[1].input")
(node (ref U4) (pin 6))
(node (ref R19) (pin 2))
Expand All @@ -1102,7 +1102,7 @@
(node (ref U5) (pin 4))
(node (ref R22) (pin 1))
(node (ref TP16) (pin 1)))
(net (code 42) (name "curr_amp[1].r2.a")
(net (code 42) (name "curr_amp[1].amp.inn")
(node (ref U5) (pin 3))
(node (ref R22) (pin 2))
(node (ref R23) (pin 1)))
Expand All @@ -1115,7 +1115,7 @@
(node (ref U6) (pin 4))
(node (ref R24) (pin 1))
(node (ref TP17) (pin 1)))
(net (code 45) (name "curr_amp[2].r2.a")
(net (code 45) (name "curr_amp[2].amp.inn")
(node (ref U6) (pin 3))
(node (ref R24) (pin 2))
(node (ref R25) (pin 1)))
Expand All @@ -1128,7 +1128,7 @@
(node (ref U7) (pin 4))
(node (ref R26) (pin 1))
(node (ref TP18) (pin 1)))
(net (code 48) (name "curr_amp[3].r2.a")
(net (code 48) (name "curr_amp[3].amp.inn")
(node (ref U7) (pin 3))
(node (ref R26) (pin 2))
(node (ref R27) (pin 1))))
Expand Down
28 changes: 14 additions & 14 deletions examples/BldcController/BldcController.svgpcb.js
Original file line number Diff line number Diff line change
Expand Up @@ -375,6 +375,9 @@ board.setNetlist([
{name: "vusb", pads: [["U1", "26"], ["J3", "1"]]},
{name: "v3v3", pads: [["U1", "2"], ["R4", "1"], ["R5", "1"], ["J2", "2"], ["R6", "1"], ["U2", "5"], ["C1", "1"], ["R8", "1"], ["R9", "1"], ["R10", "1"], ["U5", "5"], ["C9", "1"], ["U6", "5"], ["C10", "1"], ["U7", "5"], ["C11", "1"]]},
{name: "gnd", pads: [["U1", "4"], ["J1", "1"], ["SW1", "2"], ["R1", "2"], ["R2", "2"], ["R3", "2"], ["J2", "1"], ["R7", "2"], ["U2", "2"], ["C1", "2"], ["J3", "5"], ["R12", "2"], ["U3", "4"], ["C2", "2"], ["U4", "12"], ["U4", "13"], ["U4", "14"], ["U4", "19"], ["U4", "20"], ["U4", "21"], ["U4", "28"], ["U4", "29"], ["C3", "2"], ["C4", "2"], ["C5", "2"], ["C6", "2"], ["R19", "1"], ["R20", "1"], ["R21", "1"], ["U5", "2"], ["C9", "2"], ["R23", "2"], ["U6", "2"], ["C10", "2"], ["R25", "2"], ["U7", "2"], ["C11", "2"], ["R27", "2"]]},
{name: "mcu.gpio.hall_u", pads: [["U1", "23"], ["J3", "2"], ["R8", "2"], ["TP4", "1"]]},
{name: "mcu.gpio.hall_v", pads: [["U1", "24"], ["J3", "3"], ["R9", "2"], ["TP5", "1"]]},
{name: "mcu.gpio.hall_w", pads: [["U1", "25"], ["J3", "4"], ["R10", "2"], ["TP6", "1"]]},
{name: "mcu.gpio.bldc_en_1", pads: [["U1", "12"], ["U4", "26"], ["TP10", "1"]]},
{name: "mcu.gpio.bldc_en_2", pads: [["U1", "14"], ["U4", "24"], ["TP11", "1"]]},
{name: "mcu.gpio.bldc_en_3", pads: [["U1", "17"], ["U4", "22"], ["TP12", "1"]]},
Expand All @@ -384,42 +387,39 @@ board.setNetlist([
{name: "motor_pwr.pwr", pads: [["J1", "2"], ["R11", "1"], ["R13", "1"], ["U3", "7"], ["C2", "1"], ["R15", "1"]]},
{name: "sw1.out", pads: [["U1", "20"], ["SW1", "1"]]},
{name: "ledr.signal", pads: [["U1", "16"], ["D1", "2"]]},
{name: "ledr.res.a", pads: [["D1", "1"], ["R1", "1"]]},
{name: "ledr.package.k", pads: [["D1", "1"], ["R1", "1"]]},
{name: "ledg.signal", pads: [["U1", "7"], ["D2", "2"]]},
{name: "ledg.res.a", pads: [["D2", "1"], ["R2", "1"]]},
{name: "ledg.package.k", pads: [["D2", "1"], ["R2", "1"]]},
{name: "ledb.signal", pads: [["U1", "3"], ["D3", "2"]]},
{name: "ledb.res.a", pads: [["D3", "1"], ["R3", "1"]]},
{name: "ledb.package.k", pads: [["D3", "1"], ["R3", "1"]]},
{name: "i2c_pull.i2c.scl", pads: [["U1", "22"], ["R4", "2"], ["TP1", "1"], ["J2", "4"]]},
{name: "i2c_pull.i2c.sda", pads: [["U1", "21"], ["R5", "2"], ["TP2", "1"], ["J2", "3"]]},
{name: "ref_div.output", pads: [["R6", "2"], ["R7", "1"], ["U2", "1"]]},
{name: "ref_buf.output", pads: [["U2", "3"], ["U2", "4"], ["TP3", "1"], ["R17", "1"]]},
{name: "hall.phases.u", pads: [["U1", "23"], ["J3", "2"], ["R8", "2"], ["TP4", "1"]]},
{name: "hall.phases.v", pads: [["U1", "24"], ["J3", "3"], ["R9", "2"], ["TP5", "1"]]},
{name: "hall.phases.w", pads: [["U1", "25"], ["J3", "4"], ["R10", "2"], ["TP6", "1"]]},
{name: "vsense.output", pads: [["U1", "6"], ["R11", "2"], ["R12", "1"], ["TP7", "1"]]},
{name: "isense.pwr_out", pads: [["R13", "2"], ["R14", "1"], ["U4", "11"], ["U4", "4"], ["C3", "1"], ["C4", "1"], ["C5", "1"], ["C8", "2"]]},
{name: "isense.out", pads: [["U3", "6"], ["R16", "1"], ["TP8", "1"], ["R18", "1"]]},
{name: "isense.amp.r1.b", pads: [["U3", "2"], ["R14", "2"], ["R16", "2"]]},
{name: "isense.amp.r2.b", pads: [["U3", "3"], ["R15", "2"], ["R17", "2"]]},
{name: "isense.amp.amp.inp", pads: [["U3", "3"], ["R15", "2"], ["R17", "2"]]},
{name: "isense.amp.amp.inn", pads: [["U3", "2"], ["R14", "2"], ["R16", "2"]]},
{name: "isense_clamp.signal_out", pads: [["U1", "5"], ["R18", "2"]]},
{name: "bldc_drv.nreset", pads: [["U1", "18"], ["U4", "16"]]},
{name: "bldc_drv.nfault", pads: [["U1", "19"], ["U4", "18"], ["TP9", "1"]]},
{name: "bldc_drv.outs.1", pads: [["U4", "5"], ["J4", "1"]]},
{name: "bldc_drv.outs.2", pads: [["U4", "8"], ["J4", "2"]]},
{name: "bldc_drv.outs.3", pads: [["U4", "9"], ["J4", "3"]]},
{name: "bldc_drv.ic.v3p3", pads: [["U4", "15"], ["U4", "17"], ["C6", "1"]]},
{name: "bldc_drv.cp_cap.pos", pads: [["U4", "2"], ["C7", "1"]]},
{name: "bldc_drv.cp_cap.neg", pads: [["U4", "1"], ["C7", "2"]]},
{name: "bldc_drv.vcp_cap.pos", pads: [["U4", "3"], ["C8", "1"]]},
{name: "bldc_drv.ic.vcp", pads: [["U4", "3"], ["C8", "1"]]},
{name: "bldc_drv.ic.cpl", pads: [["U4", "1"], ["C7", "2"]]},
{name: "bldc_drv.ic.cph", pads: [["U4", "2"], ["C7", "1"]]},
{name: "curr_amp[1].input", pads: [["U4", "6"], ["R19", "2"], ["U5", "1"]]},
{name: "curr_amp[1].output", pads: [["U1", "10"], ["U5", "4"], ["R22", "1"], ["TP16", "1"]]},
{name: "curr_amp[1].r2.a", pads: [["U5", "3"], ["R22", "2"], ["R23", "1"]]},
{name: "curr_amp[1].amp.inn", pads: [["U5", "3"], ["R22", "2"], ["R23", "1"]]},
{name: "curr_amp[2].input", pads: [["U4", "7"], ["R20", "2"], ["U6", "1"]]},
{name: "curr_amp[2].output", pads: [["U1", "9"], ["U6", "4"], ["R24", "1"], ["TP17", "1"]]},
{name: "curr_amp[2].r2.a", pads: [["U6", "3"], ["R24", "2"], ["R25", "1"]]},
{name: "curr_amp[2].amp.inn", pads: [["U6", "3"], ["R24", "2"], ["R25", "1"]]},
{name: "curr_amp[3].input", pads: [["U4", "10"], ["R21", "2"], ["U7", "1"]]},
{name: "curr_amp[3].output", pads: [["U1", "8"], ["U7", "4"], ["R26", "1"], ["TP18", "1"]]},
{name: "curr_amp[3].r2.a", pads: [["U7", "3"], ["R26", "2"], ["R27", "1"]]}
{name: "curr_amp[3].amp.inn", pads: [["U7", "3"], ["R26", "2"], ["R27", "1"]]}
])

const limit0 = pt(-0.07874015748031496, -0.07874015748031496);
Expand Down
Loading
Loading