diff --git a/edg/BoardTop.py b/edg/BoardTop.py index e291b30b1..5b29db04d 100644 --- a/edg/BoardTop.py +++ b/edg/BoardTop.py @@ -44,6 +44,7 @@ def refinements(self) -> Refinements: (SwdCortexTargetConnector, SwdCortexTargetHeader), (SpiMemory, W25q), (Speaker, ConnectorSpeaker), + (Neopixel, Ws2812b), ], class_values=[ (SelectorArea, ["footprint_area"], Range.from_lower(4.0)), # at least 0603 diff --git a/edg/abstract_parts/Neopixel.py b/edg/abstract_parts/Neopixel.py new file mode 100644 index 000000000..93377b6e4 --- /dev/null +++ b/edg/abstract_parts/Neopixel.py @@ -0,0 +1,14 @@ +from ..electronics_interfaces import * + + +class Neopixel(Light, Block): + """Abstract base class for individually-addressable, serially-connected Neopixel-type + (typically RGB) LEDs and defines the pwr/gnd/din/dout interface.""" + + def __init__(self) -> None: + super().__init__() + self.pwr = self.Port(VoltageSink.empty(), [Power]) + self.vdd = self.pwr # deprecated alias + self.gnd = self.Port(Ground.empty(), [Common]) + self.din = self.Port(DigitalSink.empty(), [Input]) + self.dout = self.Port(DigitalSource.empty(), optional=True) diff --git a/edg/abstract_parts/__init__.py b/edg/abstract_parts/__init__.py index 9448e81f1..200fcc9e4 100644 --- a/edg/abstract_parts/__init__.py +++ b/edg/abstract_parts/__init__.py @@ -81,6 +81,7 @@ from .Antenna import Antenna, TableAntenna from .SolidStateRelay import SolidStateRelay, VoltageIsolatedSwitch, AnalogIsolatedSwitch from .AnalogSwitch import AnalogSwitch, AnalogSwitchTree, AnalogDemuxer, AnalogMuxer +from .Neopixel import Neopixel from .Switch import Switch, TactileSwitch, MechanicalKeyswitch, DigitalSwitch from .Switch import RotaryEncoder, RotaryEncoderSwitch, DigitalRotaryEncoder, DigitalRotaryEncoderSwitch from .Switch import DirectionSwitch, DirectionSwitchCenter, DigitalDirectionSwitch, DigitalDirectionSwitchCenter diff --git a/edg/circuits/SwitchMatrix.py b/edg/circuits/SwitchMatrix.py index b6be74673..c70d3219a 100644 --- a/edg/circuits/SwitchMatrix.py +++ b/edg/circuits/SwitchMatrix.py @@ -1,20 +1,107 @@ -from typing import cast, Optional, Tuple +from typing import Optional, Tuple, Any, List from typing_extensions import override from ..abstract_parts import * -class SwitchMatrix(HumanInterface, GeneratorBlock, SvgPcbTemplateBlock): +@abstract_block_default(lambda: DiodeSwitchCell) +class SwitchCell(InternalBlock, Block): + """A single cell in the switch matrix.""" + + def __init__(self, voltage_drop: RangeLike): + super().__init__() + self.voltage_drop = self.ArgParameter(voltage_drop) + + self.row = self.Port(DigitalSink.empty()) + self.col = self.Port(DigitalSource.empty()) + + +class DiodeSwitchCell(SwitchCell, InternalBlock): + """A single cell in the switch matrix, consisting of a switch and diode to support multiple key presses. + Provides a layer of hierarchy for layout replication.""" + + @override + def contents(self) -> None: + super().contents() + + self.col.init_from( + DigitalSource( # diode anode, externally pulled, driven to col by switch closure + voltage_out=self.row.link().voltage.lower() + + self.voltage_drop, # use spec to avoid circular dependency + output_thresholds=(self.row.link().voltage + self.voltage_drop).hull(float("inf")), + low_driver=True, + high_driver=False, + ) + ) + self.row.init_from(DigitalSink()) # switch common, externally driven for column scan, assumed ideal + + self.sw = self.Block( + Switch(voltage=self.col.link().voltage - self.row.link().voltage, current=self.col.link().current_drawn) + ) + self.d = self.Block( + Diode( + current=self.col.link().current_drawn, + reverse_voltage=(self.col.link().voltage - self.row.link().voltage).abs(), + voltage_drop=self.voltage_drop, + ) + ) + self.connect(self.col.net, self.sw.sw) + self.connect(self.sw.com, self.d.anode) + self.connect(self.d.cathode, self.row.net) + + +@abstract_block_default(lambda: DiodeSwitchCellNeopixel) +class SwitchCellNeopixel(BlockInterfaceMixin[SwitchCell], InternalBlock): + """SwitchCell mixin that adds a neopixel to the switch cell, with power and data ports.""" + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + self.npx_din = self.Port(DigitalSink.empty()) + self.npx_dout = self.Port(DigitalSource.empty(), optional=True) + self.npx_pwr = self.Port(VoltageSink.empty()) + self.npx_gnd = self.Port(Ground.empty()) + + +class DiodeSwitchCellNeopixel(SwitchCellNeopixel, DiodeSwitchCell, InternalBlock): + """SwitchCell implementation with neopixel.""" + + @override + def contents(self) -> None: + super().contents() + self.npx = self.Block(Neopixel()) + self.connect(self.npx.pwr, self.npx_pwr) + self.connect(self.npx.gnd, self.npx_gnd) + self.connect(self.npx.din, self.npx_din) + self.connect(self.npx.dout, self.npx_dout) + + +@abstract_block_default(lambda: SwitchDiodeMatrix) +class SwitchMatrix(InternalBlock, Block): + + def __init__(self, nrows: IntLike, ncols: IntLike, voltage_drop: RangeLike = (0, 0.7) * Volt): + super().__init__() + + self.voltage_drop = self.ArgParameter(voltage_drop) + self.nrows = self.ArgParameter(nrows) + self.ncols = self.ArgParameter(ncols) + + self.rows = self.Port(Vector(DigitalSink.empty())) + self.cols = self.Port(Vector(DigitalSource.empty())) + + +class SwitchDiodeMatrix(SwitchMatrix, HumanInterface, GeneratorBlock, SvgPcbTemplateBlock): """A switch matrix, such as for a keyboard, that generates (nrows * ncols) switches while only using max(nrows, ncols) IOs. - Internally, the switches are in a matrix, with the driver driving one col low at a time while - reading which rows are low (with the other cols weakly pulled high). - This uses the Switch abstract class, which can be refined into e.g. a tactile switch or mechanical keyswitch. + Internally, the switches are in a matrix and follows COL2ROW conventions: + - the driver drives one row low at a time, other rows are floating or weakly pulled high + - the columns are weakly pulled high, and read low when the switch is pressed + + Internally, this uses the Switch abstract block, which can be refined into e.g. a tactile switch or mechanical keyswitch. This generates per-switch diodes which allows multiple keys to be pressed simultaneously. - Diode anodes are attached to the rows, while cathodes go through each switch to the cols. """ @override @@ -23,17 +110,18 @@ def _svgpcb_fn_name_adds(self) -> Optional[str]: @override def _svgpcb_template(self) -> str: - switch_block = self._svgpcb_footprint_block_path_of(["sw[0,0]"]) - diode_block = self._svgpcb_footprint_block_path_of(["d[0,0]"]) - switch_reftype, switch_refnum = self._svgpcb_refdes_of(["sw[0,0]"]) - diode_reftype, diode_refnum = self._svgpcb_refdes_of(["d[0,0]"]) + # TODO: layout generator broken from the COL2ROW change + switch_block = self._svgpcb_footprint_block_path_of(["sw[0,0]", "sw"]) + diode_block = self._svgpcb_footprint_block_path_of(["sw[0,0]", "d"]) + switch_reftype, switch_refnum = self._svgpcb_refdes_of(["sw[0,0]", "sw"]) + diode_reftype, diode_refnum = self._svgpcb_refdes_of(["sw[0,0]", "d"]) assert switch_block is not None and diode_block is not None switch_footprint = self._svgpcb_footprint_of(switch_block) - switch_sw_pin = self._svgpcb_pin_of(["sw[0,0]"], ["sw"]) - switch_com_pin = self._svgpcb_pin_of(["sw[0,0]"], ["com"]) + switch_sw_pin = self._svgpcb_pin_of(["sw[0,0]", "sw"], ["sw"]) + switch_com_pin = self._svgpcb_pin_of(["sw[0,0]", "sw"], ["com"]) diode_footprint = self._svgpcb_footprint_of(diode_block) - diode_a_pin = self._svgpcb_pin_of(["d[0,0]"], ["anode"]) - diode_k_pin = self._svgpcb_pin_of(["d[0,0]"], ["cathode"]) + diode_a_pin = self._svgpcb_pin_of(["sw[0,0]", "d"], ["anode"]) + diode_k_pin = self._svgpcb_pin_of(["sw[0,0]", "d"], ["cathode"]) assert all([pin is not None for pin in [switch_sw_pin, switch_com_pin, diode_a_pin, diode_k_pin]]) return f"""\ @@ -117,65 +205,88 @@ def _svgpcb_bbox(self) -> Tuple[float, float, float, float]: (self._svgpcb_get(self.nrows) + 1) * 0.5 * 25.4 + 1.0, ) - def __init__(self, nrows: IntLike, ncols: IntLike, voltage_drop: RangeLike = (0, 0.7) * Volt): - super().__init__() - - self.rows = self.Port(Vector(DigitalSource.empty())) - self.cols = self.Port(Vector(DigitalSink.empty())) - self.voltage_drop = self.ArgParameter(voltage_drop) - - self.nrows = self.ArgParameter(nrows) - self.ncols = self.ArgParameter(ncols) + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) self.generator_param(self.nrows, self.ncols) @override def generate(self) -> None: super().generate() - # generate row (output) ports with forward declaration for row in range(self.get(self.nrows)): - self.rows.append_elt( - DigitalSource( # modeled as low-side driver - voltage_out=RangeExpr(), - output_thresholds=RangeExpr(), - low_driver=True, - high_driver=False, - ), - str(row), - ) + self.rows.append_elt(DigitalSink.empty(), str(row)) - # generate parts and column (input) ports and aggregate parameters for row ports - self.sw = ElementDict[Switch]() - self.d = ElementDict[Diode]() - row_voltages = [RangeExpr._to_expr_type(RangeExpr.EMPTY)] * self.get(self.nrows) - row_thresholds = [FloatExpr._to_expr_type(float("-inf"))] * self.get(self.nrows) + self.sw = ElementDict[SwitchCell]() for col in range(self.get(self.ncols)): - # ideal, negligible current draw (assumed) and thresholds checked at other side - col_port = self.cols.append_elt(DigitalSink(), str(col)) + col_port = self.cols.append_elt(DigitalSource.empty(), str(col)) for row in range(self.get(self.nrows)): - row_port = self.rows[str(row)] - sw = self.sw[f"{col},{row}"] = self.Block( - Switch(voltage=row_port.link().voltage, current=row_port.link().current_drawn) - ) - d = self.d[f"{col},{row}"] = self.Block( - Diode( - current=row_port.link().current_drawn, - # col voltage is used as a proxy, since (properly) using the row voltage causes a circular dependency - reverse_voltage=col_port.link().voltage, - voltage_drop=self.voltage_drop, - ) - ) - lowest_output = col_port.link().voltage.lower() + d.actual_voltage_drop.lower() - highest_output = col_port.link().output_thresholds.lower() + d.actual_voltage_drop.upper() - row_voltages[row] = row_voltages[row].hull((lowest_output, highest_output)) - row_thresholds[row] = row_thresholds[row].max(highest_output) - self.connect(d.anode, row_port.net) - self.connect(d.cathode, sw.sw) - self.connect(sw.com, col_port.net) - - for row in range(self.get(self.nrows)): - self.assign(self.rows[str(row)].voltage_out, row_voltages[row]) - self.assign(self.rows[str(row)].output_thresholds, (row_thresholds[row], float("inf"))) + cell = self.sw[f"{col},{row}"] = self.Block(SwitchCell(voltage_drop=self.voltage_drop)) + self.connect(cell.col, col_port) + self.connect(cell.row, self.rows[str(row)]) self.rows.defined() self.cols.defined() + + +@abstract_block_default(lambda: SwitchDiodeMatrixNeopixels) +class SwitchMatrixNeopixels(BlockInterfaceMixin[SwitchMatrix]): + """SwitchMatrix mixin that adds a neopixel with every switch, in the SwitchCell hierarchy block. + Adds power and data ports for the chain. + + npx_order can be: + - "row": chains neopixels across a row before moving to the next row + - "row_snake": above, but reversing direction every other row + - "col": chains neopixels across a column before moving to the next column + - "col_snake": above, but reversing direction every other col + """ + + def __init__(self, *args: Any, npx_order: StringLike = "row_snake", **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + self.npx_order = self.ArgParameter(npx_order) + + self.npx_din = self.Port(DigitalSink.empty()) + self.npx_dout = self.Port(DigitalSource.empty(), optional=True) + self.npx_pwr = self.Port(VoltageSink.empty()) + self.npx_gnd = self.Port(Ground.empty()) + + +class SwitchDiodeMatrixNeopixels(SwitchMatrixNeopixels, SwitchDiodeMatrix, HumanInterface, GeneratorBlock): + """SwitchMatrix implementation with neopixel chain.""" + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + self.generator_param(self.npx_order) + + @override + def generate(self) -> None: + super().generate() + + npx_order = self.get(self.npx_order) + switch_cells: List[SwitchCell] = [] + + if npx_order in ("row", "row_snake"): + for row in range(self.get(self.nrows)): + cols = list(range(self.get(self.ncols))) + if npx_order == "row_snake" and row % 2 == 1: + cols = list(reversed(cols)) + for col in cols: + switch_cells.append(self.sw[f"{col},{row}"]) + elif npx_order in ("col", "col_snake"): + for col in range(self.get(self.ncols)): + rows = list(range(self.get(self.nrows))) + if npx_order == "col_snake" and col % 2 == 1: + rows = list(reversed(rows)) + for row in rows: + switch_cells.append(self.sw[f"{col},{row}"]) + else: + raise ValueError(f"Invalid npx_order {npx_order}") + + last_npx_dout: Port[DigitalLink] = self.npx_din + for switch_cell in switch_cells: + cell_npx = switch_cell.with_mixin(SwitchCellNeopixel()) + self.connect(self.npx_pwr, cell_npx.npx_pwr) + self.connect(self.npx_gnd, cell_npx.npx_gnd) + self.connect(cell_npx.npx_din, last_npx_dout) + last_npx_dout = cell_npx.npx_dout + + self.connect(last_npx_dout, self.npx_dout) diff --git a/edg/circuits/__init__.py b/edg/circuits/__init__.py index 7d3246713..59511aa82 100644 --- a/edg/circuits/__init__.py +++ b/edg/circuits/__init__.py @@ -19,7 +19,7 @@ from .BootstrapVoltageAdder import BootstrapVoltageAdder from .LedMatrix import CharlieplexedLedMatrix -from .SwitchMatrix import SwitchMatrix +from .SwitchMatrix import SwitchMatrix, SwitchMatrixNeopixels from .ResistiveSensor import ConnectorResistiveSensor from .ControlCircuits import CompensatorType2 diff --git a/edg/parts/human_interface/Neopixel.py b/edg/parts/human_interface/Neopixel.py index 27147c68c..440ab6e97 100644 --- a/edg/parts/human_interface/Neopixel.py +++ b/edg/parts/human_interface/Neopixel.py @@ -6,20 +6,6 @@ from ...vendor_parts.jlc.JlcPart import JlcPart -@abstract_block_default(lambda: Ws2812b) -class Neopixel(Light, Block): - """Abstract base class for individually-addressable, serially-connected Neopixel-type - (typically RGB) LEDs and defines the pwr/gnd/din/dout interface.""" - - def __init__(self) -> None: - super().__init__() - self.pwr = self.Port(VoltageSink.empty(), [Power]) - self.vdd = self.pwr # deprecated alias - self.gnd = self.Port(Ground.empty(), [Common]) - self.din = self.Port(DigitalSink.empty(), [Input]) - self.dout = self.Port(DigitalSource.empty(), optional=True) - - class Ws2812b(Neopixel, FootprintBlock, JlcPart): """5050-size Neopixel RGB. Specifically does NOT need extra filtering capacitors.""" diff --git a/examples/BasicKeyboard/BasicKeyboard.net.ref b/examples/BasicKeyboard/BasicKeyboard.net.ref index eaf128f3f..93eedd57d 100644 --- a/examples/BasicKeyboard/BasicKeyboard.net.ref +++ b/examples/BasicKeyboard/BasicKeyboard.net.ref @@ -13,194 +13,194 @@ (sheetpath (names "/") (tstamps "/")) (tstamps "02850146")) (comp (ref "SW1") - (value "sw.sw[0,0]") + (value "sw.sw[0,0].sw") (footprint "Switch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX") - (property (name "Sheetname") (value "sw")) - (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.SwitchMatrix")) - (property (name "edg_path") (value "sw.sw[0,0]")) - (property (name "edg_short_path") (value "sw.sw[0,0]")) + (property (name "Sheetname") (value "sw[0,0]")) + (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.DiodeSwitchCell")) + (property (name "edg_path") (value "sw.sw[0,0].sw")) + (property (name "edg_short_path") (value "sw.sw[0,0].sw")) (property (name "edg_refdes") (value "SW1")) (property (name "edg_part") (value "PG151101S11 (Kailh)")) (property (name "edg_value") (value "PG151101S11")) - (sheetpath (names "/sw/") (tstamps "/015f00eb/")) - (tstamps "09be022f")) + (sheetpath (names "/sw/sw[0,0]/") (tstamps "/015f00eb/09be022f/")) + (tstamps "015f00eb")) (comp (ref "D1") - (value "sw.d[0,0]") + (value "sw.sw[0,0].d") (footprint "Diode_SMD:D_SOD-323") - (property (name "Sheetname") (value "sw")) - (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.SwitchMatrix")) - (property (name "edg_path") (value "sw.d[0,0]")) - (property (name "edg_short_path") (value "sw.d[0,0]")) + (property (name "Sheetname") (value "sw[0,0]")) + (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.DiodeSwitchCell")) + (property (name "edg_path") (value "sw.sw[0,0].d")) + (property (name "edg_short_path") (value "sw.sw[0,0].d")) (property (name "edg_refdes") (value "D1")) (property (name "edg_part") (value "1N5819WS (Guangdong Hottech)")) (property (name "edg_value") (value "40V 600mV@1A 1A SOD-323 Schottky Barrier Diodes (SBD) ROHS")) - (sheetpath (names "/sw/") (tstamps "/015f00eb/")) - (tstamps "062601a9")) + (sheetpath (names "/sw/sw[0,0]/") (tstamps "/015f00eb/09be022f/")) + (tstamps "00650065")) (comp (ref "SW2") - (value "sw.sw[0,1]") + (value "sw.sw[0,1].sw") (footprint "Switch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX") - (property (name "Sheetname") (value "sw")) - (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.SwitchMatrix")) - (property (name "edg_path") (value "sw.sw[0,1]")) - (property (name "edg_short_path") (value "sw.sw[0,1]")) + (property (name "Sheetname") (value "sw[0,1]")) + (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.DiodeSwitchCell")) + (property (name "edg_path") (value "sw.sw[0,1].sw")) + (property (name "edg_short_path") (value "sw.sw[0,1].sw")) (property (name "edg_refdes") (value "SW2")) (property (name "edg_part") (value "PG151101S11 (Kailh)")) (property (name "edg_value") (value "PG151101S11")) - (sheetpath (names "/sw/") (tstamps "/015f00eb/")) - (tstamps "09c00230")) + (sheetpath (names "/sw/sw[0,1]/") (tstamps "/015f00eb/09c00230/")) + (tstamps "015f00eb")) (comp (ref "D2") - (value "sw.d[0,1]") + (value "sw.sw[0,1].d") (footprint "Diode_SMD:D_SOD-323") - (property (name "Sheetname") (value "sw")) - (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.SwitchMatrix")) - (property (name "edg_path") (value "sw.d[0,1]")) - (property (name "edg_short_path") (value "sw.d[0,1]")) + (property (name "Sheetname") (value "sw[0,1]")) + (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.DiodeSwitchCell")) + (property (name "edg_path") (value "sw.sw[0,1].d")) + (property (name "edg_short_path") (value "sw.sw[0,1].d")) (property (name "edg_refdes") (value "D2")) (property (name "edg_part") (value "1N5819WS (Guangdong Hottech)")) (property (name "edg_value") (value "40V 600mV@1A 1A SOD-323 Schottky Barrier Diodes (SBD) ROHS")) - (sheetpath (names "/sw/") (tstamps "/015f00eb/")) - (tstamps "062801aa")) + (sheetpath (names "/sw/sw[0,1]/") (tstamps "/015f00eb/09c00230/")) + (tstamps "00650065")) (comp (ref "SW3") - (value "sw.sw[0,2]") + (value "sw.sw[0,2].sw") (footprint "Switch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX") - (property (name "Sheetname") (value "sw")) - (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.SwitchMatrix")) - (property (name "edg_path") (value "sw.sw[0,2]")) - (property (name "edg_short_path") (value "sw.sw[0,2]")) + (property (name "Sheetname") (value "sw[0,2]")) + (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.DiodeSwitchCell")) + (property (name "edg_path") (value "sw.sw[0,2].sw")) + (property (name "edg_short_path") (value "sw.sw[0,2].sw")) (property (name "edg_refdes") (value "SW3")) (property (name "edg_part") (value "PG151101S11 (Kailh)")) (property (name "edg_value") (value "PG151101S11")) - (sheetpath (names "/sw/") (tstamps "/015f00eb/")) - (tstamps "09c20231")) + (sheetpath (names "/sw/sw[0,2]/") (tstamps "/015f00eb/09c20231/")) + (tstamps "015f00eb")) (comp (ref "D3") - (value "sw.d[0,2]") + (value "sw.sw[0,2].d") (footprint "Diode_SMD:D_SOD-323") - (property (name "Sheetname") (value "sw")) - (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.SwitchMatrix")) - (property (name "edg_path") (value "sw.d[0,2]")) - (property (name "edg_short_path") (value "sw.d[0,2]")) + (property (name "Sheetname") (value "sw[0,2]")) + (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.DiodeSwitchCell")) + (property (name "edg_path") (value "sw.sw[0,2].d")) + (property (name "edg_short_path") (value "sw.sw[0,2].d")) (property (name "edg_refdes") (value "D3")) (property (name "edg_part") (value "1N5819WS (Guangdong Hottech)")) (property (name "edg_value") (value "40V 600mV@1A 1A SOD-323 Schottky Barrier Diodes (SBD) ROHS")) - (sheetpath (names "/sw/") (tstamps "/015f00eb/")) - (tstamps "062a01ab")) + (sheetpath (names "/sw/sw[0,2]/") (tstamps "/015f00eb/09c20231/")) + (tstamps "00650065")) (comp (ref "SW4") - (value "sw.sw[1,0]") + (value "sw.sw[1,0].sw") (footprint "Switch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX") - (property (name "Sheetname") (value "sw")) - (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.SwitchMatrix")) - (property (name "edg_path") (value "sw.sw[1,0]")) - (property (name "edg_short_path") (value "sw.sw[1,0]")) + (property (name "Sheetname") (value "sw[1,0]")) + (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.DiodeSwitchCell")) + (property (name "edg_path") (value "sw.sw[1,0].sw")) + (property (name "edg_short_path") (value "sw.sw[1,0].sw")) (property (name "edg_refdes") (value "SW4")) (property (name "edg_part") (value "PG151101S11 (Kailh)")) (property (name "edg_value") (value "PG151101S11")) - (sheetpath (names "/sw/") (tstamps "/015f00eb/")) - (tstamps "09c20230")) + (sheetpath (names "/sw/sw[1,0]/") (tstamps "/015f00eb/09c20230/")) + (tstamps "015f00eb")) (comp (ref "D4") - (value "sw.d[1,0]") + (value "sw.sw[1,0].d") (footprint "Diode_SMD:D_SOD-323") - (property (name "Sheetname") (value "sw")) - (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.SwitchMatrix")) - (property (name "edg_path") (value "sw.d[1,0]")) - (property (name "edg_short_path") (value "sw.d[1,0]")) + (property (name "Sheetname") (value "sw[1,0]")) + (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.DiodeSwitchCell")) + (property (name "edg_path") (value "sw.sw[1,0].d")) + (property (name "edg_short_path") (value "sw.sw[1,0].d")) (property (name "edg_refdes") (value "D4")) (property (name "edg_part") (value "1N5819WS (Guangdong Hottech)")) (property (name "edg_value") (value "40V 600mV@1A 1A SOD-323 Schottky Barrier Diodes (SBD) ROHS")) - (sheetpath (names "/sw/") (tstamps "/015f00eb/")) - (tstamps "062a01aa")) + (sheetpath (names "/sw/sw[1,0]/") (tstamps "/015f00eb/09c20230/")) + (tstamps "00650065")) (comp (ref "SW5") - (value "sw.sw[1,1]") + (value "sw.sw[1,1].sw") (footprint "Switch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX") - (property (name "Sheetname") (value "sw")) - (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.SwitchMatrix")) - (property (name "edg_path") (value "sw.sw[1,1]")) - (property (name "edg_short_path") (value "sw.sw[1,1]")) + (property (name "Sheetname") (value "sw[1,1]")) + (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.DiodeSwitchCell")) + (property (name "edg_path") (value "sw.sw[1,1].sw")) + (property (name "edg_short_path") (value "sw.sw[1,1].sw")) (property (name "edg_refdes") (value "SW5")) (property (name "edg_part") (value "PG151101S11 (Kailh)")) (property (name "edg_value") (value "PG151101S11")) - (sheetpath (names "/sw/") (tstamps "/015f00eb/")) - (tstamps "09c40231")) + (sheetpath (names "/sw/sw[1,1]/") (tstamps "/015f00eb/09c40231/")) + (tstamps "015f00eb")) (comp (ref "D5") - (value "sw.d[1,1]") + (value "sw.sw[1,1].d") (footprint "Diode_SMD:D_SOD-323") - (property (name "Sheetname") (value "sw")) - (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.SwitchMatrix")) - (property (name "edg_path") (value "sw.d[1,1]")) - (property (name "edg_short_path") (value "sw.d[1,1]")) + (property (name "Sheetname") (value "sw[1,1]")) + (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.DiodeSwitchCell")) + (property (name "edg_path") (value "sw.sw[1,1].d")) + (property (name "edg_short_path") (value "sw.sw[1,1].d")) (property (name "edg_refdes") (value "D5")) (property (name "edg_part") (value "1N5819WS (Guangdong Hottech)")) (property (name "edg_value") (value "40V 600mV@1A 1A SOD-323 Schottky Barrier Diodes (SBD) ROHS")) - (sheetpath (names "/sw/") (tstamps "/015f00eb/")) - (tstamps "062c01ab")) + (sheetpath (names "/sw/sw[1,1]/") (tstamps "/015f00eb/09c40231/")) + (tstamps "00650065")) (comp (ref "SW6") - (value "sw.sw[1,2]") + (value "sw.sw[1,2].sw") (footprint "Switch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX") - (property (name "Sheetname") (value "sw")) - (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.SwitchMatrix")) - (property (name "edg_path") (value "sw.sw[1,2]")) - (property (name "edg_short_path") (value "sw.sw[1,2]")) + (property (name "Sheetname") (value "sw[1,2]")) + (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.DiodeSwitchCell")) + (property (name "edg_path") (value "sw.sw[1,2].sw")) + (property (name "edg_short_path") (value "sw.sw[1,2].sw")) (property (name "edg_refdes") (value "SW6")) (property (name "edg_part") (value "PG151101S11 (Kailh)")) (property (name "edg_value") (value "PG151101S11")) - (sheetpath (names "/sw/") (tstamps "/015f00eb/")) - (tstamps "09c60232")) + (sheetpath (names "/sw/sw[1,2]/") (tstamps "/015f00eb/09c60232/")) + (tstamps "015f00eb")) (comp (ref "D6") - (value "sw.d[1,2]") + (value "sw.sw[1,2].d") (footprint "Diode_SMD:D_SOD-323") - (property (name "Sheetname") (value "sw")) - (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.SwitchMatrix")) - (property (name "edg_path") (value "sw.d[1,2]")) - (property (name "edg_short_path") (value "sw.d[1,2]")) + (property (name "Sheetname") (value "sw[1,2]")) + (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.DiodeSwitchCell")) + (property (name "edg_path") (value "sw.sw[1,2].d")) + (property (name "edg_short_path") (value "sw.sw[1,2].d")) (property (name "edg_refdes") (value "D6")) (property (name "edg_part") (value "1N5819WS (Guangdong Hottech)")) (property (name "edg_value") (value "40V 600mV@1A 1A SOD-323 Schottky Barrier Diodes (SBD) ROHS")) - (sheetpath (names "/sw/") (tstamps "/015f00eb/")) - (tstamps "062e01ac"))) + (sheetpath (names "/sw/sw[1,2]/") (tstamps "/015f00eb/09c60232/")) + (tstamps "00650065"))) (nets (net (code 1) (name "mcu.gpio.0_0") (node (ref U1) (pin 7)) - (node (ref SW1) (pin 2)) - (node (ref SW2) (pin 2)) - (node (ref SW3) (pin 2))) + (node (ref SW1) (pin 1)) + (node (ref SW2) (pin 1)) + (node (ref SW3) (pin 1))) (net (code 2) (name "mcu.gpio.0_1") (node (ref U1) (pin 8)) - (node (ref SW4) (pin 2)) - (node (ref SW5) (pin 2)) - (node (ref SW6) (pin 2))) + (node (ref SW4) (pin 1)) + (node (ref SW5) (pin 1)) + (node (ref SW6) (pin 1))) (net (code 3) (name "mcu.gpio.1_0") (node (ref U1) (pin 9)) - (node (ref D1) (pin 2)) - (node (ref D4) (pin 2))) + (node (ref D1) (pin 1)) + (node (ref D4) (pin 1))) (net (code 4) (name "mcu.gpio.1_1") (node (ref U1) (pin 11)) - (node (ref D2) (pin 2)) - (node (ref D5) (pin 2))) + (node (ref D2) (pin 1)) + (node (ref D5) (pin 1))) (net (code 5) (name "mcu.gpio.1_2") (node (ref U1) (pin 10)) - (node (ref D3) (pin 2)) - (node (ref D6) (pin 2))) + (node (ref D3) (pin 1)) + (node (ref D6) (pin 1))) (net (code 6) (name "mcu.gnd") (node (ref U1) (pin 13))) (net (code 7) (name "mcu.pwr_out") (node (ref U1) (pin 12))) (net (code 8) (name "mcu.vusb_out") (node (ref U1) (pin 14))) -(net (code 9) (name "sw.sw[0,0].sw") - (node (ref SW1) (pin 1)) - (node (ref D1) (pin 1))) -(net (code 10) (name "sw.sw[0,1].sw") - (node (ref SW2) (pin 1)) - (node (ref D2) (pin 1))) -(net (code 11) (name "sw.sw[0,2].sw") - (node (ref SW3) (pin 1)) - (node (ref D3) (pin 1))) -(net (code 12) (name "sw.sw[1,0].sw") - (node (ref SW4) (pin 1)) - (node (ref D4) (pin 1))) -(net (code 13) (name "sw.sw[1,1].sw") - (node (ref SW5) (pin 1)) - (node (ref D5) (pin 1))) -(net (code 14) (name "sw.sw[1,2].sw") - (node (ref SW6) (pin 1)) - (node (ref D6) (pin 1)))) +(net (code 9) (name "sw.sw[0,0].sw.com") + (node (ref SW1) (pin 2)) + (node (ref D1) (pin 2))) +(net (code 10) (name "sw.sw[0,1].sw.com") + (node (ref SW2) (pin 2)) + (node (ref D2) (pin 2))) +(net (code 11) (name "sw.sw[0,2].sw.com") + (node (ref SW3) (pin 2)) + (node (ref D3) (pin 2))) +(net (code 12) (name "sw.sw[1,0].sw.com") + (node (ref SW4) (pin 2)) + (node (ref D4) (pin 2))) +(net (code 13) (name "sw.sw[1,1].sw.com") + (node (ref SW5) (pin 2)) + (node (ref D5) (pin 2))) +(net (code 14) (name "sw.sw[1,2].sw.com") + (node (ref SW6) (pin 2)) + (node (ref D6) (pin 2)))) ) \ No newline at end of file diff --git a/examples/BasicKeyboard/BasicKeyboard.svgpcb.js b/examples/BasicKeyboard/BasicKeyboard.svgpcb.js index 4505f0510..b59f03134 100644 --- a/examples/BasicKeyboard/BasicKeyboard.svgpcb.js +++ b/examples/BasicKeyboard/BasicKeyboard.svgpcb.js @@ -1,6 +1,6 @@ const board = new PCB(); -const sw = SwitchMatrix_2_3_sw(pt(0.039, 0.039)) +const sw = SwitchDiodeMatrix_2_3_sw(pt(0.039, 0.039)) // mcu.device const U1 = board.add(XIAO_RP2040_SMD, { translate: pt(1.466, 0.410), rotate: 0, @@ -8,20 +8,20 @@ const U1 = board.add(XIAO_RP2040_SMD, { }) board.setNetlist([ - {name: "mcu.gpio.0_0", pads: [["U1", "7"], ["SW1", "2"], ["SW2", "2"], ["SW3", "2"]]}, - {name: "mcu.gpio.0_1", pads: [["U1", "8"], ["SW4", "2"], ["SW5", "2"], ["SW6", "2"]]}, - {name: "mcu.gpio.1_0", pads: [["U1", "9"], ["D1", "2"], ["D4", "2"]]}, - {name: "mcu.gpio.1_1", pads: [["U1", "11"], ["D2", "2"], ["D5", "2"]]}, - {name: "mcu.gpio.1_2", pads: [["U1", "10"], ["D3", "2"], ["D6", "2"]]}, + {name: "mcu.gpio.0_0", pads: [["U1", "7"], ["SW1", "1"], ["SW2", "1"], ["SW3", "1"]]}, + {name: "mcu.gpio.0_1", pads: [["U1", "8"], ["SW4", "1"], ["SW5", "1"], ["SW6", "1"]]}, + {name: "mcu.gpio.1_0", pads: [["U1", "9"], ["D1", "1"], ["D4", "1"]]}, + {name: "mcu.gpio.1_1", pads: [["U1", "11"], ["D2", "1"], ["D5", "1"]]}, + {name: "mcu.gpio.1_2", pads: [["U1", "10"], ["D3", "1"], ["D6", "1"]]}, {name: "mcu.gnd", pads: [["U1", "13"]]}, {name: "mcu.pwr_out", pads: [["U1", "12"]]}, {name: "mcu.vusb_out", pads: [["U1", "14"]]}, - {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"]]} + {name: "sw.sw[0,0].sw.com", pads: [["SW1", "2"], ["D1", "2"]]}, + {name: "sw.sw[0,1].sw.com", pads: [["SW2", "2"], ["D2", "2"]]}, + {name: "sw.sw[0,2].sw.com", pads: [["SW3", "2"], ["D3", "2"]]}, + {name: "sw.sw[1,0].sw.com", pads: [["SW4", "2"], ["D4", "2"]]}, + {name: "sw.sw[1,1].sw.com", pads: [["SW5", "2"], ["D5", "2"]]}, + {name: "sw.sw[1,2].sw.com", pads: [["SW6", "2"], ["D6", "2"]]} ]) const limit0 = pt(-0.07874015748031496, -0.07874015748031496); @@ -62,7 +62,7 @@ renderPCB({ mmPerUnit: 25.4 }) -function SwitchMatrix_2_3_sw(xy, colSpacing=0.5, rowSpacing=0.5, diodeOffset=[0.25, 0]) { +function SwitchDiodeMatrix_2_3_sw(xy, colSpacing=0.5, rowSpacing=0.5, diodeOffset=[0.25, 0]) { // Circuit generator params const ncols = 2 const nrows = 3 diff --git a/examples/DeskController/DeskController.net.ref b/examples/DeskController/DeskController.net.ref index 503f76654..ce51ddc8c 100644 --- a/examples/DeskController/DeskController.net.ref +++ b/examples/DeskController/DeskController.net.ref @@ -265,149 +265,149 @@ (sheetpath (names "/mcu/en_pull/") (tstamps "/02850146/0b9c02f0/")) (tstamps "00640064")) (comp (ref "DSW1") - (value "sw.sw[0,0]") + (value "sw.sw[0,0].sw") (footprint "Switch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX") - (property (name "Sheetname") (value "sw")) - (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.SwitchMatrix")) - (property (name "edg_path") (value "sw.sw[0,0]")) - (property (name "edg_short_path") (value "sw.sw[0,0]")) + (property (name "Sheetname") (value "sw[0,0]")) + (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.DiodeSwitchCell")) + (property (name "edg_path") (value "sw.sw[0,0].sw")) + (property (name "edg_short_path") (value "sw.sw[0,0].sw")) (property (name "edg_refdes") (value "DSW1")) (property (name "edg_part") (value "PG151101S11 (Kailh)")) (property (name "edg_value") (value "PG151101S11")) - (sheetpath (names "/sw/") (tstamps "/015f00eb/")) - (tstamps "09be022f")) + (sheetpath (names "/sw/sw[0,0]/") (tstamps "/015f00eb/09be022f/")) + (tstamps "015f00eb")) (comp (ref "DD2") - (value "sw.d[0,0]") + (value "sw.sw[0,0].d") (footprint "Diode_SMD:D_SOD-323") - (property (name "Sheetname") (value "sw")) - (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.SwitchMatrix")) - (property (name "edg_path") (value "sw.d[0,0]")) - (property (name "edg_short_path") (value "sw.d[0,0]")) + (property (name "Sheetname") (value "sw[0,0]")) + (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.DiodeSwitchCell")) + (property (name "edg_path") (value "sw.sw[0,0].d")) + (property (name "edg_short_path") (value "sw.sw[0,0].d")) (property (name "edg_refdes") (value "DD2")) (property (name "edg_part") (value "1N5819WS (Guangdong Hottech)")) (property (name "edg_value") (value "40V 600mV@1A 1A SOD-323 Schottky Barrier Diodes (SBD) ROHS")) - (sheetpath (names "/sw/") (tstamps "/015f00eb/")) - (tstamps "062601a9")) + (sheetpath (names "/sw/sw[0,0]/") (tstamps "/015f00eb/09be022f/")) + (tstamps "00650065")) (comp (ref "DSW2") - (value "sw.sw[0,1]") + (value "sw.sw[0,1].sw") (footprint "Switch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX") - (property (name "Sheetname") (value "sw")) - (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.SwitchMatrix")) - (property (name "edg_path") (value "sw.sw[0,1]")) - (property (name "edg_short_path") (value "sw.sw[0,1]")) + (property (name "Sheetname") (value "sw[0,1]")) + (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.DiodeSwitchCell")) + (property (name "edg_path") (value "sw.sw[0,1].sw")) + (property (name "edg_short_path") (value "sw.sw[0,1].sw")) (property (name "edg_refdes") (value "DSW2")) (property (name "edg_part") (value "PG151101S11 (Kailh)")) (property (name "edg_value") (value "PG151101S11")) - (sheetpath (names "/sw/") (tstamps "/015f00eb/")) - (tstamps "09c00230")) + (sheetpath (names "/sw/sw[0,1]/") (tstamps "/015f00eb/09c00230/")) + (tstamps "015f00eb")) (comp (ref "DD3") - (value "sw.d[0,1]") + (value "sw.sw[0,1].d") (footprint "Diode_SMD:D_SOD-323") - (property (name "Sheetname") (value "sw")) - (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.SwitchMatrix")) - (property (name "edg_path") (value "sw.d[0,1]")) - (property (name "edg_short_path") (value "sw.d[0,1]")) + (property (name "Sheetname") (value "sw[0,1]")) + (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.DiodeSwitchCell")) + (property (name "edg_path") (value "sw.sw[0,1].d")) + (property (name "edg_short_path") (value "sw.sw[0,1].d")) (property (name "edg_refdes") (value "DD3")) (property (name "edg_part") (value "1N5819WS (Guangdong Hottech)")) (property (name "edg_value") (value "40V 600mV@1A 1A SOD-323 Schottky Barrier Diodes (SBD) ROHS")) - (sheetpath (names "/sw/") (tstamps "/015f00eb/")) - (tstamps "062801aa")) + (sheetpath (names "/sw/sw[0,1]/") (tstamps "/015f00eb/09c00230/")) + (tstamps "00650065")) (comp (ref "DSW3") - (value "sw.sw[0,2]") + (value "sw.sw[0,2].sw") (footprint "Switch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX") - (property (name "Sheetname") (value "sw")) - (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.SwitchMatrix")) - (property (name "edg_path") (value "sw.sw[0,2]")) - (property (name "edg_short_path") (value "sw.sw[0,2]")) + (property (name "Sheetname") (value "sw[0,2]")) + (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.DiodeSwitchCell")) + (property (name "edg_path") (value "sw.sw[0,2].sw")) + (property (name "edg_short_path") (value "sw.sw[0,2].sw")) (property (name "edg_refdes") (value "DSW3")) (property (name "edg_part") (value "PG151101S11 (Kailh)")) (property (name "edg_value") (value "PG151101S11")) - (sheetpath (names "/sw/") (tstamps "/015f00eb/")) - (tstamps "09c20231")) + (sheetpath (names "/sw/sw[0,2]/") (tstamps "/015f00eb/09c20231/")) + (tstamps "015f00eb")) (comp (ref "DD4") - (value "sw.d[0,2]") + (value "sw.sw[0,2].d") (footprint "Diode_SMD:D_SOD-323") - (property (name "Sheetname") (value "sw")) - (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.SwitchMatrix")) - (property (name "edg_path") (value "sw.d[0,2]")) - (property (name "edg_short_path") (value "sw.d[0,2]")) + (property (name "Sheetname") (value "sw[0,2]")) + (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.DiodeSwitchCell")) + (property (name "edg_path") (value "sw.sw[0,2].d")) + (property (name "edg_short_path") (value "sw.sw[0,2].d")) (property (name "edg_refdes") (value "DD4")) (property (name "edg_part") (value "1N5819WS (Guangdong Hottech)")) (property (name "edg_value") (value "40V 600mV@1A 1A SOD-323 Schottky Barrier Diodes (SBD) ROHS")) - (sheetpath (names "/sw/") (tstamps "/015f00eb/")) - (tstamps "062a01ab")) + (sheetpath (names "/sw/sw[0,2]/") (tstamps "/015f00eb/09c20231/")) + (tstamps "00650065")) (comp (ref "DSW4") - (value "sw.sw[1,0]") + (value "sw.sw[1,0].sw") (footprint "Switch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX") - (property (name "Sheetname") (value "sw")) - (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.SwitchMatrix")) - (property (name "edg_path") (value "sw.sw[1,0]")) - (property (name "edg_short_path") (value "sw.sw[1,0]")) + (property (name "Sheetname") (value "sw[1,0]")) + (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.DiodeSwitchCell")) + (property (name "edg_path") (value "sw.sw[1,0].sw")) + (property (name "edg_short_path") (value "sw.sw[1,0].sw")) (property (name "edg_refdes") (value "DSW4")) (property (name "edg_part") (value "PG151101S11 (Kailh)")) (property (name "edg_value") (value "PG151101S11")) - (sheetpath (names "/sw/") (tstamps "/015f00eb/")) - (tstamps "09c20230")) + (sheetpath (names "/sw/sw[1,0]/") (tstamps "/015f00eb/09c20230/")) + (tstamps "015f00eb")) (comp (ref "DD5") - (value "sw.d[1,0]") + (value "sw.sw[1,0].d") (footprint "Diode_SMD:D_SOD-323") - (property (name "Sheetname") (value "sw")) - (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.SwitchMatrix")) - (property (name "edg_path") (value "sw.d[1,0]")) - (property (name "edg_short_path") (value "sw.d[1,0]")) + (property (name "Sheetname") (value "sw[1,0]")) + (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.DiodeSwitchCell")) + (property (name "edg_path") (value "sw.sw[1,0].d")) + (property (name "edg_short_path") (value "sw.sw[1,0].d")) (property (name "edg_refdes") (value "DD5")) (property (name "edg_part") (value "1N5819WS (Guangdong Hottech)")) (property (name "edg_value") (value "40V 600mV@1A 1A SOD-323 Schottky Barrier Diodes (SBD) ROHS")) - (sheetpath (names "/sw/") (tstamps "/015f00eb/")) - (tstamps "062a01aa")) + (sheetpath (names "/sw/sw[1,0]/") (tstamps "/015f00eb/09c20230/")) + (tstamps "00650065")) (comp (ref "DSW5") - (value "sw.sw[1,1]") + (value "sw.sw[1,1].sw") (footprint "Switch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX") - (property (name "Sheetname") (value "sw")) - (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.SwitchMatrix")) - (property (name "edg_path") (value "sw.sw[1,1]")) - (property (name "edg_short_path") (value "sw.sw[1,1]")) + (property (name "Sheetname") (value "sw[1,1]")) + (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.DiodeSwitchCell")) + (property (name "edg_path") (value "sw.sw[1,1].sw")) + (property (name "edg_short_path") (value "sw.sw[1,1].sw")) (property (name "edg_refdes") (value "DSW5")) (property (name "edg_part") (value "PG151101S11 (Kailh)")) (property (name "edg_value") (value "PG151101S11")) - (sheetpath (names "/sw/") (tstamps "/015f00eb/")) - (tstamps "09c40231")) + (sheetpath (names "/sw/sw[1,1]/") (tstamps "/015f00eb/09c40231/")) + (tstamps "015f00eb")) (comp (ref "DD6") - (value "sw.d[1,1]") + (value "sw.sw[1,1].d") (footprint "Diode_SMD:D_SOD-323") - (property (name "Sheetname") (value "sw")) - (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.SwitchMatrix")) - (property (name "edg_path") (value "sw.d[1,1]")) - (property (name "edg_short_path") (value "sw.d[1,1]")) + (property (name "Sheetname") (value "sw[1,1]")) + (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.DiodeSwitchCell")) + (property (name "edg_path") (value "sw.sw[1,1].d")) + (property (name "edg_short_path") (value "sw.sw[1,1].d")) (property (name "edg_refdes") (value "DD6")) (property (name "edg_part") (value "1N5819WS (Guangdong Hottech)")) (property (name "edg_value") (value "40V 600mV@1A 1A SOD-323 Schottky Barrier Diodes (SBD) ROHS")) - (sheetpath (names "/sw/") (tstamps "/015f00eb/")) - (tstamps "062c01ab")) + (sheetpath (names "/sw/sw[1,1]/") (tstamps "/015f00eb/09c40231/")) + (tstamps "00650065")) (comp (ref "DSW6") - (value "sw.sw[1,2]") + (value "sw.sw[1,2].sw") (footprint "Switch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX") - (property (name "Sheetname") (value "sw")) - (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.SwitchMatrix")) - (property (name "edg_path") (value "sw.sw[1,2]")) - (property (name "edg_short_path") (value "sw.sw[1,2]")) + (property (name "Sheetname") (value "sw[1,2]")) + (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.DiodeSwitchCell")) + (property (name "edg_path") (value "sw.sw[1,2].sw")) + (property (name "edg_short_path") (value "sw.sw[1,2].sw")) (property (name "edg_refdes") (value "DSW6")) (property (name "edg_part") (value "PG151101S11 (Kailh)")) (property (name "edg_value") (value "PG151101S11")) - (sheetpath (names "/sw/") (tstamps "/015f00eb/")) - (tstamps "09c60232")) + (sheetpath (names "/sw/sw[1,2]/") (tstamps "/015f00eb/09c60232/")) + (tstamps "015f00eb")) (comp (ref "DD7") - (value "sw.d[1,2]") + (value "sw.sw[1,2].d") (footprint "Diode_SMD:D_SOD-323") - (property (name "Sheetname") (value "sw")) - (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.SwitchMatrix")) - (property (name "edg_path") (value "sw.d[1,2]")) - (property (name "edg_short_path") (value "sw.d[1,2]")) + (property (name "Sheetname") (value "sw[1,2]")) + (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.DiodeSwitchCell")) + (property (name "edg_path") (value "sw.sw[1,2].d")) + (property (name "edg_short_path") (value "sw.sw[1,2].d")) (property (name "edg_refdes") (value "DD7")) (property (name "edg_part") (value "1N5819WS (Guangdong Hottech)")) (property (name "edg_value") (value "40V 600mV@1A 1A SOD-323 Schottky Barrier Diodes (SBD) ROHS")) - (sheetpath (names "/sw/") (tstamps "/015f00eb/")) - (tstamps "062e01ac")) + (sheetpath (names "/sw/sw[1,2]/") (tstamps "/015f00eb/09c60232/")) + (tstamps "00650065")) (comp (ref "DD8") (value "ledr.package") (footprint "LED_SMD:LED_0603_1608Metric") @@ -1020,26 +1020,26 @@ (node (ref DU2) (pin 4))) (net (code 13) (name "Dmcu.gpio.swc_0") (node (ref DU2) (pin 5)) - (node (ref DSW1) (pin 2)) - (node (ref DSW2) (pin 2)) - (node (ref DSW3) (pin 2))) + (node (ref DSW1) (pin 1)) + (node (ref DSW2) (pin 1)) + (node (ref DSW3) (pin 1))) (net (code 14) (name "Dmcu.gpio.swc_1") (node (ref DU2) (pin 15)) - (node (ref DSW4) (pin 2)) - (node (ref DSW5) (pin 2)) - (node (ref DSW6) (pin 2))) + (node (ref DSW4) (pin 1)) + (node (ref DSW5) (pin 1)) + (node (ref DSW6) (pin 1))) (net (code 15) (name "Dmcu.gpio.swr_0") (node (ref DU2) (pin 14)) - (node (ref DD2) (pin 2)) - (node (ref DD5) (pin 2))) + (node (ref DD2) (pin 1)) + (node (ref DD5) (pin 1))) (net (code 16) (name "Dmcu.gpio.swr_1") (node (ref DU2) (pin 13)) - (node (ref DD3) (pin 2)) - (node (ref DD6) (pin 2))) + (node (ref DD3) (pin 1)) + (node (ref DD6) (pin 1))) (net (code 17) (name "Dmcu.gpio.swr_2") (node (ref DU2) (pin 10)) - (node (ref DD4) (pin 2)) - (node (ref DD7) (pin 2))) + (node (ref DD4) (pin 1)) + (node (ref DD7) (pin 1))) (net (code 18) (name "Dmcu.program_uart_node.a_tx") (node (ref DJ2) (pin 4)) (node (ref DU2) (pin 11))) @@ -1055,24 +1055,24 @@ (node (ref DJ2) (pin 2)) (node (ref DU2) (pin 8)) (node (ref DD8) (pin 2))) -(net (code 22) (name "Dsw.sw[0,0].sw") - (node (ref DSW1) (pin 1)) - (node (ref DD2) (pin 1))) -(net (code 23) (name "Dsw.sw[0,1].sw") - (node (ref DSW2) (pin 1)) - (node (ref DD3) (pin 1))) -(net (code 24) (name "Dsw.sw[0,2].sw") - (node (ref DSW3) (pin 1)) - (node (ref DD4) (pin 1))) -(net (code 25) (name "Dsw.sw[1,0].sw") - (node (ref DSW4) (pin 1)) - (node (ref DD5) (pin 1))) -(net (code 26) (name "Dsw.sw[1,1].sw") - (node (ref DSW5) (pin 1)) - (node (ref DD6) (pin 1))) -(net (code 27) (name "Dsw.sw[1,2].sw") - (node (ref DSW6) (pin 1)) - (node (ref DD7) (pin 1))) +(net (code 22) (name "Dsw.sw[0,0].sw.com") + (node (ref DSW1) (pin 2)) + (node (ref DD2) (pin 2))) +(net (code 23) (name "Dsw.sw[0,1].sw.com") + (node (ref DSW2) (pin 2)) + (node (ref DD3) (pin 2))) +(net (code 24) (name "Dsw.sw[0,2].sw.com") + (node (ref DSW3) (pin 2)) + (node (ref DD4) (pin 2))) +(net (code 25) (name "Dsw.sw[1,0].sw.com") + (node (ref DSW4) (pin 2)) + (node (ref DD5) (pin 2))) +(net (code 26) (name "Dsw.sw[1,1].sw.com") + (node (ref DSW5) (pin 2)) + (node (ref DD6) (pin 2))) +(net (code 27) (name "Dsw.sw[1,2].sw.com") + (node (ref DSW6) (pin 2)) + (node (ref DD7) (pin 2))) (net (code 28) (name "Dledr.package.k") (node (ref DD8) (pin 1)) (node (ref DR4) (pin 1))) diff --git a/examples/DeskController/DeskController.svgpcb.js b/examples/DeskController/DeskController.svgpcb.js index fdc0320ea..de6881907 100644 --- a/examples/DeskController/DeskController.svgpcb.js +++ b/examples/DeskController/DeskController.svgpcb.js @@ -1,6 +1,6 @@ const board = new PCB(); -const sw = SwitchMatrix_2_3_sw(pt(0.039, 0.039)) +const sw = SwitchDiodeMatrix_2_3_sw(pt(0.039, 0.039)) // jlc_th.th1 const DH1 = board.add(JlcToolingHole_1_152mm, { translate: pt(2.222, 3.240), rotate: 0, @@ -325,21 +325,21 @@ board.setNetlist([ {name: "Dconn.uart.rx", pads: [["DJ1", "5"], ["DQ1", "3"]]}, {name: "Dconn_shift.lv_uart.tx", pads: [["DQ1", "2"], ["DR1", "2"], ["DU2", "3"]]}, {name: "Dconn_shift.lv_uart.rx", pads: [["DQ2", "2"], ["DR2", "2"], ["DU2", "4"]]}, - {name: "Dmcu.gpio.swc_0", pads: [["DU2", "5"], ["DSW1", "2"], ["DSW2", "2"], ["DSW3", "2"]]}, - {name: "Dmcu.gpio.swc_1", pads: [["DU2", "15"], ["DSW4", "2"], ["DSW5", "2"], ["DSW6", "2"]]}, - {name: "Dmcu.gpio.swr_0", pads: [["DU2", "14"], ["DD2", "2"], ["DD5", "2"]]}, - {name: "Dmcu.gpio.swr_1", pads: [["DU2", "13"], ["DD3", "2"], ["DD6", "2"]]}, - {name: "Dmcu.gpio.swr_2", pads: [["DU2", "10"], ["DD4", "2"], ["DD7", "2"]]}, + {name: "Dmcu.gpio.swc_0", pads: [["DU2", "5"], ["DSW1", "1"], ["DSW2", "1"], ["DSW3", "1"]]}, + {name: "Dmcu.gpio.swc_1", pads: [["DU2", "15"], ["DSW4", "1"], ["DSW5", "1"], ["DSW6", "1"]]}, + {name: "Dmcu.gpio.swr_0", pads: [["DU2", "14"], ["DD2", "1"], ["DD5", "1"]]}, + {name: "Dmcu.gpio.swr_1", pads: [["DU2", "13"], ["DD3", "1"], ["DD6", "1"]]}, + {name: "Dmcu.gpio.swr_2", pads: [["DU2", "10"], ["DD4", "1"], ["DD7", "1"]]}, {name: "Dmcu.program_uart_node.a_tx", pads: [["DJ2", "4"], ["DU2", "11"]]}, {name: "Dmcu.program_uart_node.b_tx", pads: [["DJ2", "3"], ["DU2", "12"]]}, {name: "Dmcu.program_en_node", pads: [["DJ2", "6"], ["DU2", "2"], ["DR3", "2"], ["DC5", "1"]]}, {name: "Dmcu.program_boot_node", pads: [["DJ2", "2"], ["DU2", "8"], ["DD8", "2"]]}, - {name: "Dsw.sw[0,0].sw", pads: [["DSW1", "1"], ["DD2", "1"]]}, - {name: "Dsw.sw[0,1].sw", pads: [["DSW2", "1"], ["DD3", "1"]]}, - {name: "Dsw.sw[0,2].sw", pads: [["DSW3", "1"], ["DD4", "1"]]}, - {name: "Dsw.sw[1,0].sw", pads: [["DSW4", "1"], ["DD5", "1"]]}, - {name: "Dsw.sw[1,1].sw", pads: [["DSW5", "1"], ["DD6", "1"]]}, - {name: "Dsw.sw[1,2].sw", pads: [["DSW6", "1"], ["DD7", "1"]]}, + {name: "Dsw.sw[0,0].sw.com", pads: [["DSW1", "2"], ["DD2", "2"]]}, + {name: "Dsw.sw[0,1].sw.com", pads: [["DSW2", "2"], ["DD3", "2"]]}, + {name: "Dsw.sw[0,2].sw.com", pads: [["DSW3", "2"], ["DD4", "2"]]}, + {name: "Dsw.sw[1,0].sw.com", pads: [["DSW4", "2"], ["DD5", "2"]]}, + {name: "Dsw.sw[1,1].sw.com", pads: [["DSW5", "2"], ["DD6", "2"]]}, + {name: "Dsw.sw[1,2].sw.com", pads: [["DSW6", "2"], ["DD7", "2"]]}, {name: "Dledr.package.k", pads: [["DD8", "1"], ["DR4", "1"]]}, {name: "Doled.reset", pads: [["DU2", "16"], ["DJ3", "17"]]}, {name: "Doled.i2c.scl", pads: [["DU2", "17"], ["DJ3", "13"], ["DR6", "2"]]}, @@ -403,7 +403,7 @@ renderPCB({ mmPerUnit: 25.4 }) -function SwitchMatrix_2_3_sw(xy, colSpacing=0.5, rowSpacing=0.5, diodeOffset=[0.25, 0]) { +function SwitchDiodeMatrix_2_3_sw(xy, colSpacing=0.5, rowSpacing=0.5, diodeOffset=[0.25, 0]) { // Circuit generator params const ncols = 2 const nrows = 3 diff --git a/examples/Keyboard/Keyboard.net.ref b/examples/Keyboard/Keyboard.net.ref index 75076ac30..10076a334 100644 --- a/examples/Keyboard/Keyboard.net.ref +++ b/examples/Keyboard/Keyboard.net.ref @@ -180,6 +180,18 @@ (property (name "edg_value") (value "50V 100nF X7R ±10% 0603 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS")) (sheetpath (names "/mcu/") (tstamps "/02850146/")) (tstamps "12d103b7")) +(comp (ref "U3") + (value "usb_esd") + (footprint "Package_TO_SOT_SMD:SOT-23") + (property (name "Sheetname") (value "")) + (property (name "Sheetfile") (value "")) + (property (name "edg_path") (value "usb_esd")) + (property (name "edg_short_path") (value "usb_esd")) + (property (name "edg_refdes") (value "U3")) + (property (name "edg_part") (value "PESD5V0X1BT (Nexperia)")) + (property (name "edg_value") (value "PESD5V0X1BT")) + (sheetpath (names "/") (tstamps "/")) + (tstamps "0bcb02e6")) (comp (ref "D1") (value "ledr.package") (footprint "LED_SMD:LED_0603_1608Metric") @@ -205,293 +217,581 @@ (sheetpath (names "/ledr/") (tstamps "/041d01a8/")) (tstamps "0296014b")) (comp (ref "SW1") - (value "sw.sw[0,0]") + (value "sw.sw[0,0].sw") (footprint "Switch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX") - (property (name "Sheetname") (value "sw")) - (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.SwitchMatrix")) - (property (name "edg_path") (value "sw.sw[0,0]")) - (property (name "edg_short_path") (value "sw.sw[0,0]")) + (property (name "Sheetname") (value "sw[0,0]")) + (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.DiodeSwitchCellNeopixel")) + (property (name "edg_path") (value "sw.sw[0,0].sw")) + (property (name "edg_short_path") (value "sw.sw[0,0].sw")) (property (name "edg_refdes") (value "SW1")) (property (name "edg_part") (value "PG151101S11 (Kailh)")) (property (name "edg_value") (value "PG151101S11")) - (sheetpath (names "/sw/") (tstamps "/015f00eb/")) - (tstamps "09be022f")) + (sheetpath (names "/sw/sw[0,0]/") (tstamps "/015f00eb/09be022f/")) + (tstamps "015f00eb")) (comp (ref "D2") - (value "sw.d[0,0]") + (value "sw.sw[0,0].d") (footprint "Diode_SMD:D_SOD-323") - (property (name "Sheetname") (value "sw")) - (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.SwitchMatrix")) - (property (name "edg_path") (value "sw.d[0,0]")) - (property (name "edg_short_path") (value "sw.d[0,0]")) + (property (name "Sheetname") (value "sw[0,0]")) + (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.DiodeSwitchCellNeopixel")) + (property (name "edg_path") (value "sw.sw[0,0].d")) + (property (name "edg_short_path") (value "sw.sw[0,0].d")) (property (name "edg_refdes") (value "D2")) (property (name "edg_part") (value "1N5819WS (Guangdong Hottech)")) (property (name "edg_value") (value "40V 600mV@1A 1A SOD-323 Schottky Barrier Diodes (SBD) ROHS")) - (sheetpath (names "/sw/") (tstamps "/015f00eb/")) - (tstamps "062601a9")) + (sheetpath (names "/sw/sw[0,0]/") (tstamps "/015f00eb/09be022f/")) + (tstamps "00650065")) +(comp (ref "D3") + (value "sw.sw[0,0].npx.device") + (footprint "edg:LED_SK6812MINI-E") + (property (name "Sheetname") (value "npx")) + (property (name "Sheetfile") (value "edg.parts.human_interface.Neopixel.Sk6812Mini_E")) + (property (name "edg_path") (value "sw.sw[0,0].npx.device")) + (property (name "edg_short_path") (value "sw.sw[0,0].npx.device")) + (property (name "edg_refdes") (value "D3")) + (property (name "edg_part") (value "SK6812MINI-E (Opsco Optoelectronics)")) + (property (name "edg_value") (value "SK6812MINI-E")) + (sheetpath (names "/sw/sw[0,0]/npx/") (tstamps "/015f00eb/09be022f/02a50157/")) + (tstamps "08950271")) +(comp (ref "C9") + (value "sw.sw[0,0].npx.cap") + (footprint "Capacitor_SMD:C_0603_1608Metric") + (property (name "Sheetname") (value "npx")) + (property (name "Sheetfile") (value "edg.parts.human_interface.Neopixel.Sk6812Mini_E")) + (property (name "edg_path") (value "sw.sw[0,0].npx.cap.cap")) + (property (name "edg_short_path") (value "sw.sw[0,0].npx.cap")) + (property (name "edg_refdes") (value "C9")) + (property (name "edg_part") (value "CC0603KRX7R9BB104 (YAGEO)")) + (property (name "edg_value") (value "50V 100nF X7R ±10% 0603 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS")) + (sheetpath (names "/sw/sw[0,0]/npx/") (tstamps "/015f00eb/09be022f/02a50157/")) + (tstamps "025e0135")) (comp (ref "SW2") - (value "sw.sw[0,1]") + (value "sw.sw[0,1].sw") (footprint "Switch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX") - (property (name "Sheetname") (value "sw")) - (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.SwitchMatrix")) - (property (name "edg_path") (value "sw.sw[0,1]")) - (property (name "edg_short_path") (value "sw.sw[0,1]")) + (property (name "Sheetname") (value "sw[0,1]")) + (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.DiodeSwitchCellNeopixel")) + (property (name "edg_path") (value "sw.sw[0,1].sw")) + (property (name "edg_short_path") (value "sw.sw[0,1].sw")) (property (name "edg_refdes") (value "SW2")) (property (name "edg_part") (value "PG151101S11 (Kailh)")) (property (name "edg_value") (value "PG151101S11")) - (sheetpath (names "/sw/") (tstamps "/015f00eb/")) - (tstamps "09c00230")) -(comp (ref "D3") - (value "sw.d[0,1]") + (sheetpath (names "/sw/sw[0,1]/") (tstamps "/015f00eb/09c00230/")) + (tstamps "015f00eb")) +(comp (ref "D4") + (value "sw.sw[0,1].d") (footprint "Diode_SMD:D_SOD-323") - (property (name "Sheetname") (value "sw")) - (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.SwitchMatrix")) - (property (name "edg_path") (value "sw.d[0,1]")) - (property (name "edg_short_path") (value "sw.d[0,1]")) - (property (name "edg_refdes") (value "D3")) + (property (name "Sheetname") (value "sw[0,1]")) + (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.DiodeSwitchCellNeopixel")) + (property (name "edg_path") (value "sw.sw[0,1].d")) + (property (name "edg_short_path") (value "sw.sw[0,1].d")) + (property (name "edg_refdes") (value "D4")) (property (name "edg_part") (value "1N5819WS (Guangdong Hottech)")) (property (name "edg_value") (value "40V 600mV@1A 1A SOD-323 Schottky Barrier Diodes (SBD) ROHS")) - (sheetpath (names "/sw/") (tstamps "/015f00eb/")) - (tstamps "062801aa")) + (sheetpath (names "/sw/sw[0,1]/") (tstamps "/015f00eb/09c00230/")) + (tstamps "00650065")) +(comp (ref "D5") + (value "sw.sw[0,1].npx.device") + (footprint "edg:LED_SK6812MINI-E") + (property (name "Sheetname") (value "npx")) + (property (name "Sheetfile") (value "edg.parts.human_interface.Neopixel.Sk6812Mini_E")) + (property (name "edg_path") (value "sw.sw[0,1].npx.device")) + (property (name "edg_short_path") (value "sw.sw[0,1].npx.device")) + (property (name "edg_refdes") (value "D5")) + (property (name "edg_part") (value "SK6812MINI-E (Opsco Optoelectronics)")) + (property (name "edg_value") (value "SK6812MINI-E")) + (sheetpath (names "/sw/sw[0,1]/npx/") (tstamps "/015f00eb/09c00230/02a50157/")) + (tstamps "08950271")) +(comp (ref "C10") + (value "sw.sw[0,1].npx.cap") + (footprint "Capacitor_SMD:C_0603_1608Metric") + (property (name "Sheetname") (value "npx")) + (property (name "Sheetfile") (value "edg.parts.human_interface.Neopixel.Sk6812Mini_E")) + (property (name "edg_path") (value "sw.sw[0,1].npx.cap.cap")) + (property (name "edg_short_path") (value "sw.sw[0,1].npx.cap")) + (property (name "edg_refdes") (value "C10")) + (property (name "edg_part") (value "CC0603KRX7R9BB104 (YAGEO)")) + (property (name "edg_value") (value "50V 100nF X7R ±10% 0603 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS")) + (sheetpath (names "/sw/sw[0,1]/npx/") (tstamps "/015f00eb/09c00230/02a50157/")) + (tstamps "025e0135")) (comp (ref "SW3") - (value "sw.sw[0,2]") + (value "sw.sw[0,2].sw") (footprint "Switch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX") - (property (name "Sheetname") (value "sw")) - (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.SwitchMatrix")) - (property (name "edg_path") (value "sw.sw[0,2]")) - (property (name "edg_short_path") (value "sw.sw[0,2]")) + (property (name "Sheetname") (value "sw[0,2]")) + (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.DiodeSwitchCellNeopixel")) + (property (name "edg_path") (value "sw.sw[0,2].sw")) + (property (name "edg_short_path") (value "sw.sw[0,2].sw")) (property (name "edg_refdes") (value "SW3")) (property (name "edg_part") (value "PG151101S11 (Kailh)")) (property (name "edg_value") (value "PG151101S11")) - (sheetpath (names "/sw/") (tstamps "/015f00eb/")) - (tstamps "09c20231")) -(comp (ref "D4") - (value "sw.d[0,2]") + (sheetpath (names "/sw/sw[0,2]/") (tstamps "/015f00eb/09c20231/")) + (tstamps "015f00eb")) +(comp (ref "D6") + (value "sw.sw[0,2].d") (footprint "Diode_SMD:D_SOD-323") - (property (name "Sheetname") (value "sw")) - (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.SwitchMatrix")) - (property (name "edg_path") (value "sw.d[0,2]")) - (property (name "edg_short_path") (value "sw.d[0,2]")) - (property (name "edg_refdes") (value "D4")) + (property (name "Sheetname") (value "sw[0,2]")) + (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.DiodeSwitchCellNeopixel")) + (property (name "edg_path") (value "sw.sw[0,2].d")) + (property (name "edg_short_path") (value "sw.sw[0,2].d")) + (property (name "edg_refdes") (value "D6")) (property (name "edg_part") (value "1N5819WS (Guangdong Hottech)")) (property (name "edg_value") (value "40V 600mV@1A 1A SOD-323 Schottky Barrier Diodes (SBD) ROHS")) - (sheetpath (names "/sw/") (tstamps "/015f00eb/")) - (tstamps "062a01ab")) + (sheetpath (names "/sw/sw[0,2]/") (tstamps "/015f00eb/09c20231/")) + (tstamps "00650065")) +(comp (ref "D7") + (value "sw.sw[0,2].npx.device") + (footprint "edg:LED_SK6812MINI-E") + (property (name "Sheetname") (value "npx")) + (property (name "Sheetfile") (value "edg.parts.human_interface.Neopixel.Sk6812Mini_E")) + (property (name "edg_path") (value "sw.sw[0,2].npx.device")) + (property (name "edg_short_path") (value "sw.sw[0,2].npx.device")) + (property (name "edg_refdes") (value "D7")) + (property (name "edg_part") (value "SK6812MINI-E (Opsco Optoelectronics)")) + (property (name "edg_value") (value "SK6812MINI-E")) + (sheetpath (names "/sw/sw[0,2]/npx/") (tstamps "/015f00eb/09c20231/02a50157/")) + (tstamps "08950271")) +(comp (ref "C11") + (value "sw.sw[0,2].npx.cap") + (footprint "Capacitor_SMD:C_0603_1608Metric") + (property (name "Sheetname") (value "npx")) + (property (name "Sheetfile") (value "edg.parts.human_interface.Neopixel.Sk6812Mini_E")) + (property (name "edg_path") (value "sw.sw[0,2].npx.cap.cap")) + (property (name "edg_short_path") (value "sw.sw[0,2].npx.cap")) + (property (name "edg_refdes") (value "C11")) + (property (name "edg_part") (value "CC0603KRX7R9BB104 (YAGEO)")) + (property (name "edg_value") (value "50V 100nF X7R ±10% 0603 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS")) + (sheetpath (names "/sw/sw[0,2]/npx/") (tstamps "/015f00eb/09c20231/02a50157/")) + (tstamps "025e0135")) (comp (ref "SW4") - (value "sw.sw[1,0]") + (value "sw.sw[1,0].sw") (footprint "Switch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX") - (property (name "Sheetname") (value "sw")) - (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.SwitchMatrix")) - (property (name "edg_path") (value "sw.sw[1,0]")) - (property (name "edg_short_path") (value "sw.sw[1,0]")) + (property (name "Sheetname") (value "sw[1,0]")) + (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.DiodeSwitchCellNeopixel")) + (property (name "edg_path") (value "sw.sw[1,0].sw")) + (property (name "edg_short_path") (value "sw.sw[1,0].sw")) (property (name "edg_refdes") (value "SW4")) (property (name "edg_part") (value "PG151101S11 (Kailh)")) (property (name "edg_value") (value "PG151101S11")) - (sheetpath (names "/sw/") (tstamps "/015f00eb/")) - (tstamps "09c20230")) -(comp (ref "D5") - (value "sw.d[1,0]") + (sheetpath (names "/sw/sw[1,0]/") (tstamps "/015f00eb/09c20230/")) + (tstamps "015f00eb")) +(comp (ref "D8") + (value "sw.sw[1,0].d") (footprint "Diode_SMD:D_SOD-323") - (property (name "Sheetname") (value "sw")) - (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.SwitchMatrix")) - (property (name "edg_path") (value "sw.d[1,0]")) - (property (name "edg_short_path") (value "sw.d[1,0]")) - (property (name "edg_refdes") (value "D5")) + (property (name "Sheetname") (value "sw[1,0]")) + (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.DiodeSwitchCellNeopixel")) + (property (name "edg_path") (value "sw.sw[1,0].d")) + (property (name "edg_short_path") (value "sw.sw[1,0].d")) + (property (name "edg_refdes") (value "D8")) (property (name "edg_part") (value "1N5819WS (Guangdong Hottech)")) (property (name "edg_value") (value "40V 600mV@1A 1A SOD-323 Schottky Barrier Diodes (SBD) ROHS")) - (sheetpath (names "/sw/") (tstamps "/015f00eb/")) - (tstamps "062a01aa")) + (sheetpath (names "/sw/sw[1,0]/") (tstamps "/015f00eb/09c20230/")) + (tstamps "00650065")) +(comp (ref "D9") + (value "sw.sw[1,0].npx.device") + (footprint "edg:LED_SK6812MINI-E") + (property (name "Sheetname") (value "npx")) + (property (name "Sheetfile") (value "edg.parts.human_interface.Neopixel.Sk6812Mini_E")) + (property (name "edg_path") (value "sw.sw[1,0].npx.device")) + (property (name "edg_short_path") (value "sw.sw[1,0].npx.device")) + (property (name "edg_refdes") (value "D9")) + (property (name "edg_part") (value "SK6812MINI-E (Opsco Optoelectronics)")) + (property (name "edg_value") (value "SK6812MINI-E")) + (sheetpath (names "/sw/sw[1,0]/npx/") (tstamps "/015f00eb/09c20230/02a50157/")) + (tstamps "08950271")) +(comp (ref "C12") + (value "sw.sw[1,0].npx.cap") + (footprint "Capacitor_SMD:C_0603_1608Metric") + (property (name "Sheetname") (value "npx")) + (property (name "Sheetfile") (value "edg.parts.human_interface.Neopixel.Sk6812Mini_E")) + (property (name "edg_path") (value "sw.sw[1,0].npx.cap.cap")) + (property (name "edg_short_path") (value "sw.sw[1,0].npx.cap")) + (property (name "edg_refdes") (value "C12")) + (property (name "edg_part") (value "CC0603KRX7R9BB104 (YAGEO)")) + (property (name "edg_value") (value "50V 100nF X7R ±10% 0603 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS")) + (sheetpath (names "/sw/sw[1,0]/npx/") (tstamps "/015f00eb/09c20230/02a50157/")) + (tstamps "025e0135")) (comp (ref "SW5") - (value "sw.sw[1,1]") + (value "sw.sw[1,1].sw") (footprint "Switch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX") - (property (name "Sheetname") (value "sw")) - (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.SwitchMatrix")) - (property (name "edg_path") (value "sw.sw[1,1]")) - (property (name "edg_short_path") (value "sw.sw[1,1]")) + (property (name "Sheetname") (value "sw[1,1]")) + (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.DiodeSwitchCellNeopixel")) + (property (name "edg_path") (value "sw.sw[1,1].sw")) + (property (name "edg_short_path") (value "sw.sw[1,1].sw")) (property (name "edg_refdes") (value "SW5")) (property (name "edg_part") (value "PG151101S11 (Kailh)")) (property (name "edg_value") (value "PG151101S11")) - (sheetpath (names "/sw/") (tstamps "/015f00eb/")) - (tstamps "09c40231")) -(comp (ref "D6") - (value "sw.d[1,1]") + (sheetpath (names "/sw/sw[1,1]/") (tstamps "/015f00eb/09c40231/")) + (tstamps "015f00eb")) +(comp (ref "D10") + (value "sw.sw[1,1].d") (footprint "Diode_SMD:D_SOD-323") - (property (name "Sheetname") (value "sw")) - (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.SwitchMatrix")) - (property (name "edg_path") (value "sw.d[1,1]")) - (property (name "edg_short_path") (value "sw.d[1,1]")) - (property (name "edg_refdes") (value "D6")) + (property (name "Sheetname") (value "sw[1,1]")) + (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.DiodeSwitchCellNeopixel")) + (property (name "edg_path") (value "sw.sw[1,1].d")) + (property (name "edg_short_path") (value "sw.sw[1,1].d")) + (property (name "edg_refdes") (value "D10")) (property (name "edg_part") (value "1N5819WS (Guangdong Hottech)")) (property (name "edg_value") (value "40V 600mV@1A 1A SOD-323 Schottky Barrier Diodes (SBD) ROHS")) - (sheetpath (names "/sw/") (tstamps "/015f00eb/")) - (tstamps "062c01ab")) + (sheetpath (names "/sw/sw[1,1]/") (tstamps "/015f00eb/09c40231/")) + (tstamps "00650065")) +(comp (ref "D11") + (value "sw.sw[1,1].npx.device") + (footprint "edg:LED_SK6812MINI-E") + (property (name "Sheetname") (value "npx")) + (property (name "Sheetfile") (value "edg.parts.human_interface.Neopixel.Sk6812Mini_E")) + (property (name "edg_path") (value "sw.sw[1,1].npx.device")) + (property (name "edg_short_path") (value "sw.sw[1,1].npx.device")) + (property (name "edg_refdes") (value "D11")) + (property (name "edg_part") (value "SK6812MINI-E (Opsco Optoelectronics)")) + (property (name "edg_value") (value "SK6812MINI-E")) + (sheetpath (names "/sw/sw[1,1]/npx/") (tstamps "/015f00eb/09c40231/02a50157/")) + (tstamps "08950271")) +(comp (ref "C13") + (value "sw.sw[1,1].npx.cap") + (footprint "Capacitor_SMD:C_0603_1608Metric") + (property (name "Sheetname") (value "npx")) + (property (name "Sheetfile") (value "edg.parts.human_interface.Neopixel.Sk6812Mini_E")) + (property (name "edg_path") (value "sw.sw[1,1].npx.cap.cap")) + (property (name "edg_short_path") (value "sw.sw[1,1].npx.cap")) + (property (name "edg_refdes") (value "C13")) + (property (name "edg_part") (value "CC0603KRX7R9BB104 (YAGEO)")) + (property (name "edg_value") (value "50V 100nF X7R ±10% 0603 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS")) + (sheetpath (names "/sw/sw[1,1]/npx/") (tstamps "/015f00eb/09c40231/02a50157/")) + (tstamps "025e0135")) (comp (ref "SW6") - (value "sw.sw[1,2]") + (value "sw.sw[1,2].sw") (footprint "Switch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX") - (property (name "Sheetname") (value "sw")) - (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.SwitchMatrix")) - (property (name "edg_path") (value "sw.sw[1,2]")) - (property (name "edg_short_path") (value "sw.sw[1,2]")) + (property (name "Sheetname") (value "sw[1,2]")) + (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.DiodeSwitchCellNeopixel")) + (property (name "edg_path") (value "sw.sw[1,2].sw")) + (property (name "edg_short_path") (value "sw.sw[1,2].sw")) (property (name "edg_refdes") (value "SW6")) (property (name "edg_part") (value "PG151101S11 (Kailh)")) (property (name "edg_value") (value "PG151101S11")) - (sheetpath (names "/sw/") (tstamps "/015f00eb/")) - (tstamps "09c60232")) -(comp (ref "D7") - (value "sw.d[1,2]") + (sheetpath (names "/sw/sw[1,2]/") (tstamps "/015f00eb/09c60232/")) + (tstamps "015f00eb")) +(comp (ref "D12") + (value "sw.sw[1,2].d") (footprint "Diode_SMD:D_SOD-323") - (property (name "Sheetname") (value "sw")) - (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.SwitchMatrix")) - (property (name "edg_path") (value "sw.d[1,2]")) - (property (name "edg_short_path") (value "sw.d[1,2]")) - (property (name "edg_refdes") (value "D7")) + (property (name "Sheetname") (value "sw[1,2]")) + (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.DiodeSwitchCellNeopixel")) + (property (name "edg_path") (value "sw.sw[1,2].d")) + (property (name "edg_short_path") (value "sw.sw[1,2].d")) + (property (name "edg_refdes") (value "D12")) (property (name "edg_part") (value "1N5819WS (Guangdong Hottech)")) (property (name "edg_value") (value "40V 600mV@1A 1A SOD-323 Schottky Barrier Diodes (SBD) ROHS")) - (sheetpath (names "/sw/") (tstamps "/015f00eb/")) - (tstamps "062e01ac")) + (sheetpath (names "/sw/sw[1,2]/") (tstamps "/015f00eb/09c60232/")) + (tstamps "00650065")) +(comp (ref "D13") + (value "sw.sw[1,2].npx.device") + (footprint "edg:LED_SK6812MINI-E") + (property (name "Sheetname") (value "npx")) + (property (name "Sheetfile") (value "edg.parts.human_interface.Neopixel.Sk6812Mini_E")) + (property (name "edg_path") (value "sw.sw[1,2].npx.device")) + (property (name "edg_short_path") (value "sw.sw[1,2].npx.device")) + (property (name "edg_refdes") (value "D13")) + (property (name "edg_part") (value "SK6812MINI-E (Opsco Optoelectronics)")) + (property (name "edg_value") (value "SK6812MINI-E")) + (sheetpath (names "/sw/sw[1,2]/npx/") (tstamps "/015f00eb/09c60232/02a50157/")) + (tstamps "08950271")) +(comp (ref "C14") + (value "sw.sw[1,2].npx.cap") + (footprint "Capacitor_SMD:C_0603_1608Metric") + (property (name "Sheetname") (value "npx")) + (property (name "Sheetfile") (value "edg.parts.human_interface.Neopixel.Sk6812Mini_E")) + (property (name "edg_path") (value "sw.sw[1,2].npx.cap.cap")) + (property (name "edg_short_path") (value "sw.sw[1,2].npx.cap")) + (property (name "edg_refdes") (value "C14")) + (property (name "edg_part") (value "CC0603KRX7R9BB104 (YAGEO)")) + (property (name "edg_value") (value "50V 100nF X7R ±10% 0603 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS")) + (sheetpath (names "/sw/sw[1,2]/npx/") (tstamps "/015f00eb/09c60232/02a50157/")) + (tstamps "025e0135")) (comp (ref "SW7") - (value "sw.sw[2,0]") + (value "sw.sw[2,0].sw") (footprint "Switch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX") - (property (name "Sheetname") (value "sw")) - (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.SwitchMatrix")) - (property (name "edg_path") (value "sw.sw[2,0]")) - (property (name "edg_short_path") (value "sw.sw[2,0]")) + (property (name "Sheetname") (value "sw[2,0]")) + (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.DiodeSwitchCellNeopixel")) + (property (name "edg_path") (value "sw.sw[2,0].sw")) + (property (name "edg_short_path") (value "sw.sw[2,0].sw")) (property (name "edg_refdes") (value "SW7")) (property (name "edg_part") (value "PG151101S11 (Kailh)")) (property (name "edg_value") (value "PG151101S11")) - (sheetpath (names "/sw/") (tstamps "/015f00eb/")) - (tstamps "09c60231")) -(comp (ref "D8") - (value "sw.d[2,0]") + (sheetpath (names "/sw/sw[2,0]/") (tstamps "/015f00eb/09c60231/")) + (tstamps "015f00eb")) +(comp (ref "D14") + (value "sw.sw[2,0].d") (footprint "Diode_SMD:D_SOD-323") - (property (name "Sheetname") (value "sw")) - (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.SwitchMatrix")) - (property (name "edg_path") (value "sw.d[2,0]")) - (property (name "edg_short_path") (value "sw.d[2,0]")) - (property (name "edg_refdes") (value "D8")) + (property (name "Sheetname") (value "sw[2,0]")) + (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.DiodeSwitchCellNeopixel")) + (property (name "edg_path") (value "sw.sw[2,0].d")) + (property (name "edg_short_path") (value "sw.sw[2,0].d")) + (property (name "edg_refdes") (value "D14")) (property (name "edg_part") (value "1N5819WS (Guangdong Hottech)")) (property (name "edg_value") (value "40V 600mV@1A 1A SOD-323 Schottky Barrier Diodes (SBD) ROHS")) - (sheetpath (names "/sw/") (tstamps "/015f00eb/")) - (tstamps "062e01ab")) + (sheetpath (names "/sw/sw[2,0]/") (tstamps "/015f00eb/09c60231/")) + (tstamps "00650065")) +(comp (ref "D15") + (value "sw.sw[2,0].npx.device") + (footprint "edg:LED_SK6812MINI-E") + (property (name "Sheetname") (value "npx")) + (property (name "Sheetfile") (value "edg.parts.human_interface.Neopixel.Sk6812Mini_E")) + (property (name "edg_path") (value "sw.sw[2,0].npx.device")) + (property (name "edg_short_path") (value "sw.sw[2,0].npx.device")) + (property (name "edg_refdes") (value "D15")) + (property (name "edg_part") (value "SK6812MINI-E (Opsco Optoelectronics)")) + (property (name "edg_value") (value "SK6812MINI-E")) + (sheetpath (names "/sw/sw[2,0]/npx/") (tstamps "/015f00eb/09c60231/02a50157/")) + (tstamps "08950271")) +(comp (ref "C15") + (value "sw.sw[2,0].npx.cap") + (footprint "Capacitor_SMD:C_0603_1608Metric") + (property (name "Sheetname") (value "npx")) + (property (name "Sheetfile") (value "edg.parts.human_interface.Neopixel.Sk6812Mini_E")) + (property (name "edg_path") (value "sw.sw[2,0].npx.cap.cap")) + (property (name "edg_short_path") (value "sw.sw[2,0].npx.cap")) + (property (name "edg_refdes") (value "C15")) + (property (name "edg_part") (value "CC0603KRX7R9BB104 (YAGEO)")) + (property (name "edg_value") (value "50V 100nF X7R ±10% 0603 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS")) + (sheetpath (names "/sw/sw[2,0]/npx/") (tstamps "/015f00eb/09c60231/02a50157/")) + (tstamps "025e0135")) (comp (ref "SW8") - (value "sw.sw[2,1]") + (value "sw.sw[2,1].sw") (footprint "Switch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX") - (property (name "Sheetname") (value "sw")) - (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.SwitchMatrix")) - (property (name "edg_path") (value "sw.sw[2,1]")) - (property (name "edg_short_path") (value "sw.sw[2,1]")) + (property (name "Sheetname") (value "sw[2,1]")) + (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.DiodeSwitchCellNeopixel")) + (property (name "edg_path") (value "sw.sw[2,1].sw")) + (property (name "edg_short_path") (value "sw.sw[2,1].sw")) (property (name "edg_refdes") (value "SW8")) (property (name "edg_part") (value "PG151101S11 (Kailh)")) (property (name "edg_value") (value "PG151101S11")) - (sheetpath (names "/sw/") (tstamps "/015f00eb/")) - (tstamps "09c80232")) -(comp (ref "D9") - (value "sw.d[2,1]") + (sheetpath (names "/sw/sw[2,1]/") (tstamps "/015f00eb/09c80232/")) + (tstamps "015f00eb")) +(comp (ref "D16") + (value "sw.sw[2,1].d") (footprint "Diode_SMD:D_SOD-323") - (property (name "Sheetname") (value "sw")) - (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.SwitchMatrix")) - (property (name "edg_path") (value "sw.d[2,1]")) - (property (name "edg_short_path") (value "sw.d[2,1]")) - (property (name "edg_refdes") (value "D9")) + (property (name "Sheetname") (value "sw[2,1]")) + (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.DiodeSwitchCellNeopixel")) + (property (name "edg_path") (value "sw.sw[2,1].d")) + (property (name "edg_short_path") (value "sw.sw[2,1].d")) + (property (name "edg_refdes") (value "D16")) (property (name "edg_part") (value "1N5819WS (Guangdong Hottech)")) (property (name "edg_value") (value "40V 600mV@1A 1A SOD-323 Schottky Barrier Diodes (SBD) ROHS")) - (sheetpath (names "/sw/") (tstamps "/015f00eb/")) - (tstamps "063001ac")) + (sheetpath (names "/sw/sw[2,1]/") (tstamps "/015f00eb/09c80232/")) + (tstamps "00650065")) +(comp (ref "D17") + (value "sw.sw[2,1].npx.device") + (footprint "edg:LED_SK6812MINI-E") + (property (name "Sheetname") (value "npx")) + (property (name "Sheetfile") (value "edg.parts.human_interface.Neopixel.Sk6812Mini_E")) + (property (name "edg_path") (value "sw.sw[2,1].npx.device")) + (property (name "edg_short_path") (value "sw.sw[2,1].npx.device")) + (property (name "edg_refdes") (value "D17")) + (property (name "edg_part") (value "SK6812MINI-E (Opsco Optoelectronics)")) + (property (name "edg_value") (value "SK6812MINI-E")) + (sheetpath (names "/sw/sw[2,1]/npx/") (tstamps "/015f00eb/09c80232/02a50157/")) + (tstamps "08950271")) +(comp (ref "C16") + (value "sw.sw[2,1].npx.cap") + (footprint "Capacitor_SMD:C_0603_1608Metric") + (property (name "Sheetname") (value "npx")) + (property (name "Sheetfile") (value "edg.parts.human_interface.Neopixel.Sk6812Mini_E")) + (property (name "edg_path") (value "sw.sw[2,1].npx.cap.cap")) + (property (name "edg_short_path") (value "sw.sw[2,1].npx.cap")) + (property (name "edg_refdes") (value "C16")) + (property (name "edg_part") (value "CC0603KRX7R9BB104 (YAGEO)")) + (property (name "edg_value") (value "50V 100nF X7R ±10% 0603 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS")) + (sheetpath (names "/sw/sw[2,1]/npx/") (tstamps "/015f00eb/09c80232/02a50157/")) + (tstamps "025e0135")) (comp (ref "SW9") - (value "sw.sw[2,2]") + (value "sw.sw[2,2].sw") (footprint "Switch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX") - (property (name "Sheetname") (value "sw")) - (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.SwitchMatrix")) - (property (name "edg_path") (value "sw.sw[2,2]")) - (property (name "edg_short_path") (value "sw.sw[2,2]")) + (property (name "Sheetname") (value "sw[2,2]")) + (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.DiodeSwitchCellNeopixel")) + (property (name "edg_path") (value "sw.sw[2,2].sw")) + (property (name "edg_short_path") (value "sw.sw[2,2].sw")) (property (name "edg_refdes") (value "SW9")) (property (name "edg_part") (value "PG151101S11 (Kailh)")) (property (name "edg_value") (value "PG151101S11")) - (sheetpath (names "/sw/") (tstamps "/015f00eb/")) - (tstamps "09ca0233")) -(comp (ref "D10") - (value "sw.d[2,2]") + (sheetpath (names "/sw/sw[2,2]/") (tstamps "/015f00eb/09ca0233/")) + (tstamps "015f00eb")) +(comp (ref "D18") + (value "sw.sw[2,2].d") (footprint "Diode_SMD:D_SOD-323") - (property (name "Sheetname") (value "sw")) - (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.SwitchMatrix")) - (property (name "edg_path") (value "sw.d[2,2]")) - (property (name "edg_short_path") (value "sw.d[2,2]")) - (property (name "edg_refdes") (value "D10")) + (property (name "Sheetname") (value "sw[2,2]")) + (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.DiodeSwitchCellNeopixel")) + (property (name "edg_path") (value "sw.sw[2,2].d")) + (property (name "edg_short_path") (value "sw.sw[2,2].d")) + (property (name "edg_refdes") (value "D18")) (property (name "edg_part") (value "1N5819WS (Guangdong Hottech)")) (property (name "edg_value") (value "40V 600mV@1A 1A SOD-323 Schottky Barrier Diodes (SBD) ROHS")) - (sheetpath (names "/sw/") (tstamps "/015f00eb/")) - (tstamps "063201ad")) + (sheetpath (names "/sw/sw[2,2]/") (tstamps "/015f00eb/09ca0233/")) + (tstamps "00650065")) +(comp (ref "D19") + (value "sw.sw[2,2].npx.device") + (footprint "edg:LED_SK6812MINI-E") + (property (name "Sheetname") (value "npx")) + (property (name "Sheetfile") (value "edg.parts.human_interface.Neopixel.Sk6812Mini_E")) + (property (name "edg_path") (value "sw.sw[2,2].npx.device")) + (property (name "edg_short_path") (value "sw.sw[2,2].npx.device")) + (property (name "edg_refdes") (value "D19")) + (property (name "edg_part") (value "SK6812MINI-E (Opsco Optoelectronics)")) + (property (name "edg_value") (value "SK6812MINI-E")) + (sheetpath (names "/sw/sw[2,2]/npx/") (tstamps "/015f00eb/09ca0233/02a50157/")) + (tstamps "08950271")) +(comp (ref "C17") + (value "sw.sw[2,2].npx.cap") + (footprint "Capacitor_SMD:C_0603_1608Metric") + (property (name "Sheetname") (value "npx")) + (property (name "Sheetfile") (value "edg.parts.human_interface.Neopixel.Sk6812Mini_E")) + (property (name "edg_path") (value "sw.sw[2,2].npx.cap.cap")) + (property (name "edg_short_path") (value "sw.sw[2,2].npx.cap")) + (property (name "edg_refdes") (value "C17")) + (property (name "edg_part") (value "CC0603KRX7R9BB104 (YAGEO)")) + (property (name "edg_value") (value "50V 100nF X7R ±10% 0603 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS")) + (sheetpath (names "/sw/sw[2,2]/npx/") (tstamps "/015f00eb/09ca0233/02a50157/")) + (tstamps "025e0135")) (comp (ref "SW10") - (value "sw.sw[3,0]") + (value "sw.sw[3,0].sw") (footprint "Switch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX") - (property (name "Sheetname") (value "sw")) - (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.SwitchMatrix")) - (property (name "edg_path") (value "sw.sw[3,0]")) - (property (name "edg_short_path") (value "sw.sw[3,0]")) + (property (name "Sheetname") (value "sw[3,0]")) + (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.DiodeSwitchCellNeopixel")) + (property (name "edg_path") (value "sw.sw[3,0].sw")) + (property (name "edg_short_path") (value "sw.sw[3,0].sw")) (property (name "edg_refdes") (value "SW10")) (property (name "edg_part") (value "PG151101S11 (Kailh)")) (property (name "edg_value") (value "PG151101S11")) - (sheetpath (names "/sw/") (tstamps "/015f00eb/")) - (tstamps "09ca0232")) -(comp (ref "D11") - (value "sw.d[3,0]") + (sheetpath (names "/sw/sw[3,0]/") (tstamps "/015f00eb/09ca0232/")) + (tstamps "015f00eb")) +(comp (ref "D20") + (value "sw.sw[3,0].d") (footprint "Diode_SMD:D_SOD-323") - (property (name "Sheetname") (value "sw")) - (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.SwitchMatrix")) - (property (name "edg_path") (value "sw.d[3,0]")) - (property (name "edg_short_path") (value "sw.d[3,0]")) - (property (name "edg_refdes") (value "D11")) + (property (name "Sheetname") (value "sw[3,0]")) + (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.DiodeSwitchCellNeopixel")) + (property (name "edg_path") (value "sw.sw[3,0].d")) + (property (name "edg_short_path") (value "sw.sw[3,0].d")) + (property (name "edg_refdes") (value "D20")) (property (name "edg_part") (value "1N5819WS (Guangdong Hottech)")) (property (name "edg_value") (value "40V 600mV@1A 1A SOD-323 Schottky Barrier Diodes (SBD) ROHS")) - (sheetpath (names "/sw/") (tstamps "/015f00eb/")) - (tstamps "063201ac")) + (sheetpath (names "/sw/sw[3,0]/") (tstamps "/015f00eb/09ca0232/")) + (tstamps "00650065")) +(comp (ref "D21") + (value "sw.sw[3,0].npx.device") + (footprint "edg:LED_SK6812MINI-E") + (property (name "Sheetname") (value "npx")) + (property (name "Sheetfile") (value "edg.parts.human_interface.Neopixel.Sk6812Mini_E")) + (property (name "edg_path") (value "sw.sw[3,0].npx.device")) + (property (name "edg_short_path") (value "sw.sw[3,0].npx.device")) + (property (name "edg_refdes") (value "D21")) + (property (name "edg_part") (value "SK6812MINI-E (Opsco Optoelectronics)")) + (property (name "edg_value") (value "SK6812MINI-E")) + (sheetpath (names "/sw/sw[3,0]/npx/") (tstamps "/015f00eb/09ca0232/02a50157/")) + (tstamps "08950271")) +(comp (ref "C18") + (value "sw.sw[3,0].npx.cap") + (footprint "Capacitor_SMD:C_0603_1608Metric") + (property (name "Sheetname") (value "npx")) + (property (name "Sheetfile") (value "edg.parts.human_interface.Neopixel.Sk6812Mini_E")) + (property (name "edg_path") (value "sw.sw[3,0].npx.cap.cap")) + (property (name "edg_short_path") (value "sw.sw[3,0].npx.cap")) + (property (name "edg_refdes") (value "C18")) + (property (name "edg_part") (value "CC0603KRX7R9BB104 (YAGEO)")) + (property (name "edg_value") (value "50V 100nF X7R ±10% 0603 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS")) + (sheetpath (names "/sw/sw[3,0]/npx/") (tstamps "/015f00eb/09ca0232/02a50157/")) + (tstamps "025e0135")) (comp (ref "SW11") - (value "sw.sw[3,1]") + (value "sw.sw[3,1].sw") (footprint "Switch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX") - (property (name "Sheetname") (value "sw")) - (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.SwitchMatrix")) - (property (name "edg_path") (value "sw.sw[3,1]")) - (property (name "edg_short_path") (value "sw.sw[3,1]")) + (property (name "Sheetname") (value "sw[3,1]")) + (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.DiodeSwitchCellNeopixel")) + (property (name "edg_path") (value "sw.sw[3,1].sw")) + (property (name "edg_short_path") (value "sw.sw[3,1].sw")) (property (name "edg_refdes") (value "SW11")) (property (name "edg_part") (value "PG151101S11 (Kailh)")) (property (name "edg_value") (value "PG151101S11")) - (sheetpath (names "/sw/") (tstamps "/015f00eb/")) - (tstamps "09cc0233")) -(comp (ref "D12") - (value "sw.d[3,1]") + (sheetpath (names "/sw/sw[3,1]/") (tstamps "/015f00eb/09cc0233/")) + (tstamps "015f00eb")) +(comp (ref "D22") + (value "sw.sw[3,1].d") (footprint "Diode_SMD:D_SOD-323") - (property (name "Sheetname") (value "sw")) - (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.SwitchMatrix")) - (property (name "edg_path") (value "sw.d[3,1]")) - (property (name "edg_short_path") (value "sw.d[3,1]")) - (property (name "edg_refdes") (value "D12")) + (property (name "Sheetname") (value "sw[3,1]")) + (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.DiodeSwitchCellNeopixel")) + (property (name "edg_path") (value "sw.sw[3,1].d")) + (property (name "edg_short_path") (value "sw.sw[3,1].d")) + (property (name "edg_refdes") (value "D22")) (property (name "edg_part") (value "1N5819WS (Guangdong Hottech)")) (property (name "edg_value") (value "40V 600mV@1A 1A SOD-323 Schottky Barrier Diodes (SBD) ROHS")) - (sheetpath (names "/sw/") (tstamps "/015f00eb/")) - (tstamps "063401ad")) + (sheetpath (names "/sw/sw[3,1]/") (tstamps "/015f00eb/09cc0233/")) + (tstamps "00650065")) +(comp (ref "D23") + (value "sw.sw[3,1].npx.device") + (footprint "edg:LED_SK6812MINI-E") + (property (name "Sheetname") (value "npx")) + (property (name "Sheetfile") (value "edg.parts.human_interface.Neopixel.Sk6812Mini_E")) + (property (name "edg_path") (value "sw.sw[3,1].npx.device")) + (property (name "edg_short_path") (value "sw.sw[3,1].npx.device")) + (property (name "edg_refdes") (value "D23")) + (property (name "edg_part") (value "SK6812MINI-E (Opsco Optoelectronics)")) + (property (name "edg_value") (value "SK6812MINI-E")) + (sheetpath (names "/sw/sw[3,1]/npx/") (tstamps "/015f00eb/09cc0233/02a50157/")) + (tstamps "08950271")) +(comp (ref "C19") + (value "sw.sw[3,1].npx.cap") + (footprint "Capacitor_SMD:C_0603_1608Metric") + (property (name "Sheetname") (value "npx")) + (property (name "Sheetfile") (value "edg.parts.human_interface.Neopixel.Sk6812Mini_E")) + (property (name "edg_path") (value "sw.sw[3,1].npx.cap.cap")) + (property (name "edg_short_path") (value "sw.sw[3,1].npx.cap")) + (property (name "edg_refdes") (value "C19")) + (property (name "edg_part") (value "CC0603KRX7R9BB104 (YAGEO)")) + (property (name "edg_value") (value "50V 100nF X7R ±10% 0603 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS")) + (sheetpath (names "/sw/sw[3,1]/npx/") (tstamps "/015f00eb/09cc0233/02a50157/")) + (tstamps "025e0135")) (comp (ref "SW12") - (value "sw.sw[3,2]") + (value "sw.sw[3,2].sw") (footprint "Switch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX") - (property (name "Sheetname") (value "sw")) - (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.SwitchMatrix")) - (property (name "edg_path") (value "sw.sw[3,2]")) - (property (name "edg_short_path") (value "sw.sw[3,2]")) + (property (name "Sheetname") (value "sw[3,2]")) + (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.DiodeSwitchCellNeopixel")) + (property (name "edg_path") (value "sw.sw[3,2].sw")) + (property (name "edg_short_path") (value "sw.sw[3,2].sw")) (property (name "edg_refdes") (value "SW12")) (property (name "edg_part") (value "PG151101S11 (Kailh)")) (property (name "edg_value") (value "PG151101S11")) - (sheetpath (names "/sw/") (tstamps "/015f00eb/")) - (tstamps "09ce0234")) -(comp (ref "D13") - (value "sw.d[3,2]") + (sheetpath (names "/sw/sw[3,2]/") (tstamps "/015f00eb/09ce0234/")) + (tstamps "015f00eb")) +(comp (ref "D24") + (value "sw.sw[3,2].d") (footprint "Diode_SMD:D_SOD-323") - (property (name "Sheetname") (value "sw")) - (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.SwitchMatrix")) - (property (name "edg_path") (value "sw.d[3,2]")) - (property (name "edg_short_path") (value "sw.d[3,2]")) - (property (name "edg_refdes") (value "D13")) + (property (name "Sheetname") (value "sw[3,2]")) + (property (name "Sheetfile") (value "edg.circuits.SwitchMatrix.DiodeSwitchCellNeopixel")) + (property (name "edg_path") (value "sw.sw[3,2].d")) + (property (name "edg_short_path") (value "sw.sw[3,2].d")) + (property (name "edg_refdes") (value "D24")) (property (name "edg_part") (value "1N5819WS (Guangdong Hottech)")) (property (name "edg_value") (value "40V 600mV@1A 1A SOD-323 Schottky Barrier Diodes (SBD) ROHS")) - (sheetpath (names "/sw/") (tstamps "/015f00eb/")) - (tstamps "063601ae")) + (sheetpath (names "/sw/sw[3,2]/") (tstamps "/015f00eb/09ce0234/")) + (tstamps "00650065")) +(comp (ref "D25") + (value "sw.sw[3,2].npx.device") + (footprint "edg:LED_SK6812MINI-E") + (property (name "Sheetname") (value "npx")) + (property (name "Sheetfile") (value "edg.parts.human_interface.Neopixel.Sk6812Mini_E")) + (property (name "edg_path") (value "sw.sw[3,2].npx.device")) + (property (name "edg_short_path") (value "sw.sw[3,2].npx.device")) + (property (name "edg_refdes") (value "D25")) + (property (name "edg_part") (value "SK6812MINI-E (Opsco Optoelectronics)")) + (property (name "edg_value") (value "SK6812MINI-E")) + (sheetpath (names "/sw/sw[3,2]/npx/") (tstamps "/015f00eb/09ce0234/02a50157/")) + (tstamps "08950271")) +(comp (ref "C20") + (value "sw.sw[3,2].npx.cap") + (footprint "Capacitor_SMD:C_0603_1608Metric") + (property (name "Sheetname") (value "npx")) + (property (name "Sheetfile") (value "edg.parts.human_interface.Neopixel.Sk6812Mini_E")) + (property (name "edg_path") (value "sw.sw[3,2].npx.cap.cap")) + (property (name "edg_short_path") (value "sw.sw[3,2].npx.cap")) + (property (name "edg_refdes") (value "C20")) + (property (name "edg_part") (value "CC0603KRX7R9BB104 (YAGEO)")) + (property (name "edg_value") (value "50V 100nF X7R ±10% 0603 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS")) + (sheetpath (names "/sw/sw[3,2]/npx/") (tstamps "/015f00eb/09ce0234/02a50157/")) + (tstamps "025e0135")) (comp (ref "SW13") (value "enc") (footprint "edg:RotaryEncoder_Bourns_PEC11S") @@ -516,38 +816,38 @@ (property (name "edg_value") (value "AFC01-S30FC*-00")) (sheetpath (names "/oled/") (tstamps "/043201a5/")) (tstamps "08950271")) -(comp (ref "U3") +(comp (ref "U4") (value "oled.lcd") (footprint "edg:Lcd_Er_Oled0.96_1.1_Outline") (property (name "Sheetname") (value "oled")) (property (name "Sheetfile") (value "edg.parts.display.oled.Er_Oled_096_1_1.Er_Oled_096_1_1")) (property (name "edg_path") (value "oled.lcd")) (property (name "edg_short_path") (value "oled.lcd")) - (property (name "edg_refdes") (value "U3")) + (property (name "edg_refdes") (value "U4")) (property (name "edg_part") (value "ER-OLED-0.96-1.1 (EastRising)")) (property (name "edg_value") (value "ER-OLED-0.96-1.1")) (sheetpath (names "/oled/") (tstamps "/043201a5/")) (tstamps "02710134")) -(comp (ref "C9") +(comp (ref "C21") (value "oled.c1_cap") (footprint "Capacitor_SMD:C_0603_1608Metric") (property (name "Sheetname") (value "oled")) (property (name "Sheetfile") (value "edg.parts.display.oled.Er_Oled_096_1_1.Er_Oled_096_1_1")) (property (name "edg_path") (value "oled.c1_cap")) (property (name "edg_short_path") (value "oled.c1_cap")) - (property (name "edg_refdes") (value "C9")) + (property (name "edg_refdes") (value "C21")) (property (name "edg_part") (value "CL10A105KB8NNNC (Samsung Electro-Mechanics)")) (property (name "edg_value") (value "50V 1uF X5R ±10% 0603 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS")) (sheetpath (names "/oled/") (tstamps "/043201a5/")) (tstamps "07240228")) -(comp (ref "C10") +(comp (ref "C22") (value "oled.c2_cap") (footprint "Capacitor_SMD:C_0603_1608Metric") (property (name "Sheetname") (value "oled")) (property (name "Sheetfile") (value "edg.parts.display.oled.Er_Oled_096_1_1.Er_Oled_096_1_1")) (property (name "edg_path") (value "oled.c2_cap")) (property (name "edg_short_path") (value "oled.c2_cap")) - (property (name "edg_refdes") (value "C10")) + (property (name "edg_refdes") (value "C22")) (property (name "edg_part") (value "CL10A105KB8NNNC (Samsung Electro-Mechanics)")) (property (name "edg_value") (value "50V 1uF X5R ±10% 0603 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS")) (sheetpath (names "/oled/") (tstamps "/043201a5/")) @@ -564,63 +864,135 @@ (property (name "edg_value") (value "±1% 1/10W Thick Film Resistors 75V ±100ppm/℃ -55℃~+155℃ 390kΩ 0603 Chip Resistor - Surface Mount ROHS")) (sheetpath (names "/oled/") (tstamps "/043201a5/")) (tstamps "0ed90350")) -(comp (ref "C11") +(comp (ref "C23") (value "oled.vcomh_cap") (footprint "Capacitor_SMD:C_0805_2012Metric") (property (name "Sheetname") (value "oled")) (property (name "Sheetfile") (value "edg.parts.display.oled.Er_Oled_096_1_1.Er_Oled_096_1_1")) (property (name "edg_path") (value "oled.vcomh_cap.cap")) (property (name "edg_short_path") (value "oled.vcomh_cap")) - (property (name "edg_refdes") (value "C11")) + (property (name "edg_refdes") (value "C23")) (property (name "edg_part") (value "CL21A475KAQNNNE (Samsung Electro-Mechanics)")) (property (name "edg_value") (value "25V 4.7uF X5R ±10% 0805 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS")) (sheetpath (names "/oled/") (tstamps "/043201a5/")) (tstamps "12bd03b1")) -(comp (ref "C12") +(comp (ref "C24") (value "oled.vdd_cap1") (footprint "Capacitor_SMD:C_0603_1608Metric") (property (name "Sheetname") (value "oled")) (property (name "Sheetfile") (value "edg.parts.display.oled.Er_Oled_096_1_1.Er_Oled_096_1_1")) (property (name "edg_path") (value "oled.vdd_cap1.cap")) (property (name "edg_short_path") (value "oled.vdd_cap1")) - (property (name "edg_refdes") (value "C12")) + (property (name "edg_refdes") (value "C24")) (property (name "edg_part") (value "CL10A105KB8NNNC (Samsung Electro-Mechanics)")) (property (name "edg_value") (value "50V 1uF X5R ±10% 0603 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS")) (sheetpath (names "/oled/") (tstamps "/043201a5/")) (tstamps "0e670303")) -(comp (ref "C13") +(comp (ref "C25") (value "oled.vbat_cap") (footprint "Capacitor_SMD:C_0603_1608Metric") (property (name "Sheetname") (value "oled")) (property (name "Sheetfile") (value "edg.parts.display.oled.Er_Oled_096_1_1.Er_Oled_096_1_1")) (property (name "edg_path") (value "oled.vbat_cap.cap")) (property (name "edg_short_path") (value "oled.vbat_cap")) - (property (name "edg_refdes") (value "C13")) + (property (name "edg_refdes") (value "C25")) (property (name "edg_part") (value "CL10A105KB8NNNC (Samsung Electro-Mechanics)")) (property (name "edg_value") (value "50V 1uF X5R ±10% 0603 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS")) (sheetpath (names "/oled/") (tstamps "/043201a5/")) (tstamps "0ec70341")) -(comp (ref "C14") +(comp (ref "C26") (value "oled.vcc_cap") (footprint "Capacitor_SMD:C_0805_2012Metric") (property (name "Sheetname") (value "oled")) (property (name "Sheetfile") (value "edg.parts.display.oled.Er_Oled_096_1_1.Er_Oled_096_1_1")) (property (name "edg_path") (value "oled.vcc_cap.cap")) (property (name "edg_short_path") (value "oled.vcc_cap")) - (property (name "edg_refdes") (value "C14")) + (property (name "edg_refdes") (value "C26")) (property (name "edg_part") (value "CL21A475KAQNNNE (Samsung Electro-Mechanics)")) (property (name "edg_value") (value "25V 4.7uF X5R ±10% 0805 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS")) (sheetpath (names "/oled/") (tstamps "/043201a5/")) - (tstamps "0b5902d0"))) + (tstamps "0b5902d0")) +(comp (ref "U5") + (value "npx_shift.ic") + (footprint "Package_TO_SOT_SMD:SOT-23-5") + (property (name "Sheetname") (value "npx_shift")) + (property (name "Sheetfile") (value "edg.parts.logic.Logic_74Ahct.L74Ahct1g125")) + (property (name "edg_path") (value "npx_shift.ic")) + (property (name "edg_short_path") (value "npx_shift.ic")) + (property (name "edg_refdes") (value "U5")) + (property (name "edg_part") (value "74AHCT1G125W5-7 (Diodes Incorporated)")) + (property (name "edg_value") (value "74AHCT1G125W5-7")) + (sheetpath (names "/npx_shift/") (tstamps "/134303d4/")) + (tstamps "013700cd")) +(comp (ref "C27") + (value "npx_shift.vdd_cap") + (footprint "Capacitor_SMD:C_0603_1608Metric") + (property (name "Sheetname") (value "npx_shift")) + (property (name "Sheetfile") (value "edg.parts.logic.Logic_74Ahct.L74Ahct1g125")) + (property (name "edg_path") (value "npx_shift.vdd_cap.cap")) + (property (name "edg_short_path") (value "npx_shift.vdd_cap")) + (property (name "edg_refdes") (value "C27")) + (property (name "edg_part") (value "CC0603KRX7R9BB104 (YAGEO)")) + (property (name "edg_value") (value "50V 100nF X7R ±10% 0603 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS")) + (sheetpath (names "/npx_shift/") (tstamps "/134303d4/")) + (tstamps "0b6402d2")) +(comp (ref "TP1") + (value "_npx_shift_output_link") + (footprint "TestPoint:TestPoint_Keystone_5015_Micro-Minature") + (property (name "Sheetname") (value "")) + (property (name "Sheetfile") (value "")) + (property (name "edg_path") (value "npx_tp.tp")) + (property (name "edg_short_path") (value "npx_tp")) + (property (name "edg_refdes") (value "TP1")) + (property (name "edg_part") (value "5015 (Keystone)")) + (property (name "edg_value") (value "_npx_shift_output_link")) + (sheetpath (names "/") (tstamps "/")) + (tstamps "091f029a"))) (nets -(net (code 1) (name "usb.pwr") +(net (code 1) (name "usb_chain_0.d_P") + (node (ref J1) (pin A6)) + (node (ref J1) (pin B6)) + (node (ref U2) (pin 22)) + (node (ref U3) (pin 2))) +(net (code 2) (name "usb_chain_0.d_N") + (node (ref J1) (pin A7)) + (node (ref J1) (pin B7)) + (node (ref U2) (pin 21)) + (node (ref U3) (pin 1))) +(net (code 3) (name "usb.pwr") (node (ref J1) (pin A4)) (node (ref J1) (pin A9)) (node (ref J1) (pin B4)) (node (ref J1) (pin B9)) (node (ref U1) (pin 3)) - (node (ref C1) (pin 1))) -(net (code 2) (name "usb.gnd") + (node (ref C1) (pin 1)) + (node (ref D3) (pin 1)) + (node (ref C9) (pin 1)) + (node (ref D5) (pin 1)) + (node (ref C10) (pin 1)) + (node (ref D7) (pin 1)) + (node (ref C11) (pin 1)) + (node (ref D9) (pin 1)) + (node (ref C12) (pin 1)) + (node (ref D11) (pin 1)) + (node (ref C13) (pin 1)) + (node (ref D13) (pin 1)) + (node (ref C14) (pin 1)) + (node (ref D15) (pin 1)) + (node (ref C15) (pin 1)) + (node (ref D17) (pin 1)) + (node (ref C16) (pin 1)) + (node (ref D19) (pin 1)) + (node (ref C17) (pin 1)) + (node (ref D21) (pin 1)) + (node (ref C18) (pin 1)) + (node (ref D23) (pin 1)) + (node (ref C19) (pin 1)) + (node (ref D25) (pin 1)) + (node (ref C20) (pin 1)) + (node (ref U5) (pin 5)) + (node (ref C27) (pin 1))) +(net (code 4) (name "usb.gnd") (node (ref J1) (pin A1)) (node (ref J1) (pin A12)) (node (ref J1) (pin B1)) @@ -643,6 +1015,31 @@ (node (ref C6) (pin 2)) (node (ref C7) (pin 2)) (node (ref C8) (pin 2)) + (node (ref U3) (pin 3)) + (node (ref D3) (pin 3)) + (node (ref C9) (pin 2)) + (node (ref D5) (pin 3)) + (node (ref C10) (pin 2)) + (node (ref D7) (pin 3)) + (node (ref C11) (pin 2)) + (node (ref D9) (pin 3)) + (node (ref C12) (pin 2)) + (node (ref D11) (pin 3)) + (node (ref C13) (pin 2)) + (node (ref D13) (pin 3)) + (node (ref C14) (pin 2)) + (node (ref D15) (pin 3)) + (node (ref C15) (pin 2)) + (node (ref D17) (pin 3)) + (node (ref C16) (pin 2)) + (node (ref D19) (pin 3)) + (node (ref C17) (pin 2)) + (node (ref D21) (pin 3)) + (node (ref C18) (pin 2)) + (node (ref D23) (pin 3)) + (node (ref C19) (pin 2)) + (node (ref D25) (pin 3)) + (node (ref C20) (pin 2)) (node (ref SW13) (pin C)) (node (ref SW13) (pin S2)) (node (ref J3) (pin 1)) @@ -660,18 +1057,13 @@ (node (ref J3) (pin 30)) (node (ref J3) (pin 8)) (node (ref R4) (pin 1)) - (node (ref C11) (pin 2)) - (node (ref C12) (pin 2)) - (node (ref C13) (pin 2)) - (node (ref C14) (pin 2))) -(net (code 3) (name "usb.usb.dp") - (node (ref J1) (pin A6)) - (node (ref J1) (pin B6)) - (node (ref U2) (pin 22))) -(net (code 4) (name "usb.usb.dm") - (node (ref J1) (pin A7)) - (node (ref J1) (pin B7)) - (node (ref U2) (pin 21))) + (node (ref C23) (pin 2)) + (node (ref C24) (pin 2)) + (node (ref C25) (pin 2)) + (node (ref C26) (pin 2)) + (node (ref U5) (pin 1)) + (node (ref U5) (pin 3)) + (node (ref C27) (pin 2))) (net (code 5) (name "usb.conn.cc.cc1") (node (ref J1) (pin A5)) (node (ref R1) (pin 2))) @@ -691,46 +1083,46 @@ (node (ref D1) (pin 2)) (node (ref J3) (pin 6)) (node (ref J3) (pin 9)) - (node (ref C12) (pin 1)) - (node (ref C13) (pin 1))) + (node (ref C24) (pin 1)) + (node (ref C25) (pin 1))) (net (code 8) (name "mcu.gpio.0_0") - (node (ref U2) (pin 18)) - (node (ref SW1) (pin 2)) - (node (ref SW2) (pin 2)) - (node (ref SW3) (pin 2))) -(net (code 9) (name "mcu.gpio.0_1") (node (ref U2) (pin 19)) - (node (ref SW4) (pin 2)) - (node (ref SW5) (pin 2)) - (node (ref SW6) (pin 2))) -(net (code 10) (name "mcu.gpio.0_2") + (node (ref SW1) (pin 1)) + (node (ref SW2) (pin 1)) + (node (ref SW3) (pin 1))) +(net (code 9) (name "mcu.gpio.0_1") (node (ref U2) (pin 20)) - (node (ref SW7) (pin 2)) - (node (ref SW8) (pin 2)) - (node (ref SW9) (pin 2))) -(net (code 11) (name "mcu.gpio.0_3") + (node (ref SW4) (pin 1)) + (node (ref SW5) (pin 1)) + (node (ref SW6) (pin 1))) +(net (code 10) (name "mcu.gpio.0_2") (node (ref U2) (pin 25)) - (node (ref SW10) (pin 2)) - (node (ref SW11) (pin 2)) - (node (ref SW12) (pin 2))) -(net (code 12) (name "mcu.gpio.1_0") + (node (ref SW7) (pin 1)) + (node (ref SW8) (pin 1)) + (node (ref SW9) (pin 1))) +(net (code 11) (name "mcu.gpio.0_3") (node (ref U2) (pin 26)) - (node (ref D2) (pin 2)) - (node (ref D5) (pin 2)) - (node (ref D8) (pin 2)) - (node (ref D11) (pin 2))) -(net (code 13) (name "mcu.gpio.1_1") + (node (ref SW10) (pin 1)) + (node (ref SW11) (pin 1)) + (node (ref SW12) (pin 1))) +(net (code 12) (name "mcu.gpio.1_0") (node (ref U2) (pin 27)) - (node (ref D3) (pin 2)) - (node (ref D6) (pin 2)) - (node (ref D9) (pin 2)) - (node (ref D12) (pin 2))) -(net (code 14) (name "mcu.gpio.1_2") + (node (ref D2) (pin 1)) + (node (ref D8) (pin 1)) + (node (ref D14) (pin 1)) + (node (ref D20) (pin 1))) +(net (code 13) (name "mcu.gpio.1_1") (node (ref U2) (pin 28)) - (node (ref D4) (pin 2)) - (node (ref D7) (pin 2)) - (node (ref D10) (pin 2)) - (node (ref D13) (pin 2))) + (node (ref D4) (pin 1)) + (node (ref D10) (pin 1)) + (node (ref D16) (pin 1)) + (node (ref D22) (pin 1))) +(net (code 14) (name "mcu.gpio.1_2") + (node (ref U2) (pin 29)) + (node (ref D6) (pin 1)) + (node (ref D12) (pin 1)) + (node (ref D18) (pin 1)) + (node (ref D24) (pin 1))) (net (code 15) (name "mcu.xtal_node.xi") (node (ref X1) (pin 1)) (node (ref C3) (pin 1)) @@ -754,89 +1146,131 @@ (net (code 21) (name "ledr.package.k") (node (ref D1) (pin 1)) (node (ref R3) (pin 1))) -(net (code 22) (name "sw.sw[0,0].sw") - (node (ref SW1) (pin 1)) - (node (ref D2) (pin 1))) -(net (code 23) (name "sw.sw[0,1].sw") - (node (ref SW2) (pin 1)) - (node (ref D3) (pin 1))) -(net (code 24) (name "sw.sw[0,2].sw") - (node (ref SW3) (pin 1)) - (node (ref D4) (pin 1))) -(net (code 25) (name "sw.sw[1,0].sw") - (node (ref SW4) (pin 1)) - (node (ref D5) (pin 1))) -(net (code 26) (name "sw.sw[1,1].sw") - (node (ref SW5) (pin 1)) - (node (ref D6) (pin 1))) -(net (code 27) (name "sw.sw[1,2].sw") - (node (ref SW6) (pin 1)) - (node (ref D7) (pin 1))) -(net (code 28) (name "sw.sw[2,0].sw") - (node (ref SW7) (pin 1)) - (node (ref D8) (pin 1))) -(net (code 29) (name "sw.sw[2,1].sw") - (node (ref SW8) (pin 1)) - (node (ref D9) (pin 1))) -(net (code 30) (name "sw.sw[2,2].sw") - (node (ref SW9) (pin 1)) - (node (ref D10) (pin 1))) -(net (code 31) (name "sw.sw[3,0].sw") - (node (ref SW10) (pin 1)) - (node (ref D11) (pin 1))) -(net (code 32) (name "sw.sw[3,1].sw") - (node (ref SW11) (pin 1)) - (node (ref D12) (pin 1))) -(net (code 33) (name "sw.sw[3,2].sw") - (node (ref SW12) (pin 1)) - (node (ref D13) (pin 1))) -(net (code 34) (name "enc.a") +(net (code 22) (name "sw.npx_din") + (node (ref D3) (pin 4)) + (node (ref U5) (pin 4)) + (node (ref TP1) (pin 1))) +(net (code 23) (name "sw.npx_dout") + (node (ref D25) (pin 2))) +(net (code 24) (name "sw.sw[0,0].npx_dout") + (node (ref D3) (pin 2)) + (node (ref D9) (pin 4))) +(net (code 25) (name "sw.sw[0,0].sw.com") + (node (ref SW1) (pin 2)) + (node (ref D2) (pin 2))) +(net (code 26) (name "sw.sw[0,1].npx_din") + (node (ref D5) (pin 4)) + (node (ref D11) (pin 2))) +(net (code 27) (name "sw.sw[0,1].npx_dout") + (node (ref D5) (pin 2)) + (node (ref D7) (pin 4))) +(net (code 28) (name "sw.sw[0,1].sw.com") + (node (ref SW2) (pin 2)) + (node (ref D4) (pin 2))) +(net (code 29) (name "sw.sw[0,2].npx_dout") + (node (ref D7) (pin 2)) + (node (ref D13) (pin 4))) +(net (code 30) (name "sw.sw[0,2].sw.com") + (node (ref SW3) (pin 2)) + (node (ref D6) (pin 2))) +(net (code 31) (name "sw.sw[1,0].npx_dout") + (node (ref D9) (pin 2)) + (node (ref D15) (pin 4))) +(net (code 32) (name "sw.sw[1,0].sw.com") + (node (ref SW4) (pin 2)) + (node (ref D8) (pin 2))) +(net (code 33) (name "sw.sw[1,1].npx_din") + (node (ref D11) (pin 4)) + (node (ref D17) (pin 2))) +(net (code 34) (name "sw.sw[1,1].sw.com") + (node (ref SW5) (pin 2)) + (node (ref D10) (pin 2))) +(net (code 35) (name "sw.sw[1,2].npx_dout") + (node (ref D13) (pin 2)) + (node (ref D19) (pin 4))) +(net (code 36) (name "sw.sw[1,2].sw.com") + (node (ref SW6) (pin 2)) + (node (ref D12) (pin 2))) +(net (code 37) (name "sw.sw[2,0].npx_dout") + (node (ref D15) (pin 2)) + (node (ref D21) (pin 4))) +(net (code 38) (name "sw.sw[2,0].sw.com") + (node (ref SW7) (pin 2)) + (node (ref D14) (pin 2))) +(net (code 39) (name "sw.sw[2,1].npx_din") + (node (ref D17) (pin 4)) + (node (ref D23) (pin 2))) +(net (code 40) (name "sw.sw[2,1].sw.com") + (node (ref SW8) (pin 2)) + (node (ref D16) (pin 2))) +(net (code 41) (name "sw.sw[2,2].npx_dout") + (node (ref D19) (pin 2)) + (node (ref D25) (pin 4))) +(net (code 42) (name "sw.sw[2,2].sw.com") + (node (ref SW9) (pin 2)) + (node (ref D18) (pin 2))) +(net (code 43) (name "sw.sw[3,0].npx_dout") + (node (ref D21) (pin 2)) + (node (ref D23) (pin 4))) +(net (code 44) (name "sw.sw[3,0].sw.com") + (node (ref SW10) (pin 2)) + (node (ref D20) (pin 2))) +(net (code 45) (name "sw.sw[3,1].sw.com") + (node (ref SW11) (pin 2)) + (node (ref D22) (pin 2))) +(net (code 46) (name "sw.sw[3,2].sw.com") + (node (ref SW12) (pin 2)) + (node (ref D24) (pin 2))) +(net (code 47) (name "enc.a") (node (ref U2) (pin 7)) (node (ref SW13) (pin A))) -(net (code 35) (name "enc.b") +(net (code 48) (name "enc.b") (node (ref U2) (pin 8)) (node (ref SW13) (pin B))) -(net (code 36) (name "enc.sw") +(net (code 49) (name "enc.sw") (node (ref U2) (pin 9)) (node (ref SW13) (pin S1))) -(net (code 37) (name "oled.reset") +(net (code 50) (name "oled.reset") (node (ref U2) (pin 15)) (node (ref J3) (pin 14))) -(net (code 38) (name "oled.spi.sck") +(net (code 51) (name "oled.spi.sck") (node (ref U2) (pin 11)) (node (ref J3) (pin 18))) -(net (code 39) (name "oled.spi.mosi") +(net (code 52) (name "oled.spi.mosi") (node (ref U2) (pin 13)) (node (ref J3) (pin 19))) -(net (code 40) (name "oled.spi.miso") +(net (code 53) (name "oled.spi.miso") (node (ref U2) (pin 12))) -(net (code 41) (name "oled.cs") +(net (code 54) (name "oled.cs") (node (ref U2) (pin 10)) (node (ref J3) (pin 13))) -(net (code 42) (name "oled.dc") +(net (code 55) (name "oled.dc") (node (ref U2) (pin 14)) (node (ref J3) (pin 15))) -(net (code 43) (name "oled.device.vcc") +(net (code 56) (name "oled.device.vcc") (node (ref J3) (pin 28)) - (node (ref C14) (pin 1))) -(net (code 44) (name "oled.device.iref") + (node (ref C26) (pin 1))) +(net (code 57) (name "oled.device.iref") (node (ref J3) (pin 26)) (node (ref R4) (pin 2))) -(net (code 45) (name "oled.device.vcomh") +(net (code 58) (name "oled.device.vcomh") (node (ref J3) (pin 27)) - (node (ref C11) (pin 1))) -(net (code 46) (name "oled.device.c1p") + (node (ref C23) (pin 1))) +(net (code 59) (name "oled.device.c1p") (node (ref J3) (pin 4)) - (node (ref C9) (pin 1))) -(net (code 47) (name "oled.device.c1n") + (node (ref C21) (pin 1))) +(net (code 60) (name "oled.device.c1n") (node (ref J3) (pin 5)) - (node (ref C9) (pin 2))) -(net (code 48) (name "oled.device.c2p") + (node (ref C21) (pin 2))) +(net (code 61) (name "oled.device.c2p") (node (ref J3) (pin 2)) - (node (ref C10) (pin 1))) -(net (code 49) (name "oled.device.c2n") + (node (ref C22) (pin 1))) +(net (code 62) (name "oled.device.c2n") (node (ref J3) (pin 3)) - (node (ref C10) (pin 2))) -(net (code 50) (name "oled.device.d2") - (node (ref J3) (pin 20)))) + (node (ref C22) (pin 2))) +(net (code 63) (name "oled.device.d2") + (node (ref J3) (pin 20))) +(net (code 64) (name "npx_shift.input") + (node (ref U2) (pin 18)) + (node (ref U5) (pin 2)))) ) \ No newline at end of file diff --git a/examples/Keyboard/Keyboard.svgpcb.js b/examples/Keyboard/Keyboard.svgpcb.js index cb3b12aca..fc8489d91 100644 --- a/examples/Keyboard/Keyboard.svgpcb.js +++ b/examples/Keyboard/Keyboard.svgpcb.js @@ -1,127 +1,231 @@ const board = new PCB(); -const sw = SwitchMatrix_2_3_sw(pt(0.039, 0.039)) +const sw = SwitchDiodeMatrixNeopixels_4_3_sw(pt(0.039, 0.039)) // usb.conn const J1 = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { - translate: pt(1.328, 0.958), rotate: 0, + translate: pt(1.121, 2.283), rotate: 0, id: 'J1' }) // usb.cc_pull.cc1.res const R1 = board.add(R_0603_1608Metric, { - translate: pt(1.176, 1.213), rotate: 0, + translate: pt(0.970, 2.538), rotate: 0, id: 'R1' }) // usb.cc_pull.cc2.res const R2 = board.add(R_0603_1608Metric, { - translate: pt(1.332, 1.213), rotate: 0, + translate: pt(1.126, 2.538), rotate: 0, id: 'R2' }) // reg.ic const U1 = board.add(SOT_223_3_TabPin2, { - translate: pt(1.828, 0.935), rotate: 0, + translate: pt(1.622, 2.260), rotate: 0, id: 'U1' }) // reg.in_cap.cap const C1 = board.add(C_0603_1608Metric, { - translate: pt(1.887, 1.145), rotate: 0, + translate: pt(1.680, 2.470), rotate: 0, id: 'C1' }) // reg.out_cap.cap const C2 = board.add(C_0805_2012Metric, { - translate: pt(1.722, 1.155), rotate: 0, + translate: pt(1.516, 2.480), rotate: 0, id: 'C2' }) -// mcu.ic -const U2 = board.add(LQFP_48_7x7mm_P0_5mm, { - translate: pt(1.321, 0.203), rotate: 0, - id: 'U2' +// mcu.crystal.package +const X1 = board.add(Crystal_SMD_3225_4Pin_3_2x2_5mm, { + translate: pt(0.711, 2.185), rotate: 0, + id: 'X1' }) -// mcu.pwr_cap[0].cap -const C3 = board.add(C_0805_2012Metric, { - translate: pt(1.390, 0.483), rotate: 0, +// mcu.crystal.cap_a +const C3 = board.add(C_0603_1608Metric, { + translate: pt(0.687, 2.320), rotate: 0, id: 'C3' }) -// mcu.pwr_cap[1].cap +// mcu.crystal.cap_b const C4 = board.add(C_0603_1608Metric, { - translate: pt(1.554, 0.474), rotate: 0, + translate: pt(0.687, 2.417), rotate: 0, id: 'C4' }) -// mcu.pwr_cap[2].cap +// mcu.ic +const U2 = board.add(LQFP_32_7x7mm_P0_8mm, { + translate: pt(0.385, 2.322), rotate: 0, + id: 'U2' +}) +// mcu.sdi.conn +const J2 = board.add(PinHeader_1x04_P2_54mm_Vertical, { + translate: pt(0.071, 2.488), rotate: 0, + id: 'J2' +}) +// mcu.vdd_cap[0].cap const C5 = board.add(C_0603_1608Metric, { - translate: pt(1.710, 0.474), rotate: 0, + translate: pt(0.058, 2.627), rotate: 0, id: 'C5' }) -// mcu.pwr_cap[3].cap +// mcu.vdd_cap[1].cap const C6 = board.add(C_0603_1608Metric, { - translate: pt(1.866, 0.474), rotate: 0, + translate: pt(0.214, 2.627), rotate: 0, id: 'C6' }) -// mcu.vdda_cap_0.cap +// mcu.vdda_cap.cap const C7 = board.add(C_0603_1608Metric, { - translate: pt(1.176, 0.647), rotate: 0, + translate: pt(0.370, 2.627), rotate: 0, id: 'C7' }) -// mcu.vdda_cap_1.cap +// mcu.reset_cap.cap const C8 = board.add(C_0603_1608Metric, { - translate: pt(1.332, 0.647), rotate: 0, + translate: pt(0.526, 2.627), rotate: 0, id: 'C8' }) -// mcu.crystal.package -const X1 = board.add(Crystal_SMD_3225_4Pin_3_2x2_5mm, { - translate: pt(1.201, 0.512), rotate: 0, - id: 'X1' +// usb_esd +const U3 = board.add(SOT_23, { + translate: pt(2.791, 2.185), rotate: 0, + id: 'U3' }) -// mcu.crystal.cap_a -const C9 = board.add(C_0603_1608Metric, { - translate: pt(1.488, 0.647), rotate: 0, - id: 'C9' +// ledr.package +const D1 = board.add(LED_0603_1608Metric, { + translate: pt(2.251, 2.147), rotate: 0, + id: 'D1' }) -// mcu.crystal.cap_b -const C10 = board.add(C_0603_1608Metric, { - translate: pt(1.644, 0.647), rotate: 0, - id: 'C10' -}) -// mcu.swd.conn -const J2 = board.add(PinHeader_2x05_P1_27mm_Vertical_SMD, { - translate: pt(1.732, 0.146), rotate: 0, - id: 'J2' -}) -// mcu.usb_pull.dp +// ledr.res const R3 = board.add(R_0603_1608Metric, { - translate: pt(1.800, 0.647), rotate: 0, + translate: pt(2.251, 2.244), rotate: 0, id: 'R3' }) +// enc.package +const SW13 = board.add(RotaryEncoder_Bourns_PEC11S, { + translate: pt(2.512, 1.634), rotate: 0, + id: 'SW13' +}) +// oled.device.conn +const J3 = board.add(Hirose_FH12_30S_0_5SH_1x30_1MP_P0_50mm_Horizontal, { + translate: pt(2.533, 1.054), rotate: 0, + id: 'J3' +}) +// oled.lcd +const U4 = board.add(Lcd_Er_Oled0_96_1_1_Outline, { + translate: pt(2.644, 0.516), rotate: 0, + id: 'U4' +}) +// oled.c1_cap +const C21 = board.add(C_0603_1608Metric, { + translate: pt(3.393, 0.889), rotate: 0, + id: 'C21' +}) +// oled.c2_cap +const C22 = board.add(C_0603_1608Metric, { + translate: pt(3.549, 0.889), rotate: 0, + id: 'C22' +}) +// oled.iref_res.res +const R4 = board.add(R_0603_1608Metric, { + translate: pt(3.046, 1.006), rotate: 0, + id: 'R4' +}) +// oled.vcomh_cap.cap +const C23 = board.add(C_0805_2012Metric, { + translate: pt(3.055, 0.899), rotate: 0, + id: 'C23' +}) +// oled.vdd_cap1.cap +const C24 = board.add(C_0603_1608Metric, { + translate: pt(3.202, 1.006), rotate: 0, + id: 'C24' +}) +// oled.vbat_cap.cap +const C25 = board.add(C_0603_1608Metric, { + translate: pt(3.358, 1.006), rotate: 0, + id: 'C25' +}) +// oled.vcc_cap.cap +const C26 = board.add(C_0805_2012Metric, { + translate: pt(3.228, 0.899), rotate: 0, + id: 'C26' +}) +// npx_shift.ic +const U5 = board.add(SOT_23_5, { + translate: pt(1.994, 2.185), rotate: 0, + id: 'U5' +}) +// npx_shift.vdd_cap.cap +const C27 = board.add(C_0603_1608Metric, { + translate: pt(1.972, 2.320), rotate: 0, + id: 'C27' +}) +// npx_tp.tp +const TP1 = board.add(TestPoint_Keystone_5015_Micro_Minature, { + translate: pt(2.512, 2.171), rotate: 0, + id: 'TP1' +}) board.setNetlist([ - {name: "usb.pwr", pads: [["J1", "A4"], ["J1", "A9"], ["J1", "B4"], ["J1", "B9"], ["U1", "3"], ["C1", "1"]]}, - {name: "usb.gnd", pads: [["J1", "A1"], ["J1", "A12"], ["J1", "B1"], ["J1", "B12"], ["J1", "S1"], ["R1", "1"], ["R2", "1"], ["U1", "1"], ["C1", "2"], ["C2", "2"], ["U2", "23"], ["U2", "35"], ["U2", "44"], ["U2", "47"], ["U2", "8"], ["C3", "2"], ["C4", "2"], ["C5", "2"], ["C6", "2"], ["C7", "2"], ["C8", "2"], ["X1", "2"], ["X1", "4"], ["C9", "2"], ["C10", "2"], ["J2", "3"], ["J2", "5"], ["J2", "9"]]}, - {name: "usb.usb.dp", pads: [["J1", "A6"], ["J1", "B6"], ["U2", "33"], ["R3", "2"]]}, - {name: "usb.usb.dm", pads: [["J1", "A7"], ["J1", "B7"], ["U2", "32"]]}, + {name: "usb_chain_0.d_P", pads: [["J1", "A6"], ["J1", "B6"], ["U2", "22"], ["U3", "2"]]}, + {name: "usb_chain_0.d_N", pads: [["J1", "A7"], ["J1", "B7"], ["U2", "21"], ["U3", "1"]]}, + {name: "usb.pwr", pads: [["J1", "A4"], ["J1", "A9"], ["J1", "B4"], ["J1", "B9"], ["U1", "3"], ["C1", "1"], ["D3", "1"], ["C9", "1"], ["D5", "1"], ["C10", "1"], ["D7", "1"], ["C11", "1"], ["D9", "1"], ["C12", "1"], ["D11", "1"], ["C13", "1"], ["D13", "1"], ["C14", "1"], ["D15", "1"], ["C15", "1"], ["D17", "1"], ["C16", "1"], ["D19", "1"], ["C17", "1"], ["D21", "1"], ["C18", "1"], ["D23", "1"], ["C19", "1"], ["D25", "1"], ["C20", "1"], ["U5", "5"], ["C27", "1"]]}, + {name: "usb.gnd", pads: [["J1", "A1"], ["J1", "A12"], ["J1", "B1"], ["J1", "B12"], ["J1", "S1"], ["R1", "1"], ["R2", "1"], ["U1", "1"], ["C1", "2"], ["C2", "2"], ["X1", "2"], ["X1", "4"], ["C3", "2"], ["C4", "2"], ["U2", "16"], ["U2", "31"], ["U2", "32"], ["J2", "2"], ["C5", "2"], ["C6", "2"], ["C7", "2"], ["C8", "2"], ["U3", "3"], ["D3", "3"], ["C9", "2"], ["D5", "3"], ["C10", "2"], ["D7", "3"], ["C11", "2"], ["D9", "3"], ["C12", "2"], ["D11", "3"], ["C13", "2"], ["D13", "3"], ["C14", "2"], ["D15", "3"], ["C15", "2"], ["D17", "3"], ["C16", "2"], ["D19", "3"], ["C17", "2"], ["D21", "3"], ["C18", "2"], ["D23", "3"], ["C19", "2"], ["D25", "3"], ["C20", "2"], ["SW13", "C"], ["SW13", "S2"], ["J3", "1"], ["J3", "10"], ["J3", "11"], ["J3", "12"], ["J3", "16"], ["J3", "17"], ["J3", "21"], ["J3", "22"], ["J3", "23"], ["J3", "24"], ["J3", "25"], ["J3", "29"], ["J3", "30"], ["J3", "8"], ["R4", "1"], ["C23", "2"], ["C24", "2"], ["C25", "2"], ["C26", "2"], ["U5", "1"], ["U5", "3"], ["C27", "2"]]}, {name: "usb.conn.cc.cc1", pads: [["J1", "A5"], ["R1", "2"]]}, {name: "usb.conn.cc.cc2", pads: [["J1", "B5"], ["R2", "2"]]}, - {name: "reg.pwr_out", pads: [["U1", "2"], ["C2", "1"], ["U2", "1"], ["U2", "24"], ["U2", "36"], ["U2", "48"], ["U2", "9"], ["C3", "1"], ["C4", "1"], ["C5", "1"], ["C6", "1"], ["C7", "1"], ["C8", "1"], ["J2", "1"], ["R3", "1"]]}, - {name: "mcu.gpio.0_0", pads: [["U2", "10"], ["SW1", "2"], ["SW2", "2"], ["SW3", "2"]]}, - {name: "mcu.gpio.0_1", pads: [["U2", "11"], ["SW4", "2"], ["SW5", "2"], ["SW6", "2"]]}, - {name: "mcu.gpio.1_0", pads: [["U2", "12"], ["D1", "2"], ["D4", "2"]]}, - {name: "mcu.gpio.1_1", pads: [["U2", "13"], ["D2", "2"], ["D5", "2"]]}, - {name: "mcu.gpio.1_2", pads: [["U2", "14"], ["D3", "2"], ["D6", "2"]]}, - {name: "mcu.xtal_node.xi", pads: [["U2", "5"], ["X1", "1"], ["C9", "1"]]}, - {name: "mcu.xtal_node.xo", pads: [["U2", "6"], ["X1", "3"], ["C10", "1"]]}, - {name: "mcu.swd_node.swdio", pads: [["U2", "34"], ["J2", "2"]]}, - {name: "mcu.swd_node.swclk", pads: [["U2", "37"], ["J2", "4"]]}, - {name: "mcu.reset_node", pads: [["U2", "7"], ["J2", "10"]]}, - {name: "mcu.swd.tdi", pads: [["J2", "8"]]}, - {name: "mcu.swd.swo", pads: [["J2", "6"]]}, - {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"]]} + {name: "reg.pwr_out", pads: [["U1", "2"], ["C2", "1"], ["U2", "1"], ["U2", "17"], ["U2", "5"], ["J2", "1"], ["C5", "1"], ["C6", "1"], ["C7", "1"], ["D1", "2"], ["J3", "6"], ["J3", "9"], ["C24", "1"], ["C25", "1"]]}, + {name: "mcu.gpio.0_0", pads: [["U2", "19"], ["SW1", "1"], ["SW2", "1"], ["SW3", "1"]]}, + {name: "mcu.gpio.0_1", pads: [["U2", "20"], ["SW4", "1"], ["SW5", "1"], ["SW6", "1"]]}, + {name: "mcu.gpio.0_2", pads: [["U2", "25"], ["SW7", "1"], ["SW8", "1"], ["SW9", "1"]]}, + {name: "mcu.gpio.0_3", pads: [["U2", "26"], ["SW10", "1"], ["SW11", "1"], ["SW12", "1"]]}, + {name: "mcu.gpio.1_0", pads: [["U2", "27"], ["D2", "1"], ["D8", "1"], ["D14", "1"], ["D20", "1"]]}, + {name: "mcu.gpio.1_1", pads: [["U2", "28"], ["D4", "1"], ["D10", "1"], ["D16", "1"], ["D22", "1"]]}, + {name: "mcu.gpio.1_2", pads: [["U2", "29"], ["D6", "1"], ["D12", "1"], ["D18", "1"], ["D24", "1"]]}, + {name: "mcu.xtal_node.xi", pads: [["X1", "1"], ["C3", "1"], ["U2", "2"]]}, + {name: "mcu.xtal_node.xo", pads: [["X1", "3"], ["C4", "1"], ["U2", "3"]]}, + {name: "mcu.ic.nrst", pads: [["U2", "4"], ["C8", "1"]]}, + {name: "mcu.ic.swdio", pads: [["U2", "23"], ["J2", "3"]]}, + {name: "mcu.ic.swclk", pads: [["U2", "24"], ["J2", "4"]]}, + {name: "ledr.signal", pads: [["U2", "6"], ["R3", "2"]]}, + {name: "ledr.package.k", pads: [["D1", "1"], ["R3", "1"]]}, + {name: "sw.npx_din", pads: [["D3", "4"], ["U5", "4"], ["TP1", "1"]]}, + {name: "sw.npx_dout", pads: [["D25", "2"]]}, + {name: "sw.sw[0,0].npx_dout", pads: [["D3", "2"], ["D9", "4"]]}, + {name: "sw.sw[0,0].sw.com", pads: [["SW1", "2"], ["D2", "2"]]}, + {name: "sw.sw[0,1].npx_din", pads: [["D5", "4"], ["D11", "2"]]}, + {name: "sw.sw[0,1].npx_dout", pads: [["D5", "2"], ["D7", "4"]]}, + {name: "sw.sw[0,1].sw.com", pads: [["SW2", "2"], ["D4", "2"]]}, + {name: "sw.sw[0,2].npx_dout", pads: [["D7", "2"], ["D13", "4"]]}, + {name: "sw.sw[0,2].sw.com", pads: [["SW3", "2"], ["D6", "2"]]}, + {name: "sw.sw[1,0].npx_dout", pads: [["D9", "2"], ["D15", "4"]]}, + {name: "sw.sw[1,0].sw.com", pads: [["SW4", "2"], ["D8", "2"]]}, + {name: "sw.sw[1,1].npx_din", pads: [["D11", "4"], ["D17", "2"]]}, + {name: "sw.sw[1,1].sw.com", pads: [["SW5", "2"], ["D10", "2"]]}, + {name: "sw.sw[1,2].npx_dout", pads: [["D13", "2"], ["D19", "4"]]}, + {name: "sw.sw[1,2].sw.com", pads: [["SW6", "2"], ["D12", "2"]]}, + {name: "sw.sw[2,0].npx_dout", pads: [["D15", "2"], ["D21", "4"]]}, + {name: "sw.sw[2,0].sw.com", pads: [["SW7", "2"], ["D14", "2"]]}, + {name: "sw.sw[2,1].npx_din", pads: [["D17", "4"], ["D23", "2"]]}, + {name: "sw.sw[2,1].sw.com", pads: [["SW8", "2"], ["D16", "2"]]}, + {name: "sw.sw[2,2].npx_dout", pads: [["D19", "2"], ["D25", "4"]]}, + {name: "sw.sw[2,2].sw.com", pads: [["SW9", "2"], ["D18", "2"]]}, + {name: "sw.sw[3,0].npx_dout", pads: [["D21", "2"], ["D23", "4"]]}, + {name: "sw.sw[3,0].sw.com", pads: [["SW10", "2"], ["D20", "2"]]}, + {name: "sw.sw[3,1].sw.com", pads: [["SW11", "2"], ["D22", "2"]]}, + {name: "sw.sw[3,2].sw.com", pads: [["SW12", "2"], ["D24", "2"]]}, + {name: "enc.a", pads: [["U2", "7"], ["SW13", "A"]]}, + {name: "enc.b", pads: [["U2", "8"], ["SW13", "B"]]}, + {name: "enc.sw", pads: [["U2", "9"], ["SW13", "S1"]]}, + {name: "oled.reset", pads: [["U2", "15"], ["J3", "14"]]}, + {name: "oled.spi.sck", pads: [["U2", "11"], ["J3", "18"]]}, + {name: "oled.spi.mosi", pads: [["U2", "13"], ["J3", "19"]]}, + {name: "oled.spi.miso", pads: [["U2", "12"]]}, + {name: "oled.cs", pads: [["U2", "10"], ["J3", "13"]]}, + {name: "oled.dc", pads: [["U2", "14"], ["J3", "15"]]}, + {name: "oled.device.vcc", pads: [["J3", "28"], ["C26", "1"]]}, + {name: "oled.device.iref", pads: [["J3", "26"], ["R4", "2"]]}, + {name: "oled.device.vcomh", pads: [["J3", "27"], ["C23", "1"]]}, + {name: "oled.device.c1p", pads: [["J3", "4"], ["C21", "1"]]}, + {name: "oled.device.c1n", pads: [["J3", "5"], ["C21", "2"]]}, + {name: "oled.device.c2p", pads: [["J3", "2"], ["C22", "1"]]}, + {name: "oled.device.c2n", pads: [["J3", "3"], ["C22", "2"]]}, + {name: "oled.device.d2", pads: [["J3", "20"]]}, + {name: "npx_shift.input", pads: [["U2", "18"], ["U5", "2"]]} ]) const limit0 = pt(-0.07874015748031496, -0.07874015748031496); -const limit1 = pt(2.119685039370079, 2.1181102362204722); +const limit1 = pt(3.725196850393701, 2.7740157480314958); const xMin = Math.min(limit0[0], limit1[0]); const xMax = Math.max(limit0[0], limit1[0]); const yMin = Math.min(limit0[1], limit1[1]); @@ -158,9 +262,9 @@ renderPCB({ mmPerUnit: 25.4 }) -function SwitchMatrix_2_3_sw(xy, colSpacing=0.5, rowSpacing=0.5, diodeOffset=[0.25, 0]) { +function SwitchDiodeMatrixNeopixels_4_3_sw(xy, colSpacing=0.5, rowSpacing=0.5, diodeOffset=[0.25, 0]) { // Circuit generator params - const ncols = 2 + const ncols = 4 const nrows = 3 // Global params @@ -191,11 +295,11 @@ function SwitchMatrix_2_3_sw(xy, colSpacing=0.5, rowSpacing=0.5, diodeOffset=[0. }) diodePos = [buttonPos[0] + diodeOffset[0], buttonPos[1] + diodeOffset[1]] - obj[`D${1 + xIndex * nrows + yIndex}`] = diode = board.add( + obj[`D${2 + xIndex * nrows + yIndex}`] = diode = board.add( D_SOD_323, { translate: diodePos, rotate: 90, - id: `D${1 + xIndex * nrows + yIndex}` + id: `D${2 + xIndex * nrows + yIndex}` }) // create stub wire for button -> column common line diff --git a/examples/Keyboard/fp-lib-table b/examples/Keyboard/fp-lib-table new file mode 100644 index 000000000..6f02418d3 --- /dev/null +++ b/examples/Keyboard/fp-lib-table @@ -0,0 +1,3 @@ +(fp_lib_table + (lib (name edg)(type KiCad)(uri ${KIPRJMOD}/../edg.pretty)(options "")(descr "")) +) diff --git a/examples/test_keyboard.py b/examples/test_keyboard.py index d7a429587..b7350227b 100644 --- a/examples/test_keyboard.py +++ b/examples/test_keyboard.py @@ -31,7 +31,7 @@ def contents(self) -> None: ImplicitConnect(self.reg.gnd, [Common]), ) as imp: self.mcu = imp.Block(IoController()) - self.connect(self.usb.usb, self.mcu.usb.request()) + (self.usb_esd,), self.usb_chain = self.chain(self.usb.usb, imp.Block(UsbEsdDiode()), self.mcu.usb.request()) # debugging LEDs (self.ledr,), _ = self.chain(imp.Block(IndicatorSinkLed(Led.Red)), self.mcu.gpio.request("led")) @@ -51,6 +51,18 @@ def contents(self) -> None: self.connect(self.mcu.gpio.request("oled_dc"), self.oled.dc) self.connect(self.mcu.gpio.request("oled_reset"), self.oled.reset) + # Vbus 5v DOMAIN + with self.implicit_connect( + ImplicitConnect(self.usb.pwr, [Power]), + ImplicitConnect(self.usb.gnd, [Common]), + ) as imp: + sw_npx = self.sw.with_mixin(SwitchMatrixNeopixels()) + self.connect(self.usb.gnd, sw_npx.npx_gnd) + self.connect(self.usb.pwr, sw_npx.npx_pwr) + (self.npx_shift, self.npx_tp), _ = self.chain( + self.mcu.gpio.request("npx"), imp.Block(L74Ahct1g125()), imp.Block(DigitalTestPoint()), sw_npx.npx_din + ) + @override def refinements(self) -> Refinements: return super().refinements() + Refinements( @@ -58,8 +70,14 @@ def refinements(self) -> Refinements: (IoController, Ch32v203), (LinearRegulator, Ldl1117), (Switch, KailhSocket), + (Neopixel, Sk6812Mini_E), (RotaryEncoder, Pec11s), ], + instance_values=[(["mcu", "pin_assigns"], [])], # TODO pinning: NPX must be SPI MOSI + class_values=[ + # assume LEDs not run at full power to satisfy current limit checks + (Sk6812Mini_E, ["pwr", "current_draw"], Range(0.001, 0.030)), + ], )