diff --git a/edg/BoardCompiler.py b/edg/BoardCompiler.py index 6f901c3a9..c3bf8e422 100644 --- a/edg/BoardCompiler.py +++ b/edg/BoardCompiler.py @@ -19,7 +19,6 @@ def compile_board(design: Type[Block], target_dir_name: Optional[Tuple[str, str] design_filename = os.path.join(target_dir, f'{target_name}.edg') netlist_filename = os.path.join(target_dir, f'{target_name}.net') - netlist_refdes_filename = os.path.join(target_dir, f'{target_name}.ref.net') bom_filename = os.path.join(target_dir, f'{target_name}.csv') svgpcb_filename = os.path.join(target_dir, f'{target_name}.svgpcb.js') @@ -27,8 +26,6 @@ def compile_board(design: Type[Block], target_dir_name: Optional[Tuple[str, str] os.remove(design_filename) with suppress(FileNotFoundError): os.remove(netlist_filename) - with suppress(FileNotFoundError): - os.remove(netlist_refdes_filename) with suppress(FileNotFoundError): os.remove(bom_filename) with suppress(FileNotFoundError): diff --git a/edg/electronics_model/SvgPcbBackend.py b/edg/electronics_model/SvgPcbBackend.py index 0bffd75bb..54f24aa0d 100644 --- a/edg/electronics_model/SvgPcbBackend.py +++ b/edg/electronics_model/SvgPcbBackend.py @@ -14,25 +14,41 @@ class PlacedBlock(NamedTuple): """A placement of a hierarchical block, including the coordinates of its immediate elements. Elements are placed in local space, with (0, 0) as the origin and elements moved as a group. Elements are indexed by name.""" - elts: Dict[str, Tuple[Union['PlacedBlock', TransformUtil.Path], Tuple[float, float]]] # name -> elt, (x, y) + elts: List[Tuple[Union['PlacedBlock', TransformUtil.Path], Tuple[float, float]]] # name -> elt, (x, y) height: float width: float -def arrange_netlist(netlist: Netlist) -> PlacedBlock: +class BlackBoxBlock(NamedTuple): + path: TransformUtil.Path + bbox: Tuple[float, float, float, float] + + +def arrange_blocks(blocks: List[NetBlock], + additional_blocks: List[BlackBoxBlock] = []) -> PlacedBlock: FOOTPRINT_BORDER = 1 # mm BLOCK_BORDER = 2 # mm # create list of blocks by path - block_subblocks: Dict[Tuple[str, ...], Set[str]] = {} - block_footprints: Dict[Tuple[str, ...], List[NetBlock]] = {} + block_subblocks: Dict[Tuple[str, ...], List[str]] = {} # list to maintain sortedness + block_footprints: Dict[Tuple[str, ...], List[Union[NetBlock, BlackBoxBlock]]] = {} # for here, we only group one level deep - for block in netlist.blocks: + for block in blocks: containing_path = block.full_path.blocks[0:min(len(block.full_path.blocks) - 1, 1)] block_footprints.setdefault(containing_path, []).append(block) for i in range(len(containing_path)): - block_subblocks.setdefault(tuple(containing_path[:i]), set()).add(containing_path[i]) + subblocks_list = block_subblocks.setdefault(tuple(containing_path[:i]), list()) + if containing_path[i] not in subblocks_list: + subblocks_list.append(containing_path[i]) + + for blackbox in additional_blocks: + containing_path = blackbox.path.blocks[0:min(len(blackbox.path.blocks) - 1, 1)] + block_footprints.setdefault(containing_path, []).append(blackbox) + for i in range(len(containing_path)): + subblocks_list = block_subblocks.setdefault(tuple(containing_path[:i]), list()) + if containing_path[i] not in subblocks_list: + subblocks_list.append(containing_path[i]) def arrange_hierarchy(root: Tuple[str, ...]) -> PlacedBlock: """Recursively arranges the immediate components of a hierarchy, treating each element @@ -40,27 +56,34 @@ def arrange_hierarchy(root: Tuple[str, ...]) -> PlacedBlock: # TODO don't count borders as part of a block's width / height ASPECT_RATIO = 16 / 9 - sub_placed: List[Tuple[str, float, float, Union[PlacedBlock, NetBlock]]] = [] # (name, width, height, PlacedBlock or footprint) - for subblock in block_subblocks.get(root, set()): + sub_placed: List[Tuple[float, float, Union[PlacedBlock, NetBlock, BlackBoxBlock]]] = [] # (width, height, entry) + for subblock in block_subblocks.get(root, list()): subplaced = arrange_hierarchy(root + (subblock,)) - sub_placed.append((subblock, subplaced.width + BLOCK_BORDER, subplaced.height + BLOCK_BORDER, subplaced)) + sub_placed.append((subplaced.width + BLOCK_BORDER, subplaced.height + BLOCK_BORDER, subplaced)) for footprint in block_footprints.get(root, []): - bbox = FootprintDataTable.bbox_of(footprint.footprint) or (1, 1, 1, 1) + if isinstance(footprint, NetBlock): + bbox = FootprintDataTable.bbox_of(footprint.footprint) or (1, 1, 1, 1) + entry: Union[PlacedBlock, NetBlock, BlackBoxBlock] = footprint + elif isinstance(footprint, BlackBoxBlock): + bbox = footprint.bbox + entry = footprint + else: + raise TypeError() width = bbox[2] - bbox[0] + FOOTPRINT_BORDER height = bbox[3] - bbox[1] + FOOTPRINT_BORDER # use refdes as key so it's globally unique, for when this is run with blocks grouped together - sub_placed.append((footprint.refdes, width, height, footprint)) + sub_placed.append((width, height, entry)) - total_area = sum(width * height for _, width, height, _ in sub_placed) + total_area = sum(width * height for width, height, _ in sub_placed) max_width = math.sqrt(total_area * ASPECT_RATIO) x_max = 0.0 y_max = 0.0 # track the y limits and y position of the prior elements x_stack: List[Tuple[float, float, float]] = [] # [(x pos of next, y pos, y limit)] - elts: Dict[str, Tuple[Union[PlacedBlock, TransformUtil.Path], Tuple[float, float]]] = {} - for name, width, height, entry in sorted(sub_placed, key=lambda x: -x[2]): # by height + elts: List[Tuple[Union[PlacedBlock, TransformUtil.Path], Tuple[float, float]]] = [] + for width, height, entry in sorted(sub_placed, key=lambda x: -x[1]): # by height if not x_stack: # only on first component next_y = 0.0 else: @@ -83,10 +106,13 @@ def arrange_hierarchy(root: Tuple[str, ...]) -> PlacedBlock: next_x = x_stack[-1][0] if isinstance(entry, PlacedBlock): # assumed (0, 0) at top left - elts[name] = (entry, (next_x, next_y)) + elts.append((entry, (next_x, next_y))) elif isinstance(entry, NetBlock): # account for footprint origin, flipping y-axis bbox = FootprintDataTable.bbox_of(entry.footprint) or (0, 0, 0, 0) - elts[name] = (entry.full_path, (next_x - bbox[0], next_y + bbox[3])) + elts.append((entry.full_path, (next_x - bbox[0], next_y + bbox[3]))) + elif isinstance(entry, BlackBoxBlock): # account for footprint origin, flipping y-axis + bbox = entry.bbox + elts.append((entry.path, (next_x - bbox[0], next_y - bbox[0]))) x_stack.append((next_x + width, next_y, next_y + height)) x_max = max(x_max, next_x + width) y_max = max(y_max, next_y + height) @@ -100,7 +126,7 @@ def flatten_packed_block(block: PlacedBlock) -> Dict[TransformUtil.Path, Tuple[f """Flatten a packed_block to a dict of individual components.""" flattened: Dict[TransformUtil.Path, Tuple[float, float]] = {} def walk_group(block: PlacedBlock, x_pos: float, y_pos: float) -> None: - for _, (elt, (elt_x, elt_y)) in block.elts.items(): + for elt, (elt_x, elt_y) in block.elts: if isinstance(elt, PlacedBlock): walk_group(elt, x_pos + elt_x, y_pos + elt_y) elif isinstance(elt, TransformUtil.Path): @@ -115,6 +141,7 @@ class SvgPcbGeneratedBlock(NamedTuple): path: TransformUtil.Path fn_name: str svgpcb_code: str + bbox: Tuple[float, float, float, float] class SvgPcbTransform(TransformUtil.Transform): @@ -138,7 +165,7 @@ def visit_block(self, context: TransformUtil.TransformContext, block: edgir.Bloc generator_obj = cls() generator_obj._svgpcb_init(context.path, self.design, self.netlist) self._svgpcb_blocks.append(SvgPcbGeneratedBlock( - context.path, generator_obj._svgpcb_fn_name(), generator_obj._svgpcb_template() + context.path, generator_obj._svgpcb_fn_name(), generator_obj._svgpcb_template(), generator_obj._svgpcb_bbox() )) else: pass @@ -168,35 +195,51 @@ def filter_blocks_by_pathname(blocks: List[NetBlock], exclude_prefixes: List[Tup return [block for block in blocks if not block_matches_prefixes(block, exclude_prefixes)] + # handle blocks with svgpcb templates svgpcb_blocks = SvgPcbTransform(design, netlist).run() - svgpcb_block_prefixes = [block.path.to_tuple() for block in svgpcb_blocks] + svgpcb_block_bboxes = [BlackBoxBlock(block.path, block.bbox) for block in svgpcb_blocks] + + # handle footprints netlist = NetlistTransform(design).run() + svgpcb_block_prefixes = [block.path.to_tuple() for block in svgpcb_blocks] other_blocks = filter_blocks_by_pathname(netlist.blocks, svgpcb_block_prefixes) - arranged_blocks = arrange_netlist(netlist) + arranged_blocks = arrange_blocks(other_blocks, svgpcb_block_bboxes) pos_dict = flatten_packed_block(arranged_blocks) - svgpcb_block_instantiations = [ - f"const {SvgPcbTemplateBlock._svgpcb_pathname_to_svgpcb(block.path)} = {block.fn_name}(pt(0, 0))" - for block in svgpcb_blocks - ] + # note, dimensions in inches, divide by 25.4 to convert from mm + svgpcb_block_instantiations = [] + for svgpcb_block in svgpcb_blocks: + x_pos, y_pos = pos_dict.get(svgpcb_block.path, (0, 0)) # in mm, need to convert to in below + block_code = f"const {SvgPcbTemplateBlock._svgpcb_pathname_to_svgpcb(svgpcb_block.path)} = {svgpcb_block.fn_name}(pt({x_pos/25.4:.3f}, {y_pos/25.4:.3f}))" + svgpcb_block_instantiations.append(block_code) - # note, dimensions in inches other_block_instantiations = [] - for block in other_blocks: - x_pos, y_pos = pos_dict.get(block.full_path, (0, 0)) # in mm, need to convert to in below + for net_block in other_blocks: + x_pos, y_pos = pos_dict.get(net_block.full_path, (0, 0)) # in mm, need to convert to in below block_code = f"""\ -const {SvgPcbTemplateBlock._svgpcb_pathname_to_svgpcb(block.full_path)} = board.add({SvgPcbTemplateBlock._svgpcb_footprint_to_svgpcb(block.footprint)}, {{ +// {net_block.full_path} +const {net_block.refdes} = board.add({SvgPcbTemplateBlock._svgpcb_footprint_to_svgpcb(net_block.footprint)}, {{ translate: pt({x_pos/25.4:.3f}, {y_pos/25.4:.3f}), rotate: 0, - id: '{SvgPcbTemplateBlock._svgpcb_pathname_to_svgpcb(block.full_path)}' + id: '{net_block.refdes}' }})""" other_block_instantiations.append(block_code) + net_blocks_by_path = {net_block.full_path: net_block for net_block in netlist.blocks} + netlist_code_entries = [] + for net in netlist.nets: + pads_code = [f"""["{net_blocks_by_path[pin.block_path].refdes}", "{pin.pin_name}"]""" for pin in net.pins] + netlist_code_entries.append(f"""{{name: "{net.name}", pads: [{', '.join(pads_code)}]}}""") + NEWLINE = '\n' full_code = f"""\ const board = new PCB(); {NEWLINE.join(svgpcb_block_instantiations + other_block_instantiations)} +board.setNetlist([ + {("," + NEWLINE + " ").join(netlist_code_entries)} +]) + const limit0 = pt(-{2/25.4}, -{2/25.4}); const limit1 = pt({arranged_blocks.width/25.4}, {arranged_blocks.height/25.4}); const xMin = Math.min(limit0[0], limit1[0]); diff --git a/edg/electronics_model/SvgPcbTemplateBlock.py b/edg/electronics_model/SvgPcbTemplateBlock.py index 2ff670a9a..b14fe6b8c 100644 --- a/edg/electronics_model/SvgPcbTemplateBlock.py +++ b/edg/electronics_model/SvgPcbTemplateBlock.py @@ -1,4 +1,4 @@ -from typing import Optional, Any, List +from typing import Optional, Any, List, Tuple from abc import abstractmethod from ..core import * @@ -33,26 +33,38 @@ def _svgpcb_pathname(self) -> str: """Infrastructure method, returns the pathname for this Block as a JS-code-friendly string.""" return self._svgpcb_pathname_to_svgpcb(self._svgpcb_pathname_data) - def _svgpcb_get(self, param: ConstraintExpr[Any, Any]) -> Optional[str]: - """Infrastructure method, returns the value of the ConstraintExpr as a JS literal. - Ranges are mapped to a two-element list.""" + def _svgpcb_get(self, param: ConstraintExpr[Any, Any]) -> Any: + """Infrastructure method, returns the value of the ConstraintExpr. Asserts out if the value isn't available""" param_path = self._svgpcb_ref_map.get(param, None) - if param_path is None: - return None + assert param_path is not None param_val = self._svgpcb_design.get_value(param_path) - if param_val is None: - return None - # TODO structure the output to be JS-friendly - return str(param_val) - - def _svgpcb_footprint_block_path_of(self, block_ref: List[str]) -> Optional[TransformUtil.Path]: - """Infrastructure method, given the name of a container block, returns the block path of the footprint block - if there is exactly one. Otherwise, returns None.""" + assert param_val is not None + return param_val + + def _svgpcb_refdes_of(self, block_ref: List[str]) -> Tuple[str, int]: + """Returns the refdes of a block, as a tuple of prefix and number, + or crashes if the block is not valid.""" block_path = self._svgpcb_pathname_data.append_block(*block_ref) candidate_blocks = [block for block in self._svgpcb_netlist.blocks if block.full_path.startswith(block_path)] - if len(candidate_blocks) != 1: - return None + assert len(candidate_blocks) == 1 + refdes = candidate_blocks[0].refdes + assert isinstance(refdes, str) + assert refdes is not None + for i in reversed(range(len(refdes))): # split between letter and numeric parts + if refdes[i].isalpha(): + if i == len(refdes) - 1: + return refdes, -1 # fallback if no numeric portion + return refdes[:i+1], int(refdes[i+1:]) + return "", int(refdes) + + def _svgpcb_footprint_block_path_of(self, block_ref: List[str]) -> TransformUtil.Path: + """Infrastructure method, given the name of a container block, returns the block path of the footprint block. + Asserts there is exactly one.""" + block_path = self._svgpcb_pathname_data.append_block(*block_ref) + candidate_blocks = [block for block in self._svgpcb_netlist.blocks + if block.full_path.startswith(block_path)] + assert len(candidate_blocks) == 1 return candidate_blocks[0].full_path def _svgpcb_footprint_of(self, path: TransformUtil.Path) -> str: @@ -63,18 +75,17 @@ def _svgpcb_footprint_of(self, path: TransformUtil.Path) -> str: assert len(candidate_blocks) == 1 return self._svgpcb_footprint_to_svgpcb(candidate_blocks[0].footprint) - def _svgpcb_pin_of(self, block_ref: List[str], pin_ref: List[str], footprint_path: TransformUtil.Path) -> Optional[str]: + def _svgpcb_pin_of(self, block_ref: List[str], pin_ref: List[str]) -> str: """Infrastructure method, given a footprint path from _svgpcb_footprint_block_path_of and a port that should - be connected to one of its pins, returns the footprint pin that the port is connected to, if any.""" - port_path = self._svgpcb_pathname_data.append_block(*block_ref).append_port(*pin_ref) + be connected to one of its pins, returns the footprint pin that the port is connected to.""" + footprint_path = self._svgpcb_footprint_block_path_of(block_ref) + port_path = footprint_path.append_port(*pin_ref) candidate_nets = [net for net in self._svgpcb_netlist.nets if port_path in net.ports] - if len(candidate_nets) != 1: - return None + assert len(candidate_nets) == 1 candidate_pins = [pin for pin in candidate_nets[0].pins if pin.block_path == footprint_path] - if len(candidate_pins) != 1: - return None + assert len(candidate_pins) == 1 return candidate_pins[0].pin_name def _svgpcb_fn_name_adds(self) -> Optional[str]: @@ -90,6 +101,10 @@ def _svgpcb_fn_name(self) -> str: else: return f"""{self.__class__.__name__}_{self._svgpcb_pathname()}""" + def _svgpcb_bbox(self) -> Tuple[float, float, float, float]: + """Returns the bounding box (xmin, ymin, xmax, ymax) in mm of the svgpcb layout with default parameters.""" + return 0.0, 0.0, 1.0, 1.0 + @abstractmethod def _svgpcb_template(self) -> str: """IMPLEMENT ME. Returns the SVGPCB layout template code as JS function named _svgpcb_fn_name. diff --git a/edg/electronics_model/test_partplacer.py b/edg/electronics_model/test_partplacer.py index 9d8e1a0ef..b0a9838c8 100644 --- a/edg/electronics_model/test_partplacer.py +++ b/edg/electronics_model/test_partplacer.py @@ -1,8 +1,8 @@ import unittest from . import TransformUtil -from .NetlistGenerator import Netlist, NetBlock -from .SvgPcbBackend import arrange_netlist, flatten_packed_block, PlacedBlock +from .NetlistGenerator import NetBlock +from .SvgPcbBackend import arrange_blocks, flatten_packed_block, PlacedBlock, BlackBoxBlock class PartPlacerTestCase(unittest.TestCase): @@ -19,17 +19,16 @@ def test_placement(self): footprint="Resistor_SMD:R_0603_1608Metric", refdes="R2", part="", value="", full_path=TransformUtil.Path.empty().append_block("R2"), path=[], class_path=[] ) - netlist = Netlist( - blocks=[u1, r1, r2], - nets=[] - ) - arranged = arrange_netlist(netlist) - self.assertAlmostEqual(arranged.elts["U1"][1][0], 5.15, places=2) - self.assertAlmostEqual(arranged.elts["U1"][1][1], 5.15, places=2) - self.assertAlmostEqual(arranged.elts["R1"][1][0], 12.78, places=2) - self.assertAlmostEqual(arranged.elts["R1"][1][1], 0.73, places=2) - self.assertAlmostEqual(arranged.elts["R2"][1][0], 12.78, places=2) - self.assertAlmostEqual(arranged.elts["R2"][1][1], 3.19, places=2) + arranged = arrange_blocks([u1, r1, r2]) + self.assertEqual(arranged.elts[0][0], TransformUtil.Path.empty().append_block("U1")) + self.assertAlmostEqual(arranged.elts[0][1][0], 5.15, places=2) + self.assertAlmostEqual(arranged.elts[0][1][1], 5.15, places=2) + self.assertEqual(arranged.elts[1][0], TransformUtil.Path.empty().append_block("R1")) + self.assertAlmostEqual(arranged.elts[1][1][0], 12.78, places=2) + self.assertAlmostEqual(arranged.elts[1][1][1], 0.73, places=2) + self.assertEqual(arranged.elts[2][0], TransformUtil.Path.empty().append_block("R2")) + self.assertAlmostEqual(arranged.elts[2][1][0], 12.78, places=2) + self.assertAlmostEqual(arranged.elts[2][1][1], 3.19, places=2) def test_placement_hierarchical(self): u1 = NetBlock( @@ -48,27 +47,27 @@ def test_placement_hierarchical(self): footprint="Resistor_SMD:R_0603_1608Metric", refdes="R3", part="", value="", full_path=TransformUtil.Path.empty().append_block('B').append_block("R3"), path=[], class_path=[] ) - netlist = Netlist( - blocks=[u1, r1, r2, r3], - nets=[] - ) - arranged = arrange_netlist(netlist) + arranged = arrange_blocks([u1, r1, r2, r3]) - self.assertAlmostEqual(arranged.elts['A'][1][0], 0, places=2) - self.assertAlmostEqual(arranged.elts['A'][1][1], 0, places=2) - assert isinstance(arranged.elts['A'][0], PlacedBlock) - self.assertAlmostEqual(arranged.elts['A'][0].elts["U1"][1][0], 5.15, places=2) - self.assertAlmostEqual(arranged.elts['A'][0].elts["U1"][1][1], 5.15, places=2) - self.assertAlmostEqual(arranged.elts['A'][0].elts["R1"][1][0], 12.78, places=2) - self.assertAlmostEqual(arranged.elts['A'][0].elts["R1"][1][1], 0.73, places=2) - self.assertAlmostEqual(arranged.elts['A'][0].elts["R2"][1][0], 12.78, places=2) - self.assertAlmostEqual(arranged.elts['A'][0].elts["R2"][1][1], 3.19, places=2) + self.assertAlmostEqual(arranged.elts[0][1][0], 0, places=2) + self.assertAlmostEqual(arranged.elts[0][1][1], 0, places=2) + assert isinstance(arranged.elts[0][0], PlacedBlock) + self.assertEqual(arranged.elts[0][0].elts[0][0], TransformUtil.Path.empty().append_block("A").append_block("U1")) + self.assertAlmostEqual(arranged.elts[0][0].elts[0][1][0], 5.15, places=2) + self.assertAlmostEqual(arranged.elts[0][0].elts[0][1][1], 5.15, places=2) + self.assertEqual(arranged.elts[0][0].elts[1][0], TransformUtil.Path.empty().append_block("A").append_block("R1")) + self.assertAlmostEqual(arranged.elts[0][0].elts[1][1][0], 12.78, places=2) + self.assertAlmostEqual(arranged.elts[0][0].elts[1][1][1], 0.73, places=2) + self.assertEqual(arranged.elts[0][0].elts[2][0], TransformUtil.Path.empty().append_block("A").append_block("R2")) + self.assertAlmostEqual(arranged.elts[0][0].elts[2][1][0], 12.78, places=2) + self.assertAlmostEqual(arranged.elts[0][0].elts[2][1][1], 3.19, places=2) - self.assertAlmostEqual(arranged.elts['B'][1][0], 0, places=2) - self.assertAlmostEqual(arranged.elts['B'][1][1], 13.3, places=2) - assert isinstance(arranged.elts['B'][0], PlacedBlock) - self.assertAlmostEqual(arranged.elts['B'][0].elts["R3"][1][0], 1.48, places=2) - self.assertAlmostEqual(arranged.elts['B'][0].elts["R3"][1][1], 0.73, places=2) + self.assertAlmostEqual(arranged.elts[1][1][0], 0, places=2) + self.assertAlmostEqual(arranged.elts[1][1][1], 13.3, places=2) + assert isinstance(arranged.elts[1][0], PlacedBlock) + self.assertEqual(arranged.elts[1][0].elts[0][0], TransformUtil.Path.empty().append_block("B").append_block("R3")) + self.assertAlmostEqual(arranged.elts[1][0].elts[0][1][0], 1.48, places=2) + self.assertAlmostEqual(arranged.elts[1][0].elts[0][1][1], 0.73, places=2) flattened = flatten_packed_block(arranged) self.assertAlmostEqual(flattened[TransformUtil.Path.empty().append_block('A').append_block('U1')][0], 5.15, places=2) @@ -77,3 +76,24 @@ def test_placement_hierarchical(self): self.assertAlmostEqual(flattened[TransformUtil.Path.empty().append_block('A').append_block('R1')][1], 0.73, places=2) self.assertAlmostEqual(flattened[TransformUtil.Path.empty().append_block('B').append_block('R3')][0], 1.48, places=2) self.assertAlmostEqual(flattened[TransformUtil.Path.empty().append_block('B').append_block('R3')][1], 14.03, places=2) + + def test_placement_bbox(self): + r1 = NetBlock( + footprint="Resistor_SMD:R_0603_1608Metric", refdes="R1", part="", value="", + full_path=TransformUtil.Path.empty().append_block("R1"), path=[], class_path=[] + ) + r2 = NetBlock( + footprint="Resistor_SMD:R_0603_1608Metric", refdes="R2", part="", value="", + full_path=TransformUtil.Path.empty().append_block("R2"), path=[], class_path=[] + ) + arranged = arrange_blocks([r1, r2], + [BlackBoxBlock(TransformUtil.Path.empty().append_block("box"), (-5, -5, 5, 5))]) + self.assertEqual(arranged.elts[0][0], TransformUtil.Path.empty().append_block("box")) + self.assertAlmostEqual(arranged.elts[0][1][0], 5, places=2) + self.assertAlmostEqual(arranged.elts[0][1][1], 5, places=2) + self.assertEqual(arranged.elts[1][0], TransformUtil.Path.empty().append_block("R1")) + self.assertAlmostEqual(arranged.elts[1][1][0], 12.48, places=2) + self.assertAlmostEqual(arranged.elts[1][1][1], 0.73, places=2) + self.assertEqual(arranged.elts[2][0], TransformUtil.Path.empty().append_block("R2")) + self.assertAlmostEqual(arranged.elts[2][1][0], 12.48, places=2) + self.assertAlmostEqual(arranged.elts[2][1][1], 3.19, places=2) \ No newline at end of file diff --git a/edg/parts/LedMatrix.py b/edg/parts/LedMatrix.py index 63c251635..33b4cd22f 100644 --- a/edg/parts/LedMatrix.py +++ b/edg/parts/LedMatrix.py @@ -1,5 +1,5 @@ from ..abstract_parts import * -from typing import Dict, Optional +from typing import Dict, Optional, Tuple class CharlieplexedLedMatrix(Light, GeneratorBlock, SvgPcbTemplateBlock): @@ -15,17 +15,19 @@ def _svgpcb_fn_name_adds(self) -> Optional[str]: def _svgpcb_template(self) -> str: led_block = self._svgpcb_footprint_block_path_of(['led[0_0]']) res_block = self._svgpcb_footprint_block_path_of(['res[0]']) + led_reftype, led_refnum = self._svgpcb_refdes_of(['led[0_0]']) + res_reftype, res_refnum = self._svgpcb_refdes_of(['res[0]']) assert led_block is not None and res_block is not None led_footprint = self._svgpcb_footprint_of(led_block) - led_a_pin = self._svgpcb_pin_of(['led[0_0]'], ['a'], led_block) - led_k_pin = self._svgpcb_pin_of(['led[0_0]'], ['k'], led_block) + led_a_pin = self._svgpcb_pin_of(['led[0_0]'], ['a']) + led_k_pin = self._svgpcb_pin_of(['led[0_0]'], ['k']) res_footprint = self._svgpcb_footprint_of(res_block) - res_a_pin = self._svgpcb_pin_of(['res[0]'], ['a'], res_block) - res_b_pin = self._svgpcb_pin_of(['res[0]'], ['b'], res_block) + res_a_pin = self._svgpcb_pin_of(['res[0]'], ['a']) + res_b_pin = self._svgpcb_pin_of(['res[0]'], ['b']) assert all([pin is not None for pin in [led_a_pin, led_k_pin, res_a_pin, res_b_pin]]) return f"""\ -function {self._svgpcb_fn_name()}(xy, colSpacing=1, rowSpacing=1) {{ +function {self._svgpcb_fn_name()}(xy, colSpacing=0.2, rowSpacing=0.2) {{ const kXCount = {self._svgpcb_get(self.ncols)} // number of columns (x dimension) const kYCount = {self._svgpcb_get(self.nrows)} // number of rows (y dimension) @@ -51,9 +53,9 @@ def _svgpcb_template(self) -> str: for (let xIndex=0; xIndex < kXCount; xIndex++) {{ ledPos = [xy[0] + colSpacing * xIndex, xy[1] + rowSpacing * yIndex] - obj.footprints[`led[${{yIndex}}_${{xIndex}}]`] = led = board.add({led_footprint}, {{ + obj.footprints[`{led_reftype}${{{led_refnum} + yIndex + xIndex * kYCount}}`] = led = board.add({led_footprint}, {{ translate: ledPos, - id: `{self._svgpcb_pathname()}_led_${{yIndex}}_${{xIndex}}_` + id: `{led_reftype}${{{led_refnum} + yIndex + xIndex * kYCount}}` }}) rowLeds.push(led) @@ -98,9 +100,9 @@ def _svgpcb_template(self) -> str: allResistors = [] for (let xIndex=0; xIndex < kXCount; xIndex++) {{ const resPos = [xy[0] + colSpacing * xIndex, xy[1] + rowSpacing * kYCount] - obj.footprints[`res[${{xIndex + 1}}]`] = res = board.add({res_footprint}, {{ + obj.footprints[`{res_reftype}${{{res_refnum} + xIndex + 1}}`] = res = board.add({res_footprint}, {{ translate: resPos, - id: `{self._svgpcb_pathname()}_res_${{xIndex + 1}}_` + id: `{res_reftype}${{{res_refnum} + xIndex}}` }}) allResistors.push(res) @@ -158,6 +160,10 @@ def _svgpcb_template(self) -> str: }} """ + def _svgpcb_bbox(self) -> Tuple[float, float, float, float]: + return (-1.0, -1.0, + self._svgpcb_get(self.ncols) * .2 * 25.4 + 1.0, (self._svgpcb_get(self.nrows) + 1) * .2 * 25.4 + 1.0) + @init_in_parent def __init__(self, nrows: IntLike, ncols: IntLike, color: LedColorLike = Led.Any, current_draw: RangeLike = (1, 10)*mAmp): diff --git a/edg/parts/Neopixel.py b/edg/parts/Neopixel.py index ea6d72417..70a62324a 100644 --- a/edg/parts/Neopixel.py +++ b/edg/parts/Neopixel.py @@ -1,4 +1,4 @@ -from typing import Optional +from typing import Optional, Tuple from ..abstract_parts import * from .JlcPart import JlcPart @@ -191,12 +191,13 @@ def _svgpcb_fn_name_adds(self) -> Optional[str]: def _svgpcb_template(self) -> str: led_block = self._svgpcb_footprint_block_path_of(['led[0]']) + led_reftype, led_refnum = self._svgpcb_refdes_of(['led[0]']) assert led_block is not None led_footprint = self._svgpcb_footprint_of(led_block) - led_vdd_pin = self._svgpcb_pin_of(['led[0]'], ['vdd'], led_block) - led_gnd_pin = self._svgpcb_pin_of(['led[0]'], ['gnd'], led_block) - led_din_pin = self._svgpcb_pin_of(['led[0]'], ['din'], led_block) - led_dout_pin = self._svgpcb_pin_of(['led[0]'], ['dout'], led_block) + led_vdd_pin = self._svgpcb_pin_of(['led[0]'], ['vdd']) + led_gnd_pin = self._svgpcb_pin_of(['led[0]'], ['gnd']) + led_din_pin = self._svgpcb_pin_of(['led[0]'], ['din']) + led_dout_pin = self._svgpcb_pin_of(['led[0]'], ['dout']) assert all([pin is not None for pin in [led_vdd_pin, led_gnd_pin, led_din_pin, led_dout_pin]]) return f"""\ @@ -269,10 +270,10 @@ def _svgpcb_template(self) -> str: for (i=0; i str: return obj }} """ + + def _svgpcb_bbox(self) -> Tuple[float, float, float, float]: + return -25.4 - 1.0, -25.4 - 1.0, 25.4 + 1.0, 25.4 + 1.0 diff --git a/edg/parts/SwitchMatrix.py b/edg/parts/SwitchMatrix.py index 0ceab0e45..168a67874 100644 --- a/edg/parts/SwitchMatrix.py +++ b/edg/parts/SwitchMatrix.py @@ -1,4 +1,4 @@ -from typing import cast, Optional +from typing import cast, Optional, Tuple from ..abstract_parts import * @@ -20,17 +20,19 @@ def _svgpcb_fn_name_adds(self) -> Optional[str]: 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]']) 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_block) - switch_com_pin = self._svgpcb_pin_of(['sw[0,0]'], ['com'], switch_block) + switch_sw_pin = self._svgpcb_pin_of(['sw[0,0]'], ['sw']) + switch_com_pin = self._svgpcb_pin_of(['sw[0,0]'], ['com']) diode_footprint = self._svgpcb_footprint_of(diode_block) - diode_a_pin = self._svgpcb_pin_of(['d[0,0]'], ['anode'], diode_block) - diode_k_pin = self._svgpcb_pin_of(['d[0,0]'], ['cathode'], diode_block) + diode_a_pin = self._svgpcb_pin_of(['d[0,0]'], ['anode']) + diode_k_pin = self._svgpcb_pin_of(['d[0,0]'], ['cathode']) assert all([pin is not None for pin in [switch_sw_pin, switch_com_pin, diode_a_pin, diode_k_pin]]) return f"""\ -function {self._svgpcb_fn_name()}(xy, colSpacing=1, rowSpacing=1, diodeOffset=[0.25, 0]) {{ +function {self._svgpcb_fn_name()}(xy, colSpacing=0.5, rowSpacing=0.5, diodeOffset=[0.25, 0]) {{ // Circuit generator params const ncols = {self._svgpcb_get(self.ncols)} const nrows = {self._svgpcb_get(self.nrows)} @@ -55,19 +57,19 @@ def _svgpcb_template(self) -> str: index = yIndex * ncols + xIndex + 1 buttonPos = [xy[0] + colSpacing * xIndex, xy[1] + rowSpacing * yIndex] - obj.footprints[`sw[${{xIndex}},${{yIndex}}]`] = button = board.add( + obj.footprints[`{switch_reftype}${{{switch_refnum} + xIndex * nrows + yIndex}}`] = button = board.add( {switch_footprint}, {{ translate: buttonPos, rotate: 0, - id: `{self._svgpcb_pathname()}_sw_${{xIndex}}_${{yIndex}}_` + id: `{switch_reftype}${{{switch_refnum} + xIndex * nrows + yIndex}}` }}) diodePos = [buttonPos[0] + diodeOffset[0], buttonPos[1] + diodeOffset[1]] - obj[`d[${{xIndex}},${{yIndex}}]`] = diode = board.add( + obj[`{diode_reftype}${{{diode_refnum} + xIndex * nrows + yIndex}}`] = diode = board.add( {diode_footprint}, {{ translate: diodePos, rotate: 90, - id: `{self._svgpcb_pathname()}_d_${{xIndex}}_${{yIndex}}_` + id: `{diode_reftype}${{{diode_refnum} + xIndex * nrows + yIndex}}` }}) // create stub wire for button -> column common line @@ -101,6 +103,10 @@ def _svgpcb_template(self) -> str: }} """ + def _svgpcb_bbox(self) -> Tuple[float, float, float, float]: + return (-1.0, -1.0, + self._svgpcb_get(self.ncols) * 0.5 * 25.4 + 1.0, (self._svgpcb_get(self.nrows) + 1) * .5 * 25.4 + 1.0) + @init_in_parent def __init__(self, nrows: IntLike, ncols: IntLike, voltage_drop: RangeLike = (0, 0.7)*Volt): super().__init__() diff --git a/examples/BasicKeyboard/BasicKeyboard.svgpcb.js b/examples/BasicKeyboard/BasicKeyboard.svgpcb.js index ddaeaedd2..18fddb8af 100644 --- a/examples/BasicKeyboard/BasicKeyboard.svgpcb.js +++ b/examples/BasicKeyboard/BasicKeyboard.svgpcb.js @@ -1,13 +1,31 @@ const board = new PCB(); -const sw = SwitchMatrix_2_3_sw(pt(0, 0)) -const mcu = board.add(XIAO_RP2040_SMD, { - translate: pt(0.348, 1.824), rotate: 0, - id: 'mcu' +const sw = SwitchMatrix_2_3_sw(pt(0.039, 0.039)) +// mcu +const U1 = board.add(XIAO_RP2040_SMD, { + translate: pt(1.466, 0.410), rotate: 0, + id: 'U1' }) +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.pwr_out", pads: [["U1", "12"]]}, + {name: "mcu.gnd", pads: [["U1", "13"]]}, + {name: "mcu.vusb_out", pads: [["U1", "14"]]}, + {name: "sw.d[0,0].cathode", pads: [["D1", "1"], ["SW1", "1"]]}, + {name: "sw.d[0,1].cathode", pads: [["D2", "1"], ["SW2", "1"]]}, + {name: "sw.d[0,2].cathode", pads: [["D3", "1"], ["SW3", "1"]]}, + {name: "sw.d[1,0].cathode", pads: [["D4", "1"], ["SW4", "1"]]}, + {name: "sw.d[1,1].cathode", pads: [["D5", "1"], ["SW5", "1"]]}, + {name: "sw.d[1,2].cathode", pads: [["D6", "1"], ["SW6", "1"]]} +]) + const limit0 = pt(-0.07874015748031496, -0.07874015748031496); -const limit1 = pt(2.039370078740158, 2.3332677165354334); +const limit1 = pt(1.85748031496063, 2.1181102362204722); const xMin = Math.min(limit0[0], limit1[0]); const xMax = Math.max(limit0[0], limit1[0]); const yMin = Math.min(limit0[1], limit1[1]); @@ -44,7 +62,7 @@ renderPCB({ mmPerUnit: 25.4 }) -function SwitchMatrix_2_3_sw(xy, colSpacing=1, rowSpacing=1, diodeOffset=[0.25, 0]) { +function SwitchMatrix_2_3_sw(xy, colSpacing=0.5, rowSpacing=0.5, diodeOffset=[0.25, 0]) { // Circuit generator params const ncols = 2 const nrows = 3 @@ -69,19 +87,19 @@ function SwitchMatrix_2_3_sw(xy, colSpacing=1, rowSpacing=1, diodeOffset=[0.25, index = yIndex * ncols + xIndex + 1 buttonPos = [xy[0] + colSpacing * xIndex, xy[1] + rowSpacing * yIndex] - obj.footprints[`sw[${xIndex},${yIndex}]`] = button = board.add( + obj.footprints[`SW${1 + xIndex * nrows + yIndex}`] = button = board.add( SW_Hotswap_Kailh_MX, { translate: buttonPos, rotate: 0, - id: `sw_sw_${xIndex}_${yIndex}_` + id: `SW${1 + xIndex * nrows + yIndex}` }) diodePos = [buttonPos[0] + diodeOffset[0], buttonPos[1] + diodeOffset[1]] - obj[`d[${xIndex},${yIndex}]`] = diode = board.add( + obj[`D${1 + xIndex * nrows + yIndex}`] = diode = board.add( D_SOD_323, { translate: diodePos, rotate: 90, - id: `sw_d_${xIndex}_${yIndex}_` + id: `D${1 + xIndex * nrows + yIndex}` }) // create stub wire for button -> column common line diff --git a/examples/BldcController/BldcController.svgpcb.js b/examples/BldcController/BldcController.svgpcb.js index dba6eb50d..87b1d95a2 100644 --- a/examples/BldcController/BldcController.svgpcb.js +++ b/examples/BldcController/BldcController.svgpcb.js @@ -1,304 +1,429 @@ const board = new PCB(); -const jlc_th_th1 = board.add(JlcToolingHole_1_152mm, { - translate: pt(0.235, 1.763), rotate: 0, - id: 'jlc_th_th1' -}) -const jlc_th_th2 = board.add(JlcToolingHole_1_152mm, { - translate: pt(0.274, 1.763), rotate: 0, - id: 'jlc_th_th2' -}) -const jlc_th_th3 = board.add(JlcToolingHole_1_152mm, { - translate: pt(0.235, 1.802), rotate: 0, - id: 'jlc_th_th3' -}) -const mcu = board.add(FEATHERWING_NODIM, { - translate: pt(0.392, 1.763), rotate: 0, - id: 'mcu' -}) -const motor_pwr_conn = board.add(JST_PH_B2B_PH_K_1x02_P2_00mm_Vertical, { - translate: pt(0.096, 1.286), rotate: 0, - id: 'motor_pwr_conn' +// jlc_th.th1 +const H1 = board.add(JlcToolingHole_1_152mm, { + translate: pt(0.485, 1.763), rotate: 0, + id: 'H1' +}) +// jlc_th.th2 +const H2 = board.add(JlcToolingHole_1_152mm, { + translate: pt(0.524, 1.763), rotate: 0, + id: 'H2' +}) +// jlc_th.th3 +const H3 = board.add(JlcToolingHole_1_152mm, { + translate: pt(0.485, 1.803), rotate: 0, + id: 'H3' +}) +// mcu +const U1 = board.add(FEATHERWING_NODIM, { + translate: pt(0.643, 1.763), rotate: 0, + id: 'U1' +}) +// motor_pwr.conn +const J1 = board.add(JST_PH_B2B_PH_K_1x02_P2_00mm_Vertical, { + translate: pt(2.135, 0.937), rotate: 0, + id: 'J1' }) -const sw1_package = board.add(SW_SPST_SKQG_WithoutStem, { +// sw1.package +const SW1 = board.add(SW_SPST_SKQG_WithoutStem, { translate: pt(1.753, 0.919), rotate: 0, - id: 'sw1_package' -}) -const ledr_package = board.add(LED_0603_1608Metric, { - translate: pt(1.872, 1.185), rotate: 0, - id: 'ledr_package' -}) -const ledr_res = board.add(R_0603_1608Metric, { - translate: pt(1.872, 1.282), rotate: 0, - id: 'ledr_res' -}) -const ledg_package = board.add(LED_0603_1608Metric, { - translate: pt(2.342, 1.185), rotate: 0, - id: 'ledg_package' -}) -const ledg_res = board.add(R_0603_1608Metric, { - translate: pt(2.341, 1.282), rotate: 0, - id: 'ledg_res' -}) -const ledb_package = board.add(LED_0603_1608Metric, { - translate: pt(2.107, 1.185), rotate: 0, - id: 'ledb_package' + id: 'SW1' +}) +// ledr.package +const D1 = board.add(LED_0603_1608Metric, { + translate: pt(1.951, 1.185), rotate: 0, + id: 'D1' +}) +// ledr.res +const R1 = board.add(R_0603_1608Metric, { + translate: pt(1.950, 1.282), rotate: 0, + id: 'R1' +}) +// ledg.package +const D2 = board.add(LED_0603_1608Metric, { + translate: pt(2.185, 1.185), rotate: 0, + id: 'D2' +}) +// ledg.res +const R2 = board.add(R_0603_1608Metric, { + translate: pt(2.185, 1.282), rotate: 0, + id: 'R2' +}) +// ledb.package +const D3 = board.add(LED_0603_1608Metric, { + translate: pt(0.058, 1.519), rotate: 0, + id: 'D3' }) -const ledb_res = board.add(R_0603_1608Metric, { - translate: pt(2.106, 1.282), rotate: 0, - id: 'ledb_res' +// ledb.res +const R3 = board.add(R_0603_1608Metric, { + translate: pt(0.058, 1.617), rotate: 0, + id: 'R3' }) -const i2c_pull_scl_res_res = board.add(R_0603_1608Metric, { +// i2c_pull.scl_res.res +const R4 = board.add(R_0603_1608Metric, { translate: pt(0.293, 1.519), rotate: 0, - id: 'i2c_pull_scl_res_res' + id: 'R4' }) -const i2c_pull_sda_res_res = board.add(R_0603_1608Metric, { +// i2c_pull.sda_res.res +const R5 = board.add(R_0603_1608Metric, { translate: pt(0.293, 1.616), rotate: 0, - id: 'i2c_pull_sda_res_res' + id: 'R5' }) -const i2c_tp_tp_scl_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(1.629, 1.193), rotate: 0, - id: 'i2c_tp_tp_scl_tp' +// i2c_tp.tp_scl.tp +const TP1 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(1.708, 1.193), rotate: 0, + id: 'TP1' }) -const i2c_tp_tp_sda_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(1.629, 1.307), rotate: 0, - id: 'i2c_tp_tp_sda_tp' +// i2c_tp.tp_sda.tp +const TP2 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(1.708, 1.307), rotate: 0, + id: 'TP2' }) -const i2c_conn = board.add(JST_PH_B4B_PH_K_1x04_P2_00mm_Vertical, { - translate: pt(1.112, 1.286), rotate: 0, - id: 'i2c_conn' +// i2c.conn +const J2 = board.add(JST_PH_B4B_PH_K_1x04_P2_00mm_Vertical, { + translate: pt(0.096, 1.286), rotate: 0, + id: 'J2' }) -const ref_div_div_top_res = board.add(R_0603_1608Metric, { +// ref_div.div.top_res +const R6 = board.add(R_0603_1608Metric, { translate: pt(0.528, 1.519), rotate: 0, - id: 'ref_div_div_top_res' + id: 'R6' }) -const ref_div_div_bottom_res = board.add(R_0603_1608Metric, { +// ref_div.div.bottom_res +const R7 = board.add(R_0603_1608Metric, { translate: pt(0.528, 1.616), rotate: 0, - id: 'ref_div_div_bottom_res' + id: 'R7' }) -const ref_buf_amp_ic = board.add(SOT_23_5, { - translate: pt(0.952, 0.874), rotate: 0, - id: 'ref_buf_amp_ic' +// ref_buf.amp.ic +const U2 = board.add(SOT_23_5, { + translate: pt(0.081, 0.874), rotate: 0, + id: 'U2' }) -const ref_buf_amp_vdd_cap_cap = board.add(C_0603_1608Metric, { - translate: pt(0.929, 1.009), rotate: 0, - id: 'ref_buf_amp_vdd_cap_cap' +// ref_buf.amp.vdd_cap.cap +const C1 = board.add(C_0603_1608Metric, { + translate: pt(0.058, 1.009), rotate: 0, + id: 'C1' }) -const ref_tp_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(1.271, 1.528), rotate: 0, - id: 'ref_tp_tp' +// ref_tp.tp +const TP3 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(1.005, 1.528), rotate: 0, + id: 'TP3' }) -const hall_conn = board.add(JST_PH_B5B_PH_K_1x05_P2_00mm_Vertical, { - translate: pt(0.486, 1.286), rotate: 0, - id: 'hall_conn' +// hall.conn +const J3 = board.add(JST_PH_B5B_PH_K_1x05_P2_00mm_Vertical, { + translate: pt(0.644, 1.286), rotate: 0, + id: 'J3' }) -const hall_pull_res_u__res = board.add(R_0603_1608Metric, { +// hall_pull.res[u].res +const R8 = board.add(R_0603_1608Metric, { translate: pt(2.376, 0.029), rotate: 0, - id: 'hall_pull_res_u__res' + id: 'R8' }) -const hall_pull_res_v__res = board.add(R_0603_1608Metric, { +// hall_pull.res[v].res +const R9 = board.add(R_0603_1608Metric, { translate: pt(2.376, 0.126), rotate: 0, - id: 'hall_pull_res_v__res' + id: 'R9' }) -const hall_pull_res_w__res = board.add(R_0603_1608Metric, { +// hall_pull.res[w].res +const R10 = board.add(R_0603_1608Metric, { translate: pt(2.376, 0.222), rotate: 0, - id: 'hall_pull_res_w__res' + id: 'R10' }) -const hall_tp_tp_u__tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(2.134, 0.037), rotate: 0, - id: 'hall_tp_tp_u__tp' +// hall_tp.tp[u].tp +const TP4 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(1.633, 0.037), rotate: 0, + id: 'TP4' }) -const hall_tp_tp_v__tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(2.134, 0.152), rotate: 0, - id: 'hall_tp_tp_v__tp' +// hall_tp.tp[v].tp +const TP5 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(1.633, 0.152), rotate: 0, + id: 'TP5' }) -const hall_tp_tp_w__tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(2.134, 0.266), rotate: 0, - id: 'hall_tp_tp_w__tp' +// hall_tp.tp[w].tp +const TP6 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(1.633, 0.266), rotate: 0, + id: 'TP6' }) -const vsense_div_top_res = board.add(R_0603_1608Metric, { - translate: pt(0.058, 1.519), rotate: 0, - id: 'vsense_div_top_res' +// vsense.div.top_res +const R11 = board.add(R_0603_1608Metric, { + translate: pt(0.762, 1.519), rotate: 0, + id: 'R11' }) -const vsense_div_bottom_res = board.add(R_0603_1608Metric, { - translate: pt(0.058, 1.616), rotate: 0, - id: 'vsense_div_bottom_res' +// vsense.div.bottom_res +const R12 = board.add(R_0603_1608Metric, { + translate: pt(0.762, 1.616), rotate: 0, + id: 'R12' }) -const vsense_tp_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(1.521, 1.528), rotate: 0, - id: 'vsense_tp_tp' +// vsense_tp.tp +const TP7 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(1.255, 1.528), rotate: 0, + id: 'TP7' }) -const isense_sense_res_res = board.add(R_1206_3216Metric, { +// isense.sense.res.res +const R13 = board.add(R_1206_3216Metric, { translate: pt(1.359, 0.044), rotate: 0, - id: 'isense_sense_res_res' + id: 'R13' }) -const isense_amp_amp_ic = board.add(SOIC_8_3_9x4_9mm_P1_27mm, { +// isense.amp.amp.ic +const U3 = board.add(SOIC_8_3_9x4_9mm_P1_27mm, { translate: pt(1.084, 0.106), rotate: 0, - id: 'isense_amp_amp_ic' + id: 'U3' }) -const isense_amp_amp_vdd_cap_cap = board.add(C_0805_2012Metric, { +// isense.amp.amp.vdd_cap.cap +const C2 = board.add(C_0805_2012Metric, { translate: pt(1.336, 0.166), rotate: 0, - id: 'isense_amp_amp_vdd_cap_cap' + id: 'C2' }) -const isense_amp_r1 = board.add(R_0603_1608Metric, { +// isense.amp.r1 +const R14 = board.add(R_0603_1608Metric, { translate: pt(0.997, 0.281), rotate: 0, - id: 'isense_amp_r1' + id: 'R14' }) -const isense_amp_r2 = board.add(R_0603_1608Metric, { +// isense.amp.r2 +const R15 = board.add(R_0603_1608Metric, { translate: pt(1.153, 0.281), rotate: 0, - id: 'isense_amp_r2' + id: 'R15' }) -const isense_amp_rf = board.add(R_0603_1608Metric, { +// isense.amp.rf +const R16 = board.add(R_0603_1608Metric, { translate: pt(1.309, 0.281), rotate: 0, - id: 'isense_amp_rf' + id: 'R16' }) -const isense_amp_rg = board.add(R_0603_1608Metric, { +// isense.amp.rg +const R17 = board.add(R_0603_1608Metric, { translate: pt(0.997, 0.378), rotate: 0, - id: 'isense_amp_rg' + id: 'R17' }) -const isense_tp_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(2.272, 1.528), rotate: 0, - id: 'isense_tp_tp' +// isense_tp.tp +const TP8 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(1.506, 1.528), rotate: 0, + id: 'TP8' }) -const isense_clamp_res = board.add(R_0603_1608Metric, { - translate: pt(0.058, 1.792), rotate: 0, - id: 'isense_clamp_res' +// isense_clamp.res +const R18 = board.add(R_0603_1608Metric, { + translate: pt(0.309, 1.792), rotate: 0, + id: 'R18' }) -const bldc_drv_ic = board.add(HTSSOP_28_1EP_4_4x9_7mm_P0_65mm_EP2_85x5_4mm_ThermalVias, { +// bldc_drv.ic +const U4 = board.add(HTSSOP_28_1EP_4_4x9_7mm_P0_65mm_EP2_85x5_4mm_ThermalVias, { translate: pt(0.152, 0.201), rotate: 0, - id: 'bldc_drv_ic' + id: 'U4' }) -const bldc_drv_vm_cap_bulk_cap = board.add(C_0805_2012Metric, { +// bldc_drv.vm_cap_bulk.cap +const C3 = board.add(C_0805_2012Metric, { translate: pt(0.407, 0.480), rotate: 0, - id: 'bldc_drv_vm_cap_bulk_cap' + id: 'C3' }) -const bldc_drv_vm_cap1_cap = board.add(C_0805_2012Metric, { +// bldc_drv.vm_cap1.cap +const C4 = board.add(C_0805_2012Metric, { translate: pt(0.580, 0.480), rotate: 0, - id: 'bldc_drv_vm_cap1_cap' + id: 'C4' }) -const bldc_drv_vm_cap2_cap = board.add(C_0805_2012Metric, { +// bldc_drv.vm_cap2.cap +const C5 = board.add(C_0805_2012Metric, { translate: pt(0.754, 0.480), rotate: 0, - id: 'bldc_drv_vm_cap2_cap' + id: 'C5' }) -const bldc_drv_v3p3_cap_cap = board.add(C_0603_1608Metric, { +// bldc_drv.v3p3_cap.cap +const C6 = board.add(C_0603_1608Metric, { translate: pt(0.058, 0.660), rotate: 0, - id: 'bldc_drv_v3p3_cap_cap' + id: 'C6' }) -const bldc_drv_cp_cap = board.add(C_0603_1608Metric, { +// bldc_drv.cp_cap +const C7 = board.add(C_0603_1608Metric, { translate: pt(0.214, 0.660), rotate: 0, - id: 'bldc_drv_cp_cap' + id: 'C7' }) -const bldc_drv_vcp_cap = board.add(C_0603_1608Metric, { +// bldc_drv.vcp_cap +const C8 = board.add(C_0603_1608Metric, { translate: pt(0.370, 0.660), rotate: 0, - id: 'bldc_drv_vcp_cap' + id: 'C8' }) -const bldc_drv_pgnd_res_1__res_res = board.add(R_2512_6332Metric, { +// bldc_drv.pgnd_res[1].res.res +const R19 = board.add(R_2512_6332Metric, { translate: pt(0.493, 0.076), rotate: 0, - id: 'bldc_drv_pgnd_res_1__res_res' + id: 'R19' }) -const bldc_drv_pgnd_res_2__res_res = board.add(R_2512_6332Metric, { +// bldc_drv.pgnd_res[2].res.res +const R20 = board.add(R_2512_6332Metric, { translate: pt(0.493, 0.266), rotate: 0, - id: 'bldc_drv_pgnd_res_2__res_res' + id: 'R20' }) -const bldc_drv_pgnd_res_3__res_res = board.add(R_2512_6332Metric, { +// bldc_drv.pgnd_res[3].res.res +const R21 = board.add(R_2512_6332Metric, { translate: pt(0.150, 0.517), rotate: 0, - id: 'bldc_drv_pgnd_res_3__res_res' + id: 'R21' }) -const bldc_fault_tp_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(1.020, 1.528), rotate: 0, - id: 'bldc_fault_tp_tp' +// bldc_fault_tp.tp +const TP9 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(1.756, 1.528), rotate: 0, + id: 'TP9' }) -const bldc_en_tp_tp_1__tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(1.633, 0.037), rotate: 0, - id: 'bldc_en_tp_tp_1__tp' -}) -const bldc_en_tp_tp_2__tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(1.633, 0.152), rotate: 0, - id: 'bldc_en_tp_tp_2__tp' -}) -const bldc_en_tp_tp_3__tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(1.633, 0.266), rotate: 0, - id: 'bldc_en_tp_tp_3__tp' -}) -const bldc_in_tp_tp_1__tp = board.add(TestPoint_TE_RCT_0805, { +// bldc_en_tp.tp[1].tp +const TP10 = board.add(TestPoint_TE_RCT_0805, { translate: pt(1.883, 0.037), rotate: 0, - id: 'bldc_in_tp_tp_1__tp' + id: 'TP10' }) -const bldc_in_tp_tp_2__tp = board.add(TestPoint_TE_RCT_0805, { +// bldc_en_tp.tp[2].tp +const TP11 = board.add(TestPoint_TE_RCT_0805, { translate: pt(1.883, 0.152), rotate: 0, - id: 'bldc_in_tp_tp_2__tp' + id: 'TP11' }) -const bldc_in_tp_tp_3__tp = board.add(TestPoint_TE_RCT_0805, { +// bldc_en_tp.tp[3].tp +const TP12 = board.add(TestPoint_TE_RCT_0805, { translate: pt(1.883, 0.266), rotate: 0, - id: 'bldc_in_tp_tp_3__tp' + id: 'TP12' }) -const bldc_conn = board.add(JST_PH_B3B_PH_K_1x03_P2_00mm_Vertical, { - translate: pt(2.135, 0.937), rotate: 0, - id: 'bldc_conn' -}) -const curr_amp_1__amp_ic = board.add(SOT_23_5, { - translate: pt(0.081, 0.874), rotate: 0, - id: 'curr_amp_1__amp_ic' -}) -const curr_amp_1__amp_vdd_cap_cap = board.add(C_0603_1608Metric, { - translate: pt(0.259, 0.836), rotate: 0, - id: 'curr_amp_1__amp_vdd_cap_cap' +// bldc_in_tp.tp[1].tp +const TP13 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(2.134, 0.037), rotate: 0, + id: 'TP13' }) -const curr_amp_1__r1 = board.add(R_0603_1608Metric, { - translate: pt(0.058, 1.009), rotate: 0, - id: 'curr_amp_1__r1' +// bldc_in_tp.tp[2].tp +const TP14 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(2.134, 0.152), rotate: 0, + id: 'TP14' }) -const curr_amp_1__r2 = board.add(R_0603_1608Metric, { - translate: pt(0.214, 1.009), rotate: 0, - id: 'curr_amp_1__r2' +// bldc_in_tp.tp[3].tp +const TP15 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(2.134, 0.266), rotate: 0, + id: 'TP15' +}) +// bldc.conn +const J4 = board.add(JST_PH_B3B_PH_K_1x03_P2_00mm_Vertical, { + translate: pt(1.270, 1.286), rotate: 0, + id: 'J4' +}) +// curr_amp[1].amp.ic +const U5 = board.add(SOT_23_5, { + translate: pt(0.360, 0.874), rotate: 0, + id: 'U5' +}) +// curr_amp[1].amp.vdd_cap.cap +const C9 = board.add(C_0603_1608Metric, { + translate: pt(0.539, 0.836), rotate: 0, + id: 'C9' +}) +// curr_amp[1].r1 +const R22 = board.add(R_0603_1608Metric, { + translate: pt(0.338, 1.009), rotate: 0, + id: 'R22' +}) +// curr_amp[1].r2 +const R23 = board.add(R_0603_1608Metric, { + translate: pt(0.494, 1.009), rotate: 0, + id: 'R23' +}) +// curr_tp[1].tp +const TP16 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(2.006, 1.528), rotate: 0, + id: 'TP16' +}) +// curr_amp[2].amp.ic +const U6 = board.add(SOT_23_5, { + translate: pt(0.796, 0.874), rotate: 0, + id: 'U6' +}) +// curr_amp[2].amp.vdd_cap.cap +const C10 = board.add(C_0603_1608Metric, { + translate: pt(0.974, 0.836), rotate: 0, + id: 'C10' +}) +// curr_amp[2].r1 +const R24 = board.add(R_0603_1608Metric, { + translate: pt(0.773, 1.009), rotate: 0, + id: 'R24' +}) +// curr_amp[2].r2 +const R25 = board.add(R_0603_1608Metric, { + translate: pt(0.929, 1.009), rotate: 0, + id: 'R25' }) -const curr_tp_1__tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(1.772, 1.528), rotate: 0, - id: 'curr_tp_1__tp' +// curr_tp[2].tp +const TP17 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(2.257, 1.528), rotate: 0, + id: 'TP17' }) -const curr_amp_2__amp_ic = board.add(SOT_23_5, { +// curr_amp[3].amp.ic +const U7 = board.add(SOT_23_5, { translate: pt(1.231, 0.874), rotate: 0, - id: 'curr_amp_2__amp_ic' + id: 'U7' }) -const curr_amp_2__amp_vdd_cap_cap = board.add(C_0603_1608Metric, { +// curr_amp[3].amp.vdd_cap.cap +const C11 = board.add(C_0603_1608Metric, { translate: pt(1.409, 0.836), rotate: 0, - id: 'curr_amp_2__amp_vdd_cap_cap' + id: 'C11' }) -const curr_amp_2__r1 = board.add(R_0603_1608Metric, { +// curr_amp[3].r1 +const R26 = board.add(R_0603_1608Metric, { translate: pt(1.209, 1.009), rotate: 0, - id: 'curr_amp_2__r1' + id: 'R26' }) -const curr_amp_2__r2 = board.add(R_0603_1608Metric, { +// curr_amp[3].r2 +const R27 = board.add(R_0603_1608Metric, { translate: pt(1.365, 1.009), rotate: 0, - id: 'curr_amp_2__r2' -}) -const curr_tp_2__tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(0.770, 1.528), rotate: 0, - id: 'curr_tp_2__tp' -}) -const curr_amp_3__amp_ic = board.add(SOT_23_5, { - translate: pt(0.516, 0.874), rotate: 0, - id: 'curr_amp_3__amp_ic' + id: 'R27' }) -const curr_amp_3__amp_vdd_cap_cap = board.add(C_0603_1608Metric, { - translate: pt(0.694, 0.836), rotate: 0, - id: 'curr_amp_3__amp_vdd_cap_cap' -}) -const curr_amp_3__r1 = board.add(R_0603_1608Metric, { - translate: pt(0.494, 1.009), rotate: 0, - id: 'curr_amp_3__r1' -}) -const curr_amp_3__r2 = board.add(R_0603_1608Metric, { - translate: pt(0.650, 1.009), rotate: 0, - id: 'curr_amp_3__r2' -}) -const curr_tp_3__tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(2.022, 1.528), rotate: 0, - id: 'curr_tp_3__tp' +// curr_tp[3].tp +const TP18 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(0.066, 1.801), rotate: 0, + id: 'TP18' }) +board.setNetlist([ + {name: "vusb", pads: [["U1", "26"], ["J3", "1"]]}, + {name: "v3v3", pads: [["U1", "2"], ["J2", "2"], ["U2", "5"], ["R6", "1"], ["U5", "5"], ["U6", "5"], ["U7", "5"], ["R4", "1"], ["R5", "1"], ["R8", "1"], ["R9", "1"], ["R10", "1"], ["C1", "1"], ["C9", "1"], ["C10", "1"], ["C11", "1"]]}, + {name: "gnd", pads: [["U1", "4"], ["J1", "1"], ["SW1", "2"], ["R1", "2"], ["R2", "2"], ["R3", "2"], ["J2", "1"], ["J3", "5"], ["U4", "12"], ["U4", "13"], ["U4", "14"], ["U4", "19"], ["U4", "20"], ["U4", "21"], ["U4", "28"], ["U4", "29"], ["R7", "2"], ["U2", "2"], ["R12", "2"], ["U3", "4"], ["R23", "2"], ["R25", "2"], ["R27", "2"], ["C3", "2"], ["C4", "2"], ["C5", "2"], ["C6", "2"], ["U5", "2"], ["U6", "2"], ["U7", "2"], ["C1", "2"], ["C2", "2"], ["R19", "1"], ["R20", "1"], ["R21", "1"], ["C9", "2"], ["C10", "2"], ["C11", "2"]]}, + {name: "sw1.out", pads: [["U1", "20"], ["SW1", "1"]]}, + {name: "ledr.signal", pads: [["U1", "16"], ["D1", "2"]]}, + {name: "ledg.signal", pads: [["U1", "7"], ["D2", "2"]]}, + {name: "ledb.signal", pads: [["U1", "3"], ["D3", "2"]]}, + {name: "i2c_pull.i2c.scl", pads: [["U1", "22"], ["R4", "2"], ["TP1", "1"], ["J2", "4"]]}, + {name: "i2c_pull.i2c.sda", pads: [["U1", "21"], ["J2", "3"], ["R5", "2"], ["TP2", "1"]]}, + {name: "ref_div.output", pads: [["U2", "1"], ["R6", "2"], ["R7", "1"]]}, + {name: "ref_buf.output", pads: [["U2", "3"], ["TP3", "1"], ["R17", "1"], ["U2", "4"]]}, + {name: "hall.phases.u", pads: [["U1", "23"], ["J3", "2"], ["R8", "2"], ["TP4", "1"]]}, + {name: "hall.phases.v", pads: [["U1", "24"], ["J3", "3"], ["R9", "2"], ["TP5", "1"]]}, + {name: "hall.phases.w", pads: [["U1", "25"], ["J3", "4"], ["R10", "2"], ["TP6", "1"]]}, + {name: "motor_pwr.pwr", pads: [["J1", "2"], ["R11", "1"], ["U3", "7"], ["R13", "1"], ["C2", "1"], ["R15", "1"]]}, + {name: "vsense.output", pads: [["U1", "6"], ["TP7", "1"], ["R11", "2"], ["R12", "1"]]}, + {name: "isense.out", pads: [["TP8", "1"], ["R18", "1"], ["R16", "1"], ["U3", "6"]]}, + {name: "isense_clamp.signal_out", pads: [["U1", "5"], ["R18", "2"]]}, + {name: "isense.pwr_out", pads: [["U4", "4"], ["U4", "11"], ["R13", "2"], ["C8", "2"], ["C3", "1"], ["C4", "1"], ["C5", "1"], ["R14", "1"]]}, + {name: "bldc_drv.nreset", pads: [["U1", "18"], ["U4", "16"]]}, + {name: "bldc_drv.nfault", pads: [["U1", "19"], ["U4", "18"], ["TP9", "1"]]}, + {name: "mcu.gpio.bldc_en_1", pads: [["U1", "12"], ["U4", "26"], ["TP10", "1"]]}, + {name: "mcu.gpio.bldc_en_2", pads: [["U1", "14"], ["U4", "24"], ["TP11", "1"]]}, + {name: "mcu.gpio.bldc_en_3", pads: [["U1", "17"], ["U4", "22"], ["TP12", "1"]]}, + {name: "mcu.gpio.bldc_in_1", pads: [["U1", "11"], ["U4", "27"], ["TP13", "1"]]}, + {name: "mcu.gpio.bldc_in_2", pads: [["U1", "13"], ["U4", "25"], ["TP14", "1"]]}, + {name: "mcu.gpio.bldc_in_3", pads: [["U1", "15"], ["U4", "23"], ["TP15", "1"]]}, + {name: "bldc_drv.outs.1", pads: [["U4", "5"], ["J4", "1"]]}, + {name: "bldc_drv.outs.2", pads: [["U4", "8"], ["J4", "2"]]}, + {name: "bldc_drv.outs.3", pads: [["U4", "9"], ["J4", "3"]]}, + {name: "curr_amp[1].input", pads: [["U5", "1"], ["R19", "2"], ["U4", "6"]]}, + {name: "curr_amp[1].output", pads: [["U1", "10"], ["TP16", "1"], ["R22", "1"], ["U5", "4"]]}, + {name: "curr_amp[2].input", pads: [["U6", "1"], ["R20", "2"], ["U4", "7"]]}, + {name: "curr_amp[2].output", pads: [["U1", "9"], ["TP17", "1"], ["R24", "1"], ["U6", "4"]]}, + {name: "curr_amp[3].input", pads: [["U7", "1"], ["R21", "2"], ["U4", "10"]]}, + {name: "curr_amp[3].output", pads: [["U1", "8"], ["TP18", "1"], ["R26", "1"], ["U7", "4"]]}, + {name: "ledr.res.a", pads: [["R1", "1"], ["D1", "1"]]}, + {name: "ledg.res.a", pads: [["R2", "1"], ["D2", "1"]]}, + {name: "ledb.res.a", pads: [["R3", "1"], ["D3", "1"]]}, + {name: "isense.amp.r2.b", pads: [["R15", "2"], ["U3", "3"], ["R17", "2"]]}, + {name: "isense.amp.r1.b", pads: [["R14", "2"], ["U3", "2"], ["R16", "2"]]}, + {name: "bldc_drv.ic.v3p3", pads: [["U4", "15"], ["C6", "1"], ["U4", "17"]]}, + {name: "bldc_drv.cp_cap.pos", pads: [["C7", "1"], ["U4", "2"]]}, + {name: "bldc_drv.cp_cap.neg", pads: [["C7", "2"], ["U4", "1"]]}, + {name: "bldc_drv.vcp_cap.pos", pads: [["C8", "1"], ["U4", "3"]]}, + {name: "curr_amp[1].r2.a", pads: [["R23", "1"], ["U5", "3"], ["R22", "2"]]}, + {name: "curr_amp[2].r2.a", pads: [["R25", "1"], ["U6", "3"], ["R24", "2"]]}, + {name: "curr_amp[3].r2.a", pads: [["R27", "1"], ["U7", "3"], ["R26", "2"]]} +]) + const limit0 = pt(-0.07874015748031496, -0.07874015748031496); -const limit1 = pt(2.552755905511811, 1.9385826771653545); +const limit1 = pt(2.552755905511811, 1.9562992125984253); const xMin = Math.min(limit0[0], limit1[0]); const xMax = Math.max(limit0[0], limit1[0]); const yMin = Math.min(limit0[1], limit1[1]); diff --git a/examples/CanAdapter/CanAdapter.svgpcb.js b/examples/CanAdapter/CanAdapter.svgpcb.js index e7a27235e..e4fd0d6ef 100644 --- a/examples/CanAdapter/CanAdapter.svgpcb.js +++ b/examples/CanAdapter/CanAdapter.svgpcb.js @@ -1,202 +1,299 @@ const board = new PCB(); -const usb_conn = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { +// usb.conn +const J1 = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { translate: pt(0.209, 1.055), rotate: 0, - id: 'usb_conn' + id: 'J1' }) -const usb_cc_pull_cc1_res = board.add(R_0603_1608Metric, { +// usb.cc_pull.cc1.res +const R1 = board.add(R_0603_1608Metric, { translate: pt(0.058, 1.310), rotate: 0, - id: 'usb_cc_pull_cc1_res' + id: 'R1' }) -const usb_cc_pull_cc2_res = board.add(R_0603_1608Metric, { +// usb.cc_pull.cc2.res +const R2 = board.add(R_0603_1608Metric, { translate: pt(0.214, 1.310), rotate: 0, - id: 'usb_cc_pull_cc2_res' + id: 'R2' }) -const usb_reg_ic = board.add(SOT_23_5, { - translate: pt(1.541, 0.957), rotate: 0, - id: 'usb_reg_ic' +// usb_reg.ic +const U1 = board.add(SOT_23_5, { + translate: pt(1.133, 0.957), rotate: 0, + id: 'U1' }) -const usb_reg_in_cap_cap = board.add(C_0603_1608Metric, { - translate: pt(1.692, 1.093), rotate: 0, - id: 'usb_reg_in_cap_cap' +// usb_reg.in_cap.cap +const C1 = board.add(C_0603_1608Metric, { + translate: pt(1.284, 1.093), rotate: 0, + id: 'C1' }) -const usb_reg_out_cap_cap = board.add(C_0805_2012Metric, { - translate: pt(1.528, 1.102), rotate: 0, - id: 'usb_reg_out_cap_cap' +// usb_reg.out_cap.cap +const C2 = board.add(C_0805_2012Metric, { + translate: pt(1.120, 1.102), rotate: 0, + id: 'C2' }) -const mcu_swd_conn = board.add(Tag_Connect_TC2050_IDC_NL_2x05_P1_27mm_Vertical, { +// mcu.swd.conn +const J2 = board.add(Tag_Connect_TC2050_IDC_NL_2x05_P1_27mm_Vertical, { translate: pt(0.690, 0.133), rotate: 0, - id: 'mcu_swd_conn' + id: 'J2' }) -const mcu_ic = board.add(LQFP_48_7x7mm_P0_5mm, { +// mcu.ic +const U2 = board.add(LQFP_48_7x7mm_P0_5mm, { translate: pt(0.203, 0.203), rotate: 0, - id: 'mcu_ic' + id: 'U2' }) -const mcu_swd_pull_swdio_res = board.add(R_0603_1608Metric, { +// mcu.swd_pull.swdio.res +const R3 = board.add(R_0603_1608Metric, { translate: pt(0.609, 0.474), rotate: 0, - id: 'mcu_swd_pull_swdio_res' + id: 'R3' }) -const mcu_swd_pull_swclk_res = board.add(R_0603_1608Metric, { +// mcu.swd_pull.swclk.res +const R4 = board.add(R_0603_1608Metric, { translate: pt(0.765, 0.474), rotate: 0, - id: 'mcu_swd_pull_swclk_res' + id: 'R4' }) -const mcu_pwr_cap_0__cap = board.add(C_0603_1608Metric, { +// mcu.pwr_cap[0].cap +const C3 = board.add(C_0603_1608Metric, { translate: pt(0.921, 0.474), rotate: 0, - id: 'mcu_pwr_cap_0__cap' + id: 'C3' }) -const mcu_pwr_cap_1__cap = board.add(C_0603_1608Metric, { +// mcu.pwr_cap[1].cap +const C4 = board.add(C_0603_1608Metric, { translate: pt(0.058, 0.647), rotate: 0, - id: 'mcu_pwr_cap_1__cap' + id: 'C4' }) -const mcu_pwr_cap_2__cap = board.add(C_0603_1608Metric, { +// mcu.pwr_cap[2].cap +const C5 = board.add(C_0603_1608Metric, { translate: pt(0.214, 0.647), rotate: 0, - id: 'mcu_pwr_cap_2__cap' + id: 'C5' }) -const mcu_pwr_cap_3__cap = board.add(C_0603_1608Metric, { +// mcu.pwr_cap[3].cap +const C6 = board.add(C_0603_1608Metric, { translate: pt(0.370, 0.647), rotate: 0, - id: 'mcu_pwr_cap_3__cap' + id: 'C6' }) -const mcu_pwr_cap_4__cap = board.add(C_0603_1608Metric, { +// mcu.pwr_cap[4].cap +const C7 = board.add(C_0603_1608Metric, { translate: pt(0.526, 0.647), rotate: 0, - id: 'mcu_pwr_cap_4__cap' + id: 'C7' }) -const mcu_pwr_cap_5__cap = board.add(C_0603_1608Metric, { +// mcu.pwr_cap[5].cap +const C8 = board.add(C_0603_1608Metric, { translate: pt(0.682, 0.647), rotate: 0, - id: 'mcu_pwr_cap_5__cap' + id: 'C8' }) -const mcu_vbat_cap_cap = board.add(C_0603_1608Metric, { +// mcu.vbat_cap.cap +const C9 = board.add(C_0603_1608Metric, { translate: pt(0.838, 0.647), rotate: 0, - id: 'mcu_vbat_cap_cap' + id: 'C9' }) -const mcu_pwra_cap_0__cap = board.add(C_0603_1608Metric, { +// mcu.pwra_cap[0].cap +const C10 = board.add(C_0603_1608Metric, { translate: pt(0.058, 0.744), rotate: 0, - id: 'mcu_pwra_cap_0__cap' + id: 'C10' }) -const mcu_pwra_cap_1__cap = board.add(C_0805_2012Metric, { +// mcu.pwra_cap[1].cap +const C11 = board.add(C_0805_2012Metric, { translate: pt(0.272, 0.483), rotate: 0, - id: 'mcu_pwra_cap_1__cap' + id: 'C11' }) -const mcu_vref_cap_0__cap = board.add(C_0603_1608Metric, { +// mcu.vref_cap[0].cap +const C12 = board.add(C_0603_1608Metric, { translate: pt(0.214, 0.744), rotate: 0, - id: 'mcu_vref_cap_0__cap' + id: 'C12' }) -const mcu_vref_cap_1__cap = board.add(C_0603_1608Metric, { +// mcu.vref_cap[1].cap +const C13 = board.add(C_0603_1608Metric, { translate: pt(0.370, 0.744), rotate: 0, - id: 'mcu_vref_cap_1__cap' + id: 'C13' }) -const mcu_vref_cap_2__cap = board.add(C_0805_2012Metric, { +// mcu.vref_cap[2].cap +const C14 = board.add(C_0805_2012Metric, { translate: pt(0.445, 0.483), rotate: 0, - id: 'mcu_vref_cap_2__cap' + id: 'C14' }) -const mcu_crystal_package = board.add(Crystal_SMD_3225_4Pin_3_2x2_5mm, { +// mcu.crystal.package +const X1 = board.add(Crystal_SMD_3225_4Pin_3_2x2_5mm, { translate: pt(0.083, 0.512), rotate: 0, - id: 'mcu_crystal_package' + id: 'X1' }) -const mcu_crystal_cap_a = board.add(C_0603_1608Metric, { +// mcu.crystal.cap_a +const C15 = board.add(C_0603_1608Metric, { translate: pt(0.526, 0.744), rotate: 0, - id: 'mcu_crystal_cap_a' + id: 'C15' }) -const mcu_crystal_cap_b = board.add(C_0603_1608Metric, { +// mcu.crystal.cap_b +const C16 = board.add(C_0603_1608Metric, { translate: pt(0.682, 0.744), rotate: 0, - id: 'mcu_crystal_cap_b' + id: 'C16' }) -const usb_esd = board.add(SOT_23, { +// usb_esd +const U3 = board.add(SOT_23, { translate: pt(1.761, 1.524), rotate: 0, - id: 'usb_esd' + id: 'U3' }) -const xcvr_ic = board.add(SOP_8_6_62x9_15mm_P2_54mm, { +// xcvr.ic +const U4 = board.add(SOP_8_6_62x9_15mm_P2_54mm, { translate: pt(1.332, 0.190), rotate: 0, - id: 'xcvr_ic' + id: 'U4' }) -const xcvr_logic_cap_cap = board.add(C_0603_1608Metric, { +// xcvr.logic_cap.cap +const C17 = board.add(C_0603_1608Metric, { translate: pt(1.156, 0.448), rotate: 0, - id: 'xcvr_logic_cap_cap' + id: 'C17' }) -const xcvr_can_cap_cap = board.add(C_0603_1608Metric, { +// xcvr.can_cap.cap +const C18 = board.add(C_0603_1608Metric, { translate: pt(1.312, 0.448), rotate: 0, - id: 'xcvr_can_cap_cap' -}) -const sw_usb_package = board.add(SW_SPST_EVQP7C, { - translate: pt(1.224, 1.550), rotate: 0, - id: 'sw_usb_package' + id: 'C18' }) -const sw_can_package = board.add(SW_SPST_EVQP7C, { +// sw_usb.package +const SW1 = board.add(SW_SPST_EVQP7C, { translate: pt(0.889, 1.550), rotate: 0, - id: 'sw_can_package' + id: 'SW1' }) -const lcd_device_conn = board.add(Hirose_FH12_8S_0_5SH_1x08_1MP_P0_50mm_Horizontal, { +// sw_can.package +const SW2 = board.add(SW_SPST_EVQP7C, { + translate: pt(1.224, 1.550), rotate: 0, + id: 'SW2' +}) +// lcd.device.conn +const J3 = board.add(Hirose_FH12_8S_0_5SH_1x08_1MP_P0_50mm_Horizontal, { translate: pt(0.736, 1.083), rotate: 0, - id: 'lcd_device_conn' + id: 'J3' }) -const lcd_led_res = board.add(R_0603_1608Metric, { +// lcd.led_res +const R5 = board.add(R_0603_1608Metric, { translate: pt(0.595, 1.270), rotate: 0, - id: 'lcd_led_res' + id: 'R5' }) -const lcd_vdd_cap_cap = board.add(C_0603_1608Metric, { +// lcd.vdd_cap.cap +const C19 = board.add(C_0603_1608Metric, { translate: pt(0.751, 1.270), rotate: 0, - id: 'lcd_vdd_cap_cap' + id: 'C19' }) -const rgb_usb_package = board.add(LED_LiteOn_LTST_C19HE1WT, { +// rgb_usb.package +const D1 = board.add(LED_LiteOn_LTST_C19HE1WT, { translate: pt(0.041, 1.512), rotate: 0, - id: 'rgb_usb_package' + id: 'D1' }) -const rgb_usb_red_res = board.add(R_0603_1608Metric, { +// rgb_usb.red_res +const R6 = board.add(R_0603_1608Metric, { translate: pt(0.180, 1.486), rotate: 0, - id: 'rgb_usb_red_res' + id: 'R6' }) -const rgb_usb_green_res = board.add(R_0603_1608Metric, { +// rgb_usb.green_res +const R7 = board.add(R_0603_1608Metric, { translate: pt(0.058, 1.635), rotate: 0, - id: 'rgb_usb_green_res' + id: 'R7' }) -const rgb_usb_blue_res = board.add(R_0603_1608Metric, { +// rgb_usb.blue_res +const R8 = board.add(R_0603_1608Metric, { translate: pt(0.214, 1.635), rotate: 0, - id: 'rgb_usb_blue_res' + id: 'R8' }) -const rgb_can_package = board.add(LED_LiteOn_LTST_C19HE1WT, { +// rgb_can.package +const D2 = board.add(LED_LiteOn_LTST_C19HE1WT, { translate: pt(0.432, 1.512), rotate: 0, - id: 'rgb_can_package' + id: 'D2' }) -const rgb_can_red_res = board.add(R_0603_1608Metric, { +// rgb_can.red_res +const R9 = board.add(R_0603_1608Metric, { translate: pt(0.571, 1.486), rotate: 0, - id: 'rgb_can_red_res' + id: 'R9' }) -const rgb_can_green_res = board.add(R_0603_1608Metric, { +// rgb_can.green_res +const R10 = board.add(R_0603_1608Metric, { translate: pt(0.449, 1.635), rotate: 0, - id: 'rgb_can_green_res' + id: 'R10' }) -const rgb_can_blue_res = board.add(R_0603_1608Metric, { +// rgb_can.blue_res +const R11 = board.add(R_0603_1608Metric, { translate: pt(0.605, 1.635), rotate: 0, - id: 'rgb_can_blue_res' + id: 'R11' }) -const can = board.add(Molex_DuraClik_502352_1x05_P2_00mm_Horizontal, { +// can +const J4 = board.add(Molex_DuraClik_502352_1x05_P2_00mm_Horizontal, { translate: pt(2.066, 1.457), rotate: 0, - id: 'can' + id: 'J4' }) -const can_reg_ic = board.add(SOT_23_5, { - translate: pt(1.133, 0.957), rotate: 0, - id: 'can_reg_ic' +// can_reg.ic +const U5 = board.add(SOT_23_5, { + translate: pt(1.541, 0.957), rotate: 0, + id: 'U5' }) -const can_reg_in_cap_cap = board.add(C_0603_1608Metric, { - translate: pt(1.284, 1.093), rotate: 0, - id: 'can_reg_in_cap_cap' +// can_reg.in_cap.cap +const C20 = board.add(C_0603_1608Metric, { + translate: pt(1.692, 1.093), rotate: 0, + id: 'C20' }) -const can_reg_out_cap_cap = board.add(C_0805_2012Metric, { - translate: pt(1.120, 1.102), rotate: 0, - id: 'can_reg_out_cap_cap' +// can_reg.out_cap.cap +const C21 = board.add(C_0805_2012Metric, { + translate: pt(1.528, 1.102), rotate: 0, + id: 'C21' }) -const led_can_package = board.add(LED_0603_1608Metric, { +// led_can.package +const D3 = board.add(LED_0603_1608Metric, { translate: pt(1.509, 1.486), rotate: 0, - id: 'led_can_package' + id: 'D3' }) -const led_can_res = board.add(R_0603_1608Metric, { +// led_can.res +const R12 = board.add(R_0603_1608Metric, { translate: pt(1.509, 1.583), rotate: 0, - id: 'led_can_res' + id: 'R12' }) -const can_esd = board.add(SOT_23, { +// can_esd +const U6 = board.add(SOT_23, { translate: pt(1.951, 1.524), rotate: 0, - id: 'can_esd' + id: 'U6' }) +board.setNetlist([ + {name: "vusb", pads: [["J1", "A4"], ["J1", "B9"], ["J1", "B4"], ["J1", "A9"], ["U1", "1"], ["U1", "3"], ["C1", "1"]]}, + {name: "gnd", pads: [["U3", "3"], ["J1", "A1"], ["J1", "B12"], ["J1", "B1"], ["J1", "A12"], ["U1", "2"], ["U2", "17"], ["U2", "11"], ["U2", "20"], ["U2", "40"], ["U2", "41"], ["U4", "4"], ["SW1", "2"], ["SW2", "2"], ["J1", "S1"], ["C1", "2"], ["C2", "2"], ["C3", "2"], ["C4", "2"], ["C5", "2"], ["C6", "2"], ["C7", "2"], ["C8", "2"], ["C9", "2"], ["C10", "2"], ["C11", "2"], ["C12", "2"], ["C13", "2"], ["C14", "2"], ["X1", "2"], ["X1", "4"], ["C17", "2"], ["J3", "2"], ["C19", "2"], ["R4", "1"], ["R1", "1"], ["R2", "1"], ["J2", "2"], ["J2", "3"], ["J2", "5"], ["C15", "2"], ["C16", "2"]]}, + {name: "v3v3", pads: [["U1", "5"], ["U2", "16"], ["U2", "10"], ["U2", "14"], ["U2", "30"], ["U2", "27"], ["U2", "39"], ["U2", "42"], ["U4", "1"], ["D1", "2"], ["D2", "2"], ["C2", "1"], ["J2", "1"], ["C3", "1"], ["C4", "1"], ["C5", "1"], ["C6", "1"], ["C7", "1"], ["C8", "1"], ["C9", "1"], ["C10", "1"], ["C11", "1"], ["C12", "1"], ["C13", "1"], ["C14", "1"], ["C17", "1"], ["J3", "7"], ["C19", "1"], ["R3", "1"]]}, + {name: "can_vcan", pads: [["J4", "2"], ["U5", "1"], ["U5", "3"], ["C20", "1"]]}, + {name: "can_gnd", pads: [["J4", "3"], ["U6", "3"], ["U5", "2"], ["R12", "2"], ["U4", "5"], ["C20", "2"], ["C21", "2"], ["C18", "2"]]}, + {name: "can_v5v", pads: [["U5", "5"], ["D3", "2"], ["U4", "8"], ["C21", "1"], ["C18", "1"]]}, + {name: "usb.usb.dp", pads: [["J1", "A6"], ["J1", "B6"], ["U3", "2"], ["U2", "35"]]}, + {name: "usb.usb.dm", pads: [["J1", "A7"], ["J1", "B7"], ["U3", "1"], ["U2", "36"]]}, + {name: "can_chain_0.txd", pads: [["U2", "8"], ["U4", "3"]]}, + {name: "can_chain_0.rxd", pads: [["U2", "12"], ["U4", "2"]]}, + {name: "sw_usb.out", pads: [["U2", "28"], ["SW1", "1"]]}, + {name: "sw_can.out", pads: [["U2", "48"], ["SW2", "1"]]}, + {name: "lcd.led", pads: [["U2", "23"], ["R5", "1"]]}, + {name: "lcd.reset", pads: [["U2", "13"], ["J3", "3"]]}, + {name: "lcd.rs", pads: [["U2", "15"], ["J3", "4"]]}, + {name: "lcd.spi.sck", pads: [["U2", "21"], ["J3", "6"]]}, + {name: "lcd.spi.mosi", pads: [["U2", "18"], ["J3", "5"]]}, + {name: "lcd.cs", pads: [["U2", "22"], ["J3", "8"]]}, + {name: "mcu.gpio.rgb_usb_red", pads: [["U2", "2"], ["R6", "2"]]}, + {name: "mcu.gpio.rgb_usb_green", pads: [["U2", "1"], ["R7", "2"]]}, + {name: "mcu.gpio.rgb_usb_blue", pads: [["U2", "3"], ["R8", "2"]]}, + {name: "mcu.gpio.rgb_can_red", pads: [["U2", "6"], ["R9", "2"]]}, + {name: "mcu.gpio.rgb_can_green", pads: [["U2", "4"], ["R10", "2"]]}, + {name: "mcu.gpio.rgb_can_blue", pads: [["U2", "7"], ["R11", "2"]]}, + {name: "xcvr.can.canh", pads: [["U4", "7"], ["U6", "2"], ["J4", "4"]]}, + {name: "xcvr.can.canl", pads: [["U4", "6"], ["U6", "1"], ["J4", "5"]]}, + {name: "usb.conn.cc.cc1", pads: [["J1", "A5"], ["R1", "2"]]}, + {name: "usb.conn.cc.cc2", pads: [["J1", "B5"], ["R2", "2"]]}, + {name: "mcu.xtal_node.xi", pads: [["U2", "26"], ["X1", "1"], ["C15", "1"]]}, + {name: "mcu.xtal_node.xo", pads: [["U2", "25"], ["X1", "3"], ["C16", "1"]]}, + {name: "mcu.swd_node.swdio", pads: [["U2", "33"], ["J2", "10"], ["R3", "2"]]}, + {name: "mcu.swd_node.swclk", pads: [["U2", "29"], ["J2", "9"], ["R4", "2"]]}, + {name: "mcu.reset_node", pads: [["U2", "34"], ["J2", "6"]]}, + {name: "mcu.swd.swo", pads: [["U2", "9"], ["J2", "8"]]}, + {name: "mcu.swd.tdi", pads: [["J2", "7"]]}, + {name: "mcu.ic.xtal_rtc.xtal_in", pads: [["U2", "31"]]}, + {name: "mcu.ic.xtal_rtc.xtal_out", pads: [["U2", "32"]]}, + {name: "lcd.led_res.b", pads: [["R5", "2"], ["J3", "1"]]}, + {name: "rgb_usb.red_res.a", pads: [["R6", "1"], ["D1", "3"]]}, + {name: "rgb_usb.green_res.a", pads: [["R7", "1"], ["D1", "4"]]}, + {name: "rgb_usb.blue_res.a", pads: [["R8", "1"], ["D1", "1"]]}, + {name: "rgb_can.red_res.a", pads: [["R9", "1"], ["D2", "3"]]}, + {name: "rgb_can.green_res.a", pads: [["R10", "1"], ["D2", "4"]]}, + {name: "rgb_can.blue_res.a", pads: [["R11", "1"], ["D2", "1"]]}, + {name: "led_can.res.a", pads: [["R12", "1"], ["D3", "1"]]} +]) + const limit0 = pt(-0.07874015748031496, -0.07874015748031496); const limit1 = pt(2.1057086614173235, 1.7822834645669294); const xMin = Math.min(limit0[0], limit1[0]); diff --git a/examples/Datalogger/Datalogger.svgpcb.js b/examples/Datalogger/Datalogger.svgpcb.js index bb0a03991..1563a475a 100644 --- a/examples/Datalogger/Datalogger.svgpcb.js +++ b/examples/Datalogger/Datalogger.svgpcb.js @@ -1,430 +1,634 @@ const board = new PCB(); -const pwr_conn = board.add(Molex_DuraClik_vert_3pin, { +// pwr_conn +const J1 = board.add(Molex_DuraClik_vert_3pin, { translate: pt(3.367, 2.356), rotate: 0, - id: 'pwr_conn' + id: 'J1' }) -const usb_conn_conn = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { +// usb_conn.conn +const J2 = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { translate: pt(1.843, 1.867), rotate: 0, - id: 'usb_conn_conn' + id: 'J2' }) -const usb_conn_cc_pull_cc1_res = board.add(R_0603_1608Metric, { +// usb_conn.cc_pull.cc1.res +const R1 = board.add(R_0603_1608Metric, { translate: pt(1.692, 2.122), rotate: 0, - id: 'usb_conn_cc_pull_cc1_res' + id: 'R1' }) -const usb_conn_cc_pull_cc2_res = board.add(R_0603_1608Metric, { +// usb_conn.cc_pull.cc2.res +const R2 = board.add(R_0603_1608Metric, { translate: pt(1.848, 2.122), rotate: 0, - id: 'usb_conn_cc_pull_cc2_res' + id: 'R2' }) -const bat = board.add(BatteryHolder_Keystone_106_1x20mm, { +// bat +const U1 = board.add(BatteryHolder_Keystone_106_1x20mm, { translate: pt(2.492, 0.369), rotate: 0, - id: 'bat' + id: 'U1' }) -const pwr_5v_ic = board.add(SOT_23_6, { +// pwr_5v.ic +const U2 = board.add(SOT_23_6, { translate: pt(2.511, 1.770), rotate: 0, - id: 'pwr_5v_ic' + id: 'U2' }) -const pwr_5v_fb_div_top_res = board.add(R_0603_1608Metric, { +// pwr_5v.fb.div.top_res +const R3 = board.add(R_0603_1608Metric, { translate: pt(2.576, 1.987), rotate: 0, - id: 'pwr_5v_fb_div_top_res' + id: 'R3' }) -const pwr_5v_fb_div_bottom_res = board.add(R_0603_1608Metric, { +// pwr_5v.fb.div.bottom_res +const R4 = board.add(R_0603_1608Metric, { translate: pt(2.229, 2.104), rotate: 0, - id: 'pwr_5v_fb_div_bottom_res' + id: 'R4' }) -const pwr_5v_hf_in_cap_cap = board.add(C_0603_1608Metric, { +// pwr_5v.hf_in_cap.cap +const C1 = board.add(C_0603_1608Metric, { translate: pt(2.385, 2.104), rotate: 0, - id: 'pwr_5v_hf_in_cap_cap' + id: 'C1' }) -const pwr_5v_vbst_cap = board.add(C_0603_1608Metric, { +// pwr_5v.vbst_cap +const C2 = board.add(C_0603_1608Metric, { translate: pt(2.541, 2.104), rotate: 0, - id: 'pwr_5v_vbst_cap' + id: 'C2' }) -const pwr_5v_power_path_inductor = board.add(L_Taiyo_Yuden_NR_50xx, { +// pwr_5v.power_path.inductor +const L1 = board.add(L_Taiyo_Yuden_NR_50xx, { translate: pt(2.281, 1.811), rotate: 0, - id: 'pwr_5v_power_path_inductor' + id: 'L1' }) -const pwr_5v_power_path_in_cap_cap = board.add(C_0805_2012Metric, { +// pwr_5v.power_path.in_cap.cap +const C3 = board.add(C_0805_2012Metric, { translate: pt(2.238, 1.997), rotate: 0, - id: 'pwr_5v_power_path_in_cap_cap' + id: 'C3' }) -const pwr_5v_power_path_out_cap_cap = board.add(C_0805_2012Metric, { +// pwr_5v.power_path.out_cap.cap +const C4 = board.add(C_0805_2012Metric, { translate: pt(2.411, 1.997), rotate: 0, - id: 'pwr_5v_power_path_out_cap_cap' + id: 'C4' }) -const buffer_sense = board.add(R_0603_1608Metric, { +// buffer.sense +const R5 = board.add(R_0603_1608Metric, { translate: pt(1.881, 1.364), rotate: 0, - id: 'buffer_sense' + id: 'R5' }) -const buffer_fet = board.add(SOT_223_3_TabPin2, { +// buffer.fet +const Q1 = board.add(SOT_223_3_TabPin2, { translate: pt(1.996, 0.981), rotate: 0, - id: 'buffer_fet' + id: 'Q1' }) -const buffer_diode = board.add(D_SOD_323, { +// buffer.diode +const D1 = board.add(D_SOD_323, { translate: pt(2.087, 1.200), rotate: 0, - id: 'buffer_diode' + id: 'D1' }) -const buffer_set_div_top_res = board.add(R_0603_1608Metric, { +// buffer.set.div.top_res +const R6 = board.add(R_0603_1608Metric, { translate: pt(2.037, 1.364), rotate: 0, - id: 'buffer_set_div_top_res' + id: 'R6' }) -const buffer_set_div_bottom_res = board.add(R_0603_1608Metric, { +// buffer.set.div.bottom_res +const R7 = board.add(R_0603_1608Metric, { translate: pt(1.263, 1.465), rotate: 0, - id: 'buffer_set_div_bottom_res' + id: 'R7' }) -const buffer_amp_ic = board.add(SOT_23_6, { +// buffer.amp.ic +const U3 = board.add(SOT_23_6, { translate: pt(1.904, 1.229), rotate: 0, - id: 'buffer_amp_ic' + id: 'U3' }) -const buffer_amp_vdd_cap_cap = board.add(C_0603_1608Metric, { +// buffer.amp.vdd_cap.cap +const C5 = board.add(C_0603_1608Metric, { translate: pt(1.419, 1.465), rotate: 0, - id: 'buffer_amp_vdd_cap_cap' + id: 'C5' }) -const buffer_cap = board.add(CP_Radial_D14_0mm_P5_00mm, { +// buffer.cap +const C6 = board.add(CP_Radial_D14_0mm_P5_00mm, { translate: pt(1.406, 1.118), rotate: 0, - id: 'buffer_cap' + id: 'C6' }) -const pwr_3v3_ic = board.add(SOT_223_3_TabPin2, { +// pwr_3v3.ic +const U4 = board.add(SOT_223_3_TabPin2, { translate: pt(2.925, 1.844), rotate: 0, - id: 'pwr_3v3_ic' + id: 'U4' }) -const pwr_3v3_in_cap_cap = board.add(C_0603_1608Metric, { +// pwr_3v3.in_cap.cap +const C7 = board.add(C_0603_1608Metric, { translate: pt(2.983, 2.054), rotate: 0, - id: 'pwr_3v3_in_cap_cap' + id: 'C7' }) -const pwr_3v3_out_cap_cap = board.add(C_0805_2012Metric, { +// pwr_3v3.out_cap.cap +const C8 = board.add(C_0805_2012Metric, { translate: pt(2.819, 2.064), rotate: 0, - id: 'pwr_3v3_out_cap_cap' + id: 'C8' }) -const mcu_swd_conn = board.add(PinHeader_2x05_P1_27mm_Vertical_SMD, { +// mcu.swd.conn +const J3 = board.add(PinHeader_2x05_P1_27mm_Vertical_SMD, { translate: pt(1.941, 0.146), rotate: 0, - id: 'mcu_swd_conn' + id: 'J3' }) -const mcu_ic = board.add(LQFP_64_10x10mm_P0_5mm, { +// mcu.ic +const U5 = board.add(LQFP_64_10x10mm_P0_5mm, { translate: pt(1.469, 0.264), rotate: 0, - id: 'mcu_ic' + id: 'U5' }) -const mcu_swd_pull_swdio_res = board.add(R_0603_1608Metric, { +// mcu.swd_pull.swdio.res +const R8 = board.add(R_0603_1608Metric, { translate: pt(1.263, 0.596), rotate: 0, - id: 'mcu_swd_pull_swdio_res' + id: 'R8' }) -const mcu_swd_pull_swclk_res = board.add(R_0603_1608Metric, { +// mcu.swd_pull.swclk.res +const R9 = board.add(R_0603_1608Metric, { translate: pt(1.419, 0.596), rotate: 0, - id: 'mcu_swd_pull_swclk_res' + id: 'R9' }) -const mcu_pwr_cap_0__cap = board.add(C_0603_1608Metric, { +// mcu.pwr_cap[0].cap +const C9 = board.add(C_0603_1608Metric, { translate: pt(1.575, 0.596), rotate: 0, - id: 'mcu_pwr_cap_0__cap' + id: 'C9' }) -const mcu_pwr_cap_1__cap = board.add(C_0603_1608Metric, { +// mcu.pwr_cap[1].cap +const C10 = board.add(C_0603_1608Metric, { translate: pt(1.731, 0.596), rotate: 0, - id: 'mcu_pwr_cap_1__cap' + id: 'C10' }) -const mcu_pwr_cap_2__cap = board.add(C_0603_1608Metric, { +// mcu.pwr_cap[2].cap +const C11 = board.add(C_0603_1608Metric, { translate: pt(1.887, 0.596), rotate: 0, - id: 'mcu_pwr_cap_2__cap' + id: 'C11' }) -const mcu_pwr_cap_3__cap = board.add(C_0603_1608Metric, { +// mcu.pwr_cap[3].cap +const C12 = board.add(C_0603_1608Metric, { translate: pt(2.043, 0.596), rotate: 0, - id: 'mcu_pwr_cap_3__cap' + id: 'C12' }) -const mcu_pwr_cap_4__cap = board.add(C_0603_1608Metric, { +// mcu.pwr_cap[4].cap +const C13 = board.add(C_0603_1608Metric, { translate: pt(2.198, 0.596), rotate: 0, - id: 'mcu_pwr_cap_4__cap' + id: 'C13' }) -const mcu_pwr_cap_5__cap = board.add(C_0603_1608Metric, { +// mcu.pwr_cap[5].cap +const C14 = board.add(C_0603_1608Metric, { translate: pt(1.263, 0.693), rotate: 0, - id: 'mcu_pwr_cap_5__cap' + id: 'C14' }) -const mcu_vbat_cap_cap = board.add(C_0603_1608Metric, { +// mcu.vbat_cap.cap +const C15 = board.add(C_0603_1608Metric, { translate: pt(1.419, 0.693), rotate: 0, - id: 'mcu_vbat_cap_cap' + id: 'C15' }) -const mcu_pwra_cap_0__cap = board.add(C_0603_1608Metric, { +// mcu.pwra_cap[0].cap +const C16 = board.add(C_0603_1608Metric, { translate: pt(1.575, 0.693), rotate: 0, - id: 'mcu_pwra_cap_0__cap' + id: 'C16' }) -const mcu_pwra_cap_1__cap = board.add(C_0805_2012Metric, { +// mcu.pwra_cap[1].cap +const C17 = board.add(C_0805_2012Metric, { translate: pt(2.043, 0.369), rotate: 0, - id: 'mcu_pwra_cap_1__cap' + id: 'C17' }) -const mcu_vref_cap_0__cap = board.add(C_0603_1608Metric, { +// mcu.vref_cap[0].cap +const C18 = board.add(C_0603_1608Metric, { translate: pt(1.731, 0.693), rotate: 0, - id: 'mcu_vref_cap_0__cap' + id: 'C18' }) -const mcu_vref_cap_1__cap = board.add(C_0603_1608Metric, { +// mcu.vref_cap[1].cap +const C19 = board.add(C_0603_1608Metric, { translate: pt(1.887, 0.693), rotate: 0, - id: 'mcu_vref_cap_1__cap' + id: 'C19' }) -const mcu_vref_cap_2__cap = board.add(C_0805_2012Metric, { +// mcu.vref_cap[2].cap +const C20 = board.add(C_0805_2012Metric, { translate: pt(2.217, 0.369), rotate: 0, - id: 'mcu_vref_cap_2__cap' + id: 'C20' }) -const mcu_crystal_package = board.add(Crystal_SMD_3225_4Pin_3_2x2_5mm, { +// mcu.crystal.package +const X1 = board.add(Crystal_SMD_3225_4Pin_3_2x2_5mm, { translate: pt(1.854, 0.398), rotate: 0, - id: 'mcu_crystal_package' + id: 'X1' }) -const mcu_crystal_cap_a = board.add(C_0603_1608Metric, { +// mcu.crystal.cap_a +const C21 = board.add(C_0603_1608Metric, { translate: pt(2.043, 0.693), rotate: 0, - id: 'mcu_crystal_cap_a' + id: 'C21' }) -const mcu_crystal_cap_b = board.add(C_0603_1608Metric, { +// mcu.crystal.cap_b +const C22 = board.add(C_0603_1608Metric, { translate: pt(2.198, 0.693), rotate: 0, - id: 'mcu_crystal_cap_b' + id: 'C22' }) -const can_conn = board.add(Molex_DuraClik_vert_5pin, { +// can.conn +const J4 = board.add(Molex_DuraClik_vert_5pin, { translate: pt(0.000, 2.238), rotate: 0, - id: 'can_conn' + id: 'J4' }) -const can_can_fuse_fuse = board.add(R_0603_1608Metric, { +// can.can_fuse.fuse +const F1 = board.add(R_0603_1608Metric, { translate: pt(0.231, 2.150), rotate: 0, - id: 'can_can_fuse_fuse' + id: 'F1' }) -const can_reg_ic = board.add(SOT_23_5, { +// can.reg.ic +const U6 = board.add(SOT_23_5, { translate: pt(0.589, 1.770), rotate: 0, - id: 'can_reg_ic' + id: 'U6' }) -const can_reg_in_cap_cap = board.add(C_0603_1608Metric, { +// can.reg.in_cap.cap +const C23 = board.add(C_0603_1608Metric, { translate: pt(0.387, 2.150), rotate: 0, - id: 'can_reg_in_cap_cap' + id: 'C23' }) -const can_reg_out_cap_cap = board.add(C_0805_2012Metric, { +// can.reg.out_cap.cap +const C24 = board.add(C_0805_2012Metric, { translate: pt(0.067, 2.160), rotate: 0, - id: 'can_reg_out_cap_cap' + id: 'C24' }) -const can_esd = board.add(SOT_23, { +// can.esd +const U7 = board.add(SOT_23, { translate: pt(0.583, 1.943), rotate: 0, - id: 'can_esd' + id: 'U7' }) -const can_transceiver_ic = board.add(SOP_8_6_62x9_15mm_P2_54mm, { +// can.transceiver.ic +const U8 = board.add(SOP_8_6_62x9_15mm_P2_54mm, { translate: pt(0.234, 1.893), rotate: 0, - id: 'can_transceiver_ic' + id: 'U8' }) -const can_transceiver_logic_cap_cap = board.add(C_0603_1608Metric, { +// can.transceiver.logic_cap.cap +const C25 = board.add(C_0603_1608Metric, { translate: pt(0.543, 2.150), rotate: 0, - id: 'can_transceiver_logic_cap_cap' + id: 'C25' }) -const can_transceiver_can_cap_cap = board.add(C_0603_1608Metric, { +// can.transceiver.can_cap.cap +const C26 = board.add(C_0603_1608Metric, { translate: pt(0.699, 2.150), rotate: 0, - id: 'can_transceiver_can_cap_cap' + id: 'C26' }) -const sd = board.add(SD_Kyocera_145638009511859+, { +// sd +const J5 = board.add(SD_Kyocera_145638009511859+, { translate: pt(0.565, 1.122), rotate: 0, - id: 'sd' + id: 'J5' }) -const cd_pull_res = board.add(R_0603_1608Metric, { - translate: pt(2.956, 2.385), rotate: 0, - id: 'cd_pull_res' +// cd_pull.res +const R10 = board.add(R_0603_1608Metric, { + translate: pt(2.721, 2.385), rotate: 0, + id: 'R10' }) -const xbee_ic = board.add(XBEE, { - translate: pt(1.876, 2.453), rotate: 0, - id: 'xbee_ic' +// xbee.ic +const U9 = board.add(XBEE, { + translate: pt(1.172, 2.453), rotate: 0, + id: 'U9' }) -const xbee_vdd_cap_0_cap = board.add(C_0603_1608Metric, { - translate: pt(1.778, 2.385), rotate: 0, - id: 'xbee_vdd_cap_0_cap' +// xbee.vdd_cap_0.cap +const C27 = board.add(C_0603_1608Metric, { + translate: pt(1.074, 2.385), rotate: 0, + id: 'C27' }) -const xbee_vdd_cap_1_cap = board.add(C_0603_1608Metric, { - translate: pt(1.778, 2.482), rotate: 0, - id: 'xbee_vdd_cap_1_cap' +// xbee.vdd_cap_1.cap +const C28 = board.add(C_0603_1608Metric, { + translate: pt(1.074, 2.482), rotate: 0, + id: 'C28' }) -const xbee_assoc_package = board.add(LED_0603_1608Metric, { +// xbee_assoc.package +const D2 = board.add(LED_0603_1608Metric, { translate: pt(0.840, 2.385), rotate: 0, - id: 'xbee_assoc_package' + id: 'D2' }) -const xbee_assoc_res = board.add(R_0603_1608Metric, { +// xbee_assoc.res +const R11 = board.add(R_0603_1608Metric, { translate: pt(0.839, 2.482), rotate: 0, - id: 'xbee_assoc_res' + id: 'R11' }) -const rtc_ic = board.add(SOIC_16W_7_5x10_3mm_P1_27mm, { +// rtc.ic +const U10 = board.add(SOIC_16W_7_5x10_3mm_P1_27mm, { translate: pt(1.109, 1.915), rotate: 0, - id: 'rtc_ic' + id: 'U10' }) -const rtc_vdd_res_res = board.add(R_0603_1608Metric, { +// rtc.vdd_res.res +const R12 = board.add(R_0603_1608Metric, { translate: pt(1.440, 1.848), rotate: 0, - id: 'rtc_vdd_res_res' + id: 'R12' }) -const rtc_vdd_cap_0_cap = board.add(C_0603_1608Metric, { +// rtc.vdd_cap_0.cap +const C29 = board.add(C_0603_1608Metric, { translate: pt(1.440, 1.945), rotate: 0, - id: 'rtc_vdd_cap_0_cap' + id: 'C29' }) -const rtc_vdd_cap_1_cap = board.add(C_0805_2012Metric, { +// rtc.vdd_cap_1.cap +const C30 = board.add(C_0805_2012Metric, { translate: pt(1.449, 1.741), rotate: 0, - id: 'rtc_vdd_cap_1_cap' + id: 'C30' }) -const rtc_vbat_cap_cap = board.add(C_0603_1608Metric, { +// rtc.vbat_cap.cap +const C31 = board.add(C_0603_1608Metric, { translate: pt(1.440, 2.042), rotate: 0, - id: 'rtc_vbat_cap_cap' + id: 'C31' }) -const rtc_bbs_cap_cap = board.add(C_0603_1608Metric, { +// rtc.bbs_cap.cap +const C32 = board.add(C_0603_1608Metric, { translate: pt(0.934, 2.196), rotate: 0, - id: 'rtc_bbs_cap_cap' + id: 'C32' }) -const eink_ic = board.add(Hirose_FH12_24S_0_5SH_1x24_1MP_P0_50mm_Horizontal, { +// eink.ic +const U11 = board.add(Hirose_FH12_24S_0_5SH_1x24_1MP_P0_50mm_Horizontal, { translate: pt(2.644, 1.032), rotate: 0, - id: 'eink_ic' + id: 'U11' }) -const eink_boost_sw = board.add(SOT_23, { +// eink.boost_sw +const Q2 = board.add(SOT_23, { translate: pt(3.115, 0.906), rotate: 0, - id: 'eink_boost_sw' + id: 'Q2' }) -const eink_boost_ind = board.add(L_0805_2012Metric, { +// eink.boost_ind +const L2 = board.add(L_0805_2012Metric, { translate: pt(2.979, 1.223), rotate: 0, - id: 'eink_boost_ind' + id: 'L2' }) -const eink_boost_res = board.add(R_0603_1608Metric, { +// eink.boost_res +const R13 = board.add(R_0603_1608Metric, { translate: pt(3.146, 1.219), rotate: 0, - id: 'eink_boost_res' + id: 'R13' }) -const eink_boot_cap = board.add(C_0805_2012Metric, { +// eink.boot_cap +const C33 = board.add(C_0805_2012Metric, { translate: pt(2.804, 1.228), rotate: 0, - id: 'eink_boot_cap' + id: 'C33' }) -const eink_vdd_cap0_cap = board.add(C_0603_1608Metric, { +// eink.vdd_cap0.cap +const C34 = board.add(C_0603_1608Metric, { translate: pt(2.346, 1.348), rotate: 0, - id: 'eink_vdd_cap0_cap' + id: 'C34' }) -const eink_vdd_cap1_cap = board.add(C_0603_1608Metric, { +// eink.vdd_cap1.cap +const C35 = board.add(C_0603_1608Metric, { translate: pt(2.502, 1.348), rotate: 0, - id: 'eink_vdd_cap1_cap' + id: 'C35' }) -const eink_vslr_cap = board.add(C_0603_1608Metric, { +// eink.vslr_cap +const C36 = board.add(C_0603_1608Metric, { translate: pt(2.658, 1.348), rotate: 0, - id: 'eink_vslr_cap' + id: 'C36' }) -const eink_vdhr_cap = board.add(C_0603_1608Metric, { +// eink.vdhr_cap +const C37 = board.add(C_0603_1608Metric, { translate: pt(2.813, 1.348), rotate: 0, - id: 'eink_vdhr_cap' + id: 'C37' }) -const eink_vddd_cap = board.add(C_0603_1608Metric, { +// eink.vddd_cap +const C38 = board.add(C_0603_1608Metric, { translate: pt(2.969, 1.348), rotate: 0, - id: 'eink_vddd_cap' + id: 'C38' }) -const eink_vdh_cap = board.add(C_0603_1608Metric, { +// eink.vdh_cap +const C39 = board.add(C_0603_1608Metric, { translate: pt(3.125, 1.348), rotate: 0, - id: 'eink_vdh_cap' + id: 'C39' }) -const eink_vgh_cap = board.add(C_0603_1608Metric, { +// eink.vgh_cap +const C40 = board.add(C_0603_1608Metric, { translate: pt(2.346, 1.445), rotate: 0, - id: 'eink_vgh_cap' + id: 'C40' }) -const eink_vdl_cap = board.add(C_0603_1608Metric, { +// eink.vdl_cap +const C41 = board.add(C_0603_1608Metric, { translate: pt(2.502, 1.445), rotate: 0, - id: 'eink_vdl_cap' + id: 'C41' }) -const eink_vgl_cap = board.add(C_0603_1608Metric, { +// eink.vgl_cap +const C42 = board.add(C_0603_1608Metric, { translate: pt(2.658, 1.445), rotate: 0, - id: 'eink_vgl_cap' + id: 'C42' }) -const eink_vcom_cap = board.add(C_0603_1608Metric, { +// eink.vcom_cap +const C43 = board.add(C_0603_1608Metric, { translate: pt(2.813, 1.445), rotate: 0, - id: 'eink_vcom_cap' + id: 'C43' }) -const eink_boost_dio = board.add(D_SOD_123, { +// eink.boost_dio +const D3 = board.add(D_SOD_123, { translate: pt(3.132, 1.058), rotate: 0, - id: 'eink_boost_dio' + id: 'D3' }) -const eink_vgl_dio = board.add(D_SOD_123, { +// eink.vgl_dio +const D4 = board.add(D_SOD_123, { translate: pt(2.380, 1.235), rotate: 0, - id: 'eink_vgl_dio' + id: 'D4' }) -const eink_boot_dio = board.add(D_SOD_123, { +// eink.boot_dio +const D5 = board.add(D_SOD_123, { translate: pt(2.605, 1.235), rotate: 0, - id: 'eink_boot_dio' + id: 'D5' }) -const ext = board.add(PinHeader_1x06_P2_54mm_Vertical, { +// ext +const U12 = board.add(PinHeader_1x06_P2_54mm_Vertical, { translate: pt(3.414, 1.410), rotate: 0, - id: 'ext' -}) -const rgb1_package = board.add(LED_LiteOn_LTST_C19HE1WT, { - translate: pt(0.041, 2.411), rotate: 0, - id: 'rgb1_package' -}) -const rgb1_red_res = board.add(R_0603_1608Metric, { - translate: pt(0.180, 2.385), rotate: 0, - id: 'rgb1_red_res' -}) -const rgb1_green_res = board.add(R_0603_1608Metric, { - translate: pt(0.058, 2.535), rotate: 0, - id: 'rgb1_green_res' -}) -const rgb1_blue_res = board.add(R_0603_1608Metric, { - translate: pt(0.214, 2.535), rotate: 0, - id: 'rgb1_blue_res' + id: 'U12' }) -const rgb2_package = board.add(LED_LiteOn_LTST_C19HE1WT, { +// rgb1.package +const D6 = board.add(LED_LiteOn_LTST_C19HE1WT, { translate: pt(3.258, 1.758), rotate: 0, - id: 'rgb2_package' + id: 'D6' }) -const rgb2_red_res = board.add(R_0603_1608Metric, { +// rgb1.red_res +const R14 = board.add(R_0603_1608Metric, { translate: pt(3.397, 1.731), rotate: 0, - id: 'rgb2_red_res' + id: 'R14' }) -const rgb2_green_res = board.add(R_0603_1608Metric, { +// rgb1.green_res +const R15 = board.add(R_0603_1608Metric, { translate: pt(3.275, 1.881), rotate: 0, - id: 'rgb2_green_res' + id: 'R15' }) -const rgb2_blue_res = board.add(R_0603_1608Metric, { +// rgb1.blue_res +const R16 = board.add(R_0603_1608Metric, { translate: pt(3.431, 1.881), rotate: 0, - id: 'rgb2_blue_res' + id: 'R16' +}) +// rgb2.package +const D7 = board.add(LED_LiteOn_LTST_C19HE1WT, { + translate: pt(0.041, 2.411), rotate: 0, + id: 'D7' +}) +// rgb2.red_res +const R17 = board.add(R_0603_1608Metric, { + translate: pt(0.180, 2.385), rotate: 0, + id: 'R17' +}) +// rgb2.green_res +const R18 = board.add(R_0603_1608Metric, { + translate: pt(0.058, 2.535), rotate: 0, + id: 'R18' }) -const rgb3_package = board.add(LED_LiteOn_LTST_C19HE1WT, { +// rgb2.blue_res +const R19 = board.add(R_0603_1608Metric, { + translate: pt(0.214, 2.535), rotate: 0, + id: 'R19' +}) +// rgb3.package +const D8 = board.add(LED_LiteOn_LTST_C19HE1WT, { translate: pt(0.432, 2.411), rotate: 0, - id: 'rgb3_package' + id: 'D8' }) -const rgb3_red_res = board.add(R_0603_1608Metric, { +// rgb3.red_res +const R20 = board.add(R_0603_1608Metric, { translate: pt(0.571, 2.385), rotate: 0, - id: 'rgb3_red_res' + id: 'R20' }) -const rgb3_green_res = board.add(R_0603_1608Metric, { +// rgb3.green_res +const R21 = board.add(R_0603_1608Metric, { translate: pt(0.449, 2.535), rotate: 0, - id: 'rgb3_green_res' + id: 'R21' }) -const rgb3_blue_res = board.add(R_0603_1608Metric, { +// rgb3.blue_res +const R22 = board.add(R_0603_1608Metric, { translate: pt(0.605, 2.535), rotate: 0, - id: 'rgb3_blue_res' + id: 'R22' }) -const sw1_package = board.add(SW_Push_SPST_NO_Alps_SKRK, { - translate: pt(2.437, 2.423), rotate: 0, - id: 'sw1_package' -}) -const sw1_pull_res = board.add(R_0603_1608Metric, { - translate: pt(3.191, 2.385), rotate: 0, - id: 'sw1_pull_res' -}) -const sw2_package = board.add(SW_Push_SPST_NO_Alps_SKRK, { +// sw1.package +const SW1 = board.add(SW_Push_SPST_NO_Alps_SKRK, { translate: pt(2.102, 2.423), rotate: 0, - id: 'sw2_package' -}) -const sw2_pull_res = board.add(R_0603_1608Metric, { - translate: pt(2.721, 2.385), rotate: 0, - id: 'sw2_pull_res' -}) -const v12sense_div_top_res = board.add(R_0603_1608Metric, { - translate: pt(1.309, 2.385), rotate: 0, - id: 'v12sense_div_top_res' + id: 'SW1' }) -const v12sense_div_bottom_res = board.add(R_0603_1608Metric, { - translate: pt(1.309, 2.482), rotate: 0, - id: 'v12sense_div_bottom_res' -}) -const v5sense_div_top_res = board.add(R_0603_1608Metric, { - translate: pt(1.544, 2.385), rotate: 0, - id: 'v5sense_div_top_res' -}) -const v5sense_div_bottom_res = board.add(R_0603_1608Metric, { - translate: pt(1.544, 2.482), rotate: 0, - id: 'v5sense_div_bottom_res' +// sw1_pull.res +const R23 = board.add(R_0603_1608Metric, { + translate: pt(2.956, 2.385), rotate: 0, + id: 'R23' }) -const vscsense_div_top_res = board.add(R_0603_1608Metric, { - translate: pt(1.074, 2.385), rotate: 0, - id: 'vscsense_div_top_res' +// sw2.package +const SW2 = board.add(SW_Push_SPST_NO_Alps_SKRK, { + translate: pt(2.437, 2.423), rotate: 0, + id: 'SW2' }) -const vscsense_div_bottom_res = board.add(R_0603_1608Metric, { - translate: pt(1.074, 2.482), rotate: 0, - id: 'vscsense_div_bottom_res' +// sw2_pull.res +const R24 = board.add(R_0603_1608Metric, { + translate: pt(3.191, 2.385), rotate: 0, + id: 'R24' +}) +// v12sense.div.top_res +const R25 = board.add(R_0603_1608Metric, { + translate: pt(1.348, 2.385), rotate: 0, + id: 'R25' +}) +// v12sense.div.bottom_res +const R26 = board.add(R_0603_1608Metric, { + translate: pt(1.348, 2.482), rotate: 0, + id: 'R26' +}) +// v5sense.div.top_res +const R27 = board.add(R_0603_1608Metric, { + translate: pt(1.583, 2.385), rotate: 0, + id: 'R27' +}) +// v5sense.div.bottom_res +const R28 = board.add(R_0603_1608Metric, { + translate: pt(1.583, 2.482), rotate: 0, + id: 'R28' +}) +// vscsense.div.top_res +const R29 = board.add(R_0603_1608Metric, { + translate: pt(1.818, 2.385), rotate: 0, + id: 'R29' +}) +// vscsense.div.bottom_res +const R30 = board.add(R_0603_1608Metric, { + translate: pt(1.818, 2.482), rotate: 0, + id: 'R30' }) +board.setNetlist([ + {name: "gnd", pads: [["J1", "1"], ["J1", "3"], ["U1", "2"], ["J5", "3"], ["J5", "6"], ["J5", "SH"], ["U12", "3"], ["J2", "A1"], ["J2", "B12"], ["J2", "B1"], ["J2", "A12"], ["U2", "1"], ["C6", "2"], ["U4", "1"], ["U5", "21"], ["U5", "14"], ["U5", "26"], ["U5", "27"], ["U5", "55"], ["U5", "56"], ["U9", "10"], ["U9", "14"], ["R11", "2"], ["U10", "5"], ["U10", "8"], ["U11", "17"], ["U11", "8"], ["SW1", "2"], ["SW2", "2"], ["U8", "4"], ["R26", "2"], ["R28", "2"], ["R30", "2"], ["J2", "S1"], ["R13", "2"], ["C36", "2"], ["C37", "2"], ["C38", "2"], ["C39", "2"], ["C40", "2"], ["C41", "2"], ["C42", "2"], ["C43", "2"], ["D5", "1"], ["C1", "2"], ["U3", "2"], ["C7", "2"], ["C8", "2"], ["C9", "2"], ["C10", "2"], ["C11", "2"], ["C12", "2"], ["C13", "2"], ["C14", "2"], ["C15", "2"], ["C16", "2"], ["C17", "2"], ["C18", "2"], ["C19", "2"], ["C20", "2"], ["X1", "2"], ["X1", "4"], ["C27", "2"], ["C28", "2"], ["C29", "2"], ["C30", "2"], ["C31", "2"], ["C32", "2"], ["C34", "2"], ["C35", "2"], ["R4", "2"], ["R7", "2"], ["R9", "1"], ["C25", "2"], ["R1", "1"], ["R2", "1"], ["J3", "3"], ["J3", "5"], ["J3", "9"], ["C21", "2"], ["C22", "2"], ["C3", "2"], ["C4", "2"], ["C5", "2"]]}, + {name: "vin", pads: [["J1", "2"], ["U2", "3"], ["R25", "1"], ["U2", "5"], ["C1", "1"], ["C3", "1"]]}, + {name: "v5", pads: [["R27", "1"], ["J2", "A4"], ["J2", "B9"], ["J2", "B4"], ["J2", "A9"], ["R5", "1"], ["U3", "5"], ["U3", "6"], ["R6", "1"], ["R3", "1"], ["D1", "1"], ["U4", "3"], ["C5", "1"], ["C7", "1"], ["L1", "2"], ["C4", "1"]]}, + {name: "v3v3", pads: [["J5", "4"], ["U12", "2"], ["U4", "2"], ["U5", "20"], ["U5", "13"], ["U5", "18"], ["U5", "41"], ["U5", "22"], ["U5", "37"], ["U5", "52"], ["U5", "57"], ["R10", "1"], ["U9", "1"], ["U11", "10"], ["U11", "9"], ["D6", "2"], ["D7", "2"], ["D8", "2"], ["R23", "1"], ["R24", "1"], ["U8", "1"], ["R12", "1"], ["C8", "1"], ["L2", "1"], ["J3", "1"], ["C9", "1"], ["C10", "1"], ["C11", "1"], ["C12", "1"], ["C13", "1"], ["C14", "1"], ["C15", "1"], ["C16", "1"], ["C17", "1"], ["C18", "1"], ["C19", "1"], ["C20", "1"], ["C27", "1"], ["C28", "1"], ["C34", "1"], ["C35", "1"], ["R8", "1"], ["C25", "1"]]}, + {name: "usb_conn.usb.dp", pads: [["U5", "47"], ["J2", "A6"], ["J2", "B6"]]}, + {name: "usb_conn.usb.dm", pads: [["U5", "48"], ["J2", "A7"], ["J2", "B7"]]}, + {name: "can.controller.txd", pads: [["U5", "51"], ["U8", "3"]]}, + {name: "can.controller.rxd", pads: [["U5", "53"], ["U8", "2"]]}, + {name: "sd.spi.sck", pads: [["U5", "17"], ["J5", "5"]]}, + {name: "sd.spi.mosi", pads: [["U5", "15"], ["J5", "2"]]}, + {name: "sd.spi.miso", pads: [["U5", "19"], ["J5", "7"]]}, + {name: "sd.cs", pads: [["U5", "11"], ["J5", "1"]]}, + {name: "cd_pull.io", pads: [["U5", "16"], ["J5", "10"], ["R10", "2"]]}, + {name: "xbee.data.rx", pads: [["U5", "58"], ["U9", "3"]]}, + {name: "xbee.data.tx", pads: [["U5", "50"], ["U9", "2"]]}, + {name: "xbee.associate", pads: [["U9", "15"], ["D2", "2"]]}, + {name: "rtc.spi.sck", pads: [["U5", "5"], ["U10", "1"], ["U11", "12"]]}, + {name: "rtc.spi.mosi", pads: [["U5", "6"], ["U10", "2"], ["U11", "11"]]}, + {name: "rtc.spi.miso", pads: [["U5", "7"], ["U10", "3"]]}, + {name: "rtc.cs", pads: [["U5", "64"], ["U10", "4"]]}, + {name: "bat.pwr", pads: [["U1", "1"], ["U10", "15"], ["C31", "1"]]}, + {name: "eink.busy", pads: [["U5", "1"], ["U11", "16"]]}, + {name: "eink.reset", pads: [["U5", "2"], ["U11", "15"]]}, + {name: "eink.dc", pads: [["U5", "3"], ["U11", "14"]]}, + {name: "eink.cs", pads: [["U5", "4"], ["U11", "13"]]}, + {name: "ext.data.rx", pads: [["U5", "60"], ["U12", "5"]]}, + {name: "ext.data.tx", pads: [["U5", "61"], ["U12", "4"]]}, + {name: "ext.cts", pads: [["U5", "62"], ["U12", "1"]]}, + {name: "ext.rts", pads: [["U5", "59"], ["U12", "6"]]}, + {name: "mcu.gpio.rgb1_red", pads: [["U5", "31"], ["R14", "2"]]}, + {name: "mcu.gpio.rgb1_green", pads: [["U5", "32"], ["R15", "2"]]}, + {name: "mcu.gpio.rgb1_blue", pads: [["U5", "30"], ["R16", "2"]]}, + {name: "mcu.gpio.rgb2_red", pads: [["U5", "28"], ["R17", "2"]]}, + {name: "mcu.gpio.rgb2_green", pads: [["U5", "29"], ["R18", "2"]]}, + {name: "mcu.gpio.rgb2_blue", pads: [["U5", "25"], ["R19", "2"]]}, + {name: "mcu.gpio.rgb3_red", pads: [["U5", "46"], ["R20", "2"]]}, + {name: "mcu.gpio.rgb3_green", pads: [["U5", "39"], ["R21", "2"]]}, + {name: "mcu.gpio.rgb3_blue", pads: [["U5", "34"], ["R22", "2"]]}, + {name: "sw1.out", pads: [["U5", "33"], ["SW1", "1"], ["R23", "2"]]}, + {name: "sw2.out", pads: [["U5", "23"], ["SW2", "1"], ["R24", "2"]]}, + {name: "v12sense.output", pads: [["U5", "10"], ["R25", "2"], ["R26", "1"]]}, + {name: "v5sense.output", pads: [["U5", "9"], ["R27", "2"], ["R28", "1"]]}, + {name: "buffer.sc_out", pads: [["C6", "1"], ["R29", "1"], ["Q1", "2"], ["D1", "2"]]}, + {name: "vscsense.output", pads: [["U5", "8"], ["R29", "2"], ["R30", "1"]]}, + {name: "usb_conn.conn.cc.cc1", pads: [["J2", "A5"], ["R1", "2"]]}, + {name: "usb_conn.conn.cc.cc2", pads: [["J2", "B5"], ["R2", "2"]]}, + {name: "pwr_5v.fb.output", pads: [["U2", "4"], ["R3", "2"], ["R4", "1"]]}, + {name: "pwr_5v.vbst_cap.neg", pads: [["C2", "2"], ["U2", "2"], ["L1", "1"]]}, + {name: "pwr_5v.vbst_cap.pos", pads: [["C2", "1"], ["U2", "6"]]}, + {name: "buffer.fet.source", pads: [["Q1", "3"], ["R5", "2"], ["U3", "4"]]}, + {name: "buffer.set.output", pads: [["U3", "3"], ["R6", "2"], ["R7", "1"]]}, + {name: "buffer.fet.gate", pads: [["Q1", "1"], ["U3", "1"]]}, + {name: "mcu.xtal_node.xi", pads: [["U5", "36"], ["X1", "1"], ["C21", "1"]]}, + {name: "mcu.xtal_node.xo", pads: [["U5", "35"], ["X1", "3"], ["C22", "1"]]}, + {name: "mcu.swd_node.swdio", pads: [["U5", "44"], ["J3", "2"], ["R8", "2"]]}, + {name: "mcu.swd_node.swclk", pads: [["U5", "40"], ["J3", "4"], ["R9", "2"]]}, + {name: "mcu.reset_node", pads: [["U5", "45"], ["J3", "10"]]}, + {name: "mcu.swd.swo", pads: [["U5", "12"], ["J3", "6"]]}, + {name: "mcu.swd.tdi", pads: [["J3", "8"]]}, + {name: "mcu.ic.xtal_rtc.xtal_in", pads: [["U5", "42"]]}, + {name: "mcu.ic.xtal_rtc.xtal_out", pads: [["U5", "43"]]}, + {name: "can.can.canh", pads: [["J4", "4"], ["U7", "2"], ["U8", "7"]]}, + {name: "can.can.canl", pads: [["J4", "5"], ["U7", "1"], ["U8", "6"]]}, + {name: "can.conn.pwr", pads: [["J4", "2"], ["F1", "1"]]}, + {name: "can.can_fuse.pwr_out", pads: [["F1", "2"], ["U6", "1"], ["U6", "3"], ["C23", "1"]]}, + {name: "can.conn.gnd", pads: [["J4", "3"], ["U7", "3"], ["U6", "2"], ["U8", "5"], ["C23", "2"], ["C24", "2"], ["C26", "2"]]}, + {name: "can.transceiver.can_pwr", pads: [["U8", "8"], ["U6", "5"], ["C26", "1"], ["C24", "1"]]}, + {name: "sd.wp", pads: [["J5", "11"]]}, + {name: "xbee.rssi", pads: [["U9", "6"]]}, + {name: "xbee_assoc.res.a", pads: [["R11", "1"], ["D2", "1"]]}, + {name: "rtc.clkout", pads: [["U10", "7"]]}, + {name: "rtc.int", pads: [["U10", "13"]]}, + {name: "rtc.ic.pwr", pads: [["U10", "16"], ["R12", "2"], ["C29", "1"], ["C30", "1"]]}, + {name: "rtc.ic.bbs", pads: [["U10", "14"], ["C32", "1"]]}, + {name: "eink.boost_ind.b", pads: [["L2", "2"], ["Q2", "3"], ["C33", "1"], ["D3", "2"]]}, + {name: "eink.boost_sw.gate", pads: [["Q2", "1"], ["U11", "23"]]}, + {name: "eink.boost_sw.source", pads: [["Q2", "2"], ["R13", "1"], ["U11", "22"]]}, + {name: "eink.ic.vslr", pads: [["U11", "21"], ["C36", "1"]]}, + {name: "eink.ic.vdhr", pads: [["U11", "20"], ["C37", "1"]]}, + {name: "eink.ic.vddd", pads: [["U11", "7"], ["C38", "1"]]}, + {name: "eink.ic.vdh", pads: [["U11", "5"], ["C39", "1"]]}, + {name: "eink.ic.vgh", pads: [["U11", "4"], ["C40", "1"], ["D3", "1"]]}, + {name: "eink.ic.vdl", pads: [["U11", "3"], ["C41", "1"]]}, + {name: "eink.ic.vgl", pads: [["U11", "2"], ["C42", "1"], ["D4", "2"]]}, + {name: "eink.ic.vcom", pads: [["U11", "1"], ["C43", "1"]]}, + {name: "eink.vgl_dio.cathode", pads: [["D4", "1"], ["C33", "2"], ["D5", "2"]]}, + {name: "rgb1.red_res.a", pads: [["R14", "1"], ["D6", "3"]]}, + {name: "rgb1.green_res.a", pads: [["R15", "1"], ["D6", "4"]]}, + {name: "rgb1.blue_res.a", pads: [["R16", "1"], ["D6", "1"]]}, + {name: "rgb2.red_res.a", pads: [["R17", "1"], ["D7", "3"]]}, + {name: "rgb2.green_res.a", pads: [["R18", "1"], ["D7", "4"]]}, + {name: "rgb2.blue_res.a", pads: [["R19", "1"], ["D7", "1"]]}, + {name: "rgb3.red_res.a", pads: [["R20", "1"], ["D8", "3"]]}, + {name: "rgb3.green_res.a", pads: [["R21", "1"], ["D8", "4"]]}, + {name: "rgb3.blue_res.a", pads: [["R22", "1"], ["D8", "1"]]} +]) + const limit0 = pt(-0.07874015748031496, -0.07874015748031496); const limit1 = pt(3.6070866141732285, 2.6814960629921263); const xMin = Math.min(limit0[0], limit1[0]); diff --git a/examples/DeskController/DeskController.svgpcb.js b/examples/DeskController/DeskController.svgpcb.js index 88325f2bf..726cd869f 100644 --- a/examples/DeskController/DeskController.svgpcb.js +++ b/examples/DeskController/DeskController.svgpcb.js @@ -1,233 +1,342 @@ const board = new PCB(); -const sw = SwitchMatrix_2_3_sw(pt(0, 0)) -const jlc_th_th1 = board.add(JlcToolingHole_1_152mm, { - translate: pt(1.737, 2.535), rotate: 0, - id: 'jlc_th_th1' -}) -const jlc_th_th2 = board.add(JlcToolingHole_1_152mm, { - translate: pt(1.776, 2.535), rotate: 0, - id: 'jlc_th_th2' -}) -const jlc_th_th3 = board.add(JlcToolingHole_1_152mm, { - translate: pt(1.737, 2.575), rotate: 0, - id: 'jlc_th_th3' -}) -const conn_conn = board.add(JST_PH_B6B_PH_K_1x06_P2_00mm_Vertical, { - translate: pt(1.666, 1.543), rotate: 0, - id: 'conn_conn' -}) -const conn_dtx_shift_fet = board.add(SOT_23, { - translate: pt(1.645, 1.736), rotate: 0, - id: 'conn_dtx_shift_fet' -}) -const conn_dtx_shift_lv_pu_res = board.add(R_0603_1608Metric, { - translate: pt(2.009, 1.698), rotate: 0, - id: 'conn_dtx_shift_lv_pu_res' -}) -const conn_htx_shift_fet = board.add(SOT_23, { - translate: pt(1.835, 1.736), rotate: 0, - id: 'conn_htx_shift_fet' -}) -const conn_htx_shift_lv_pu_res = board.add(R_0603_1608Metric, { - translate: pt(1.628, 1.871), rotate: 0, - id: 'conn_htx_shift_lv_pu_res' -}) -const tp_gnd_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(3.545, 2.056), rotate: 0, - id: 'tp_gnd_tp' -}) -const choke_fb = board.add(L_0805_2012Metric, { - translate: pt(1.315, 2.569), rotate: 0, - id: 'choke_fb' -}) -const tp_pwr_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(0.317, 2.573), rotate: 0, - id: 'tp_pwr_tp' -}) -const reg_3v3_ic = board.add(SOT_223_3_TabPin2, { - translate: pt(3.180, 1.555), rotate: 0, - id: 'reg_3v3_ic' -}) -const reg_3v3_in_cap_cap = board.add(C_0603_1608Metric, { - translate: pt(3.238, 1.765), rotate: 0, - id: 'reg_3v3_in_cap_cap' -}) -const reg_3v3_out_cap_cap = board.add(C_0805_2012Metric, { - translate: pt(3.073, 1.775), rotate: 0, - id: 'reg_3v3_out_cap_cap' -}) -const tp_3v3_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(1.062, 2.573), rotate: 0, - id: 'tp_3v3_tp' -}) -const prot_3v3_diode = board.add(D_SOD_323, { - translate: pt(0.564, 2.573), rotate: 0, - id: 'prot_3v3_diode' -}) -const mcu_ic = board.add(ESP_WROOM_02, { - translate: pt(0.561, 1.695), rotate: 0, - id: 'mcu_ic' -}) -const mcu_vcc_cap0_cap = board.add(C_0805_2012Metric, { - translate: pt(1.228, 1.649), rotate: 0, - id: 'mcu_vcc_cap0_cap' -}) -const mcu_vcc_cap1_cap = board.add(C_0603_1608Metric, { - translate: pt(1.393, 1.639), rotate: 0, - id: 'mcu_vcc_cap1_cap' -}) -const mcu_prog_conn = board.add(Tag_Connect_TC2030_IDC_NL_2x03_P1_27mm_Vertical, { - translate: pt(1.299, 1.492), rotate: 0, - id: 'mcu_prog_conn' -}) -const mcu_en_pull_rc_r = board.add(R_0603_1608Metric, { - translate: pt(1.220, 1.756), rotate: 0, - id: 'mcu_en_pull_rc_r' -}) -const mcu_en_pull_rc_c = board.add(C_0603_1608Metric, { - translate: pt(1.376, 1.756), rotate: 0, - id: 'mcu_en_pull_rc_c' -}) -const ledr_package = board.add(LED_0603_1608Metric, { - translate: pt(2.833, 2.047), rotate: 0, - id: 'ledr_package' -}) -const ledr_res = board.add(R_0603_1608Metric, { - translate: pt(2.833, 2.144), rotate: 0, - id: 'ledr_res' -}) -const oled_device_conn_conn = board.add(TE_3_1734839_0_1x30_1MP_P0_5mm_Horizontal, { - translate: pt(2.461, 1.028), rotate: 0, - id: 'oled_device_conn_conn' -}) -const oled_lcd = board.add(Lcd_Er_Oled0_96_1_1_Outline, { - translate: pt(2.565, 0.516), rotate: 0, - id: 'oled_lcd' -}) -const oled_c1_cap = board.add(C_0603_1608Metric, { - translate: pt(3.328, 0.889), rotate: 0, - id: 'oled_c1_cap' -}) -const oled_c2_cap = board.add(C_0603_1608Metric, { - translate: pt(2.981, 1.006), rotate: 0, - id: 'oled_c2_cap' -}) -const oled_iref_res = board.add(R_0603_1608Metric, { - translate: pt(3.137, 1.006), rotate: 0, - id: 'oled_iref_res' -}) -const oled_vcomh_cap_cap = board.add(C_0805_2012Metric, { - translate: pt(2.990, 0.899), rotate: 0, - id: 'oled_vcomh_cap_cap' -}) -const oled_vdd_cap1_cap = board.add(C_0603_1608Metric, { - translate: pt(3.293, 1.006), rotate: 0, - id: 'oled_vdd_cap1_cap' -}) -const oled_vbat_cap_cap = board.add(C_0603_1608Metric, { - translate: pt(3.449, 1.006), rotate: 0, - id: 'oled_vbat_cap_cap' -}) -const oled_vcc_cap_cap = board.add(C_0805_2012Metric, { - translate: pt(3.163, 0.899), rotate: 0, - id: 'oled_vcc_cap_cap' -}) -const i2c_pull_scl_res_res = board.add(R_0603_1608Metric, { - translate: pt(3.303, 2.047), rotate: 0, - id: 'i2c_pull_scl_res_res' -}) -const i2c_pull_sda_res_res = board.add(R_0603_1608Metric, { - translate: pt(3.303, 2.144), rotate: 0, - id: 'i2c_pull_sda_res_res' -}) -const io8_pu_res = board.add(R_0603_1608Metric, { - translate: pt(1.560, 2.564), rotate: 0, - id: 'io8_pu_res' -}) -const spk_dac_rc_r = board.add(R_0603_1608Metric, { - translate: pt(3.068, 2.047), rotate: 0, - id: 'spk_dac_rc_r' -}) -const spk_dac_rc_c = board.add(C_0603_1608Metric, { - translate: pt(3.068, 2.144), rotate: 0, - id: 'spk_dac_rc_c' -}) -const spk_tp_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(0.811, 2.573), rotate: 0, - id: 'spk_tp_tp' -}) -const spk_drv_ic = board.add(MSOP_8_1EP_3x3mm_P0_65mm_EP1_68x1_88mm_ThermalVias, { - translate: pt(1.692, 2.087), rotate: 0, - id: 'spk_drv_ic' -}) -const spk_drv_pwr_cap_cap = board.add(C_0603_1608Metric, { - translate: pt(1.628, 2.224), rotate: 0, - id: 'spk_drv_pwr_cap_cap' -}) -const spk_drv_bulk_cap_cap = board.add(C_0805_2012Metric, { - translate: pt(1.921, 2.057), rotate: 0, - id: 'spk_drv_bulk_cap_cap' -}) -const spk_drv_inp_res = board.add(R_0603_1608Metric, { - translate: pt(1.783, 2.224), rotate: 0, - id: 'spk_drv_inp_res' -}) -const spk_drv_inp_cap = board.add(C_0603_1608Metric, { - translate: pt(1.939, 2.224), rotate: 0, - id: 'spk_drv_inp_cap' -}) -const spk_drv_inn_res = board.add(R_0603_1608Metric, { - translate: pt(1.628, 2.321), rotate: 0, - id: 'spk_drv_inn_res' -}) -const spk_drv_inn_cap = board.add(C_0603_1608Metric, { - translate: pt(1.783, 2.321), rotate: 0, - id: 'spk_drv_inn_cap' -}) -const spk_conn = board.add(JST_PH_B2B_PH_K_1x02_P2_00mm_Vertical, { - translate: pt(2.481, 2.148), rotate: 0, - id: 'spk_conn' -}) -const npx_shift_fet = board.add(SOT_23, { - translate: pt(2.191, 2.085), rotate: 0, - id: 'npx_shift_fet' -}) -const npx_shift_hv_pu_res = board.add(R_0603_1608Metric, { - translate: pt(2.174, 2.220), rotate: 0, - id: 'npx_shift_hv_pu_res' -}) -const npx_tp_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(0.066, 2.573), rotate: 0, - id: 'npx_tp_tp' -}) -const npx_led_0_ = board.add(LED_SK6812MINI_E, { - translate: pt(2.418, 1.478), rotate: 0, - id: 'npx_led_0_' -}) -const npx_led_1_ = board.add(LED_SK6812MINI_E, { - translate: pt(2.744, 1.478), rotate: 0, - id: 'npx_led_1_' -}) -const npx_led_2_ = board.add(LED_SK6812MINI_E, { - translate: pt(2.418, 1.648), rotate: 0, - id: 'npx_led_2_' -}) -const npx_led_3_ = board.add(LED_SK6812MINI_E, { - translate: pt(2.744, 1.648), rotate: 0, - id: 'npx_led_3_' -}) -const npx_led_4_ = board.add(LED_SK6812MINI_E, { - translate: pt(2.418, 1.817), rotate: 0, - id: 'npx_led_4_' -}) -const npx_led_5_ = board.add(LED_SK6812MINI_E, { - translate: pt(2.744, 1.817), rotate: 0, - id: 'npx_led_5_' +const sw = SwitchMatrix_2_3_sw(pt(0.039, 0.039)) +// jlc_th.th1 +const DH1 = board.add(JlcToolingHole_1_152mm, { + translate: pt(1.737, 3.240), rotate: 0, + id: 'DH1' +}) +// jlc_th.th2 +const DH2 = board.add(JlcToolingHole_1_152mm, { + translate: pt(1.776, 3.240), rotate: 0, + id: 'DH2' +}) +// jlc_th.th3 +const DH3 = board.add(JlcToolingHole_1_152mm, { + translate: pt(1.737, 3.280), rotate: 0, + id: 'DH3' +}) +// conn.conn +const DJ1 = board.add(JST_PH_B6B_PH_K_1x06_P2_00mm_Vertical, { + translate: pt(1.666, 2.248), rotate: 0, + id: 'DJ1' +}) +// conn.dtx_shift.fet +const DQ1 = board.add(SOT_23, { + translate: pt(1.645, 2.441), rotate: 0, + id: 'DQ1' +}) +// conn.dtx_shift.lv_pu.res +const DR1 = board.add(R_0603_1608Metric, { + translate: pt(2.009, 2.403), rotate: 0, + id: 'DR1' +}) +// conn.htx_shift.fet +const DQ2 = board.add(SOT_23, { + translate: pt(1.835, 2.441), rotate: 0, + id: 'DQ2' +}) +// conn.htx_shift.lv_pu.res +const DR2 = board.add(R_0603_1608Metric, { + translate: pt(1.628, 2.576), rotate: 0, + id: 'DR2' +}) +// tp_gnd.tp +const DTP1 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(3.545, 2.760), rotate: 0, + id: 'DTP1' +}) +// choke.fb +const DFB1 = board.add(L_0805_2012Metric, { + translate: pt(1.315, 3.274), rotate: 0, + id: 'DFB1' +}) +// tp_pwr.tp +const DTP2 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(0.066, 3.278), rotate: 0, + id: 'DTP2' +}) +// reg_3v3.ic +const DU1 = board.add(SOT_223_3_TabPin2, { + translate: pt(3.180, 2.260), rotate: 0, + id: 'DU1' +}) +// reg_3v3.in_cap.cap +const DC1 = board.add(C_0603_1608Metric, { + translate: pt(3.238, 2.470), rotate: 0, + id: 'DC1' +}) +// reg_3v3.out_cap.cap +const DC2 = board.add(C_0805_2012Metric, { + translate: pt(3.073, 2.480), rotate: 0, + id: 'DC2' +}) +// tp_3v3.tp +const DTP3 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(0.317, 3.278), rotate: 0, + id: 'DTP3' +}) +// prot_3v3.diode +const DD1 = board.add(D_SOD_323, { + translate: pt(0.564, 3.278), rotate: 0, + id: 'DD1' +}) +// mcu.ic +const DU2 = board.add(ESP_WROOM_02, { + translate: pt(0.561, 2.400), rotate: 0, + id: 'DU2' +}) +// mcu.vcc_cap0.cap +const DC3 = board.add(C_0805_2012Metric, { + translate: pt(1.228, 2.354), rotate: 0, + id: 'DC3' +}) +// mcu.vcc_cap1.cap +const DC4 = board.add(C_0603_1608Metric, { + translate: pt(1.393, 2.344), rotate: 0, + id: 'DC4' +}) +// mcu.prog.conn +const DJ2 = board.add(Tag_Connect_TC2030_IDC_NL_2x03_P1_27mm_Vertical, { + translate: pt(1.299, 2.197), rotate: 0, + id: 'DJ2' +}) +// mcu.en_pull.rc.r +const DR3 = board.add(R_0603_1608Metric, { + translate: pt(1.220, 2.460), rotate: 0, + id: 'DR3' +}) +// mcu.en_pull.rc.c +const DC5 = board.add(C_0603_1608Metric, { + translate: pt(1.376, 2.460), rotate: 0, + id: 'DC5' +}) +// ledr.package +const DD8 = board.add(LED_0603_1608Metric, { + translate: pt(2.833, 2.752), rotate: 0, + id: 'DD8' +}) +// ledr.res +const DR4 = board.add(R_0603_1608Metric, { + translate: pt(2.833, 2.849), rotate: 0, + id: 'DR4' +}) +// oled.device.conn.conn +const DJ3 = board.add(TE_3_1734839_0_1x30_1MP_P0_5mm_Horizontal, { + translate: pt(1.540, 1.028), rotate: 0, + id: 'DJ3' +}) +// oled.lcd +const DU3 = board.add(Lcd_Er_Oled0_96_1_1_Outline, { + translate: pt(1.644, 0.516), rotate: 0, + id: 'DU3' +}) +// oled.c1_cap +const DC6 = board.add(C_0603_1608Metric, { + translate: pt(2.406, 0.889), rotate: 0, + id: 'DC6' +}) +// oled.c2_cap +const DC7 = board.add(C_0603_1608Metric, { + translate: pt(2.060, 1.006), rotate: 0, + id: 'DC7' +}) +// oled.iref_res +const DR5 = board.add(R_0603_1608Metric, { + translate: pt(2.216, 1.006), rotate: 0, + id: 'DR5' +}) +// oled.vcomh_cap.cap +const DC8 = board.add(C_0805_2012Metric, { + translate: pt(2.069, 0.899), rotate: 0, + id: 'DC8' +}) +// oled.vdd_cap1.cap +const DC9 = board.add(C_0603_1608Metric, { + translate: pt(2.372, 1.006), rotate: 0, + id: 'DC9' +}) +// oled.vbat_cap.cap +const DC10 = board.add(C_0603_1608Metric, { + translate: pt(2.528, 1.006), rotate: 0, + id: 'DC10' +}) +// oled.vcc_cap.cap +const DC11 = board.add(C_0805_2012Metric, { + translate: pt(2.242, 0.899), rotate: 0, + id: 'DC11' +}) +// i2c_pull.scl_res.res +const DR6 = board.add(R_0603_1608Metric, { + translate: pt(3.068, 2.752), rotate: 0, + id: 'DR6' +}) +// i2c_pull.sda_res.res +const DR7 = board.add(R_0603_1608Metric, { + translate: pt(3.068, 2.848), rotate: 0, + id: 'DR7' +}) +// io8_pu.res +const DR8 = board.add(R_0603_1608Metric, { + translate: pt(1.560, 3.269), rotate: 0, + id: 'DR8' +}) +// spk_dac.rc.r +const DR9 = board.add(R_0603_1608Metric, { + translate: pt(3.303, 2.752), rotate: 0, + id: 'DR9' +}) +// spk_dac.rc.c +const DC12 = board.add(C_0603_1608Metric, { + translate: pt(3.303, 2.848), rotate: 0, + id: 'DC12' +}) +// spk_tp.tp +const DTP4 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(0.811, 3.278), rotate: 0, + id: 'DTP4' +}) +// spk_drv.ic +const DU4 = board.add(MSOP_8_1EP_3x3mm_P0_65mm_EP1_68x1_88mm_ThermalVias, { + translate: pt(1.692, 2.792), rotate: 0, + id: 'DU4' +}) +// spk_drv.pwr_cap.cap +const DC13 = board.add(C_0603_1608Metric, { + translate: pt(1.628, 2.929), rotate: 0, + id: 'DC13' +}) +// spk_drv.bulk_cap.cap +const DC14 = board.add(C_0805_2012Metric, { + translate: pt(1.921, 2.761), rotate: 0, + id: 'DC14' +}) +// spk_drv.inp_res +const DR10 = board.add(R_0603_1608Metric, { + translate: pt(1.783, 2.929), rotate: 0, + id: 'DR10' +}) +// spk_drv.inp_cap +const DC15 = board.add(C_0603_1608Metric, { + translate: pt(1.939, 2.929), rotate: 0, + id: 'DC15' +}) +// spk_drv.inn_res +const DR11 = board.add(R_0603_1608Metric, { + translate: pt(1.628, 3.026), rotate: 0, + id: 'DR11' +}) +// spk_drv.inn_cap +const DC16 = board.add(C_0603_1608Metric, { + translate: pt(1.783, 3.026), rotate: 0, + id: 'DC16' +}) +// spk.conn +const DJ4 = board.add(JST_PH_B2B_PH_K_1x02_P2_00mm_Vertical, { + translate: pt(2.481, 2.853), rotate: 0, + id: 'DJ4' +}) +// npx_shift.fet +const DQ3 = board.add(SOT_23, { + translate: pt(2.191, 2.790), rotate: 0, + id: 'DQ3' +}) +// npx_shift.hv_pu.res +const DR12 = board.add(R_0603_1608Metric, { + translate: pt(2.174, 2.925), rotate: 0, + id: 'DR12' +}) +// npx_tp.tp +const DTP5 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(1.062, 3.278), rotate: 0, + id: 'DTP5' +}) +// npx.led[0] +const DD9 = board.add(LED_SK6812MINI_E, { + translate: pt(2.418, 2.183), rotate: 0, + id: 'DD9' +}) +// npx.led[1] +const DD10 = board.add(LED_SK6812MINI_E, { + translate: pt(2.744, 2.183), rotate: 0, + id: 'DD10' +}) +// npx.led[2] +const DD11 = board.add(LED_SK6812MINI_E, { + translate: pt(2.418, 2.352), rotate: 0, + id: 'DD11' +}) +// npx.led[3] +const DD12 = board.add(LED_SK6812MINI_E, { + translate: pt(2.744, 2.352), rotate: 0, + id: 'DD12' +}) +// npx.led[4] +const DD13 = board.add(LED_SK6812MINI_E, { + translate: pt(2.418, 2.522), rotate: 0, + id: 'DD13' +}) +// npx.led[5] +const DD14 = board.add(LED_SK6812MINI_E, { + translate: pt(2.744, 2.522), rotate: 0, + id: 'DD14' }) +board.setNetlist([ + {name: "Dgnd", pads: [["DJ1", "2"], ["DTP1", "1"], ["DU1", "1"], ["DD1", "2"], ["DU2", "9"], ["DU2", "19"], ["DR4", "2"], ["DU4", "7"], ["DU4", "9"], ["DD9", "3"], ["DD10", "3"], ["DD11", "3"], ["DD12", "3"], ["DD13", "3"], ["DD14", "3"], ["DC12", "2"], ["DR5", "2"], ["DC16", "2"], ["DC1", "2"], ["DC2", "2"], ["DC3", "2"], ["DC4", "2"], ["DJ2", "5"], ["DC8", "2"], ["DC9", "2"], ["DC10", "2"], ["DC11", "2"], ["DC13", "2"], ["DC14", "2"], ["DC5", "2"], ["DJ3", "23"], ["DJ3", "30"], ["DJ3", "1"], ["DJ3", "2"], ["DJ3", "14"], ["DJ3", "15"], ["DJ3", "10"], ["DJ3", "9"], ["DJ3", "8"], ["DJ3", "7"], ["DJ3", "6"], ["DJ3", "19"], ["DJ3", "21"], ["DJ3", "16"], ["DJ3", "18"]]}, + {name: "Dpwr", pads: [["DFB1", "2"], ["DTP2", "1"], ["DU1", "3"], ["DU4", "1"], ["DU4", "6"], ["DD9", "1"], ["DD10", "1"], ["DD11", "1"], ["DD12", "1"], ["DD13", "1"], ["DD14", "1"], ["DR12", "1"], ["DC1", "1"], ["DC13", "1"], ["DC14", "1"]]}, + {name: "Dv3v3", pads: [["DU1", "2"], ["DTP3", "1"], ["DD1", "1"], ["DU2", "1"], ["DR8", "1"], ["DQ3", "1"], ["DC2", "1"], ["DC3", "1"], ["DC4", "1"], ["DJ2", "1"], ["DC9", "1"], ["DC10", "1"], ["DR6", "1"], ["DR7", "1"], ["DR3", "1"], ["DJ3", "22"], ["DJ3", "25"], ["DQ1", "1"], ["DQ2", "1"], ["DR1", "1"], ["DR2", "1"], ["DJ3", "20"]]}, + {name: "Dconn.pwr", pads: [["DFB1", "1"], ["DJ1", "4"]]}, + {name: "Dconn.uart.rx", pads: [["DU2", "4"], ["DQ2", "2"], ["DR2", "2"]]}, + {name: "Dconn.uart.tx", pads: [["DU2", "3"], ["DQ1", "2"], ["DR1", "2"]]}, + {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.program_boot_node", pads: [["DU2", "8"], ["DD8", "2"], ["DJ2", "2"]]}, + {name: "Di2c_pull.i2c.scl", pads: [["DU2", "17"], ["DR6", "2"], ["DJ3", "13"]]}, + {name: "Di2c_pull.i2c.sda", pads: [["DU2", "18"], ["DR7", "2"], ["DJ3", "12"], ["DJ3", "11"]]}, + {name: "Doled.reset", pads: [["DU2", "16"], ["DJ3", "17"]]}, + {name: "Dspk_chain_0", pads: [["DU2", "7"], ["DR8", "2"], ["DR9", "1"]]}, + {name: "Dspk_chain_1", pads: [["DTP4", "1"], ["DC15", "2"], ["DR9", "2"], ["DC12", "1"]]}, + {name: "Dspk_chain_2.a", pads: [["DU4", "8"], ["DJ4", "1"]]}, + {name: "Dspk_chain_2.b", pads: [["DU4", "5"], ["DJ4", "2"]]}, + {name: "Dnpx_shift.lv_io", pads: [["DU2", "6"], ["DQ3", "2"]]}, + {name: "Dnpx_shift.hv_io", pads: [["DD9", "4"], ["DTP5", "1"], ["DQ3", "3"], ["DR12", "2"]]}, + {name: "Dconn.dtx_shift.hv_io", pads: [["DJ1", "3"], ["DQ1", "3"]]}, + {name: "Dconn.htx_shift.hv_io", pads: [["DJ1", "5"], ["DQ2", "3"]]}, + {name: "Dmcu.program_uart_node.a_tx", pads: [["DU2", "12"], ["DJ2", "3"]]}, + {name: "Dmcu.program_uart_node.b_tx", pads: [["DU2", "11"], ["DJ2", "4"]]}, + {name: "Dmcu.program_en_node", pads: [["DU2", "2"], ["DJ2", "6"], ["DR3", "2"], ["DC5", "1"]]}, + {name: "Dsw.d[0,0].cathode", pads: [["DD2", "1"], ["DSW1", "1"]]}, + {name: "Dsw.d[0,1].cathode", pads: [["DD3", "1"], ["DSW2", "1"]]}, + {name: "Dsw.d[0,2].cathode", pads: [["DD4", "1"], ["DSW3", "1"]]}, + {name: "Dsw.d[1,0].cathode", pads: [["DD5", "1"], ["DSW4", "1"]]}, + {name: "Dsw.d[1,1].cathode", pads: [["DD6", "1"], ["DSW5", "1"]]}, + {name: "Dsw.d[1,2].cathode", pads: [["DD7", "1"], ["DSW6", "1"]]}, + {name: "Dledr.res.a", pads: [["DR4", "1"], ["DD8", "1"]]}, + {name: "Doled.c1_cap.pos", pads: [["DC6", "1"], ["DJ3", "27"]]}, + {name: "Doled.c1_cap.neg", pads: [["DC6", "2"], ["DJ3", "26"]]}, + {name: "Doled.c2_cap.pos", pads: [["DC7", "1"], ["DJ3", "29"]]}, + {name: "Doled.c2_cap.neg", pads: [["DC7", "2"], ["DJ3", "28"]]}, + {name: "Doled.iref_res.a", pads: [["DR5", "1"], ["DJ3", "5"]]}, + {name: "Doled.device.vcomh", pads: [["DJ3", "4"], ["DC8", "1"]]}, + {name: "Doled.device.vcc", pads: [["DJ3", "3"], ["DC11", "1"]]}, + {name: "Dspk_drv.inp_cap.pos", pads: [["DC15", "1"], ["DR10", "1"]]}, + {name: "Dspk_drv.inp_res.b", pads: [["DR10", "2"], ["DU4", "4"]]}, + {name: "Dspk_drv.inn_cap.pos", pads: [["DC16", "1"], ["DR11", "1"]]}, + {name: "Dspk_drv.inn_res.b", pads: [["DR11", "2"], ["DU4", "3"]]}, + {name: "Dnpx.led[0].dout", pads: [["DD9", "2"], ["DD10", "4"]]}, + {name: "Dnpx.led[1].dout", pads: [["DD10", "2"], ["DD11", "4"]]}, + {name: "Dnpx.led[2].dout", pads: [["DD11", "2"], ["DD12", "4"]]}, + {name: "Dnpx.led[3].dout", pads: [["DD12", "2"], ["DD13", "4"]]}, + {name: "Dnpx.led[4].dout", pads: [["DD13", "2"], ["DD14", "4"]]}, + {name: "Dnpx.dout", pads: [["DD14", "2"]]} +]) + const limit0 = pt(-0.07874015748031496, -0.07874015748031496); -const limit1 = pt(3.729330708661417, 2.728346456692914); +const limit1 = pt(3.729330708661417, 3.4330708661417324); const xMin = Math.min(limit0[0], limit1[0]); const xMax = Math.max(limit0[0], limit1[0]); const yMin = Math.min(limit0[1], limit1[1]); @@ -264,7 +373,7 @@ renderPCB({ mmPerUnit: 25.4 }) -function SwitchMatrix_2_3_sw(xy, colSpacing=1, rowSpacing=1, diodeOffset=[0.25, 0]) { +function SwitchMatrix_2_3_sw(xy, colSpacing=0.5, rowSpacing=0.5, diodeOffset=[0.25, 0]) { // Circuit generator params const ncols = 2 const nrows = 3 @@ -289,19 +398,19 @@ function SwitchMatrix_2_3_sw(xy, colSpacing=1, rowSpacing=1, diodeOffset=[0.25, index = yIndex * ncols + xIndex + 1 buttonPos = [xy[0] + colSpacing * xIndex, xy[1] + rowSpacing * yIndex] - obj.footprints[`sw[${xIndex},${yIndex}]`] = button = board.add( + obj.footprints[`DSW${1 + xIndex * nrows + yIndex}`] = button = board.add( SW_Hotswap_Kailh_MX, { translate: buttonPos, rotate: 0, - id: `sw_sw_${xIndex}_${yIndex}_` + id: `DSW${1 + xIndex * nrows + yIndex}` }) diodePos = [buttonPos[0] + diodeOffset[0], buttonPos[1] + diodeOffset[1]] - obj[`d[${xIndex},${yIndex}]`] = diode = board.add( + obj[`DD${2 + xIndex * nrows + yIndex}`] = diode = board.add( D_SOD_323, { translate: diodePos, rotate: 90, - id: `sw_d_${xIndex}_${yIndex}_` + id: `DD${2 + xIndex * nrows + yIndex}` }) // create stub wire for button -> column common line diff --git a/examples/EspLora/EspLora.svgpcb.js b/examples/EspLora/EspLora.svgpcb.js index fa91d848e..648ad0894 100644 --- a/examples/EspLora/EspLora.svgpcb.js +++ b/examples/EspLora/EspLora.svgpcb.js @@ -1,426 +1,611 @@ const board = new PCB(); -const jlc_th_th1 = board.add(JlcToolingHole_1_152mm, { +// jlc_th.th1 +const LH1 = board.add(JlcToolingHole_1_152mm, { translate: pt(4.100, 2.597), rotate: 0, - id: 'jlc_th_th1' + id: 'LH1' }) -const jlc_th_th2 = board.add(JlcToolingHole_1_152mm, { +// jlc_th.th2 +const LH2 = board.add(JlcToolingHole_1_152mm, { translate: pt(4.140, 2.597), rotate: 0, - id: 'jlc_th_th2' + id: 'LH2' }) -const jlc_th_th3 = board.add(JlcToolingHole_1_152mm, { +// jlc_th.th3 +const LH3 = board.add(JlcToolingHole_1_152mm, { translate: pt(4.100, 2.636), rotate: 0, - id: 'jlc_th_th3' + id: 'LH3' }) -const usb_conn = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { +// usb.conn +const LJ1 = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { translate: pt(2.899, 1.905), rotate: 0, - id: 'usb_conn' + id: 'LJ1' }) -const usb_cc_pull_cc1_res = board.add(R_0603_1608Metric, { +// usb.cc_pull.cc1.res +const LR1 = board.add(R_0603_1608Metric, { translate: pt(2.748, 2.160), rotate: 0, - id: 'usb_cc_pull_cc1_res' + id: 'LR1' }) -const usb_cc_pull_cc2_res = board.add(R_0603_1608Metric, { +// usb.cc_pull.cc2.res +const LR2 = board.add(R_0603_1608Metric, { translate: pt(2.904, 2.160), rotate: 0, - id: 'usb_cc_pull_cc2_res' + id: 'LR2' }) -const tp_gnd_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(1.525, 2.634), rotate: 0, - id: 'tp_gnd_tp' +// tp_gnd.tp +const LTP1 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(1.275, 2.634), rotate: 0, + id: 'LTP1' }) -const choke_fb = board.add(L_0603_1608Metric, { - translate: pt(3.733, 2.626), rotate: 0, - id: 'choke_fb' +// choke.fb +const LFB1 = board.add(L_0603_1608Metric, { + translate: pt(3.264, 2.626), rotate: 0, + id: 'LFB1' }) -const tp_pwr_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(2.026, 2.634), rotate: 0, - id: 'tp_pwr_tp' +// tp_pwr.tp +const LTP2 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(1.525, 2.634), rotate: 0, + id: 'LTP2' }) -const reg_3v3_ic = board.add(SOT_223_3_TabPin2, { +// reg_3v3.ic +const LU1 = board.add(SOT_223_3_TabPin2, { translate: pt(3.400, 1.882), rotate: 0, - id: 'reg_3v3_ic' + id: 'LU1' }) -const reg_3v3_in_cap_cap = board.add(C_0603_1608Metric, { +// reg_3v3.in_cap.cap +const LC1 = board.add(C_0603_1608Metric, { translate: pt(3.458, 2.092), rotate: 0, - id: 'reg_3v3_in_cap_cap' + id: 'LC1' }) -const reg_3v3_out_cap_cap = board.add(C_0805_2012Metric, { +// reg_3v3.out_cap.cap +const LC2 = board.add(C_0805_2012Metric, { translate: pt(3.294, 2.102), rotate: 0, - id: 'reg_3v3_out_cap_cap' + id: 'LC2' }) -const tp_3v3_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(3.021, 2.634), rotate: 0, - id: 'tp_3v3_tp' +// tp_3v3.tp +const LTP3 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(1.775, 2.634), rotate: 0, + id: 'LTP3' }) -const prot_3v3_diode = board.add(D_SOD_323, { - translate: pt(2.273, 2.634), rotate: 0, - id: 'prot_3v3_diode' +// prot_3v3.diode +const LD1 = board.add(D_SOD_323, { + translate: pt(2.023, 2.634), rotate: 0, + id: 'LD1' }) -const mcu_ic = board.add(ESP32_S3_WROOM_1, { +// mcu.ic +const LU2 = board.add(ESP32_S3_WROOM_1, { translate: pt(0.945, 0.530), rotate: 0, - id: 'mcu_ic' + id: 'LU2' }) -const mcu_vcc_cap0_cap = board.add(C_1206_3216Metric, { +// mcu.vcc_cap0.cap +const LC3 = board.add(C_1206_3216Metric, { translate: pt(2.020, 0.683), rotate: 0, - id: 'mcu_vcc_cap0_cap' + id: 'LC3' }) -const mcu_vcc_cap1_cap = board.add(C_0603_1608Metric, { +// mcu.vcc_cap1.cap +const LC4 = board.add(C_0603_1608Metric, { translate: pt(2.208, 0.667), rotate: 0, - id: 'mcu_vcc_cap1_cap' + id: 'LC4' }) -const mcu_prog_conn = board.add(Tag_Connect_TC2030_IDC_FP_2x03_P1_27mm_Vertical, { +// mcu.prog.conn +const LJ2 = board.add(Tag_Connect_TC2030_IDC_FP_2x03_P1_27mm_Vertical, { translate: pt(2.096, 0.167), rotate: 0, - id: 'mcu_prog_conn' + id: 'LJ2' }) -const mcu_boot_package = board.add(SW_SPST_SKQG_WithoutStem, { +// mcu.boot.package +const LSW1 = board.add(SW_SPST_SKQG_WithoutStem, { translate: pt(2.096, 0.486), rotate: 0, - id: 'mcu_boot_package' + id: 'LSW1' }) -const mcu_en_pull_rc_r = board.add(R_0603_1608Metric, { +// mcu.en_pull.rc.r +const LR3 = board.add(R_0603_1608Metric, { translate: pt(2.364, 0.667), rotate: 0, - id: 'mcu_en_pull_rc_r' + id: 'LR3' }) -const mcu_en_pull_rc_c = board.add(C_0603_1608Metric, { +// mcu.en_pull.rc.c +const LC5 = board.add(C_0603_1608Metric, { translate: pt(1.987, 0.796), rotate: 0, - id: 'mcu_en_pull_rc_c' + id: 'LC5' }) -const usb_esd = board.add(SOT_23, { +// usb_esd +const LU3 = board.add(SOT_23, { translate: pt(3.985, 2.664), rotate: 0, - id: 'usb_esd' + id: 'LU3' }) -const ledr_package = board.add(LED_0603_1608Metric, { +// ledr.package +const LD2 = board.add(LED_0603_1608Metric, { translate: pt(0.058, 2.626), rotate: 0, - id: 'ledr_package' + id: 'LD2' }) -const ledr_res = board.add(R_0603_1608Metric, { +// ledr.res +const LR4 = board.add(R_0603_1608Metric, { translate: pt(0.058, 2.723), rotate: 0, - id: 'ledr_res' + id: 'LR4' }) -const ledg_package = board.add(LED_0603_1608Metric, { - translate: pt(0.528, 2.626), rotate: 0, - id: 'ledg_package' -}) -const ledg_res = board.add(R_0603_1608Metric, { - translate: pt(0.528, 2.723), rotate: 0, - id: 'ledg_res' -}) -const ledb_package = board.add(LED_0603_1608Metric, { +// ledg.package +const LD3 = board.add(LED_0603_1608Metric, { translate: pt(0.293, 2.626), rotate: 0, - id: 'ledb_package' + id: 'LD3' }) -const ledb_res = board.add(R_0603_1608Metric, { +// ledg.res +const LR5 = board.add(R_0603_1608Metric, { translate: pt(0.293, 2.723), rotate: 0, - id: 'ledb_res' + id: 'LR5' +}) +// ledb.package +const LD4 = board.add(LED_0603_1608Metric, { + translate: pt(0.528, 2.626), rotate: 0, + id: 'LD4' }) -const lora_ic = board.add(QFN_24_1EP_4x4mm_P0_5mm_EP2_6x2_6mm, { +// ledb.res +const LR6 = board.add(R_0603_1608Metric, { + translate: pt(0.528, 2.723), rotate: 0, + id: 'LR6' +}) +// lora.ic +const LU4 = board.add(QFN_24_1EP_4x4mm_P0_5mm_EP2_6x2_6mm, { translate: pt(0.480, 1.843), rotate: 0, - id: 'lora_ic' + id: 'LU4' }) -const lora_xtal = board.add(Crystal_SMD_3225_4Pin_3_2x2_5mm, { +// lora.xtal +const LX1 = board.add(Crystal_SMD_3225_4Pin_3_2x2_5mm, { translate: pt(0.705, 1.807), rotate: 0, - id: 'lora_xtal' + id: 'LX1' }) -const lora_vreg_cap_cap = board.add(C_0603_1608Metric, { +// lora.vreg_cap.cap +const LC6 = board.add(C_0603_1608Metric, { translate: pt(0.436, 2.013), rotate: 0, - id: 'lora_vreg_cap_cap' + id: 'LC6' }) -const lora_vbat_cap_cap = board.add(C_0603_1608Metric, { +// lora.vbat_cap.cap +const LC7 = board.add(C_0603_1608Metric, { translate: pt(0.592, 2.013), rotate: 0, - id: 'lora_vbat_cap_cap' + id: 'LC7' }) -const lora_vdd_cap_cap = board.add(C_0603_1608Metric, { +// lora.vdd_cap.cap +const LC8 = board.add(C_0603_1608Metric, { translate: pt(0.748, 2.013), rotate: 0, - id: 'lora_vdd_cap_cap' + id: 'LC8' }) -const lora_vrpa_cap0_cap = board.add(C_0603_1608Metric, { +// lora.vrpa_cap0.cap +const LC9 = board.add(C_0603_1608Metric, { translate: pt(0.904, 2.013), rotate: 0, - id: 'lora_vrpa_cap0_cap' + id: 'LC9' }) -const lora_vrpa_cap1_cap = board.add(C_0603_1608Metric, { +// lora.vrpa_cap1.cap +const LC10 = board.add(C_0603_1608Metric, { translate: pt(0.436, 2.110), rotate: 0, - id: 'lora_vrpa_cap1_cap' + id: 'LC10' }) -const lora_dcc_l = board.add(L_0603_1608Metric, { +// lora.dcc_l +const LL1 = board.add(L_0603_1608Metric, { translate: pt(0.592, 2.110), rotate: 0, - id: 'lora_dcc_l' + id: 'LL1' }) -const lora_rf_sw_ic = board.add(SOT_363_SC_70_6, { +// lora.rf_sw.ic +const LU5 = board.add(SOT_363_SC_70_6, { translate: pt(0.890, 1.795), rotate: 0, - id: 'lora_rf_sw_ic' + id: 'LU5' }) -const lora_rf_sw_vdd_res = board.add(R_0603_1608Metric, { +// lora.rf_sw.vdd_res +const LR7 = board.add(R_0603_1608Metric, { translate: pt(0.748, 2.110), rotate: 0, - id: 'lora_rf_sw_vdd_res' + id: 'LR7' }) -const lora_rf_sw_ctrl_res = board.add(R_0603_1608Metric, { +// lora.rf_sw.ctrl_res +const LR8 = board.add(R_0603_1608Metric, { translate: pt(0.904, 2.110), rotate: 0, - id: 'lora_rf_sw_ctrl_res' + id: 'LR8' }) -const lora_tx_dcblock = board.add(C_0603_1608Metric, { +// lora.tx_dcblock +const LC11 = board.add(C_0603_1608Metric, { translate: pt(0.436, 2.207), rotate: 0, - id: 'lora_tx_dcblock' + id: 'LC11' }) -const lora_rfc_dcblock = board.add(C_0603_1608Metric, { +// lora.rfc_dcblock +const LC12 = board.add(C_0603_1608Metric, { translate: pt(0.592, 2.207), rotate: 0, - id: 'lora_rfc_dcblock' + id: 'LC12' }) -const lora_vrpa_choke = board.add(L_0603_1608Metric, { +// lora.vrpa_choke +const LL2 = board.add(L_0603_1608Metric, { translate: pt(0.748, 2.207), rotate: 0, - id: 'lora_vrpa_choke' + id: 'LL2' }) -const lora_tx_l_l = board.add(L_0603_1608Metric, { +// lora.tx_l.l +const LL3 = board.add(L_0603_1608Metric, { translate: pt(0.904, 2.207), rotate: 0, - id: 'lora_tx_l_l' + id: 'LL3' }) -const lora_tx_l_c_lc = board.add(C_0603_1608Metric, { +// lora.tx_l.c_lc +const LC13 = board.add(C_0603_1608Metric, { translate: pt(0.436, 2.304), rotate: 0, - id: 'lora_tx_l_c_lc' + id: 'LC13' }) -const lora_tx_pi_c2 = board.add(C_0603_1608Metric, { +// lora.tx_pi.c2 +const LC14 = board.add(C_0603_1608Metric, { translate: pt(0.592, 2.304), rotate: 0, - id: 'lora_tx_pi_c2' + id: 'LC14' }) -const lora_tx_pi_l = board.add(L_0603_1608Metric, { +// lora.tx_pi.l +const LL4 = board.add(L_0603_1608Metric, { translate: pt(0.748, 2.304), rotate: 0, - id: 'lora_tx_pi_l' + id: 'LL4' }) -const lora_balun_l = board.add(L_0603_1608Metric, { +// lora.balun.l +const LL5 = board.add(L_0603_1608Metric, { translate: pt(0.904, 2.304), rotate: 0, - id: 'lora_balun_l' + id: 'LL5' }) -const lora_balun_c = board.add(C_0603_1608Metric, { +// lora.balun.c +const LC15 = board.add(C_0603_1608Metric, { translate: pt(0.058, 2.450), rotate: 0, - id: 'lora_balun_c' + id: 'LC15' }) -const lora_balun_c_p = board.add(C_0603_1608Metric, { +// lora.balun.c_p +const LC16 = board.add(C_0603_1608Metric, { translate: pt(0.214, 2.450), rotate: 0, - id: 'lora_balun_c_p' + id: 'LC16' }) -const lora_ant_pi_c1 = board.add(C_0603_1608Metric, { +// lora.ant_pi.c1 +const LC17 = board.add(C_0603_1608Metric, { translate: pt(0.370, 2.450), rotate: 0, - id: 'lora_ant_pi_c1' + id: 'LC17' }) -const lora_ant_pi_c2 = board.add(C_0603_1608Metric, { +// lora.ant_pi.c2 +const LC18 = board.add(C_0603_1608Metric, { translate: pt(0.526, 2.450), rotate: 0, - id: 'lora_ant_pi_c2' + id: 'LC18' }) -const lora_ant_pi_l = board.add(L_0603_1608Metric, { +// lora.ant_pi.l +const LL6 = board.add(L_0603_1608Metric, { translate: pt(0.682, 2.450), rotate: 0, - id: 'lora_ant_pi_l' + id: 'LL6' }) -const lora_ant_conn = board.add(SMA_Amphenol_901_143_Horizontal, { +// lora.ant.conn +const LJ3 = board.add(SMA_Amphenol_901_143_Horizontal, { translate: pt(0.169, 1.909), rotate: 0, - id: 'lora_ant_conn' + id: 'LJ3' }) -const tp_lora_spi_tp_sck_tp = board.add(TestPoint_TE_RCT_0805, { +// tp_lora_spi.tp_sck.tp +const LTP4 = board.add(TestPoint_TE_RCT_0805, { translate: pt(3.757, 1.778), rotate: 0, - id: 'tp_lora_spi_tp_sck_tp' + id: 'LTP4' }) -const tp_lora_spi_tp_mosi_tp = board.add(TestPoint_TE_RCT_0805, { +// tp_lora_spi.tp_mosi.tp +const LTP5 = board.add(TestPoint_TE_RCT_0805, { translate: pt(3.757, 1.892), rotate: 0, - id: 'tp_lora_spi_tp_mosi_tp' + id: 'LTP5' }) -const tp_lora_spi_tp_miso_tp = board.add(TestPoint_TE_RCT_0805, { +// tp_lora_spi.tp_miso.tp +const LTP6 = board.add(TestPoint_TE_RCT_0805, { translate: pt(3.757, 2.006), rotate: 0, - id: 'tp_lora_spi_tp_miso_tp' + id: 'LTP6' }) -const tp_lora_cs_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(1.275, 2.634), rotate: 0, - id: 'tp_lora_cs_tp' +// tp_lora_cs.tp +const LTP7 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(2.270, 2.634), rotate: 0, + id: 'LTP7' }) -const tp_lora_rst_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(2.771, 2.634), rotate: 0, - id: 'tp_lora_rst_tp' +// tp_lora_rst.tp +const LTP8 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(2.521, 2.634), rotate: 0, + id: 'LTP8' }) -const tp_lora_dio_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(1.775, 2.634), rotate: 0, - id: 'tp_lora_dio_tp' +// tp_lora_dio.tp +const LTP9 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(2.771, 2.634), rotate: 0, + id: 'LTP9' }) -const tp_lora_busy_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(2.521, 2.634), rotate: 0, - id: 'tp_lora_busy_tp' +// tp_lora_busy.tp +const LTP10 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(3.021, 2.634), rotate: 0, + id: 'LTP10' }) -const i2c_pull_scl_res_res = board.add(R_0603_1608Metric, { +// i2c_pull.scl_res.res +const LR9 = board.add(R_0603_1608Metric, { translate: pt(0.763, 2.626), rotate: 0, - id: 'i2c_pull_scl_res_res' + id: 'LR9' }) -const i2c_pull_sda_res_res = board.add(R_0603_1608Metric, { +// i2c_pull.sda_res.res +const LR10 = board.add(R_0603_1608Metric, { translate: pt(0.763, 2.722), rotate: 0, - id: 'i2c_pull_sda_res_res' + id: 'LR10' }) -const i2c_tp_tp_scl_tp = board.add(TestPoint_TE_RCT_0805, { +// i2c_tp.tp_scl.tp +const LTP11 = board.add(TestPoint_TE_RCT_0805, { translate: pt(4.008, 1.778), rotate: 0, - id: 'i2c_tp_tp_scl_tp' + id: 'LTP11' }) -const i2c_tp_tp_sda_tp = board.add(TestPoint_TE_RCT_0805, { +// i2c_tp.tp_sda.tp +const LTP12 = board.add(TestPoint_TE_RCT_0805, { translate: pt(4.008, 1.892), rotate: 0, - id: 'i2c_tp_tp_sda_tp' + id: 'LTP12' }) -const oled_device_conn = board.add(Hirose_FH12_30S_0_5SH_1x30_1MP_P0_50mm_Horizontal, { +// oled.device.conn +const LJ4 = board.add(Hirose_FH12_30S_0_5SH_1x30_1MP_P0_50mm_Horizontal, { translate: pt(2.956, 1.054), rotate: 0, - id: 'oled_device_conn' + id: 'LJ4' }) -const oled_lcd = board.add(Lcd_Er_Oled0_96_1_1_Outline, { +// oled.lcd +const LU6 = board.add(Lcd_Er_Oled0_96_1_1_Outline, { translate: pt(3.066, 0.516), rotate: 0, - id: 'oled_lcd' + id: 'LU6' }) -const oled_c1_cap = board.add(C_0603_1608Metric, { +// oled.c1_cap +const LC19 = board.add(C_0603_1608Metric, { translate: pt(3.815, 0.889), rotate: 0, - id: 'oled_c1_cap' + id: 'LC19' }) -const oled_c2_cap = board.add(C_0603_1608Metric, { +// oled.c2_cap +const LC20 = board.add(C_0603_1608Metric, { translate: pt(3.971, 0.889), rotate: 0, - id: 'oled_c2_cap' + id: 'LC20' }) -const oled_iref_res = board.add(R_0603_1608Metric, { +// oled.iref_res +const LR11 = board.add(R_0603_1608Metric, { translate: pt(3.469, 1.006), rotate: 0, - id: 'oled_iref_res' + id: 'LR11' }) -const oled_vcomh_cap_cap = board.add(C_0805_2012Metric, { +// oled.vcomh_cap.cap +const LC21 = board.add(C_0805_2012Metric, { translate: pt(3.477, 0.899), rotate: 0, - id: 'oled_vcomh_cap_cap' + id: 'LC21' }) -const oled_vdd_cap1_cap = board.add(C_0603_1608Metric, { +// oled.vdd_cap1.cap +const LC22 = board.add(C_0603_1608Metric, { translate: pt(3.624, 1.006), rotate: 0, - id: 'oled_vdd_cap1_cap' + id: 'LC22' }) -const oled_vbat_cap_cap = board.add(C_0603_1608Metric, { +// oled.vbat_cap.cap +const LC23 = board.add(C_0603_1608Metric, { translate: pt(3.780, 1.006), rotate: 0, - id: 'oled_vbat_cap_cap' + id: 'LC23' }) -const oled_vcc_cap_cap = board.add(C_0805_2012Metric, { +// oled.vcc_cap.cap +const LC24 = board.add(C_0805_2012Metric, { translate: pt(3.650, 0.899), rotate: 0, - id: 'oled_vcc_cap_cap' + id: 'LC24' }) -const oled_rst_ic = board.add(SOT_23, { +// oled_rst.ic +const LU7 = board.add(SOT_23, { translate: pt(1.015, 2.664), rotate: 0, - id: 'oled_rst_ic' + id: 'LU7' }) -const oled_pull_res = board.add(R_0603_1608Metric, { +// oled_pull.res +const LR12 = board.add(R_0603_1608Metric, { translate: pt(3.499, 2.626), rotate: 0, - id: 'oled_pull_res' + id: 'LR12' }) -const sd = board.add(microSD_HC_Molex_104031_0811, { +// sd +const LJ5 = board.add(microSD_HC_Molex_104031_0811, { translate: pt(2.381, 1.998), rotate: 0, - id: 'sd' + id: 'LJ5' }) -const nfc_ic = board.add(HVQFN_40_1EP_6x6mm_P0_5mm_EP4_1x4_1mm, { +// nfc.ic +const LU8 = board.add(HVQFN_40_1EP_6x6mm_P0_5mm_EP4_1x4_1mm, { translate: pt(1.223, 1.883), rotate: 0, - id: 'nfc_ic' + id: 'LU8' }) -const nfc_cvddup_cap = board.add(C_0805_2012Metric, { +// nfc.cvddup.cap +const LC25 = board.add(C_0805_2012Metric, { translate: pt(1.677, 1.779), rotate: 0, - id: 'nfc_cvddup_cap' + id: 'LC25' }) -const nfc_cvbat_cap = board.add(C_0805_2012Metric, { +// nfc.cvbat.cap +const LC26 = board.add(C_0805_2012Metric, { translate: pt(1.850, 1.779), rotate: 0, - id: 'nfc_cvbat_cap' + id: 'LC26' }) -const nfc_cvbat1_cap = board.add(C_0603_1608Metric, { +// nfc.cvbat1.cap +const LC27 = board.add(C_0603_1608Metric, { translate: pt(1.312, 2.094), rotate: 0, - id: 'nfc_cvbat1_cap' + id: 'LC27' }) -const nfc_cvdd1_cap = board.add(C_0805_2012Metric, { +// nfc.cvdd1.cap +const LC28 = board.add(C_0805_2012Metric, { translate: pt(1.472, 1.952), rotate: 0, - id: 'nfc_cvdd1_cap' + id: 'LC28' }) -const nfc_cvdd2_cap = board.add(C_0805_2012Metric, { +// nfc.cvdd2.cap +const LC29 = board.add(C_0805_2012Metric, { translate: pt(1.646, 1.952), rotate: 0, - id: 'nfc_cvdd2_cap' + id: 'LC29' }) -const nfc_ctvdd1_cap = board.add(C_0805_2012Metric, { +// nfc.ctvdd1.cap +const LC30 = board.add(C_0805_2012Metric, { translate: pt(1.819, 1.952), rotate: 0, - id: 'nfc_ctvdd1_cap' + id: 'LC30' }) -const nfc_ctvdd2_cap = board.add(C_0805_2012Metric, { +// nfc.ctvdd2.cap +const LC31 = board.add(C_0805_2012Metric, { translate: pt(1.147, 2.104), rotate: 0, - id: 'nfc_ctvdd2_cap' + id: 'LC31' }) -const nfc_cvddpad_cap = board.add(C_0603_1608Metric, { +// nfc.cvddpad.cap +const LC32 = board.add(C_0603_1608Metric, { translate: pt(1.468, 2.094), rotate: 0, - id: 'nfc_cvddpad_cap' + id: 'LC32' }) -const nfc_cvddmid_cap = board.add(C_0603_1608Metric, { +// nfc.cvddmid.cap +const LC33 = board.add(C_0603_1608Metric, { translate: pt(1.624, 2.094), rotate: 0, - id: 'nfc_cvddmid_cap' + id: 'LC33' }) -const nfc_xtal_package = board.add(Crystal_SMD_3225_4Pin_3_2x2_5mm, { +// nfc.xtal.package +const LX2 = board.add(Crystal_SMD_3225_4Pin_3_2x2_5mm, { translate: pt(1.488, 1.807), rotate: 0, - id: 'nfc_xtal_package' + id: 'LX2' }) -const nfc_xtal_cap_a = board.add(C_0603_1608Metric, { +// nfc.xtal.cap_a +const LC34 = board.add(C_0603_1608Metric, { translate: pt(1.780, 2.094), rotate: 0, - id: 'nfc_xtal_cap_a' + id: 'LC34' }) -const nfc_xtal_cap_b = board.add(C_0603_1608Metric, { +// nfc.xtal.cap_b +const LC35 = board.add(C_0603_1608Metric, { translate: pt(1.935, 2.094), rotate: 0, - id: 'nfc_xtal_cap_b' + id: 'LC35' }) -const nfc_rx_rrx1 = board.add(R_0603_1608Metric, { +// nfc.rx.rrx1 +const LR13 = board.add(R_0603_1608Metric, { translate: pt(1.139, 2.211), rotate: 0, - id: 'nfc_rx_rrx1' + id: 'LR13' }) -const nfc_rx_rrx2 = board.add(R_0603_1608Metric, { +// nfc.rx.rrx2 +const LR14 = board.add(R_0603_1608Metric, { translate: pt(1.294, 2.211), rotate: 0, - id: 'nfc_rx_rrx2' + id: 'LR14' }) -const nfc_rx_crx1 = board.add(C_0603_1608Metric, { +// nfc.rx.crx1 +const LC36 = board.add(C_0603_1608Metric, { translate: pt(1.450, 2.211), rotate: 0, - id: 'nfc_rx_crx1' + id: 'LC36' }) -const nfc_rx_crx2 = board.add(C_0603_1608Metric, { +// nfc.rx.crx2 +const LC37 = board.add(C_0603_1608Metric, { translate: pt(1.606, 2.211), rotate: 0, - id: 'nfc_rx_crx2' + id: 'LC37' }) -const nfc_emc_l1 = board.add(L_0603_1608Metric, { +// nfc.emc.l1 +const LL7 = board.add(L_0603_1608Metric, { translate: pt(1.762, 2.211), rotate: 0, - id: 'nfc_emc_l1' + id: 'LL7' }) -const nfc_emc_l2 = board.add(L_0603_1608Metric, { +// nfc.emc.l2 +const LL8 = board.add(L_0603_1608Metric, { translate: pt(1.918, 2.211), rotate: 0, - id: 'nfc_emc_l2' + id: 'LL8' }) -const nfc_emc_c1 = board.add(C_0603_1608Metric, { +// nfc.emc.c1 +const LC38 = board.add(C_0603_1608Metric, { translate: pt(1.139, 2.307), rotate: 0, - id: 'nfc_emc_c1' + id: 'LC38' }) -const nfc_emc_c2 = board.add(C_0603_1608Metric, { +// nfc.emc.c2 +const LC39 = board.add(C_0603_1608Metric, { translate: pt(1.294, 2.307), rotate: 0, - id: 'nfc_emc_c2' + id: 'LC39' }) -const nfc_ant = board.add(an13219, { +// nfc.ant +const LANT1 = board.add(an13219, { translate: pt(1.392, 2.376), rotate: 0, - id: 'nfc_ant' + id: 'LANT1' }) -const nfc_damp_r1 = board.add(R_0603_1608Metric, { +// nfc.damp.r1 +const LR15 = board.add(R_0603_1608Metric, { translate: pt(1.450, 2.307), rotate: 0, - id: 'nfc_damp_r1' + id: 'LR15' }) -const nfc_damp_r2 = board.add(R_0603_1608Metric, { +// nfc.damp.r2 +const LR16 = board.add(R_0603_1608Metric, { translate: pt(1.606, 2.307), rotate: 0, - id: 'nfc_damp_r2' + id: 'LR16' }) -const nfc_match_cs1 = board.add(C_0603_1608Metric, { +// nfc.match.cs1 +const LC40 = board.add(C_0603_1608Metric, { translate: pt(1.762, 2.307), rotate: 0, - id: 'nfc_match_cs1' + id: 'LC40' }) -const nfc_match_cs2 = board.add(C_0603_1608Metric, { +// nfc.match.cs2 +const LC41 = board.add(C_0603_1608Metric, { translate: pt(1.918, 2.307), rotate: 0, - id: 'nfc_match_cs2' + id: 'LC41' }) -const nfc_match_cp1 = board.add(C_0603_1608Metric, { +// nfc.match.cp1 +const LC42 = board.add(C_0603_1608Metric, { translate: pt(1.139, 2.404), rotate: 0, - id: 'nfc_match_cp1' + id: 'LC42' }) -const nfc_match_cp2 = board.add(C_0603_1608Metric, { +// nfc.match.cp2 +const LC43 = board.add(C_0603_1608Metric, { translate: pt(1.294, 2.404), rotate: 0, - id: 'nfc_match_cp2' + id: 'LC43' }) -const tx_cpack_cap = board.add(C_0603_1608Metric, { - translate: pt(3.264, 2.626), rotate: 0, - id: 'tx_cpack_cap' +// tx_cpack.cap +const LC44 = board.add(C_0603_1608Metric, { + translate: pt(3.733, 2.626), rotate: 0, + id: 'LC44' }) +board.setNetlist([ + {name: "Lgnd", pads: [["LU3", "3"], ["LJ5", "6"], ["LJ5", "11"], ["LU7", "1"], ["LJ1", "A1"], ["LJ1", "B12"], ["LJ1", "B1"], ["LJ1", "A12"], ["LTP1", "1"], ["LU1", "1"], ["LD1", "2"], ["LU2", "1"], ["LU2", "40"], ["LU2", "41"], ["LR4", "2"], ["LR5", "2"], ["LR6", "2"], ["LU4", "2"], ["LU4", "5"], ["LU4", "8"], ["LU4", "20"], ["LU4", "25"], ["LX1", "2"], ["LX1", "4"], ["LU8", "1"], ["LU8", "3"], ["LU8", "4"], ["LU8", "9"], ["LU8", "20"], ["LU8", "41"], ["LU5", "2"], ["LJ3", "2"], ["LJ1", "S1"], ["LR11", "2"], ["LC1", "2"], ["LC2", "2"], ["LC3", "2"], ["LC4", "2"], ["LJ2", "5"], ["LSW1", "2"], ["LC6", "2"], ["LC7", "2"], ["LC8", "2"], ["LC9", "2"], ["LC10", "2"], ["LC16", "2"], ["LC21", "2"], ["LC22", "2"], ["LC23", "2"], ["LC24", "2"], ["LC25", "2"], ["LC26", "2"], ["LC27", "2"], ["LC28", "2"], ["LC29", "2"], ["LC30", "2"], ["LC31", "2"], ["LC32", "2"], ["LC33", "2"], ["LX2", "2"], ["LX2", "4"], ["LC5", "2"], ["LR1", "1"], ["LR2", "1"], ["LC14", "2"], ["LC17", "2"], ["LC18", "2"], ["LJ4", "8"], ["LJ4", "1"], ["LJ4", "30"], ["LJ4", "29"], ["LJ4", "17"], ["LJ4", "16"], ["LJ4", "21"], ["LJ4", "22"], ["LJ4", "23"], ["LJ4", "24"], ["LJ4", "25"], ["LJ4", "12"], ["LJ4", "10"], ["LJ4", "15"], ["LJ4", "13"], ["LC34", "2"], ["LC35", "2"], ["LC38", "2"], ["LC39", "2"], ["LC42", "2"], ["LC43", "2"], ["LC44", "2"]]}, + {name: "Lpwr", pads: [["LFB1", "2"], ["LTP2", "1"], ["LU1", "3"], ["LU8", "12"], ["LU8", "28"], ["LU8", "13"], ["LC1", "1"], ["LC25", "1"], ["LC26", "1"], ["LC27", "1"]]}, + {name: "Lv3v3", pads: [["LJ5", "4"], ["LU7", "3"], ["LU1", "2"], ["LTP3", "1"], ["LD1", "1"], ["LU2", "2"], ["LU4", "1"], ["LU4", "10"], ["LU4", "11"], ["LR12", "1"], ["LU8", "6"], ["LC2", "1"], ["LC3", "1"], ["LC4", "1"], ["LJ2", "1"], ["LC7", "1"], ["LC8", "1"], ["LR7", "1"], ["LR9", "1"], ["LR10", "1"], ["LJ4", "9"], ["LJ4", "6"], ["LC22", "1"], ["LC23", "1"], ["LC32", "1"], ["LR3", "1"], ["LJ4", "11"]]}, + {name: "Lusb.pwr", pads: [["LJ1", "A4"], ["LJ1", "B9"], ["LJ1", "B4"], ["LJ1", "A9"], ["LFB1", "1"]]}, + {name: "Lusb_chain_0.d_P", pads: [["LJ1", "A6"], ["LJ1", "B6"], ["LU3", "2"], ["LU2", "14"]]}, + {name: "Lusb_chain_0.d_N", pads: [["LJ1", "A7"], ["LJ1", "B7"], ["LU3", "1"], ["LU2", "13"]]}, + {name: "Lledr.signal", pads: [["LU2", "34"], ["LD2", "2"]]}, + {name: "Lledg.signal", pads: [["LU2", "35"], ["LD3", "2"]]}, + {name: "Lledb.signal", pads: [["LU2", "39"], ["LD4", "2"]]}, + {name: "Ltp_lora_spi.io.sck", pads: [["LU2", "5"], ["LU4", "18"], ["LTP4", "1"]]}, + {name: "Ltp_lora_spi.io.mosi", pads: [["LU2", "6"], ["LU4", "17"], ["LTP5", "1"]]}, + {name: "Ltp_lora_spi.io.miso", pads: [["LU2", "15"], ["LU4", "16"], ["LTP6", "1"]]}, + {name: "Ltp_lora_cs.io", pads: [["LU2", "7"], ["LU4", "19"], ["LTP7", "1"]]}, + {name: "Ltp_lora_rst.io", pads: [["LU2", "12"], ["LU4", "15"], ["LTP8", "1"]]}, + {name: "Ltp_lora_dio.io", pads: [["LU2", "31"], ["LU4", "13"], ["LTP9", "1"]]}, + {name: "Llora.busy", pads: [["LU2", "33"], ["LU4", "14"], ["LTP10", "1"]]}, + {name: "Li2c_pull.i2c.scl", pads: [["LU2", "10"], ["LU8", "7"], ["LR9", "2"], ["LTP11", "1"], ["LJ4", "18"]]}, + {name: "Li2c_pull.i2c.sda", pads: [["LU2", "11"], ["LU8", "5"], ["LR10", "2"], ["LTP12", "1"], ["LJ4", "19"], ["LJ4", "20"]]}, + {name: "Loled_rst.nreset", pads: [["LU7", "2"], ["LR12", "2"], ["LJ4", "14"]]}, + {name: "Lsd.spi.sck", pads: [["LU2", "22"], ["LJ5", "5"]]}, + {name: "Lsd.spi.mosi", pads: [["LU2", "19"], ["LJ5", "3"]]}, + {name: "Lsd.spi.miso", pads: [["LU2", "38"], ["LJ5", "7"]]}, + {name: "Lsd.cs", pads: [["LU2", "21"], ["LJ5", "2"]]}, + {name: "Lnfc.reset", pads: [["LU8", "10"], ["LU2", "32"]]}, + {name: "Lnfc.irq", pads: [["LU8", "8"], ["LU2", "24"]]}, + {name: "Ltx_cpack.pos.0", pads: [["LL3", "2"], ["LC13", "1"], ["LC44", "1"], ["LL4", "1"]]}, + {name: "Lusb.conn.cc.cc1", pads: [["LJ1", "A5"], ["LR1", "2"]]}, + {name: "Lusb.conn.cc.cc2", pads: [["LJ1", "B5"], ["LR2", "2"]]}, + {name: "Lmcu.program_uart_node.a_tx", pads: [["LU2", "37"], ["LJ2", "3"]]}, + {name: "Lmcu.program_uart_node.b_tx", pads: [["LU2", "36"], ["LJ2", "4"]]}, + {name: "Lmcu.program_en_node", pads: [["LU2", "3"], ["LJ2", "6"], ["LR3", "2"], ["LC5", "1"]]}, + {name: "Lmcu.program_boot_node", pads: [["LU2", "27"], ["LSW1", "1"], ["LJ2", "2"]]}, + {name: "Lledr.res.a", pads: [["LR4", "1"], ["LD2", "1"]]}, + {name: "Lledg.res.a", pads: [["LR5", "1"], ["LD3", "1"]]}, + {name: "Lledb.res.a", pads: [["LR6", "1"], ["LD4", "1"]]}, + {name: "Llora.xtal.crystal.xtal_in", pads: [["LX1", "1"], ["LU4", "3"]]}, + {name: "Llora.xtal.crystal.xtal_out", pads: [["LX1", "3"], ["LU4", "4"]]}, + {name: "Llora.ic.vreg", pads: [["LU4", "7"], ["LL1", "2"], ["LC6", "1"]]}, + {name: "Llora.ic.vr_pa", pads: [["LU4", "24"], ["LL2", "1"], ["LC9", "1"], ["LC10", "1"]]}, + {name: "Llora.dcc_l.a", pads: [["LL1", "1"], ["LU4", "9"]]}, + {name: "Llora.rf_sw.ctrl", pads: [["LU4", "12"], ["LR8", "1"]]}, + {name: "Llora.tx_dcblock.pos", pads: [["LC11", "1"], ["LU5", "1"]]}, + {name: "Llora.rfc_dcblock.neg", pads: [["LC12", "2"], ["LU5", "5"]]}, + {name: "Llora.ic.rfo", pads: [["LU4", "23"], ["LL2", "2"], ["LL3", "1"], ["LC13", "2"]]}, + {name: "Llora.tx_pi.output", pads: [["LC11", "2"], ["LL4", "2"], ["LC14", "1"]]}, + {name: "Llora.balun.input", pads: [["LC15", "1"], ["LU5", "3"]]}, + {name: "Llora.balun.rfi_n", pads: [["LU4", "22"], ["LC15", "2"], ["LL5", "1"]]}, + {name: "Llora.balun.rfi_p", pads: [["LU4", "21"], ["LC16", "1"], ["LL5", "2"]]}, + {name: "Llora.rfc_dcblock.pos", pads: [["LC12", "1"], ["LC17", "1"], ["LL6", "1"]]}, + {name: "Llora.ant_pi.output", pads: [["LJ3", "1"], ["LL6", "2"], ["LC18", "1"]]}, + {name: "Llora.ic.dio3", pads: [["LU4", "6"]]}, + {name: "Llora.rf_sw.vdd_res.b", pads: [["LR7", "2"], ["LU5", "6"]]}, + {name: "Llora.rf_sw.ctrl_res.b", pads: [["LR8", "2"], ["LU5", "4"]]}, + {name: "Loled.c1_cap.pos", pads: [["LC19", "1"], ["LJ4", "4"]]}, + {name: "Loled.c1_cap.neg", pads: [["LC19", "2"], ["LJ4", "5"]]}, + {name: "Loled.c2_cap.pos", pads: [["LC20", "1"], ["LJ4", "2"]]}, + {name: "Loled.c2_cap.neg", pads: [["LC20", "2"], ["LJ4", "3"]]}, + {name: "Loled.iref_res.a", pads: [["LR11", "1"], ["LJ4", "26"]]}, + {name: "Loled.device.vcomh", pads: [["LJ4", "27"], ["LC21", "1"]]}, + {name: "Loled.device.vcc", pads: [["LJ4", "28"], ["LC24", "1"]]}, + {name: "Lnfc.ic.vdd", pads: [["LU8", "26"], ["LU8", "27"], ["LU8", "31"], ["LC28", "1"], ["LC29", "1"]]}, + {name: "Lnfc.ic.vddtx", pads: [["LU8", "14"], ["LU8", "18"], ["LU8", "22"], ["LC30", "1"], ["LC31", "1"]]}, + {name: "Lnfc.ic.vddmid", pads: [["LU8", "17"], ["LC33", "1"]]}, + {name: "Lnfc.ic.xtal.xtal_in", pads: [["LU8", "30"], ["LX2", "1"], ["LC34", "1"]]}, + {name: "Lnfc.ic.xtal.xtal_out", pads: [["LU8", "29"], ["LX2", "3"], ["LC35", "1"]]}, + {name: "Lnfc.ic.rxp", pads: [["LU8", "16"], ["LC36", "2"]]}, + {name: "Lnfc.ic.rxn", pads: [["LU8", "15"], ["LC37", "2"]]}, + {name: "Lnfc.ic.tx1", pads: [["LU8", "21"], ["LL7", "1"]]}, + {name: "Lnfc.ic.tx2", pads: [["LU8", "19"], ["LL8", "1"]]}, + {name: "Lnfc.damp.ant1", pads: [["LR15", "2"], ["LANT1", "1"]]}, + {name: "Lnfc.damp.ant2", pads: [["LR16", "2"], ["LANT1", "2"]]}, + {name: "Lnfc.emc.out1", pads: [["LC40", "1"], ["LR13", "1"], ["LL7", "2"], ["LC38", "1"]]}, + {name: "Lnfc.emc.out2", pads: [["LC41", "1"], ["LR14", "1"], ["LL8", "2"], ["LC39", "1"]]}, + {name: "Lnfc.match.out1", pads: [["LR15", "1"], ["LC40", "2"], ["LC42", "1"]]}, + {name: "Lnfc.match.out2", pads: [["LR16", "1"], ["LC41", "2"], ["LC43", "1"]]}, + {name: "Lnfc.rx.rrx1.b", pads: [["LR13", "2"], ["LC36", "1"]]}, + {name: "Lnfc.rx.rrx2.b", pads: [["LR14", "2"], ["LC37", "1"]]} +]) + const limit0 = pt(-0.07874015748031496, -0.07874015748031496); const limit1 = pt(4.25767716535433, 2.8696850393700797); const xMin = Math.min(limit0[0], limit1[0]); diff --git a/examples/EspProgrammer/EspProgrammer.svgpcb.js b/examples/EspProgrammer/EspProgrammer.svgpcb.js index 4105b1434..22ea3889a 100644 --- a/examples/EspProgrammer/EspProgrammer.svgpcb.js +++ b/examples/EspProgrammer/EspProgrammer.svgpcb.js @@ -1,102 +1,153 @@ const board = new PCB(); -const jlc_th_th1 = board.add(JlcToolingHole_1_152mm, { +// jlc_th.th1 +const UH1 = board.add(JlcToolingHole_1_152mm, { translate: pt(0.670, 1.198), rotate: 0, - id: 'jlc_th_th1' + id: 'UH1' }) -const jlc_th_th2 = board.add(JlcToolingHole_1_152mm, { +// jlc_th.th2 +const UH2 = board.add(JlcToolingHole_1_152mm, { translate: pt(0.709, 1.198), rotate: 0, - id: 'jlc_th_th2' + id: 'UH2' }) -const jlc_th_th3 = board.add(JlcToolingHole_1_152mm, { +// jlc_th.th3 +const UH3 = board.add(JlcToolingHole_1_152mm, { translate: pt(0.670, 1.237), rotate: 0, - id: 'jlc_th_th3' + id: 'UH3' }) -const usb_uart_conn = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { +// usb_uart.conn +const UJ1 = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { translate: pt(0.857, 0.165), rotate: 0, - id: 'usb_uart_conn' + id: 'UJ1' }) -const usb_uart_cc_pull_cc1_res = board.add(R_0402_1005Metric, { +// usb_uart.cc_pull.cc1.res +const UR1 = board.add(R_0402_1005Metric, { translate: pt(1.142, 0.019), rotate: 0, - id: 'usb_uart_cc_pull_cc1_res' + id: 'UR1' }) -const usb_uart_cc_pull_cc2_res = board.add(R_0402_1005Metric, { +// usb_uart.cc_pull.cc2.res +const UR2 = board.add(R_0402_1005Metric, { translate: pt(1.142, 0.095), rotate: 0, - id: 'usb_uart_cc_pull_cc2_res' + id: 'UR2' }) -const vusb_protect_diode = board.add(D_SOD_323, { +// vusb_protect.diode +const UD1 = board.add(D_SOD_323, { translate: pt(0.298, 1.235), rotate: 0, - id: 'vusb_protect_diode' + id: 'UD1' }) -const usbconv_ic = board.add(QFN_28_1EP_5x5mm_P0_5mm_EP3_35x3_35mm, { +// usbconv.ic +const UU1 = board.add(QFN_28_1EP_5x5mm_P0_5mm_EP3_35x3_35mm, { translate: pt(0.850, 0.881), rotate: 0, - id: 'usbconv_ic' + id: 'UU1' }) -const usbconv_regin_cap0_cap = board.add(C_0402_1005Metric, { +// usbconv.regin_cap0.cap +const UC1 = board.add(C_0402_1005Metric, { translate: pt(1.047, 0.778), rotate: 0, - id: 'usbconv_regin_cap0_cap' + id: 'UC1' }) -const usbconv_regin_cap1_cap = board.add(C_0402_1005Metric, { +// usbconv.regin_cap1.cap +const UC2 = board.add(C_0402_1005Metric, { translate: pt(1.047, 0.853), rotate: 0, - id: 'usbconv_regin_cap1_cap' + id: 'UC2' }) -const usbconv_vdd_cap_cap = board.add(C_0402_1005Metric, { +// usbconv.vdd_cap.cap +const UC3 = board.add(C_0402_1005Metric, { translate: pt(1.047, 0.929), rotate: 0, - id: 'usbconv_vdd_cap_cap' + id: 'UC3' }) -const usb_esd = board.add(SOT_23, { +// usb_esd +const UU2 = board.add(SOT_23, { translate: pt(0.555, 1.265), rotate: 0, - id: 'usb_esd' + id: 'UU2' }) -const reg_3v3_ic = board.add(SOT_23_5, { +// reg_3v3.ic +const UU3 = board.add(SOT_23_5, { translate: pt(0.445, 0.826), rotate: 0, - id: 'reg_3v3_ic' + id: 'UU3' }) -const reg_3v3_in_cap_cap = board.add(C_0402_1005Metric, { +// reg_3v3.in_cap.cap +const UC4 = board.add(C_0402_1005Metric, { translate: pt(0.574, 0.951), rotate: 0, - id: 'reg_3v3_in_cap_cap' + id: 'UC4' }) -const reg_3v3_out_cap_cap = board.add(C_0805_2012Metric, { +// reg_3v3.out_cap.cap +const UC5 = board.add(C_0805_2012Metric, { translate: pt(0.431, 0.971), rotate: 0, - id: 'reg_3v3_out_cap_cap' + id: 'UC5' }) -const out_conn = board.add(PinHeader_2x03_P2_54mm_EdgeInline, { +// out.conn +const UJ2 = board.add(PinHeader_2x03_P2_54mm_EdgeInline, { translate: pt(0.159, 0.321), rotate: 0, - id: 'out_conn' + id: 'UJ2' }) -const auto_q_en = board.add(SOT_323_SC_70, { +// auto.q_en +const UQ1 = board.add(SOT_323_SC_70, { translate: pt(0.067, 0.811), rotate: 0, - id: 'auto_q_en' + id: 'UQ1' }) -const auto_q_boot = board.add(SOT_323_SC_70, { +// auto.q_boot +const UQ2 = board.add(SOT_323_SC_70, { translate: pt(0.067, 0.952), rotate: 0, - id: 'auto_q_boot' + id: 'UQ2' }) -const auto_dtr_res = board.add(R_0402_1005Metric, { +// auto.dtr_res +const UR3 = board.add(R_0402_1005Metric, { translate: pt(0.210, 0.920), rotate: 0, - id: 'auto_dtr_res' + id: 'UR3' }) -const auto_rts_res = board.add(R_0402_1005Metric, { +// auto.rts_res +const UR4 = board.add(R_0402_1005Metric, { translate: pt(0.037, 1.061), rotate: 0, - id: 'auto_rts_res' + id: 'UR4' }) -const led_package = board.add(LED_0603_1608Metric, { +// led.package +const UD2 = board.add(LED_0603_1608Metric, { translate: pt(1.259, 0.788), rotate: 0, - id: 'led_package' + id: 'UD2' }) -const led_res = board.add(R_0402_1005Metric, { +// led.res +const UR5 = board.add(R_0402_1005Metric, { translate: pt(1.237, 0.875), rotate: 0, - id: 'led_res' + id: 'UR5' }) -const led_en_package = board.add(LED_0603_1608Metric, { +// led_en.package +const UD3 = board.add(LED_0603_1608Metric, { translate: pt(0.058, 1.227), rotate: 0, - id: 'led_en_package' + id: 'UD3' }) -const led_en_res = board.add(R_0402_1005Metric, { +// led_en.res +const UR6 = board.add(R_0402_1005Metric, { translate: pt(0.037, 1.314), rotate: 0, - id: 'led_en_res' + id: 'UR6' }) +board.setNetlist([ + {name: "Uvusb", pads: [["UJ1", "A4"], ["UJ1", "B9"], ["UJ1", "B4"], ["UJ1", "A9"], ["UD1", "1"], ["UU1", "7"], ["UU1", "8"], ["UU3", "1"], ["UU3", "3"], ["UC1", "1"], ["UC2", "1"], ["UC4", "1"]]}, + {name: "Ugnd", pads: [["UU2", "3"], ["UJ1", "A1"], ["UJ1", "B12"], ["UJ1", "B1"], ["UJ1", "A12"], ["UD1", "2"], ["UU1", "3"], ["UU1", "29"], ["UU3", "2"], ["UJ2", "5"], ["UJ1", "S1"], ["UC1", "2"], ["UC2", "2"], ["UC3", "2"], ["UC4", "2"], ["UC5", "2"], ["UR1", "1"], ["UR2", "1"]]}, + {name: "Uv3v3", pads: [["UU3", "5"], ["UJ2", "1"], ["UD2", "2"], ["UD3", "2"], ["UC5", "1"]]}, + {name: "Uusb_chain_0.d_P", pads: [["UJ1", "A6"], ["UJ1", "B6"], ["UU2", "2"], ["UU1", "4"]]}, + {name: "Uusb_chain_0.d_N", pads: [["UJ1", "A7"], ["UJ1", "B7"], ["UU2", "1"], ["UU1", "5"]]}, + {name: "Uusbconv.uart.tx", pads: [["UU1", "26"], ["UJ2", "4"]]}, + {name: "Uusbconv.uart.rx", pads: [["UU1", "25"], ["UJ2", "3"]]}, + {name: "Uusbconv.dtr", pads: [["UU1", "28"], ["UR3", "1"], ["UQ2", "2"]]}, + {name: "Uusbconv.rts", pads: [["UU1", "24"], ["UR4", "1"], ["UQ1", "2"], ["UR6", "2"]]}, + {name: "Uauto.en", pads: [["UQ1", "3"], ["UJ2", "6"]]}, + {name: "Uauto.boot", pads: [["UQ2", "3"], ["UJ2", "2"]]}, + {name: "Uusbconv.suspend", pads: [["UU1", "12"], ["UR5", "2"]]}, + {name: "Uusb_uart.conn.cc.cc1", pads: [["UJ1", "A5"], ["UR1", "2"]]}, + {name: "Uusb_uart.conn.cc.cc2", pads: [["UJ1", "B5"], ["UR2", "2"]]}, + {name: "Uusbconv.nsuspend", pads: [["UU1", "11"]]}, + {name: "Uusbconv.ri", pads: [["UU1", "2"]]}, + {name: "Uusbconv.dcd", pads: [["UU1", "1"]]}, + {name: "Uusbconv.dsr", pads: [["UU1", "27"]]}, + {name: "Uusbconv.cts", pads: [["UU1", "23"]]}, + {name: "Uusbconv.ic.vdd", pads: [["UU1", "6"], ["UU1", "9"], ["UC3", "1"]]}, + {name: "Uauto.dtr_res.b", pads: [["UR3", "2"], ["UQ1", "1"]]}, + {name: "Uauto.rts_res.b", pads: [["UR4", "2"], ["UQ2", "1"]]}, + {name: "Uled.res.a", pads: [["UR5", "1"], ["UD2", "1"]]}, + {name: "Uled_en.res.a", pads: [["UR6", "1"], ["UD3", "1"]]} +]) + const limit0 = pt(-0.07874015748031496, -0.07874015748031496); const limit1 = pt(1.4356299212598427, 1.4503937007874017); const xMin = Math.min(limit0[0], limit1[0]); diff --git a/examples/Fcml/Fcml.svgpcb.js b/examples/Fcml/Fcml.svgpcb.js index c1027e83d..f0ce4623d 100644 --- a/examples/Fcml/Fcml.svgpcb.js +++ b/examples/Fcml/Fcml.svgpcb.js @@ -1,705 +1,993 @@ const board = new PCB(); -const jlc_th_th1 = board.add(JlcToolingHole_1_152mm, { +// jlc_th.th1 +const H1 = board.add(JlcToolingHole_1_152mm, { translate: pt(3.599, 2.702), rotate: 0, - id: 'jlc_th_th1' + id: 'H1' }) -const jlc_th_th2 = board.add(JlcToolingHole_1_152mm, { +// jlc_th.th2 +const H2 = board.add(JlcToolingHole_1_152mm, { translate: pt(3.638, 2.702), rotate: 0, - id: 'jlc_th_th2' + id: 'H2' }) -const jlc_th_th3 = board.add(JlcToolingHole_1_152mm, { +// jlc_th.th3 +const H3 = board.add(JlcToolingHole_1_152mm, { translate: pt(3.599, 2.742), rotate: 0, - id: 'jlc_th_th3' + id: 'H3' }) -const usb_mcu_conn = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { - translate: pt(1.774, 1.501), rotate: 0, - id: 'usb_mcu_conn' -}) -const usb_mcu_cc_pull_cc1_res = board.add(R_0603_1608Metric, { - translate: pt(1.623, 1.756), rotate: 0, - id: 'usb_mcu_cc_pull_cc1_res' -}) -const usb_mcu_cc_pull_cc2_res = board.add(R_0603_1608Metric, { - translate: pt(1.779, 1.756), rotate: 0, - id: 'usb_mcu_cc_pull_cc2_res' -}) -const usb_fpga_conn = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { +// usb_mcu.conn +const J1 = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { translate: pt(1.237, 1.501), rotate: 0, - id: 'usb_fpga_conn' + id: 'J1' }) -const usb_fpga_cc_pull_cc1_res = board.add(R_0603_1608Metric, { +// usb_mcu.cc_pull.cc1.res +const R1 = board.add(R_0603_1608Metric, { translate: pt(1.086, 1.756), rotate: 0, - id: 'usb_fpga_cc_pull_cc1_res' + id: 'R1' }) -const usb_fpga_cc_pull_cc2_res = board.add(R_0603_1608Metric, { +// usb_mcu.cc_pull.cc2.res +const R2 = board.add(R_0603_1608Metric, { translate: pt(1.242, 1.756), rotate: 0, - id: 'usb_fpga_cc_pull_cc2_res' + id: 'R2' +}) +// usb_fpga.conn +const J2 = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { + translate: pt(1.774, 1.501), rotate: 0, + id: 'J2' +}) +// usb_fpga.cc_pull.cc1.res +const R3 = board.add(R_0603_1608Metric, { + translate: pt(1.623, 1.756), rotate: 0, + id: 'R3' }) -const conv_in_conn = board.add(JST_PH_B2B_PH_K_1x02_P2_00mm_Vertical, { +// usb_fpga.cc_pull.cc2.res +const R4 = board.add(R_0603_1608Metric, { + translate: pt(1.779, 1.756), rotate: 0, + id: 'R4' +}) +// conv_in.conn +const J3 = board.add(JST_PH_B2B_PH_K_1x02_P2_00mm_Vertical, { translate: pt(2.596, 2.365), rotate: 0, - id: 'conv_in_conn' + id: 'J3' }) -const tp_vusb_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(2.783, 2.740), rotate: 0, - id: 'tp_vusb_tp' +// tp_vusb.tp +const TP1 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(0.535, 2.740), rotate: 0, + id: 'TP1' }) -const tp_gnd_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(1.036, 2.740), rotate: 0, - id: 'tp_gnd_tp' +// tp_gnd.tp +const TP2 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(0.786, 2.740), rotate: 0, + id: 'TP2' }) -const reg_3v3_ic = board.add(SOT_223_3_TabPin2, { +// reg_3v3.ic +const U1 = board.add(SOT_223_3_TabPin2, { translate: pt(2.275, 1.478), rotate: 0, - id: 'reg_3v3_ic' + id: 'U1' }) -const reg_3v3_in_cap_cap = board.add(C_0603_1608Metric, { +// reg_3v3.in_cap.cap +const C1 = board.add(C_0603_1608Metric, { translate: pt(2.333, 1.688), rotate: 0, - id: 'reg_3v3_in_cap_cap' + id: 'C1' }) -const reg_3v3_out_cap_cap = board.add(C_0805_2012Metric, { +// reg_3v3.out_cap.cap +const C2 = board.add(C_0805_2012Metric, { translate: pt(2.169, 1.698), rotate: 0, - id: 'reg_3v3_out_cap_cap' + id: 'C2' }) -const tp_3v3_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(2.282, 2.740), rotate: 0, - id: 'tp_3v3_tp' +// tp_3v3.tp +const TP3 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(1.036, 2.740), rotate: 0, + id: 'TP3' }) -const prot_3v3_diode = board.add(D_SOD_323, { +// prot_3v3.diode +const D1 = board.add(D_SOD_323, { translate: pt(1.284, 2.740), rotate: 0, - id: 'prot_3v3_diode' + id: 'D1' }) -const reg_vgate_ic = board.add(SOT_23_5, { +// reg_vgate.ic +const U2 = board.add(SOT_23_5, { translate: pt(2.828, 1.403), rotate: 0, - id: 'reg_vgate_ic' + id: 'U2' }) -const reg_vgate_fb_div_top_res = board.add(R_0603_1608Metric, { +// reg_vgate.fb.div.top_res +const R5 = board.add(R_0603_1608Metric, { translate: pt(2.624, 1.659), rotate: 0, - id: 'reg_vgate_fb_div_top_res' + id: 'R5' }) -const reg_vgate_fb_div_bottom_res = board.add(R_0603_1608Metric, { +// reg_vgate.fb.div.bottom_res +const R6 = board.add(R_0603_1608Metric, { translate: pt(2.780, 1.659), rotate: 0, - id: 'reg_vgate_fb_div_bottom_res' + id: 'R6' }) -const reg_vgate_power_path_inductor = board.add(L_Sunlord_SWPA3012S, { +// reg_vgate.power_path.inductor +const L1 = board.add(L_Sunlord_SWPA3012S, { translate: pt(2.637, 1.406), rotate: 0, - id: 'reg_vgate_power_path_inductor' + id: 'L1' }) -const reg_vgate_power_path_in_cap_cap = board.add(C_0805_2012Metric, { +// reg_vgate.power_path.in_cap.cap +const C3 = board.add(C_0805_2012Metric, { translate: pt(2.633, 1.553), rotate: 0, - id: 'reg_vgate_power_path_in_cap_cap' + id: 'C3' }) -const reg_vgate_power_path_out_cap_cap = board.add(C_0805_2012Metric, { +// reg_vgate.power_path.out_cap.cap +const C4 = board.add(C_0805_2012Metric, { translate: pt(2.806, 1.553), rotate: 0, - id: 'reg_vgate_power_path_out_cap_cap' + id: 'C4' }) -const reg_vgate_rect = board.add(D_SOD_323, { +// reg_vgate.rect +const D2 = board.add(D_SOD_323, { translate: pt(2.976, 1.552), rotate: 0, - id: 'reg_vgate_rect' + id: 'D2' }) -const tp_vgate_tp = board.add(TestPoint_TE_RCT_0805, { +// tp_vgate.tp +const TP4 = board.add(TestPoint_TE_RCT_0805, { translate: pt(1.531, 2.740), rotate: 0, - id: 'tp_vgate_tp' + id: 'TP4' }) -const conv_power_path_inductor = board.add(L_Sunlord_SWRB1207S, { +// conv.power_path.inductor +const L2 = board.add(L_Sunlord_SWRB1207S, { translate: pt(0.262, 0.256), rotate: 0, - id: 'conv_power_path_inductor' + id: 'L2' }) -const conv_power_path_in_cap_cap_c_0_ = board.add(C_1206_3216Metric, { +// conv.power_path.in_cap.cap.c[0] +const C5 = board.add(C_1206_3216Metric, { translate: pt(1.484, 0.597), rotate: 0, - id: 'conv_power_path_in_cap_cap_c_0_' + id: 'C5' }) -const conv_power_path_in_cap_cap_c_1_ = board.add(C_1206_3216Metric, { +// conv.power_path.in_cap.cap.c[1] +const C6 = board.add(C_1206_3216Metric, { translate: pt(1.705, 0.597), rotate: 0, - id: 'conv_power_path_in_cap_cap_c_1_' + id: 'C6' }) -const conv_power_path_in_cap_cap_c_2_ = board.add(C_1206_3216Metric, { +// conv.power_path.in_cap.cap.c[2] +const C7 = board.add(C_1206_3216Metric, { translate: pt(0.091, 0.849), rotate: 0, - id: 'conv_power_path_in_cap_cap_c_2_' + id: 'C7' }) -const conv_power_path_in_cap_cap_c_3_ = board.add(C_1206_3216Metric, { +// conv.power_path.in_cap.cap.c[3] +const C8 = board.add(C_1206_3216Metric, { translate: pt(0.311, 0.849), rotate: 0, - id: 'conv_power_path_in_cap_cap_c_3_' + id: 'C8' }) -const conv_power_path_in_cap_cap_c_4_ = board.add(C_1206_3216Metric, { +// conv.power_path.in_cap.cap.c[4] +const C9 = board.add(C_1206_3216Metric, { translate: pt(0.531, 0.849), rotate: 0, - id: 'conv_power_path_in_cap_cap_c_4_' + id: 'C9' }) -const conv_power_path_out_cap_cap_c_0_ = board.add(C_1206_3216Metric, { +// conv.power_path.out_cap.cap.c[0] +const C10 = board.add(C_1206_3216Metric, { translate: pt(0.752, 0.849), rotate: 0, - id: 'conv_power_path_out_cap_cap_c_0_' + id: 'C10' }) -const conv_power_path_out_cap_cap_c_1_ = board.add(C_1206_3216Metric, { +// conv.power_path.out_cap.cap.c[1] +const C11 = board.add(C_1206_3216Metric, { translate: pt(0.972, 0.849), rotate: 0, - id: 'conv_power_path_out_cap_cap_c_1_' + id: 'C11' }) -const conv_power_path_out_cap_cap_c_2_ = board.add(C_1206_3216Metric, { +// conv.power_path.out_cap.cap.c[2] +const C12 = board.add(C_1206_3216Metric, { translate: pt(1.193, 0.849), rotate: 0, - id: 'conv_power_path_out_cap_cap_c_2_' + id: 'C12' }) -const conv_sw_0__driver_ic = board.add(SOIC_8_3_9x4_9mm_P1_27mm, { +// conv.sw[0].driver.ic +const U3 = board.add(SOIC_8_3_9x4_9mm_P1_27mm, { translate: pt(0.709, 0.106), rotate: 0, - id: 'conv_sw_0__driver_ic' + id: 'U3' }) -const conv_sw_0__driver_cap_cap = board.add(C_0603_1608Metric, { +// conv.sw[0].driver.cap.cap +const C13 = board.add(C_0603_1608Metric, { translate: pt(1.769, 0.963), rotate: 0, - id: 'conv_sw_0__driver_cap_cap' + id: 'C13' }) -const conv_sw_0__driver_high_cap_cap = board.add(C_0603_1608Metric, { +// conv.sw[0].driver.high_cap.cap +const C14 = board.add(C_0603_1608Metric, { translate: pt(0.058, 1.093), rotate: 0, - id: 'conv_sw_0__driver_high_cap_cap' + id: 'C14' }) -const conv_sw_0__high_gate_res = board.add(R_0603_1608Metric, { +// conv.sw[0].high_gate_res +const R7 = board.add(R_0603_1608Metric, { translate: pt(0.214, 1.093), rotate: 0, - id: 'conv_sw_0__high_gate_res' + id: 'R7' }) -const conv_sw_0__low_gate_res = board.add(R_0603_1608Metric, { +// conv.sw[0].low_gate_res +const R8 = board.add(R_0603_1608Metric, { translate: pt(0.370, 1.093), rotate: 0, - id: 'conv_sw_0__low_gate_res' + id: 'R8' }) -const conv_sw_0__high_fet = board.add(SOIC_8_3_9x4_9mm_P1_27mm, { +// conv.sw[0].high_fet +const Q1 = board.add(SOIC_8_3_9x4_9mm_P1_27mm, { translate: pt(1.039, 0.106), rotate: 0, - id: 'conv_sw_0__high_fet' + id: 'Q1' }) -const conv_sw_0__low_fet = board.add(SOIC_8_3_9x4_9mm_P1_27mm, { +// conv.sw[0].low_fet +const Q2 = board.add(SOIC_8_3_9x4_9mm_P1_27mm, { translate: pt(1.370, 0.106), rotate: 0, - id: 'conv_sw_0__low_fet' + id: 'Q2' }) -const conv_sw_0__high_boot_cap = board.add(C_0603_1608Metric, { +// conv.sw[0].high_boot_cap +const C15 = board.add(C_0603_1608Metric, { translate: pt(0.526, 1.093), rotate: 0, - id: 'conv_sw_0__high_boot_cap' + id: 'C15' }) -const conv_sw_0__high_boot_diode_diode = board.add(D_SOD_323, { +// conv.sw[0].high_boot_diode.diode +const D3 = board.add(D_SOD_323, { translate: pt(0.945, 0.971), rotate: 0, - id: 'conv_sw_0__high_boot_diode_diode' + id: 'D3' }) -const conv_sw_1__ldo_ic = board.add(SOT_23_5, { +// conv.sw[1].ldo.ic +const U4 = board.add(SOT_23_5, { translate: pt(1.073, 0.619), rotate: 0, - id: 'conv_sw_1__ldo_ic' + id: 'U4' }) -const conv_sw_1__ldo_in_cap_cap = board.add(C_0603_1608Metric, { +// conv.sw[1].ldo.in_cap.cap +const C16 = board.add(C_0603_1608Metric, { translate: pt(0.682, 1.093), rotate: 0, - id: 'conv_sw_1__ldo_in_cap_cap' + id: 'C16' }) -const conv_sw_1__ldo_out_cap_cap = board.add(C_1206_3216Metric, { +// conv.sw[1].ldo.out_cap.cap +const C17 = board.add(C_1206_3216Metric, { translate: pt(1.413, 0.849), rotate: 0, - id: 'conv_sw_1__ldo_out_cap_cap' + id: 'C17' }) -const conv_sw_1__iso_ic = board.add(SOIC_8_3_9x4_9mm_P1_27mm, { +// conv.sw[1].iso.ic +const U5 = board.add(SOIC_8_3_9x4_9mm_P1_27mm, { translate: pt(1.701, 0.106), rotate: 0, - id: 'conv_sw_1__iso_ic' + id: 'U5' }) -const conv_sw_1__iso_cap_a_cap = board.add(C_0603_1608Metric, { +// conv.sw[1].iso.cap_a.cap +const C18 = board.add(C_0603_1608Metric, { translate: pt(0.838, 1.093), rotate: 0, - id: 'conv_sw_1__iso_cap_a_cap' + id: 'C18' }) -const conv_sw_1__iso_cap_b_cap = board.add(C_0603_1608Metric, { +// conv.sw[1].iso.cap_b.cap +const C19 = board.add(C_0603_1608Metric, { translate: pt(0.994, 1.093), rotate: 0, - id: 'conv_sw_1__iso_cap_b_cap' + id: 'C19' }) -const conv_sw_1__driver_ic = board.add(SOIC_8_3_9x4_9mm_P1_27mm, { +// conv.sw[1].driver.ic +const U6 = board.add(SOIC_8_3_9x4_9mm_P1_27mm, { translate: pt(0.709, 0.358), rotate: 0, - id: 'conv_sw_1__driver_ic' + id: 'U6' }) -const conv_sw_1__driver_cap_cap = board.add(C_0603_1608Metric, { +// conv.sw[1].driver.cap.cap +const C20 = board.add(C_0603_1608Metric, { translate: pt(1.150, 1.093), rotate: 0, - id: 'conv_sw_1__driver_cap_cap' + id: 'C20' }) -const conv_sw_1__driver_high_cap_cap = board.add(C_0603_1608Metric, { +// conv.sw[1].driver.high_cap.cap +const C21 = board.add(C_0603_1608Metric, { translate: pt(1.306, 1.093), rotate: 0, - id: 'conv_sw_1__driver_high_cap_cap' + id: 'C21' }) -const conv_sw_1__high_gate_res = board.add(R_0603_1608Metric, { +// conv.sw[1].high_gate_res +const R9 = board.add(R_0603_1608Metric, { translate: pt(1.461, 1.093), rotate: 0, - id: 'conv_sw_1__high_gate_res' + id: 'R9' }) -const conv_sw_1__cap_c_0_ = board.add(C_1206_3216Metric, { +// conv.sw[1].cap.c[0] +const C22 = board.add(C_1206_3216Metric, { translate: pt(1.634, 0.849), rotate: 0, - id: 'conv_sw_1__cap_c_0_' + id: 'C22' }) -const conv_sw_1__cap_c_1_ = board.add(C_1206_3216Metric, { +// conv.sw[1].cap.c[1] +const C23 = board.add(C_1206_3216Metric, { translate: pt(0.091, 0.979), rotate: 0, - id: 'conv_sw_1__cap_c_1_' + id: 'C23' }) -const conv_sw_1__low_gate_res = board.add(R_0603_1608Metric, { +// conv.sw[1].low_gate_res +const R10 = board.add(R_0603_1608Metric, { translate: pt(1.617, 1.093), rotate: 0, - id: 'conv_sw_1__low_gate_res' + id: 'R10' }) -const conv_sw_1__high_fet = board.add(SOIC_8_3_9x4_9mm_P1_27mm, { +// conv.sw[1].high_fet +const Q3 = board.add(SOIC_8_3_9x4_9mm_P1_27mm, { translate: pt(1.039, 0.358), rotate: 0, - id: 'conv_sw_1__high_fet' + id: 'Q3' }) -const conv_sw_1__low_fet = board.add(SOIC_8_3_9x4_9mm_P1_27mm, { +// conv.sw[1].low_fet +const Q4 = board.add(SOIC_8_3_9x4_9mm_P1_27mm, { translate: pt(1.370, 0.358), rotate: 0, - id: 'conv_sw_1__low_fet' + id: 'Q4' }) -const conv_sw_1__low_boot_diode_diode = board.add(D_SOD_323, { +// conv.sw[1].low_boot_diode.diode +const D4 = board.add(D_SOD_323, { translate: pt(1.111, 0.971), rotate: 0, - id: 'conv_sw_1__low_boot_diode_diode' + id: 'D4' }) -const conv_sw_1__high_boot_cap = board.add(C_0603_1608Metric, { +// conv.sw[1].high_boot_cap +const C24 = board.add(C_0603_1608Metric, { translate: pt(1.773, 1.093), rotate: 0, - id: 'conv_sw_1__high_boot_cap' + id: 'C24' }) -const conv_sw_1__low_boot_cap = board.add(C_0603_1608Metric, { +// conv.sw[1].low_boot_cap +const C25 = board.add(C_0603_1608Metric, { translate: pt(0.058, 1.189), rotate: 0, - id: 'conv_sw_1__low_boot_cap' + id: 'C25' }) -const conv_sw_1__high_boot_diode_diode = board.add(D_SOD_323, { +// conv.sw[1].high_boot_diode.diode +const D5 = board.add(D_SOD_323, { translate: pt(1.277, 0.971), rotate: 0, - id: 'conv_sw_1__high_boot_diode_diode' + id: 'D5' }) -const conv_sw_2__ldo_ic = board.add(SOT_23_5, { +// conv.sw[2].ldo.ic +const U7 = board.add(SOT_23_5, { translate: pt(1.274, 0.619), rotate: 0, - id: 'conv_sw_2__ldo_ic' + id: 'U7' }) -const conv_sw_2__ldo_in_cap_cap = board.add(C_0603_1608Metric, { +// conv.sw[2].ldo.in_cap.cap +const C26 = board.add(C_0603_1608Metric, { translate: pt(0.214, 1.189), rotate: 0, - id: 'conv_sw_2__ldo_in_cap_cap' + id: 'C26' }) -const conv_sw_2__ldo_out_cap_cap = board.add(C_1206_3216Metric, { +// conv.sw[2].ldo.out_cap.cap +const C27 = board.add(C_1206_3216Metric, { translate: pt(0.311, 0.979), rotate: 0, - id: 'conv_sw_2__ldo_out_cap_cap' + id: 'C27' }) -const conv_sw_2__iso_ic = board.add(SOIC_8_3_9x4_9mm_P1_27mm, { +// conv.sw[2].iso.ic +const U8 = board.add(SOIC_8_3_9x4_9mm_P1_27mm, { translate: pt(1.701, 0.358), rotate: 0, - id: 'conv_sw_2__iso_ic' + id: 'U8' }) -const conv_sw_2__iso_cap_a_cap = board.add(C_0603_1608Metric, { +// conv.sw[2].iso.cap_a.cap +const C28 = board.add(C_0603_1608Metric, { translate: pt(0.370, 1.189), rotate: 0, - id: 'conv_sw_2__iso_cap_a_cap' + id: 'C28' }) -const conv_sw_2__iso_cap_b_cap = board.add(C_0603_1608Metric, { +// conv.sw[2].iso.cap_b.cap +const C29 = board.add(C_0603_1608Metric, { translate: pt(0.526, 1.189), rotate: 0, - id: 'conv_sw_2__iso_cap_b_cap' + id: 'C29' }) -const conv_sw_2__driver_ic = board.add(SOIC_8_3_9x4_9mm_P1_27mm, { +// conv.sw[2].driver.ic +const U9 = board.add(SOIC_8_3_9x4_9mm_P1_27mm, { translate: pt(0.146, 0.658), rotate: 0, - id: 'conv_sw_2__driver_ic' + id: 'U9' }) -const conv_sw_2__driver_cap_cap = board.add(C_0603_1608Metric, { +// conv.sw[2].driver.cap.cap +const C30 = board.add(C_0603_1608Metric, { translate: pt(0.682, 1.189), rotate: 0, - id: 'conv_sw_2__driver_cap_cap' + id: 'C30' }) -const conv_sw_2__driver_high_cap_cap = board.add(C_0603_1608Metric, { +// conv.sw[2].driver.high_cap.cap +const C31 = board.add(C_0603_1608Metric, { translate: pt(0.838, 1.189), rotate: 0, - id: 'conv_sw_2__driver_high_cap_cap' + id: 'C31' }) -const conv_sw_2__high_gate_res = board.add(R_0603_1608Metric, { +// conv.sw[2].high_gate_res +const R11 = board.add(R_0603_1608Metric, { translate: pt(0.994, 1.189), rotate: 0, - id: 'conv_sw_2__high_gate_res' + id: 'R11' }) -const conv_sw_2__cap_c_0_ = board.add(C_1206_3216Metric, { +// conv.sw[2].cap.c[0] +const C32 = board.add(C_1206_3216Metric, { translate: pt(0.531, 0.979), rotate: 0, - id: 'conv_sw_2__cap_c_0_' + id: 'C32' }) -const conv_sw_2__cap_c_1_ = board.add(C_1206_3216Metric, { +// conv.sw[2].cap.c[1] +const C33 = board.add(C_1206_3216Metric, { translate: pt(0.752, 0.979), rotate: 0, - id: 'conv_sw_2__cap_c_1_' + id: 'C33' }) -const conv_sw_2__low_gate_res = board.add(R_0603_1608Metric, { +// conv.sw[2].low_gate_res +const R12 = board.add(R_0603_1608Metric, { translate: pt(1.150, 1.189), rotate: 0, - id: 'conv_sw_2__low_gate_res' + id: 'R12' }) -const conv_sw_2__high_fet = board.add(SOIC_8_3_9x4_9mm_P1_27mm, { +// conv.sw[2].high_fet +const Q5 = board.add(SOIC_8_3_9x4_9mm_P1_27mm, { translate: pt(0.476, 0.658), rotate: 0, - id: 'conv_sw_2__high_fet' + id: 'Q5' }) -const conv_sw_2__low_fet = board.add(SOIC_8_3_9x4_9mm_P1_27mm, { +// conv.sw[2].low_fet +const Q6 = board.add(SOIC_8_3_9x4_9mm_P1_27mm, { translate: pt(0.807, 0.658), rotate: 0, - id: 'conv_sw_2__low_fet' + id: 'Q6' }) -const conv_sw_2__low_boot_diode_diode = board.add(D_SOD_323, { +// conv.sw[2].low_boot_diode.diode +const D6 = board.add(D_SOD_323, { translate: pt(1.443, 0.971), rotate: 0, - id: 'conv_sw_2__low_boot_diode_diode' + id: 'D6' }) -const conv_sw_2__high_boot_cap = board.add(C_0603_1608Metric, { +// conv.sw[2].high_boot_cap +const C34 = board.add(C_0603_1608Metric, { translate: pt(1.306, 1.189), rotate: 0, - id: 'conv_sw_2__high_boot_cap' + id: 'C34' }) -const conv_sw_2__low_boot_cap = board.add(C_0603_1608Metric, { +// conv.sw[2].low_boot_cap +const C35 = board.add(C_0603_1608Metric, { translate: pt(1.461, 1.189), rotate: 0, - id: 'conv_sw_2__low_boot_cap' + id: 'C35' }) -const conv_sw_2__high_boot_diode_diode = board.add(D_SOD_323, { +// conv.sw[2].high_boot_diode.diode +const D7 = board.add(D_SOD_323, { translate: pt(1.608, 0.971), rotate: 0, - id: 'conv_sw_2__high_boot_diode_diode' + id: 'D7' }) -const conv_out_conn = board.add(JST_PH_B2B_PH_K_1x02_P2_00mm_Vertical, { +// conv_out.conn +const J4 = board.add(JST_PH_B2B_PH_K_1x02_P2_00mm_Vertical, { translate: pt(2.986, 2.365), rotate: 0, - id: 'conv_out_conn' + id: 'J4' }) -const tp_conv_out_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(3.033, 2.740), rotate: 0, - id: 'tp_conv_out_tp' +// tp_conv_out.tp +const TP5 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(1.781, 2.740), rotate: 0, + id: 'TP5' }) -const tp_conv_gnd_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(0.535, 2.740), rotate: 0, - id: 'tp_conv_gnd_tp' +// tp_conv_gnd.tp +const TP6 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(2.032, 2.740), rotate: 0, + id: 'TP6' }) -const fpga_ic = board.add(QFN_48_1EP_7x7mm_P0_5mm_EP5_3x5_3mm, { +// fpga.ic +const U10 = board.add(QFN_48_1EP_7x7mm_P0_5mm_EP5_3x5_3mm, { translate: pt(0.161, 1.498), rotate: 0, - id: 'fpga_ic' + id: 'U10' }) -const fpga_vcc_reg_ic = board.add(SOT_23_5, { +// fpga.vcc_reg.ic +const U11 = board.add(SOT_23_5, { translate: pt(0.486, 1.765), rotate: 0, - id: 'fpga_vcc_reg_ic' + id: 'U11' }) -const fpga_vcc_reg_in_cap_cap = board.add(C_0603_1608Metric, { +// fpga.vcc_reg.in_cap.cap +const C36 = board.add(C_0603_1608Metric, { translate: pt(0.058, 1.992), rotate: 0, - id: 'fpga_vcc_reg_in_cap_cap' + id: 'C36' }) -const fpga_vcc_reg_out_cap_cap = board.add(C_0603_1608Metric, { +// fpga.vcc_reg.out_cap.cap +const C37 = board.add(C_0603_1608Metric, { translate: pt(0.214, 1.992), rotate: 0, - id: 'fpga_vcc_reg_out_cap_cap' + id: 'C37' }) -const fpga_reset_pu_res = board.add(R_0603_1608Metric, { +// fpga.reset_pu.res +const R13 = board.add(R_0603_1608Metric, { translate: pt(0.370, 1.992), rotate: 0, - id: 'fpga_reset_pu_res' + id: 'R13' }) -const fpga_mem_ic = board.add(SOIC_8_5_23x5_23mm_P1_27mm, { +// fpga.mem.ic +const U12 = board.add(SOIC_8_5_23x5_23mm_P1_27mm, { translate: pt(0.183, 1.811), rotate: 0, - id: 'fpga_mem_ic' + id: 'U12' }) -const fpga_mem_vcc_cap_cap = board.add(C_0603_1608Metric, { +// fpga.mem.vcc_cap.cap +const C38 = board.add(C_0603_1608Metric, { translate: pt(0.526, 1.992), rotate: 0, - id: 'fpga_mem_vcc_cap_cap' + id: 'C38' }) -const fpga_prog_conn = board.add(PinHeader_2x05_P1_27mm_Vertical_SMD, { +// fpga.prog.conn +const J5 = board.add(PinHeader_2x05_P1_27mm_Vertical_SMD, { translate: pt(0.531, 1.482), rotate: 0, - id: 'fpga_prog_conn' + id: 'J5' }) -const fpga_cs_jmp_device = board.add(SolderJumper_2_P1_3mm_Open_TrianglePad1_0x1_5mm, { +// fpga.cs_jmp.device +const JP1 = board.add(SolderJumper_2_P1_3mm_Open_TrianglePad1_0x1_5mm, { translate: pt(0.671, 1.748), rotate: 0, - id: 'fpga_cs_jmp_device' + id: 'JP1' }) -const fpga_mem_pu_res = board.add(R_0603_1608Metric, { +// fpga.mem_pu.res +const R14 = board.add(R_0603_1608Metric, { translate: pt(0.682, 1.992), rotate: 0, - id: 'fpga_mem_pu_res' + id: 'R14' }) -const fpga_vio_cap0_cap = board.add(C_0603_1608Metric, { +// fpga.vio_cap0.cap +const C39 = board.add(C_0603_1608Metric, { translate: pt(0.838, 1.992), rotate: 0, - id: 'fpga_vio_cap0_cap' + id: 'C39' }) -const fpga_vio_cap1_cap = board.add(C_0603_1608Metric, { +// fpga.vio_cap1.cap +const C40 = board.add(C_0603_1608Metric, { translate: pt(0.058, 2.089), rotate: 0, - id: 'fpga_vio_cap1_cap' + id: 'C40' }) -const fpga_vio_cap2_cap = board.add(C_0603_1608Metric, { +// fpga.vio_cap2.cap +const C41 = board.add(C_0603_1608Metric, { translate: pt(0.214, 2.089), rotate: 0, - id: 'fpga_vio_cap2_cap' + id: 'C41' }) -const fpga_vpp_cap_cap = board.add(C_0603_1608Metric, { +// fpga.vpp_cap.cap +const C42 = board.add(C_0603_1608Metric, { translate: pt(0.370, 2.089), rotate: 0, - id: 'fpga_vpp_cap_cap' + id: 'C42' }) -const fpga_pll_res_res = board.add(R_0603_1608Metric, { +// fpga.pll_res.res +const R15 = board.add(R_0603_1608Metric, { translate: pt(0.526, 2.089), rotate: 0, - id: 'fpga_pll_res_res' + id: 'R15' }) -const fpga_vcc_cap_cap = board.add(C_0603_1608Metric, { +// fpga.vcc_cap.cap +const C43 = board.add(C_0603_1608Metric, { translate: pt(0.682, 2.089), rotate: 0, - id: 'fpga_vcc_cap_cap' + id: 'C43' }) -const fpga_pll_lf_cap = board.add(C_0805_2012Metric, { +// fpga.pll_lf.cap +const C44 = board.add(C_0805_2012Metric, { translate: pt(0.843, 1.737), rotate: 0, - id: 'fpga_pll_lf_cap' + id: 'C44' }) -const fpga_pll_hf_cap = board.add(C_0603_1608Metric, { +// fpga.pll_hf.cap +const C45 = board.add(C_0603_1608Metric, { translate: pt(0.838, 2.089), rotate: 0, - id: 'fpga_pll_hf_cap' + id: 'C45' }) -const cdone_package = board.add(LED_0603_1608Metric, { +// cdone.package +const D8 = board.add(LED_0603_1608Metric, { translate: pt(3.590, 2.264), rotate: 0, - id: 'cdone_package' + id: 'D8' }) -const cdone_res = board.add(R_0603_1608Metric, { +// cdone.res +const R16 = board.add(R_0603_1608Metric, { translate: pt(3.589, 2.361), rotate: 0, - id: 'cdone_res' + id: 'R16' }) -const fpga_osc_device = board.add(Crystal_SMD_2520_4Pin_2_5x2_0mm, { +// fpga_osc.device +const X1 = board.add(Crystal_SMD_2520_4Pin_2_5x2_0mm, { translate: pt(3.346, 2.294), rotate: 0, - id: 'fpga_osc_device' + id: 'X1' }) -const fpga_osc_cap_cap = board.add(C_0603_1608Metric, { +// fpga_osc.cap.cap +const C46 = board.add(C_0603_1608Metric, { translate: pt(3.337, 2.422), rotate: 0, - id: 'fpga_osc_cap_cap' + id: 'C46' }) -const fpga_sw_package = board.add(SW_SPST_SKQG_WithoutStem, { +// fpga_sw.package +const SW1 = board.add(SW_SPST_SKQG_WithoutStem, { translate: pt(1.761, 2.348), rotate: 0, - id: 'fpga_sw_package' + id: 'SW1' }) -const fpga_led_led_0__package = board.add(LED_0603_1608Metric, { +// fpga_led.led[0].package +const D9 = board.add(LED_0603_1608Metric, { translate: pt(3.216, 1.365), rotate: 0, - id: 'fpga_led_led_0__package' + id: 'D9' }) -const fpga_led_led_0__res = board.add(R_0603_1608Metric, { +// fpga_led.led[0].res +const R17 = board.add(R_0603_1608Metric, { translate: pt(3.215, 1.559), rotate: 0, - id: 'fpga_led_led_0__res' + id: 'R17' }) -const fpga_led_led_1__package = board.add(LED_0603_1608Metric, { +// fpga_led.led[1].package +const D10 = board.add(LED_0603_1608Metric, { translate: pt(3.372, 1.365), rotate: 0, - id: 'fpga_led_led_1__package' + id: 'D10' }) -const fpga_led_led_1__res = board.add(R_0603_1608Metric, { +// fpga_led.led[1].res +const R18 = board.add(R_0603_1608Metric, { translate: pt(3.371, 1.559), rotate: 0, - id: 'fpga_led_led_1__res' + id: 'R18' }) -const fpga_led_led_2__package = board.add(LED_0603_1608Metric, { +// fpga_led.led[2].package +const D11 = board.add(LED_0603_1608Metric, { translate: pt(3.216, 1.462), rotate: 0, - id: 'fpga_led_led_2__package' + id: 'D11' }) -const fpga_led_led_2__res = board.add(R_0603_1608Metric, { +// fpga_led.led[2].res +const R19 = board.add(R_0603_1608Metric, { translate: pt(3.215, 1.656), rotate: 0, - id: 'fpga_led_led_2__res' + id: 'R19' }) -const fpga_led_led_3__package = board.add(LED_0603_1608Metric, { +// fpga_led.led[3].package +const D12 = board.add(LED_0603_1608Metric, { translate: pt(3.372, 1.462), rotate: 0, - id: 'fpga_led_led_3__package' + id: 'D12' }) -const fpga_led_led_3__res = board.add(R_0603_1608Metric, { +// fpga_led.led[3].res +const R20 = board.add(R_0603_1608Metric, { translate: pt(3.371, 1.656), rotate: 0, - id: 'fpga_led_led_3__res' + id: 'R20' }) -const usb_fpga_bitbang_dp_pull_res = board.add(R_0603_1608Metric, { +// usb_fpga_bitbang.dp_pull_res +const R21 = board.add(R_0603_1608Metric, { translate: pt(1.418, 2.264), rotate: 0, - id: 'usb_fpga_bitbang_dp_pull_res' + id: 'R21' }) -const usb_fpga_bitbang_dp_res = board.add(R_0603_1608Metric, { +// usb_fpga_bitbang.dp_res +const R22 = board.add(R_0603_1608Metric, { translate: pt(1.418, 2.361), rotate: 0, - id: 'usb_fpga_bitbang_dp_res' + id: 'R22' }) -const usb_fpga_bitbang_dm_res = board.add(R_0603_1608Metric, { +// usb_fpga_bitbang.dm_res +const R23 = board.add(R_0603_1608Metric, { translate: pt(1.418, 2.458), rotate: 0, - id: 'usb_fpga_bitbang_dm_res' + id: 'R23' }) -const usb_fpga_esd = board.add(SOT_23, { +// usb_fpga_esd +const U13 = board.add(SOT_23, { translate: pt(3.293, 2.769), rotate: 0, - id: 'usb_fpga_esd' + id: 'U13' }) -const mcu_swd_conn = board.add(PinHeader_2x05_P1_27mm_Vertical_SMD, { +// mcu.swd.conn +const J6 = board.add(PinHeader_2x05_P1_27mm_Vertical_SMD, { translate: pt(2.498, 0.146), rotate: 0, - id: 'mcu_swd_conn' + id: 'J6' }) -const mcu_ic = board.add(QFN_56_1EP_7x7mm_P0_4mm_EP3_2x3_2mm, { +// mcu.ic +const U14 = board.add(QFN_56_1EP_7x7mm_P0_4mm_EP3_2x3_2mm, { translate: pt(2.127, 0.163), rotate: 0, - id: 'mcu_ic' + id: 'U14' }) -const mcu_iovdd_cap_0__cap = board.add(C_0603_1608Metric, { +// mcu.iovdd_cap[0].cap +const C47 = board.add(C_0603_1608Metric, { translate: pt(2.633, 0.393), rotate: 0, - id: 'mcu_iovdd_cap_0__cap' + id: 'C47' }) -const mcu_iovdd_cap_1__cap = board.add(C_0603_1608Metric, { +// mcu.iovdd_cap[1].cap +const C48 = board.add(C_0603_1608Metric, { translate: pt(2.789, 0.393), rotate: 0, - id: 'mcu_iovdd_cap_1__cap' + id: 'C48' }) -const mcu_iovdd_cap_2__cap = board.add(C_0603_1608Metric, { +// mcu.iovdd_cap[2].cap +const C49 = board.add(C_0603_1608Metric, { translate: pt(2.023, 0.658), rotate: 0, - id: 'mcu_iovdd_cap_2__cap' + id: 'C49' }) -const mcu_iovdd_cap_3__cap = board.add(C_0603_1608Metric, { +// mcu.iovdd_cap[3].cap +const C50 = board.add(C_0603_1608Metric, { translate: pt(2.179, 0.658), rotate: 0, - id: 'mcu_iovdd_cap_3__cap' + id: 'C50' }) -const mcu_iovdd_cap_4__cap = board.add(C_0603_1608Metric, { +// mcu.iovdd_cap[4].cap +const C51 = board.add(C_0603_1608Metric, { translate: pt(2.335, 0.658), rotate: 0, - id: 'mcu_iovdd_cap_4__cap' + id: 'C51' }) -const mcu_iovdd_cap_5__cap = board.add(C_0603_1608Metric, { +// mcu.iovdd_cap[5].cap +const C52 = board.add(C_0603_1608Metric, { translate: pt(2.491, 0.658), rotate: 0, - id: 'mcu_iovdd_cap_5__cap' + id: 'C52' }) -const mcu_avdd_cap_cap = board.add(C_0603_1608Metric, { +// mcu.avdd_cap.cap +const C53 = board.add(C_0603_1608Metric, { translate: pt(2.646, 0.658), rotate: 0, - id: 'mcu_avdd_cap_cap' + id: 'C53' }) -const mcu_vreg_in_cap_cap = board.add(C_0603_1608Metric, { +// mcu.vreg_in_cap.cap +const C54 = board.add(C_0603_1608Metric, { translate: pt(2.802, 0.658), rotate: 0, - id: 'mcu_vreg_in_cap_cap' + id: 'C54' }) -const mcu_mem_ic = board.add(SOIC_8_5_23x5_23mm_P1_27mm, { +// mcu.mem.ic +const U15 = board.add(SOIC_8_5_23x5_23mm_P1_27mm, { translate: pt(2.148, 0.477), rotate: 0, - id: 'mcu_mem_ic' + id: 'U15' }) -const mcu_mem_vcc_cap_cap = board.add(C_0603_1608Metric, { +// mcu.mem.vcc_cap.cap +const C55 = board.add(C_0603_1608Metric, { translate: pt(2.023, 0.755), rotate: 0, - id: 'mcu_mem_vcc_cap_cap' + id: 'C55' }) -const mcu_dvdd_cap_0__cap = board.add(C_0603_1608Metric, { +// mcu.dvdd_cap[0].cap +const C56 = board.add(C_0603_1608Metric, { translate: pt(2.179, 0.755), rotate: 0, - id: 'mcu_dvdd_cap_0__cap' + id: 'C56' }) -const mcu_dvdd_cap_1__cap = board.add(C_0603_1608Metric, { +// mcu.dvdd_cap[1].cap +const C57 = board.add(C_0603_1608Metric, { translate: pt(2.335, 0.755), rotate: 0, - id: 'mcu_dvdd_cap_1__cap' + id: 'C57' }) -const mcu_vreg_out_cap_cap = board.add(C_0603_1608Metric, { +// mcu.vreg_out_cap.cap +const C58 = board.add(C_0603_1608Metric, { translate: pt(2.491, 0.755), rotate: 0, - id: 'mcu_vreg_out_cap_cap' + id: 'C58' }) -const mcu_usb_res_dp_res = board.add(R_0603_1608Metric, { +// mcu.usb_res.dp_res +const R24 = board.add(R_0603_1608Metric, { translate: pt(2.646, 0.755), rotate: 0, - id: 'mcu_usb_res_dp_res' + id: 'R24' }) -const mcu_usb_res_dm_res = board.add(R_0603_1608Metric, { +// mcu.usb_res.dm_res +const R25 = board.add(R_0603_1608Metric, { translate: pt(2.802, 0.755), rotate: 0, - id: 'mcu_usb_res_dm_res' + id: 'R25' }) -const mcu_crystal_package = board.add(Crystal_SMD_3225_4Pin_3_2x2_5mm, { +// mcu.crystal.package +const X2 = board.add(Crystal_SMD_3225_4Pin_3_2x2_5mm, { translate: pt(2.453, 0.431), rotate: 0, - id: 'mcu_crystal_package' + id: 'X2' }) -const mcu_crystal_cap_a = board.add(C_0603_1608Metric, { +// mcu.crystal.cap_a +const C59 = board.add(C_0603_1608Metric, { translate: pt(2.023, 0.852), rotate: 0, - id: 'mcu_crystal_cap_a' + id: 'C59' }) -const mcu_crystal_cap_b = board.add(C_0603_1608Metric, { +// mcu.crystal.cap_b +const C60 = board.add(C_0603_1608Metric, { translate: pt(2.179, 0.852), rotate: 0, - id: 'mcu_crystal_cap_b' + id: 'C60' }) -const mcu_sw_package = board.add(SW_SPST_SKQG_WithoutStem, { +// mcu_sw.package +const SW2 = board.add(SW_SPST_SKQG_WithoutStem, { translate: pt(2.214, 2.348), rotate: 0, - id: 'mcu_sw_package' + id: 'SW2' }) -const mcu_leds_led_0__package = board.add(LED_0603_1608Metric, { +// mcu_leds.led[0].package +const D13 = board.add(LED_0603_1608Metric, { translate: pt(0.058, 2.264), rotate: 0, - id: 'mcu_leds_led_0__package' + id: 'D13' }) -const mcu_leds_led_0__res = board.add(R_0603_1608Metric, { +// mcu_leds.led[0].res +const R26 = board.add(R_0603_1608Metric, { translate: pt(0.058, 2.459), rotate: 0, - id: 'mcu_leds_led_0__res' + id: 'R26' }) -const mcu_leds_led_1__package = board.add(LED_0603_1608Metric, { +// mcu_leds.led[1].package +const D14 = board.add(LED_0603_1608Metric, { translate: pt(0.215, 2.264), rotate: 0, - id: 'mcu_leds_led_1__package' + id: 'D14' }) -const mcu_leds_led_1__res = board.add(R_0603_1608Metric, { +// mcu_leds.led[1].res +const R27 = board.add(R_0603_1608Metric, { translate: pt(0.214, 2.459), rotate: 0, - id: 'mcu_leds_led_1__res' + id: 'R27' }) -const mcu_leds_led_2__package = board.add(LED_0603_1608Metric, { +// mcu_leds.led[2].package +const D15 = board.add(LED_0603_1608Metric, { translate: pt(0.058, 2.362), rotate: 0, - id: 'mcu_leds_led_2__package' + id: 'D15' }) -const mcu_leds_led_2__res = board.add(R_0603_1608Metric, { +// mcu_leds.led[2].res +const R28 = board.add(R_0603_1608Metric, { translate: pt(0.058, 2.556), rotate: 0, - id: 'mcu_leds_led_2__res' + id: 'R28' }) -const mcu_leds_led_3__package = board.add(LED_0603_1608Metric, { +// mcu_leds.led[3].package +const D16 = board.add(LED_0603_1608Metric, { translate: pt(0.215, 2.362), rotate: 0, - id: 'mcu_leds_led_3__package' + id: 'D16' }) -const mcu_leds_led_3__res = board.add(R_0603_1608Metric, { +// mcu_leds.led[3].res +const R29 = board.add(R_0603_1608Metric, { translate: pt(0.214, 2.556), rotate: 0, - id: 'mcu_leds_led_3__res' + id: 'R29' }) -const usb_mcu_esd = board.add(SOT_23, { +// usb_mcu_esd +const U16 = board.add(SOT_23, { translate: pt(3.484, 2.769), rotate: 0, - id: 'usb_mcu_esd' + id: 'U16' }) -const tp_fpga_0__tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(2.032, 2.740), rotate: 0, - id: 'tp_fpga_0__tp' -}) -const tp_fpga_1__tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(1.781, 2.740), rotate: 0, - id: 'tp_fpga_1__tp' +// tp_fpga[0].tp +const TP7 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(2.282, 2.740), rotate: 0, + id: 'TP7' }) -const tp_fpga_2__tp = board.add(TestPoint_TE_RCT_0805, { +// tp_fpga[1].tp +const TP8 = board.add(TestPoint_TE_RCT_0805, { translate: pt(2.533, 2.740), rotate: 0, - id: 'tp_fpga_2__tp' + id: 'TP8' }) -const tp_fpga_3__tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(0.786, 2.740), rotate: 0, - id: 'tp_fpga_3__tp' +// tp_fpga[2].tp +const TP9 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(2.783, 2.740), rotate: 0, + id: 'TP9' +}) +// tp_fpga[3].tp +const TP10 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(3.033, 2.740), rotate: 0, + id: 'TP10' }) -const pwm_filter_tp_0L__tp = board.add(TestPoint_TE_RCT_0805, { +// pwm_filter.tp[0L].tp +const TP11 = board.add(TestPoint_TE_RCT_0805, { translate: pt(1.004, 2.273), rotate: 0, - id: 'pwm_filter_tp_0L__tp' + id: 'TP11' }) -const pwm_filter_tp_0H__tp = board.add(TestPoint_TE_RCT_0805, { +// pwm_filter.tp[0H].tp +const TP12 = board.add(TestPoint_TE_RCT_0805, { translate: pt(1.175, 2.273), rotate: 0, - id: 'pwm_filter_tp_0H__tp' + id: 'TP12' }) -const pwm_filter_tp_1L__tp = board.add(TestPoint_TE_RCT_0805, { +// pwm_filter.tp[1L].tp +const TP13 = board.add(TestPoint_TE_RCT_0805, { translate: pt(1.004, 2.387), rotate: 0, - id: 'pwm_filter_tp_1L__tp' + id: 'TP13' }) -const pwm_filter_tp_1H__tp = board.add(TestPoint_TE_RCT_0805, { +// pwm_filter.tp[1H].tp +const TP14 = board.add(TestPoint_TE_RCT_0805, { translate: pt(1.175, 2.387), rotate: 0, - id: 'pwm_filter_tp_1H__tp' + id: 'TP14' }) -const pwm_filter_tp_2L__tp = board.add(TestPoint_TE_RCT_0805, { +// pwm_filter.tp[2L].tp +const TP15 = board.add(TestPoint_TE_RCT_0805, { translate: pt(1.004, 2.501), rotate: 0, - id: 'pwm_filter_tp_2L__tp' + id: 'TP15' }) -const pwm_filter_tp_2H__tp = board.add(TestPoint_TE_RCT_0805, { +// pwm_filter.tp[2H].tp +const TP16 = board.add(TestPoint_TE_RCT_0805, { translate: pt(1.175, 2.501), rotate: 0, - id: 'pwm_filter_tp_2H__tp' + id: 'TP16' }) -const tp_pwm_elts_0L__rc_r = board.add(R_0603_1608Metric, { +// tp_pwm.elts[0L].rc.r +const R30 = board.add(R_0603_1608Metric, { translate: pt(0.449, 2.264), rotate: 0, - id: 'tp_pwm_elts_0L__rc_r' + id: 'R30' }) -const tp_pwm_elts_0L__rc_c = board.add(C_0603_1608Metric, { +// tp_pwm.elts[0L].rc.c +const C61 = board.add(C_0603_1608Metric, { translate: pt(0.605, 2.264), rotate: 0, - id: 'tp_pwm_elts_0L__rc_c' + id: 'C61' }) -const tp_pwm_elts_0H__rc_r = board.add(R_0603_1608Metric, { +// tp_pwm.elts[0H].rc.r +const R31 = board.add(R_0603_1608Metric, { translate: pt(0.761, 2.264), rotate: 0, - id: 'tp_pwm_elts_0H__rc_r' + id: 'R31' }) -const tp_pwm_elts_0H__rc_c = board.add(C_0603_1608Metric, { +// tp_pwm.elts[0H].rc.c +const C62 = board.add(C_0603_1608Metric, { translate: pt(0.449, 2.361), rotate: 0, - id: 'tp_pwm_elts_0H__rc_c' + id: 'C62' }) -const tp_pwm_elts_1L__rc_r = board.add(R_0603_1608Metric, { +// tp_pwm.elts[1L].rc.r +const R32 = board.add(R_0603_1608Metric, { translate: pt(0.605, 2.361), rotate: 0, - id: 'tp_pwm_elts_1L__rc_r' + id: 'R32' }) -const tp_pwm_elts_1L__rc_c = board.add(C_0603_1608Metric, { +// tp_pwm.elts[1L].rc.c +const C63 = board.add(C_0603_1608Metric, { translate: pt(0.761, 2.361), rotate: 0, - id: 'tp_pwm_elts_1L__rc_c' + id: 'C63' }) -const tp_pwm_elts_1H__rc_r = board.add(R_0603_1608Metric, { +// tp_pwm.elts[1H].rc.r +const R33 = board.add(R_0603_1608Metric, { translate: pt(0.449, 2.458), rotate: 0, - id: 'tp_pwm_elts_1H__rc_r' + id: 'R33' }) -const tp_pwm_elts_1H__rc_c = board.add(C_0603_1608Metric, { +// tp_pwm.elts[1H].rc.c +const C64 = board.add(C_0603_1608Metric, { translate: pt(0.605, 2.458), rotate: 0, - id: 'tp_pwm_elts_1H__rc_c' + id: 'C64' }) -const tp_pwm_elts_2L__rc_r = board.add(R_0603_1608Metric, { +// tp_pwm.elts[2L].rc.r +const R34 = board.add(R_0603_1608Metric, { translate: pt(0.761, 2.458), rotate: 0, - id: 'tp_pwm_elts_2L__rc_r' + id: 'R34' }) -const tp_pwm_elts_2L__rc_c = board.add(C_0603_1608Metric, { +// tp_pwm.elts[2L].rc.c +const C65 = board.add(C_0603_1608Metric, { translate: pt(0.449, 2.555), rotate: 0, - id: 'tp_pwm_elts_2L__rc_c' + id: 'C65' }) -const tp_pwm_elts_2H__rc_r = board.add(R_0603_1608Metric, { +// tp_pwm.elts[2H].rc.r +const R35 = board.add(R_0603_1608Metric, { translate: pt(0.605, 2.555), rotate: 0, - id: 'tp_pwm_elts_2H__rc_r' + id: 'R35' }) -const tp_pwm_elts_2H__rc_c = board.add(C_0603_1608Metric, { +// tp_pwm.elts[2H].rc.c +const C66 = board.add(C_0603_1608Metric, { translate: pt(0.761, 2.555), rotate: 0, - id: 'tp_pwm_elts_2H__rc_c' + id: 'C66' }) -const conv_in_sense_div_top_res = board.add(R_0603_1608Metric, { - translate: pt(0.293, 2.731), rotate: 0, - id: 'conv_in_sense_div_top_res' -}) -const conv_in_sense_div_bottom_res = board.add(R_0603_1608Metric, { - translate: pt(0.293, 2.828), rotate: 0, - id: 'conv_in_sense_div_bottom_res' -}) -const conv_out_sense_div_top_res = board.add(R_0603_1608Metric, { +// conv_in_sense.div.top_res +const R36 = board.add(R_0603_1608Metric, { translate: pt(0.058, 2.731), rotate: 0, - id: 'conv_out_sense_div_top_res' + id: 'R36' }) -const conv_out_sense_div_bottom_res = board.add(R_0603_1608Metric, { +// conv_in_sense.div.bottom_res +const R37 = board.add(R_0603_1608Metric, { translate: pt(0.058, 2.828), rotate: 0, - id: 'conv_out_sense_div_bottom_res' + id: 'R37' }) +// conv_out_sense.div.top_res +const R38 = board.add(R_0603_1608Metric, { + translate: pt(0.293, 2.731), rotate: 0, + id: 'R38' +}) +// conv_out_sense.div.bottom_res +const R39 = board.add(R_0603_1608Metric, { + translate: pt(0.293, 2.828), rotate: 0, + id: 'R39' +}) + +board.setNetlist([ + {name: "vusb", pads: [["J1", "A4"], ["J1", "B9"], ["J1", "B4"], ["J1", "A9"], ["J2", "A4"], ["J2", "B9"], ["J2", "B4"], ["J2", "A9"], ["TP1", "1"], ["U1", "3"], ["U2", "5"], ["U2", "4"], ["C1", "1"], ["L1", "1"], ["C3", "1"]]}, + {name: "gnd", pads: [["U13", "3"], ["U16", "3"], ["J1", "A1"], ["J1", "B12"], ["J1", "B1"], ["J1", "A12"], ["J2", "A1"], ["J2", "B12"], ["J2", "B1"], ["J2", "A12"], ["J3", "1"], ["TP2", "1"], ["U1", "1"], ["D1", "2"], ["U2", "2"], ["J4", "1"], ["TP6", "1"], ["U10", "49"], ["R16", "2"], ["X1", "2"], ["SW1", "2"], ["U14", "19"], ["U14", "57"], ["SW2", "2"], ["R37", "2"], ["R39", "2"], ["J1", "S1"], ["J2", "S1"], ["C1", "2"], ["C2", "2"], ["U11", "2"], ["U12", "4"], ["C39", "2"], ["C40", "2"], ["C41", "2"], ["C42", "2"], ["C43", "2"], ["C44", "2"], ["C45", "2"], ["C46", "2"], ["R17", "2"], ["R18", "2"], ["R19", "2"], ["R20", "2"], ["C47", "2"], ["C48", "2"], ["C49", "2"], ["C50", "2"], ["C51", "2"], ["C52", "2"], ["C53", "2"], ["C54", "2"], ["U15", "4"], ["C56", "2"], ["C57", "2"], ["C58", "2"], ["X2", "2"], ["X2", "4"], ["R26", "2"], ["R27", "2"], ["R28", "2"], ["R29", "2"], ["R6", "2"], ["U5", "4"], ["U8", "4"], ["C61", "2"], ["C62", "2"], ["C63", "2"], ["C64", "2"], ["C65", "2"], ["C66", "2"], ["R1", "1"], ["R2", "1"], ["Q2", "1"], ["Q2", "2"], ["Q2", "3"], ["J5", "3"], ["J5", "5"], ["J5", "9"], ["J6", "3"], ["J6", "5"], ["J6", "9"], ["C59", "2"], ["C60", "2"], ["R3", "1"], ["R4", "1"], ["C3", "2"], ["C4", "2"], ["U3", "4"], ["C36", "2"], ["C37", "2"], ["C38", "2"], ["C55", "2"], ["C18", "2"], ["C28", "2"], ["C5", "2"], ["C6", "2"], ["C7", "2"], ["C8", "2"], ["C9", "2"], ["C10", "2"], ["C11", "2"], ["C12", "2"], ["C13", "2"]]}, + {name: "v3v3", pads: [["U1", "2"], ["TP3", "1"], ["D1", "1"], ["U10", "22"], ["U10", "33"], ["U10", "1"], ["U10", "24"], ["X1", "1"], ["X1", "4"], ["U14", "1"], ["U14", "10"], ["U14", "22"], ["U14", "33"], ["U14", "42"], ["U14", "49"], ["U14", "44"], ["U14", "43"], ["U14", "48"], ["C2", "1"], ["U11", "1"], ["R13", "1"], ["U12", "8"], ["J5", "1"], ["R14", "1"], ["C39", "1"], ["C40", "1"], ["C41", "1"], ["C42", "1"], ["C46", "1"], ["J6", "1"], ["C47", "1"], ["C48", "1"], ["C49", "1"], ["C50", "1"], ["C51", "1"], ["C52", "1"], ["C53", "1"], ["C54", "1"], ["U15", "8"], ["U5", "1"], ["U8", "1"], ["U11", "3"], ["U12", "3"], ["U12", "7"], ["C36", "1"], ["C38", "1"], ["C55", "1"], ["C18", "1"], ["C28", "1"]]}, + {name: "vgate", pads: [["TP4", "1"], ["D2", "1"], ["R5", "1"], ["C4", "1"], ["U3", "1"], ["C13", "1"], ["D4", "2"]]}, + {name: "conv.pwr_in", pads: [["J3", "2"], ["R36", "1"], ["Q1", "5"], ["Q1", "6"], ["Q1", "7"], ["Q1", "8"], ["C5", "1"], ["C6", "1"], ["C7", "1"], ["C8", "1"], ["C9", "1"]]}, + {name: "conv.pwr_out", pads: [["J4", "2"], ["TP5", "1"], ["R38", "1"], ["L2", "2"], ["C10", "1"], ["C11", "1"], ["C12", "1"]]}, + {name: "fpga.cdone", pads: [["U10", "7"], ["D8", "2"]]}, + {name: "fpga_osc.out", pads: [["X1", "3"], ["U10", "37"]]}, + {name: "fpga_sw.out", pads: [["U10", "32"], ["SW1", "1"]]}, + {name: "fpga.gpio.led_0", pads: [["U10", "21"], ["D9", "2"]]}, + {name: "fpga.gpio.led_1", pads: [["U10", "20"], ["D10", "2"]]}, + {name: "fpga.gpio.led_2", pads: [["U10", "19"], ["D11", "2"]]}, + {name: "fpga.gpio.led_3", pads: [["U10", "18"], ["D12", "2"]]}, + {name: "usb_fpga_bitbang.dp_pull", pads: [["U10", "27"], ["R21", "1"]]}, + {name: "usb_fpga_bitbang.dp", pads: [["U10", "26"], ["R22", "1"]]}, + {name: "usb_fpga_bitbang.dm", pads: [["U10", "25"], ["R23", "1"]]}, + {name: "usb_fpga_chain_0.d_P", pads: [["U13", "2"], ["J2", "A6"], ["J2", "B6"], ["R22", "2"], ["R21", "2"]]}, + {name: "usb_fpga_chain_0.d_N", pads: [["U13", "1"], ["J2", "A7"], ["J2", "B7"], ["R23", "2"]]}, + {name: "mcu_sw.out", pads: [["U14", "29"], ["SW2", "1"]]}, + {name: "mcu.gpio.led_0", pads: [["U14", "34"], ["D13", "2"]]}, + {name: "mcu.gpio.led_1", pads: [["U14", "35"], ["D14", "2"]]}, + {name: "mcu.gpio.led_2", pads: [["U14", "36"], ["D15", "2"]]}, + {name: "mcu.gpio.led_3", pads: [["U14", "37"], ["D16", "2"]]}, + {name: "usb_mcu_chain_0.d_P", pads: [["U16", "2"], ["J1", "A6"], ["J1", "B6"], ["R24", "2"]]}, + {name: "usb_mcu_chain_0.d_N", pads: [["U16", "1"], ["J1", "A7"], ["J1", "B7"], ["R25", "2"]]}, + {name: "tp_fpga[0].io", pads: [["U14", "14"], ["U10", "2"], ["TP7", "1"]]}, + {name: "tp_fpga[1].io", pads: [["U14", "13"], ["U10", "3"], ["TP8", "1"]]}, + {name: "tp_fpga[2].io", pads: [["U14", "12"], ["U10", "4"], ["TP9", "1"]]}, + {name: "tp_fpga[3].io", pads: [["U14", "11"], ["U10", "6"], ["TP10", "1"]]}, + {name: "fpga.gpio.pwm_0L", pads: [["U10", "47"], ["TP11", "1"], ["R30", "1"]]}, + {name: "fpga.gpio.pwm_0H", pads: [["U10", "48"], ["TP12", "1"], ["R31", "1"]]}, + {name: "fpga.gpio.pwm_1L", pads: [["U10", "45"], ["TP13", "1"], ["R32", "1"]]}, + {name: "fpga.gpio.pwm_1H", pads: [["U10", "46"], ["TP14", "1"], ["R33", "1"]]}, + {name: "fpga.gpio.pwm_2L", pads: [["U10", "43"], ["TP15", "1"], ["R34", "1"]]}, + {name: "fpga.gpio.pwm_2H", pads: [["U10", "44"], ["TP16", "1"], ["R35", "1"]]}, + {name: "tp_pwm.output.0L", pads: [["U3", "3"], ["R30", "2"], ["C61", "1"]]}, + {name: "tp_pwm.output.0H", pads: [["U3", "2"], ["R31", "2"], ["C62", "1"]]}, + {name: "tp_pwm.output.1L", pads: [["U5", "3"], ["R32", "2"], ["C63", "1"]]}, + {name: "tp_pwm.output.1H", pads: [["U5", "2"], ["R33", "2"], ["C64", "1"]]}, + {name: "tp_pwm.output.2L", pads: [["U8", "3"], ["R34", "2"], ["C65", "1"]]}, + {name: "tp_pwm.output.2H", pads: [["U8", "2"], ["R35", "2"], ["C66", "1"]]}, + {name: "conv_in_sense.output", pads: [["U14", "38"], ["R36", "2"], ["R37", "1"]]}, + {name: "conv_out_sense.output", pads: [["U14", "39"], ["R38", "2"], ["R39", "1"]]}, + {name: "usb_mcu.conn.cc.cc1", pads: [["J1", "A5"], ["R1", "2"]]}, + {name: "usb_mcu.conn.cc.cc2", pads: [["J1", "B5"], ["R2", "2"]]}, + {name: "usb_fpga.conn.cc.cc1", pads: [["J2", "A5"], ["R3", "2"]]}, + {name: "usb_fpga.conn.cc.cc2", pads: [["J2", "B5"], ["R4", "2"]]}, + {name: "reg_vgate.fb.output", pads: [["U2", "3"], ["R5", "2"], ["R6", "1"]]}, + {name: "reg_vgate.power_path.switch", pads: [["U2", "1"], ["L1", "2"], ["D2", "2"]]}, + {name: "conv.sw[0].low_out", pads: [["Q2", "5"], ["Q2", "6"], ["Q2", "7"], ["Q2", "8"], ["Q4", "1"], ["Q4", "2"], ["Q4", "3"], ["C25", "2"], ["U4", "2"], ["U5", "5"], ["U6", "4"], ["C22", "2"], ["C23", "2"], ["C16", "2"], ["C17", "2"], ["C19", "2"], ["C20", "2"]]}, + {name: "conv.sw[1].high_in", pads: [["Q3", "5"], ["Q3", "6"], ["Q3", "7"], ["Q3", "8"], ["C22", "1"], ["C23", "1"], ["Q1", "1"], ["Q1", "2"], ["Q1", "3"], ["C15", "2"], ["U3", "6"], ["C14", "2"]]}, + {name: "conv.sw[1].high_boot_out", pads: [["D3", "2"], ["C24", "1"], ["D5", "1"], ["U6", "8"], ["C21", "1"]]}, + {name: "conv.sw[1].low_out", pads: [["Q4", "5"], ["Q4", "6"], ["Q4", "7"], ["Q4", "8"], ["Q6", "1"], ["Q6", "2"], ["Q6", "3"], ["C35", "2"], ["U7", "2"], ["U8", "5"], ["U9", "4"], ["C32", "2"], ["C33", "2"], ["C26", "2"], ["C27", "2"], ["C29", "2"], ["C30", "2"]]}, + {name: "conv.sw[2].high_in", pads: [["Q5", "5"], ["Q5", "6"], ["Q5", "7"], ["Q5", "8"], ["C32", "1"], ["C33", "1"], ["Q3", "1"], ["Q3", "2"], ["Q3", "3"], ["C24", "2"], ["U6", "6"], ["C21", "2"]]}, + {name: "conv.sw[2].low_boot_in", pads: [["D6", "2"], ["C25", "1"], ["D4", "1"], ["U4", "1"], ["U6", "1"], ["U4", "3"], ["C16", "1"], ["C20", "1"]]}, + {name: "conv.sw[2].high_boot_out", pads: [["D5", "2"], ["C34", "1"], ["D7", "1"], ["U9", "8"], ["C31", "1"]]}, + {name: "conv.sw[2].low_boot_out", pads: [["D7", "2"], ["C35", "1"], ["D6", "1"], ["U7", "1"], ["U9", "1"], ["U7", "3"], ["C26", "1"], ["C30", "1"]]}, + {name: "conv.sw_merge", pads: [["Q6", "5"], ["Q6", "6"], ["Q6", "7"], ["Q6", "8"], ["L2", "1"], ["Q5", "1"], ["Q5", "2"], ["Q5", "3"], ["C34", "2"], ["U9", "6"], ["C31", "2"]]}, + {name: "conv.sw[0].high_gate_res.a", pads: [["R7", "1"], ["U3", "7"]]}, + {name: "conv.sw[0].high_gate_res.b", pads: [["R7", "2"], ["Q1", "4"]]}, + {name: "conv.sw[0].low_gate_res.a", pads: [["R8", "1"], ["U3", "5"]]}, + {name: "conv.sw[0].low_gate_res.b", pads: [["R8", "2"], ["Q2", "4"]]}, + {name: "conv.sw[0].high_boot_cap.pos", pads: [["C15", "1"], ["D3", "1"], ["U3", "8"], ["C14", "1"]]}, + {name: "conv.sw[1].iso.pwr_b", pads: [["U5", "8"], ["U4", "5"], ["C19", "1"], ["C17", "1"]]}, + {name: "conv.sw[1].driver.high_in", pads: [["U6", "2"], ["U5", "7"]]}, + {name: "conv.sw[1].driver.low_in", pads: [["U6", "3"], ["U5", "6"]]}, + {name: "conv.sw[1].high_gate_res.a", pads: [["R9", "1"], ["U6", "7"]]}, + {name: "conv.sw[1].high_gate_res.b", pads: [["R9", "2"], ["Q3", "4"]]}, + {name: "conv.sw[1].low_gate_res.a", pads: [["R10", "1"], ["U6", "5"]]}, + {name: "conv.sw[1].low_gate_res.b", pads: [["R10", "2"], ["Q4", "4"]]}, + {name: "conv.sw[2].iso.pwr_b", pads: [["U8", "8"], ["U7", "5"], ["C29", "1"], ["C27", "1"]]}, + {name: "conv.sw[2].driver.high_in", pads: [["U9", "2"], ["U8", "7"]]}, + {name: "conv.sw[2].driver.low_in", pads: [["U9", "3"], ["U8", "6"]]}, + {name: "conv.sw[2].high_gate_res.a", pads: [["R11", "1"], ["U9", "7"]]}, + {name: "conv.sw[2].high_gate_res.b", pads: [["R11", "2"], ["Q5", "4"]]}, + {name: "conv.sw[2].low_gate_res.a", pads: [["R12", "1"], ["U9", "5"]]}, + {name: "conv.sw[2].low_gate_res.b", pads: [["R12", "2"], ["Q6", "4"]]}, + {name: "fpga.ic.creset_b", pads: [["U10", "8"], ["R13", "2"], ["J5", "10"]]}, + {name: "fpga.ic.spi_config.sck", pads: [["U10", "15"], ["U12", "6"], ["J5", "4"]]}, + {name: "fpga.ic.spi_config.mosi", pads: [["U10", "14"], ["U12", "5"], ["J5", "6"]]}, + {name: "fpga.ic.spi_config.miso", pads: [["U10", "17"], ["U12", "2"], ["J5", "8"]]}, + {name: "fpga.ic.spi_config_cs", pads: [["U10", "16"], ["J5", "2"], ["JP1", "1"]]}, + {name: "fpga.cs_jmp.output", pads: [["JP1", "2"], ["R14", "2"], ["U12", "1"]]}, + {name: "fpga.vcc_reg.pwr_out", pads: [["U10", "5"], ["U10", "30"], ["U11", "5"], ["R15", "1"], ["C43", "1"], ["C37", "1"]]}, + {name: "fpga.pll_res.pwr_out", pads: [["U10", "29"], ["R15", "2"], ["C44", "1"], ["C45", "1"]]}, + {name: "cdone.res.a", pads: [["R16", "1"], ["D8", "1"]]}, + {name: "fpga_led.led[0].res.a", pads: [["R17", "1"], ["D9", "1"]]}, + {name: "fpga_led.led[1].res.a", pads: [["R18", "1"], ["D10", "1"]]}, + {name: "fpga_led.led[2].res.a", pads: [["R19", "1"], ["D11", "1"]]}, + {name: "fpga_led.led[3].res.a", pads: [["R20", "1"], ["D12", "1"]]}, + {name: "mcu.xtal_node.xi", pads: [["U14", "20"], ["X2", "1"], ["C59", "1"]]}, + {name: "mcu.xtal_node.xo", pads: [["U14", "21"], ["X2", "3"], ["C60", "1"]]}, + {name: "mcu.swd_node.swdio", pads: [["U14", "25"], ["J6", "2"]]}, + {name: "mcu.swd_node.swclk", pads: [["U14", "24"], ["J6", "4"]]}, + {name: "mcu.reset_node", pads: [["U14", "26"], ["J6", "10"]]}, + {name: "mcu.ic.qspi.sck", pads: [["U14", "52"], ["U15", "6"]]}, + {name: "mcu.ic.qspi.mosi", pads: [["U14", "53"], ["U15", "5"]]}, + {name: "mcu.ic.qspi.miso", pads: [["U14", "55"], ["U15", "2"]]}, + {name: "mcu.ic.qspi_cs", pads: [["U14", "56"], ["U15", "1"]]}, + {name: "mcu.ic.qspi_sd2", pads: [["U14", "54"], ["U15", "3"]]}, + {name: "mcu.ic.qspi_sd3", pads: [["U14", "51"], ["U15", "7"]]}, + {name: "mcu.ic.vreg_vout", pads: [["U14", "45"], ["U14", "23"], ["U14", "50"], ["C56", "1"], ["C57", "1"], ["C58", "1"]]}, + {name: "mcu.usb_chain_0.d_P", pads: [["U14", "47"], ["R24", "1"]]}, + {name: "mcu.usb_chain_0.d_N", pads: [["U14", "46"], ["R25", "1"]]}, + {name: "mcu.swd.swo", pads: [["U14", "2"], ["J6", "6"]]}, + {name: "mcu.swd.tdi", pads: [["U14", "3"], ["J6", "8"]]}, + {name: "mcu_leds.led[0].res.a", pads: [["R26", "1"], ["D13", "1"]]}, + {name: "mcu_leds.led[1].res.a", pads: [["R27", "1"], ["D14", "1"]]}, + {name: "mcu_leds.led[2].res.a", pads: [["R28", "1"], ["D15", "1"]]}, + {name: "mcu_leds.led[3].res.a", pads: [["R29", "1"], ["D16", "1"]]} +]) const limit0 = pt(-0.07874015748031496, -0.07874015748031496); const limit1 = pt(3.7659448818897645, 2.9748031496062994); diff --git a/examples/HighSwitch/HighSwitch.svgpcb.js b/examples/HighSwitch/HighSwitch.svgpcb.js index 2b3a71046..007e15310 100644 --- a/examples/HighSwitch/HighSwitch.svgpcb.js +++ b/examples/HighSwitch/HighSwitch.svgpcb.js @@ -1,361 +1,525 @@ const board = new PCB(); -const pwr_conn = board.add(Molex_DuraClik_vert_3pin, { +// pwr_conn +const J1 = board.add(Molex_DuraClik_vert_3pin, { translate: pt(2.459, 1.764), rotate: 0, - id: 'pwr_conn' + id: 'J1' }) -const pwr_ic = board.add(SOT_23_6, { +// pwr.ic +const U1 = board.add(SOT_23_6, { translate: pt(0.956, 1.831), rotate: 0, - id: 'pwr_ic' + id: 'U1' }) -const pwr_fb_div_top_res = board.add(R_0603_1608Metric, { +// pwr.fb.div.top_res +const R1 = board.add(R_0603_1608Metric, { translate: pt(1.111, 1.966), rotate: 0, - id: 'pwr_fb_div_top_res' + id: 'R1' }) -const pwr_fb_div_bottom_res = board.add(R_0603_1608Metric, { +// pwr.fb.div.bottom_res +const R2 = board.add(R_0603_1608Metric, { translate: pt(1.267, 1.966), rotate: 0, - id: 'pwr_fb_div_bottom_res' + id: 'R2' }) -const pwr_hf_in_cap_cap = board.add(C_0603_1608Metric, { +// pwr.hf_in_cap.cap +const C1 = board.add(C_0603_1608Metric, { translate: pt(0.934, 2.072), rotate: 0, - id: 'pwr_hf_in_cap_cap' + id: 'C1' }) -const pwr_vbst_cap = board.add(C_0603_1608Metric, { +// pwr.vbst_cap +const C2 = board.add(C_0603_1608Metric, { translate: pt(1.090, 2.072), rotate: 0, - id: 'pwr_vbst_cap' + id: 'C2' }) -const pwr_power_path_inductor = board.add(L_0805_2012Metric, { +// pwr.power_path.inductor +const L1 = board.add(L_0805_2012Metric, { translate: pt(0.944, 1.970), rotate: 0, - id: 'pwr_power_path_inductor' + id: 'L1' }) -const pwr_power_path_in_cap_cap = board.add(C_0603_1608Metric, { +// pwr.power_path.in_cap.cap +const C3 = board.add(C_0603_1608Metric, { translate: pt(1.246, 2.072), rotate: 0, - id: 'pwr_power_path_in_cap_cap' + id: 'C3' }) -const pwr_power_path_out_cap_cap = board.add(C_0805_2012Metric, { +// pwr.power_path.out_cap.cap +const C4 = board.add(C_0805_2012Metric, { translate: pt(1.143, 1.802), rotate: 0, - id: 'pwr_power_path_out_cap_cap' + id: 'C4' }) -const mcu_swd_conn = board.add(PinHeader_2x05_P1_27mm_Vertical_SMD, { +// mcu.swd.conn +const J2 = board.add(PinHeader_2x05_P1_27mm_Vertical_SMD, { translate: pt(2.106, 1.028), rotate: 0, - id: 'mcu_swd_conn' + id: 'J2' }) -const mcu_ic = board.add(LQFP_48_7x7mm_P0_5mm, { +// mcu.ic +const U2 = board.add(LQFP_48_7x7mm_P0_5mm, { translate: pt(1.694, 1.085), rotate: 0, - id: 'mcu_ic' + id: 'U2' }) -const mcu_swd_pull_swdio_res = board.add(R_0603_1608Metric, { +// mcu.swd_pull.swdio.res +const R3 = board.add(R_0603_1608Metric, { translate: pt(1.723, 1.356), rotate: 0, - id: 'mcu_swd_pull_swdio_res' + id: 'R3' }) -const mcu_swd_pull_swclk_res = board.add(R_0603_1608Metric, { +// mcu.swd_pull.swclk.res +const R4 = board.add(R_0603_1608Metric, { translate: pt(1.879, 1.356), rotate: 0, - id: 'mcu_swd_pull_swclk_res' + id: 'R4' }) -const mcu_pwr_cap_0__cap = board.add(C_0603_1608Metric, { +// mcu.pwr_cap[0].cap +const C5 = board.add(C_0603_1608Metric, { translate: pt(2.035, 1.356), rotate: 0, - id: 'mcu_pwr_cap_0__cap' + id: 'C5' }) -const mcu_pwr_cap_1__cap = board.add(C_0603_1608Metric, { +// mcu.pwr_cap[1].cap +const C6 = board.add(C_0603_1608Metric, { translate: pt(2.191, 1.356), rotate: 0, - id: 'mcu_pwr_cap_1__cap' + id: 'C6' }) -const mcu_pwr_cap_2__cap = board.add(C_0603_1608Metric, { +// mcu.pwr_cap[2].cap +const C7 = board.add(C_0603_1608Metric, { translate: pt(2.346, 1.356), rotate: 0, - id: 'mcu_pwr_cap_2__cap' + id: 'C7' }) -const mcu_pwr_cap_3__cap = board.add(C_0603_1608Metric, { +// mcu.pwr_cap[3].cap +const C8 = board.add(C_0603_1608Metric, { translate: pt(1.550, 1.472), rotate: 0, - id: 'mcu_pwr_cap_3__cap' + id: 'C8' }) -const mcu_pwr_cap_4__cap = board.add(C_0603_1608Metric, { +// mcu.pwr_cap[4].cap +const C9 = board.add(C_0603_1608Metric, { translate: pt(1.706, 1.472), rotate: 0, - id: 'mcu_pwr_cap_4__cap' + id: 'C9' }) -const mcu_pwr_cap_5__cap = board.add(C_0603_1608Metric, { +// mcu.pwr_cap[5].cap +const C10 = board.add(C_0603_1608Metric, { translate: pt(1.861, 1.472), rotate: 0, - id: 'mcu_pwr_cap_5__cap' + id: 'C10' }) -const mcu_vbat_cap_cap = board.add(C_0603_1608Metric, { +// mcu.vbat_cap.cap +const C11 = board.add(C_0603_1608Metric, { translate: pt(2.017, 1.472), rotate: 0, - id: 'mcu_vbat_cap_cap' + id: 'C11' }) -const mcu_pwra_cap_0__cap = board.add(C_0603_1608Metric, { +// mcu.pwra_cap[0].cap +const C12 = board.add(C_0603_1608Metric, { translate: pt(2.173, 1.472), rotate: 0, - id: 'mcu_pwra_cap_0__cap' + id: 'C12' }) -const mcu_pwra_cap_1__cap = board.add(C_0805_2012Metric, { +// mcu.pwra_cap[1].cap +const C13 = board.add(C_0805_2012Metric, { translate: pt(2.381, 1.094), rotate: 0, - id: 'mcu_pwra_cap_1__cap' + id: 'C13' }) -const mcu_vref_cap_0__cap = board.add(C_0603_1608Metric, { +// mcu.vref_cap[0].cap +const C14 = board.add(C_0603_1608Metric, { translate: pt(2.329, 1.472), rotate: 0, - id: 'mcu_vref_cap_0__cap' + id: 'C14' }) -const mcu_vref_cap_1__cap = board.add(C_0603_1608Metric, { +// mcu.vref_cap[1].cap +const C15 = board.add(C_0603_1608Metric, { translate: pt(1.550, 1.569), rotate: 0, - id: 'mcu_vref_cap_1__cap' + id: 'C15' }) -const mcu_vref_cap_2__cap = board.add(C_0805_2012Metric, { +// mcu.vref_cap[2].cap +const C16 = board.add(C_0805_2012Metric, { translate: pt(1.558, 1.365), rotate: 0, - id: 'mcu_vref_cap_2__cap' + id: 'C16' }) -const mcu_crystal_package = board.add(Crystal_SMD_3225_4Pin_3_2x2_5mm, { +// mcu.crystal.package +const X1 = board.add(Crystal_SMD_3225_4Pin_3_2x2_5mm, { translate: pt(2.397, 0.949), rotate: 0, - id: 'mcu_crystal_package' + id: 'X1' }) -const mcu_crystal_cap_a = board.add(C_0603_1608Metric, { +// mcu.crystal.cap_a +const C17 = board.add(C_0603_1608Metric, { translate: pt(1.706, 1.569), rotate: 0, - id: 'mcu_crystal_cap_a' + id: 'C17' }) -const mcu_crystal_cap_b = board.add(C_0603_1608Metric, { +// mcu.crystal.cap_b +const C18 = board.add(C_0603_1608Metric, { translate: pt(1.861, 1.569), rotate: 0, - id: 'mcu_crystal_cap_b' + id: 'C18' }) -const can_conn = board.add(Molex_DuraClik_vert_5pin, { +// can.conn +const J3 = board.add(Molex_DuraClik_vert_5pin, { translate: pt(0.000, 2.299), rotate: 0, - id: 'can_conn' + id: 'J3' }) -const can_can_fuse_fuse = board.add(R_0603_1608Metric, { +// can.can_fuse.fuse +const F1 = board.add(R_0603_1608Metric, { translate: pt(0.231, 2.211), rotate: 0, - id: 'can_can_fuse_fuse' + id: 'F1' }) -const can_reg_ic = board.add(SOT_23_5, { +// can.reg.ic +const U3 = board.add(SOT_23_5, { translate: pt(0.589, 1.831), rotate: 0, - id: 'can_reg_ic' + id: 'U3' }) -const can_reg_in_cap_cap = board.add(C_0603_1608Metric, { +// can.reg.in_cap.cap +const C19 = board.add(C_0603_1608Metric, { translate: pt(0.387, 2.211), rotate: 0, - id: 'can_reg_in_cap_cap' + id: 'C19' }) -const can_reg_out_cap_cap = board.add(C_0805_2012Metric, { +// can.reg.out_cap.cap +const C20 = board.add(C_0805_2012Metric, { translate: pt(0.067, 2.221), rotate: 0, - id: 'can_reg_out_cap_cap' + id: 'C20' }) -const can_esd = board.add(SOT_23, { +// can.esd +const U4 = board.add(SOT_23, { translate: pt(0.583, 2.004), rotate: 0, - id: 'can_esd' + id: 'U4' }) -const can_transceiver_ic = board.add(SOP_8_6_62x9_15mm_P2_54mm, { +// can.transceiver.ic +const U5 = board.add(SOP_8_6_62x9_15mm_P2_54mm, { translate: pt(0.234, 1.954), rotate: 0, - id: 'can_transceiver_ic' + id: 'U5' }) -const can_transceiver_logic_cap_cap = board.add(C_0603_1608Metric, { +// can.transceiver.logic_cap.cap +const C21 = board.add(C_0603_1608Metric, { translate: pt(0.543, 2.211), rotate: 0, - id: 'can_transceiver_logic_cap_cap' + id: 'C21' }) -const can_transceiver_can_cap_cap = board.add(C_0603_1608Metric, { +// can.transceiver.can_cap.cap +const C22 = board.add(C_0603_1608Metric, { translate: pt(0.699, 2.211), rotate: 0, - id: 'can_transceiver_can_cap_cap' + id: 'C22' }) -const vsense_div_top_res = board.add(R_0603_1608Metric, { +// vsense.div.top_res +const R5 = board.add(R_0603_1608Metric, { translate: pt(2.283, 1.793), rotate: 0, - id: 'vsense_div_top_res' + id: 'R5' }) -const vsense_div_bottom_res = board.add(R_0603_1608Metric, { +// vsense.div.bottom_res +const R6 = board.add(R_0603_1608Metric, { translate: pt(2.283, 1.889), rotate: 0, - id: 'vsense_div_bottom_res' + id: 'R6' }) -const rgb1_package = board.add(LED_LiteOn_LTST_C19HE1WT, { +// rgb1.package +const D1 = board.add(LED_LiteOn_LTST_C19HE1WT, { translate: pt(1.485, 1.819), rotate: 0, - id: 'rgb1_package' + id: 'D1' }) -const rgb1_red_res = board.add(R_0603_1608Metric, { +// rgb1.red_res +const R7 = board.add(R_0603_1608Metric, { translate: pt(1.624, 1.793), rotate: 0, - id: 'rgb1_red_res' + id: 'R7' }) -const rgb1_green_res = board.add(R_0603_1608Metric, { +// rgb1.green_res +const R8 = board.add(R_0603_1608Metric, { translate: pt(1.502, 1.942), rotate: 0, - id: 'rgb1_green_res' + id: 'R8' }) -const rgb1_blue_res = board.add(R_0603_1608Metric, { +// rgb1.blue_res +const R9 = board.add(R_0603_1608Metric, { translate: pt(1.657, 1.942), rotate: 0, - id: 'rgb1_blue_res' + id: 'R9' }) -const rgb2_package = board.add(LED_LiteOn_LTST_C19HE1WT, { +// rgb2.package +const D2 = board.add(LED_LiteOn_LTST_C19HE1WT, { translate: pt(1.875, 1.819), rotate: 0, - id: 'rgb2_package' + id: 'D2' }) -const rgb2_red_res = board.add(R_0603_1608Metric, { +// rgb2.red_res +const R10 = board.add(R_0603_1608Metric, { translate: pt(2.014, 1.793), rotate: 0, - id: 'rgb2_red_res' + id: 'R10' }) -const rgb2_green_res = board.add(R_0603_1608Metric, { +// rgb2.green_res +const R11 = board.add(R_0603_1608Metric, { translate: pt(1.892, 1.942), rotate: 0, - id: 'rgb2_green_res' + id: 'R11' }) -const rgb2_blue_res = board.add(R_0603_1608Metric, { +// rgb2.blue_res +const R12 = board.add(R_0603_1608Metric, { translate: pt(2.048, 1.942), rotate: 0, - id: 'rgb2_blue_res' + id: 'R12' }) -const light_0__conn = board.add(Molex_DuraClik_vert_4pin, { - translate: pt(0.502, 1.512), rotate: 0, - id: 'light_0__conn' -}) -const light_0__drv_0__pre = board.add(SOT_23, { - translate: pt(0.552, 1.264), rotate: 0, - id: 'light_0__drv_0__pre' -}) -const light_0__drv_0__pull = board.add(R_0603_1608Metric, { - translate: pt(0.249, 1.541), rotate: 0, - id: 'light_0__drv_0__pull' -}) -const light_0__drv_0__drv = board.add(TO_252_2, { - translate: pt(0.252, 1.020), rotate: 0, - id: 'light_0__drv_0__drv' -}) -const light_0__drv_1__pre = board.add(SOT_23, { - translate: pt(0.076, 1.579), rotate: 0, - id: 'light_0__drv_1__pre' -}) -const light_0__drv_1__pull = board.add(R_0603_1608Metric, { - translate: pt(0.405, 1.541), rotate: 0, - id: 'light_0__drv_1__pull' -}) -const light_0__drv_1__drv = board.add(TO_252_2, { - translate: pt(0.252, 1.335), rotate: 0, - id: 'light_0__drv_1__drv' -}) -const light_1__conn = board.add(Molex_DuraClik_vert_4pin, { - translate: pt(1.248, 1.512), rotate: 0, - id: 'light_1__conn' +// light[0].conn +const J4 = board.add(Molex_DuraClik_vert_4pin, { + translate: pt(0.502, 0.630), rotate: 0, + id: 'J4' }) -const light_1__drv_0__pre = board.add(SOT_23, { - translate: pt(1.298, 1.264), rotate: 0, - id: 'light_1__drv_0__pre' +// light[0].drv[0].pre +const Q1 = board.add(SOT_23, { + translate: pt(0.552, 0.382), rotate: 0, + id: 'Q1' }) -const light_1__drv_0__pull = board.add(R_0603_1608Metric, { - translate: pt(0.994, 1.541), rotate: 0, - id: 'light_1__drv_0__pull' +// light[0].drv[0].pull +const R13 = board.add(R_0603_1608Metric, { + translate: pt(0.249, 0.659), rotate: 0, + id: 'R13' }) -const light_1__drv_0__drv = board.add(TO_252_2, { - translate: pt(0.997, 1.020), rotate: 0, - id: 'light_1__drv_0__drv' +// light[0].drv[0].drv +const Q2 = board.add(TO_252_2, { + translate: pt(0.252, 0.138), rotate: 0, + id: 'Q2' }) -const light_1__drv_1__pre = board.add(SOT_23, { - translate: pt(0.821, 1.579), rotate: 0, - id: 'light_1__drv_1__pre' +// light[0].drv[1].pre +const Q3 = board.add(SOT_23, { + translate: pt(0.076, 0.697), rotate: 0, + id: 'Q3' }) -const light_1__drv_1__pull = board.add(R_0603_1608Metric, { - translate: pt(1.150, 1.541), rotate: 0, - id: 'light_1__drv_1__pull' +// light[0].drv[1].pull +const R14 = board.add(R_0603_1608Metric, { + translate: pt(0.405, 0.659), rotate: 0, + id: 'R14' }) -const light_1__drv_1__drv = board.add(TO_252_2, { - translate: pt(0.997, 1.335), rotate: 0, - id: 'light_1__drv_1__drv' +// light[0].drv[1].drv +const Q4 = board.add(TO_252_2, { + translate: pt(0.252, 0.453), rotate: 0, + id: 'Q4' }) -const light_2__conn = board.add(Molex_DuraClik_vert_4pin, { +// light[1].conn +const J5 = board.add(Molex_DuraClik_vert_4pin, { translate: pt(1.248, 0.630), rotate: 0, - id: 'light_2__conn' + id: 'J5' }) -const light_2__drv_0__pre = board.add(SOT_23, { +// light[1].drv[0].pre +const Q5 = board.add(SOT_23, { translate: pt(1.298, 0.382), rotate: 0, - id: 'light_2__drv_0__pre' + id: 'Q5' }) -const light_2__drv_0__pull = board.add(R_0603_1608Metric, { +// light[1].drv[0].pull +const R15 = board.add(R_0603_1608Metric, { translate: pt(0.994, 0.659), rotate: 0, - id: 'light_2__drv_0__pull' + id: 'R15' }) -const light_2__drv_0__drv = board.add(TO_252_2, { +// light[1].drv[0].drv +const Q6 = board.add(TO_252_2, { translate: pt(0.997, 0.138), rotate: 0, - id: 'light_2__drv_0__drv' + id: 'Q6' }) -const light_2__drv_1__pre = board.add(SOT_23, { +// light[1].drv[1].pre +const Q7 = board.add(SOT_23, { translate: pt(0.821, 0.697), rotate: 0, - id: 'light_2__drv_1__pre' + id: 'Q7' }) -const light_2__drv_1__pull = board.add(R_0603_1608Metric, { +// light[1].drv[1].pull +const R16 = board.add(R_0603_1608Metric, { translate: pt(1.150, 0.659), rotate: 0, - id: 'light_2__drv_1__pull' + id: 'R16' }) -const light_2__drv_1__drv = board.add(TO_252_2, { +// light[1].drv[1].drv +const Q8 = board.add(TO_252_2, { translate: pt(0.997, 0.453), rotate: 0, - id: 'light_2__drv_1__drv' + id: 'Q8' }) -const light_3__conn = board.add(Molex_DuraClik_vert_4pin, { - translate: pt(0.502, 0.630), rotate: 0, - id: 'light_3__conn' +// light[2].conn +const J6 = board.add(Molex_DuraClik_vert_4pin, { + translate: pt(1.994, 0.630), rotate: 0, + id: 'J6' }) -const light_3__drv_0__pre = board.add(SOT_23, { - translate: pt(0.552, 0.382), rotate: 0, - id: 'light_3__drv_0__pre' +// light[2].drv[0].pre +const Q9 = board.add(SOT_23, { + translate: pt(2.043, 0.382), rotate: 0, + id: 'Q9' }) -const light_3__drv_0__pull = board.add(R_0603_1608Metric, { - translate: pt(0.249, 0.659), rotate: 0, - id: 'light_3__drv_0__pull' +// light[2].drv[0].pull +const R17 = board.add(R_0603_1608Metric, { + translate: pt(1.740, 0.659), rotate: 0, + id: 'R17' }) -const light_3__drv_0__drv = board.add(TO_252_2, { - translate: pt(0.252, 0.138), rotate: 0, - id: 'light_3__drv_0__drv' +// light[2].drv[0].drv +const Q10 = board.add(TO_252_2, { + translate: pt(1.743, 0.138), rotate: 0, + id: 'Q10' }) -const light_3__drv_1__pre = board.add(SOT_23, { - translate: pt(0.076, 0.697), rotate: 0, - id: 'light_3__drv_1__pre' +// light[2].drv[1].pre +const Q11 = board.add(SOT_23, { + translate: pt(1.567, 0.697), rotate: 0, + id: 'Q11' }) -const light_3__drv_1__pull = board.add(R_0603_1608Metric, { - translate: pt(0.405, 0.659), rotate: 0, - id: 'light_3__drv_1__pull' +// light[2].drv[1].pull +const R18 = board.add(R_0603_1608Metric, { + translate: pt(1.896, 0.659), rotate: 0, + id: 'R18' }) -const light_3__drv_1__drv = board.add(TO_252_2, { - translate: pt(0.252, 0.453), rotate: 0, - id: 'light_3__drv_1__drv' +// light[2].drv[1].drv +const Q12 = board.add(TO_252_2, { + translate: pt(1.743, 0.453), rotate: 0, + id: 'Q12' }) -const light_4__conn = board.add(Molex_DuraClik_vert_4pin, { +// light[3].conn +const J7 = board.add(Molex_DuraClik_vert_4pin, { translate: pt(2.739, 0.630), rotate: 0, - id: 'light_4__conn' + id: 'J7' }) -const light_4__drv_0__pre = board.add(SOT_23, { +// light[3].drv[0].pre +const Q13 = board.add(SOT_23, { translate: pt(2.789, 0.382), rotate: 0, - id: 'light_4__drv_0__pre' + id: 'Q13' }) -const light_4__drv_0__pull = board.add(R_0603_1608Metric, { +// light[3].drv[0].pull +const R19 = board.add(R_0603_1608Metric, { translate: pt(2.486, 0.659), rotate: 0, - id: 'light_4__drv_0__pull' + id: 'R19' }) -const light_4__drv_0__drv = board.add(TO_252_2, { +// light[3].drv[0].drv +const Q14 = board.add(TO_252_2, { translate: pt(2.489, 0.138), rotate: 0, - id: 'light_4__drv_0__drv' + id: 'Q14' }) -const light_4__drv_1__pre = board.add(SOT_23, { +// light[3].drv[1].pre +const Q15 = board.add(SOT_23, { translate: pt(2.313, 0.697), rotate: 0, - id: 'light_4__drv_1__pre' + id: 'Q15' }) -const light_4__drv_1__pull = board.add(R_0603_1608Metric, { +// light[3].drv[1].pull +const R20 = board.add(R_0603_1608Metric, { translate: pt(2.642, 0.659), rotate: 0, - id: 'light_4__drv_1__pull' + id: 'R20' }) -const light_4__drv_1__drv = board.add(TO_252_2, { +// light[3].drv[1].drv +const Q16 = board.add(TO_252_2, { translate: pt(2.489, 0.453), rotate: 0, - id: 'light_4__drv_1__drv' + id: 'Q16' }) -const light_5__conn = board.add(Molex_DuraClik_vert_4pin, { - translate: pt(1.994, 0.630), rotate: 0, - id: 'light_5__conn' +// light[4].conn +const J8 = board.add(Molex_DuraClik_vert_4pin, { + translate: pt(0.502, 1.512), rotate: 0, + id: 'J8' }) -const light_5__drv_0__pre = board.add(SOT_23, { - translate: pt(2.043, 0.382), rotate: 0, - id: 'light_5__drv_0__pre' +// light[4].drv[0].pre +const Q17 = board.add(SOT_23, { + translate: pt(0.552, 1.264), rotate: 0, + id: 'Q17' }) -const light_5__drv_0__pull = board.add(R_0603_1608Metric, { - translate: pt(1.740, 0.659), rotate: 0, - id: 'light_5__drv_0__pull' +// light[4].drv[0].pull +const R21 = board.add(R_0603_1608Metric, { + translate: pt(0.249, 1.541), rotate: 0, + id: 'R21' }) -const light_5__drv_0__drv = board.add(TO_252_2, { - translate: pt(1.743, 0.138), rotate: 0, - id: 'light_5__drv_0__drv' +// light[4].drv[0].drv +const Q18 = board.add(TO_252_2, { + translate: pt(0.252, 1.020), rotate: 0, + id: 'Q18' }) -const light_5__drv_1__pre = board.add(SOT_23, { - translate: pt(1.567, 0.697), rotate: 0, - id: 'light_5__drv_1__pre' +// light[4].drv[1].pre +const Q19 = board.add(SOT_23, { + translate: pt(0.076, 1.579), rotate: 0, + id: 'Q19' }) -const light_5__drv_1__pull = board.add(R_0603_1608Metric, { - translate: pt(1.896, 0.659), rotate: 0, - id: 'light_5__drv_1__pull' +// light[4].drv[1].pull +const R22 = board.add(R_0603_1608Metric, { + translate: pt(0.405, 1.541), rotate: 0, + id: 'R22' }) -const light_5__drv_1__drv = board.add(TO_252_2, { - translate: pt(1.743, 0.453), rotate: 0, - id: 'light_5__drv_1__drv' +// light[4].drv[1].drv +const Q20 = board.add(TO_252_2, { + translate: pt(0.252, 1.335), rotate: 0, + id: 'Q20' }) +// light[5].conn +const J9 = board.add(Molex_DuraClik_vert_4pin, { + translate: pt(1.248, 1.512), rotate: 0, + id: 'J9' +}) +// light[5].drv[0].pre +const Q21 = board.add(SOT_23, { + translate: pt(1.298, 1.264), rotate: 0, + id: 'Q21' +}) +// light[5].drv[0].pull +const R23 = board.add(R_0603_1608Metric, { + translate: pt(0.994, 1.541), rotate: 0, + id: 'R23' +}) +// light[5].drv[0].drv +const Q22 = board.add(TO_252_2, { + translate: pt(0.997, 1.020), rotate: 0, + id: 'Q22' +}) +// light[5].drv[1].pre +const Q23 = board.add(SOT_23, { + translate: pt(0.821, 1.579), rotate: 0, + id: 'Q23' +}) +// light[5].drv[1].pull +const R24 = board.add(R_0603_1608Metric, { + translate: pt(1.150, 1.541), rotate: 0, + id: 'R24' +}) +// light[5].drv[1].drv +const Q24 = board.add(TO_252_2, { + translate: pt(0.997, 1.335), rotate: 0, + id: 'Q24' +}) + +board.setNetlist([ + {name: "vin", pads: [["J1", "2"], ["U1", "3"], ["R5", "1"], ["U1", "5"], ["J4", "1"], ["J5", "1"], ["J6", "1"], ["J7", "1"], ["J8", "1"], ["J9", "1"], ["C1", "1"], ["C3", "1"], ["R13", "1"], ["Q2", "3"], ["R14", "1"], ["Q4", "3"], ["R15", "1"], ["Q6", "3"], ["R16", "1"], ["Q8", "3"], ["R17", "1"], ["Q10", "3"], ["R18", "1"], ["Q12", "3"], ["R19", "1"], ["Q14", "3"], ["R20", "1"], ["Q16", "3"], ["R21", "1"], ["Q18", "3"], ["R22", "1"], ["Q20", "3"], ["R23", "1"], ["Q22", "3"], ["R24", "1"], ["Q24", "3"]]}, + {name: "gnd", pads: [["J1", "1"], ["J1", "3"], ["U1", "1"], ["U2", "17"], ["U2", "11"], ["U2", "20"], ["U2", "40"], ["U2", "41"], ["J4", "4"], ["J5", "4"], ["J6", "4"], ["J7", "4"], ["J8", "4"], ["J9", "4"], ["U5", "4"], ["R6", "2"], ["C1", "2"], ["C5", "2"], ["C6", "2"], ["C7", "2"], ["C8", "2"], ["C9", "2"], ["C10", "2"], ["C11", "2"], ["C12", "2"], ["C13", "2"], ["C14", "2"], ["C15", "2"], ["C16", "2"], ["X1", "2"], ["X1", "4"], ["Q1", "2"], ["Q3", "2"], ["Q5", "2"], ["Q7", "2"], ["Q9", "2"], ["Q11", "2"], ["Q13", "2"], ["Q15", "2"], ["Q17", "2"], ["Q19", "2"], ["Q21", "2"], ["Q23", "2"], ["R2", "2"], ["R4", "1"], ["C21", "2"], ["J2", "3"], ["J2", "5"], ["J2", "9"], ["C17", "2"], ["C18", "2"], ["C3", "2"], ["C4", "2"]]}, + {name: "v3v3", pads: [["U2", "16"], ["U2", "10"], ["U2", "14"], ["U2", "30"], ["U2", "27"], ["U2", "39"], ["U2", "42"], ["D1", "2"], ["D2", "2"], ["U5", "1"], ["R1", "1"], ["J2", "1"], ["C5", "1"], ["C6", "1"], ["C7", "1"], ["C8", "1"], ["C9", "1"], ["C10", "1"], ["C11", "1"], ["C12", "1"], ["C13", "1"], ["C14", "1"], ["C15", "1"], ["C16", "1"], ["R3", "1"], ["C21", "1"], ["L1", "2"], ["C4", "1"]]}, + {name: "can_chain_0.txd", pads: [["U2", "43"], ["U5", "3"]]}, + {name: "can_chain_0.rxd", pads: [["U2", "44"], ["U5", "2"]]}, + {name: "vsense.output", pads: [["U2", "21"], ["R5", "2"], ["R6", "1"]]}, + {name: "mcu.gpio.rgb1_red", pads: [["U2", "28"], ["R7", "2"]]}, + {name: "mcu.gpio.rgb1_green", pads: [["U2", "23"], ["R8", "2"]]}, + {name: "mcu.gpio.rgb1_blue", pads: [["U2", "22"], ["R9", "2"]]}, + {name: "mcu.gpio.rgb2_red", pads: [["U2", "18"], ["R10", "2"]]}, + {name: "mcu.gpio.rgb2_green", pads: [["U2", "15"], ["R11", "2"]]}, + {name: "mcu.gpio.rgb2_blue", pads: [["U2", "13"], ["R12", "2"]]}, + {name: "light[0].control[0]", pads: [["U2", "12"], ["Q1", "1"]]}, + {name: "light[0].control[1]", pads: [["U2", "8"], ["Q3", "1"]]}, + {name: "light[1].control[0]", pads: [["U2", "7"], ["Q5", "1"]]}, + {name: "light[1].control[1]", pads: [["U2", "6"], ["Q7", "1"]]}, + {name: "light[2].control[0]", pads: [["U2", "4"], ["Q9", "1"]]}, + {name: "light[2].control[1]", pads: [["U2", "3"], ["Q11", "1"]]}, + {name: "light[3].control[0]", pads: [["U2", "2"], ["Q13", "1"]]}, + {name: "light[3].control[1]", pads: [["U2", "1"], ["Q15", "1"]]}, + {name: "light[4].control[0]", pads: [["U2", "48"], ["Q17", "1"]]}, + {name: "light[4].control[1]", pads: [["U2", "47"], ["Q19", "1"]]}, + {name: "light[5].control[0]", pads: [["U2", "46"], ["Q21", "1"]]}, + {name: "light[5].control[1]", pads: [["U2", "45"], ["Q23", "1"]]}, + {name: "pwr.fb.output", pads: [["U1", "4"], ["R1", "2"], ["R2", "1"]]}, + {name: "pwr.vbst_cap.neg", pads: [["C2", "2"], ["U1", "2"], ["L1", "1"]]}, + {name: "pwr.vbst_cap.pos", pads: [["C2", "1"], ["U1", "6"]]}, + {name: "mcu.xtal_node.xi", pads: [["U2", "26"], ["X1", "1"], ["C17", "1"]]}, + {name: "mcu.xtal_node.xo", pads: [["U2", "25"], ["X1", "3"], ["C18", "1"]]}, + {name: "mcu.swd_node.swdio", pads: [["U2", "33"], ["J2", "2"], ["R3", "2"]]}, + {name: "mcu.swd_node.swclk", pads: [["U2", "29"], ["J2", "4"], ["R4", "2"]]}, + {name: "mcu.reset_node", pads: [["U2", "34"], ["J2", "10"]]}, + {name: "mcu.swd.swo", pads: [["U2", "9"], ["J2", "6"]]}, + {name: "mcu.swd.tdi", pads: [["J2", "8"]]}, + {name: "mcu.ic.xtal_rtc.xtal_in", pads: [["U2", "31"]]}, + {name: "mcu.ic.xtal_rtc.xtal_out", pads: [["U2", "32"]]}, + {name: "can.can.canh", pads: [["J3", "4"], ["U4", "2"], ["U5", "7"]]}, + {name: "can.can.canl", pads: [["J3", "5"], ["U4", "1"], ["U5", "6"]]}, + {name: "can.conn.pwr", pads: [["J3", "2"], ["F1", "1"]]}, + {name: "can.can_fuse.pwr_out", pads: [["F1", "2"], ["U3", "1"], ["U3", "3"], ["C19", "1"]]}, + {name: "can.conn.gnd", pads: [["J3", "3"], ["U4", "3"], ["U3", "2"], ["U5", "5"], ["C19", "2"], ["C20", "2"], ["C22", "2"]]}, + {name: "can.transceiver.can_pwr", pads: [["U5", "8"], ["U3", "5"], ["C22", "1"], ["C20", "1"]]}, + {name: "rgb1.red_res.a", pads: [["R7", "1"], ["D1", "3"]]}, + {name: "rgb1.green_res.a", pads: [["R8", "1"], ["D1", "4"]]}, + {name: "rgb1.blue_res.a", pads: [["R9", "1"], ["D1", "1"]]}, + {name: "rgb2.red_res.a", pads: [["R10", "1"], ["D2", "3"]]}, + {name: "rgb2.green_res.a", pads: [["R11", "1"], ["D2", "4"]]}, + {name: "rgb2.blue_res.a", pads: [["R12", "1"], ["D2", "1"]]}, + {name: "light[0].drv[0].output", pads: [["J4", "2"], ["Q2", "2"]]}, + {name: "light[0].drv[1].output", pads: [["J4", "3"], ["Q4", "2"]]}, + {name: "light[0].drv[0].pre.drain", pads: [["Q1", "3"], ["R13", "2"], ["Q2", "1"]]}, + {name: "light[0].drv[1].pre.drain", pads: [["Q3", "3"], ["R14", "2"], ["Q4", "1"]]}, + {name: "light[1].drv[0].output", pads: [["J5", "2"], ["Q6", "2"]]}, + {name: "light[1].drv[1].output", pads: [["J5", "3"], ["Q8", "2"]]}, + {name: "light[1].drv[0].pre.drain", pads: [["Q5", "3"], ["R15", "2"], ["Q6", "1"]]}, + {name: "light[1].drv[1].pre.drain", pads: [["Q7", "3"], ["R16", "2"], ["Q8", "1"]]}, + {name: "light[2].drv[0].output", pads: [["J6", "2"], ["Q10", "2"]]}, + {name: "light[2].drv[1].output", pads: [["J6", "3"], ["Q12", "2"]]}, + {name: "light[2].drv[0].pre.drain", pads: [["Q9", "3"], ["R17", "2"], ["Q10", "1"]]}, + {name: "light[2].drv[1].pre.drain", pads: [["Q11", "3"], ["R18", "2"], ["Q12", "1"]]}, + {name: "light[3].drv[0].output", pads: [["J7", "2"], ["Q14", "2"]]}, + {name: "light[3].drv[1].output", pads: [["J7", "3"], ["Q16", "2"]]}, + {name: "light[3].drv[0].pre.drain", pads: [["Q13", "3"], ["R19", "2"], ["Q14", "1"]]}, + {name: "light[3].drv[1].pre.drain", pads: [["Q15", "3"], ["R20", "2"], ["Q16", "1"]]}, + {name: "light[4].drv[0].output", pads: [["J8", "2"], ["Q18", "2"]]}, + {name: "light[4].drv[1].output", pads: [["J8", "3"], ["Q20", "2"]]}, + {name: "light[4].drv[0].pre.drain", pads: [["Q17", "3"], ["R21", "2"], ["Q18", "1"]]}, + {name: "light[4].drv[1].pre.drain", pads: [["Q19", "3"], ["R22", "2"], ["Q20", "1"]]}, + {name: "light[5].drv[0].output", pads: [["J9", "2"], ["Q22", "2"]]}, + {name: "light[5].drv[1].output", pads: [["J9", "3"], ["Q24", "2"]]}, + {name: "light[5].drv[0].pre.drain", pads: [["Q21", "3"], ["R23", "2"], ["Q22", "1"]]}, + {name: "light[5].drv[1].pre.drain", pads: [["Q23", "3"], ["R24", "2"], ["Q24", "1"]]} +]) const limit0 = pt(-0.07874015748031496, -0.07874015748031496); const limit1 = pt(2.9826771653543305, 2.4173228346456694); diff --git a/examples/IotDisplay/IotDisplay.svgpcb.js b/examples/IotDisplay/IotDisplay.svgpcb.js index 15b244b81..7209c6d5e 100644 --- a/examples/IotDisplay/IotDisplay.svgpcb.js +++ b/examples/IotDisplay/IotDisplay.svgpcb.js @@ -1,306 +1,442 @@ const board = new PCB(); -const jlc_th_th1 = board.add(JlcToolingHole_1_152mm, { +// jlc_th.th1 +const H1 = board.add(JlcToolingHole_1_152mm, { translate: pt(3.002, 2.210), rotate: 0, - id: 'jlc_th_th1' + id: 'H1' }) -const jlc_th_th2 = board.add(JlcToolingHole_1_152mm, { +// jlc_th.th2 +const H2 = board.add(JlcToolingHole_1_152mm, { translate: pt(3.041, 2.210), rotate: 0, - id: 'jlc_th_th2' + id: 'H2' }) -const jlc_th_th3 = board.add(JlcToolingHole_1_152mm, { +// jlc_th.th3 +const H3 = board.add(JlcToolingHole_1_152mm, { translate: pt(3.002, 2.249), rotate: 0, - id: 'jlc_th_th3' + id: 'H3' }) -const usb_conn = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { +// usb.conn +const J1 = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { translate: pt(0.209, 1.905), rotate: 0, - id: 'usb_conn' + id: 'J1' }) -const batt_conn = board.add(JST_PH_S2B_PH_K_1x02_P2_00mm_Horizontal, { +// batt.conn +const J2 = board.add(JST_PH_S2B_PH_K_1x02_P2_00mm_Horizontal, { translate: pt(0.633, 2.006), rotate: 0, - id: 'batt_conn' + id: 'J2' }) -const tp_pwr_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(1.625, 2.247), rotate: 0, - id: 'tp_pwr_tp' +// tp_pwr.tp +const TP1 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(0.874, 2.247), rotate: 0, + id: 'TP1' }) -const tp_gnd_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(1.375, 2.247), rotate: 0, - id: 'tp_gnd_tp' +// tp_gnd.tp +const TP2 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(1.124, 2.247), rotate: 0, + id: 'TP2' }) -const vbat_prot_fet = board.add(SOT_23, { - translate: pt(0.614, 2.277), rotate: 0, - id: 'vbat_prot_fet' +// vbat_prot.fet +const Q1 = board.add(SOT_23, { + translate: pt(0.076, 2.277), rotate: 0, + id: 'Q1' }) -const reg_3v3_ic = board.add(SOT_23_6, { +// reg_3v3.ic +const U1 = board.add(SOT_23_6, { translate: pt(3.419, 0.952), rotate: 0, - id: 'reg_3v3_ic' + id: 'U1' }) -const reg_3v3_fb_div_top_res = board.add(R_0603_1608Metric, { +// reg_3v3.fb.div.top_res +const R1 = board.add(R_0603_1608Metric, { translate: pt(3.570, 1.131), rotate: 0, - id: 'reg_3v3_fb_div_top_res' + id: 'R1' }) -const reg_3v3_fb_div_bottom_res = board.add(R_0603_1608Metric, { +// reg_3v3.fb.div.bottom_res +const R2 = board.add(R_0603_1608Metric, { translate: pt(3.176, 1.261), rotate: 0, - id: 'reg_3v3_fb_div_bottom_res' + id: 'R2' }) -const reg_3v3_hf_in_cap_cap = board.add(C_0603_1608Metric, { +// reg_3v3.hf_in_cap.cap +const C1 = board.add(C_0603_1608Metric, { translate: pt(3.332, 1.261), rotate: 0, - id: 'reg_3v3_hf_in_cap_cap' + id: 'C1' }) -const reg_3v3_boot_cap = board.add(C_0603_1608Metric, { +// reg_3v3.boot_cap +const C2 = board.add(C_0603_1608Metric, { translate: pt(3.488, 1.261), rotate: 0, - id: 'reg_3v3_boot_cap' + id: 'C2' }) -const reg_3v3_power_path_inductor = board.add(L_Sunlord_SWPA4030S, { +// reg_3v3.power_path.inductor +const L1 = board.add(L_Sunlord_SWPA4030S, { translate: pt(3.209, 0.974), rotate: 0, - id: 'reg_3v3_power_path_inductor' + id: 'L1' }) -const reg_3v3_power_path_in_cap_cap = board.add(C_1206_3216Metric, { +// reg_3v3.power_path.in_cap.cap +const C3 = board.add(C_1206_3216Metric, { translate: pt(3.209, 1.147), rotate: 0, - id: 'reg_3v3_power_path_in_cap_cap' + id: 'C3' }) -const reg_3v3_power_path_out_cap_cap = board.add(C_0805_2012Metric, { +// reg_3v3.power_path.out_cap.cap +const C4 = board.add(C_0805_2012Metric, { translate: pt(3.406, 1.141), rotate: 0, - id: 'reg_3v3_power_path_out_cap_cap' + id: 'C4' }) -const reg_3v3_en_res = board.add(R_0603_1608Metric, { +// reg_3v3.en_res +const R3 = board.add(R_0603_1608Metric, { translate: pt(3.176, 1.357), rotate: 0, - id: 'reg_3v3_en_res' + id: 'R3' }) -const tp_3v3_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(2.376, 2.247), rotate: 0, - id: 'tp_3v3_tp' +// tp_3v3.tp +const TP3 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(1.375, 2.247), rotate: 0, + id: 'TP3' }) -const vbat_sense_gate_pre = board.add(SOT_23, { +// vbat_sense_gate.pre +const Q2 = board.add(SOT_23, { translate: pt(1.487, 1.807), rotate: 0, - id: 'vbat_sense_gate_pre' + id: 'Q2' }) -const vbat_sense_gate_pull = board.add(R_0603_1608Metric, { +// vbat_sense_gate.pull +const R4 = board.add(R_0603_1608Metric, { translate: pt(1.660, 1.942), rotate: 0, - id: 'vbat_sense_gate_pull' + id: 'R4' }) -const vbat_sense_gate_drv = board.add(SOT_23, { +// vbat_sense_gate.drv +const Q3 = board.add(SOT_23, { translate: pt(1.487, 1.980), rotate: 0, - id: 'vbat_sense_gate_drv' + id: 'Q3' }) -const mcu_ic = board.add(ESP32_S3_WROOM_1, { +// mcu.ic +const U2 = board.add(ESP32_S3_WROOM_1, { translate: pt(0.945, 0.530), rotate: 0, - id: 'mcu_ic' + id: 'U2' }) -const mcu_vcc_cap0_cap = board.add(C_1206_3216Metric, { +// mcu.vcc_cap0.cap +const C5 = board.add(C_1206_3216Metric, { translate: pt(2.020, 0.683), rotate: 0, - id: 'mcu_vcc_cap0_cap' + id: 'C5' }) -const mcu_vcc_cap1_cap = board.add(C_0603_1608Metric, { +// mcu.vcc_cap1.cap +const C6 = board.add(C_0603_1608Metric, { translate: pt(2.208, 0.667), rotate: 0, - id: 'mcu_vcc_cap1_cap' + id: 'C6' }) -const mcu_prog_conn = board.add(Tag_Connect_TC2030_IDC_FP_2x03_P1_27mm_Vertical, { +// mcu.prog.conn +const J3 = board.add(Tag_Connect_TC2030_IDC_FP_2x03_P1_27mm_Vertical, { translate: pt(2.096, 0.167), rotate: 0, - id: 'mcu_prog_conn' + id: 'J3' }) -const mcu_boot_package = board.add(SW_SPST_SKQG_WithoutStem, { +// mcu.boot.package +const SW1 = board.add(SW_SPST_SKQG_WithoutStem, { translate: pt(2.096, 0.486), rotate: 0, - id: 'mcu_boot_package' + id: 'SW1' }) -const mcu_en_pull_rc_r = board.add(R_0603_1608Metric, { +// mcu.en_pull.rc.r +const R5 = board.add(R_0603_1608Metric, { translate: pt(2.364, 0.667), rotate: 0, - id: 'mcu_en_pull_rc_r' + id: 'R5' }) -const mcu_en_pull_rc_c = board.add(C_0603_1608Metric, { +// mcu.en_pull.rc.c +const C7 = board.add(C_0603_1608Metric, { translate: pt(1.987, 0.796), rotate: 0, - id: 'mcu_en_pull_rc_c' + id: 'C7' }) -const usb_esd = board.add(SOT_23, { +// usb_esd +const U3 = board.add(SOT_23, { translate: pt(2.887, 2.277), rotate: 0, - id: 'usb_esd' + id: 'U3' }) -const ledr_package = board.add(LED_0603_1608Metric, { +// ledr.package +const D1 = board.add(LED_0603_1608Metric, { translate: pt(2.848, 1.769), rotate: 0, - id: 'ledr_package' + id: 'D1' }) -const ledr_res = board.add(R_0603_1608Metric, { +// ledr.res +const R6 = board.add(R_0603_1608Metric, { translate: pt(2.848, 1.866), rotate: 0, - id: 'ledr_res' + id: 'R6' }) -const ledg_package = board.add(LED_0603_1608Metric, { - translate: pt(3.318, 1.769), rotate: 0, - id: 'ledg_package' -}) -const ledg_res = board.add(R_0603_1608Metric, { - translate: pt(3.318, 1.866), rotate: 0, - id: 'ledg_res' -}) -const ledb_package = board.add(LED_0603_1608Metric, { +// ledg.package +const D2 = board.add(LED_0603_1608Metric, { translate: pt(3.083, 1.769), rotate: 0, - id: 'ledb_package' + id: 'D2' }) -const ledb_res = board.add(R_0603_1608Metric, { +// ledg.res +const R7 = board.add(R_0603_1608Metric, { translate: pt(3.083, 1.866), rotate: 0, - id: 'ledb_res' + id: 'R7' +}) +// ledb.package +const D3 = board.add(LED_0603_1608Metric, { + translate: pt(3.318, 1.769), rotate: 0, + id: 'D3' +}) +// ledb.res +const R8 = board.add(R_0603_1608Metric, { + translate: pt(3.318, 1.866), rotate: 0, + id: 'R8' }) -const sw_package = board.add(SW_SPST_SKQG_WithoutStem, { +// sw.package +const SW2 = board.add(SW_SPST_SKQG_WithoutStem, { translate: pt(2.504, 1.852), rotate: 0, - id: 'sw_package' + id: 'SW2' }) -const vbat_sense_div_top_res = board.add(R_0603_1608Metric, { +// vbat_sense.div.top_res +const R9 = board.add(R_0603_1608Metric, { translate: pt(3.553, 1.769), rotate: 0, - id: 'vbat_sense_div_top_res' + id: 'R9' }) -const vbat_sense_div_bottom_res = board.add(R_0603_1608Metric, { +// vbat_sense.div.bottom_res +const R10 = board.add(R_0603_1608Metric, { translate: pt(3.553, 1.866), rotate: 0, - id: 'vbat_sense_div_bottom_res' + id: 'R10' }) -const touch_duck = board.add(Symbol_DucklingSolid, { +// touch_duck +const U4 = board.add(Symbol_DucklingSolid, { translate: pt(3.159, 2.210), rotate: 0, - id: 'touch_duck' + id: 'U4' }) -const touch_lemur = board.add(Symbol_LemurSolid, { +// touch_lemur +const U5 = board.add(Symbol_LemurSolid, { translate: pt(3.198, 2.210), rotate: 0, - id: 'touch_lemur' + id: 'U5' }) -const epd_gate_drv = board.add(SOT_23, { - translate: pt(0.076, 2.277), rotate: 0, - id: 'epd_gate_drv' -}) -const mem_gate_drv = board.add(SOT_23, { +// epd_gate.drv +const Q4 = board.add(SOT_23, { translate: pt(0.345, 2.277), rotate: 0, - id: 'mem_gate_drv' + id: 'Q4' +}) +// mem_gate.drv +const Q5 = board.add(SOT_23, { + translate: pt(0.614, 2.277), rotate: 0, + id: 'Q5' }) -const epd_device_conn_conn = board.add(TE_2_1734839_4_1x24_1MP_P0_5mm_Horizontal, { +// epd.device.conn.conn +const J4 = board.add(TE_2_1734839_4_1x24_1MP_P0_5mm_Horizontal, { translate: pt(2.903, 0.167), rotate: 0, - id: 'epd_device_conn_conn' + id: 'J4' }) -const epd_vdd_cap_cap = board.add(C_0603_1608Metric, { +// epd.vdd_cap.cap +const C8 = board.add(C_0603_1608Metric, { translate: pt(2.930, 0.624), rotate: 0, - id: 'epd_vdd_cap_cap' + id: 'C8' }) -const epd_vdd1v8_cap_cap = board.add(C_0603_1608Metric, { +// epd.vdd1v8_cap.cap +const C9 = board.add(C_0603_1608Metric, { translate: pt(3.086, 0.624), rotate: 0, - id: 'epd_vdd1v8_cap_cap' + id: 'C9' }) -const epd_vgl_cap_cap = board.add(C_0603_1608Metric, { +// epd.vgl_cap.cap +const C10 = board.add(C_0603_1608Metric, { translate: pt(3.242, 0.624), rotate: 0, - id: 'epd_vgl_cap_cap' + id: 'C10' }) -const epd_vgh_cap_cap = board.add(C_1206_3216Metric, { +// epd.vgh_cap.cap +const C11 = board.add(C_1206_3216Metric, { translate: pt(2.850, 0.346), rotate: 0, - id: 'epd_vgh_cap_cap' + id: 'C11' }) -const epd_vsh_cap_cap = board.add(C_1206_3216Metric, { +// epd.vsh_cap.cap +const C12 = board.add(C_1206_3216Metric, { translate: pt(3.070, 0.346), rotate: 0, - id: 'epd_vsh_cap_cap' + id: 'C12' }) -const epd_vsl_cap_cap = board.add(C_1206_3216Metric, { +// epd.vsl_cap.cap +const C13 = board.add(C_1206_3216Metric, { translate: pt(3.291, 0.346), rotate: 0, - id: 'epd_vsl_cap_cap' + id: 'C13' }) -const epd_vcom_cap_cap = board.add(C_0603_1608Metric, { +// epd.vcom_cap.cap +const C14 = board.add(C_0603_1608Metric, { translate: pt(3.398, 0.624), rotate: 0, - id: 'epd_vcom_cap_cap' + id: 'C14' }) -const epd_boost_fet = board.add(SOT_23, { +// epd.boost.fet +const Q6 = board.add(SOT_23, { translate: pt(3.381, 0.067), rotate: 0, - id: 'epd_boost_fet' + id: 'Q6' }) -const epd_boost_inductor = board.add(L_1210_3225Metric, { +// epd.boost.inductor +const L2 = board.add(L_1210_3225Metric, { translate: pt(2.630, 0.363), rotate: 0, - id: 'epd_boost_inductor' + id: 'L2' }) -const epd_boost_sense = board.add(R_0603_1608Metric, { +// epd.boost.sense +const R11 = board.add(R_0603_1608Metric, { translate: pt(2.598, 0.738), rotate: 0, - id: 'epd_boost_sense' + id: 'R11' }) -const epd_boost_in_cap_cap = board.add(C_0805_2012Metric, { +// epd.boost.in_cap.cap +const C15 = board.add(C_0805_2012Metric, { translate: pt(3.269, 0.504), rotate: 0, - id: 'epd_boost_in_cap_cap' + id: 'C15' }) -const epd_boost_diode = board.add(D_SOD_323, { +// epd.boost.diode +const D4 = board.add(D_SOD_323, { translate: pt(3.438, 0.502), rotate: 0, - id: 'epd_boost_diode' + id: 'D4' }) -const epd_boost_boot_neg_diode = board.add(D_SOD_323, { +// epd.boost.boot_neg_diode +const D5 = board.add(D_SOD_323, { translate: pt(2.604, 0.632), rotate: 0, - id: 'epd_boost_boot_neg_diode' + id: 'D5' }) -const epd_boost_boot_gnd_diode = board.add(D_SOD_323, { +// epd.boost.boot_gnd_diode +const D6 = board.add(D_SOD_323, { translate: pt(2.769, 0.632), rotate: 0, - id: 'epd_boost_boot_gnd_diode' + id: 'D6' }) -const epd_boost_boot_cap = board.add(C_1206_3216Metric, { +// epd.boost.boot_cap +const C16 = board.add(C_1206_3216Metric, { translate: pt(2.631, 0.510), rotate: 0, - id: 'epd_boost_boot_cap' + id: 'C16' }) -const epd_boost_out_cap_cap = board.add(C_1206_3216Metric, { +// epd.boost.out_cap.cap +const C17 = board.add(C_1206_3216Metric, { translate: pt(2.851, 0.510), rotate: 0, - id: 'epd_boost_out_cap_cap' + id: 'C17' }) -const epd_boost_neg_out_cap_cap = board.add(C_1206_3216Metric, { +// epd.boost.neg_out_cap.cap +const C18 = board.add(C_1206_3216Metric, { translate: pt(3.072, 0.510), rotate: 0, - id: 'epd_boost_neg_out_cap_cap' + id: 'C18' }) -const epd_gate_pdr = board.add(R_0603_1608Metric, { +// epd.gate_pdr +const R12 = board.add(R_0603_1608Metric, { translate: pt(2.754, 0.738), rotate: 0, - id: 'epd_gate_pdr' + id: 'R12' }) -const tp_epd_tp_sck_tp = board.add(TestPoint_TE_RCT_0805, { +// tp_epd.tp_sck.tp +const TP4 = board.add(TestPoint_TE_RCT_0805, { translate: pt(1.902, 1.778), rotate: 0, - id: 'tp_epd_tp_sck_tp' + id: 'TP4' }) -const tp_epd_tp_mosi_tp = board.add(TestPoint_TE_RCT_0805, { +// tp_epd.tp_mosi.tp +const TP5 = board.add(TestPoint_TE_RCT_0805, { translate: pt(1.902, 1.892), rotate: 0, - id: 'tp_epd_tp_mosi_tp' + id: 'TP5' }) -const tp_epd_tp_miso_tp = board.add(TestPoint_TE_RCT_0805, { +// tp_epd.tp_miso.tp +const TP6 = board.add(TestPoint_TE_RCT_0805, { translate: pt(1.902, 2.006), rotate: 0, - id: 'tp_epd_tp_miso_tp' + id: 'TP6' }) -const tp_erst_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(1.124, 2.247), rotate: 0, - id: 'tp_erst_tp' +// tp_erst.tp +const TP7 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(1.625, 2.247), rotate: 0, + id: 'TP7' }) -const tp_dc_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(2.126, 2.247), rotate: 0, - id: 'tp_dc_tp' +// tp_dc.tp +const TP8 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(1.876, 2.247), rotate: 0, + id: 'TP8' }) -const tp_epd_cs_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(0.874, 2.247), rotate: 0, - id: 'tp_epd_cs_tp' +// tp_epd_cs.tp +const TP9 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(2.126, 2.247), rotate: 0, + id: 'TP9' }) -const tp_busy_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(2.627, 2.247), rotate: 0, - id: 'tp_busy_tp' +// tp_busy.tp +const TP10 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(2.376, 2.247), rotate: 0, + id: 'TP10' }) -const sd = board.add(microSD_HC_Molex_104031_0811, { +// sd +const J5 = board.add(microSD_HC_Molex_104031_0811, { translate: pt(2.809, 1.143), rotate: 0, - id: 'sd' + id: 'J5' }) -const flash_ic = board.add(SOIC_8_5_23x5_23mm_P1_27mm, { +// flash.ic +const U6 = board.add(SOIC_8_5_23x5_23mm_P1_27mm, { translate: pt(1.110, 1.853), rotate: 0, - id: 'flash_ic' + id: 'U6' }) -const flash_vcc_cap_cap = board.add(C_0603_1608Metric, { +// flash.vcc_cap.cap +const C19 = board.add(C_0603_1608Metric, { translate: pt(0.985, 2.033), rotate: 0, - id: 'flash_vcc_cap_cap' + id: 'C19' }) -const tp_sd_tp_sck_tp = board.add(TestPoint_TE_RCT_0805, { +// tp_sd.tp_sck.tp +const TP11 = board.add(TestPoint_TE_RCT_0805, { translate: pt(2.153, 1.778), rotate: 0, - id: 'tp_sd_tp_sck_tp' + id: 'TP11' }) -const tp_sd_tp_mosi_tp = board.add(TestPoint_TE_RCT_0805, { +// tp_sd.tp_mosi.tp +const TP12 = board.add(TestPoint_TE_RCT_0805, { translate: pt(2.153, 1.892), rotate: 0, - id: 'tp_sd_tp_mosi_tp' + id: 'TP12' }) -const tp_sd_tp_miso_tp = board.add(TestPoint_TE_RCT_0805, { +// tp_sd.tp_miso.tp +const TP13 = board.add(TestPoint_TE_RCT_0805, { translate: pt(2.153, 2.006), rotate: 0, - id: 'tp_sd_tp_miso_tp' + id: 'TP13' }) -const tp_sd_cs_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(1.876, 2.247), rotate: 0, - id: 'tp_sd_cs_tp' +// tp_sd_cs.tp +const TP14 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(2.627, 2.247), rotate: 0, + id: 'TP14' }) +board.setNetlist([ + {name: "gnd", pads: [["U3", "3"], ["J5", "6"], ["J5", "11"], ["J1", "A1"], ["J1", "B12"], ["J1", "B1"], ["J1", "A12"], ["J2", "1"], ["TP2", "1"], ["Q1", "1"], ["U1", "1"], ["Q2", "2"], ["U2", "1"], ["U2", "40"], ["U2", "41"], ["R6", "2"], ["R7", "2"], ["R8", "2"], ["SW2", "2"], ["U6", "4"], ["R10", "2"], ["J1", "S1"], ["R12", "2"], ["C1", "2"], ["C5", "2"], ["C6", "2"], ["J3", "5"], ["SW1", "2"], ["C8", "2"], ["C9", "2"], ["C10", "2"], ["C11", "2"], ["C12", "2"], ["C13", "2"], ["C14", "2"], ["C19", "2"], ["R2", "2"], ["C7", "2"], ["J4", "8"], ["R11", "2"], ["D6", "1"], ["C3", "2"], ["C4", "2"], ["C15", "2"], ["C17", "2"], ["C18", "2"], ["J4", "17"]]}, + {name: "vbat", pads: [["Q1", "2"], ["U1", "3"], ["R4", "1"], ["Q3", "2"], ["R3", "1"], ["C1", "1"], ["C3", "1"]]}, + {name: "v3v3", pads: [["TP3", "1"], ["U2", "2"], ["Q4", "2"], ["Q5", "2"], ["R1", "1"], ["C5", "1"], ["C6", "1"], ["J3", "1"], ["R5", "1"], ["L1", "2"], ["C4", "1"]]}, + {name: "batt.pwr", pads: [["J2", "2"], ["TP1", "1"], ["Q1", "3"]]}, + {name: "usb_chain_0.d_P", pads: [["J1", "A6"], ["J1", "B6"], ["U3", "2"], ["U2", "14"]]}, + {name: "usb_chain_0.d_N", pads: [["J1", "A7"], ["J1", "B7"], ["U3", "1"], ["U2", "13"]]}, + {name: "ledr.signal", pads: [["U2", "39"], ["D1", "2"]]}, + {name: "ledg.signal", pads: [["U2", "38"], ["D2", "2"]]}, + {name: "ledb.signal", pads: [["U2", "4"], ["D3", "2"]]}, + {name: "sw.out", pads: [["U2", "5"], ["SW2", "1"]]}, + {name: "vbat_sense_gate.control", pads: [["U2", "6"], ["Q2", "1"]]}, + {name: "vbat_sense_gate.output", pads: [["Q3", "3"], ["R9", "1"]]}, + {name: "vbat_sense.output", pads: [["U2", "7"], ["R9", "2"], ["R10", "1"]]}, + {name: "touch_duck.pad", pads: [["U2", "21"], ["U4", "1"]]}, + {name: "touch_lemur.pad", pads: [["U2", "22"], ["U5", "1"]]}, + {name: "epd_gate.control", pads: [["U2", "10"], ["Q4", "1"]]}, + {name: "mem_gate.control", pads: [["U2", "23"], ["Q5", "1"]]}, + {name: "epd_gate.output", pads: [["Q4", "3"], ["C8", "1"], ["J4", "9"], ["J4", "10"], ["L2", "1"], ["C15", "1"]]}, + {name: "tp_epd.io.sck", pads: [["U2", "33"], ["TP4", "1"], ["J4", "12"]]}, + {name: "tp_epd.io.mosi", pads: [["U2", "35"], ["TP5", "1"], ["J4", "11"]]}, + {name: "tp_epd.io.miso", pads: [["TP6", "1"]]}, + {name: "tp_erst.io", pads: [["U2", "8"], ["TP7", "1"], ["J4", "15"]]}, + {name: "tp_dc.io", pads: [["U2", "31"], ["TP8", "1"], ["J4", "14"]]}, + {name: "tp_epd_cs.io", pads: [["U2", "32"], ["TP9", "1"], ["J4", "13"]]}, + {name: "tp_busy.io", pads: [["U2", "9"], ["TP10", "1"], ["J4", "16"]]}, + {name: "mem_gate.output", pads: [["J5", "4"], ["Q5", "3"], ["U6", "8"], ["U6", "3"], ["U6", "7"], ["C19", "1"]]}, + {name: "tp_sd.io.sck", pads: [["U2", "17"], ["J5", "5"], ["U6", "6"], ["TP11", "1"]]}, + {name: "tp_sd.io.mosi", pads: [["U2", "18"], ["J5", "3"], ["U6", "5"], ["TP12", "1"]]}, + {name: "tp_sd.io.miso", pads: [["U2", "15"], ["J5", "7"], ["U6", "2"], ["TP13", "1"]]}, + {name: "tp_sd_cs.io", pads: [["U2", "19"], ["J5", "2"], ["TP14", "1"]]}, + {name: "flash.cs", pads: [["U2", "20"], ["U6", "1"]]}, + {name: "usb.pwr", pads: [["J1", "A4"], ["J1", "B9"], ["J1", "B4"], ["J1", "A9"]]}, + {name: "usb.conn.cc.cc1", pads: [["J1", "A5"]]}, + {name: "usb.conn.cc.cc2", pads: [["J1", "B5"]]}, + {name: "reg_3v3.fb.output", pads: [["U1", "4"], ["R1", "2"], ["R2", "1"]]}, + {name: "reg_3v3.boot_cap.neg", pads: [["C2", "2"], ["U1", "2"], ["L1", "1"]]}, + {name: "reg_3v3.boot_cap.pos", pads: [["C2", "1"], ["U1", "6"]]}, + {name: "reg_3v3.en_res.b", pads: [["R3", "2"], ["U1", "5"]]}, + {name: "vbat_sense_gate.pre.drain", pads: [["Q2", "3"], ["R4", "2"], ["Q3", "1"]]}, + {name: "mcu.program_uart_node.a_tx", pads: [["U2", "37"], ["J3", "3"]]}, + {name: "mcu.program_uart_node.b_tx", pads: [["U2", "36"], ["J3", "4"]]}, + {name: "mcu.program_en_node", pads: [["U2", "3"], ["J3", "6"], ["R5", "2"], ["C7", "1"]]}, + {name: "mcu.program_boot_node", pads: [["U2", "27"], ["SW1", "1"], ["J3", "2"]]}, + {name: "ledr.res.a", pads: [["R6", "1"], ["D1", "1"]]}, + {name: "ledg.res.a", pads: [["R7", "1"], ["D2", "1"]]}, + {name: "ledb.res.a", pads: [["R8", "1"], ["D3", "1"]]}, + {name: "epd.device.vdd1v8", pads: [["J4", "7"], ["C9", "1"]]}, + {name: "epd.device.vgl", pads: [["J4", "21"], ["C10", "1"]]}, + {name: "epd.device.vgh", pads: [["J4", "20"], ["C11", "1"]]}, + {name: "epd.device.vsh", pads: [["J4", "5"], ["C12", "1"]]}, + {name: "epd.device.vsl", pads: [["J4", "3"], ["C13", "1"]]}, + {name: "epd.device.vcom", pads: [["J4", "1"], ["C14", "1"]]}, + {name: "epd.device.gdr", pads: [["J4", "23"], ["R12", "1"], ["Q6", "1"]]}, + {name: "epd.device.rese", pads: [["J4", "22"], ["Q6", "2"], ["R11", "1"]]}, + {name: "epd.boost.pos_out", pads: [["J4", "4"], ["D4", "1"], ["C17", "1"]]}, + {name: "epd.boost.neg_out", pads: [["J4", "2"], ["D5", "2"], ["C18", "1"]]}, + {name: "epd.boost.inductor.b", pads: [["L2", "2"], ["Q6", "3"], ["D4", "2"], ["C16", "1"]]}, + {name: "epd.boost.boot_cap.neg", pads: [["C16", "2"], ["D5", "1"], ["D6", "2"]]} +]) + const limit0 = pt(-0.07874015748031496, -0.07874015748031496); const limit1 = pt(3.746456692913387, 2.4618110236220474); const xMin = Math.min(limit0[0], limit1[0]); diff --git a/examples/IotFan/IotFan.svgpcb.js b/examples/IotFan/IotFan.svgpcb.js index 95c511436..1162cde44 100644 --- a/examples/IotFan/IotFan.svgpcb.js +++ b/examples/IotFan/IotFan.svgpcb.js @@ -1,308 +1,439 @@ const board = new PCB(); -const jlc_th_th1 = board.add(JlcToolingHole_1_152mm, { - translate: pt(0.751, 1.742), rotate: 0, - id: 'jlc_th_th1' -}) -const jlc_th_th2 = board.add(JlcToolingHole_1_152mm, { - translate: pt(0.791, 1.742), rotate: 0, - id: 'jlc_th_th2' -}) -const jlc_th_th3 = board.add(JlcToolingHole_1_152mm, { - translate: pt(0.751, 1.781), rotate: 0, - id: 'jlc_th_th3' -}) -const pwr = board.add(BarrelJack_CUI_PJ_036AH_SMT_Horizontal, { +// jlc_th.th1 +const FH1 = board.add(JlcToolingHole_1_152mm, { + translate: pt(0.739, 1.742), rotate: 0, + id: 'FH1' +}) +// jlc_th.th2 +const FH2 = board.add(JlcToolingHole_1_152mm, { + translate: pt(0.779, 1.742), rotate: 0, + id: 'FH2' +}) +// jlc_th.th3 +const FH3 = board.add(JlcToolingHole_1_152mm, { + translate: pt(0.739, 1.781), rotate: 0, + id: 'FH3' +}) +// pwr +const FJ1 = board.add(BarrelJack_CUI_PJ_036AH_SMT_Horizontal, { translate: pt(1.256, 0.413), rotate: 0, - id: 'pwr' + id: 'FJ1' }) -const tp_pwr_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(2.271, 1.464), rotate: 0, - id: 'tp_pwr_tp' +// tp_pwr.tp +const FTP1 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(2.027, 1.464), rotate: 0, + id: 'FTP1' }) -const tp_gnd_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(0.567, 1.779), rotate: 0, - id: 'tp_gnd_tp' +// tp_gnd.tp +const FTP2 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(2.277, 1.464), rotate: 0, + id: 'FTP2' }) -const reg_5v_ic = board.add(SOT_23_6, { +// reg_5v.ic +const FU1 = board.add(SOT_23_6, { translate: pt(0.301, 0.874), rotate: 0, - id: 'reg_5v_ic' + id: 'FU1' }) -const reg_5v_fb_div_top_res = board.add(R_0603_1608Metric, { +// reg_5v.fb.div.top_res +const FR1 = board.add(R_0603_1608Metric, { translate: pt(0.452, 1.053), rotate: 0, - id: 'reg_5v_fb_div_top_res' + id: 'FR1' }) -const reg_5v_fb_div_bottom_res = board.add(R_0603_1608Metric, { +// reg_5v.fb.div.bottom_res +const FR2 = board.add(R_0603_1608Metric, { translate: pt(0.058, 1.183), rotate: 0, - id: 'reg_5v_fb_div_bottom_res' + id: 'FR2' }) -const reg_5v_hf_in_cap_cap = board.add(C_0603_1608Metric, { +// reg_5v.hf_in_cap.cap +const FC1 = board.add(C_0603_1608Metric, { translate: pt(0.214, 1.183), rotate: 0, - id: 'reg_5v_hf_in_cap_cap' + id: 'FC1' }) -const reg_5v_boot_cap = board.add(C_0603_1608Metric, { +// reg_5v.boot_cap +const FC2 = board.add(C_0603_1608Metric, { translate: pt(0.370, 1.183), rotate: 0, - id: 'reg_5v_boot_cap' + id: 'FC2' }) -const reg_5v_power_path_inductor = board.add(L_Sunlord_SWPA4030S, { +// reg_5v.power_path.inductor +const FL1 = board.add(L_Sunlord_SWPA4030S, { translate: pt(0.091, 0.896), rotate: 0, - id: 'reg_5v_power_path_inductor' + id: 'FL1' }) -const reg_5v_power_path_in_cap_cap = board.add(C_1206_3216Metric, { +// reg_5v.power_path.in_cap.cap +const FC3 = board.add(C_1206_3216Metric, { translate: pt(0.091, 1.070), rotate: 0, - id: 'reg_5v_power_path_in_cap_cap' + id: 'FC3' }) -const reg_5v_power_path_out_cap_cap = board.add(C_0805_2012Metric, { +// reg_5v.power_path.out_cap.cap +const FC4 = board.add(C_0805_2012Metric, { translate: pt(0.287, 1.063), rotate: 0, - id: 'reg_5v_power_path_out_cap_cap' + id: 'FC4' }) -const reg_5v_en_res = board.add(R_0603_1608Metric, { +// reg_5v.en_res +const FR3 = board.add(R_0603_1608Metric, { translate: pt(0.058, 1.280), rotate: 0, - id: 'reg_5v_en_res' + id: 'FR3' }) -const tp_5v_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(0.066, 1.779), rotate: 0, - id: 'tp_5v_tp' +// tp_5v.tp +const FTP3 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(2.528, 1.464), rotate: 0, + id: 'FTP3' }) -const prot_5v_diode = board.add(D_SOD_323, { - translate: pt(2.024, 1.464), rotate: 0, - id: 'prot_5v_diode' +// prot_5v.diode +const FD1 = board.add(D_SOD_323, { + translate: pt(0.063, 1.779), rotate: 0, + id: 'FD1' }) -const reg_3v3_ic = board.add(SOT_89_3, { +// reg_3v3.ic +const FU2 = board.add(SOT_89_3, { translate: pt(2.260, 0.906), rotate: 0, - id: 'reg_3v3_ic' + id: 'FU2' }) -const reg_3v3_in_cap_cap = board.add(C_0603_1608Metric, { +// reg_3v3.in_cap.cap +const FC5 = board.add(C_0603_1608Metric, { translate: pt(2.206, 1.072), rotate: 0, - id: 'reg_3v3_in_cap_cap' + id: 'FC5' }) -const reg_3v3_out_cap_cap = board.add(C_0603_1608Metric, { +// reg_3v3.out_cap.cap +const FC6 = board.add(C_0603_1608Metric, { translate: pt(2.362, 1.072), rotate: 0, - id: 'reg_3v3_out_cap_cap' + id: 'FC6' }) -const tp_3v3_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(0.317, 1.779), rotate: 0, - id: 'tp_3v3_tp' +// tp_3v3.tp +const FTP4 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(0.311, 1.779), rotate: 0, + id: 'FTP4' }) -const prot_3v3_diode = board.add(D_SOD_323, { - translate: pt(2.519, 1.464), rotate: 0, - id: 'prot_3v3_diode' +// prot_3v3.diode +const FD2 = board.add(D_SOD_323, { + translate: pt(0.558, 1.779), rotate: 0, + id: 'FD2' }) -const mcu_ic = board.add(QFN_32_1EP_5x5mm_P0_5mm_EP3_65x3_65mm, { +// mcu.ic +const FU3 = board.add(QFN_32_1EP_5x5mm_P0_5mm_EP3_65x3_65mm, { translate: pt(1.768, 0.122), rotate: 0, - id: 'mcu_ic' + id: 'FU3' }) -const mcu_vdd_bulk_cap_cap = board.add(C_0805_2012Metric, { +// mcu.vdd_bulk_cap.cap +const FC7 = board.add(C_0805_2012Metric, { translate: pt(1.932, 0.322), rotate: 0, - id: 'mcu_vdd_bulk_cap_cap' + id: 'FC7' }) -const mcu_vdda_cap0_cap = board.add(C_0603_1608Metric, { +// mcu.vdda_cap0.cap +const FC8 = board.add(C_0603_1608Metric, { translate: pt(2.096, 0.312), rotate: 0, - id: 'mcu_vdda_cap0_cap' + id: 'FC8' }) -const mcu_vdda_cap1_cap = board.add(C_0603_1608Metric, { +// mcu.vdda_cap1.cap +const FC9 = board.add(C_0603_1608Metric, { translate: pt(2.252, 0.312), rotate: 0, - id: 'mcu_vdda_cap1_cap' + id: 'FC9' }) -const mcu_vddrtc_cap_cap = board.add(C_0603_1608Metric, { +// mcu.vddrtc_cap.cap +const FC10 = board.add(C_0603_1608Metric, { translate: pt(2.408, 0.312), rotate: 0, - id: 'mcu_vddrtc_cap_cap' + id: 'FC10' }) -const mcu_vddcpu_cap_cap = board.add(C_0603_1608Metric, { +// mcu.vddcpu_cap.cap +const FC11 = board.add(C_0603_1608Metric, { translate: pt(1.704, 0.441), rotate: 0, - id: 'mcu_vddcpu_cap_cap' + id: 'FC11' }) -const mcu_vddspi_cap_cap = board.add(C_0603_1608Metric, { +// mcu.vddspi_cap.cap +const FC12 = board.add(C_0603_1608Metric, { translate: pt(1.860, 0.441), rotate: 0, - id: 'mcu_vddspi_cap_cap' + id: 'FC12' }) -const mcu_ant = board.add(D_1206_3216Metric, { +// mcu.ant +const FANT1 = board.add(D_1206_3216Metric, { translate: pt(1.736, 0.328), rotate: 0, - id: 'mcu_ant' + id: 'FANT1' }) -const mcu_pi_c1 = board.add(C_0603_1608Metric, { +// mcu.pi.c1 +const FC13 = board.add(C_0603_1608Metric, { translate: pt(2.016, 0.441), rotate: 0, - id: 'mcu_pi_c1' + id: 'FC13' }) -const mcu_pi_c2 = board.add(C_0603_1608Metric, { +// mcu.pi.c2 +const FC14 = board.add(C_0603_1608Metric, { translate: pt(2.172, 0.441), rotate: 0, - id: 'mcu_pi_c2' + id: 'FC14' }) -const mcu_pi_l = board.add(L_0603_1608Metric, { +// mcu.pi.l +const FL2 = board.add(L_0603_1608Metric, { translate: pt(2.328, 0.441), rotate: 0, - id: 'mcu_pi_l' + id: 'FL2' }) -const mcu_vdd3p3_l_cap_cap = board.add(C_0603_1608Metric, { +// mcu.vdd3p3_l_cap.cap +const FC15 = board.add(C_0603_1608Metric, { translate: pt(1.704, 0.538), rotate: 0, - id: 'mcu_vdd3p3_l_cap_cap' + id: 'FC15' }) -const mcu_vdd3p3_cap_cap = board.add(C_0603_1608Metric, { +// mcu.vdd3p3_cap.cap +const FC16 = board.add(C_0603_1608Metric, { translate: pt(1.860, 0.538), rotate: 0, - id: 'mcu_vdd3p3_cap_cap' + id: 'FC16' }) -const mcu_vdd3p3_l_ind = board.add(L_0603_1608Metric, { +// mcu.vdd3p3_l.ind +const FL3 = board.add(L_0603_1608Metric, { translate: pt(2.016, 0.538), rotate: 0, - id: 'mcu_vdd3p3_l_ind' + id: 'FL3' }) -const mcu_crystal_package = board.add(Crystal_SMD_2520_4Pin_2_5x2_0mm, { +// mcu.crystal.package +const FX1 = board.add(Crystal_SMD_2520_4Pin_2_5x2_0mm, { translate: pt(2.311, 0.059), rotate: 0, - id: 'mcu_crystal_package' + id: 'FX1' }) -const mcu_crystal_cap_a = board.add(C_0603_1608Metric, { +// mcu.crystal.cap_a +const FC17 = board.add(C_0603_1608Metric, { translate: pt(2.172, 0.538), rotate: 0, - id: 'mcu_crystal_cap_a' + id: 'FC17' }) -const mcu_crystal_cap_b = board.add(C_0603_1608Metric, { +// mcu.crystal.cap_b +const FC18 = board.add(C_0603_1608Metric, { translate: pt(2.328, 0.538), rotate: 0, - id: 'mcu_crystal_cap_b' + id: 'FC18' }) -const mcu_prog_conn = board.add(Tag_Connect_TC2030_IDC_NL_2x03_P1_27mm_Vertical, { +// mcu.prog.conn +const FJ2 = board.add(Tag_Connect_TC2030_IDC_NL_2x03_P1_27mm_Vertical, { translate: pt(2.067, 0.079), rotate: 0, - id: 'mcu_prog_conn' + id: 'FJ2' }) -const mcu_en_pull_rc_r = board.add(R_0603_1608Metric, { +// mcu.en_pull.rc.r +const FR4 = board.add(R_0603_1608Metric, { translate: pt(1.704, 0.635), rotate: 0, - id: 'mcu_en_pull_rc_r' + id: 'FR4' }) -const mcu_en_pull_rc_c = board.add(C_0603_1608Metric, { +// mcu.en_pull.rc.c +const FC19 = board.add(C_0603_1608Metric, { translate: pt(1.860, 0.635), rotate: 0, - id: 'mcu_en_pull_rc_c' + id: 'FC19' }) -const ledr_package = board.add(LED_0603_1608Metric, { +// ledr.package +const FD3 = board.add(LED_0603_1608Metric, { translate: pt(1.011, 1.456), rotate: 0, - id: 'ledr_package' + id: 'FD3' }) -const ledr_res = board.add(R_0603_1608Metric, { +// ledr.res +const FR5 = board.add(R_0603_1608Metric, { translate: pt(1.011, 1.553), rotate: 0, - id: 'ledr_res' + id: 'FR5' }) -const enc_package = board.add(RotaryEncoder_Alps_EC11J15_Switch, { +// enc.package +const FSW1 = board.add(RotaryEncoder_Alps_EC11J15_Switch, { translate: pt(0.394, 0.344), rotate: 0, - id: 'enc_package' + id: 'FSW1' }) -const v12_sense_div_top_res = board.add(R_0603_1608Metric, { +// v12_sense.div.top_res +const FR6 = board.add(R_0603_1608Metric, { translate: pt(1.246, 1.456), rotate: 0, - id: 'v12_sense_div_top_res' + id: 'FR6' }) -const v12_sense_div_bottom_res = board.add(R_0603_1608Metric, { +// v12_sense.div.bottom_res +const FR7 = board.add(R_0603_1608Metric, { translate: pt(1.246, 1.552), rotate: 0, - id: 'v12_sense_div_bottom_res' + id: 'FR7' }) -const rgb_ring_led_0_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { +// rgb_ring.led[0] +const FD4 = board.add(LED_SK6812_EC15_1_5x1_5mm, { translate: pt(0.668, 0.846), rotate: 0, - id: 'rgb_ring_led_0_' + id: 'FD4' }) -const rgb_ring_led_1_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { +// rgb_ring.led[1] +const FD5 = board.add(LED_SK6812_EC15_1_5x1_5mm, { translate: pt(0.786, 0.846), rotate: 0, - id: 'rgb_ring_led_1_' + id: 'FD5' }) -const rgb_ring_led_2_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { +// rgb_ring.led[2] +const FD6 = board.add(LED_SK6812_EC15_1_5x1_5mm, { translate: pt(0.904, 0.846), rotate: 0, - id: 'rgb_ring_led_2_' + id: 'FD6' }) -const rgb_ring_led_3_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { +// rgb_ring.led[3] +const FD7 = board.add(LED_SK6812_EC15_1_5x1_5mm, { translate: pt(1.022, 0.846), rotate: 0, - id: 'rgb_ring_led_3_' + id: 'FD7' }) -const rgb_ring_led_4_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { +// rgb_ring.led[4] +const FD8 = board.add(LED_SK6812_EC15_1_5x1_5mm, { translate: pt(1.140, 0.846), rotate: 0, - id: 'rgb_ring_led_4_' + id: 'FD8' }) -const rgb_ring_led_5_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { +// rgb_ring.led[5] +const FD9 = board.add(LED_SK6812_EC15_1_5x1_5mm, { translate: pt(0.668, 0.965), rotate: 0, - id: 'rgb_ring_led_5_' + id: 'FD9' }) -const rgb_ring_led_6_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { +// rgb_ring.led[6] +const FD10 = board.add(LED_SK6812_EC15_1_5x1_5mm, { translate: pt(0.786, 0.965), rotate: 0, - id: 'rgb_ring_led_6_' + id: 'FD10' }) -const rgb_ring_led_7_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { +// rgb_ring.led[7] +const FD11 = board.add(LED_SK6812_EC15_1_5x1_5mm, { translate: pt(0.904, 0.965), rotate: 0, - id: 'rgb_ring_led_7_' + id: 'FD11' }) -const rgb_ring_led_8_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { +// rgb_ring.led[8] +const FD12 = board.add(LED_SK6812_EC15_1_5x1_5mm, { translate: pt(1.022, 0.965), rotate: 0, - id: 'rgb_ring_led_8_' + id: 'FD12' }) -const rgb_ring_led_9_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { +// rgb_ring.led[9] +const FD13 = board.add(LED_SK6812_EC15_1_5x1_5mm, { translate: pt(1.140, 0.965), rotate: 0, - id: 'rgb_ring_led_9_' + id: 'FD13' }) -const rgb_ring_led_10_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { +// rgb_ring.led[10] +const FD14 = board.add(LED_SK6812_EC15_1_5x1_5mm, { translate: pt(0.668, 1.083), rotate: 0, - id: 'rgb_ring_led_10_' + id: 'FD14' }) -const rgb_ring_led_11_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { +// rgb_ring.led[11] +const FD15 = board.add(LED_SK6812_EC15_1_5x1_5mm, { translate: pt(0.786, 1.083), rotate: 0, - id: 'rgb_ring_led_11_' + id: 'FD15' }) -const rgb_ring_led_12_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { +// rgb_ring.led[12] +const FD16 = board.add(LED_SK6812_EC15_1_5x1_5mm, { translate: pt(0.904, 1.083), rotate: 0, - id: 'rgb_ring_led_12_' + id: 'FD16' }) -const rgb_ring_led_13_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { +// rgb_ring.led[13] +const FD17 = board.add(LED_SK6812_EC15_1_5x1_5mm, { translate: pt(1.022, 1.083), rotate: 0, - id: 'rgb_ring_led_13_' + id: 'FD17' }) -const rgb_ring_led_14_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { +// rgb_ring.led[14] +const FD18 = board.add(LED_SK6812_EC15_1_5x1_5mm, { translate: pt(1.140, 1.083), rotate: 0, - id: 'rgb_ring_led_14_' + id: 'FD18' }) -const rgb_ring_led_15_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { +// rgb_ring.led[15] +const FD19 = board.add(LED_SK6812_EC15_1_5x1_5mm, { translate: pt(0.668, 1.201), rotate: 0, - id: 'rgb_ring_led_15_' + id: 'FD19' }) -const rgb_ring_led_16_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { +// rgb_ring.led[16] +const FD20 = board.add(LED_SK6812_EC15_1_5x1_5mm, { translate: pt(0.786, 1.201), rotate: 0, - id: 'rgb_ring_led_16_' + id: 'FD20' }) -const rgb_ring_led_17_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { +// rgb_ring.led[17] +const FD21 = board.add(LED_SK6812_EC15_1_5x1_5mm, { translate: pt(0.904, 1.201), rotate: 0, - id: 'rgb_ring_led_17_' + id: 'FD21' }) -const fan_0_ = board.add(FanPinHeader_1x04_P2_54mm_Vertical, { +// fan[0] +const FJ3 = board.add(FanPinHeader_1x04_P2_54mm_Vertical, { translate: pt(0.069, 1.576), rotate: 0, - id: 'fan_0_' + id: 'FJ3' }) -const fan_drv_0__pre = board.add(SOT_23, { - translate: pt(1.798, 1.126), rotate: 0, - id: 'fan_drv_0__pre' +// fan_drv[0].pre +const FQ1 = board.add(SOT_23, { + translate: pt(1.373, 1.126), rotate: 0, + id: 'FQ1' }) -const fan_drv_0__pull = board.add(R_0603_1608Metric, { - translate: pt(1.972, 1.088), rotate: 0, - id: 'fan_drv_0__pull' +// fan_drv[0].pull +const FR8 = board.add(R_0603_1608Metric, { + translate: pt(1.546, 1.088), rotate: 0, + id: 'FR8' }) -const fan_drv_0__drv = board.add(SOIC_8_3_9x4_9mm_P1_27mm, { - translate: pt(1.869, 0.913), rotate: 0, - id: 'fan_drv_0__drv' +// fan_drv[0].drv +const FQ2 = board.add(SOIC_8_3_9x4_9mm_P1_27mm, { + translate: pt(1.443, 0.913), rotate: 0, + id: 'FQ2' }) -const fan_ctl_0__drv = board.add(SOT_23, { +// fan_ctl[0].drv +const FQ3 = board.add(SOT_23, { translate: pt(1.498, 1.494), rotate: 0, - id: 'fan_ctl_0__drv' + id: 'FQ3' }) -const fan_1_ = board.add(FanPinHeader_1x04_P2_54mm_Vertical, { +// fan[1] +const FJ4 = board.add(FanPinHeader_1x04_P2_54mm_Vertical, { translate: pt(0.545, 1.576), rotate: 0, - id: 'fan_1_' + id: 'FJ4' }) -const fan_drv_1__pre = board.add(SOT_23, { - translate: pt(1.373, 1.126), rotate: 0, - id: 'fan_drv_1__pre' +// fan_drv[1].pre +const FQ4 = board.add(SOT_23, { + translate: pt(1.798, 1.126), rotate: 0, + id: 'FQ4' }) -const fan_drv_1__pull = board.add(R_0603_1608Metric, { - translate: pt(1.546, 1.088), rotate: 0, - id: 'fan_drv_1__pull' +// fan_drv[1].pull +const FR9 = board.add(R_0603_1608Metric, { + translate: pt(1.972, 1.088), rotate: 0, + id: 'FR9' }) -const fan_drv_1__drv = board.add(SOIC_8_3_9x4_9mm_P1_27mm, { - translate: pt(1.443, 0.913), rotate: 0, - id: 'fan_drv_1__drv' +// fan_drv[1].drv +const FQ5 = board.add(SOIC_8_3_9x4_9mm_P1_27mm, { + translate: pt(1.869, 0.913), rotate: 0, + id: 'FQ5' }) -const fan_ctl_1__drv = board.add(SOT_23, { +// fan_ctl[1].drv +const FQ6 = board.add(SOT_23, { translate: pt(1.767, 1.494), rotate: 0, - id: 'fan_ctl_1__drv' + id: 'FQ6' }) +board.setNetlist([ + {name: "Fv12", pads: [["FJ1", "1"], ["FTP1", "1"], ["FU1", "3"], ["FR8", "1"], ["FQ2", "1"], ["FQ2", "2"], ["FQ2", "3"], ["FR9", "1"], ["FQ5", "1"], ["FQ5", "2"], ["FQ5", "3"], ["FR6", "1"], ["FR3", "1"], ["FC1", "1"], ["FC3", "1"]]}, + {name: "Fgnd", pads: [["FJ1", "2"], ["FJ3", "1"], ["FJ4", "1"], ["FTP2", "1"], ["FU1", "1"], ["FD1", "2"], ["FU2", "1"], ["FD2", "2"], ["FU3", "33"], ["FSW1", "C"], ["FSW1", "S2"], ["FD4", "4"], ["FD5", "4"], ["FD6", "4"], ["FD7", "4"], ["FD8", "4"], ["FD9", "4"], ["FD10", "4"], ["FD11", "4"], ["FD12", "4"], ["FD13", "4"], ["FD14", "4"], ["FD15", "4"], ["FD16", "4"], ["FD17", "4"], ["FD18", "4"], ["FD19", "4"], ["FD20", "4"], ["FD21", "4"], ["FQ1", "2"], ["FQ3", "2"], ["FQ4", "2"], ["FQ6", "2"], ["FR7", "2"], ["FC1", "2"], ["FC5", "2"], ["FC6", "2"], ["FC7", "2"], ["FC8", "2"], ["FC9", "2"], ["FC10", "2"], ["FC11", "2"], ["FC12", "2"], ["FC15", "2"], ["FC16", "2"], ["FX1", "2"], ["FX1", "4"], ["FJ2", "5"], ["FR2", "2"], ["FC19", "2"], ["FC13", "2"], ["FC14", "2"], ["FC17", "2"], ["FC18", "2"], ["FC3", "2"], ["FC4", "2"]]}, + {name: "Fv5", pads: [["FTP3", "1"], ["FD1", "1"], ["FU2", "2"], ["FD4", "2"], ["FD5", "2"], ["FD6", "2"], ["FD7", "2"], ["FD8", "2"], ["FD9", "2"], ["FD10", "2"], ["FD11", "2"], ["FD12", "2"], ["FD13", "2"], ["FD14", "2"], ["FD15", "2"], ["FD16", "2"], ["FD17", "2"], ["FD18", "2"], ["FD19", "2"], ["FD20", "2"], ["FD21", "2"], ["FR1", "1"], ["FC5", "1"], ["FL1", "2"], ["FC4", "1"]]}, + {name: "Fv3v3", pads: [["FU2", "3"], ["FTP4", "1"], ["FD2", "1"], ["FU3", "31"], ["FU3", "32"], ["FU3", "11"], ["FU3", "17"], ["FU3", "18"], ["FD3", "2"], ["FC6", "1"], ["FU3", "14"], ["FC7", "1"], ["FC8", "1"], ["FC9", "1"], ["FC10", "1"], ["FC11", "1"], ["FC12", "1"], ["FC15", "1"], ["FL3", "1"], ["FJ2", "1"], ["FR4", "1"]]}, + {name: "Fmcu.program_boot_node", pads: [["FR5", "2"], ["FU3", "15"], ["FJ2", "2"]]}, + {name: "Fenc.a", pads: [["FU3", "26"], ["FSW1", "A"]]}, + {name: "Fenc.b", pads: [["FU3", "16"], ["FSW1", "B"]]}, + {name: "Fenc.sw", pads: [["FU3", "25"], ["FSW1", "S1"]]}, + {name: "Fv12_sense.output", pads: [["FU3", "4"], ["FR6", "2"], ["FR7", "1"]]}, + {name: "Frgb_ring.din", pads: [["FU3", "6"], ["FD4", "1"]]}, + {name: "Ffan[0].pwr", pads: [["FJ3", "2"], ["FQ2", "5"], ["FQ2", "6"], ["FQ2", "7"], ["FQ2", "8"]]}, + {name: "Ffan_drv[0].control", pads: [["FU3", "5"], ["FQ1", "1"]]}, + {name: "Ffan[0].sense", pads: [["FJ3", "3"], ["FU3", "9"]]}, + {name: "Ffan_ctl[0].control", pads: [["FU3", "8"], ["FQ3", "1"]]}, + {name: "Ffan_ctl[0].output", pads: [["FJ3", "4"], ["FQ3", "3"]]}, + {name: "Ffan[1].pwr", pads: [["FJ4", "2"], ["FQ5", "5"], ["FQ5", "6"], ["FQ5", "7"], ["FQ5", "8"]]}, + {name: "Ffan_drv[1].control", pads: [["FU3", "10"], ["FQ4", "1"]]}, + {name: "Ffan[1].sense", pads: [["FJ4", "3"], ["FU3", "12"]]}, + {name: "Ffan_ctl[1].control", pads: [["FU3", "13"], ["FQ6", "1"]]}, + {name: "Ffan_ctl[1].output", pads: [["FJ4", "4"], ["FQ6", "3"]]}, + {name: "Freg_5v.fb.output", pads: [["FU1", "4"], ["FR1", "2"], ["FR2", "1"]]}, + {name: "Freg_5v.boot_cap.neg", pads: [["FC2", "2"], ["FU1", "2"], ["FL1", "1"]]}, + {name: "Freg_5v.boot_cap.pos", pads: [["FC2", "1"], ["FU1", "6"]]}, + {name: "Freg_5v.en_res.b", pads: [["FR3", "2"], ["FU1", "5"]]}, + {name: "Fmcu.xtal_node.xi", pads: [["FU3", "30"], ["FX1", "1"], ["FC17", "1"]]}, + {name: "Fmcu.xtal_node.xo", pads: [["FU3", "29"], ["FX1", "3"], ["FC18", "1"]]}, + {name: "Fmcu.program_uart_node.a_tx", pads: [["FU3", "28"], ["FJ2", "3"]]}, + {name: "Fmcu.program_uart_node.b_tx", pads: [["FU3", "27"], ["FJ2", "4"]]}, + {name: "Fmcu.program_en_node", pads: [["FU3", "7"], ["FJ2", "6"], ["FR4", "2"], ["FC19", "1"]]}, + {name: "Fmcu.ic.lna_in", pads: [["FU3", "1"], ["FC13", "1"], ["FL2", "1"]]}, + {name: "Fmcu.pi.output", pads: [["FANT1", "1"], ["FL2", "2"], ["FC14", "1"]]}, + {name: "Fmcu.ic.vdd3p3", pads: [["FU3", "2"], ["FU3", "3"], ["FL3", "2"], ["FC16", "1"]]}, + {name: "Fledr.res.a", pads: [["FR5", "1"], ["FD3", "1"]]}, + {name: "Frgb_ring.led[0].dout", pads: [["FD4", "3"], ["FD5", "1"]]}, + {name: "Frgb_ring.led[1].dout", pads: [["FD5", "3"], ["FD6", "1"]]}, + {name: "Frgb_ring.led[2].dout", pads: [["FD6", "3"], ["FD7", "1"]]}, + {name: "Frgb_ring.led[3].dout", pads: [["FD7", "3"], ["FD8", "1"]]}, + {name: "Frgb_ring.led[4].dout", pads: [["FD8", "3"], ["FD9", "1"]]}, + {name: "Frgb_ring.led[5].dout", pads: [["FD9", "3"], ["FD10", "1"]]}, + {name: "Frgb_ring.led[6].dout", pads: [["FD10", "3"], ["FD11", "1"]]}, + {name: "Frgb_ring.led[7].dout", pads: [["FD11", "3"], ["FD12", "1"]]}, + {name: "Frgb_ring.led[8].dout", pads: [["FD12", "3"], ["FD13", "1"]]}, + {name: "Frgb_ring.led[9].dout", pads: [["FD13", "3"], ["FD14", "1"]]}, + {name: "Frgb_ring.led[10].dout", pads: [["FD14", "3"], ["FD15", "1"]]}, + {name: "Frgb_ring.led[11].dout", pads: [["FD15", "3"], ["FD16", "1"]]}, + {name: "Frgb_ring.led[12].dout", pads: [["FD16", "3"], ["FD17", "1"]]}, + {name: "Frgb_ring.led[13].dout", pads: [["FD17", "3"], ["FD18", "1"]]}, + {name: "Frgb_ring.led[14].dout", pads: [["FD18", "3"], ["FD19", "1"]]}, + {name: "Frgb_ring.led[15].dout", pads: [["FD19", "3"], ["FD20", "1"]]}, + {name: "Frgb_ring.led[16].dout", pads: [["FD20", "3"], ["FD21", "1"]]}, + {name: "Frgb_ring.dout", pads: [["FD21", "3"]]}, + {name: "Ffan_drv[0].pre.drain", pads: [["FQ1", "3"], ["FR8", "2"], ["FQ2", "4"]]}, + {name: "Ffan_drv[1].pre.drain", pads: [["FQ4", "3"], ["FR9", "2"], ["FQ5", "4"]]} +]) + const limit0 = pt(-0.07874015748031496, -0.07874015748031496); -const limit1 = pt(2.7001968503937013, 1.9346456692913387); +const limit1 = pt(2.7120078740157485, 1.9346456692913387); const xMin = Math.min(limit0[0], limit1[0]); const xMax = Math.max(limit0[0], limit1[0]); const yMin = Math.min(limit0[1], limit1[1]); diff --git a/examples/IotIron/IotIron.svgpcb.js b/examples/IotIron/IotIron.svgpcb.js index 71a6f5cc7..283bcb4f0 100644 --- a/examples/IotIron/IotIron.svgpcb.js +++ b/examples/IotIron/IotIron.svgpcb.js @@ -1,382 +1,539 @@ const board = new PCB(); -const jlc_th_th1 = board.add(JlcToolingHole_1_152mm, { +// jlc_th.th1 +const IH1 = board.add(JlcToolingHole_1_152mm, { translate: pt(3.408, 3.059), rotate: 0, - id: 'jlc_th_th1' + id: 'IH1' }) -const jlc_th_th2 = board.add(JlcToolingHole_1_152mm, { +// jlc_th.th2 +const IH2 = board.add(JlcToolingHole_1_152mm, { translate: pt(3.448, 3.059), rotate: 0, - id: 'jlc_th_th2' + id: 'IH2' }) -const jlc_th_th3 = board.add(JlcToolingHole_1_152mm, { +// jlc_th.th3 +const IH3 = board.add(JlcToolingHole_1_152mm, { translate: pt(3.408, 3.099), rotate: 0, - id: 'jlc_th_th3' + id: 'IH3' }) -const usb_conn = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { +// usb.conn +const IJ1 = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { translate: pt(3.321, 1.905), rotate: 0, - id: 'usb_conn' + id: 'IJ1' }) -const tp_pwr_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(1.068, 3.097), rotate: 0, - id: 'tp_pwr_tp' +// tp_pwr.tp +const ITP1 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(0.066, 3.097), rotate: 0, + id: 'ITP1' }) -const tp_gnd_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(0.817, 3.097), rotate: 0, - id: 'tp_gnd_tp' +// tp_gnd.tp +const ITP2 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(0.317, 3.097), rotate: 0, + id: 'ITP2' }) -const reg_3v3_ic = board.add(SOT_23_6, { +// reg_3v3.ic +const IU1 = board.add(SOT_23_6, { translate: pt(2.331, 1.807), rotate: 0, - id: 'reg_3v3_ic' + id: 'IU1' }) -const reg_3v3_fb_div_top_res = board.add(R_0603_1608Metric, { +// reg_3v3.fb.div.top_res +const IR1 = board.add(R_0603_1608Metric, { translate: pt(2.049, 2.156), rotate: 0, - id: 'reg_3v3_fb_div_top_res' + id: 'IR1' }) -const reg_3v3_fb_div_bottom_res = board.add(R_0603_1608Metric, { +// reg_3v3.fb.div.bottom_res +const IR2 = board.add(R_0603_1608Metric, { translate: pt(2.205, 2.156), rotate: 0, - id: 'reg_3v3_fb_div_bottom_res' + id: 'IR2' }) -const reg_3v3_hf_in_cap_cap = board.add(C_0603_1608Metric, { +// reg_3v3.hf_in_cap.cap +const IC1 = board.add(C_0603_1608Metric, { translate: pt(2.361, 2.156), rotate: 0, - id: 'reg_3v3_hf_in_cap_cap' + id: 'IC1' }) -const reg_3v3_boot_cap = board.add(C_0603_1608Metric, { +// reg_3v3.boot_cap +const IC2 = board.add(C_0603_1608Metric, { translate: pt(2.517, 2.156), rotate: 0, - id: 'reg_3v3_boot_cap' + id: 'IC2' }) -const reg_3v3_power_path_inductor = board.add(L_Sunlord_SWPA5040S, { +// reg_3v3.power_path.inductor +const IL1 = board.add(L_Sunlord_SWPA5040S, { translate: pt(2.101, 1.849), rotate: 0, - id: 'reg_3v3_power_path_inductor' + id: 'IL1' }) -const reg_3v3_power_path_in_cap_cap_c_0_ = board.add(C_1206_3216Metric, { +// reg_3v3.power_path.in_cap.cap.c[0] +const IC3 = board.add(C_1206_3216Metric, { translate: pt(2.081, 2.042), rotate: 0, - id: 'reg_3v3_power_path_in_cap_cap_c_0_' + id: 'IC3' }) -const reg_3v3_power_path_in_cap_cap_c_1_ = board.add(C_1206_3216Metric, { +// reg_3v3.power_path.in_cap.cap.c[1] +const IC4 = board.add(C_1206_3216Metric, { translate: pt(2.302, 2.042), rotate: 0, - id: 'reg_3v3_power_path_in_cap_cap_c_1_' + id: 'IC4' }) -const reg_3v3_power_path_out_cap_cap = board.add(C_0805_2012Metric, { +// reg_3v3.power_path.out_cap.cap +const IC5 = board.add(C_0805_2012Metric, { translate: pt(2.498, 2.035), rotate: 0, - id: 'reg_3v3_power_path_out_cap_cap' + id: 'IC5' }) -const reg_3v3_en_res = board.add(R_0603_1608Metric, { +// reg_3v3.en_res +const IR3 = board.add(R_0603_1608Metric, { translate: pt(2.049, 2.252), rotate: 0, - id: 'reg_3v3_en_res' + id: 'IR3' }) -const tp_3v3_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(1.813, 3.097), rotate: 0, - id: 'tp_3v3_tp' +// tp_3v3.tp +const ITP3 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(0.567, 3.097), rotate: 0, + id: 'ITP3' }) -const prot_3v3_diode = board.add(D_SOD_323, { - translate: pt(1.315, 3.097), rotate: 0, - id: 'prot_3v3_diode' +// prot_3v3.diode +const ID1 = board.add(D_SOD_323, { + translate: pt(0.815, 3.097), rotate: 0, + id: 'ID1' }) -const reg_gate_ic = board.add(SOT_89_3, { +// reg_gate.ic +const IU2 = board.add(SOT_89_3, { translate: pt(3.761, 1.839), rotate: 0, - id: 'reg_gate_ic' + id: 'IU2' }) -const reg_gate_in_cap_cap = board.add(C_0805_2012Metric, { +// reg_gate.in_cap.cap +const IC6 = board.add(C_0805_2012Metric, { translate: pt(3.716, 2.015), rotate: 0, - id: 'reg_gate_in_cap_cap' + id: 'IC6' }) -const reg_gate_out_cap_cap = board.add(C_0603_1608Metric, { +// reg_gate.out_cap.cap +const IC7 = board.add(C_0603_1608Metric, { translate: pt(3.880, 2.005), rotate: 0, - id: 'reg_gate_out_cap_cap' + id: 'IC7' }) -const tp_gate_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(0.066, 3.097), rotate: 0, - id: 'tp_gate_tp' +// tp_gate.tp +const ITP4 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(1.062, 3.097), rotate: 0, + id: 'ITP4' }) -const mcu_ic = board.add(ESP32_S3_WROOM_1, { +// mcu.ic +const IU3 = board.add(ESP32_S3_WROOM_1, { translate: pt(0.945, 0.530), rotate: 0, - id: 'mcu_ic' + id: 'IU3' }) -const mcu_vcc_cap0_cap = board.add(C_1206_3216Metric, { +// mcu.vcc_cap0.cap +const IC8 = board.add(C_1206_3216Metric, { translate: pt(2.020, 0.242), rotate: 0, - id: 'mcu_vcc_cap0_cap' + id: 'IC8' }) -const mcu_vcc_cap1_cap = board.add(C_0603_1608Metric, { +// mcu.vcc_cap1.cap +const IC9 = board.add(C_0603_1608Metric, { translate: pt(2.208, 0.226), rotate: 0, - id: 'mcu_vcc_cap1_cap' + id: 'IC9' }) -const mcu_prog_conn = board.add(Tag_Connect_TC2030_IDC_NL_2x03_P1_27mm_Vertical, { +// mcu.prog.conn +const IJ2 = board.add(Tag_Connect_TC2030_IDC_NL_2x03_P1_27mm_Vertical, { translate: pt(2.067, 0.079), rotate: 0, - id: 'mcu_prog_conn' + id: 'IJ2' }) -const mcu_en_pull_rc_r = board.add(R_0603_1608Metric, { +// mcu.en_pull.rc.r +const IR4 = board.add(R_0603_1608Metric, { translate: pt(1.987, 0.356), rotate: 0, - id: 'mcu_en_pull_rc_r' + id: 'IR4' }) -const mcu_en_pull_rc_c = board.add(C_0603_1608Metric, { +// mcu.en_pull.rc.c +const IC10 = board.add(C_0603_1608Metric, { translate: pt(2.143, 0.356), rotate: 0, - id: 'mcu_en_pull_rc_c' + id: 'IC10' }) -const i2c_pull_scl_res_res = board.add(R_0603_1608Metric, { - translate: pt(2.880, 2.661), rotate: 0, - id: 'i2c_pull_scl_res_res' +// i2c_pull.scl_res.res +const IR5 = board.add(R_0603_1608Metric, { + translate: pt(2.176, 2.661), rotate: 0, + id: 'IR5' }) -const i2c_pull_sda_res_res = board.add(R_0603_1608Metric, { - translate: pt(2.880, 2.757), rotate: 0, - id: 'i2c_pull_sda_res_res' +// i2c_pull.sda_res.res +const IR6 = board.add(R_0603_1608Metric, { + translate: pt(2.176, 2.757), rotate: 0, + id: 'IR6' }) -const pd_ic = board.add(WQFN_14_1EP_2_5x2_5mm_P0_5mm_EP1_45x1_45mm, { +// pd.ic +const IU4 = board.add(WQFN_14_1EP_2_5x2_5mm_P0_5mm_EP1_45x1_45mm, { translate: pt(0.890, 2.705), rotate: 0, - id: 'pd_ic' + id: 'IU4' }) -const pd_vdd_cap_0__cap = board.add(C_0603_1608Metric, { +// pd.vdd_cap[0].cap +const IC11 = board.add(C_0603_1608Metric, { translate: pt(1.049, 2.846), rotate: 0, - id: 'pd_vdd_cap_0__cap' + id: 'IC11' }) -const pd_vdd_cap_1__cap = board.add(C_0805_2012Metric, { +// pd.vdd_cap[1].cap +const IC12 = board.add(C_0805_2012Metric, { translate: pt(0.884, 2.856), rotate: 0, - id: 'pd_vdd_cap_1__cap' + id: 'IC12' }) -const usb_esd = board.add(SOT_23, { +// usb_esd +const IU5 = board.add(SOT_23, { translate: pt(3.293, 3.126), rotate: 0, - id: 'usb_esd' + id: 'IU5' }) -const vusb_sense_div_top_res = board.add(R_0603_1608Metric, { - translate: pt(3.818, 2.661), rotate: 0, - id: 'vusb_sense_div_top_res' +// vusb_sense.div.top_res +const IR7 = board.add(R_0603_1608Metric, { + translate: pt(2.410, 2.661), rotate: 0, + id: 'IR7' }) -const vusb_sense_div_bottom_res = board.add(R_0603_1608Metric, { - translate: pt(3.818, 2.757), rotate: 0, - id: 'vusb_sense_div_bottom_res' +// vusb_sense.div.bottom_res +const IR8 = board.add(R_0603_1608Metric, { + translate: pt(2.410, 2.757), rotate: 0, + id: 'IR8' }) -const temp_ic = board.add(WSON_6_1EP_3x3mm_P0_95mm, { +// temp.ic +const IU6 = board.add(WSON_6_1EP_3x3mm_P0_95mm, { translate: pt(1.300, 2.705), rotate: 0, - id: 'temp_ic' + id: 'IU6' }) -const temp_vdd_cap_cap = board.add(C_0603_1608Metric, { +// temp.vdd_cap.cap +const IC13 = board.add(C_0603_1608Metric, { translate: pt(1.283, 2.846), rotate: 0, - id: 'temp_vdd_cap_cap' + id: 'IC13' }) -const enc_package = board.add(RotaryEncoder_Alps_EC11J15_Switch, { +// enc.package +const ISW1 = board.add(RotaryEncoder_Alps_EC11J15_Switch, { translate: pt(1.479, 2.085), rotate: 0, - id: 'enc_package' + id: 'ISW1' }) -const oled_device_conn = board.add(Hirose_FH12_30S_0_5SH_1x30_1MP_P0_50mm_Horizontal, { +// oled.device.conn +const IJ3 = board.add(Hirose_FH12_30S_0_5SH_1x30_1MP_P0_50mm_Horizontal, { translate: pt(2.800, 1.054), rotate: 0, - id: 'oled_device_conn' + id: 'IJ3' }) -const oled_lcd = board.add(Lcd_Er_Oled0_96_1_1_Outline, { +// oled.lcd +const IU7 = board.add(Lcd_Er_Oled0_96_1_1_Outline, { translate: pt(2.910, 0.516), rotate: 0, - id: 'oled_lcd' + id: 'IU7' }) -const oled_c1_cap = board.add(C_0603_1608Metric, { +// oled.c1_cap +const IC14 = board.add(C_0603_1608Metric, { translate: pt(3.659, 0.889), rotate: 0, - id: 'oled_c1_cap' + id: 'IC14' }) -const oled_c2_cap = board.add(C_0603_1608Metric, { +// oled.c2_cap +const IC15 = board.add(C_0603_1608Metric, { translate: pt(3.815, 0.889), rotate: 0, - id: 'oled_c2_cap' + id: 'IC15' }) -const oled_iref_res = board.add(R_0603_1608Metric, { +// oled.iref_res +const IR9 = board.add(R_0603_1608Metric, { translate: pt(3.313, 1.006), rotate: 0, - id: 'oled_iref_res' + id: 'IR9' }) -const oled_vcomh_cap_cap = board.add(C_0805_2012Metric, { +// oled.vcomh_cap.cap +const IC16 = board.add(C_0805_2012Metric, { translate: pt(3.321, 0.899), rotate: 0, - id: 'oled_vcomh_cap_cap' + id: 'IC16' }) -const oled_vdd_cap1_cap = board.add(C_0603_1608Metric, { +// oled.vdd_cap1.cap +const IC17 = board.add(C_0603_1608Metric, { translate: pt(3.469, 1.006), rotate: 0, - id: 'oled_vdd_cap1_cap' + id: 'IC17' }) -const oled_vbat_cap_cap = board.add(C_0603_1608Metric, { +// oled.vbat_cap.cap +const IC18 = board.add(C_0603_1608Metric, { translate: pt(3.624, 1.006), rotate: 0, - id: 'oled_vbat_cap_cap' + id: 'IC18' }) -const oled_vcc_cap_cap = board.add(C_0805_2012Metric, { +// oled.vcc_cap.cap +const IC19 = board.add(C_0805_2012Metric, { translate: pt(3.494, 0.899), rotate: 0, - id: 'oled_vcc_cap_cap' + id: 'IC19' }) -const spk_drv_ic = board.add(QFN_16_1EP_3x3mm_P0_5mm_EP1_45x1_45mm, { +// spk_drv.ic +const IU8 = board.add(QFN_16_1EP_3x3mm_P0_5mm_EP1_45x1_45mm, { translate: pt(0.493, 2.716), rotate: 0, - id: 'spk_drv_ic' + id: 'IU8' }) -const spk_drv_pwr_cap0_cap = board.add(C_0603_1608Metric, { +// spk_drv.pwr_cap0.cap +const IC20 = board.add(C_0603_1608Metric, { translate: pt(0.641, 2.868), rotate: 0, - id: 'spk_drv_pwr_cap0_cap' + id: 'IC20' }) -const spk_drv_pwr_cap1_cap = board.add(C_0805_2012Metric, { +// spk_drv.pwr_cap1.cap +const IC21 = board.add(C_0805_2012Metric, { translate: pt(0.476, 2.878), rotate: 0, - id: 'spk_drv_pwr_cap1_cap' + id: 'IC21' }) -const spk_conn = board.add(JST_PH_B2B_PH_K_1x02_P2_00mm_Vertical, { +// spk.conn +const IJ4 = board.add(JST_PH_B2B_PH_K_1x02_P2_00mm_Vertical, { translate: pt(1.589, 2.762), rotate: 0, - id: 'spk_conn' + id: 'IJ4' }) -const ledr_package = board.add(LED_0603_1608Metric, { +// ledr.package +const ID2 = board.add(LED_0603_1608Metric, { translate: pt(1.941, 2.661), rotate: 0, - id: 'ledr_package' + id: 'ID2' }) -const ledr_res = board.add(R_0603_1608Metric, { +// ledr.res +const IR10 = board.add(R_0603_1608Metric, { translate: pt(1.941, 2.758), rotate: 0, - id: 'ledr_res' + id: 'IR10' }) -const conv_power_path_inductor = board.add(L_TDK_SLF12575, { +// conv.power_path.inductor +const IL2 = board.add(L_TDK_SLF12575, { translate: pt(0.280, 1.996), rotate: 0, - id: 'conv_power_path_inductor' + id: 'IL2' }) -const conv_power_path_in_cap_cap_c_0_ = board.add(C_0805_2012Metric, { +// conv.power_path.in_cap.cap.c[0] +const IC22 = board.add(C_0805_2012Metric, { translate: pt(0.398, 2.340), rotate: 0, - id: 'conv_power_path_in_cap_cap_c_0_' + id: 'IC22' }) -const conv_power_path_in_cap_cap_c_1_ = board.add(C_0805_2012Metric, { +// conv.power_path.in_cap.cap.c[1] +const IC23 = board.add(C_0805_2012Metric, { translate: pt(0.571, 2.340), rotate: 0, - id: 'conv_power_path_in_cap_cap_c_1_' + id: 'IC23' }) -const conv_power_path_out_cap_cap = board.add(C_0805_2012Metric, { +// conv.power_path.out_cap.cap +const IC24 = board.add(C_0805_2012Metric, { translate: pt(0.744, 2.340), rotate: 0, - id: 'conv_power_path_out_cap_cap' + id: 'IC24' }) -const conv_sw_driver_ic = board.add(SOIC_8_3_9x4_9mm_P1_27mm, { +// conv.sw.driver.ic +const IU9 = board.add(SOIC_8_3_9x4_9mm_P1_27mm, { translate: pt(0.744, 1.846), rotate: 0, - id: 'conv_sw_driver_ic' + id: 'IU9' }) -const conv_sw_driver_cap_cap = board.add(C_0603_1608Metric, { +// conv.sw.driver.cap.cap +const IC25 = board.add(C_0603_1608Metric, { translate: pt(0.909, 2.330), rotate: 0, - id: 'conv_sw_driver_cap_cap' + id: 'IC25' }) -const conv_sw_driver_boot_cap_cap = board.add(C_0603_1608Metric, { +// conv.sw.driver.boot_cap.cap +const IC26 = board.add(C_0603_1608Metric, { translate: pt(0.389, 2.446), rotate: 0, - id: 'conv_sw_driver_boot_cap_cap' + id: 'IC26' }) -const conv_sw_low_fet = board.add(SOIC_8_3_9x4_9mm_P1_27mm, { +// conv.sw.low_fet +const IQ1 = board.add(SOIC_8_3_9x4_9mm_P1_27mm, { translate: pt(0.744, 2.098), rotate: 0, - id: 'conv_sw_low_fet' + id: 'IQ1' }) -const conv_sw_low_gate_res = board.add(R_0603_1608Metric, { +// conv.sw.low_gate_res +const IR11 = board.add(R_0603_1608Metric, { translate: pt(0.545, 2.446), rotate: 0, - id: 'conv_sw_low_gate_res' + id: 'IR11' }) -const conv_sw_high_fet = board.add(SOIC_8_3_9x4_9mm_P1_27mm, { +// conv.sw.high_fet +const IQ2 = board.add(SOIC_8_3_9x4_9mm_P1_27mm, { translate: pt(0.146, 2.407), rotate: 0, - id: 'conv_sw_high_fet' + id: 'IQ2' }) -const conv_sw_high_gate_res = board.add(R_0603_1608Metric, { +// conv.sw.high_gate_res +const IR12 = board.add(R_0603_1608Metric, { translate: pt(0.701, 2.446), rotate: 0, - id: 'conv_sw_high_gate_res' + id: 'IR12' }) -const tp_conv_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(2.314, 3.097), rotate: 0, - id: 'tp_conv_tp' +// tp_conv.tp +const ITP5 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(1.312, 3.097), rotate: 0, + id: 'ITP5' }) -const low_pull_res = board.add(R_0603_1608Metric, { +// low_pull.res +const IR13 = board.add(R_0603_1608Metric, { translate: pt(2.807, 3.088), rotate: 0, - id: 'low_pull_res' + id: 'IR13' }) -const low_rc_rc_r = board.add(R_0603_1608Metric, { - translate: pt(2.176, 2.661), rotate: 0, - id: 'low_rc_rc_r' +// low_rc.rc.r +const IR14 = board.add(R_0603_1608Metric, { + translate: pt(2.645, 2.661), rotate: 0, + id: 'IR14' }) -const low_rc_rc_c = board.add(C_0603_1608Metric, { - translate: pt(2.176, 2.757), rotate: 0, - id: 'low_rc_rc_c' +// low_rc.rc.c +const IC27 = board.add(C_0603_1608Metric, { + translate: pt(2.645, 2.757), rotate: 0, + id: 'IC27' }) -const high_pull_res = board.add(R_0603_1608Metric, { +// high_pull.res +const IR15 = board.add(R_0603_1608Metric, { translate: pt(3.041, 3.088), rotate: 0, - id: 'high_pull_res' + id: 'IR15' }) -const high_rc_rc_r = board.add(R_0603_1608Metric, { - translate: pt(3.114, 2.661), rotate: 0, - id: 'high_rc_rc_r' +// high_rc.rc.r +const IR16 = board.add(R_0603_1608Metric, { + translate: pt(2.880, 2.661), rotate: 0, + id: 'IR16' }) -const high_rc_rc_c = board.add(C_0603_1608Metric, { - translate: pt(3.114, 2.757), rotate: 0, - id: 'high_rc_rc_c' +// high_rc.rc.c +const IC28 = board.add(C_0603_1608Metric, { + translate: pt(2.880, 2.757), rotate: 0, + id: 'IC28' }) -const tp_pwm_l_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(2.063, 3.097), rotate: 0, - id: 'tp_pwm_l_tp' +// tp_pwm_l.tp +const ITP6 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(1.563, 3.097), rotate: 0, + id: 'ITP6' }) -const tp_pwm_h_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(2.564, 3.097), rotate: 0, - id: 'tp_pwm_h_tp' +// tp_pwm_h.tp +const ITP7 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(1.813, 3.097), rotate: 0, + id: 'ITP7' }) -const touch_sink = board.add(Symbol_DucklingSolid, { +// touch_sink +const IU10 = board.add(Symbol_DucklingSolid, { translate: pt(3.566, 3.059), rotate: 0, - id: 'touch_sink' + id: 'IU10' }) -const iron_conn = board.add(PinHeader_1x03_P2_54mm_Vertical, { +// iron.conn +const IJ5 = board.add(PinHeader_1x03_P2_54mm_Vertical, { translate: pt(2.764, 2.010), rotate: 0, - id: 'iron_conn' + id: 'IJ5' }) -const iron_isense_res_res_res = board.add(R_2512_6332Metric, { +// iron.isense_res.res.res +const IR17 = board.add(R_2512_6332Metric, { translate: pt(2.843, 2.196), rotate: 0, - id: 'iron_isense_res_res_res' + id: 'IR17' }) -const vsense_div_top_res = board.add(R_0603_1608Metric, { - translate: pt(2.410, 2.661), rotate: 0, - id: 'vsense_div_top_res' +// vsense.div.top_res +const IR18 = board.add(R_0603_1608Metric, { + translate: pt(3.114, 2.661), rotate: 0, + id: 'IR18' }) -const vsense_div_bottom_res = board.add(R_0603_1608Metric, { - translate: pt(2.410, 2.757), rotate: 0, - id: 'vsense_div_bottom_res' +// vsense.div.bottom_res +const IR19 = board.add(R_0603_1608Metric, { + translate: pt(3.114, 2.757), rotate: 0, + id: 'IR19' }) -const tp_v_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(0.317, 3.097), rotate: 0, - id: 'tp_v_tp' +// tp_v.tp +const ITP8 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(2.063, 3.097), rotate: 0, + id: 'ITP8' }) -const vfilt_rc_r = board.add(R_0603_1608Metric, { - translate: pt(3.584, 2.661), rotate: 0, - id: 'vfilt_rc_r' +// vfilt.rc.r +const IR20 = board.add(R_0603_1608Metric, { + translate: pt(3.349, 2.661), rotate: 0, + id: 'IR20' }) -const vfilt_rc_c = board.add(C_0603_1608Metric, { - translate: pt(3.584, 2.757), rotate: 0, - id: 'vfilt_rc_c' +// vfilt.rc.c +const IC29 = board.add(C_0603_1608Metric, { + translate: pt(3.349, 2.757), rotate: 0, + id: 'IC29' }) -const ifilt_r1 = board.add(R_0603_1608Metric, { - translate: pt(2.645, 2.661), rotate: 0, - id: 'ifilt_r1' +// ifilt.r1 +const IR21 = board.add(R_0603_1608Metric, { + translate: pt(3.584, 2.661), rotate: 0, + id: 'IR21' }) -const ifilt_r2 = board.add(R_0603_1608Metric, { - translate: pt(2.645, 2.757), rotate: 0, - id: 'ifilt_r2' +// ifilt.r2 +const IR22 = board.add(R_0603_1608Metric, { + translate: pt(3.584, 2.757), rotate: 0, + id: 'IR22' }) -const tp_i_rc_r = board.add(R_0603_1608Metric, { - translate: pt(3.349, 2.661), rotate: 0, - id: 'tp_i_rc_r' +// tp_i.rc.r +const IR23 = board.add(R_0603_1608Metric, { + translate: pt(3.818, 2.661), rotate: 0, + id: 'IR23' }) -const tp_i_rc_c = board.add(C_0603_1608Metric, { - translate: pt(3.349, 2.757), rotate: 0, - id: 'tp_i_rc_c' +// tp_i.rc.c +const IC30 = board.add(C_0603_1608Metric, { + translate: pt(3.818, 2.757), rotate: 0, + id: 'IC30' }) -const iamp_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(0.567, 3.097), rotate: 0, - id: 'iamp_tp' +// iamp.tp +const ITP9 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(2.314, 3.097), rotate: 0, + id: 'ITP9' }) -const tamp_r1 = board.add(R_0603_1608Metric, { +// tamp.r1 +const IR24 = board.add(R_0603_1608Metric, { translate: pt(4.053, 2.661), rotate: 0, - id: 'tamp_r1' + id: 'IR24' }) -const tamp_r2 = board.add(R_0603_1608Metric, { +// tamp.r2 +const IR25 = board.add(R_0603_1608Metric, { translate: pt(4.209, 2.661), rotate: 0, - id: 'tamp_r2' + id: 'IR25' }) -const tamp_rf = board.add(R_0603_1608Metric, { +// tamp.rf +const IR26 = board.add(R_0603_1608Metric, { translate: pt(4.053, 2.757), rotate: 0, - id: 'tamp_rf' + id: 'IR26' }) -const tamp_rg = board.add(R_0603_1608Metric, { +// tamp.rg +const IR27 = board.add(R_0603_1608Metric, { translate: pt(4.209, 2.757), rotate: 0, - id: 'tamp_rg' + id: 'IR27' }) -const tp_t_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(1.563, 3.097), rotate: 0, - id: 'tp_t_tp' +// tp_t.tp +const ITP10 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(2.564, 3.097), rotate: 0, + id: 'ITP10' }) -const packed_opamp_ic = board.add(SOIC_8_3_9x4_9mm_P1_27mm, { +// packed_opamp.ic +const IU11 = board.add(SOIC_8_3_9x4_9mm_P1_27mm, { translate: pt(0.146, 2.738), rotate: 0, - id: 'packed_opamp_ic' + id: 'IU11' }) -const packed_opamp_vdd_cap_cap = board.add(C_0603_1608Metric, { +// packed_opamp.vdd_cap.cap +const IC31 = board.add(C_0603_1608Metric, { translate: pt(0.058, 2.913), rotate: 0, - id: 'packed_opamp_vdd_cap_cap' + id: 'IC31' }) +board.setNetlist([ + {name: "Ivusb", pads: [["IJ1", "A4"], ["IJ1", "B9"], ["IJ1", "B4"], ["IJ1", "A9"], ["IU4", "2"], ["ITP1", "1"], ["IU1", "3"], ["IU2", "3"], ["IR7", "1"], ["IR3", "1"], ["IC1", "1"], ["IC6", "1"], ["IC3", "1"], ["IC4", "1"], ["IQ2", "5"], ["IQ2", "6"], ["IQ2", "7"], ["IQ2", "8"], ["IC22", "1"], ["IC23", "1"]]}, + {name: "Ignd", pads: [["IU5", "3"], ["IJ1", "A1"], ["IJ1", "B12"], ["IJ1", "B1"], ["IJ1", "A12"], ["ITP2", "1"], ["IU1", "1"], ["ID1", "2"], ["IU2", "2"], ["IU3", "1"], ["IU3", "40"], ["IU3", "41"], ["IU4", "8"], ["IU4", "9"], ["IU4", "15"], ["IU6", "2"], ["ISW1", "C"], ["ISW1", "S2"], ["IU8", "3"], ["IU8", "11"], ["IU8", "15"], ["IU8", "17"], ["IR13", "1"], ["IR15", "1"], ["IR8", "2"], ["IC27", "2"], ["IC28", "2"], ["IR19", "2"], ["IC29", "2"], ["IC30", "2"], ["IJ1", "S1"], ["IR9", "2"], ["IR22", "2"], ["IC1", "2"], ["IC6", "2"], ["IC7", "2"], ["IC8", "2"], ["IC9", "2"], ["IJ2", "5"], ["IC11", "2"], ["IC12", "2"], ["IC13", "2"], ["IC16", "2"], ["IC17", "2"], ["IC18", "2"], ["IC19", "2"], ["IC20", "2"], ["IC21", "2"], ["IU11", "4"], ["IR2", "2"], ["IC10", "2"], ["IR17", "1"], ["IR27", "1"], ["IJ3", "8"], ["IJ3", "1"], ["IJ3", "30"], ["IJ3", "29"], ["IJ3", "17"], ["IJ3", "16"], ["IJ3", "21"], ["IJ3", "22"], ["IJ3", "23"], ["IJ3", "24"], ["IJ3", "25"], ["IJ3", "12"], ["IJ3", "10"], ["IJ3", "15"], ["IJ3", "13"], ["IQ1", "1"], ["IQ1", "2"], ["IQ1", "3"], ["IC5", "2"], ["IC24", "2"], ["IU9", "7"], ["IC31", "2"], ["IC3", "2"], ["IC4", "2"], ["IC22", "2"], ["IC23", "2"], ["IC25", "2"]]}, + {name: "Iv3v3", pads: [["ITP3", "1"], ["ID1", "1"], ["IU3", "2"], ["IU4", "3"], ["IU4", "4"], ["IU6", "5"], ["IU8", "4"], ["IU8", "7"], ["IU8", "8"], ["ID2", "2"], ["IU11", "8"], ["IR1", "1"], ["IC8", "1"], ["IC9", "1"], ["IJ2", "1"], ["IR5", "1"], ["IR6", "1"], ["IC11", "1"], ["IC12", "1"], ["IC13", "1"], ["IJ3", "9"], ["IJ3", "6"], ["IC17", "1"], ["IC18", "1"], ["IC20", "1"], ["IC21", "1"], ["IR4", "1"], ["IC31", "1"], ["IJ3", "11"], ["IL1", "2"], ["IC5", "1"]]}, + {name: "Ivgate", pads: [["IU2", "1"], ["ITP4", "1"], ["IU9", "1"], ["IC7", "1"], ["IC25", "1"]]}, + {name: "Iconv_out", pads: [["ITP5", "1"], ["IJ5", "2"], ["IR18", "1"], ["IL2", "2"], ["IC24", "1"]]}, + {name: "Ii2c_pull.i2c.scl", pads: [["IU3", "35"], ["IU4", "6"], ["IU6", "6"], ["IR5", "2"], ["IJ3", "18"]]}, + {name: "Ii2c_pull.i2c.sda", pads: [["IU3", "34"], ["IU4", "7"], ["IU6", "1"], ["IR6", "2"], ["IJ3", "19"], ["IJ3", "20"]]}, + {name: "Iusb.cc.cc1", pads: [["IJ1", "A5"], ["IU4", "10"], ["IU4", "11"]]}, + {name: "Iusb.cc.cc2", pads: [["IJ1", "B5"], ["IU4", "1"], ["IU4", "14"]]}, + {name: "Ipd.int", pads: [["IU3", "38"], ["IU4", "5"]]}, + {name: "Iusb_chain_0.d_P", pads: [["IJ1", "A6"], ["IJ1", "B6"], ["IU5", "2"], ["IU3", "14"]]}, + {name: "Iusb_chain_0.d_N", pads: [["IJ1", "A7"], ["IJ1", "B7"], ["IU5", "1"], ["IU3", "13"]]}, + {name: "Ivusb_sense.output", pads: [["IU3", "39"], ["IR7", "2"], ["IR8", "1"]]}, + {name: "Ienc.a", pads: [["IU3", "10"], ["ISW1", "A"]]}, + {name: "Ienc.b", pads: [["IU3", "9"], ["ISW1", "B"]]}, + {name: "Ienc.sw", pads: [["IU3", "8"], ["ISW1", "S1"]]}, + {name: "Ioled.reset", pads: [["IU3", "11"], ["IJ3", "14"]]}, + {name: "Ispk_drv.i2s.sck", pads: [["IU3", "32"], ["IU8", "16"]]}, + {name: "Ispk_drv.i2s.ws", pads: [["IU3", "31"], ["IU8", "14"]]}, + {name: "Ispk_drv.i2s.sd", pads: [["IU3", "33"], ["IU8", "1"]]}, + {name: "Ispk_drv.out.a", pads: [["IU8", "9"], ["IJ4", "1"]]}, + {name: "Ispk_drv.out.b", pads: [["IU8", "10"], ["IJ4", "2"]]}, + {name: "Imcu.program_boot_node", pads: [["IR10", "2"], ["IU3", "27"], ["IJ2", "2"]]}, + {name: "Ilow_pull.io", pads: [["IU3", "4"], ["IR13", "2"], ["IR14", "1"]]}, + {name: "Ilow_rc.output", pads: [["IU9", "6"], ["ITP6", "1"], ["IR14", "2"], ["IC27", "1"]]}, + {name: "Ihigh_pull.io", pads: [["IU3", "5"], ["IR15", "2"], ["IR16", "1"]]}, + {name: "Ihigh_rc.output", pads: [["IU9", "5"], ["ITP7", "1"], ["IR16", "2"], ["IC28", "1"]]}, + {name: "Itouch_sink.pad", pads: [["IU3", "15"], ["IU10", "1"]]}, + {name: "Ivsense.output", pads: [["ITP8", "1"], ["IR20", "1"], ["IR18", "2"], ["IR19", "1"]]}, + {name: "Ivfilt.output", pads: [["IU3", "6"], ["IR20", "2"], ["IC29", "1"]]}, + {name: "Iiron.isense", pads: [["IU11", "3"], ["IR24", "1"], ["IR17", "2"], ["IJ5", "1"]]}, + {name: "Iifilt.output", pads: [["IR23", "1"], ["IR21", "1"], ["IU11", "1"]]}, + {name: "Itp_i.output", pads: [["IU3", "7"], ["ITP9", "1"], ["IR23", "2"], ["IC30", "1"]]}, + {name: "Itamp.input_positive", pads: [["IR25", "1"], ["IJ5", "3"], ["ITP10", "1"]]}, + {name: "Itamp.output", pads: [["IU3", "12"], ["IR26", "1"], ["IU11", "7"]]}, + {name: "Ipacked_opamp.inn.0", pads: [["IU11", "2"], ["IR21", "2"], ["IR22", "1"]]}, + {name: "Ipacked_opamp.inp.1", pads: [["IU11", "5"], ["IR25", "2"], ["IR27", "2"]]}, + {name: "Ipacked_opamp.inn.1", pads: [["IU11", "6"], ["IR24", "2"], ["IR26", "2"]]}, + {name: "Ireg_3v3.fb.output", pads: [["IU1", "4"], ["IR1", "2"], ["IR2", "1"]]}, + {name: "Ireg_3v3.boot_cap.neg", pads: [["IC2", "2"], ["IU1", "2"], ["IL1", "1"]]}, + {name: "Ireg_3v3.boot_cap.pos", pads: [["IC2", "1"], ["IU1", "6"]]}, + {name: "Ireg_3v3.en_res.b", pads: [["IR3", "2"], ["IU1", "5"]]}, + {name: "Imcu.program_uart_node.a_tx", pads: [["IU3", "37"], ["IJ2", "3"]]}, + {name: "Imcu.program_uart_node.b_tx", pads: [["IU3", "36"], ["IJ2", "4"]]}, + {name: "Imcu.program_en_node", pads: [["IU3", "3"], ["IJ2", "6"], ["IR4", "2"], ["IC10", "1"]]}, + {name: "Ipd.ic.vconn", pads: [["IU4", "12"], ["IU4", "13"]]}, + {name: "Ioled.c1_cap.pos", pads: [["IC14", "1"], ["IJ3", "4"]]}, + {name: "Ioled.c1_cap.neg", pads: [["IC14", "2"], ["IJ3", "5"]]}, + {name: "Ioled.c2_cap.pos", pads: [["IC15", "1"], ["IJ3", "2"]]}, + {name: "Ioled.c2_cap.neg", pads: [["IC15", "2"], ["IJ3", "3"]]}, + {name: "Ioled.iref_res.a", pads: [["IR9", "1"], ["IJ3", "26"]]}, + {name: "Ioled.device.vcomh", pads: [["IJ3", "27"], ["IC16", "1"]]}, + {name: "Ioled.device.vcc", pads: [["IJ3", "28"], ["IC19", "1"]]}, + {name: "Iledr.res.a", pads: [["IR10", "1"], ["ID2", "1"]]}, + {name: "Iconv.sw_out_force", pads: [["IQ1", "5"], ["IQ1", "6"], ["IQ1", "7"], ["IQ1", "8"], ["IQ2", "1"], ["IQ2", "2"], ["IQ2", "3"], ["IL2", "1"], ["IU9", "4"], ["IC26", "2"]]}, + {name: "Iconv.sw.low_gate_res.a", pads: [["IR11", "1"], ["IU9", "8"]]}, + {name: "Iconv.sw.low_gate_res.b", pads: [["IR11", "2"], ["IQ1", "4"]]}, + {name: "Iconv.sw.high_gate_res.a", pads: [["IR12", "1"], ["IU9", "3"]]}, + {name: "Iconv.sw.high_gate_res.b", pads: [["IR12", "2"], ["IQ2", "4"]]}, + {name: "Iconv.sw.driver.ic.hb", pads: [["IU9", "2"], ["IC26", "1"]]} +]) + const limit0 = pt(-0.07874015748031496, -0.07874015748031496); const limit1 = pt(4.385236220472439, 3.2523622047244096); const xMin = Math.min(limit0[0], limit1[0]); diff --git a/examples/IotKnob/IotKnob.svgpcb.js b/examples/IotKnob/IotKnob.svgpcb.js index 42cf418d2..53718c31b 100644 --- a/examples/IotKnob/IotKnob.svgpcb.js +++ b/examples/IotKnob/IotKnob.svgpcb.js @@ -1,283 +1,433 @@ const board = new PCB(); -const rgb_knob = NeopixelArrayCircular_4_rgb_knob(pt(0, 0)) -const rgb_ring = NeopixelArrayCircular_24_rgb_ring(pt(0, 0)) -const rgb_sw = NeopixelArrayCircular_6_rgb_sw(pt(0, 0)) -const jlc_th_th1 = board.add(JlcToolingHole_1_152mm, { - translate: pt(3.095, 2.890), rotate: 0, - id: 'jlc_th_th1' -}) -const jlc_th_th2 = board.add(JlcToolingHole_1_152mm, { - translate: pt(3.135, 2.890), rotate: 0, - id: 'jlc_th_th2' -}) -const jlc_th_th3 = board.add(JlcToolingHole_1_152mm, { - translate: pt(3.095, 2.929), rotate: 0, - id: 'jlc_th_th3' -}) -const usb_conn = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { - translate: pt(1.115, 1.905), rotate: 0, - id: 'usb_conn' -}) -const usb_cc_pull_cc1_res = board.add(R_0603_1608Metric, { - translate: pt(0.964, 2.160), rotate: 0, - id: 'usb_cc_pull_cc1_res' -}) -const usb_cc_pull_cc2_res = board.add(R_0603_1608Metric, { - translate: pt(1.120, 2.160), rotate: 0, - id: 'usb_cc_pull_cc2_res' -}) -const tp_pwr_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(1.741, 2.927), rotate: 0, - id: 'tp_pwr_tp' -}) -const tp_gnd_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(1.240, 2.927), rotate: 0, - id: 'tp_gnd_tp' -}) -const reg_3v3_ic = board.add(SOT_223_3_TabPin2, { - translate: pt(2.403, 1.882), rotate: 0, - id: 'reg_3v3_ic' -}) -const reg_3v3_in_cap_cap = board.add(C_0603_1608Metric, { - translate: pt(2.461, 2.092), rotate: 0, - id: 'reg_3v3_in_cap_cap' -}) -const reg_3v3_out_cap_cap = board.add(C_0805_2012Metric, { - translate: pt(2.297, 2.102), rotate: 0, - id: 'reg_3v3_out_cap_cap' -}) -const tp_3v3_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(2.486, 2.927), rotate: 0, - id: 'tp_3v3_tp' -}) -const prot_3v3_diode = board.add(D_SOD_323, { - translate: pt(1.988, 2.927), rotate: 0, - id: 'prot_3v3_diode' -}) -const mcu_ic = board.add(ESP32_S3_WROOM_1, { - translate: pt(0.945, 0.530), rotate: 0, - id: 'mcu_ic' -}) -const mcu_vcc_cap0_cap = board.add(C_1206_3216Metric, { - translate: pt(2.020, 0.419), rotate: 0, - id: 'mcu_vcc_cap0_cap' -}) -const mcu_vcc_cap1_cap = board.add(C_0603_1608Metric, { - translate: pt(2.208, 0.403), rotate: 0, - id: 'mcu_vcc_cap1_cap' -}) -const mcu_prog_conn = board.add(Tag_Connect_TC2030_IDC_FP_2x03_P1_27mm_Vertical, { - translate: pt(2.096, 0.167), rotate: 0, - id: 'mcu_prog_conn' -}) -const mcu_en_pull_rc_r = board.add(R_0603_1608Metric, { - translate: pt(2.364, 0.403), rotate: 0, - id: 'mcu_en_pull_rc_r' -}) -const mcu_en_pull_rc_c = board.add(C_0603_1608Metric, { - translate: pt(1.987, 0.533), rotate: 0, - id: 'mcu_en_pull_rc_c' -}) -const i2c_pull_scl_res_res = board.add(R_0603_1608Metric, { - translate: pt(0.763, 2.919), rotate: 0, - id: 'i2c_pull_scl_res_res' -}) -const i2c_pull_sda_res_res = board.add(R_0603_1608Metric, { - translate: pt(0.763, 3.015), rotate: 0, - id: 'i2c_pull_sda_res_res' -}) -const i2c_tp_tp_scl_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(3.702, 2.585), rotate: 0, - id: 'i2c_tp_tp_scl_tp' -}) -const i2c_tp_tp_sda_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(3.702, 2.699), rotate: 0, - id: 'i2c_tp_tp_sda_tp' -}) -const usb_esd = board.add(SOT_23, { - translate: pt(2.980, 2.957), rotate: 0, - id: 'usb_esd' -}) -const ledr_package = board.add(LED_0603_1608Metric, { - translate: pt(0.058, 2.919), rotate: 0, - id: 'ledr_package' -}) -const ledr_res = board.add(R_0603_1608Metric, { - translate: pt(0.058, 3.016), rotate: 0, - id: 'ledr_res' -}) -const ledy_package = board.add(LED_0603_1608Metric, { - translate: pt(0.293, 2.919), rotate: 0, - id: 'ledy_package' -}) -const ledy_res = board.add(R_0603_1608Metric, { - translate: pt(0.293, 3.016), rotate: 0, - id: 'ledy_res' -}) -const enc_package = board.add(RotaryEncoder_Alps_EC11J15_Switch, { - translate: pt(0.394, 2.085), rotate: 0, - id: 'enc_package' -}) -const sw_0__package = board.add(SW_SPST_SKQG_WithoutStem, { - translate: pt(0.620, 2.659), rotate: 0, - id: 'sw_0__package' -}) -const sw_1__package = board.add(SW_SPST_SKQG_WithoutStem, { - translate: pt(3.957, 1.852), rotate: 0, - id: 'sw_1__package' -}) -const sw_2__package = board.add(SW_SPST_SKQG_WithoutStem, { - translate: pt(1.073, 2.659), rotate: 0, - id: 'sw_2__package' -}) -const sw_3__package = board.add(SW_SPST_SKQG_WithoutStem, { - translate: pt(0.167, 2.659), rotate: 0, - id: 'sw_3__package' -}) -const sw_4__package = board.add(SW_SPST_SKQG_WithoutStem, { - translate: pt(1.978, 2.659), rotate: 0, - id: 'sw_4__package' -}) -const sw_5__package = board.add(SW_SPST_SKQG_WithoutStem, { - translate: pt(1.526, 2.659), rotate: 0, - id: 'sw_5__package' -}) -const als_ic = board.add(HVSOF6, { - translate: pt(3.956, 2.589), rotate: 0, - id: 'als_ic' -}) -const als_vcc_cap_cap = board.add(C_0603_1608Metric, { - translate: pt(4.122, 2.576), rotate: 0, - id: 'als_vcc_cap_cap' -}) -const als_dvi_res = board.add(R_0603_1608Metric, { - translate: pt(3.945, 2.698), rotate: 0, - id: 'als_dvi_res' -}) -const als_dvi_cap = board.add(C_0603_1608Metric, { - translate: pt(4.101, 2.698), rotate: 0, - id: 'als_dvi_cap' -}) -const dist_ic = board.add(ST_VL53L0X, { - translate: pt(3.478, 1.798), rotate: 0, - id: 'dist_ic' -}) -const dist_vdd_cap_0__cap = board.add(C_0603_1608Metric, { - translate: pt(3.613, 1.922), rotate: 0, - id: 'dist_vdd_cap_0__cap' -}) -const dist_vdd_cap_1__cap = board.add(C_0805_2012Metric, { - translate: pt(3.449, 1.932), rotate: 0, - id: 'dist_vdd_cap_1__cap' -}) -const env_ic = board.add(Sensirion_DFN_4_1EP_2x2mm_P1mm_EP0_7x1_6mm, { - translate: pt(3.459, 2.596), rotate: 0, - id: 'env_ic' -}) -const env_vdd_cap_cap = board.add(C_0603_1608Metric, { - translate: pt(3.460, 2.714), rotate: 0, - id: 'env_vdd_cap_cap' -}) -const oled_device_conn = board.add(Hirose_FH12_30S_0_5SH_1x30_1MP_P0_50mm_Horizontal, { - translate: pt(2.956, 1.054), rotate: 0, - id: 'oled_device_conn' -}) -const oled_lcd = board.add(Lcd_Er_Oled0_96_1_1_Outline, { - translate: pt(3.066, 0.516), rotate: 0, - id: 'oled_lcd' -}) -const oled_c1_cap = board.add(C_0603_1608Metric, { - translate: pt(3.815, 0.889), rotate: 0, - id: 'oled_c1_cap' -}) -const oled_c2_cap = board.add(C_0603_1608Metric, { - translate: pt(3.971, 0.889), rotate: 0, - id: 'oled_c2_cap' -}) -const oled_iref_res = board.add(R_0603_1608Metric, { - translate: pt(3.469, 1.006), rotate: 0, - id: 'oled_iref_res' -}) -const oled_vcomh_cap_cap = board.add(C_0805_2012Metric, { - translate: pt(3.477, 0.899), rotate: 0, - id: 'oled_vcomh_cap_cap' -}) -const oled_vdd_cap1_cap = board.add(C_0603_1608Metric, { - translate: pt(3.624, 1.006), rotate: 0, - id: 'oled_vdd_cap1_cap' -}) -const oled_vbat_cap_cap = board.add(C_0603_1608Metric, { - translate: pt(3.780, 1.006), rotate: 0, - id: 'oled_vbat_cap_cap' -}) -const oled_vcc_cap_cap = board.add(C_0805_2012Metric, { - translate: pt(3.650, 0.899), rotate: 0, - id: 'oled_vcc_cap_cap' -}) -const rgb_shift_ic = board.add(SOT_23_5, { - translate: pt(3.183, 1.807), rotate: 0, - id: 'rgb_shift_ic' -}) -const rgb_shift_vdd_cap_cap = board.add(C_0603_1608Metric, { - translate: pt(3.161, 1.942), rotate: 0, - id: 'rgb_shift_vdd_cap_cap' -}) -const rgb_tp_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(1.490, 2.927), rotate: 0, - id: 'rgb_tp_tp' -}) -const io8_pur_res = board.add(R_0603_1608Metric, { - translate: pt(2.728, 2.919), rotate: 0, - id: 'io8_pur_res' -}) -const spk_dac_rc_r = board.add(R_0603_1608Metric, { - translate: pt(0.528, 2.919), rotate: 0, - id: 'spk_dac_rc_r' -}) -const spk_dac_rc_c = board.add(C_0603_1608Metric, { - translate: pt(0.528, 3.015), rotate: 0, - id: 'spk_dac_rc_c' -}) -const spk_tp_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(2.235, 2.927), rotate: 0, - id: 'spk_tp_tp' -}) -const spk_drv_ic = board.add(MSOP_8_3x3mm_P0_65mm, { - translate: pt(2.820, 1.809), rotate: 0, - id: 'spk_drv_ic' -}) -const spk_drv_pwr_cap0_cap = board.add(C_0603_1608Metric, { - translate: pt(2.926, 1.946), rotate: 0, - id: 'spk_drv_pwr_cap0_cap' -}) -const spk_drv_pwr_cap1_cap = board.add(C_0805_2012Metric, { - translate: pt(2.761, 1.956), rotate: 0, - id: 'spk_drv_pwr_cap1_cap' -}) -const spk_drv_inp_cap = board.add(C_0603_1608Metric, { - translate: pt(2.753, 2.063), rotate: 0, - id: 'spk_drv_inp_cap' -}) -const spk_drv_inn_cap = board.add(C_0603_1608Metric, { - translate: pt(2.909, 2.063), rotate: 0, - id: 'spk_drv_inn_cap' -}) -const spk_conn = board.add(JST_PH_B2B_PH_K_1x02_P2_00mm_Vertical, { - translate: pt(2.360, 2.677), rotate: 0, - id: 'spk_conn' -}) -const v5v_sense_div_top_res = board.add(R_0603_1608Metric, { - translate: pt(0.997, 2.919), rotate: 0, - id: 'v5v_sense_div_top_res' -}) -const v5v_sense_div_bottom_res = board.add(R_0603_1608Metric, { - translate: pt(0.997, 3.015), rotate: 0, - id: 'v5v_sense_div_bottom_res' -}) +const rgb_knob = NeopixelArrayCircular_4_rgb_knob(pt(1.039, 1.039)) +const rgb_ring = NeopixelArrayCircular_24_rgb_ring(pt(3.157, 1.039)) +const rgb_sw = NeopixelArrayCircular_6_rgb_sw(pt(5.276, 1.039)) +// jlc_th.th1 +const KH1 = board.add(JlcToolingHole_1_152mm, { + translate: pt(1.922, 3.858), rotate: 0, + id: 'KH1' +}) +// jlc_th.th2 +const KH2 = board.add(JlcToolingHole_1_152mm, { + translate: pt(1.961, 3.858), rotate: 0, + id: 'KH2' +}) +// jlc_th.th3 +const KH3 = board.add(JlcToolingHole_1_152mm, { + translate: pt(1.922, 3.898), rotate: 0, + id: 'KH3' +}) +// usb.conn +const KJ1 = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { + translate: pt(5.262, 2.283), rotate: 0, + id: 'KJ1' +}) +// usb.cc_pull.cc1.res +const KR1 = board.add(R_0603_1608Metric, { + translate: pt(5.111, 2.538), rotate: 0, + id: 'KR1' +}) +// usb.cc_pull.cc2.res +const KR2 = board.add(R_0603_1608Metric, { + translate: pt(5.267, 2.538), rotate: 0, + id: 'KR2' +}) +// tp_pwr.tp +const KTP1 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(0.066, 3.896), rotate: 0, + id: 'KTP1' +}) +// tp_gnd.tp +const KTP2 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(0.317, 3.896), rotate: 0, + id: 'KTP2' +}) +// reg_3v3.ic +const KU1 = board.add(SOT_223_3_TabPin2, { + translate: pt(5.763, 2.260), rotate: 0, + id: 'KU1' +}) +// reg_3v3.in_cap.cap +const KC1 = board.add(C_0603_1608Metric, { + translate: pt(5.821, 2.470), rotate: 0, + id: 'KC1' +}) +// reg_3v3.out_cap.cap +const KC2 = board.add(C_0805_2012Metric, { + translate: pt(5.657, 2.480), rotate: 0, + id: 'KC2' +}) +// tp_3v3.tp +const KTP3 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(0.567, 3.896), rotate: 0, + id: 'KTP3' +}) +// prot_3v3.diode +const KD1 = board.add(D_SOD_323, { + translate: pt(0.815, 3.896), rotate: 0, + id: 'KD1' +}) +// mcu.ic +const KU2 = board.add(ESP32_S3_WROOM_1, { + translate: pt(0.945, 2.648), rotate: 0, + id: 'KU2' +}) +// mcu.vcc_cap0.cap +const KC3 = board.add(C_1206_3216Metric, { + translate: pt(2.020, 2.537), rotate: 0, + id: 'KC3' +}) +// mcu.vcc_cap1.cap +const KC4 = board.add(C_0603_1608Metric, { + translate: pt(2.208, 2.521), rotate: 0, + id: 'KC4' +}) +// mcu.prog.conn +const KJ2 = board.add(Tag_Connect_TC2030_IDC_FP_2x03_P1_27mm_Vertical, { + translate: pt(2.096, 2.285), rotate: 0, + id: 'KJ2' +}) +// mcu.en_pull.rc.r +const KR3 = board.add(R_0603_1608Metric, { + translate: pt(2.364, 2.521), rotate: 0, + id: 'KR3' +}) +// mcu.en_pull.rc.c +const KC5 = board.add(C_0603_1608Metric, { + translate: pt(1.987, 2.651), rotate: 0, + id: 'KC5' +}) +// i2c_pull.scl_res.res +const KR4 = board.add(R_0603_1608Metric, { + translate: pt(5.713, 3.437), rotate: 0, + id: 'KR4' +}) +// i2c_pull.sda_res.res +const KR5 = board.add(R_0603_1608Metric, { + translate: pt(5.713, 3.533), rotate: 0, + id: 'KR5' +}) +// i2c_tp.tp_scl.tp +const KTP4 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(4.589, 3.445), rotate: 0, + id: 'KTP4' +}) +// i2c_tp.tp_sda.tp +const KTP5 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(4.589, 3.559), rotate: 0, + id: 'KTP5' +}) +// usb_esd +const KU3 = board.add(SOT_23, { + translate: pt(1.807, 3.925), rotate: 0, + id: 'KU3' +}) +// ledr.package +const KD2 = board.add(LED_0603_1608Metric, { + translate: pt(5.244, 3.437), rotate: 0, + id: 'KD2' +}) +// ledr.res +const KR6 = board.add(R_0603_1608Metric, { + translate: pt(5.243, 3.534), rotate: 0, + id: 'KR6' +}) +// ledy.package +const KD3 = board.add(LED_0603_1608Metric, { + translate: pt(5.478, 3.437), rotate: 0, + id: 'KD3' +}) +// ledy.res +const KR7 = board.add(R_0603_1608Metric, { + translate: pt(5.478, 3.534), rotate: 0, + id: 'KR7' +}) +// enc.package +const KSW1 = board.add(RotaryEncoder_Alps_EC11J15_Switch, { + translate: pt(4.541, 2.463), rotate: 0, + id: 'KSW1' +}) +// sw[0].package +const KSW2 = board.add(SW_SPST_SKQG_WithoutStem, { + translate: pt(5.002, 3.037), rotate: 0, + id: 'KSW2' +}) +// sw[1].package +const KSW3 = board.add(SW_SPST_SKQG_WithoutStem, { + translate: pt(5.455, 3.037), rotate: 0, + id: 'KSW3' +}) +// sw[2].package +const KSW4 = board.add(SW_SPST_SKQG_WithoutStem, { + translate: pt(5.907, 3.037), rotate: 0, + id: 'KSW4' +}) +// sw[3].package +const KSW5 = board.add(SW_SPST_SKQG_WithoutStem, { + translate: pt(2.707, 3.520), rotate: 0, + id: 'KSW5' +}) +// sw[4].package +const KSW6 = board.add(SW_SPST_SKQG_WithoutStem, { + translate: pt(3.160, 3.520), rotate: 0, + id: 'KSW6' +}) +// sw[5].package +const KSW7 = board.add(SW_SPST_SKQG_WithoutStem, { + translate: pt(3.613, 3.520), rotate: 0, + id: 'KSW7' +}) +// als.ic +const KU4 = board.add(HVSOF6, { + translate: pt(4.842, 3.449), rotate: 0, + id: 'KU4' +}) +// als.vcc_cap.cap +const KC6 = board.add(C_0603_1608Metric, { + translate: pt(5.009, 3.437), rotate: 0, + id: 'KC6' +}) +// als.dvi_res +const KR8 = board.add(R_0603_1608Metric, { + translate: pt(4.831, 3.559), rotate: 0, + id: 'KR8' +}) +// als.dvi_cap +const KC7 = board.add(C_0603_1608Metric, { + translate: pt(4.987, 3.559), rotate: 0, + id: 'KC7' +}) +// dist.ic +const KU5 = board.add(ST_VL53L0X, { + translate: pt(4.244, 2.983), rotate: 0, + id: 'KU5' +}) +// dist.vdd_cap[0].cap +const KC8 = board.add(C_0603_1608Metric, { + translate: pt(4.379, 3.107), rotate: 0, + id: 'KC8' +}) +// dist.vdd_cap[1].cap +const KC9 = board.add(C_0805_2012Metric, { + translate: pt(4.214, 3.117), rotate: 0, + id: 'KC9' +}) +// env.ic +const KU6 = board.add(Sensirion_DFN_4_1EP_2x2mm_P1mm_EP0_7x1_6mm, { + translate: pt(4.345, 3.457), rotate: 0, + id: 'KU6' +}) +// env.vdd_cap.cap +const KC10 = board.add(C_0603_1608Metric, { + translate: pt(4.346, 3.574), rotate: 0, + id: 'KC10' +}) +// oled.device.conn +const KJ3 = board.add(Hirose_FH12_30S_0_5SH_1x30_1MP_P0_50mm_Horizontal, { + translate: pt(2.956, 3.172), rotate: 0, + id: 'KJ3' +}) +// oled.lcd +const KU7 = board.add(Lcd_Er_Oled0_96_1_1_Outline, { + translate: pt(3.066, 2.634), rotate: 0, + id: 'KU7' +}) +// oled.c1_cap +const KC11 = board.add(C_0603_1608Metric, { + translate: pt(3.815, 3.007), rotate: 0, + id: 'KC11' +}) +// oled.c2_cap +const KC12 = board.add(C_0603_1608Metric, { + translate: pt(3.971, 3.007), rotate: 0, + id: 'KC12' +}) +// oled.iref_res +const KR9 = board.add(R_0603_1608Metric, { + translate: pt(3.469, 3.124), rotate: 0, + id: 'KR9' +}) +// oled.vcomh_cap.cap +const KC13 = board.add(C_0805_2012Metric, { + translate: pt(3.477, 3.017), rotate: 0, + id: 'KC13' +}) +// oled.vdd_cap1.cap +const KC14 = board.add(C_0603_1608Metric, { + translate: pt(3.624, 3.124), rotate: 0, + id: 'KC14' +}) +// oled.vbat_cap.cap +const KC15 = board.add(C_0603_1608Metric, { + translate: pt(3.780, 3.124), rotate: 0, + id: 'KC15' +}) +// oled.vcc_cap.cap +const KC16 = board.add(C_0805_2012Metric, { + translate: pt(3.650, 3.017), rotate: 0, + id: 'KC16' +}) +// rgb_shift.ic +const KU8 = board.add(SOT_23_5, { + translate: pt(4.636, 2.992), rotate: 0, + id: 'KU8' +}) +// rgb_shift.vdd_cap.cap +const KC17 = board.add(C_0603_1608Metric, { + translate: pt(4.613, 3.127), rotate: 0, + id: 'KC17' +}) +// rgb_tp.tp +const KTP6 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(1.062, 3.896), rotate: 0, + id: 'KTP6' +}) +// io8_pur.res +const KR10 = board.add(R_0603_1608Metric, { + translate: pt(1.555, 3.887), rotate: 0, + id: 'KR10' +}) +// spk_dac.rc.r +const KR11 = board.add(R_0603_1608Metric, { + translate: pt(5.948, 3.437), rotate: 0, + id: 'KR11' +}) +// spk_dac.rc.c +const KC18 = board.add(C_0603_1608Metric, { + translate: pt(5.948, 3.533), rotate: 0, + id: 'KC18' +}) +// spk_tp.tp +const KTP7 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(1.312, 3.896), rotate: 0, + id: 'KTP7' +}) +// spk_drv.ic +const KU9 = board.add(MSOP_8_3x3mm_P0_65mm, { + translate: pt(6.180, 2.187), rotate: 0, + id: 'KU9' +}) +// spk_drv.pwr_cap0.cap +const KC19 = board.add(C_0603_1608Metric, { + translate: pt(6.286, 2.324), rotate: 0, + id: 'KC19' +}) +// spk_drv.pwr_cap1.cap +const KC20 = board.add(C_0805_2012Metric, { + translate: pt(6.121, 2.334), rotate: 0, + id: 'KC20' +}) +// spk_drv.inp_cap +const KC21 = board.add(C_0603_1608Metric, { + translate: pt(6.113, 2.441), rotate: 0, + id: 'KC21' +}) +// spk_drv.inn_cap +const KC22 = board.add(C_0603_1608Metric, { + translate: pt(6.269, 2.441), rotate: 0, + id: 'KC22' +}) +// spk.conn +const KJ4 = board.add(JST_PH_B2B_PH_K_1x02_P2_00mm_Vertical, { + translate: pt(3.995, 3.538), rotate: 0, + id: 'KJ4' +}) +// v5v_sense.div.top_res +const KR12 = board.add(R_0603_1608Metric, { + translate: pt(6.182, 3.437), rotate: 0, + id: 'KR12' +}) +// v5v_sense.div.bottom_res +const KR13 = board.add(R_0603_1608Metric, { + translate: pt(6.182, 3.533), rotate: 0, + id: 'KR13' +}) + +board.setNetlist([ + {name: "Kvusb", pads: [["KJ1", "A4"], ["KJ1", "B9"], ["KJ1", "B4"], ["KJ1", "A9"], ["KTP1", "1"], ["KU1", "3"], ["KU8", "5"], ["KD4", "2"], ["KD5", "2"], ["KD6", "2"], ["KD7", "2"], ["KD8", "2"], ["KD9", "2"], ["KD10", "2"], ["KD11", "2"], ["KD12", "2"], ["KD13", "2"], ["KD14", "2"], ["KD15", "2"], ["KD16", "2"], ["KD17", "2"], ["KD18", "2"], ["KD19", "2"], ["KD20", "2"], ["KD21", "2"], ["KD22", "2"], ["KD23", "2"], ["KD24", "2"], ["KD25", "2"], ["KD26", "2"], ["KD27", "2"], ["KD28", "2"], ["KD29", "2"], ["KD30", "2"], ["KD31", "2"], ["KD32", "2"], ["KD33", "2"], ["KD34", "2"], ["KD35", "2"], ["KD36", "2"], ["KD37", "2"], ["KU9", "1"], ["KU9", "6"], ["KR12", "1"], ["KC1", "1"], ["KC17", "1"], ["KC19", "1"], ["KC20", "1"]]}, + {name: "Kgnd", pads: [["KU3", "3"], ["KJ1", "A1"], ["KJ1", "B12"], ["KJ1", "B1"], ["KJ1", "A12"], ["KTP2", "1"], ["KU1", "1"], ["KD1", "2"], ["KU2", "1"], ["KU2", "40"], ["KU2", "41"], ["KR6", "2"], ["KR7", "2"], ["KSW1", "C"], ["KSW1", "S2"], ["KSW2", "2"], ["KSW3", "2"], ["KSW4", "2"], ["KSW5", "2"], ["KSW6", "2"], ["KSW7", "2"], ["KU4", "2"], ["KU4", "3"], ["KU5", "2"], ["KU5", "3"], ["KU5", "4"], ["KU5", "6"], ["KU5", "12"], ["KU6", "4"], ["KU6", "5"], ["KU8", "1"], ["KU8", "3"], ["KD4", "4"], ["KD5", "4"], ["KD6", "4"], ["KD7", "4"], ["KD8", "4"], ["KD9", "4"], ["KD10", "4"], ["KD11", "4"], ["KD12", "4"], ["KD13", "4"], ["KD14", "4"], ["KD15", "4"], ["KD16", "4"], ["KD17", "4"], ["KD18", "4"], ["KD19", "4"], ["KD20", "4"], ["KD21", "4"], ["KD22", "4"], ["KD23", "4"], ["KD24", "4"], ["KD25", "4"], ["KD26", "4"], ["KD27", "4"], ["KD28", "4"], ["KD29", "4"], ["KD30", "4"], ["KD31", "4"], ["KD32", "4"], ["KD33", "4"], ["KD34", "4"], ["KD35", "4"], ["KD36", "4"], ["KD37", "4"], ["KU9", "7"], ["KC18", "2"], ["KR13", "2"], ["KJ1", "S1"], ["KC7", "2"], ["KR9", "2"], ["KC22", "2"], ["KC1", "2"], ["KC2", "2"], ["KC3", "2"], ["KC4", "2"], ["KJ2", "5"], ["KC6", "2"], ["KC8", "2"], ["KC9", "2"], ["KC10", "2"], ["KC13", "2"], ["KC14", "2"], ["KC15", "2"], ["KC16", "2"], ["KC17", "2"], ["KC19", "2"], ["KC20", "2"], ["KC5", "2"], ["KR1", "1"], ["KR2", "1"], ["KJ3", "8"], ["KJ3", "1"], ["KJ3", "30"], ["KJ3", "29"], ["KJ3", "17"], ["KJ3", "16"], ["KJ3", "21"], ["KJ3", "22"], ["KJ3", "23"], ["KJ3", "24"], ["KJ3", "25"], ["KJ3", "12"], ["KJ3", "10"], ["KJ3", "15"], ["KJ3", "13"]]}, + {name: "Kv3v3", pads: [["KU1", "2"], ["KTP3", "1"], ["KD1", "1"], ["KU2", "2"], ["KU4", "1"], ["KU5", "1"], ["KU5", "11"], ["KU6", "1"], ["KR10", "1"], ["KC2", "1"], ["KR8", "1"], ["KU5", "5"], ["KC3", "1"], ["KC4", "1"], ["KJ2", "1"], ["KR4", "1"], ["KR5", "1"], ["KC6", "1"], ["KC8", "1"], ["KC9", "1"], ["KC10", "1"], ["KJ3", "9"], ["KJ3", "6"], ["KC14", "1"], ["KC15", "1"], ["KR3", "1"], ["KJ3", "11"]]}, + {name: "Ki2c_chain_0.scl", pads: [["KU2", "33"], ["KU4", "6"], ["KU5", "10"], ["KU6", "2"], ["KR4", "2"], ["KTP4", "1"], ["KJ3", "18"]]}, + {name: "Ki2c_chain_0.sda", pads: [["KU2", "32"], ["KU4", "4"], ["KU5", "9"], ["KU6", "3"], ["KR5", "2"], ["KTP5", "1"], ["KJ3", "19"], ["KJ3", "20"]]}, + {name: "Kusb_chain_0.d_P", pads: [["KJ1", "A6"], ["KJ1", "B6"], ["KU3", "2"], ["KU2", "14"]]}, + {name: "Kusb_chain_0.d_N", pads: [["KJ1", "A7"], ["KJ1", "B7"], ["KU3", "1"], ["KU2", "13"]]}, + {name: "Kledr.signal", pads: [["KU2", "25"], ["KD2", "2"]]}, + {name: "Kledy.signal", pads: [["KU2", "24"], ["KD3", "2"]]}, + {name: "Kenc.a", pads: [["KU2", "12"], ["KSW1", "A"]]}, + {name: "Kenc.b", pads: [["KU2", "11"], ["KSW1", "B"]]}, + {name: "Kenc.sw", pads: [["KU2", "31"], ["KSW1", "S1"]]}, + {name: "Ksw[0].out", pads: [["KU2", "4"], ["KSW2", "1"]]}, + {name: "Ksw[1].out", pads: [["KU2", "6"], ["KSW3", "1"]]}, + {name: "Ksw[2].out", pads: [["KU2", "7"], ["KSW4", "1"]]}, + {name: "Ksw[3].out", pads: [["KU2", "35"], ["KSW5", "1"]]}, + {name: "Ksw[4].out", pads: [["KU2", "38"], ["KSW6", "1"]]}, + {name: "Ksw[5].out", pads: [["KU2", "39"], ["KSW7", "1"]]}, + {name: "Koled.reset", pads: [["KU2", "8"], ["KJ3", "14"]]}, + {name: "Kio8_pur.io", pads: [["KU2", "10"], ["KU8", "2"], ["KR10", "2"]]}, + {name: "Krgb_shift.output", pads: [["KU8", "4"], ["KD4", "1"], ["KTP6", "1"]]}, + {name: "Krgb_knob.dout", pads: [["KD7", "3"], ["KD8", "1"]]}, + {name: "Krgb_ring.dout", pads: [["KD31", "3"], ["KD32", "1"]]}, + {name: "Kspk_dac.input", pads: [["KU2", "9"], ["KR11", "1"]]}, + {name: "Kspk_dac.output", pads: [["KTP7", "1"], ["KC21", "2"], ["KR11", "2"], ["KC18", "1"]]}, + {name: "Kspk_drv.spk.a", pads: [["KU9", "5"], ["KJ4", "1"]]}, + {name: "Kspk_drv.spk.b", pads: [["KU9", "8"], ["KJ4", "2"]]}, + {name: "Kv5v_sense.output", pads: [["KU2", "5"], ["KR12", "2"], ["KR13", "1"]]}, + {name: "Kusb.conn.cc.cc1", pads: [["KJ1", "A5"], ["KR1", "2"]]}, + {name: "Kusb.conn.cc.cc2", pads: [["KJ1", "B5"], ["KR2", "2"]]}, + {name: "Kmcu.program_uart_node.a_tx", pads: [["KU2", "37"], ["KJ2", "3"]]}, + {name: "Kmcu.program_uart_node.b_tx", pads: [["KU2", "36"], ["KJ2", "4"]]}, + {name: "Kmcu.program_en_node", pads: [["KU2", "3"], ["KJ2", "6"], ["KR3", "2"], ["KC5", "1"]]}, + {name: "Kmcu.program_boot_node", pads: [["KU2", "27"], ["KJ2", "2"]]}, + {name: "Kledr.res.a", pads: [["KR6", "1"], ["KD2", "1"]]}, + {name: "Kledy.res.a", pads: [["KR7", "1"], ["KD3", "1"]]}, + {name: "Kals.dvi_res.b", pads: [["KR8", "2"], ["KU4", "5"], ["KC7", "1"]]}, + {name: "Kdist.ic.gpio1", pads: [["KU5", "7"]]}, + {name: "Koled.c1_cap.pos", pads: [["KC11", "1"], ["KJ3", "4"]]}, + {name: "Koled.c1_cap.neg", pads: [["KC11", "2"], ["KJ3", "5"]]}, + {name: "Koled.c2_cap.pos", pads: [["KC12", "1"], ["KJ3", "2"]]}, + {name: "Koled.c2_cap.neg", pads: [["KC12", "2"], ["KJ3", "3"]]}, + {name: "Koled.iref_res.a", pads: [["KR9", "1"], ["KJ3", "26"]]}, + {name: "Koled.device.vcomh", pads: [["KJ3", "27"], ["KC13", "1"]]}, + {name: "Koled.device.vcc", pads: [["KJ3", "28"], ["KC16", "1"]]}, + {name: "Krgb_knob.led[0].dout", pads: [["KD4", "3"], ["KD5", "1"]]}, + {name: "Krgb_knob.led[1].dout", pads: [["KD5", "3"], ["KD6", "1"]]}, + {name: "Krgb_knob.led[2].dout", pads: [["KD6", "3"], ["KD7", "1"]]}, + {name: "Krgb_ring.led[0].dout", pads: [["KD8", "3"], ["KD9", "1"]]}, + {name: "Krgb_ring.led[1].dout", pads: [["KD9", "3"], ["KD10", "1"]]}, + {name: "Krgb_ring.led[2].dout", pads: [["KD10", "3"], ["KD11", "1"]]}, + {name: "Krgb_ring.led[3].dout", pads: [["KD11", "3"], ["KD12", "1"]]}, + {name: "Krgb_ring.led[4].dout", pads: [["KD12", "3"], ["KD13", "1"]]}, + {name: "Krgb_ring.led[5].dout", pads: [["KD13", "3"], ["KD14", "1"]]}, + {name: "Krgb_ring.led[6].dout", pads: [["KD14", "3"], ["KD15", "1"]]}, + {name: "Krgb_ring.led[7].dout", pads: [["KD15", "3"], ["KD16", "1"]]}, + {name: "Krgb_ring.led[8].dout", pads: [["KD16", "3"], ["KD17", "1"]]}, + {name: "Krgb_ring.led[9].dout", pads: [["KD17", "3"], ["KD18", "1"]]}, + {name: "Krgb_ring.led[10].dout", pads: [["KD18", "3"], ["KD19", "1"]]}, + {name: "Krgb_ring.led[11].dout", pads: [["KD19", "3"], ["KD20", "1"]]}, + {name: "Krgb_ring.led[12].dout", pads: [["KD20", "3"], ["KD21", "1"]]}, + {name: "Krgb_ring.led[13].dout", pads: [["KD21", "3"], ["KD22", "1"]]}, + {name: "Krgb_ring.led[14].dout", pads: [["KD22", "3"], ["KD23", "1"]]}, + {name: "Krgb_ring.led[15].dout", pads: [["KD23", "3"], ["KD24", "1"]]}, + {name: "Krgb_ring.led[16].dout", pads: [["KD24", "3"], ["KD25", "1"]]}, + {name: "Krgb_ring.led[17].dout", pads: [["KD25", "3"], ["KD26", "1"]]}, + {name: "Krgb_ring.led[18].dout", pads: [["KD26", "3"], ["KD27", "1"]]}, + {name: "Krgb_ring.led[19].dout", pads: [["KD27", "3"], ["KD28", "1"]]}, + {name: "Krgb_ring.led[20].dout", pads: [["KD28", "3"], ["KD29", "1"]]}, + {name: "Krgb_ring.led[21].dout", pads: [["KD29", "3"], ["KD30", "1"]]}, + {name: "Krgb_ring.led[22].dout", pads: [["KD30", "3"], ["KD31", "1"]]}, + {name: "Krgb_sw.led[0].dout", pads: [["KD32", "3"], ["KD33", "1"]]}, + {name: "Krgb_sw.led[1].dout", pads: [["KD33", "3"], ["KD34", "1"]]}, + {name: "Krgb_sw.led[2].dout", pads: [["KD34", "3"], ["KD35", "1"]]}, + {name: "Krgb_sw.led[3].dout", pads: [["KD35", "3"], ["KD36", "1"]]}, + {name: "Krgb_sw.led[4].dout", pads: [["KD36", "3"], ["KD37", "1"]]}, + {name: "Krgb_sw.dout", pads: [["KD37", "3"]]}, + {name: "Kspk_drv.inp_cap.pos", pads: [["KC21", "1"], ["KU9", "3"]]}, + {name: "Kspk_drv.inn_cap.pos", pads: [["KC22", "1"], ["KU9", "4"]]} +]) const limit0 = pt(-0.07874015748031496, -0.07874015748031496); -const limit1 = pt(4.298425196850395, 3.162598425196851); +const limit1 = pt(6.4622047244094505, 4.0511811023622055); const xMin = Math.min(limit0[0], limit1[0]); const xMax = Math.max(limit0[0], limit1[0]); const yMin = Math.min(limit0[1], limit1[1]); @@ -383,10 +533,10 @@ function NeopixelArrayCircular_4_rgb_knob(xy, rot=90, radius=1, startAngle=0, en for (i=0; i column common line diff --git a/examples/LedMatrix/LedMatrix.svgpcb.js b/examples/LedMatrix/LedMatrix.svgpcb.js index 8fabe62d1..f60d551e9 100644 --- a/examples/LedMatrix/LedMatrix.svgpcb.js +++ b/examples/LedMatrix/LedMatrix.svgpcb.js @@ -1,93 +1,141 @@ const board = new PCB(); -const matrix = CharlieplexedLedMatrix_5_6_matrix(pt(0, 0)) -const jlc_th_th1 = board.add(JlcToolingHole_1_152mm, { - translate: pt(1.107, 1.784), rotate: 0, - id: 'jlc_th_th1' +const matrix = CharlieplexedLedMatrix_5_6_matrix(pt(0.039, 0.039)) +// jlc_th.th1 +const H1 = board.add(JlcToolingHole_1_152mm, { + translate: pt(2.561, 1.518), rotate: 0, + id: 'H1' }) -const jlc_th_th2 = board.add(JlcToolingHole_1_152mm, { - translate: pt(1.146, 1.784), rotate: 0, - id: 'jlc_th_th2' +// jlc_th.th2 +const H2 = board.add(JlcToolingHole_1_152mm, { + translate: pt(2.600, 1.518), rotate: 0, + id: 'H2' }) -const jlc_th_th3 = board.add(JlcToolingHole_1_152mm, { - translate: pt(1.107, 1.823), rotate: 0, - id: 'jlc_th_th3' +// jlc_th.th3 +const H3 = board.add(JlcToolingHole_1_152mm, { + translate: pt(2.561, 1.557), rotate: 0, + id: 'H3' }) -const usb_conn = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { - translate: pt(1.225, 1.287), rotate: 0, - id: 'usb_conn' +// usb.conn +const J1 = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { + translate: pt(0.209, 1.683), rotate: 0, + id: 'J1' }) -const usb_cc_pull_cc1_res = board.add(R_0603_1608Metric, { - translate: pt(1.074, 1.542), rotate: 0, - id: 'usb_cc_pull_cc1_res' +// usb.cc_pull.cc1.res +const R1 = board.add(R_0603_1608Metric, { + translate: pt(0.058, 1.938), rotate: 0, + id: 'R1' }) -const usb_cc_pull_cc2_res = board.add(R_0603_1608Metric, { - translate: pt(1.230, 1.542), rotate: 0, - id: 'usb_cc_pull_cc2_res' +// usb.cc_pull.cc2.res +const R2 = board.add(R_0603_1608Metric, { + translate: pt(0.214, 1.938), rotate: 0, + id: 'R2' }) -const tp_vusb_tp = board.add(TestPoint_Keystone_5015_Micro_Minature, { - translate: pt(0.085, 1.837), rotate: 0, - id: 'tp_vusb_tp' +// tp_vusb.tp +const TP1 = board.add(TestPoint_Keystone_5015_Micro_Minature, { + translate: pt(1.539, 1.571), rotate: 0, + id: 'TP1' }) -const tp_gnd_tp = board.add(TestPoint_Keystone_5015_Micro_Minature, { - translate: pt(0.659, 1.837), rotate: 0, - id: 'tp_gnd_tp' +// tp_gnd.tp +const TP2 = board.add(TestPoint_Keystone_5015_Micro_Minature, { + translate: pt(1.826, 1.571), rotate: 0, + id: 'TP2' }) -const reg_3v3_ic = board.add(SOT_223_3_TabPin2, { - translate: pt(1.726, 1.264), rotate: 0, - id: 'reg_3v3_ic' +// reg_3v3.ic +const U1 = board.add(SOT_223_3_TabPin2, { + translate: pt(0.710, 1.660), rotate: 0, + id: 'U1' }) -const reg_3v3_in_cap_cap = board.add(C_0603_1608Metric, { - translate: pt(1.784, 1.474), rotate: 0, - id: 'reg_3v3_in_cap_cap' +// reg_3v3.in_cap.cap +const C1 = board.add(C_0603_1608Metric, { + translate: pt(0.769, 1.870), rotate: 0, + id: 'C1' }) -const reg_3v3_out_cap_cap = board.add(C_0805_2012Metric, { - translate: pt(1.619, 1.483), rotate: 0, - id: 'reg_3v3_out_cap_cap' +// reg_3v3.out_cap.cap +const C2 = board.add(C_0805_2012Metric, { + translate: pt(0.604, 1.880), rotate: 0, + id: 'C2' }) -const tp_3v3_tp = board.add(TestPoint_Keystone_5015_Micro_Minature, { - translate: pt(0.372, 1.837), rotate: 0, - id: 'tp_3v3_tp' +// tp_3v3.tp +const TP3 = board.add(TestPoint_Keystone_5015_Micro_Minature, { + translate: pt(2.114, 1.571), rotate: 0, + id: 'TP3' }) -const prot_3v3_diode = board.add(D_SOD_323, { - translate: pt(0.926, 1.821), rotate: 0, - id: 'prot_3v3_diode' +// prot_3v3.diode +const D1 = board.add(D_SOD_323, { + translate: pt(2.380, 1.556), rotate: 0, + id: 'D1' }) -const mcu_ic = board.add(ESP_WROOM_02, { - translate: pt(0.561, 0.281), rotate: 0, - id: 'mcu_ic' +// mcu.ic +const U2 = board.add(ESP_WROOM_02, { + translate: pt(1.679, 0.281), rotate: 0, + id: 'U2' }) -const mcu_vcc_cap0_cap = board.add(C_0805_2012Metric, { - translate: pt(1.228, 0.783), rotate: 0, - id: 'mcu_vcc_cap0_cap' +// mcu.vcc_cap0.cap +const C3 = board.add(C_0805_2012Metric, { + translate: pt(2.346, 0.783), rotate: 0, + id: 'C3' }) -const mcu_vcc_cap1_cap = board.add(C_0603_1608Metric, { - translate: pt(1.393, 0.773), rotate: 0, - id: 'mcu_vcc_cap1_cap' +// mcu.vcc_cap1.cap +const C4 = board.add(C_0603_1608Metric, { + translate: pt(2.511, 0.773), rotate: 0, + id: 'C4' }) -const mcu_prog_conn = board.add(PinHeader_1x04_P2_54mm_Vertical, { - translate: pt(1.232, 0.370), rotate: 0, - id: 'mcu_prog_conn' +// mcu.prog.conn +const J2 = board.add(PinHeader_1x04_P2_54mm_Vertical, { + translate: pt(2.350, 0.370), rotate: 0, + id: 'J2' }) -const mcu_boot_package = board.add(SW_SPST_SKQG_WithoutStem, { - translate: pt(1.329, 0.593), rotate: 0, - id: 'mcu_boot_package' +// mcu.boot.package +const SW1 = board.add(SW_SPST_SKQG_WithoutStem, { + translate: pt(2.447, 0.593), rotate: 0, + id: 'SW1' }) -const mcu_en_pull_rc_r = board.add(R_0603_1608Metric, { - translate: pt(1.220, 0.889), rotate: 0, - id: 'mcu_en_pull_rc_r' +// mcu.en_pull.rc.r +const R3 = board.add(R_0603_1608Metric, { + translate: pt(2.338, 0.889), rotate: 0, + id: 'R3' }) -const mcu_en_pull_rc_c = board.add(C_0603_1608Metric, { - translate: pt(1.376, 0.889), rotate: 0, - id: 'mcu_en_pull_rc_c' +// mcu.en_pull.rc.c +const C5 = board.add(C_0603_1608Metric, { + translate: pt(2.494, 0.889), rotate: 0, + id: 'C5' }) -const sw1_package = board.add(SW_SPST_SKQG_WithoutStem, { - translate: pt(2.184, 1.234), rotate: 0, - id: 'sw1_package' +// sw1.package +const SW2 = board.add(SW_SPST_SKQG_WithoutStem, { + translate: pt(1.169, 1.630), rotate: 0, + id: 'SW2' }) +board.setNetlist([ + {name: "vusb", pads: [["J1", "A4"], ["J1", "B9"], ["J1", "B4"], ["J1", "A9"], ["TP1", "1"], ["U1", "3"], ["C1", "1"]]}, + {name: "gnd", pads: [["J1", "A1"], ["J1", "B12"], ["J1", "B1"], ["J1", "A12"], ["TP2", "1"], ["U1", "1"], ["D1", "2"], ["U2", "9"], ["U2", "19"], ["SW2", "2"], ["J1", "S1"], ["C1", "2"], ["C2", "2"], ["C3", "2"], ["C4", "2"], ["J2", "4"], ["SW1", "2"], ["C5", "2"], ["R1", "1"], ["R2", "1"]]}, + {name: "v3v3", pads: [["U1", "2"], ["TP3", "1"], ["D1", "1"], ["U2", "1"], ["C2", "1"], ["U2", "7"], ["U2", "16"], ["C3", "1"], ["C4", "1"], ["J2", "1"], ["R3", "1"]]}, + {name: "sw1.out", pads: [["U2", "18"], ["SW2", "1"]]}, + {name: "mcu.gpio.led_0", pads: [["U2", "3"], ["R4", "2"], ["D8", "2"], ["D14", "2"], ["D20", "2"], ["D26", "2"]]}, + {name: "mcu.gpio.led_1", pads: [["U2", "4"], ["D2", "2"], ["R5", "2"], ["D15", "2"], ["D21", "2"], ["D27", "2"]]}, + {name: "mcu.gpio.led_2", pads: [["U2", "5"], ["D3", "2"], ["D9", "2"], ["R6", "2"], ["D22", "2"], ["D28", "2"]]}, + {name: "mcu.gpio.led_3", pads: [["U2", "6"], ["D4", "2"], ["D10", "2"], ["D16", "2"], ["R7", "2"], ["D29", "2"]]}, + {name: "mcu.gpio.led_4", pads: [["U2", "17"], ["D5", "2"], ["D11", "2"], ["D17", "2"], ["D23", "2"], ["R8", "2"]]}, + {name: "mcu.gpio.led_5", pads: [["U2", "15"], ["D6", "2"], ["D12", "2"], ["D18", "2"], ["D24", "2"], ["D30", "2"]]}, + {name: "mcu.gpio.led_6", pads: [["U2", "10"], ["D7", "2"], ["D13", "2"], ["D19", "2"], ["D25", "2"], ["D31", "2"]]}, + {name: "usb.usb.dp", pads: [["J1", "A6"], ["J1", "B6"]]}, + {name: "usb.usb.dm", pads: [["J1", "A7"], ["J1", "B7"]]}, + {name: "usb.conn.cc.cc1", pads: [["J1", "A5"], ["R1", "2"]]}, + {name: "usb.conn.cc.cc2", pads: [["J1", "B5"], ["R2", "2"]]}, + {name: "mcu.program_uart_node.a_tx", pads: [["U2", "12"], ["J2", "2"]]}, + {name: "mcu.program_uart_node.b_tx", pads: [["U2", "11"], ["J2", "3"]]}, + {name: "mcu.program_en_node", pads: [["U2", "2"], ["R3", "2"], ["C5", "1"]]}, + {name: "mcu.program_boot_node", pads: [["U2", "8"], ["SW1", "1"]]}, + {name: "matrix.led[0_0].k", pads: [["D2", "1"], ["R4", "1"], ["D3", "1"], ["D4", "1"], ["D5", "1"], ["D6", "1"], ["D7", "1"]]}, + {name: "matrix.led[0_1].k", pads: [["D8", "1"], ["R5", "1"], ["D9", "1"], ["D10", "1"], ["D11", "1"], ["D12", "1"], ["D13", "1"]]}, + {name: "matrix.led[0_2].k", pads: [["D14", "1"], ["R6", "1"], ["D15", "1"], ["D16", "1"], ["D17", "1"], ["D18", "1"], ["D19", "1"]]}, + {name: "matrix.led[0_3].k", pads: [["D20", "1"], ["R7", "1"], ["D21", "1"], ["D22", "1"], ["D23", "1"], ["D24", "1"], ["D25", "1"]]}, + {name: "matrix.led[0_4].k", pads: [["D26", "1"], ["R8", "1"], ["D27", "1"], ["D28", "1"], ["D29", "1"], ["D30", "1"], ["D31", "1"]]} +]) + const limit0 = pt(-0.07874015748031496, -0.07874015748031496); -const limit1 = pt(2.469685039370079, 2.0082677165354332); +const limit1 = pt(2.7322834645669296, 2.084645669291339); const xMin = Math.min(limit0[0], limit1[0]); const xMax = Math.max(limit0[0], limit1[0]); const yMin = Math.min(limit0[1], limit1[1]); @@ -124,7 +172,7 @@ renderPCB({ mmPerUnit: 25.4 }) -function CharlieplexedLedMatrix_5_6_matrix(xy, colSpacing=1, rowSpacing=1) { +function CharlieplexedLedMatrix_5_6_matrix(xy, colSpacing=0.2, rowSpacing=0.2) { const kXCount = 5 // number of columns (x dimension) const kYCount = 6 // number of rows (y dimension) @@ -150,9 +198,9 @@ function CharlieplexedLedMatrix_5_6_matrix(xy, colSpacing=1, rowSpacing=1) { for (let xIndex=0; xIndex < kXCount; xIndex++) { ledPos = [xy[0] + colSpacing * xIndex, xy[1] + rowSpacing * yIndex] - obj.footprints[`led[${yIndex}_${xIndex}]`] = led = board.add(LED_0603_1608Metric, { + obj.footprints[`D${2 + yIndex + xIndex * kYCount}`] = led = board.add(LED_0603_1608Metric, { translate: ledPos, - id: `matrix_led_${yIndex}_${xIndex}_` + id: `D${2 + yIndex + xIndex * kYCount}` }) rowLeds.push(led) @@ -197,9 +245,9 @@ function CharlieplexedLedMatrix_5_6_matrix(xy, colSpacing=1, rowSpacing=1) { allResistors = [] for (let xIndex=0; xIndex < kXCount; xIndex++) { const resPos = [xy[0] + colSpacing * xIndex, xy[1] + rowSpacing * kYCount] - obj.footprints[`res[${xIndex + 1}]`] = res = board.add(R_0603_1608Metric, { + obj.footprints[`R${4 + xIndex + 1}`] = res = board.add(R_0603_1608Metric, { translate: resPos, - id: `matrix_res_${xIndex + 1}_` + id: `R${4 + xIndex}` }) allResistors.push(res) diff --git a/examples/Multimeter/Multimeter.svgpcb.js b/examples/Multimeter/Multimeter.svgpcb.js index f67808c80..1129c2433 100644 --- a/examples/Multimeter/Multimeter.svgpcb.js +++ b/examples/Multimeter/Multimeter.svgpcb.js @@ -1,434 +1,634 @@ const board = new PCB(); -const jlc_th_th1 = board.add(JlcToolingHole_1_152mm, { +// jlc_th.th1 +const H1 = board.add(JlcToolingHole_1_152mm, { translate: pt(2.913, 2.557), rotate: 0, - id: 'jlc_th_th1' + id: 'H1' }) -const jlc_th_th2 = board.add(JlcToolingHole_1_152mm, { +// jlc_th.th2 +const H2 = board.add(JlcToolingHole_1_152mm, { translate: pt(2.952, 2.557), rotate: 0, - id: 'jlc_th_th2' + id: 'H2' }) -const jlc_th_th3 = board.add(JlcToolingHole_1_152mm, { +// jlc_th.th3 +const H3 = board.add(JlcToolingHole_1_152mm, { translate: pt(2.913, 2.597), rotate: 0, - id: 'jlc_th_th3' + id: 'H3' }) -const bat = board.add(BatteryHolder_Keystone_2460_1xAA, { +// bat +const U1 = board.add(BatteryHolder_Keystone_2460_1xAA, { translate: pt(1.063, 0.343), rotate: 0, - id: 'bat' + id: 'U1' }) -const data_usb_conn = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { +// data_usb.conn +const J1 = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { translate: pt(2.365, 1.237), rotate: 0, - id: 'data_usb_conn' + id: 'J1' }) -const data_usb_cc_pull_cc1_res = board.add(R_0603_1608Metric, { +// data_usb.cc_pull.cc1.res +const R1 = board.add(R_0603_1608Metric, { translate: pt(2.213, 1.492), rotate: 0, - id: 'data_usb_cc_pull_cc1_res' + id: 'R1' }) -const data_usb_cc_pull_cc2_res = board.add(R_0603_1608Metric, { +// data_usb.cc_pull.cc2.res +const R2 = board.add(R_0603_1608Metric, { translate: pt(2.369, 1.492), rotate: 0, - id: 'data_usb_cc_pull_cc2_res' + id: 'R2' }) -const gate_pwr_gate_pull_res = board.add(R_0603_1608Metric, { +// gate.pwr_gate.pull_res +const R3 = board.add(R_0603_1608Metric, { translate: pt(3.316, 0.466), rotate: 0, - id: 'gate_pwr_gate_pull_res' + id: 'R3' }) -const gate_pwr_gate_pwr_fet = board.add(SOT_23, { +// gate.pwr_gate.pwr_fet +const Q1 = board.add(SOT_23, { translate: pt(3.707, 0.067), rotate: 0, - id: 'gate_pwr_gate_pwr_fet' + id: 'Q1' }) -const gate_pwr_gate_amp_res = board.add(R_0603_1608Metric, { +// gate.pwr_gate.amp_res +const R4 = board.add(R_0603_1608Metric, { translate: pt(3.472, 0.466), rotate: 0, - id: 'gate_pwr_gate_amp_res' + id: 'R4' }) -const gate_pwr_gate_amp_fet = board.add(SOT_23, { +// gate.pwr_gate.amp_fet +const Q2 = board.add(SOT_23, { translate: pt(3.333, 0.331), rotate: 0, - id: 'gate_pwr_gate_amp_fet' + id: 'Q2' }) -const gate_pwr_gate_ctl_diode = board.add(D_SOD_323, { +// gate.pwr_gate.ctl_diode +const D1 = board.add(D_SOD_323, { translate: pt(3.512, 0.301), rotate: 0, - id: 'gate_pwr_gate_ctl_diode' + id: 'D1' }) -const gate_pwr_gate_btn_diode = board.add(D_SOD_323, { +// gate.pwr_gate.btn_diode +const D2 = board.add(D_SOD_323, { translate: pt(3.677, 0.301), rotate: 0, - id: 'gate_pwr_gate_btn_diode' + id: 'D2' }) -const gate_btn_package = board.add(SW_SPST_SKQG_WithoutStem, { +// gate.btn.package +const SW1 = board.add(SW_SPST_SKQG_WithoutStem, { translate: pt(3.425, 0.112), rotate: 0, - id: 'gate_btn_package' + id: 'SW1' }) -const reg_5v_ic = board.add(SOT_23_5, { +// reg_5v.ic +const U2 = board.add(SOT_23_5, { translate: pt(2.770, 1.752), rotate: 0, - id: 'reg_5v_ic' + id: 'U2' }) -const reg_5v_power_path_inductor = board.add(L_0603_1608Metric, { +// reg_5v.power_path.inductor +const L1 = board.add(L_0603_1608Metric, { translate: pt(2.920, 1.887), rotate: 0, - id: 'reg_5v_power_path_inductor' + id: 'L1' }) -const reg_5v_power_path_in_cap_cap = board.add(C_0805_2012Metric, { +// reg_5v.power_path.in_cap.cap +const C1 = board.add(C_0805_2012Metric, { translate: pt(2.957, 1.724), rotate: 0, - id: 'reg_5v_power_path_in_cap_cap' + id: 'C1' }) -const reg_5v_power_path_out_cap_cap = board.add(C_0805_2012Metric, { +// reg_5v.power_path.out_cap.cap +const C2 = board.add(C_0805_2012Metric, { translate: pt(2.756, 1.897), rotate: 0, - id: 'reg_5v_power_path_out_cap_cap' + id: 'C2' }) -const reg_5v_ce_res_res = board.add(R_0603_1608Metric, { +// reg_5v.ce_res.res +const R5 = board.add(R_0603_1608Metric, { translate: pt(2.747, 2.004), rotate: 0, - id: 'reg_5v_ce_res_res' + id: 'R5' }) -const tp_5v_tp = board.add(TestPoint_Keystone_5015_Micro_Minature, { - translate: pt(1.704, 2.611), rotate: 0, - id: 'tp_5v_tp' +// tp_5v.tp +const TP1 = board.add(TestPoint_Keystone_5015_Micro_Minature, { + translate: pt(0.554, 2.611), rotate: 0, + id: 'TP1' }) -const prot_5v_diode = board.add(D_MiniMELF, { +// prot_5v.diode +const D3 = board.add(D_MiniMELF, { translate: pt(2.011, 2.601), rotate: 0, - id: 'prot_5v_diode' + id: 'D3' }) -const reg_3v3_ic = board.add(SOT_23_5, { - translate: pt(1.030, 2.276), rotate: 0, - id: 'reg_3v3_ic' +// reg_3v3.ic +const U3 = board.add(SOT_23_5, { + translate: pt(0.081, 2.276), rotate: 0, + id: 'U3' }) -const reg_3v3_in_cap_cap = board.add(C_0603_1608Metric, { - translate: pt(1.008, 2.411), rotate: 0, - id: 'reg_3v3_in_cap_cap' +// reg_3v3.in_cap.cap +const C3 = board.add(C_0603_1608Metric, { + translate: pt(0.058, 2.411), rotate: 0, + id: 'C3' }) -const reg_3v3_out_cap_cap = board.add(C_0603_1608Metric, { - translate: pt(1.164, 2.411), rotate: 0, - id: 'reg_3v3_out_cap_cap' +// reg_3v3.out_cap.cap +const C4 = board.add(C_0603_1608Metric, { + translate: pt(0.214, 2.411), rotate: 0, + id: 'C4' }) -const tp_3v3_tp = board.add(TestPoint_Keystone_5015_Micro_Minature, { - translate: pt(1.129, 2.611), rotate: 0, - id: 'tp_3v3_tp' +// tp_3v3.tp +const TP2 = board.add(TestPoint_Keystone_5015_Micro_Minature, { + translate: pt(0.841, 2.611), rotate: 0, + id: 'TP2' }) -const prot_3v3_diode = board.add(D_SOD_323, { +// prot_3v3.diode +const D4 = board.add(D_SOD_323, { translate: pt(2.297, 2.595), rotate: 0, - id: 'prot_3v3_diode' + id: 'D4' }) -const reg_analog_ic = board.add(SOT_23_5, { - translate: pt(0.360, 2.276), rotate: 0, - id: 'reg_analog_ic' +// reg_analog.ic +const U4 = board.add(SOT_23_5, { + translate: pt(0.471, 2.276), rotate: 0, + id: 'U4' }) -const reg_analog_in_cap_cap = board.add(C_0603_1608Metric, { - translate: pt(0.338, 2.411), rotate: 0, - id: 'reg_analog_in_cap_cap' +// reg_analog.in_cap.cap +const C5 = board.add(C_0603_1608Metric, { + translate: pt(0.449, 2.411), rotate: 0, + id: 'C5' }) -const reg_analog_out_cap_cap = board.add(C_0603_1608Metric, { - translate: pt(0.494, 2.411), rotate: 0, - id: 'reg_analog_out_cap_cap' +// reg_analog.out_cap.cap +const C6 = board.add(C_0603_1608Metric, { + translate: pt(0.605, 2.411), rotate: 0, + id: 'C6' }) -const tp_analog_tp = board.add(TestPoint_Keystone_5015_Micro_Minature, { - translate: pt(0.841, 2.611), rotate: 0, - id: 'tp_analog_tp' +// tp_analog.tp +const TP3 = board.add(TestPoint_Keystone_5015_Micro_Minature, { + translate: pt(1.129, 2.611), rotate: 0, + id: 'TP3' }) -const prot_analog_diode = board.add(D_SOD_323, { +// prot_analog.diode +const D5 = board.add(D_SOD_323, { translate: pt(2.541, 2.595), rotate: 0, - id: 'prot_analog_diode' + id: 'D5' }) -const mcu_ic = board.add(Raytac_MDBT50Q, { +// mcu.ic +const U5 = board.add(Raytac_MDBT50Q, { translate: pt(0.226, 0.325), rotate: 0, - id: 'mcu_ic' + id: 'U5' }) -const mcu_swd_conn = board.add(Tag_Connect_TC2050_IDC_NL_2x05_P1_27mm_Vertical, { +// mcu.swd.conn +const J2 = board.add(Tag_Connect_TC2050_IDC_NL_2x05_P1_27mm_Vertical, { translate: pt(0.245, 0.822), rotate: 0, - id: 'mcu_swd_conn' + id: 'J2' }) -const mcu_vcc_cap_cap = board.add(C_0805_2012Metric, { +// mcu.vcc_cap.cap +const C7 = board.add(C_0805_2012Metric, { translate: pt(0.596, 0.728), rotate: 0, - id: 'mcu_vcc_cap_cap' + id: 'C7' }) -const mcu_usb_res_res_dp = board.add(R_0603_1608Metric, { +// mcu.usb_res.res_dp +const R6 = board.add(R_0603_1608Metric, { translate: pt(0.588, 0.834), rotate: 0, - id: 'mcu_usb_res_res_dp' + id: 'R6' }) -const mcu_usb_res_res_dm = board.add(R_0603_1608Metric, { +// mcu.usb_res.res_dm +const R7 = board.add(R_0603_1608Metric, { translate: pt(0.744, 0.834), rotate: 0, - id: 'mcu_usb_res_res_dm' + id: 'R7' }) -const mcu_vbus_cap_cap = board.add(C_0805_2012Metric, { +// mcu.vbus_cap.cap +const C8 = board.add(C_0805_2012Metric, { translate: pt(0.770, 0.728), rotate: 0, - id: 'mcu_vbus_cap_cap' + id: 'C8' }) -const vbatsense_div_top_res = board.add(R_0603_1608Metric, { +// vbatsense.div.top_res +const R8 = board.add(R_0603_1608Metric, { translate: pt(3.628, 2.237), rotate: 0, - id: 'vbatsense_div_top_res' + id: 'R8' }) -const vbatsense_div_bottom_res = board.add(R_0603_1608Metric, { +// vbatsense.div.bottom_res +const R9 = board.add(R_0603_1608Metric, { translate: pt(3.628, 2.334), rotate: 0, - id: 'vbatsense_div_bottom_res' + id: 'R9' }) -const usb_esd = board.add(SOT_23, { +// usb_esd +const U6 = board.add(SOT_23, { translate: pt(2.798, 2.624), rotate: 0, - id: 'usb_esd' -}) -const rgb_package = board.add(LED_LiteOn_LTST_C19HE1WT, { - translate: pt(2.921, 2.264), rotate: 0, - id: 'rgb_package' + id: 'U6' }) -const rgb_red_res = board.add(R_0603_1608Metric, { - translate: pt(3.060, 2.237), rotate: 0, - id: 'rgb_red_res' +// rgb.package +const D6 = board.add(LED_LiteOn_LTST_C19HE1WT, { + translate: pt(2.677, 2.264), rotate: 0, + id: 'D6' }) -const rgb_green_res = board.add(R_0603_1608Metric, { - translate: pt(2.938, 2.387), rotate: 0, - id: 'rgb_green_res' +// rgb.red_res +const R10 = board.add(R_0603_1608Metric, { + translate: pt(2.816, 2.237), rotate: 0, + id: 'R10' }) -const rgb_blue_res = board.add(R_0603_1608Metric, { - translate: pt(3.094, 2.387), rotate: 0, - id: 'rgb_blue_res' +// rgb.green_res +const R11 = board.add(R_0603_1608Metric, { + translate: pt(2.694, 2.387), rotate: 0, + id: 'R11' }) -const sw1_package = board.add(SW_SPST_SKQG_WithoutStem, { - translate: pt(1.960, 2.321), rotate: 0, - id: 'sw1_package' +// rgb.blue_res +const R12 = board.add(R_0603_1608Metric, { + translate: pt(2.850, 2.387), rotate: 0, + id: 'R12' }) -const sw2_package = board.add(SW_SPST_SKQG_WithoutStem, { +// sw1.package +const SW2 = board.add(SW_SPST_SKQG_WithoutStem, { translate: pt(1.507, 2.321), rotate: 0, - id: 'sw2_package' + id: 'SW2' }) -const lcd_device_conn = board.add(Hirose_FH12_8S_0_5SH_1x08_1MP_P0_50mm_Horizontal, { +// sw2.package +const SW3 = board.add(SW_SPST_SKQG_WithoutStem, { + translate: pt(1.960, 2.321), rotate: 0, + id: 'SW3' +}) +// lcd.device.conn +const J3 = board.add(Hirose_FH12_8S_0_5SH_1x08_1MP_P0_50mm_Horizontal, { translate: pt(2.891, 1.265), rotate: 0, - id: 'lcd_device_conn' + id: 'J3' }) -const lcd_led_res = board.add(R_0603_1608Metric, { +// lcd.led_res +const R13 = board.add(R_0603_1608Metric, { translate: pt(2.750, 1.452), rotate: 0, - id: 'lcd_led_res' + id: 'R13' }) -const lcd_vdd_cap_cap = board.add(C_0603_1608Metric, { +// lcd.vdd_cap.cap +const C9 = board.add(C_0603_1608Metric, { translate: pt(2.906, 1.452), rotate: 0, - id: 'lcd_vdd_cap_cap' + id: 'C9' }) -const spk_dac_rc_r = board.add(R_0603_1608Metric, { +// spk_dac.rc.r +const R14 = board.add(R_0603_1608Metric, { translate: pt(0.058, 2.586), rotate: 0, - id: 'spk_dac_rc_r' + id: 'R14' }) -const spk_dac_rc_c = board.add(C_0603_1608Metric, { +// spk_dac.rc.c +const C10 = board.add(C_0603_1608Metric, { translate: pt(0.058, 2.683), rotate: 0, - id: 'spk_dac_rc_c' + id: 'C10' }) -const spk_tp_tp = board.add(TestPoint_Keystone_5015_Micro_Minature, { - translate: pt(0.554, 2.611), rotate: 0, - id: 'spk_tp_tp' +// spk_tp.tp +const TP4 = board.add(TestPoint_Keystone_5015_Micro_Minature, { + translate: pt(1.416, 2.611), rotate: 0, + id: 'TP4' }) -const spk_drv_ic = board.add(MSOP_8_1EP_3x3mm_P0_65mm_EP1_68x1_88mm_ThermalVias, { +// spk_drv.ic +const U7 = board.add(MSOP_8_1EP_3x3mm_P0_65mm_EP1_68x1_88mm_ThermalVias, { translate: pt(3.265, 1.754), rotate: 0, - id: 'spk_drv_ic' + id: 'U7' }) -const spk_drv_pwr_cap_cap = board.add(C_0603_1608Metric, { +// spk_drv.pwr_cap.cap +const C11 = board.add(C_0603_1608Metric, { translate: pt(3.200, 1.891), rotate: 0, - id: 'spk_drv_pwr_cap_cap' + id: 'C11' }) -const spk_drv_bulk_cap_cap = board.add(C_0805_2012Metric, { +// spk_drv.bulk_cap.cap +const C12 = board.add(C_0805_2012Metric, { translate: pt(3.494, 1.724), rotate: 0, - id: 'spk_drv_bulk_cap_cap' + id: 'C12' }) -const spk_drv_inp_res = board.add(R_0603_1608Metric, { +// spk_drv.inp_res +const R15 = board.add(R_0603_1608Metric, { translate: pt(3.356, 1.891), rotate: 0, - id: 'spk_drv_inp_res' + id: 'R15' }) -const spk_drv_inp_cap = board.add(C_0603_1608Metric, { +// spk_drv.inp_cap +const C13 = board.add(C_0603_1608Metric, { translate: pt(3.512, 1.891), rotate: 0, - id: 'spk_drv_inp_cap' + id: 'C13' }) -const spk_drv_inn_res = board.add(R_0603_1608Metric, { +// spk_drv.inn_res +const R16 = board.add(R_0603_1608Metric, { translate: pt(3.200, 1.988), rotate: 0, - id: 'spk_drv_inn_res' + id: 'R16' }) -const spk_drv_inn_cap = board.add(C_0603_1608Metric, { +// spk_drv.inn_cap +const C14 = board.add(C_0603_1608Metric, { translate: pt(3.356, 1.988), rotate: 0, - id: 'spk_drv_inn_cap' + id: 'C14' }) -const spk_conn = board.add(JST_PH_B2B_PH_K_1x02_P2_00mm_Vertical, { +// spk.conn +const J4 = board.add(JST_PH_B2B_PH_K_1x02_P2_00mm_Vertical, { translate: pt(2.342, 2.339), rotate: 0, - id: 'spk_conn' + id: 'J4' }) -const ref_div_div_top_res = board.add(R_0603_1608Metric, { +// ref_div.div.top_res +const R17 = board.add(R_0603_1608Metric, { translate: pt(0.293, 2.586), rotate: 0, - id: 'ref_div_div_top_res' + id: 'R17' }) -const ref_div_div_bottom_res = board.add(R_0603_1608Metric, { +// ref_div.div.bottom_res +const R18 = board.add(R_0603_1608Metric, { translate: pt(0.293, 2.683), rotate: 0, - id: 'ref_div_div_bottom_res' + id: 'R18' }) -const ref_buf_amp_ic = board.add(SOT_23_6, { - translate: pt(0.751, 2.276), rotate: 0, - id: 'ref_buf_amp_ic' +// ref_buf.amp.ic +const U8 = board.add(SOT_23_6, { + translate: pt(0.862, 2.276), rotate: 0, + id: 'U8' }) -const ref_buf_amp_vdd_cap_cap = board.add(C_0603_1608Metric, { - translate: pt(0.728, 2.411), rotate: 0, - id: 'ref_buf_amp_vdd_cap_cap' +// ref_buf.amp.vdd_cap.cap +const C15 = board.add(C_0603_1608Metric, { + translate: pt(0.839, 2.411), rotate: 0, + id: 'C15' }) -const inn = board.add(CLIFF_FCR7350, { +// inn +const J5 = board.add(CLIFF_FCR7350, { translate: pt(1.083, 1.927), rotate: 0, - id: 'inn' + id: 'J5' }) -const inn_mux_device_ic = board.add(SOT_363_SC_70_6, { - translate: pt(2.698, 2.264), rotate: 0, - id: 'inn_mux_device_ic' +// inn_mux.device.ic +const U9 = board.add(SOT_363_SC_70_6, { + translate: pt(3.089, 2.264), rotate: 0, + id: 'U9' }) -const inn_mux_device_vdd_cap_cap = board.add(C_0603_1608Metric, { - translate: pt(2.694, 2.387), rotate: 0, - id: 'inn_mux_device_vdd_cap_cap' +// inn_mux.device.vdd_cap.cap +const C16 = board.add(C_0603_1608Metric, { + translate: pt(3.084, 2.387), rotate: 0, + id: 'C16' }) -const inp = board.add(CLIFF_FCR7350, { +// inp +const J6 = board.add(CLIFF_FCR7350, { translate: pt(2.427, 1.927), rotate: 0, - id: 'inp' + id: 'J6' }) -const measure_res = board.add(R_2512_6332Metric, { +// measure.res +const R19 = board.add(R_2512_6332Metric, { translate: pt(0.150, 1.148), rotate: 0, - id: 'measure_res' + id: 'R19' }) -const measure_range_switch_sw_0_0__ic = board.add(SOT_363_SC_70_6, { +// measure.range.switch.sw[0_0].ic +const U10 = board.add(SOT_363_SC_70_6, { translate: pt(0.403, 1.128), rotate: 0, - id: 'measure_range_switch_sw_0_0__ic' + id: 'U10' }) -const measure_range_switch_sw_0_0__vdd_cap_cap = board.add(C_0603_1608Metric, { +// measure.range.switch.sw[0_0].vdd_cap.cap +const C17 = board.add(C_0603_1608Metric, { translate: pt(0.389, 1.292), rotate: 0, - id: 'measure_range_switch_sw_0_0__vdd_cap_cap' + id: 'C17' }) -const measure_range_switch_sw_0_1__ic = board.add(SOT_363_SC_70_6, { +// measure.range.switch.sw[0_1].ic +const U11 = board.add(SOT_363_SC_70_6, { translate: pt(0.063, 1.318), rotate: 0, - id: 'measure_range_switch_sw_0_1__ic' + id: 'U11' }) -const measure_range_switch_sw_0_1__vdd_cap_cap = board.add(C_0603_1608Metric, { +// measure.range.switch.sw[0_1].vdd_cap.cap +const C18 = board.add(C_0603_1608Metric, { translate: pt(0.058, 1.441), rotate: 0, - id: 'measure_range_switch_sw_0_1__vdd_cap_cap' + id: 'C18' }) -const measure_range_switch_sw_1_0__ic = board.add(SOT_363_SC_70_6, { +// measure.range.switch.sw[1_0].ic +const U12 = board.add(SOT_363_SC_70_6, { translate: pt(0.228, 1.318), rotate: 0, - id: 'measure_range_switch_sw_1_0__ic' + id: 'U12' }) -const measure_range_switch_sw_1_0__vdd_cap_cap = board.add(C_0603_1608Metric, { +// measure.range.switch.sw[1_0].vdd_cap.cap +const C19 = board.add(C_0603_1608Metric, { translate: pt(0.214, 1.441), rotate: 0, - id: 'measure_range_switch_sw_1_0__vdd_cap_cap' + id: 'C19' }) -const measure_range_res_0_ = board.add(R_0603_1608Metric, { +// measure.range.res[0] +const R20 = board.add(R_0603_1608Metric, { translate: pt(0.370, 1.441), rotate: 0, - id: 'measure_range_res_0_' + id: 'R20' }) -const measure_range_res_1_ = board.add(R_0603_1608Metric, { +// measure.range.res[1] +const R21 = board.add(R_0603_1608Metric, { translate: pt(0.526, 1.441), rotate: 0, - id: 'measure_range_res_1_' + id: 'R21' }) -const measure_range_res_2_ = board.add(R_0603_1608Metric, { +// measure.range.res[2] +const R22 = board.add(R_0603_1608Metric, { translate: pt(0.058, 1.538), rotate: 0, - id: 'measure_range_res_2_' + id: 'R22' }) -const measure_buffer_amp_ic = board.add(SOT_23_6, { - translate: pt(0.081, 2.276), rotate: 0, - id: 'measure_buffer_amp_ic' +// measure_buffer.amp.ic +const U13 = board.add(SOT_23_6, { + translate: pt(1.141, 2.276), rotate: 0, + id: 'U13' }) -const measure_buffer_amp_vdd_cap_cap = board.add(C_0603_1608Metric, { - translate: pt(0.058, 2.411), rotate: 0, - id: 'measure_buffer_amp_vdd_cap_cap' +// measure_buffer.amp.vdd_cap.cap +const C20 = board.add(C_0603_1608Metric, { + translate: pt(1.119, 2.411), rotate: 0, + id: 'C20' }) -const tp_measure_tp = board.add(TestPoint_Keystone_5015_Micro_Minature, { - translate: pt(1.416, 2.611), rotate: 0, - id: 'tp_measure_tp' +// tp_measure.tp +const TP5 = board.add(TestPoint_Keystone_5015_Micro_Minature, { + translate: pt(1.704, 2.611), rotate: 0, + id: 'TP5' }) -const adc_ic = board.add(TSSOP_20_4_4x6_5mm_P0_65mm, { +// adc.ic +const U14 = board.add(TSSOP_20_4_4x6_5mm_P0_65mm, { translate: pt(1.712, 1.210), rotate: 0, - id: 'adc_ic' + id: 'U14' }) -const adc_avdd_res_res = board.add(R_0603_1608Metric, { +// adc.avdd_res.res +const R23 = board.add(R_0603_1608Metric, { translate: pt(1.961, 1.218), rotate: 0, - id: 'adc_avdd_res_res' + id: 'R23' }) -const adc_dvdd_res_res = board.add(R_0603_1608Metric, { +// adc.dvdd_res.res +const R24 = board.add(R_0603_1608Metric, { translate: pt(1.961, 1.315), rotate: 0, - id: 'adc_dvdd_res_res' + id: 'R24' }) -const adc_avdd_cap_0_cap = board.add(C_0603_1608Metric, { +// adc.avdd_cap_0.cap +const C21 = board.add(C_0603_1608Metric, { translate: pt(1.619, 1.416), rotate: 0, - id: 'adc_avdd_cap_0_cap' + id: 'C21' }) -const adc_avdd_cap_1_cap = board.add(C_0603_1608Metric, { +// adc.avdd_cap_1.cap +const C22 = board.add(C_0603_1608Metric, { translate: pt(1.775, 1.416), rotate: 0, - id: 'adc_avdd_cap_1_cap' + id: 'C22' }) -const adc_dvdd_cap_0_cap = board.add(C_0603_1608Metric, { +// adc.dvdd_cap_0.cap +const C23 = board.add(C_0603_1608Metric, { translate: pt(1.931, 1.416), rotate: 0, - id: 'adc_dvdd_cap_0_cap' + id: 'C23' }) -const adc_dvdd_cap_1_cap = board.add(C_0603_1608Metric, { +// adc.dvdd_cap_1.cap +const C24 = board.add(C_0603_1608Metric, { translate: pt(1.619, 1.513), rotate: 0, - id: 'adc_dvdd_cap_1_cap' + id: 'C24' }) -const adc_vref_cap_cap = board.add(C_0805_2012Metric, { +// adc.vref_cap.cap +const C25 = board.add(C_0805_2012Metric, { translate: pt(1.970, 1.111), rotate: 0, - id: 'adc_vref_cap_cap' + id: 'C25' }) -const driver_fet = board.add(SOT_23, { +// driver.fet +const Q3 = board.add(SOT_23, { translate: pt(1.093, 1.139), rotate: 0, - id: 'driver_fet' + id: 'Q3' }) -const driver_amp_ic = board.add(SOT_23_6, { +// driver.amp.ic +const U15 = board.add(SOT_23_6, { translate: pt(1.289, 1.139), rotate: 0, - id: 'driver_amp_ic' + id: 'U15' }) -const driver_amp_vdd_cap_cap = board.add(C_0603_1608Metric, { +// driver.amp.vdd_cap.cap +const C26 = board.add(C_0603_1608Metric, { translate: pt(0.761, 1.428), rotate: 0, - id: 'driver_amp_vdd_cap_cap' + id: 'C26' }) -const driver_range_switch_sw_0_0__ic = board.add(SOT_363_SC_70_6, { +// driver.range.switch.sw[0_0].ic +const U16 = board.add(SOT_363_SC_70_6, { translate: pt(0.765, 1.305), rotate: 0, - id: 'driver_range_switch_sw_0_0__ic' + id: 'U16' }) -const driver_range_switch_sw_0_0__vdd_cap_cap = board.add(C_0603_1608Metric, { +// driver.range.switch.sw[0_0].vdd_cap.cap +const C27 = board.add(C_0603_1608Metric, { translate: pt(0.917, 1.428), rotate: 0, - id: 'driver_range_switch_sw_0_0__vdd_cap_cap' + id: 'C27' }) -const driver_range_switch_sw_0_1__ic = board.add(SOT_363_SC_70_6, { +// driver.range.switch.sw[0_1].ic +const U17 = board.add(SOT_363_SC_70_6, { translate: pt(0.931, 1.305), rotate: 0, - id: 'driver_range_switch_sw_0_1__ic' + id: 'U17' }) -const driver_range_switch_sw_0_1__vdd_cap_cap = board.add(C_0603_1608Metric, { +// driver.range.switch.sw[0_1].vdd_cap.cap +const C28 = board.add(C_0603_1608Metric, { translate: pt(1.072, 1.428), rotate: 0, - id: 'driver_range_switch_sw_0_1__vdd_cap_cap' + id: 'C28' }) -const driver_range_switch_sw_1_0__ic = board.add(SOT_363_SC_70_6, { +// driver.range.switch.sw[1_0].ic +const U18 = board.add(SOT_363_SC_70_6, { translate: pt(1.096, 1.305), rotate: 0, - id: 'driver_range_switch_sw_1_0__ic' + id: 'U18' }) -const driver_range_switch_sw_1_0__vdd_cap_cap = board.add(C_0603_1608Metric, { +// driver.range.switch.sw[1_0].vdd_cap.cap +const C29 = board.add(C_0603_1608Metric, { translate: pt(1.228, 1.428), rotate: 0, - id: 'driver_range_switch_sw_1_0__vdd_cap_cap' + id: 'C29' }) -const driver_range_res_0_ = board.add(R_0603_1608Metric, { +// driver.range.res[0] +const R25 = board.add(R_0603_1608Metric, { translate: pt(1.384, 1.428), rotate: 0, - id: 'driver_range_res_0_' + id: 'R25' }) -const driver_range_res_1_ = board.add(R_0603_1608Metric, { +// driver.range.res[1] +const R26 = board.add(R_0603_1608Metric, { translate: pt(0.761, 1.525), rotate: 0, - id: 'driver_range_res_1_' + id: 'R26' }) -const driver_range_res_2_ = board.add(R_0603_1608Metric, { +// driver.range.res[2] +const R27 = board.add(R_0603_1608Metric, { translate: pt(0.917, 1.525), rotate: 0, - id: 'driver_range_res_2_' + id: 'R27' }) -const driver_range_res_3_ = board.add(R_0603_1608Metric, { +// driver.range.res[3] +const R28 = board.add(R_0603_1608Metric, { translate: pt(1.072, 1.525), rotate: 0, - id: 'driver_range_res_3_' + id: 'R28' }) -const driver_sw_device_ic = board.add(SOT_363_SC_70_6, { +// driver.sw.device.ic +const U19 = board.add(SOT_363_SC_70_6, { translate: pt(1.261, 1.305), rotate: 0, - id: 'driver_sw_device_ic' + id: 'U19' }) -const driver_sw_device_vdd_cap_cap = board.add(C_0603_1608Metric, { +// driver.sw.device.vdd_cap.cap +const C30 = board.add(C_0603_1608Metric, { translate: pt(1.228, 1.525), rotate: 0, - id: 'driver_sw_device_vdd_cap_cap' + id: 'C30' }) -const driver_diode = board.add(D_SMA, { +// driver.diode +const D7 = board.add(D_SMA, { translate: pt(0.841, 1.141), rotate: 0, - id: 'driver_diode' + id: 'D7' }) -const driver_dac_rc_r = board.add(R_0603_1608Metric, { +// driver_dac.rc.r +const R29 = board.add(R_0603_1608Metric, { translate: pt(3.328, 2.367), rotate: 0, - id: 'driver_dac_rc_r' + id: 'R29' }) -const driver_dac_rc_c = board.add(C_1206_3216Metric, { +// driver_dac.rc.c +const C31 = board.add(C_1206_3216Metric, { translate: pt(3.361, 2.254), rotate: 0, - id: 'driver_dac_rc_c' + id: 'C31' }) +board.setNetlist([ + {name: "gnd", pads: [["U1", "2"], ["U6", "3"], ["J1", "A1"], ["J1", "B12"], ["J1", "B1"], ["J1", "A12"], ["U2", "2"], ["D3", "2"], ["U3", "2"], ["D4", "2"], ["U4", "2"], ["D5", "2"], ["U5", "1"], ["U5", "2"], ["U5", "15"], ["U5", "33"], ["U5", "55"], ["SW2", "2"], ["SW3", "2"], ["U7", "7"], ["U7", "9"], ["U14", "2"], ["U14", "3"], ["U14", "19"], ["R9", "2"], ["C10", "2"], ["R18", "2"], ["U8", "2"], ["U9", "2"], ["U13", "2"], ["C31", "2"], ["J1", "S1"], ["C14", "2"], ["R4", "1"], ["Q2", "2"], ["SW1", "2"], ["C3", "2"], ["C4", "2"], ["C5", "2"], ["C6", "2"], ["C7", "2"], ["C8", "2"], ["J3", "2"], ["C9", "2"], ["C11", "2"], ["C12", "2"], ["U9", "3"], ["C21", "2"], ["C22", "2"], ["C23", "2"], ["C24", "2"], ["C25", "2"], ["U15", "2"], ["C15", "2"], ["C16", "2"], ["C20", "2"], ["U19", "2"], ["U10", "2"], ["U11", "2"], ["U12", "2"], ["J2", "2"], ["J2", "3"], ["J2", "5"], ["R1", "1"], ["R2", "1"], ["C1", "2"], ["C2", "2"], ["C26", "2"], ["U16", "2"], ["U17", "2"], ["U18", "2"], ["C30", "2"], ["C17", "2"], ["C18", "2"], ["C19", "2"], ["C27", "2"], ["C28", "2"], ["C29", "2"]]}, + {name: "vbat", pads: [["U1", "1"], ["R3", "1"], ["Q1", "2"]]}, + {name: "v5v", pads: [["U2", "4"], ["TP1", "1"], ["D3", "1"], ["U3", "1"], ["U4", "1"], ["C2", "1"], ["U3", "3"], ["U4", "3"], ["U7", "1"], ["U7", "6"], ["C3", "1"], ["C5", "1"], ["C11", "1"], ["C12", "1"]]}, + {name: "v3v3", pads: [["U3", "5"], ["TP2", "1"], ["D4", "1"], ["U5", "28"], ["U5", "30"], ["D6", "2"], ["R24", "1"], ["C4", "1"], ["R13", "1"], ["J2", "1"], ["C7", "1"], ["J3", "7"], ["C9", "1"]]}, + {name: "vanalog", pads: [["U4", "5"], ["TP3", "1"], ["D5", "1"], ["U8", "5"], ["U8", "6"], ["R17", "1"], ["U9", "5"], ["U13", "5"], ["U13", "6"], ["R23", "1"], ["C6", "1"], ["U15", "5"], ["U15", "6"], ["C15", "1"], ["C16", "1"], ["C20", "1"], ["U19", "5"], ["U10", "5"], ["U11", "5"], ["U12", "5"], ["R25", "1"], ["R26", "1"], ["R27", "1"], ["R28", "1"], ["C26", "1"], ["C30", "1"], ["U16", "5"], ["U17", "5"], ["U18", "5"], ["C17", "1"], ["C18", "1"], ["C19", "1"], ["C27", "1"], ["C28", "1"], ["C29", "1"]]}, + {name: "vcenter", pads: [["U8", "4"], ["U9", "1"], ["U8", "1"]]}, + {name: "gate.pwr_out", pads: [["Q1", "3"], ["U2", "3"], ["R8", "1"], ["R5", "1"], ["L1", "1"], ["C1", "1"]]}, + {name: "vbatsense.output", pads: [["U5", "9"], ["R8", "2"], ["R9", "1"]]}, + {name: "data_usb.usb.dp", pads: [["J1", "A6"], ["J1", "B6"], ["U6", "2"], ["R6", "2"]]}, + {name: "data_usb.usb.dm", pads: [["J1", "A7"], ["J1", "B7"], ["U6", "1"], ["R7", "2"]]}, + {name: "mcu.pwr_usb", pads: [["J1", "A4"], ["J1", "B9"], ["J1", "B4"], ["J1", "A9"], ["U5", "32"], ["C8", "1"]]}, + {name: "gate.btn_out", pads: [["U5", "50"], ["D2", "2"]]}, + {name: "gate.control", pads: [["U5", "49"], ["R4", "2"], ["Q2", "1"]]}, + {name: "mcu.gpio.rgb_red", pads: [["U5", "4"], ["R10", "2"]]}, + {name: "mcu.gpio.rgb_green", pads: [["U5", "5"], ["R11", "2"]]}, + {name: "mcu.gpio.rgb_blue", pads: [["U5", "6"], ["R12", "2"]]}, + {name: "sw1.out", pads: [["U5", "16"], ["SW2", "1"]]}, + {name: "sw2.out", pads: [["U5", "3"], ["SW3", "1"]]}, + {name: "lcd.reset", pads: [["U5", "8"], ["J3", "3"]]}, + {name: "lcd.rs", pads: [["U5", "10"], ["J3", "4"]]}, + {name: "lcd.spi.sck", pads: [["U5", "18"], ["J3", "6"]]}, + {name: "lcd.spi.mosi", pads: [["U5", "19"], ["J3", "5"]]}, + {name: "lcd.cs", pads: [["U5", "17"], ["J3", "8"]]}, + {name: "spk_chain_0", pads: [["U5", "36"], ["R14", "1"]]}, + {name: "spk_chain_1", pads: [["TP4", "1"], ["C13", "2"], ["R14", "2"], ["C10", "1"]]}, + {name: "spk_chain_2.a", pads: [["U7", "8"], ["J4", "1"]]}, + {name: "spk_chain_2.b", pads: [["U7", "5"], ["J4", "2"]]}, + {name: "ref_div.output", pads: [["U8", "3"], ["R17", "2"], ["R18", "1"]]}, + {name: "inn_merge", pads: [["J5", "1"], ["U14", "6"], ["U9", "4"], ["U12", "4"]]}, + {name: "mcu.gpio.inn_control_0", pads: [["U5", "41"], ["U9", "6"]]}, + {name: "inp.port", pads: [["J6", "1"], ["R19", "1"], ["D7", "1"]]}, + {name: "meas_chain_0", pads: [["U13", "3"], ["R19", "2"], ["R20", "1"], ["R21", "1"], ["R22", "1"]]}, + {name: "meas_chain_1", pads: [["U14", "5"], ["U13", "4"], ["TP5", "1"], ["U13", "1"]]}, + {name: "adc.spi.sck", pads: [["U14", "14"], ["U5", "37"]]}, + {name: "adc.spi.mosi", pads: [["U14", "15"], ["U5", "26"]]}, + {name: "adc.spi.miso", pads: [["U14", "16"], ["U5", "24"]]}, + {name: "mcu.gpio.measure_select_0_0", pads: [["U5", "42"], ["U10", "6"], ["U11", "6"]]}, + {name: "mcu.gpio.measure_select_1_0", pads: [["U5", "43"], ["U12", "6"]]}, + {name: "adc.cs", pads: [["U5", "39"], ["U14", "13"]]}, + {name: "driver_dac.input", pads: [["U5", "45"], ["R29", "1"]]}, + {name: "driver_dac.output", pads: [["U15", "3"], ["R29", "2"], ["C31", "1"]]}, + {name: "mcu.gpio.driver_select_0_0", pads: [["U5", "46"], ["U16", "6"], ["U17", "6"]]}, + {name: "mcu.gpio.driver_select_1_0", pads: [["U5", "44"], ["U18", "6"]]}, + {name: "driver.enable", pads: [["U5", "48"], ["U19", "6"]]}, + {name: "data_usb.conn.cc.cc1", pads: [["J1", "A5"], ["R1", "2"]]}, + {name: "data_usb.conn.cc.cc2", pads: [["J1", "B5"], ["R2", "2"]]}, + {name: "gate.pwr_gate.btn_in", pads: [["D2", "1"], ["D1", "1"], ["SW1", "1"]]}, + {name: "gate.pwr_gate.pull_res.b", pads: [["R3", "2"], ["D1", "2"], ["Q1", "1"], ["Q2", "3"]]}, + {name: "reg_5v.power_path.switch", pads: [["U2", "5"], ["L1", "2"]]}, + {name: "reg_5v.ic.ce", pads: [["U2", "1"], ["R5", "2"]]}, + {name: "mcu.swd_node.swdio", pads: [["U5", "51"], ["J2", "10"]]}, + {name: "mcu.swd_node.swclk", pads: [["U5", "53"], ["J2", "9"]]}, + {name: "mcu.reset_node", pads: [["U5", "40"], ["J2", "6"]]}, + {name: "mcu.usb_chain_0.d_P", pads: [["U5", "35"], ["R6", "1"]]}, + {name: "mcu.usb_chain_0.d_N", pads: [["U5", "34"], ["R7", "1"]]}, + {name: "mcu.swd.swo", pads: [["U5", "47"], ["J2", "8"]]}, + {name: "mcu.swd.tdi", pads: [["J2", "7"]]}, + {name: "rgb.red_res.a", pads: [["R10", "1"], ["D6", "3"]]}, + {name: "rgb.green_res.a", pads: [["R11", "1"], ["D6", "4"]]}, + {name: "rgb.blue_res.a", pads: [["R12", "1"], ["D6", "1"]]}, + {name: "lcd.led_res.b", pads: [["R13", "2"], ["J3", "1"]]}, + {name: "spk_drv.inp_cap.pos", pads: [["C13", "1"], ["R15", "1"]]}, + {name: "spk_drv.inp_res.b", pads: [["R15", "2"], ["U7", "4"]]}, + {name: "spk_drv.inn_cap.pos", pads: [["C14", "1"], ["R16", "1"]]}, + {name: "spk_drv.inn_res.b", pads: [["R16", "2"], ["U7", "3"]]}, + {name: "measure.range.res[0].b", pads: [["R20", "2"], ["U10", "3"]]}, + {name: "measure.range.res[1].b", pads: [["R21", "2"], ["U10", "1"]]}, + {name: "measure.range.res[2].b", pads: [["R22", "2"], ["U11", "3"]]}, + {name: "measure.range.dummy.io", pads: [["U11", "1"]]}, + {name: "measure.range.switch.sw[0_0].com", pads: [["U12", "3"], ["U10", "4"]]}, + {name: "measure.range.switch.sw[0_1].com", pads: [["U12", "1"], ["U11", "4"]]}, + {name: "adc.vins.2", pads: [["U14", "7"]]}, + {name: "adc.vins.3", pads: [["U14", "8"]]}, + {name: "adc.vins.4", pads: [["U14", "9"]]}, + {name: "adc.vins.5", pads: [["U14", "10"]]}, + {name: "adc.vins.6", pads: [["U14", "11"]]}, + {name: "adc.vins.7", pads: [["U14", "12"]]}, + {name: "adc.ic.avdd", pads: [["U14", "1"], ["R23", "2"], ["C21", "1"], ["C22", "1"]]}, + {name: "adc.ic.dvdd", pads: [["U14", "20"], ["R24", "2"], ["C23", "1"], ["C24", "1"]]}, + {name: "adc.ic.vrefp", pads: [["U14", "4"], ["C25", "1"]]}, + {name: "driver.fet.source", pads: [["Q3", "2"], ["U15", "4"], ["U19", "3"], ["U18", "4"]]}, + {name: "driver.amp.out", pads: [["U15", "1"], ["U19", "1"]]}, + {name: "driver.fet.gate", pads: [["Q3", "1"], ["U19", "4"]]}, + {name: "driver.fet.drain", pads: [["Q3", "3"], ["D7", "2"]]}, + {name: "driver.range.res[0].b", pads: [["R25", "2"], ["U16", "3"]]}, + {name: "driver.range.res[1].b", pads: [["R26", "2"], ["U16", "1"]]}, + {name: "driver.range.res[2].b", pads: [["R27", "2"], ["U17", "3"]]}, + {name: "driver.range.res[3].b", pads: [["R28", "2"], ["U17", "1"]]}, + {name: "driver.range.switch.sw[0_0].com", pads: [["U18", "3"], ["U16", "4"]]}, + {name: "driver.range.switch.sw[0_1].com", pads: [["U18", "1"], ["U17", "4"]]} +]) + const limit0 = pt(-0.07874015748031496, -0.07874015748031496); const limit1 = pt(3.9010236220472447, 2.82992125984252); const xMin = Math.min(limit0[0], limit1[0]); diff --git a/examples/PcbBot/PcbBot.svgpcb.js b/examples/PcbBot/PcbBot.svgpcb.js index fe8bab963..e1f71274e 100644 --- a/examples/PcbBot/PcbBot.svgpcb.js +++ b/examples/PcbBot/PcbBot.svgpcb.js @@ -1,434 +1,638 @@ const board = new PCB(); -const jlc_th_th1 = board.add(JlcToolingHole_1_152mm, { +// jlc_th.th1 +const H1 = board.add(JlcToolingHole_1_152mm, { translate: pt(0.327, 3.717), rotate: 0, - id: 'jlc_th_th1' + id: 'H1' }) -const jlc_th_th2 = board.add(JlcToolingHole_1_152mm, { +// jlc_th.th2 +const H2 = board.add(JlcToolingHole_1_152mm, { translate: pt(0.366, 3.717), rotate: 0, - id: 'jlc_th_th2' + id: 'H2' }) -const jlc_th_th3 = board.add(JlcToolingHole_1_152mm, { +// jlc_th.th3 +const H3 = board.add(JlcToolingHole_1_152mm, { translate: pt(0.327, 3.757), rotate: 0, - id: 'jlc_th_th3' + id: 'H3' }) -const usb_conn = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { +// usb.conn +const J1 = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { translate: pt(3.766, 1.905), rotate: 0, - id: 'usb_conn' + id: 'J1' }) -const usb_cc_pull_cc1_res = board.add(R_0603_1608Metric, { +// usb.cc_pull.cc1.res +const R1 = board.add(R_0603_1608Metric, { translate: pt(3.615, 2.160), rotate: 0, - id: 'usb_cc_pull_cc1_res' + id: 'R1' }) -const usb_cc_pull_cc2_res = board.add(R_0603_1608Metric, { +// usb.cc_pull.cc2.res +const R2 = board.add(R_0603_1608Metric, { translate: pt(3.771, 2.160), rotate: 0, - id: 'usb_cc_pull_cc2_res' + id: 'R2' }) -const batt_conn = board.add(JST_PH_B2B_PH_K_1x02_P2_00mm_Vertical, { +// batt.conn +const J2 = board.add(JST_PH_B2B_PH_K_1x02_P2_00mm_Vertical, { translate: pt(1.268, 3.498), rotate: 0, - id: 'batt_conn' + id: 'J2' }) -const tp_gnd_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(3.759, 3.406), rotate: 0, - id: 'tp_gnd_tp' +// tp_gnd.tp +const TP1 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(3.509, 3.406), rotate: 0, + id: 'TP1' }) -const fuse_fuse = board.add(R_1206_3216Metric, { +// fuse.fuse +const F1 = board.add(R_1206_3216Metric, { translate: pt(3.235, 3.413), rotate: 0, - id: 'fuse_fuse' + id: 'F1' }) -const gate_pwr_gate_pull_res = board.add(R_0603_1608Metric, { +// gate.pwr_gate.pull_res +const R3 = board.add(R_0603_1608Metric, { translate: pt(2.972, 2.206), rotate: 0, - id: 'gate_pwr_gate_pull_res' + id: 'R3' }) -const gate_pwr_gate_pwr_fet = board.add(SOT_23, { +// gate.pwr_gate.pwr_fet +const Q1 = board.add(SOT_23, { translate: pt(3.363, 1.807), rotate: 0, - id: 'gate_pwr_gate_pwr_fet' + id: 'Q1' }) -const gate_pwr_gate_amp_res = board.add(R_0603_1608Metric, { +// gate.pwr_gate.amp_res +const R4 = board.add(R_0603_1608Metric, { translate: pt(3.128, 2.206), rotate: 0, - id: 'gate_pwr_gate_amp_res' + id: 'R4' }) -const gate_pwr_gate_amp_fet = board.add(SOT_23, { +// gate.pwr_gate.amp_fet +const Q2 = board.add(SOT_23, { translate: pt(2.989, 2.071), rotate: 0, - id: 'gate_pwr_gate_amp_fet' + id: 'Q2' }) -const gate_pwr_gate_ctl_diode = board.add(D_SOD_323, { +// gate.pwr_gate.ctl_diode +const D1 = board.add(D_SOD_323, { translate: pt(3.167, 2.041), rotate: 0, - id: 'gate_pwr_gate_ctl_diode' + id: 'D1' }) -const gate_pwr_gate_btn_diode = board.add(D_SOD_323, { +// gate.pwr_gate.btn_diode +const D2 = board.add(D_SOD_323, { translate: pt(3.333, 2.041), rotate: 0, - id: 'gate_pwr_gate_btn_diode' + id: 'D2' }) -const gate_btn_package = board.add(SW_SPST_SKQG_WithoutStem, { +// gate.btn.package +const SW1 = board.add(SW_SPST_SKQG_WithoutStem, { translate: pt(3.081, 1.852), rotate: 0, - id: 'gate_btn_package' + id: 'SW1' }) -const prot_batt_diode = board.add(D_SMA, { +// prot_batt.diode +const D3 = board.add(D_SMA, { translate: pt(2.889, 3.437), rotate: 0, - id: 'prot_batt_diode' + id: 'D3' }) -const tp_batt_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(3.509, 3.406), rotate: 0, - id: 'tp_batt_tp' +// tp_batt.tp +const TP2 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(3.759, 3.406), rotate: 0, + id: 'TP2' }) -const pwr_or_pdr = board.add(R_0603_1608Metric, { +// pwr_or.pdr +const R5 = board.add(R_0603_1608Metric, { translate: pt(3.977, 3.044), rotate: 0, - id: 'pwr_or_pdr' + id: 'R5' }) -const pwr_or_diode = board.add(D_SOD_323, { +// pwr_or.diode +const D4 = board.add(D_SOD_323, { translate: pt(3.816, 3.053), rotate: 0, - id: 'pwr_or_diode' + id: 'D4' }) -const pwr_or_fet = board.add(SOT_23, { +// pwr_or.fet +const Q3 = board.add(SOT_23, { translate: pt(3.828, 2.909), rotate: 0, - id: 'pwr_or_fet' + id: 'Q3' }) -const reg_3v3_ic = board.add(SOT_223_3_TabPin2, { +// reg_3v3.ic +const U1 = board.add(SOT_223_3_TabPin2, { translate: pt(1.004, 2.984), rotate: 0, - id: 'reg_3v3_ic' + id: 'U1' }) -const reg_3v3_in_cap_cap = board.add(C_0603_1608Metric, { +// reg_3v3.in_cap.cap +const C1 = board.add(C_0603_1608Metric, { translate: pt(1.062, 3.194), rotate: 0, - id: 'reg_3v3_in_cap_cap' + id: 'C1' }) -const reg_3v3_out_cap_cap = board.add(C_0805_2012Metric, { +// reg_3v3.out_cap.cap +const C2 = board.add(C_0805_2012Metric, { translate: pt(0.898, 3.204), rotate: 0, - id: 'reg_3v3_out_cap_cap' + id: 'C2' }) -const prot_3v3_diode = board.add(D_SOD_323, { +// prot_3v3.diode +const D5 = board.add(D_SOD_323, { translate: pt(4.007, 3.406), rotate: 0, - id: 'prot_3v3_diode' + id: 'D5' }) -const tp_3v3_tp = board.add(TestPoint_TE_RCT_0805, { +// tp_3v3.tp +const TP3 = board.add(TestPoint_TE_RCT_0805, { translate: pt(4.254, 3.406), rotate: 0, - id: 'tp_3v3_tp' + id: 'TP3' }) -const charger_ic = board.add(SOT_23_5, { +// charger.ic +const U2 = board.add(SOT_23_5, { translate: pt(3.381, 2.909), rotate: 0, - id: 'charger_ic' + id: 'U2' }) -const charger_vdd_cap_cap = board.add(C_0805_2012Metric, { +// charger.vdd_cap.cap +const C3 = board.add(C_0805_2012Metric, { translate: pt(3.568, 2.881), rotate: 0, - id: 'charger_vdd_cap_cap' + id: 'C3' }) -const charger_vbat_cap_cap = board.add(C_0805_2012Metric, { +// charger.vbat_cap.cap +const C4 = board.add(C_0805_2012Metric, { translate: pt(3.367, 3.054), rotate: 0, - id: 'charger_vbat_cap_cap' + id: 'C4' }) -const charger_prog_res = board.add(R_0603_1608Metric, { +// charger.prog_res +const R6 = board.add(R_0603_1608Metric, { translate: pt(3.531, 3.044), rotate: 0, - id: 'charger_prog_res' + id: 'R6' }) -const charge_led_package = board.add(LED_0603_1608Metric, { - translate: pt(2.105, 3.397), rotate: 0, - id: 'charge_led_package' +// charge_led.package +const D6 = board.add(LED_0603_1608Metric, { + translate: pt(1.870, 3.397), rotate: 0, + id: 'D6' }) -const charge_led_res = board.add(R_0603_1608Metric, { - translate: pt(2.105, 3.494), rotate: 0, - id: 'charge_led_res' +// charge_led.res +const R7 = board.add(R_0603_1608Metric, { + translate: pt(1.870, 3.494), rotate: 0, + id: 'R7' }) -const mcu_ic = board.add(ESP32_S3_WROOM_1, { +// mcu.ic +const U3 = board.add(ESP32_S3_WROOM_1, { translate: pt(0.945, 0.530), rotate: 0, - id: 'mcu_ic' + id: 'U3' }) -const mcu_vcc_cap0_cap = board.add(C_1206_3216Metric, { +// mcu.vcc_cap0.cap +const C5 = board.add(C_1206_3216Metric, { translate: pt(2.020, 0.789), rotate: 0, - id: 'mcu_vcc_cap0_cap' + id: 'C5' }) -const mcu_vcc_cap1_cap = board.add(C_0603_1608Metric, { +// mcu.vcc_cap1.cap +const C6 = board.add(C_0603_1608Metric, { translate: pt(2.208, 0.773), rotate: 0, - id: 'mcu_vcc_cap1_cap' + id: 'C6' }) -const mcu_prog_conn = board.add(PinHeader_1x04_P2_54mm_Vertical, { +// mcu.prog.conn +const J3 = board.add(PinHeader_1x04_P2_54mm_Vertical, { translate: pt(2.000, 0.370), rotate: 0, - id: 'mcu_prog_conn' + id: 'J3' }) -const mcu_boot_package = board.add(SW_SPST_SKQG_WithoutStem, { +// mcu.boot.package +const SW2 = board.add(SW_SPST_SKQG_WithoutStem, { translate: pt(2.096, 0.593), rotate: 0, - id: 'mcu_boot_package' + id: 'SW2' }) -const mcu_en_pull_rc_r = board.add(R_0603_1608Metric, { +// mcu.en_pull.rc.r +const R8 = board.add(R_0603_1608Metric, { translate: pt(2.364, 0.773), rotate: 0, - id: 'mcu_en_pull_rc_r' + id: 'R8' }) -const mcu_en_pull_rc_c = board.add(C_0603_1608Metric, { +// mcu.en_pull.rc.c +const C7 = board.add(C_0603_1608Metric, { translate: pt(1.987, 0.903), rotate: 0, - id: 'mcu_en_pull_rc_c' + id: 'C7' }) -const usb_esd = board.add(SOT_23, { +// usb_esd +const U4 = board.add(SOT_23, { translate: pt(4.514, 3.435), rotate: 0, - id: 'usb_esd' + id: 'U4' }) -const led_package = board.add(LED_0603_1608Metric, { - translate: pt(1.870, 3.397), rotate: 0, - id: 'led_package' +// led.package +const D7 = board.add(LED_0603_1608Metric, { + translate: pt(2.105, 3.397), rotate: 0, + id: 'D7' }) -const led_res = board.add(R_0603_1608Metric, { - translate: pt(1.870, 3.494), rotate: 0, - id: 'led_res' +// led.res +const R9 = board.add(R_0603_1608Metric, { + translate: pt(2.105, 3.494), rotate: 0, + id: 'R9' }) -const tof_elt_0_ = board.add(PinSocket_1x06_P2_54mm_Vertical, { +// tof.elt[0] +const J4 = board.add(PinSocket_1x06_P2_54mm_Vertical, { translate: pt(1.457, 2.309), rotate: 0, - id: 'tof_elt_0_' + id: 'J4' }) -const tof_elt_1_ = board.add(PinSocket_1x06_P2_54mm_Vertical, { +// tof.elt[1] +const J5 = board.add(PinSocket_1x06_P2_54mm_Vertical, { translate: pt(1.636, 2.309), rotate: 0, - id: 'tof_elt_1_' + id: 'J5' }) -const tof_elt_2_ = board.add(PinSocket_1x06_P2_54mm_Vertical, { +// tof.elt[2] +const J6 = board.add(PinSocket_1x06_P2_54mm_Vertical, { translate: pt(1.815, 2.309), rotate: 0, - id: 'tof_elt_2_' + id: 'J6' }) -const tof_elt_3_ = board.add(PinSocket_1x06_P2_54mm_Vertical, { +// tof.elt[3] +const J7 = board.add(PinSocket_1x06_P2_54mm_Vertical, { translate: pt(1.994, 2.309), rotate: 0, - id: 'tof_elt_3_' + id: 'J7' }) -const i2c_pull_scl_res_res = board.add(R_0603_1608Metric, { +// i2c_pull.scl_res.res +const R10 = board.add(R_0603_1608Metric, { translate: pt(2.340, 3.397), rotate: 0, - id: 'i2c_pull_scl_res_res' + id: 'R10' }) -const i2c_pull_sda_res_res = board.add(R_0603_1608Metric, { +// i2c_pull.sda_res.res +const R11 = board.add(R_0603_1608Metric, { translate: pt(2.340, 3.494), rotate: 0, - id: 'i2c_pull_sda_res_res' + id: 'R11' }) -const i2c_tp_tp_scl_tp = board.add(TestPoint_TE_RCT_0805, { +// i2c_tp.tp_scl.tp +const TP4 = board.add(TestPoint_TE_RCT_0805, { translate: pt(1.628, 3.406), rotate: 0, - id: 'i2c_tp_tp_scl_tp' + id: 'TP4' }) -const i2c_tp_tp_sda_tp = board.add(TestPoint_TE_RCT_0805, { +// i2c_tp.tp_sda.tp +const TP5 = board.add(TestPoint_TE_RCT_0805, { translate: pt(1.628, 3.520), rotate: 0, - id: 'i2c_tp_tp_sda_tp' + id: 'TP5' }) -const imu_ic = board.add(Bosch_LGA_14_3x2_5mm_P0_5mm, { +// imu.ic +const U5 = board.add(Bosch_LGA_14_3x2_5mm_P0_5mm, { translate: pt(0.854, 3.431), rotate: 0, - id: 'imu_ic' + id: 'U5' }) -const imu_vdd_cap_cap = board.add(C_0603_1608Metric, { +// imu.vdd_cap.cap +const C8 = board.add(C_0603_1608Metric, { translate: pt(0.839, 3.563), rotate: 0, - id: 'imu_vdd_cap_cap' + id: 'C8' }) -const imu_vddio_cap_cap = board.add(C_0603_1608Metric, { +// imu.vddio_cap.cap +const C9 = board.add(C_0603_1608Metric, { translate: pt(0.995, 3.563), rotate: 0, - id: 'imu_vddio_cap_cap' + id: 'C9' }) -const mag_ic = board.add(LGA_16_3x3mm_P0_5mm, { +// mag.ic +const U6 = board.add(LGA_16_3x3mm_P0_5mm, { translate: pt(4.222, 2.911), rotate: 0, - id: 'mag_ic' + id: 'U6' }) -const mag_vdd_cap_cap = board.add(C_0603_1608Metric, { +// mag.vdd_cap.cap +const C10 = board.add(C_0603_1608Metric, { translate: pt(4.211, 3.048), rotate: 0, - id: 'mag_vdd_cap_cap' + id: 'C10' }) -const mag_set_cap = board.add(C_0603_1608Metric, { +// mag.set_cap +const C11 = board.add(C_0603_1608Metric, { translate: pt(4.367, 3.048), rotate: 0, - id: 'mag_set_cap' + id: 'C11' }) -const mag_c1 = board.add(C_0805_2012Metric, { +// mag.c1 +const C12 = board.add(C_0805_2012Metric, { translate: pt(4.397, 2.881), rotate: 0, - id: 'mag_c1' + id: 'C12' }) -const expander_ic = board.add(TSSOP_16_4_4x5mm_P0_65mm, { +// expander.ic +const U7 = board.add(TSSOP_16_4_4x5mm_P0_65mm, { translate: pt(2.486, 2.951), rotate: 0, - id: 'expander_ic' + id: 'U7' }) -const expander_vdd_cap_cap = board.add(C_0603_1608Metric, { +// expander.vdd_cap.cap +const C13 = board.add(C_0603_1608Metric, { translate: pt(2.393, 3.127), rotate: 0, - id: 'expander_vdd_cap_cap' + id: 'C13' }) -const rgb_package = board.add(LED_D5_0mm_4_RGB_Staggered_Pins, { +// rgb.package +const D8 = board.add(LED_D5_0mm_4_RGB_Staggered_Pins, { translate: pt(2.796, 3.000), rotate: 0, - id: 'rgb_package' + id: 'D8' }) -const rgb_red_res = board.add(R_0603_1608Metric, { +// rgb.red_res +const R12 = board.add(R_0603_1608Metric, { translate: pt(3.124, 2.871), rotate: 0, - id: 'rgb_red_res' + id: 'R12' }) -const rgb_green_res = board.add(R_0603_1608Metric, { +// rgb.green_res +const R13 = board.add(R_0603_1608Metric, { translate: pt(3.124, 2.968), rotate: 0, - id: 'rgb_green_res' + id: 'R13' }) -const rgb_blue_res = board.add(R_0603_1608Metric, { +// rgb.blue_res +const R14 = board.add(R_0603_1608Metric, { translate: pt(3.124, 3.065), rotate: 0, - id: 'rgb_blue_res' + id: 'R14' }) -const oled_device_conn = board.add(Hirose_FH12_30S_0_5SH_1x30_1MP_P0_50mm_Horizontal, { +// oled.device.conn +const J8 = board.add(Hirose_FH12_30S_0_5SH_1x30_1MP_P0_50mm_Horizontal, { translate: pt(2.956, 1.054), rotate: 0, - id: 'oled_device_conn' + id: 'J8' }) -const oled_lcd = board.add(Lcd_Er_Oled0_96_1_1_Outline, { +// oled.lcd +const U8 = board.add(Lcd_Er_Oled0_96_1_1_Outline, { translate: pt(3.066, 0.516), rotate: 0, - id: 'oled_lcd' + id: 'U8' }) -const oled_c1_cap = board.add(C_0603_1608Metric, { +// oled.c1_cap +const C14 = board.add(C_0603_1608Metric, { translate: pt(3.815, 0.889), rotate: 0, - id: 'oled_c1_cap' + id: 'C14' }) -const oled_c2_cap = board.add(C_0603_1608Metric, { +// oled.c2_cap +const C15 = board.add(C_0603_1608Metric, { translate: pt(3.971, 0.889), rotate: 0, - id: 'oled_c2_cap' + id: 'C15' }) -const oled_iref_res = board.add(R_0603_1608Metric, { +// oled.iref_res +const R15 = board.add(R_0603_1608Metric, { translate: pt(3.469, 1.006), rotate: 0, - id: 'oled_iref_res' + id: 'R15' }) -const oled_vcomh_cap_cap = board.add(C_0805_2012Metric, { +// oled.vcomh_cap.cap +const C16 = board.add(C_0805_2012Metric, { translate: pt(3.477, 0.899), rotate: 0, - id: 'oled_vcomh_cap_cap' + id: 'C16' }) -const oled_vdd_cap1_cap = board.add(C_0603_1608Metric, { +// oled.vdd_cap1.cap +const C17 = board.add(C_0603_1608Metric, { translate: pt(3.624, 1.006), rotate: 0, - id: 'oled_vdd_cap1_cap' + id: 'C17' }) -const oled_vbat_cap_cap = board.add(C_0603_1608Metric, { +// oled.vbat_cap.cap +const C18 = board.add(C_0603_1608Metric, { translate: pt(3.780, 1.006), rotate: 0, - id: 'oled_vbat_cap_cap' + id: 'C18' }) -const oled_vcc_cap_cap = board.add(C_0805_2012Metric, { +// oled.vcc_cap.cap +const C19 = board.add(C_0805_2012Metric, { translate: pt(3.650, 0.899), rotate: 0, - id: 'oled_vcc_cap_cap' + id: 'C19' }) -const batt_sense_div_top_res = board.add(R_0603_1608Metric, { +// batt_sense.div.top_res +const R16 = board.add(R_0603_1608Metric, { translate: pt(2.574, 3.397), rotate: 0, - id: 'batt_sense_div_top_res' + id: 'R16' }) -const batt_sense_div_bottom_res = board.add(R_0603_1608Metric, { +// batt_sense.div.bottom_res +const R17 = board.add(R_0603_1608Metric, { translate: pt(2.574, 3.494), rotate: 0, - id: 'batt_sense_div_bottom_res' + id: 'R17' }) -const servo_0__conn = board.add(PinHeader_1x03_P2_54mm_Vertical, { - translate: pt(1.886, 3.112), rotate: 0, - id: 'servo_0__conn' +// servo[0].conn +const J9 = board.add(PinHeader_1x03_P2_54mm_Vertical, { + translate: pt(1.366, 3.112), rotate: 0, + id: 'J9' }) -const servo_1__conn = board.add(PinHeader_1x03_P2_54mm_Vertical, { +// servo[1].conn +const J10 = board.add(PinHeader_1x03_P2_54mm_Vertical, { translate: pt(1.626, 3.112), rotate: 0, - id: 'servo_1__conn' + id: 'J10' }) -const servo_2__conn = board.add(PinHeader_1x03_P2_54mm_Vertical, { - translate: pt(1.366, 3.112), rotate: 0, - id: 'servo_2__conn' +// servo[2].conn +const J11 = board.add(PinHeader_1x03_P2_54mm_Vertical, { + translate: pt(1.886, 3.112), rotate: 0, + id: 'J11' }) -const servo_3__conn = board.add(PinHeader_1x03_P2_54mm_Vertical, { +// servo[3].conn +const J12 = board.add(PinHeader_1x03_P2_54mm_Vertical, { translate: pt(2.146, 3.112), rotate: 0, - id: 'servo_3__conn' + id: 'J12' }) -const npx_led_0_ = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { +// npx.led[0] +const D9 = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { translate: pt(0.144, 1.848), rotate: 0, - id: 'npx_led_0_' + id: 'D9' }) -const npx_led_1_ = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { +// npx.led[1] +const D10 = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { translate: pt(0.470, 1.848), rotate: 0, - id: 'npx_led_1_' + id: 'D10' }) -const npx_led_2_ = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { +// npx.led[2] +const D11 = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { translate: pt(0.797, 1.848), rotate: 0, - id: 'npx_led_2_' + id: 'D11' }) -const npx_led_3_ = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { +// npx.led[3] +const D12 = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { translate: pt(1.124, 1.848), rotate: 0, - id: 'npx_led_3_' + id: 'D12' }) -const npx_led_4_ = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { +// npx.led[4] +const D13 = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { translate: pt(0.144, 2.104), rotate: 0, - id: 'npx_led_4_' + id: 'D13' }) -const npx_led_5_ = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { +// npx.led[5] +const D14 = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { translate: pt(0.470, 2.104), rotate: 0, - id: 'npx_led_5_' + id: 'D14' }) -const npx_led_6_ = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { +// npx.led[6] +const D15 = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { translate: pt(0.797, 2.104), rotate: 0, - id: 'npx_led_6_' + id: 'D15' }) -const npx_led_7_ = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { +// npx.led[7] +const D16 = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { translate: pt(1.124, 2.104), rotate: 0, - id: 'npx_led_7_' + id: 'D16' }) -const npx_led_8_ = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { +// npx.led[8] +const D17 = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { translate: pt(0.144, 2.360), rotate: 0, - id: 'npx_led_8_' + id: 'D17' }) -const npx_led_9_ = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { +// npx.led[9] +const D18 = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { translate: pt(0.470, 2.360), rotate: 0, - id: 'npx_led_9_' + id: 'D18' }) -const npx_led_10_ = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { +// npx.led[10] +const D19 = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { translate: pt(0.797, 2.360), rotate: 0, - id: 'npx_led_10_' + id: 'D19' }) -const npx_led_11_ = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { +// npx.led[11] +const D20 = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { translate: pt(1.124, 2.360), rotate: 0, - id: 'npx_led_11_' + id: 'D20' }) -const npx_led_12_ = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { +// npx.led[12] +const D21 = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { translate: pt(0.144, 2.616), rotate: 0, - id: 'npx_led_12_' + id: 'D21' }) -const npx_led_13_ = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { +// npx.led[13] +const D22 = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { translate: pt(0.470, 2.616), rotate: 0, - id: 'npx_led_13_' + id: 'D22' }) -const npx_led_14_ = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { +// npx.led[14] +const D23 = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { translate: pt(0.797, 2.616), rotate: 0, - id: 'npx_led_14_' + id: 'D23' }) -const npx_led_15_ = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { +// npx.led[15] +const D24 = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { translate: pt(1.124, 2.616), rotate: 0, - id: 'npx_led_15_' + id: 'D24' }) -const npx_key = board.add(LED_SK6812MINI_E, { +// npx_key +const D25 = board.add(LED_SK6812MINI_E, { translate: pt(0.144, 3.782), rotate: 0, - id: 'npx_key' -}) -const reg_2v5_ic = board.add(SOT_23, { - translate: pt(0.466, 3.435), rotate: 0, - id: 'reg_2v5_ic' -}) -const reg_2v5_in_cap_cap = board.add(C_0603_1608Metric, { - translate: pt(0.449, 3.570), rotate: 0, - id: 'reg_2v5_in_cap_cap' -}) -const reg_2v5_out_cap_cap = board.add(C_0603_1608Metric, { - translate: pt(0.605, 3.570), rotate: 0, - id: 'reg_2v5_out_cap_cap' + id: 'D25' }) -const reg_1v2_ic = board.add(SOT_23, { +// reg_2v5.ic +const U9 = board.add(SOT_23, { translate: pt(0.076, 3.435), rotate: 0, - id: 'reg_1v2_ic' + id: 'U9' }) -const reg_1v2_in_cap_cap = board.add(C_0603_1608Metric, { +// reg_2v5.in_cap.cap +const C20 = board.add(C_0603_1608Metric, { translate: pt(0.058, 3.570), rotate: 0, - id: 'reg_1v2_in_cap_cap' + id: 'C20' }) -const reg_1v2_out_cap_cap = board.add(C_0603_1608Metric, { +// reg_2v5.out_cap.cap +const C21 = board.add(C_0603_1608Metric, { translate: pt(0.214, 3.570), rotate: 0, - id: 'reg_1v2_out_cap_cap' + id: 'C21' }) -const cam_device_conn = board.add(Hirose_FH12_24S_0_5SH_1x24_1MP_P0_50mm_Horizontal, { +// reg_1v2.ic +const U10 = board.add(SOT_23, { + translate: pt(0.466, 3.435), rotate: 0, + id: 'U10' +}) +// reg_1v2.in_cap.cap +const C22 = board.add(C_0603_1608Metric, { + translate: pt(0.449, 3.570), rotate: 0, + id: 'C22' +}) +// reg_1v2.out_cap.cap +const C23 = board.add(C_0603_1608Metric, { + translate: pt(0.605, 3.570), rotate: 0, + id: 'C23' +}) +// cam.device.conn +const J13 = board.add(Hirose_FH12_24S_0_5SH_1x24_1MP_P0_50mm_Horizontal, { translate: pt(0.356, 3.035), rotate: 0, - id: 'cam_device_conn' + id: 'J13' }) -const cam_dovdd_cap_cap = board.add(C_0603_1608Metric, { +// cam.dovdd_cap.cap +const C24 = board.add(C_0603_1608Metric, { translate: pt(0.058, 3.222), rotate: 0, - id: 'cam_dovdd_cap_cap' + id: 'C24' }) -const cam_reset_cap = board.add(C_0603_1608Metric, { +// cam.reset_cap +const C25 = board.add(C_0603_1608Metric, { translate: pt(0.214, 3.222), rotate: 0, - id: 'cam_reset_cap' + id: 'C25' }) -const cam_pclk_cap = board.add(C_0603_1608Metric, { +// cam.pclk_cap +const C26 = board.add(C_0603_1608Metric, { translate: pt(0.370, 3.222), rotate: 0, - id: 'cam_pclk_cap' + id: 'C26' }) -const cam_reset_pull_res = board.add(R_0603_1608Metric, { +// cam.reset_pull.res +const R18 = board.add(R_0603_1608Metric, { translate: pt(0.526, 3.222), rotate: 0, - id: 'cam_reset_pull_res' + id: 'R18' }) -const switch_package = board.add(SW_Hotswap_Kailh_MX, { +// switch.package +const SW3 = board.add(SW_Hotswap_Kailh_MX, { translate: pt(2.488, 2.026), rotate: 0, - id: 'switch_package' + id: 'SW3' }) +board.setNetlist([ + {name: "vusb", pads: [["J1", "A4"], ["J1", "B9"], ["J1", "B4"], ["J1", "A9"], ["R5", "1"], ["D4", "2"], ["Q3", "1"], ["U2", "4"], ["D6", "2"], ["C3", "1"]]}, + {name: "gnd", pads: [["U4", "3"], ["D25", "3"], ["J1", "A1"], ["J1", "B12"], ["J1", "B1"], ["J1", "A12"], ["J2", "1"], ["TP1", "1"], ["D3", "2"], ["R5", "2"], ["U1", "1"], ["D5", "2"], ["U2", "2"], ["U3", "1"], ["U3", "40"], ["U3", "41"], ["R9", "2"], ["J4", "2"], ["J5", "2"], ["J6", "2"], ["J7", "2"], ["U5", "1"], ["U5", "2"], ["U5", "3"], ["U5", "6"], ["U5", "7"], ["U6", "9"], ["U6", "11"], ["U7", "1"], ["U7", "2"], ["U7", "3"], ["U7", "8"], ["J9", "3"], ["J10", "3"], ["J11", "3"], ["J12", "3"], ["D9", "3"], ["D10", "3"], ["D11", "3"], ["D12", "3"], ["D13", "3"], ["D14", "3"], ["D15", "3"], ["D16", "3"], ["D17", "3"], ["D18", "3"], ["D19", "3"], ["D20", "3"], ["D21", "3"], ["D22", "3"], ["D23", "3"], ["D24", "3"], ["U9", "1"], ["U10", "1"], ["SW3", "2"], ["R17", "2"], ["J1", "S1"], ["R6", "2"], ["C12", "2"], ["R15", "2"], ["C25", "2"], ["C26", "2"], ["R4", "1"], ["Q2", "2"], ["SW1", "2"], ["C1", "2"], ["C2", "2"], ["C3", "2"], ["C4", "2"], ["C5", "2"], ["C6", "2"], ["J3", "4"], ["SW2", "2"], ["C8", "2"], ["C9", "2"], ["C10", "2"], ["C13", "2"], ["C16", "2"], ["C17", "2"], ["C18", "2"], ["C19", "2"], ["C20", "2"], ["C21", "2"], ["C22", "2"], ["C23", "2"], ["J13", "10"], ["J13", "23"], ["C24", "2"], ["C7", "2"], ["R1", "1"], ["R2", "1"], ["J8", "8"], ["J8", "1"], ["J8", "30"], ["J8", "29"], ["J8", "17"], ["J8", "16"], ["J8", "21"], ["J8", "22"], ["J8", "23"], ["J8", "24"], ["J8", "25"], ["J8", "12"], ["J8", "10"], ["J8", "15"], ["J8", "13"], ["J13", "17"]]}, + {name: "vbatt", pads: [["D25", "1"], ["Q1", "3"], ["D3", "1"], ["TP2", "1"], ["Q3", "3"], ["J9", "2"], ["J10", "2"], ["J11", "2"], ["J12", "2"], ["D9", "1"], ["D10", "1"], ["D11", "1"], ["D12", "1"], ["D13", "1"], ["D14", "1"], ["D15", "1"], ["D16", "1"], ["D17", "1"], ["D18", "1"], ["D19", "1"], ["D20", "1"], ["D21", "1"], ["D22", "1"], ["D23", "1"], ["D24", "1"], ["R16", "1"]]}, + {name: "pwr", pads: [["Q3", "2"], ["D4", "1"], ["U1", "3"], ["U9", "3"], ["U10", "3"], ["C1", "1"], ["C20", "1"], ["C22", "1"]]}, + {name: "v3v3", pads: [["U1", "2"], ["D5", "1"], ["TP3", "1"], ["U3", "2"], ["J4", "1"], ["J5", "1"], ["J6", "1"], ["J7", "1"], ["U5", "5"], ["U5", "12"], ["U5", "8"], ["U6", "2"], ["U6", "4"], ["U6", "13"], ["U7", "16"], ["D8", "2"], ["C2", "1"], ["C5", "1"], ["C6", "1"], ["J3", "1"], ["J4", "6"], ["R10", "1"], ["R11", "1"], ["C9", "1"], ["C8", "1"], ["C10", "1"], ["C13", "1"], ["J8", "9"], ["J8", "6"], ["C17", "1"], ["C18", "1"], ["J13", "14"], ["C24", "1"], ["R18", "1"], ["R8", "1"], ["J8", "11"]]}, + {name: "v2v5", pads: [["U9", "2"], ["J13", "21"], ["C21", "1"]]}, + {name: "v1v2", pads: [["U10", "2"], ["J13", "15"], ["C23", "1"]]}, + {name: "batt.pwr", pads: [["J2", "2"], ["F1", "1"], ["U2", "3"], ["C4", "1"]]}, + {name: "fuse.pwr_out", pads: [["F1", "2"], ["R3", "1"], ["Q1", "2"]]}, + {name: "charge_led.signal", pads: [["U2", "1"], ["R7", "2"]]}, + {name: "usb_chain_0.d_P", pads: [["J1", "A6"], ["J1", "B6"], ["U4", "2"], ["U3", "14"]]}, + {name: "usb_chain_0.d_N", pads: [["J1", "A7"], ["J1", "B7"], ["U4", "1"], ["U3", "13"]]}, + {name: "mcu.program_boot_node", pads: [["U3", "27"], ["D7", "2"], ["SW2", "1"]]}, + {name: "touch_0", pads: [["U3", "7"]]}, + {name: "i2c_chain_0.scl", pads: [["U3", "38"], ["U5", "13"], ["U6", "1"], ["U7", "14"], ["R10", "2"], ["TP4", "1"], ["J8", "18"], ["J4", "3"], ["J5", "3"], ["J6", "3"], ["J7", "3"], ["J13", "20"]]}, + {name: "i2c_chain_0.sda", pads: [["U3", "4"], ["U5", "14"], ["U6", "16"], ["U7", "15"], ["R11", "2"], ["J13", "22"], ["J4", "4"], ["J5", "4"], ["J6", "4"], ["J7", "4"], ["TP5", "1"], ["J8", "19"], ["J8", "20"]]}, + {name: "expander.io.tof_reset_1", pads: [["U7", "4"], ["J5", "6"]]}, + {name: "expander.io.tof_reset_2", pads: [["U7", "5"], ["J6", "6"]]}, + {name: "expander.io.tof_reset_3", pads: [["U7", "6"], ["J7", "6"]]}, + {name: "expander.io.rgb_red", pads: [["U7", "7"], ["R12", "2"]]}, + {name: "expander.io.rgb_green", pads: [["U7", "9"], ["R13", "2"]]}, + {name: "expander.io.rgb_blue", pads: [["U7", "10"], ["R14", "2"]]}, + {name: "oled.reset", pads: [["U3", "31"], ["J8", "14"]]}, + {name: "batt_sense.output", pads: [["U3", "39"], ["R16", "2"], ["R17", "1"]]}, + {name: "gate.btn_out", pads: [["U3", "32"], ["D2", "2"]]}, + {name: "gate.control", pads: [["U3", "33"], ["R4", "2"], ["Q2", "1"]]}, + {name: "servo[0].pwm", pads: [["U3", "5"], ["J9", "1"]]}, + {name: "servo[1].pwm", pads: [["U3", "6"], ["J10", "1"]]}, + {name: "servo[2].pwm", pads: [["U3", "8"], ["J11", "1"]]}, + {name: "servo[3].pwm", pads: [["U3", "10"], ["J12", "1"]]}, + {name: "npx.din", pads: [["U3", "9"], ["D9", "4"]]}, + {name: "npx.dout", pads: [["D24", "2"], ["D25", "4"]]}, + {name: "cam.dvp8.xclk", pads: [["U3", "17"], ["J13", "12"]]}, + {name: "cam.dvp8.pclk", pads: [["U3", "20"], ["C26", "1"], ["J13", "8"]]}, + {name: "cam.dvp8.href", pads: [["U3", "12"], ["J13", "16"]]}, + {name: "cam.dvp8.vsync", pads: [["U3", "11"], ["J13", "18"]]}, + {name: "cam.dvp8.y0", pads: [["U3", "22"], ["J13", "6"]]}, + {name: "cam.dvp8.y1", pads: [["U3", "24"], ["J13", "4"]]}, + {name: "cam.dvp8.y2", pads: [["U3", "25"], ["J13", "3"]]}, + {name: "cam.dvp8.y3", pads: [["U3", "23"], ["J13", "5"]]}, + {name: "cam.dvp8.y4", pads: [["U3", "21"], ["J13", "7"]]}, + {name: "cam.dvp8.y5", pads: [["U3", "19"], ["J13", "9"]]}, + {name: "cam.dvp8.y6", pads: [["U3", "18"], ["J13", "11"]]}, + {name: "cam.dvp8.y7", pads: [["U3", "15"], ["J13", "13"]]}, + {name: "switch.out", pads: [["U3", "34"], ["SW3", "1"]]}, + {name: "usb.conn.cc.cc1", pads: [["J1", "A5"], ["R1", "2"]]}, + {name: "usb.conn.cc.cc2", pads: [["J1", "B5"], ["R2", "2"]]}, + {name: "gate.pwr_gate.btn_in", pads: [["D2", "1"], ["D1", "1"], ["SW1", "1"]]}, + {name: "gate.pwr_gate.pull_res.b", pads: [["R3", "2"], ["D1", "2"], ["Q1", "1"], ["Q2", "3"]]}, + {name: "charger.prog_res.a", pads: [["R6", "1"], ["U2", "5"]]}, + {name: "charge_led.res.a", pads: [["R7", "1"], ["D6", "1"]]}, + {name: "mcu.program_uart_node.a_tx", pads: [["U3", "37"], ["J3", "2"]]}, + {name: "mcu.program_uart_node.b_tx", pads: [["U3", "36"], ["J3", "3"]]}, + {name: "mcu.program_en_node", pads: [["U3", "3"], ["R8", "2"], ["C7", "1"]]}, + {name: "led.res.a", pads: [["R9", "1"], ["D7", "1"]]}, + {name: "tof.elt[0].ic.gpio1", pads: [["J4", "5"]]}, + {name: "tof.elt[1].ic.gpio1", pads: [["J5", "5"]]}, + {name: "tof.elt[2].ic.gpio1", pads: [["J6", "5"]]}, + {name: "tof.elt[3].ic.gpio1", pads: [["J7", "5"]]}, + {name: "imu.int1", pads: [["U5", "4"]]}, + {name: "imu.int2", pads: [["U5", "9"]]}, + {name: "mag.drdy", pads: [["U6", "15"]]}, + {name: "mag.set_cap.pos", pads: [["C11", "1"], ["U6", "8"]]}, + {name: "mag.set_cap.neg", pads: [["C11", "2"], ["U6", "12"]]}, + {name: "mag.c1.pos", pads: [["C12", "1"], ["U6", "10"]]}, + {name: "rgb.red_res.a", pads: [["R12", "1"], ["D8", "1"]]}, + {name: "rgb.green_res.a", pads: [["R13", "1"], ["D8", "3"]]}, + {name: "rgb.blue_res.a", pads: [["R14", "1"], ["D8", "4"]]}, + {name: "oled.c1_cap.pos", pads: [["C14", "1"], ["J8", "4"]]}, + {name: "oled.c1_cap.neg", pads: [["C14", "2"], ["J8", "5"]]}, + {name: "oled.c2_cap.pos", pads: [["C15", "1"], ["J8", "2"]]}, + {name: "oled.c2_cap.neg", pads: [["C15", "2"], ["J8", "3"]]}, + {name: "oled.iref_res.a", pads: [["R15", "1"], ["J8", "26"]]}, + {name: "oled.device.vcomh", pads: [["J8", "27"], ["C16", "1"]]}, + {name: "oled.device.vcc", pads: [["J8", "28"], ["C19", "1"]]}, + {name: "npx.led[0].dout", pads: [["D9", "2"], ["D10", "4"]]}, + {name: "npx.led[1].dout", pads: [["D10", "2"], ["D11", "4"]]}, + {name: "npx.led[2].dout", pads: [["D11", "2"], ["D12", "4"]]}, + {name: "npx.led[3].dout", pads: [["D12", "2"], ["D13", "4"]]}, + {name: "npx.led[4].dout", pads: [["D13", "2"], ["D14", "4"]]}, + {name: "npx.led[5].dout", pads: [["D14", "2"], ["D15", "4"]]}, + {name: "npx.led[6].dout", pads: [["D15", "2"], ["D16", "4"]]}, + {name: "npx.led[7].dout", pads: [["D16", "2"], ["D17", "4"]]}, + {name: "npx.led[8].dout", pads: [["D17", "2"], ["D18", "4"]]}, + {name: "npx.led[9].dout", pads: [["D18", "2"], ["D19", "4"]]}, + {name: "npx.led[10].dout", pads: [["D19", "2"], ["D20", "4"]]}, + {name: "npx.led[11].dout", pads: [["D20", "2"], ["D21", "4"]]}, + {name: "npx.led[12].dout", pads: [["D21", "2"], ["D22", "4"]]}, + {name: "npx.led[13].dout", pads: [["D22", "2"], ["D23", "4"]]}, + {name: "npx.led[14].dout", pads: [["D23", "2"], ["D24", "4"]]}, + {name: "npx_key.dout", pads: [["D25", "2"]]}, + {name: "cam.reset_cap.pos", pads: [["C25", "1"], ["R18", "2"], ["J13", "19"]]}, + {name: "cam.device.y.0", pads: [["J13", "1"]]}, + {name: "cam.device.y.1", pads: [["J13", "2"]]} +]) + const limit0 = pt(-0.07874015748031496, -0.07874015748031496); const limit1 = pt(4.6287401574803155, 3.8866141732283466); const xMin = Math.min(limit0[0], limit1[0]); diff --git a/examples/PicoProbe/PicoProbe.svgpcb.js b/examples/PicoProbe/PicoProbe.svgpcb.js index b32253dee..1d9452f1a 100644 --- a/examples/PicoProbe/PicoProbe.svgpcb.js +++ b/examples/PicoProbe/PicoProbe.svgpcb.js @@ -1,174 +1,253 @@ const board = new PCB(); -const jlc_th_th1 = board.add(JlcToolingHole_1_152mm, { +// jlc_th.th1 +const SH1 = board.add(JlcToolingHole_1_152mm, { translate: pt(0.861, 1.261), rotate: 0, - id: 'jlc_th_th1' + id: 'SH1' }) -const jlc_th_th2 = board.add(JlcToolingHole_1_152mm, { +// jlc_th.th2 +const SH2 = board.add(JlcToolingHole_1_152mm, { translate: pt(0.901, 1.261), rotate: 0, - id: 'jlc_th_th2' + id: 'SH2' }) -const jlc_th_th3 = board.add(JlcToolingHole_1_152mm, { +// jlc_th.th3 +const SH3 = board.add(JlcToolingHole_1_152mm, { translate: pt(0.861, 1.300), rotate: 0, - id: 'jlc_th_th3' + id: 'SH3' }) -const usb_conn = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { +// usb.conn +const SJ1 = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { translate: pt(0.209, 0.956), rotate: 0, - id: 'usb_conn' + id: 'SJ1' }) -const usb_cc_pull_cc1_res = board.add(R_0402_1005Metric, { +// usb.cc_pull.cc1.res +const SR1 = board.add(R_0402_1005Metric, { translate: pt(0.495, 0.810), rotate: 0, - id: 'usb_cc_pull_cc1_res' + id: 'SR1' }) -const usb_cc_pull_cc2_res = board.add(R_0402_1005Metric, { +// usb.cc_pull.cc2.res +const SR2 = board.add(R_0402_1005Metric, { translate: pt(0.495, 0.886), rotate: 0, - id: 'usb_cc_pull_cc2_res' + id: 'SR2' }) -const vusb_protect_diode = board.add(D_SOD_323, { +// vusb_protect.diode +const SD1 = board.add(D_SOD_323, { translate: pt(0.490, 1.298), rotate: 0, - id: 'vusb_protect_diode' + id: 'SD1' }) -const usb_reg_ic = board.add(SOT_23_5, { - translate: pt(1.093, 0.858), rotate: 0, - id: 'usb_reg_ic' -}) -const usb_reg_in_cap_cap = board.add(C_0402_1005Metric, { - translate: pt(1.222, 0.983), rotate: 0, - id: 'usb_reg_in_cap_cap' -}) -const usb_reg_out_cap_cap = board.add(C_0805_2012Metric, { - translate: pt(1.080, 1.003), rotate: 0, - id: 'usb_reg_out_cap_cap' -}) -const target_reg_ic = board.add(SOT_23_5, { +// usb_reg.ic +const SU1 = board.add(SOT_23_5, { translate: pt(0.730, 0.858), rotate: 0, - id: 'target_reg_ic' + id: 'SU1' }) -const target_reg_in_cap_cap = board.add(C_0402_1005Metric, { +// usb_reg.in_cap.cap +const SC1 = board.add(C_0402_1005Metric, { translate: pt(0.859, 0.983), rotate: 0, - id: 'target_reg_in_cap_cap' + id: 'SC1' }) -const target_reg_out_cap_cap = board.add(C_0805_2012Metric, { +// usb_reg.out_cap.cap +const SC2 = board.add(C_0805_2012Metric, { translate: pt(0.717, 1.003), rotate: 0, - id: 'target_reg_out_cap_cap' + id: 'SC2' }) -const mcu_swd_conn = board.add(Tag_Connect_TC2030_IDC_NL_2x03_P1_27mm_Vertical, { +// target_reg.ic +const SU2 = board.add(SOT_23_5, { + translate: pt(1.093, 0.858), rotate: 0, + id: 'SU2' +}) +// target_reg.in_cap.cap +const SC3 = board.add(C_0402_1005Metric, { + translate: pt(1.222, 0.983), rotate: 0, + id: 'SC3' +}) +// target_reg.out_cap.cap +const SC4 = board.add(C_0805_2012Metric, { + translate: pt(1.080, 1.003), rotate: 0, + id: 'SC4' +}) +// mcu.swd.conn +const SJ2 = board.add(Tag_Connect_TC2030_IDC_NL_2x03_P1_27mm_Vertical, { translate: pt(0.138, 0.443), rotate: 0, - id: 'mcu_swd_conn' + id: 'SJ2' }) -const mcu_ic = board.add(QFN_56_1EP_7x7mm_P0_4mm_EP3_2x3_2mm, { +// mcu.ic +const SU3 = board.add(QFN_56_1EP_7x7mm_P0_4mm_EP3_2x3_2mm, { translate: pt(0.163, 0.163), rotate: 0, - id: 'mcu_ic' + id: 'SU3' }) -const mcu_iovdd_cap_0__cap = board.add(C_0402_1005Metric, { +// mcu.iovdd_cap[0].cap +const SC5 = board.add(C_0402_1005Metric, { translate: pt(0.036, 0.580), rotate: 0, - id: 'mcu_iovdd_cap_0__cap' + id: 'SC5' }) -const mcu_iovdd_cap_1__cap = board.add(C_0402_1005Metric, { +// mcu.iovdd_cap[1].cap +const SC6 = board.add(C_0402_1005Metric, { translate: pt(0.147, 0.580), rotate: 0, - id: 'mcu_iovdd_cap_1__cap' + id: 'SC6' }) -const mcu_iovdd_cap_2__cap = board.add(C_0402_1005Metric, { +// mcu.iovdd_cap[2].cap +const SC7 = board.add(C_0402_1005Metric, { translate: pt(0.258, 0.580), rotate: 0, - id: 'mcu_iovdd_cap_2__cap' + id: 'SC7' }) -const mcu_iovdd_cap_3__cap = board.add(C_0402_1005Metric, { +// mcu.iovdd_cap[3].cap +const SC8 = board.add(C_0402_1005Metric, { translate: pt(0.369, 0.580), rotate: 0, - id: 'mcu_iovdd_cap_3__cap' + id: 'SC8' }) -const mcu_iovdd_cap_4__cap = board.add(C_0402_1005Metric, { +// mcu.iovdd_cap[4].cap +const SC9 = board.add(C_0402_1005Metric, { translate: pt(0.480, 0.580), rotate: 0, - id: 'mcu_iovdd_cap_4__cap' + id: 'SC9' }) -const mcu_iovdd_cap_5__cap = board.add(C_0402_1005Metric, { +// mcu.iovdd_cap[5].cap +const SC10 = board.add(C_0402_1005Metric, { translate: pt(0.591, 0.580), rotate: 0, - id: 'mcu_iovdd_cap_5__cap' + id: 'SC10' }) -const mcu_avdd_cap_cap = board.add(C_0402_1005Metric, { +// mcu.avdd_cap.cap +const SC11 = board.add(C_0402_1005Metric, { translate: pt(0.702, 0.580), rotate: 0, - id: 'mcu_avdd_cap_cap' + id: 'SC11' }) -const mcu_vreg_in_cap_cap = board.add(C_0402_1005Metric, { +// mcu.vreg_in_cap.cap +const SC12 = board.add(C_0402_1005Metric, { translate: pt(0.813, 0.580), rotate: 0, - id: 'mcu_vreg_in_cap_cap' + id: 'SC12' }) -const mcu_mem_ic = board.add(SOIC_8_5_23x5_23mm_P1_27mm, { +// mcu.mem.ic +const SU4 = board.add(SOIC_8_5_23x5_23mm_P1_27mm, { translate: pt(0.548, 0.113), rotate: 0, - id: 'mcu_mem_ic' + id: 'SU4' }) -const mcu_mem_vcc_cap_cap = board.add(C_0402_1005Metric, { +// mcu.mem.vcc_cap.cap +const SC13 = board.add(C_0402_1005Metric, { translate: pt(0.036, 0.655), rotate: 0, - id: 'mcu_mem_vcc_cap_cap' + id: 'SC13' }) -const mcu_dvdd_cap_0__cap = board.add(C_0402_1005Metric, { +// mcu.dvdd_cap[0].cap +const SC14 = board.add(C_0402_1005Metric, { translate: pt(0.147, 0.655), rotate: 0, - id: 'mcu_dvdd_cap_0__cap' + id: 'SC14' }) -const mcu_dvdd_cap_1__cap = board.add(C_0402_1005Metric, { +// mcu.dvdd_cap[1].cap +const SC15 = board.add(C_0402_1005Metric, { translate: pt(0.258, 0.655), rotate: 0, - id: 'mcu_dvdd_cap_1__cap' + id: 'SC15' }) -const mcu_vreg_out_cap_cap = board.add(C_0402_1005Metric, { +// mcu.vreg_out_cap.cap +const SC16 = board.add(C_0402_1005Metric, { translate: pt(0.369, 0.655), rotate: 0, - id: 'mcu_vreg_out_cap_cap' + id: 'SC16' }) -const mcu_usb_res_dp_res = board.add(R_0603_1608Metric, { +// mcu.usb_res.dp_res +const SR3 = board.add(R_0603_1608Metric, { translate: pt(0.562, 0.393), rotate: 0, - id: 'mcu_usb_res_dp_res' + id: 'SR3' }) -const mcu_usb_res_dm_res = board.add(R_0603_1608Metric, { +// mcu.usb_res.dm_res +const SR4 = board.add(R_0603_1608Metric, { translate: pt(0.718, 0.393), rotate: 0, - id: 'mcu_usb_res_dm_res' + id: 'SR4' }) -const mcu_crystal = board.add(Resonator_SMD_Murata_CSTxExxV_3Pin_3_0x1_1mm, { +// mcu.crystal +const SU5 = board.add(Resonator_SMD_Murata_CSTxExxV_3Pin_3_0x1_1mm, { translate: pt(0.394, 0.428), rotate: 0, - id: 'mcu_crystal' + id: 'SU5' }) -const usb_esd = board.add(SOT_23, { +// usb_esd +const SU6 = board.add(SOT_23, { translate: pt(0.746, 1.328), rotate: 0, - id: 'usb_esd' + id: 'SU6' }) -const led_tgt_package = board.add(LED_0603_1608Metric, { - translate: pt(0.058, 1.290), rotate: 0, - id: 'led_tgt_package' -}) -const led_tgt_res = board.add(R_0402_1005Metric, { - translate: pt(0.037, 1.377), rotate: 0, - id: 'led_tgt_res' -}) -const led_usb_package = board.add(LED_0603_1608Metric, { +// led_tgt.package +const SD2 = board.add(LED_0603_1608Metric, { translate: pt(1.434, 0.820), rotate: 0, - id: 'led_usb_package' + id: 'SD2' }) -const led_usb_res = board.add(R_0402_1005Metric, { +// led_tgt.res +const SR5 = board.add(R_0402_1005Metric, { translate: pt(1.412, 0.907), rotate: 0, - id: 'led_usb_res' + id: 'SR5' +}) +// led_usb.package +const SD3 = board.add(LED_0603_1608Metric, { + translate: pt(1.669, 0.820), rotate: 0, + id: 'SD3' +}) +// led_usb.res +const SR6 = board.add(R_0402_1005Metric, { + translate: pt(1.647, 0.907), rotate: 0, + id: 'SR6' }) -const en_pull_res = board.add(R_0402_1005Metric, { +// en_pull.res +const SR7 = board.add(R_0402_1005Metric, { translate: pt(1.055, 1.280), rotate: 0, - id: 'en_pull_res' + id: 'SR7' }) -const target_conn = board.add(PinHeader_2x03_P2_54mm_EdgeInline, { +// target.conn +const SJ3 = board.add(PinHeader_2x03_P2_54mm_EdgeInline, { translate: pt(1.126, 0.321), rotate: 0, - id: 'target_conn' + id: 'SJ3' }) -const led_target_package = board.add(LED_0603_1608Metric, { - translate: pt(1.669, 0.820), rotate: 0, - id: 'led_target_package' +// led_target.package +const SD4 = board.add(LED_0603_1608Metric, { + translate: pt(0.058, 1.290), rotate: 0, + id: 'SD4' }) -const led_target_res = board.add(R_0402_1005Metric, { - translate: pt(1.647, 0.907), rotate: 0, - id: 'led_target_res' +// led_target.res +const SR8 = board.add(R_0402_1005Metric, { + translate: pt(0.037, 1.377), rotate: 0, + id: 'SR8' }) -const target_sense_div_top_res = board.add(R_0402_1005Metric, { +// target_sense.div.top_res +const SR9 = board.add(R_0402_1005Metric, { translate: pt(0.271, 1.280), rotate: 0, - id: 'target_sense_div_top_res' + id: 'SR9' }) -const target_sense_div_bottom_res = board.add(R_0402_1005Metric, { +// target_sense.div.bottom_res +const SR10 = board.add(R_0402_1005Metric, { translate: pt(0.271, 1.356), rotate: 0, - id: 'target_sense_div_bottom_res' + id: 'SR10' }) +board.setNetlist([ + {name: "Svusb", pads: [["SJ1", "A4"], ["SJ1", "B9"], ["SJ1", "B4"], ["SJ1", "A9"], ["SD1", "1"], ["SU1", "1"], ["SU2", "1"], ["SU1", "3"], ["SC1", "1"], ["SC3", "1"]]}, + {name: "Sgnd", pads: [["SU6", "3"], ["SJ1", "A1"], ["SJ1", "B12"], ["SJ1", "B1"], ["SJ1", "A12"], ["SD1", "2"], ["SU1", "2"], ["SU2", "2"], ["SU3", "19"], ["SU3", "57"], ["SU5", "2"], ["SR5", "2"], ["SR6", "2"], ["SJ3", "5"], ["SR8", "2"], ["SR10", "2"], ["SJ1", "S1"], ["SC1", "2"], ["SC2", "2"], ["SC3", "2"], ["SC4", "2"], ["SJ2", "5"], ["SC5", "2"], ["SC6", "2"], ["SC7", "2"], ["SC8", "2"], ["SC9", "2"], ["SC10", "2"], ["SC11", "2"], ["SC12", "2"], ["SU4", "4"], ["SC14", "2"], ["SC15", "2"], ["SC16", "2"], ["SR1", "1"], ["SR2", "1"], ["SC13", "2"]]}, + {name: "Sv3v3", pads: [["SU1", "5"], ["SU3", "1"], ["SU3", "10"], ["SU3", "22"], ["SU3", "33"], ["SU3", "42"], ["SU3", "49"], ["SU3", "44"], ["SU3", "43"], ["SU3", "48"], ["SR7", "1"], ["SC2", "1"], ["SJ2", "1"], ["SC5", "1"], ["SC6", "1"], ["SC7", "1"], ["SC8", "1"], ["SC9", "1"], ["SC10", "1"], ["SC11", "1"], ["SC12", "1"], ["SU4", "8"], ["SC13", "1"]]}, + {name: "Svtarget", pads: [["SU2", "5"], ["SJ3", "1"], ["SD4", "2"], ["SR9", "1"], ["SC4", "1"]]}, + {name: "Susb_chain_0.d_P", pads: [["SJ1", "A6"], ["SJ1", "B6"], ["SU6", "2"], ["SR3", "2"]]}, + {name: "Susb_chain_0.d_N", pads: [["SJ1", "A7"], ["SJ1", "B7"], ["SU6", "1"], ["SR4", "2"]]}, + {name: "Sled_tgt.signal", pads: [["SU3", "27"], ["SD2", "2"]]}, + {name: "Sled_usb.signal", pads: [["SU3", "37"], ["SD3", "2"]]}, + {name: "Sen_pull.io", pads: [["SU3", "17"], ["SU2", "3"], ["SR7", "2"]]}, + {name: "Starget_drv.swclk", pads: [["SU3", "4"], ["SJ3", "4"]]}, + {name: "Starget_drv.swdio", pads: [["SU3", "5"], ["SJ3", "2"]]}, + {name: "Starget.swo", pads: [["SU3", "3"], ["SJ3", "6"]]}, + {name: "Starget.reset", pads: [["SU3", "7"], ["SJ3", "3"]]}, + {name: "Starget_sense.output", pads: [["SU3", "40"], ["SR9", "2"], ["SR10", "1"]]}, + {name: "Susb.conn.cc.cc1", pads: [["SJ1", "A5"], ["SR1", "2"]]}, + {name: "Susb.conn.cc.cc2", pads: [["SJ1", "B5"], ["SR2", "2"]]}, + {name: "Smcu.xtal_node.xi", pads: [["SU3", "20"], ["SU5", "1"]]}, + {name: "Smcu.xtal_node.xo", pads: [["SU3", "21"], ["SU5", "3"]]}, + {name: "Smcu.swd_node.swdio", pads: [["SU3", "25"], ["SJ2", "2"]]}, + {name: "Smcu.swd_node.swclk", pads: [["SU3", "24"], ["SJ2", "4"]]}, + {name: "Smcu.reset_node", pads: [["SU3", "26"], ["SJ2", "3"]]}, + {name: "Smcu.ic.qspi.sck", pads: [["SU3", "52"], ["SU4", "6"]]}, + {name: "Smcu.ic.qspi.mosi", pads: [["SU3", "53"], ["SU4", "5"]]}, + {name: "Smcu.ic.qspi.miso", pads: [["SU3", "55"], ["SU4", "2"]]}, + {name: "Smcu.ic.qspi_cs", pads: [["SU3", "56"], ["SU4", "1"]]}, + {name: "Smcu.ic.qspi_sd2", pads: [["SU3", "54"], ["SU4", "3"]]}, + {name: "Smcu.ic.qspi_sd3", pads: [["SU3", "51"], ["SU4", "7"]]}, + {name: "Smcu.ic.vreg_vout", pads: [["SU3", "45"], ["SU3", "23"], ["SU3", "50"], ["SC14", "1"], ["SC15", "1"], ["SC16", "1"]]}, + {name: "Smcu.usb_chain_0.d_P", pads: [["SU3", "47"], ["SR3", "1"]]}, + {name: "Smcu.usb_chain_0.d_N", pads: [["SU3", "46"], ["SR4", "1"]]}, + {name: "Smcu.swd.swo", pads: [["SU3", "15"], ["SJ2", "6"]]}, + {name: "Sled_tgt.res.a", pads: [["SR5", "1"], ["SD2", "1"]]}, + {name: "Sled_usb.res.a", pads: [["SR6", "1"], ["SD3", "1"]]}, + {name: "Sled_target.res.a", pads: [["SR8", "1"], ["SD4", "1"]]} +]) + const limit0 = pt(-0.07874015748031496, -0.07874015748031496); const limit1 = pt(1.8452755905511813, 1.5133858267716536); const xMin = Math.min(limit0[0], limit1[0]); diff --git a/examples/ProtectedCharger/ProtectedCharger.svgpcb.js b/examples/ProtectedCharger/ProtectedCharger.svgpcb.js index 207125f81..98ab9cc10 100644 --- a/examples/ProtectedCharger/ProtectedCharger.svgpcb.js +++ b/examples/ProtectedCharger/ProtectedCharger.svgpcb.js @@ -1,90 +1,127 @@ const board = new PCB(); -const jlc_th_th1 = board.add(JlcToolingHole_1_152mm, { +// jlc_th.th1 +const H1 = board.add(JlcToolingHole_1_152mm, { translate: pt(0.501, 0.935), rotate: 0, - id: 'jlc_th_th1' + id: 'H1' }) -const jlc_th_th2 = board.add(JlcToolingHole_1_152mm, { +// jlc_th.th2 +const H2 = board.add(JlcToolingHole_1_152mm, { translate: pt(0.540, 0.935), rotate: 0, - id: 'jlc_th_th2' + id: 'H2' }) -const jlc_th_th3 = board.add(JlcToolingHole_1_152mm, { +// jlc_th.th3 +const H3 = board.add(JlcToolingHole_1_152mm, { translate: pt(0.501, 0.974), rotate: 0, - id: 'jlc_th_th3' + id: 'H3' }) -const usb_conn = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { +// usb.conn +const J1 = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { translate: pt(0.209, 0.165), rotate: 0, - id: 'usb_conn' + id: 'J1' }) -const usb_cc_pull_cc1_res = board.add(R_0603_1608Metric, { +// usb.cc_pull.cc1.res +const R1 = board.add(R_0603_1608Metric, { translate: pt(0.058, 0.420), rotate: 0, - id: 'usb_cc_pull_cc1_res' + id: 'R1' }) -const usb_cc_pull_cc2_res = board.add(R_0603_1608Metric, { +// usb.cc_pull.cc2.res +const R2 = board.add(R_0603_1608Metric, { translate: pt(0.214, 0.420), rotate: 0, - id: 'usb_cc_pull_cc2_res' + id: 'R2' }) -const batt_conn = board.add(JST_PH_S2B_PH_K_1x02_P2_00mm_Horizontal, { +// batt.conn +const J2 = board.add(JST_PH_S2B_PH_K_1x02_P2_00mm_Horizontal, { translate: pt(0.633, 0.266), rotate: 0, - id: 'batt_conn' + id: 'J2' }) -const tp_gnd_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(0.317, 0.972), rotate: 0, - id: 'tp_gnd_tp' -}) -const tp_tp = board.add(TestPoint_TE_RCT_0805, { +// tp_gnd.tp +const TP1 = board.add(TestPoint_TE_RCT_0805, { translate: pt(0.066, 0.972), rotate: 0, - id: 'tp_tp' + id: 'TP1' }) -const pmos_r1 = board.add(R_0603_1608Metric, { +// tp.tp +const TP2 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(0.317, 0.972), rotate: 0, + id: 'TP2' +}) +// pmos.r1 +const R3 = board.add(R_0603_1608Metric, { translate: pt(0.511, 0.769), rotate: 0, - id: 'pmos_r1' + id: 'R3' }) -const pmos_r2 = board.add(R_0603_1608Metric, { +// pmos.r2 +const R4 = board.add(R_0603_1608Metric, { translate: pt(0.667, 0.769), rotate: 0, - id: 'pmos_r2' + id: 'R4' }) -const pmos_mp1 = board.add(SOT_23, { +// pmos.mp1 +const Q1 = board.add(SOT_23, { translate: pt(0.528, 0.633), rotate: 0, - id: 'pmos_mp1' + id: 'Q1' }) -const pmos_mp2 = board.add(SOT_23, { +// pmos.mp2 +const Q2 = board.add(SOT_23, { translate: pt(0.719, 0.633), rotate: 0, - id: 'pmos_mp2' + id: 'Q2' }) -const charger_ic = board.add(SOT_23_5, { +// charger.ic +const U1 = board.add(SOT_23_5, { translate: pt(0.081, 0.633), rotate: 0, - id: 'charger_ic' + id: 'U1' }) -const charger_vdd_cap_cap = board.add(C_0805_2012Metric, { +// charger.vdd_cap.cap +const C1 = board.add(C_0805_2012Metric, { translate: pt(0.268, 0.605), rotate: 0, - id: 'charger_vdd_cap_cap' + id: 'C1' }) -const charger_vbat_cap_cap = board.add(C_0805_2012Metric, { +// charger.vbat_cap.cap +const C2 = board.add(C_0805_2012Metric, { translate: pt(0.067, 0.778), rotate: 0, - id: 'charger_vbat_cap_cap' + id: 'C2' }) -const charger_prog_res = board.add(R_0603_1608Metric, { +// charger.prog_res +const R5 = board.add(R_0603_1608Metric, { translate: pt(0.231, 0.769), rotate: 0, - id: 'charger_prog_res' + id: 'R5' }) -const charge_led_package = board.add(LED_0603_1608Metric, { +// charge_led.package +const D1 = board.add(LED_0603_1608Metric, { translate: pt(0.971, 0.595), rotate: 0, - id: 'charge_led_package' + id: 'D1' }) -const charge_led_res = board.add(R_0603_1608Metric, { +// charge_led.res +const R6 = board.add(R_0603_1608Metric, { translate: pt(0.971, 0.693), rotate: 0, - id: 'charge_led_res' + id: 'R6' }) -const pmos_load_fet = board.add(SOT_23, { +// pmos_load.fet +const Q3 = board.add(SOT_23, { translate: pt(1.223, 0.633), rotate: 0, - id: 'pmos_load_fet' + id: 'Q3' }) -const pwr_pins = board.add(JST_PH_S3B_PH_K_1x03_P2_00mm_Horizontal, { +// pwr_pins +const J3 = board.add(JST_PH_S3B_PH_K_1x03_P2_00mm_Horizontal, { translate: pt(1.023, 0.266), rotate: 0, - id: 'pwr_pins' + id: 'J3' }) +board.setNetlist([ + {name: "vusb", pads: [["J1", "A4"], ["J1", "B9"], ["J1", "B4"], ["J1", "A9"], ["U1", "4"], ["D1", "2"], ["C1", "1"]]}, + {name: "gnd", pads: [["J1", "A1"], ["J1", "B12"], ["J1", "B1"], ["J1", "A12"], ["J3", "1"], ["J3", "3"], ["J2", "1"], ["TP1", "1"], ["R3", "2"], ["U1", "2"], ["Q3", "1"], ["J1", "S1"], ["R5", "2"], ["C1", "2"], ["C2", "2"], ["R1", "1"], ["R2", "1"]]}, + {name: "batt.pwr", pads: [["J2", "2"], ["TP2", "1"], ["R4", "2"], ["Q1", "1"], ["Q2", "3"]]}, + {name: "charger.pwr_bat", pads: [["U1", "3"], ["Q1", "2"], ["Q2", "2"], ["R4", "1"], ["C2", "1"], ["Q3", "3"]]}, + {name: "charge_led.signal", pads: [["U1", "1"], ["R6", "2"]]}, + {name: "pmos_load.pwr_out", pads: [["J3", "2"], ["Q3", "2"]]}, + {name: "usb.usb.dp", pads: [["J1", "A6"], ["J1", "B6"]]}, + {name: "usb.usb.dm", pads: [["J1", "A7"], ["J1", "B7"]]}, + {name: "usb.conn.cc.cc1", pads: [["J1", "A5"], ["R1", "2"]]}, + {name: "usb.conn.cc.cc2", pads: [["J1", "B5"], ["R2", "2"]]}, + {name: "pmos.r1.a", pads: [["R3", "1"], ["Q1", "3"], ["Q2", "1"]]}, + {name: "charger.prog_res.a", pads: [["R5", "1"], ["U1", "5"]]}, + {name: "charge_led.res.a", pads: [["R6", "1"], ["D1", "1"]]} +]) + const limit0 = pt(-0.07874015748031496, -0.07874015748031496); const limit1 = pt(1.416732283464567, 1.1279527559055118); const xMin = Math.min(limit0[0], limit1[0]); diff --git a/examples/RobotCrawler/RobotCrawler.svgpcb.js b/examples/RobotCrawler/RobotCrawler.svgpcb.js index b35e01468..9a340c9bc 100644 --- a/examples/RobotCrawler/RobotCrawler.svgpcb.js +++ b/examples/RobotCrawler/RobotCrawler.svgpcb.js @@ -1,454 +1,677 @@ const board = new PCB(); -const batt_conn = board.add(JST_PH_B2B_PH_K_1x02_P2_00mm_Vertical, { +// batt.conn +const RJ1 = board.add(JST_PH_B2B_PH_K_1x02_P2_00mm_Vertical, { translate: pt(0.487, 3.263), rotate: 0, - id: 'batt_conn' + id: 'RJ1' }) -const servos_0__conn = board.add(PinHeader_1x04_P2_54mm_Vertical, { - translate: pt(3.864, 2.110), rotate: 0, - id: 'servos_0__conn' +// servos[0].conn +const RJ2 = board.add(PinHeader_1x04_P2_54mm_Vertical, { + translate: pt(1.785, 2.110), rotate: 0, + id: 'RJ2' }) -const servos_1__conn = board.add(PinHeader_1x04_P2_54mm_Vertical, { - translate: pt(3.604, 2.110), rotate: 0, - id: 'servos_1__conn' +// servos[1].conn +const RJ3 = board.add(PinHeader_1x04_P2_54mm_Vertical, { + translate: pt(2.045, 2.110), rotate: 0, + id: 'RJ3' }) -const servos_2__conn = board.add(PinHeader_1x04_P2_54mm_Vertical, { - translate: pt(3.084, 2.110), rotate: 0, - id: 'servos_2__conn' +// servos[2].conn +const RJ4 = board.add(PinHeader_1x04_P2_54mm_Vertical, { + translate: pt(2.305, 2.110), rotate: 0, + id: 'RJ4' }) -const servos_3__conn = board.add(PinHeader_1x04_P2_54mm_Vertical, { - translate: pt(0.331, 2.944), rotate: 0, - id: 'servos_3__conn' +// servos[3].conn +const RJ5 = board.add(PinHeader_1x04_P2_54mm_Vertical, { + translate: pt(2.565, 2.110), rotate: 0, + id: 'RJ5' }) -const servos_4__conn = board.add(PinHeader_1x04_P2_54mm_Vertical, { +// servos[4].conn +const RJ6 = board.add(PinHeader_1x04_P2_54mm_Vertical, { translate: pt(2.824, 2.110), rotate: 0, - id: 'servos_4__conn' + id: 'RJ6' }) -const servos_5__conn = board.add(PinHeader_1x04_P2_54mm_Vertical, { - translate: pt(0.071, 2.944), rotate: 0, - id: 'servos_5__conn' +// servos[5].conn +const RJ7 = board.add(PinHeader_1x04_P2_54mm_Vertical, { + translate: pt(3.084, 2.110), rotate: 0, + id: 'RJ7' }) -const servos_6__conn = board.add(PinHeader_1x04_P2_54mm_Vertical, { - translate: pt(2.305, 2.110), rotate: 0, - id: 'servos_6__conn' +// servos[6].conn +const RJ8 = board.add(PinHeader_1x04_P2_54mm_Vertical, { + translate: pt(3.344, 2.110), rotate: 0, + id: 'RJ8' }) -const servos_7__conn = board.add(PinHeader_1x04_P2_54mm_Vertical, { - translate: pt(4.124, 2.110), rotate: 0, - id: 'servos_7__conn' +// servos[7].conn +const RJ9 = board.add(PinHeader_1x04_P2_54mm_Vertical, { + translate: pt(3.604, 2.110), rotate: 0, + id: 'RJ9' }) -const servos_8__conn = board.add(PinHeader_1x04_P2_54mm_Vertical, { - translate: pt(3.344, 2.110), rotate: 0, - id: 'servos_8__conn' +// servos[8].conn +const RJ10 = board.add(PinHeader_1x04_P2_54mm_Vertical, { + translate: pt(3.864, 2.110), rotate: 0, + id: 'RJ10' }) -const servos_9__conn = board.add(PinHeader_1x04_P2_54mm_Vertical, { - translate: pt(2.045, 2.110), rotate: 0, - id: 'servos_9__conn' +// servos[9].conn +const RJ11 = board.add(PinHeader_1x04_P2_54mm_Vertical, { + translate: pt(4.124, 2.110), rotate: 0, + id: 'RJ11' }) -const servos_10__conn = board.add(PinHeader_1x04_P2_54mm_Vertical, { - translate: pt(0.850, 2.944), rotate: 0, - id: 'servos_10__conn' +// servos[10].conn +const RJ12 = board.add(PinHeader_1x04_P2_54mm_Vertical, { + translate: pt(0.071, 2.944), rotate: 0, + id: 'RJ12' }) -const servos_11__conn = board.add(PinHeader_1x04_P2_54mm_Vertical, { - translate: pt(1.785, 2.110), rotate: 0, - id: 'servos_11__conn' +// servos[11].conn +const RJ13 = board.add(PinHeader_1x04_P2_54mm_Vertical, { + translate: pt(0.331, 2.944), rotate: 0, + id: 'RJ13' }) -const imu_ic = board.add(Bosch_LGA_14_3x2_5mm_P0_5mm, { +// imu.ic +const RU1 = board.add(Bosch_LGA_14_3x2_5mm_P0_5mm, { translate: pt(0.073, 3.196), rotate: 0, - id: 'imu_ic' + id: 'RU1' }) -const imu_vdd_cap_cap = board.add(C_0603_1608Metric, { +// imu.vdd_cap.cap +const RC1 = board.add(C_0603_1608Metric, { translate: pt(0.058, 3.327), rotate: 0, - id: 'imu_vdd_cap_cap' + id: 'RC1' }) -const imu_vddio_cap_cap = board.add(C_0603_1608Metric, { +// imu.vddio_cap.cap +const RC2 = board.add(C_0603_1608Metric, { translate: pt(0.214, 3.327), rotate: 0, - id: 'imu_vddio_cap_cap' + id: 'RC2' }) -const servos_cam_0__conn = board.add(PinHeader_1x04_P2_54mm_Vertical, { +// servos_cam[0].conn +const RJ14 = board.add(PinHeader_1x04_P2_54mm_Vertical, { translate: pt(0.591, 2.944), rotate: 0, - id: 'servos_cam_0__conn' + id: 'RJ14' }) -const servos_cam_1__conn = board.add(PinHeader_1x04_P2_54mm_Vertical, { - translate: pt(2.565, 2.110), rotate: 0, - id: 'servos_cam_1__conn' +// servos_cam[1].conn +const RJ15 = board.add(PinHeader_1x04_P2_54mm_Vertical, { + translate: pt(0.850, 2.944), rotate: 0, + id: 'RJ15' }) -const jlc_th_th1 = board.add(JlcToolingHole_1_152mm, { +// jlc_th.th1 +const RH1 = board.add(JlcToolingHole_1_152mm, { translate: pt(2.737, 3.133), rotate: 0, - id: 'jlc_th_th1' + id: 'RH1' }) -const jlc_th_th2 = board.add(JlcToolingHole_1_152mm, { +// jlc_th.th2 +const RH2 = board.add(JlcToolingHole_1_152mm, { translate: pt(2.776, 3.133), rotate: 0, - id: 'jlc_th_th2' + id: 'RH2' }) -const jlc_th_th3 = board.add(JlcToolingHole_1_152mm, { +// jlc_th.th3 +const RH3 = board.add(JlcToolingHole_1_152mm, { translate: pt(2.737, 3.172), rotate: 0, - id: 'jlc_th_th3' -}) -const tp_vbatt_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(2.052, 3.170), rotate: 0, - id: 'tp_vbatt_tp' + id: 'RH3' }) -const tp_gnd_tp = board.add(TestPoint_TE_RCT_0805, { +// tp_vbatt.tp +const RTP1 = board.add(TestPoint_TE_RCT_0805, { translate: pt(1.801, 3.170), rotate: 0, - id: 'tp_gnd_tp' + id: 'RTP1' }) -const reg_3v3_ic = board.add(SOT_89_3, { +// tp_gnd.tp +const RTP2 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(2.052, 3.170), rotate: 0, + id: 'RTP2' +}) +// reg_3v3.ic +const RU2 = board.add(SOT_89_3, { translate: pt(3.500, 2.672), rotate: 0, - id: 'reg_3v3_ic' + id: 'RU2' }) -const reg_3v3_in_cap_cap = board.add(C_0603_1608Metric, { +// reg_3v3.in_cap.cap +const RC3 = board.add(C_0603_1608Metric, { translate: pt(3.446, 2.839), rotate: 0, - id: 'reg_3v3_in_cap_cap' + id: 'RC3' }) -const reg_3v3_out_cap_cap = board.add(C_0603_1608Metric, { +// reg_3v3.out_cap.cap +const RC4 = board.add(C_0603_1608Metric, { translate: pt(3.602, 2.839), rotate: 0, - id: 'reg_3v3_out_cap_cap' + id: 'RC4' }) -const tp_3v3_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(2.552, 3.170), rotate: 0, - id: 'tp_3v3_tp' +// tp_3v3.tp +const RTP3 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(2.302, 3.170), rotate: 0, + id: 'RTP3' }) -const reg_14v_ic = board.add(SOT_23_5, { +// reg_14v.ic +const RU3 = board.add(SOT_23_5, { translate: pt(1.951, 2.641), rotate: 0, - id: 'reg_14v_ic' + id: 'RU3' }) -const reg_14v_fb_div_top_res = board.add(R_0603_1608Metric, { +// reg_14v.fb.div.top_res +const RR1 = board.add(R_0603_1608Metric, { translate: pt(1.928, 2.906), rotate: 0, - id: 'reg_14v_fb_div_top_res' + id: 'RR1' }) -const reg_14v_fb_div_bottom_res = board.add(R_0603_1608Metric, { +// reg_14v.fb.div.bottom_res +const RR2 = board.add(R_0603_1608Metric, { translate: pt(2.084, 2.906), rotate: 0, - id: 'reg_14v_fb_div_bottom_res' + id: 'RR2' }) -const reg_14v_cff = board.add(C_0603_1608Metric, { +// reg_14v.cff +const RC5 = board.add(C_0603_1608Metric, { translate: pt(2.240, 2.906), rotate: 0, - id: 'reg_14v_cff' + id: 'RC5' }) -const reg_14v_inductor = board.add(L_1210_3225Metric, { +// reg_14v.inductor +const RL1 = board.add(L_1210_3225Metric, { translate: pt(2.161, 2.636), rotate: 0, - id: 'reg_14v_inductor' + id: 'RL1' }) -const reg_14v_rect = board.add(D_SOD_323, { +// reg_14v.rect +const RD1 = board.add(D_SOD_323, { translate: pt(2.327, 2.785), rotate: 0, - id: 'reg_14v_rect' + id: 'RD1' }) -const reg_14v_in_cap_cap = board.add(C_0805_2012Metric, { +// reg_14v.in_cap.cap +const RC6 = board.add(C_0805_2012Metric, { translate: pt(2.157, 2.786), rotate: 0, - id: 'reg_14v_in_cap_cap' + id: 'RC6' }) -const reg_14v_out_cap_cap = board.add(C_1206_3216Metric, { +// reg_14v.out_cap.cap +const RC7 = board.add(C_1206_3216Metric, { translate: pt(1.961, 2.793), rotate: 0, - id: 'reg_14v_out_cap_cap' -}) -const tp_14v_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(2.302, 3.170), rotate: 0, - id: 'tp_14v_tp' -}) -const reg_2v5_ic = board.add(SOT_23, { - translate: pt(4.244, 2.641), rotate: 0, - id: 'reg_2v5_ic' + id: 'RC7' }) -const reg_2v5_in_cap_cap = board.add(C_0603_1608Metric, { - translate: pt(4.227, 2.776), rotate: 0, - id: 'reg_2v5_in_cap_cap' -}) -const reg_2v5_out_cap_cap = board.add(C_0603_1608Metric, { - translate: pt(4.383, 2.776), rotate: 0, - id: 'reg_2v5_out_cap_cap' +// tp_14v.tp +const RTP4 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(2.552, 3.170), rotate: 0, + id: 'RTP4' }) -const reg_1v2_ic = board.add(SOT_23, { +// reg_2v5.ic +const RU4 = board.add(SOT_23, { translate: pt(3.854, 2.641), rotate: 0, - id: 'reg_1v2_ic' + id: 'RU4' }) -const reg_1v2_in_cap_cap = board.add(C_0603_1608Metric, { +// reg_2v5.in_cap.cap +const RC8 = board.add(C_0603_1608Metric, { translate: pt(3.836, 2.776), rotate: 0, - id: 'reg_1v2_in_cap_cap' + id: 'RC8' }) -const reg_1v2_out_cap_cap = board.add(C_0603_1608Metric, { +// reg_2v5.out_cap.cap +const RC9 = board.add(C_0603_1608Metric, { translate: pt(3.992, 2.776), rotate: 0, - id: 'reg_1v2_out_cap_cap' + id: 'RC9' +}) +// reg_1v2.ic +const RU5 = board.add(SOT_23, { + translate: pt(4.244, 2.641), rotate: 0, + id: 'RU5' }) -const mcu_ic = board.add(ESP32_S3_WROOM_1, { +// reg_1v2.in_cap.cap +const RC10 = board.add(C_0603_1608Metric, { + translate: pt(4.227, 2.776), rotate: 0, + id: 'RC10' +}) +// reg_1v2.out_cap.cap +const RC11 = board.add(C_0603_1608Metric, { + translate: pt(4.383, 2.776), rotate: 0, + id: 'RC11' +}) +// mcu.ic +const RU6 = board.add(ESP32_S3_WROOM_1, { translate: pt(0.945, 0.530), rotate: 0, - id: 'mcu_ic' + id: 'RU6' }) -const mcu_vcc_cap0_cap = board.add(C_1206_3216Metric, { +// mcu.vcc_cap0.cap +const RC12 = board.add(C_1206_3216Metric, { translate: pt(2.020, 0.419), rotate: 0, - id: 'mcu_vcc_cap0_cap' + id: 'RC12' }) -const mcu_vcc_cap1_cap = board.add(C_0603_1608Metric, { +// mcu.vcc_cap1.cap +const RC13 = board.add(C_0603_1608Metric, { translate: pt(2.208, 0.403), rotate: 0, - id: 'mcu_vcc_cap1_cap' + id: 'RC13' }) -const mcu_prog_conn = board.add(Tag_Connect_TC2030_IDC_FP_2x03_P1_27mm_Vertical, { +// mcu.prog.conn +const RJ16 = board.add(Tag_Connect_TC2030_IDC_FP_2x03_P1_27mm_Vertical, { translate: pt(2.096, 0.167), rotate: 0, - id: 'mcu_prog_conn' + id: 'RJ16' }) -const mcu_en_pull_rc_r = board.add(R_0603_1608Metric, { +// mcu.en_pull.rc.r +const RR3 = board.add(R_0603_1608Metric, { translate: pt(2.364, 0.403), rotate: 0, - id: 'mcu_en_pull_rc_r' + id: 'RR3' }) -const mcu_en_pull_rc_c = board.add(C_0603_1608Metric, { +// mcu.en_pull.rc.c +const RC14 = board.add(C_0603_1608Metric, { translate: pt(1.987, 0.533), rotate: 0, - id: 'mcu_en_pull_rc_c' + id: 'RC14' }) -const mcu_servo_swd_conn = board.add(Tag_Connect_TC2030_IDC_NL_2x03_P1_27mm_Vertical, { +// mcu_servo.swd.conn +const RJ17 = board.add(Tag_Connect_TC2030_IDC_NL_2x03_P1_27mm_Vertical, { translate: pt(1.444, 1.819), rotate: 0, - id: 'mcu_servo_swd_conn' + id: 'RJ17' }) -const mcu_servo_ic = board.add(LQFP_48_7x7mm_P0_5mm, { +// mcu_servo.ic +const RU7 = board.add(LQFP_48_7x7mm_P0_5mm, { translate: pt(1.064, 1.943), rotate: 0, - id: 'mcu_servo_ic' + id: 'RU7' }) -const mcu_servo_pwr_cap_0__cap = board.add(C_0805_2012Metric, { +// mcu_servo.pwr_cap[0].cap +const RC15 = board.add(C_0805_2012Metric, { translate: pt(1.373, 1.976), rotate: 0, - id: 'mcu_servo_pwr_cap_0__cap' + id: 'RC15' }) -const mcu_servo_pwr_cap_1__cap = board.add(C_0603_1608Metric, { +// mcu_servo.pwr_cap[1].cap +const RC16 = board.add(C_0603_1608Metric, { translate: pt(1.538, 1.966), rotate: 0, - id: 'mcu_servo_pwr_cap_1__cap' + id: 'RC16' }) -const mcu_servo_pwr_cap_2__cap = board.add(C_0603_1608Metric, { +// mcu_servo.pwr_cap[2].cap +const RC17 = board.add(C_0603_1608Metric, { translate: pt(1.365, 2.082), rotate: 0, - id: 'mcu_servo_pwr_cap_2__cap' + id: 'RC17' }) -const mcu_servo_pwr_cap_3__cap = board.add(C_0603_1608Metric, { +// mcu_servo.pwr_cap[3].cap +const RC18 = board.add(C_0603_1608Metric, { translate: pt(1.520, 2.082), rotate: 0, - id: 'mcu_servo_pwr_cap_3__cap' + id: 'RC18' }) -const mcu_servo_vdda_cap_0_cap = board.add(C_0603_1608Metric, { +// mcu_servo.vdda_cap_0.cap +const RC19 = board.add(C_0603_1608Metric, { translate: pt(0.920, 2.214), rotate: 0, - id: 'mcu_servo_vdda_cap_0_cap' + id: 'RC19' }) -const mcu_servo_vdda_cap_1_cap = board.add(C_0603_1608Metric, { +// mcu_servo.vdda_cap_1.cap +const RC20 = board.add(C_0603_1608Metric, { translate: pt(1.076, 2.214), rotate: 0, - id: 'mcu_servo_vdda_cap_1_cap' + id: 'RC20' }) -const mcu_test_swd_conn = board.add(Tag_Connect_TC2030_IDC_NL_2x03_P1_27mm_Vertical, { +// mcu_test.swd.conn +const RJ18 = board.add(Tag_Connect_TC2030_IDC_NL_2x03_P1_27mm_Vertical, { translate: pt(0.138, 2.183), rotate: 0, - id: 'mcu_test_swd_conn' + id: 'RJ18' }) -const mcu_test_ic = board.add(QFN_56_1EP_7x7mm_P0_4mm_EP3_2x3_2mm, { +// mcu_test.ic +const RU8 = board.add(QFN_56_1EP_7x7mm_P0_4mm_EP3_2x3_2mm, { translate: pt(0.163, 1.903), rotate: 0, - id: 'mcu_test_ic' + id: 'RU8' }) -const mcu_test_iovdd_cap_0__cap = board.add(C_0603_1608Metric, { +// mcu_test.iovdd_cap[0].cap +const RC21 = board.add(C_0603_1608Metric, { translate: pt(0.373, 2.133), rotate: 0, - id: 'mcu_test_iovdd_cap_0__cap' + id: 'RC21' }) -const mcu_test_iovdd_cap_1__cap = board.add(C_0603_1608Metric, { +// mcu_test.iovdd_cap[1].cap +const RC22 = board.add(C_0603_1608Metric, { translate: pt(0.529, 2.133), rotate: 0, - id: 'mcu_test_iovdd_cap_1__cap' + id: 'RC22' }) -const mcu_test_iovdd_cap_2__cap = board.add(C_0603_1608Metric, { +// mcu_test.iovdd_cap[2].cap +const RC23 = board.add(C_0603_1608Metric, { translate: pt(0.685, 2.133), rotate: 0, - id: 'mcu_test_iovdd_cap_2__cap' + id: 'RC23' }) -const mcu_test_iovdd_cap_3__cap = board.add(C_0603_1608Metric, { +// mcu_test.iovdd_cap[3].cap +const RC24 = board.add(C_0603_1608Metric, { translate: pt(0.373, 2.230), rotate: 0, - id: 'mcu_test_iovdd_cap_3__cap' + id: 'RC24' }) -const mcu_test_iovdd_cap_4__cap = board.add(C_0603_1608Metric, { +// mcu_test.iovdd_cap[4].cap +const RC25 = board.add(C_0603_1608Metric, { translate: pt(0.529, 2.230), rotate: 0, - id: 'mcu_test_iovdd_cap_4__cap' + id: 'RC25' }) -const mcu_test_iovdd_cap_5__cap = board.add(C_0603_1608Metric, { +// mcu_test.iovdd_cap[5].cap +const RC26 = board.add(C_0603_1608Metric, { translate: pt(0.685, 2.230), rotate: 0, - id: 'mcu_test_iovdd_cap_5__cap' + id: 'RC26' }) -const mcu_test_avdd_cap_cap = board.add(C_0603_1608Metric, { +// mcu_test.avdd_cap.cap +const RC27 = board.add(C_0603_1608Metric, { translate: pt(0.058, 2.330), rotate: 0, - id: 'mcu_test_avdd_cap_cap' + id: 'RC27' }) -const mcu_test_vreg_in_cap_cap = board.add(C_0603_1608Metric, { +// mcu_test.vreg_in_cap.cap +const RC28 = board.add(C_0603_1608Metric, { translate: pt(0.214, 2.330), rotate: 0, - id: 'mcu_test_vreg_in_cap_cap' + id: 'RC28' }) -const mcu_test_mem_ic = board.add(SOIC_8_5_23x5_23mm_P1_27mm, { +// mcu_test.mem.ic +const RU9 = board.add(SOIC_8_5_23x5_23mm_P1_27mm, { translate: pt(0.548, 1.853), rotate: 0, - id: 'mcu_test_mem_ic' + id: 'RU9' }) -const mcu_test_mem_vcc_cap_cap = board.add(C_0603_1608Metric, { +// mcu_test.mem.vcc_cap.cap +const RC29 = board.add(C_0603_1608Metric, { translate: pt(0.370, 2.330), rotate: 0, - id: 'mcu_test_mem_vcc_cap_cap' + id: 'RC29' }) -const mcu_test_dvdd_cap_0__cap = board.add(C_0603_1608Metric, { +// mcu_test.dvdd_cap[0].cap +const RC30 = board.add(C_0603_1608Metric, { translate: pt(0.526, 2.330), rotate: 0, - id: 'mcu_test_dvdd_cap_0__cap' + id: 'RC30' }) -const mcu_test_dvdd_cap_1__cap = board.add(C_0603_1608Metric, { +// mcu_test.dvdd_cap[1].cap +const RC31 = board.add(C_0603_1608Metric, { translate: pt(0.682, 2.330), rotate: 0, - id: 'mcu_test_dvdd_cap_1__cap' + id: 'RC31' }) -const mcu_test_vreg_out_cap_cap = board.add(C_0603_1608Metric, { +// mcu_test.vreg_out_cap.cap +const RC32 = board.add(C_0603_1608Metric, { translate: pt(0.058, 2.427), rotate: 0, - id: 'mcu_test_vreg_out_cap_cap' + id: 'RC32' }) -const i2c_pull_scl_res_res = board.add(R_0603_1608Metric, { +// i2c_pull.scl_res.res +const RR4 = board.add(R_0603_1608Metric, { translate: pt(1.559, 3.162), rotate: 0, - id: 'i2c_pull_scl_res_res' + id: 'RR4' }) -const i2c_pull_sda_res_res = board.add(R_0603_1608Metric, { +// i2c_pull.sda_res.res +const RR5 = board.add(R_0603_1608Metric, { translate: pt(1.559, 3.259), rotate: 0, - id: 'i2c_pull_sda_res_res' + id: 'RR5' }) -const i2c_tp_tp_scl_tp = board.add(TestPoint_TE_RCT_0805, { +// i2c_tp.tp_scl.tp +const RTP5 = board.add(TestPoint_TE_RCT_0805, { translate: pt(0.846, 3.170), rotate: 0, - id: 'i2c_tp_tp_scl_tp' + id: 'RTP5' }) -const i2c_tp_tp_sda_tp = board.add(TestPoint_TE_RCT_0805, { +// i2c_tp.tp_sda.tp +const RTP6 = board.add(TestPoint_TE_RCT_0805, { translate: pt(0.846, 3.285), rotate: 0, - id: 'i2c_tp_tp_sda_tp' + id: 'RTP6' }) -const led_package = board.add(LED_0603_1608Metric, { +// led.package +const RD2 = board.add(LED_0603_1608Metric, { translate: pt(1.089, 3.162), rotate: 0, - id: 'led_package' + id: 'RD2' }) -const led_res = board.add(R_0603_1608Metric, { +// led.res +const RR6 = board.add(R_0603_1608Metric, { translate: pt(1.089, 3.259), rotate: 0, - id: 'led_res' + id: 'RR6' }) -const servo_led_package = board.add(LED_0603_1608Metric, { +// servo_led.package +const RD3 = board.add(LED_0603_1608Metric, { translate: pt(1.324, 3.162), rotate: 0, - id: 'servo_led_package' + id: 'RD3' }) -const servo_led_res = board.add(R_0603_1608Metric, { +// servo_led.res +const RR7 = board.add(R_0603_1608Metric, { translate: pt(1.324, 3.259), rotate: 0, - id: 'servo_led_res' + id: 'RR7' }) -const test_led_led_0__package = board.add(LED_0603_1608Metric, { +// test_led.led[0].package +const RD4 = board.add(LED_0603_1608Metric, { translate: pt(3.055, 2.603), rotate: 0, - id: 'test_led_led_0__package' + id: 'RD4' }) -const test_led_led_0__res = board.add(R_0603_1608Metric, { +// test_led.led[0].res +const RR8 = board.add(R_0603_1608Metric, { translate: pt(3.055, 2.797), rotate: 0, - id: 'test_led_led_0__res' + id: 'RR8' }) -const test_led_led_1__package = board.add(LED_0603_1608Metric, { +// test_led.led[1].package +const RD5 = board.add(LED_0603_1608Metric, { translate: pt(3.211, 2.603), rotate: 0, - id: 'test_led_led_1__package' + id: 'RD5' }) -const test_led_led_1__res = board.add(R_0603_1608Metric, { +// test_led.led[1].res +const RR9 = board.add(R_0603_1608Metric, { translate: pt(3.211, 2.797), rotate: 0, - id: 'test_led_led_1__res' + id: 'RR9' }) -const test_led_led_2__package = board.add(LED_0603_1608Metric, { +// test_led.led[2].package +const RD6 = board.add(LED_0603_1608Metric, { translate: pt(3.055, 2.700), rotate: 0, - id: 'test_led_led_2__package' + id: 'RD6' }) -const test_led_led_2__res = board.add(R_0603_1608Metric, { +// test_led.led[2].res +const RR10 = board.add(R_0603_1608Metric, { translate: pt(3.055, 2.894), rotate: 0, - id: 'test_led_led_2__res' + id: 'RR10' }) -const test_led_led_3__package = board.add(LED_0603_1608Metric, { +// test_led.led[3].package +const RD7 = board.add(LED_0603_1608Metric, { translate: pt(3.211, 2.700), rotate: 0, - id: 'test_led_led_3__package' + id: 'RD7' }) -const test_led_led_3__res = board.add(R_0603_1608Metric, { +// test_led.led[3].res +const RR11 = board.add(R_0603_1608Metric, { translate: pt(3.211, 2.894), rotate: 0, - id: 'test_led_led_3__res' + id: 'RR11' }) -const oled_device_conn = board.add(Hirose_FH35C_31S_0_3SHW_1x31_1MP_P0_30mm_Horizontal, { +// oled.device.conn +const RJ19 = board.add(Hirose_FH35C_31S_0_3SHW_1x31_1MP_P0_30mm_Horizontal, { translate: pt(2.631, 0.865), rotate: 0, - id: 'oled_device_conn' + id: 'RJ19' }) -const oled_lcd = board.add(Lcd_Er_Oled0_96_1c_Outline, { +// oled.lcd +const RU10 = board.add(Lcd_Er_Oled0_96_1c_Outline, { translate: pt(3.254, 0.293), rotate: 0, - id: 'oled_lcd' + id: 'RU10' }) -const oled_iref_res = board.add(R_0603_1608Metric, { +// oled.iref_res +const RR12 = board.add(R_0603_1608Metric, { translate: pt(3.571, 0.653), rotate: 0, - id: 'oled_iref_res' + id: 'RR12' }) -const oled_vcomh_cap_cap = board.add(C_0805_2012Metric, { +// oled.vcomh_cap.cap +const RC33 = board.add(C_0805_2012Metric, { translate: pt(3.075, 0.663), rotate: 0, - id: 'oled_vcomh_cap_cap' + id: 'RC33' }) -const oled_vp_cap_cap = board.add(C_0603_1608Metric, { +// oled.vp_cap.cap +const RC34 = board.add(C_0603_1608Metric, { translate: pt(3.727, 0.653), rotate: 0, - id: 'oled_vp_cap_cap' + id: 'RC34' }) -const oled_vdd_cap_cap = board.add(C_0603_1608Metric, { +// oled.vdd_cap.cap +const RC35 = board.add(C_0603_1608Metric, { translate: pt(2.846, 0.783), rotate: 0, - id: 'oled_vdd_cap_cap' + id: 'RC35' }) -const oled_vcc_cap_cap = board.add(C_1206_3216Metric, { +// oled.vcc_cap.cap +const RC36 = board.add(C_1206_3216Metric, { translate: pt(2.878, 0.670), rotate: 0, - id: 'oled_vcc_cap_cap' + id: 'RC36' }) -const oled_vsl_res = board.add(R_0603_1608Metric, { +// oled.vsl_res +const RR13 = board.add(R_0603_1608Metric, { translate: pt(3.002, 0.783), rotate: 0, - id: 'oled_vsl_res' + id: 'RR13' }) -const oled_vsl_d1 = board.add(D_SOD_323, { +// oled.vsl_d1 +const RD8 = board.add(D_SOD_323, { translate: pt(3.244, 0.662), rotate: 0, - id: 'oled_vsl_d1' + id: 'RD8' }) -const oled_vsl_d2 = board.add(D_SOD_323, { +// oled.vsl_d2 +const RD9 = board.add(D_SOD_323, { translate: pt(3.410, 0.662), rotate: 0, - id: 'oled_vsl_d2' + id: 'RD9' }) -const cam_device_conn = board.add(Hirose_FH12_24S_0_5SH_1x24_1MP_P0_50mm_Horizontal, { +// cam.device.conn +const RJ20 = board.add(Hirose_FH12_24S_0_5SH_1x24_1MP_P0_50mm_Horizontal, { translate: pt(1.396, 2.767), rotate: 0, - id: 'cam_device_conn' + id: 'RJ20' }) -const cam_dovdd_cap_cap = board.add(C_0603_1608Metric, { +// cam.dovdd_cap.cap +const RC37 = board.add(C_0603_1608Metric, { translate: pt(1.098, 2.953), rotate: 0, - id: 'cam_dovdd_cap_cap' + id: 'RC37' }) -const cam_reset_cap = board.add(C_0603_1608Metric, { +// cam.reset_cap +const RC38 = board.add(C_0603_1608Metric, { translate: pt(1.254, 2.953), rotate: 0, - id: 'cam_reset_cap' + id: 'RC38' }) -const cam_pclk_cap = board.add(C_0603_1608Metric, { +// cam.pclk_cap +const RC39 = board.add(C_0603_1608Metric, { translate: pt(1.409, 2.953), rotate: 0, - id: 'cam_pclk_cap' + id: 'RC39' }) -const cam_reset_pull_res = board.add(R_0603_1608Metric, { +// cam.reset_pull.res +const RR14 = board.add(R_0603_1608Metric, { translate: pt(1.565, 2.953), rotate: 0, - id: 'cam_reset_pull_res' + id: 'RR14' }) -const rgbs_led_0_ = board.add(LED_SK6812_SIDE_A, { +// rgbs.led[0] +const RD10 = board.add(LED_SK6812_SIDE_A, { translate: pt(2.591, 2.609), rotate: 0, - id: 'rgbs_led_0_' + id: 'RD10' }) -const rgbs_led_1_ = board.add(LED_SK6812_SIDE_A, { +// rgbs.led[1] +const RD11 = board.add(LED_SK6812_SIDE_A, { translate: pt(2.796, 2.609), rotate: 0, - id: 'rgbs_led_1_' + id: 'RD11' }) -const rgbs_led_2_ = board.add(LED_SK6812_SIDE_A, { +// rgbs.led[2] +const RD12 = board.add(LED_SK6812_SIDE_A, { translate: pt(2.591, 2.688), rotate: 0, - id: 'rgbs_led_2_' + id: 'RD12' }) -const rgbs_led_3_ = board.add(LED_SK6812_SIDE_A, { +// rgbs.led[3] +const RD13 = board.add(LED_SK6812_SIDE_A, { translate: pt(2.796, 2.688), rotate: 0, - id: 'rgbs_led_3_' + id: 'RD13' }) -const rgbs_led_4_ = board.add(LED_SK6812_SIDE_A, { +// rgbs.led[4] +const RD14 = board.add(LED_SK6812_SIDE_A, { translate: pt(2.591, 2.767), rotate: 0, - id: 'rgbs_led_4_' + id: 'RD14' }) -const rgbs_led_5_ = board.add(LED_SK6812_SIDE_A, { +// rgbs.led[5] +const RD15 = board.add(LED_SK6812_SIDE_A, { translate: pt(2.796, 2.767), rotate: 0, - id: 'rgbs_led_5_' + id: 'RD15' }) -const rgbs_led_6_ = board.add(LED_SK6812_SIDE_A, { +// rgbs.led[6] +const RD16 = board.add(LED_SK6812_SIDE_A, { translate: pt(2.591, 2.846), rotate: 0, - id: 'rgbs_led_6_' + id: 'RD16' }) -const rgbs_led_7_ = board.add(LED_SK6812_SIDE_A, { +// rgbs.led[7] +const RD17 = board.add(LED_SK6812_SIDE_A, { translate: pt(2.796, 2.846), rotate: 0, - id: 'rgbs_led_7_' + id: 'RD17' }) -const rgbs_led_8_ = board.add(LED_SK6812_SIDE_A, { +// rgbs.led[8] +const RD18 = board.add(LED_SK6812_SIDE_A, { translate: pt(2.591, 2.924), rotate: 0, - id: 'rgbs_led_8_' + id: 'RD18' }) -const rgbs_led_9_ = board.add(LED_SK6812_SIDE_A, { +// rgbs.led[9] +const RD19 = board.add(LED_SK6812_SIDE_A, { translate: pt(2.796, 2.924), rotate: 0, - id: 'rgbs_led_9_' + id: 'RD19' }) +board.setNetlist([ + {name: "Rvbatt", pads: [["RJ1", "2"], ["RTP1", "1"], ["RU2", "2"], ["RU3", "5"], ["RU4", "3"], ["RU5", "3"], ["RJ2", "2"], ["RJ3", "2"], ["RJ4", "2"], ["RJ5", "2"], ["RJ6", "2"], ["RJ7", "2"], ["RJ8", "2"], ["RJ9", "2"], ["RJ10", "2"], ["RJ11", "2"], ["RJ12", "2"], ["RJ13", "2"], ["RJ14", "2"], ["RJ15", "2"], ["RD10", "2"], ["RD11", "2"], ["RD12", "2"], ["RD13", "2"], ["RD14", "2"], ["RD15", "2"], ["RD16", "2"], ["RD17", "2"], ["RD18", "2"], ["RD19", "2"], ["RL1", "1"], ["RU3", "4"], ["RC3", "1"], ["RC6", "1"], ["RC8", "1"], ["RC10", "1"]]}, + {name: "Rgnd", pads: [["RJ1", "1"], ["RTP2", "1"], ["RU2", "1"], ["RU3", "2"], ["RU4", "1"], ["RU5", "1"], ["RU6", "1"], ["RU6", "40"], ["RU6", "41"], ["RU7", "8"], ["RU7", "23"], ["RU7", "35"], ["RU7", "47"], ["RU7", "44"], ["RU8", "19"], ["RU8", "57"], ["RU1", "1"], ["RU1", "2"], ["RU1", "3"], ["RU1", "6"], ["RU1", "7"], ["RR6", "2"], ["RR7", "2"], ["RJ2", "3"], ["RJ3", "3"], ["RJ4", "3"], ["RJ5", "3"], ["RJ6", "3"], ["RJ7", "3"], ["RJ8", "3"], ["RJ9", "3"], ["RJ10", "3"], ["RJ11", "3"], ["RJ12", "3"], ["RJ13", "3"], ["RJ14", "3"], ["RJ15", "3"], ["RD10", "4"], ["RD11", "4"], ["RD12", "4"], ["RD13", "4"], ["RD14", "4"], ["RD15", "4"], ["RD16", "4"], ["RD17", "4"], ["RD18", "4"], ["RD19", "4"], ["RR12", "2"], ["RD9", "1"], ["RC38", "2"], ["RC39", "2"], ["RC3", "2"], ["RC4", "2"], ["RC6", "2"], ["RC7", "2"], ["RC8", "2"], ["RC9", "2"], ["RC10", "2"], ["RC11", "2"], ["RC12", "2"], ["RC13", "2"], ["RJ16", "5"], ["RJ17", "5"], ["RC15", "2"], ["RC16", "2"], ["RC17", "2"], ["RC18", "2"], ["RC19", "2"], ["RC20", "2"], ["RJ18", "5"], ["RC21", "2"], ["RC22", "2"], ["RC23", "2"], ["RC24", "2"], ["RC25", "2"], ["RC26", "2"], ["RC27", "2"], ["RC28", "2"], ["RU9", "4"], ["RC30", "2"], ["RC31", "2"], ["RC32", "2"], ["RC1", "2"], ["RC2", "2"], ["RR8", "2"], ["RR9", "2"], ["RR10", "2"], ["RR11", "2"], ["RC33", "2"], ["RC34", "2"], ["RC35", "2"], ["RC36", "2"], ["RJ20", "10"], ["RJ20", "23"], ["RC37", "2"], ["RR2", "2"], ["RC14", "2"], ["RJ19", "7"], ["RJ19", "1"], ["RJ19", "31"], ["RJ19", "26"], ["RJ19", "16"], ["RJ19", "15"], ["RJ19", "21"], ["RJ19", "22"], ["RJ19", "23"], ["RJ19", "24"], ["RJ19", "25"], ["RJ19", "12"], ["RJ19", "14"], ["RJ19", "10"], ["RJ19", "11"], ["RJ20", "17"], ["RC29", "2"]]}, + {name: "Rv3v3", pads: [["RU2", "3"], ["RTP3", "1"], ["RU6", "2"], ["RU7", "1"], ["RU7", "9"], ["RU7", "24"], ["RU7", "36"], ["RU7", "48"], ["RU8", "1"], ["RU8", "10"], ["RU8", "22"], ["RU8", "33"], ["RU8", "42"], ["RU8", "49"], ["RU8", "44"], ["RU8", "43"], ["RU8", "48"], ["RU1", "5"], ["RU1", "12"], ["RU1", "8"], ["RC4", "1"], ["RC12", "1"], ["RC13", "1"], ["RJ16", "1"], ["RJ17", "1"], ["RC15", "1"], ["RC16", "1"], ["RC17", "1"], ["RC18", "1"], ["RC19", "1"], ["RC20", "1"], ["RJ18", "1"], ["RC21", "1"], ["RC22", "1"], ["RC23", "1"], ["RC24", "1"], ["RC25", "1"], ["RC26", "1"], ["RC27", "1"], ["RC28", "1"], ["RU9", "8"], ["RR4", "1"], ["RR5", "1"], ["RC2", "1"], ["RC1", "1"], ["RC35", "1"], ["RJ20", "14"], ["RC37", "1"], ["RR14", "1"], ["RR3", "1"], ["RJ19", "8"], ["RJ19", "17"], ["RJ19", "13"], ["RC29", "1"]]}, + {name: "Rv14", pads: [["RTP4", "1"], ["RD1", "1"], ["RC5", "1"], ["RC7", "1"], ["RR1", "1"], ["RJ19", "5"], ["RJ19", "27"], ["RC36", "1"]]}, + {name: "Rv2v5", pads: [["RU4", "2"], ["RJ20", "21"], ["RC9", "1"]]}, + {name: "Rv1v2", pads: [["RU5", "2"], ["RJ20", "15"], ["RC11", "1"]]}, + {name: "Rmcu_servo.reset_node", pads: [["RU6", "12"], ["RU7", "7"], ["RJ17", "3"]]}, + {name: "Ri2c_chain_0.scl", pads: [["RU6", "10"], ["RU1", "13"], ["RU7", "21"], ["RU8", "37"], ["RR4", "2"], ["RTP5", "1"], ["RJ19", "18"], ["RJ20", "20"]]}, + {name: "Ri2c_chain_0.sda", pads: [["RU6", "9"], ["RU1", "14"], ["RU7", "22"], ["RU8", "36"], ["RR5", "2"], ["RJ20", "22"], ["RTP6", "1"], ["RJ19", "19"], ["RJ19", "20"]]}, + {name: "Rled.signal", pads: [["RU6", "33"], ["RD2", "2"]]}, + {name: "Rservo_led.signal", pads: [["RU7", "33"], ["RD3", "2"]]}, + {name: "Rmcu_test.gpio.led_0", pads: [["RU8", "4"], ["RD4", "2"]]}, + {name: "Rmcu_test.gpio.led_1", pads: [["RU8", "12"], ["RD5", "2"]]}, + {name: "Rmcu_test.gpio.led_2", pads: [["RU8", "14"], ["RD6", "2"]]}, + {name: "Rmcu_test.gpio.led_3", pads: [["RU8", "16"], ["RD7", "2"]]}, + {name: "Roled.reset", pads: [["RU6", "8"], ["RJ19", "9"]]}, + {name: "Rcam.dvp8.xclk", pads: [["RU6", "17"], ["RJ20", "12"]]}, + {name: "Rcam.dvp8.pclk", pads: [["RU6", "20"], ["RC39", "1"], ["RJ20", "8"]]}, + {name: "Rcam.dvp8.href", pads: [["RU6", "14"], ["RJ20", "16"]]}, + {name: "Rcam.dvp8.vsync", pads: [["RU6", "13"], ["RJ20", "18"]]}, + {name: "Rcam.dvp8.y0", pads: [["RU6", "22"], ["RJ20", "6"]]}, + {name: "Rcam.dvp8.y1", pads: [["RU6", "24"], ["RJ20", "4"]]}, + {name: "Rcam.dvp8.y2", pads: [["RU6", "25"], ["RJ20", "3"]]}, + {name: "Rcam.dvp8.y3", pads: [["RU6", "23"], ["RJ20", "5"]]}, + {name: "Rcam.dvp8.y4", pads: [["RU6", "21"], ["RJ20", "7"]]}, + {name: "Rcam.dvp8.y5", pads: [["RU6", "19"], ["RJ20", "9"]]}, + {name: "Rcam.dvp8.y6", pads: [["RU6", "18"], ["RJ20", "11"]]}, + {name: "Rcam.dvp8.y7", pads: [["RU6", "15"], ["RJ20", "13"]]}, + {name: "Rservos[0].pwm", pads: [["RU6", "34"], ["RJ2", "1"]]}, + {name: "Rservos[0].fb", pads: [["RU6", "38"], ["RJ2", "4"]]}, + {name: "Rservos[1].pwm", pads: [["RU6", "35"], ["RJ3", "1"]]}, + {name: "Rservos[1].fb", pads: [["RU6", "39"], ["RJ3", "4"]]}, + {name: "Rservos[2].pwm", pads: [["RU6", "4"], ["RJ4", "1"]]}, + {name: "Rservos[2].fb", pads: [["RU6", "5"], ["RJ4", "4"]]}, + {name: "Rservos[3].pwm", pads: [["RU6", "6"], ["RJ5", "1"]]}, + {name: "Rservos[3].fb", pads: [["RU6", "7"], ["RJ5", "4"]]}, + {name: "Rservos[4].pwm", pads: [["RU7", "41"], ["RJ6", "1"]]}, + {name: "Rservos[4].fb", pads: [["RU7", "10"], ["RJ6", "4"]]}, + {name: "Rservos[5].pwm", pads: [["RU7", "43"], ["RJ7", "1"]]}, + {name: "Rservos[5].fb", pads: [["RU7", "11"], ["RJ7", "4"]]}, + {name: "Rservos[6].pwm", pads: [["RU7", "45"], ["RJ8", "1"]]}, + {name: "Rservos[6].fb", pads: [["RU7", "12"], ["RJ8", "4"]]}, + {name: "Rservos[7].pwm", pads: [["RU7", "26"], ["RJ9", "1"]]}, + {name: "Rservos[7].fb", pads: [["RU7", "14"], ["RJ9", "4"]]}, + {name: "Rservos[8].pwm", pads: [["RU7", "32"], ["RJ10", "1"]]}, + {name: "Rservos[8].fb", pads: [["RU7", "19"], ["RJ10", "4"]]}, + {name: "Rservos[9].pwm", pads: [["RU7", "31"], ["RJ11", "1"]]}, + {name: "Rservos[9].fb", pads: [["RU7", "18"], ["RJ11", "4"]]}, + {name: "Rservos[10].pwm", pads: [["RU7", "30"], ["RJ12", "1"]]}, + {name: "Rservos[10].fb", pads: [["RU7", "17"], ["RJ12", "4"]]}, + {name: "Rservos[11].pwm", pads: [["RU7", "28"], ["RJ13", "1"]]}, + {name: "Rservos[11].fb", pads: [["RU7", "15"], ["RJ13", "4"]]}, + {name: "Rservos_cam[0].pwm", pads: [["RU7", "46"], ["RJ14", "1"]]}, + {name: "Rservos_cam[0].fb", pads: [["RU7", "13"], ["RJ14", "4"]]}, + {name: "Rservos_cam[1].pwm", pads: [["RU7", "29"], ["RJ15", "1"]]}, + {name: "Rservos_cam[1].fb", pads: [["RU7", "16"], ["RJ15", "4"]]}, + {name: "Rrgbs.din", pads: [["RU6", "32"], ["RD10", "1"]]}, + {name: "Rimu.int1", pads: [["RU1", "4"]]}, + {name: "Rimu.int2", pads: [["RU1", "9"]]}, + {name: "Rreg_14v.fb.output", pads: [["RU3", "3"], ["RC5", "2"], ["RR1", "2"], ["RR2", "1"]]}, + {name: "Rreg_14v.inductor.b", pads: [["RL1", "2"], ["RU3", "1"], ["RD1", "2"]]}, + {name: "Rmcu.program_uart_node.a_tx", pads: [["RU6", "37"], ["RJ16", "3"]]}, + {name: "Rmcu.program_uart_node.b_tx", pads: [["RU6", "36"], ["RJ16", "4"]]}, + {name: "Rmcu.program_en_node", pads: [["RU6", "3"], ["RJ16", "6"], ["RR3", "2"], ["RC14", "1"]]}, + {name: "Rmcu.program_boot_node", pads: [["RU6", "27"], ["RJ16", "2"]]}, + {name: "Rmcu_servo.swd_node.swdio", pads: [["RU7", "34"], ["RJ17", "2"]]}, + {name: "Rmcu_servo.swd_node.swclk", pads: [["RU7", "37"], ["RJ17", "4"]]}, + {name: "Rmcu_servo.swd.swo", pads: [["RU7", "42"], ["RJ17", "6"]]}, + {name: "Rmcu_servo.ic.osc.xtal_in", pads: [["RU7", "5"]]}, + {name: "Rmcu_servo.ic.osc.xtal_out", pads: [["RU7", "6"]]}, + {name: "Rmcu_test.swd_node.swdio", pads: [["RU8", "25"], ["RJ18", "2"]]}, + {name: "Rmcu_test.swd_node.swclk", pads: [["RU8", "24"], ["RJ18", "4"]]}, + {name: "Rmcu_test.reset_node", pads: [["RU8", "26"], ["RJ18", "3"]]}, + {name: "Rmcu_test.ic.qspi.sck", pads: [["RU8", "52"], ["RU9", "6"]]}, + {name: "Rmcu_test.ic.qspi.mosi", pads: [["RU8", "53"], ["RU9", "5"]]}, + {name: "Rmcu_test.ic.qspi.miso", pads: [["RU8", "55"], ["RU9", "2"]]}, + {name: "Rmcu_test.ic.qspi_cs", pads: [["RU8", "56"], ["RU9", "1"]]}, + {name: "Rmcu_test.ic.qspi_sd2", pads: [["RU8", "54"], ["RU9", "3"]]}, + {name: "Rmcu_test.ic.qspi_sd3", pads: [["RU8", "51"], ["RU9", "7"]]}, + {name: "Rmcu_test.ic.vreg_vout", pads: [["RU8", "45"], ["RU8", "23"], ["RU8", "50"], ["RC30", "1"], ["RC31", "1"], ["RC32", "1"]]}, + {name: "Rmcu_test.swd.swo", pads: [["RU8", "27"], ["RJ18", "6"]]}, + {name: "Rmcu_test.ic.xosc.xtal_in", pads: [["RU8", "20"]]}, + {name: "Rmcu_test.ic.xosc.xtal_out", pads: [["RU8", "21"]]}, + {name: "Rled.res.a", pads: [["RR6", "1"], ["RD2", "1"]]}, + {name: "Rservo_led.res.a", pads: [["RR7", "1"], ["RD3", "1"]]}, + {name: "Rtest_led.led[0].res.a", pads: [["RR8", "1"], ["RD4", "1"]]}, + {name: "Rtest_led.led[1].res.a", pads: [["RR9", "1"], ["RD5", "1"]]}, + {name: "Rtest_led.led[2].res.a", pads: [["RR10", "1"], ["RD6", "1"]]}, + {name: "Rtest_led.led[3].res.a", pads: [["RR11", "1"], ["RD7", "1"]]}, + {name: "Roled.iref_res.a", pads: [["RR12", "1"], ["RJ19", "6"]]}, + {name: "Roled.device.vcomh", pads: [["RC33", "1"], ["RJ19", "3"], ["RJ19", "29"]]}, + {name: "Roled.device.vp", pads: [["RC34", "1"], ["RJ19", "4"], ["RJ19", "28"]]}, + {name: "Roled.device.vsl", pads: [["RR13", "1"], ["RJ19", "2"], ["RJ19", "30"]]}, + {name: "Roled.vsl_res.b", pads: [["RR13", "2"], ["RD8", "2"]]}, + {name: "Roled.vsl_d1.cathode", pads: [["RD8", "1"], ["RD9", "2"]]}, + {name: "Rcam.reset_cap.pos", pads: [["RC38", "1"], ["RR14", "2"], ["RJ20", "19"]]}, + {name: "Rcam.device.y.0", pads: [["RJ20", "1"]]}, + {name: "Rcam.device.y.1", pads: [["RJ20", "2"]]}, + {name: "Rrgbs.led[0].dout", pads: [["RD10", "3"], ["RD11", "1"]]}, + {name: "Rrgbs.led[1].dout", pads: [["RD11", "3"], ["RD12", "1"]]}, + {name: "Rrgbs.led[2].dout", pads: [["RD12", "3"], ["RD13", "1"]]}, + {name: "Rrgbs.led[3].dout", pads: [["RD13", "3"], ["RD14", "1"]]}, + {name: "Rrgbs.led[4].dout", pads: [["RD14", "3"], ["RD15", "1"]]}, + {name: "Rrgbs.led[5].dout", pads: [["RD15", "3"], ["RD16", "1"]]}, + {name: "Rrgbs.led[6].dout", pads: [["RD16", "3"], ["RD17", "1"]]}, + {name: "Rrgbs.led[7].dout", pads: [["RD17", "3"], ["RD18", "1"]]}, + {name: "Rrgbs.led[8].dout", pads: [["RD18", "3"], ["RD19", "1"]]}, + {name: "Rrgbs.dout", pads: [["RD19", "3"]]} +]) + const limit0 = pt(-0.07874015748031496, -0.07874015748031496); const limit1 = pt(4.559055118110236, 3.474015748031496); const xMin = Math.min(limit0[0], limit1[0]); diff --git a/examples/RobotDriver/RobotDriver.svgpcb.js b/examples/RobotDriver/RobotDriver.svgpcb.js index a6a56491b..a6087f986 100644 --- a/examples/RobotDriver/RobotDriver.svgpcb.js +++ b/examples/RobotDriver/RobotDriver.svgpcb.js @@ -1,338 +1,502 @@ const board = new PCB(); -const jlc_th_th1 = board.add(JlcToolingHole_1_152mm, { +// jlc_th.th1 +const H1 = board.add(JlcToolingHole_1_152mm, { translate: pt(2.673, 3.040), rotate: 0, - id: 'jlc_th_th1' + id: 'H1' }) -const jlc_th_th2 = board.add(JlcToolingHole_1_152mm, { +// jlc_th.th2 +const H2 = board.add(JlcToolingHole_1_152mm, { translate: pt(2.713, 3.040), rotate: 0, - id: 'jlc_th_th2' + id: 'H2' }) -const jlc_th_th3 = board.add(JlcToolingHole_1_152mm, { +// jlc_th.th3 +const H3 = board.add(JlcToolingHole_1_152mm, { translate: pt(2.673, 3.079), rotate: 0, - id: 'jlc_th_th3' + id: 'H3' }) -const batt_conn = board.add(JST_PH_B2B_PH_K_1x02_P2_00mm_Vertical, { - translate: pt(2.394, 2.719), rotate: 0, - id: 'batt_conn' +// batt.conn +const J1 = board.add(JST_PH_B2B_PH_K_1x02_P2_00mm_Vertical, { + translate: pt(1.615, 2.719), rotate: 0, + id: 'J1' }) -const isense_sense_res_res = board.add(R_2512_6332Metric, { +// isense.sense.res.res +const R1 = board.add(R_2512_6332Metric, { translate: pt(2.693, 1.818), rotate: 0, - id: 'isense_sense_res_res' + id: 'R1' }) -const isense_amp_amp_ic = board.add(SOT_23_5, { +// isense.amp.amp.ic +const U1 = board.add(SOT_23_5, { translate: pt(2.963, 1.809), rotate: 0, - id: 'isense_amp_amp_ic' + id: 'U1' }) -const isense_amp_amp_vdd_cap_cap = board.add(C_0603_1608Metric, { +// isense.amp.amp.vdd_cap.cap +const C1 = board.add(C_0603_1608Metric, { translate: pt(2.600, 1.961), rotate: 0, - id: 'isense_amp_amp_vdd_cap_cap' + id: 'C1' }) -const isense_amp_r1 = board.add(R_0603_1608Metric, { +// isense.amp.r1 +const R2 = board.add(R_0603_1608Metric, { translate: pt(2.756, 1.961), rotate: 0, - id: 'isense_amp_r1' + id: 'R2' }) -const isense_amp_r2 = board.add(R_0603_1608Metric, { +// isense.amp.r2 +const R3 = board.add(R_0603_1608Metric, { translate: pt(2.912, 1.961), rotate: 0, - id: 'isense_amp_r2' + id: 'R3' }) -const isense_amp_rf = board.add(R_0603_1608Metric, { +// isense.amp.rf +const R4 = board.add(R_0603_1608Metric, { translate: pt(2.600, 2.058), rotate: 0, - id: 'isense_amp_rf' + id: 'R4' }) -const isense_amp_rg = board.add(R_0603_1608Metric, { +// isense.amp.rg +const R5 = board.add(R_0603_1608Metric, { translate: pt(2.756, 2.058), rotate: 0, - id: 'isense_amp_rg' + id: 'R5' }) -const tp_vbatt_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(1.827, 3.077), rotate: 0, - id: 'tp_vbatt_tp' -}) -const tp_gnd_tp = board.add(TestPoint_TE_RCT_0805, { +// tp_vbatt.tp +const TP1 = board.add(TestPoint_TE_RCT_0805, { translate: pt(1.332, 3.077), rotate: 0, - id: 'tp_gnd_tp' + id: 'TP1' +}) +// tp_gnd.tp +const TP2 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(1.582, 3.077), rotate: 0, + id: 'TP2' }) -const reg_3v3_ic = board.add(SOT_23_5, { +// reg_3v3.ic +const U2 = board.add(SOT_23_5, { translate: pt(2.170, 1.809), rotate: 0, - id: 'reg_3v3_ic' + id: 'U2' }) -const reg_3v3_fb_div_top_res = board.add(R_0603_1608Metric, { +// reg_3v3.fb.div.top_res +const R6 = board.add(R_0603_1608Metric, { translate: pt(2.321, 1.944), rotate: 0, - id: 'reg_3v3_fb_div_top_res' + id: 'R6' }) -const reg_3v3_fb_div_bottom_res = board.add(R_0603_1608Metric, { +// reg_3v3.fb.div.bottom_res +const R7 = board.add(R_0603_1608Metric, { translate: pt(2.148, 2.061), rotate: 0, - id: 'reg_3v3_fb_div_bottom_res' + id: 'R7' }) -const reg_3v3_power_path_inductor = board.add(L_0603_1608Metric, { +// reg_3v3.power_path.inductor +const L1 = board.add(L_0603_1608Metric, { translate: pt(2.304, 2.061), rotate: 0, - id: 'reg_3v3_power_path_inductor' + id: 'L1' }) -const reg_3v3_power_path_in_cap_cap = board.add(C_0805_2012Metric, { +// reg_3v3.power_path.in_cap.cap +const C2 = board.add(C_0805_2012Metric, { translate: pt(2.357, 1.781), rotate: 0, - id: 'reg_3v3_power_path_in_cap_cap' + id: 'C2' }) -const reg_3v3_power_path_out_cap_cap = board.add(C_0805_2012Metric, { +// reg_3v3.power_path.out_cap.cap +const C3 = board.add(C_0805_2012Metric, { translate: pt(2.156, 1.954), rotate: 0, - id: 'reg_3v3_power_path_out_cap_cap' + id: 'C3' }) -const tp_3v3_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(2.328, 3.077), rotate: 0, - id: 'tp_3v3_tp' +// tp_3v3.tp +const TP3 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(1.833, 3.077), rotate: 0, + id: 'TP3' }) -const prot_3v3_diode = board.add(D_SOD_323, { - translate: pt(1.580, 3.077), rotate: 0, - id: 'prot_3v3_diode' +// prot_3v3.diode +const D1 = board.add(D_SOD_323, { + translate: pt(2.080, 3.077), rotate: 0, + id: 'D1' }) -const mcu_ic = board.add(ESP32_WROOM_32, { +// mcu.ic +const U3 = board.add(ESP32_WROOM_32, { translate: pt(0.945, 0.414), rotate: 0, - id: 'mcu_ic' + id: 'U3' }) -const mcu_vcc_cap0_cap = board.add(C_1206_3216Metric, { +// mcu.vcc_cap0.cap +const C4 = board.add(C_1206_3216Metric, { translate: pt(2.020, 0.789), rotate: 0, - id: 'mcu_vcc_cap0_cap' + id: 'C4' }) -const mcu_vcc_cap1_cap = board.add(C_0603_1608Metric, { +// mcu.vcc_cap1.cap +const C5 = board.add(C_0603_1608Metric, { translate: pt(2.208, 0.773), rotate: 0, - id: 'mcu_vcc_cap1_cap' + id: 'C5' }) -const mcu_prog_conn = board.add(PinHeader_1x04_P2_54mm_Vertical, { +// mcu.prog.conn +const J2 = board.add(PinHeader_1x04_P2_54mm_Vertical, { translate: pt(2.000, 0.370), rotate: 0, - id: 'mcu_prog_conn' + id: 'J2' }) -const mcu_boot_package = board.add(SW_SPST_SKQG_WithoutStem, { +// mcu.boot.package +const SW1 = board.add(SW_SPST_SKQG_WithoutStem, { translate: pt(2.096, 0.593), rotate: 0, - id: 'mcu_boot_package' + id: 'SW1' }) -const mcu_en_pull_rc_r = board.add(R_0603_1608Metric, { +// mcu.en_pull.rc.r +const R8 = board.add(R_0603_1608Metric, { translate: pt(2.364, 0.773), rotate: 0, - id: 'mcu_en_pull_rc_r' + id: 'R8' }) -const mcu_en_pull_rc_c = board.add(C_0603_1608Metric, { +// mcu.en_pull.rc.c +const C6 = board.add(C_0603_1608Metric, { translate: pt(1.987, 0.903), rotate: 0, - id: 'mcu_en_pull_rc_c' + id: 'C6' }) -const tof_elt_0_ = board.add(PinSocket_1x06_P2_54mm_Vertical, { +// tof.elt[0] +const J3 = board.add(PinSocket_1x06_P2_54mm_Vertical, { translate: pt(0.803, 2.311), rotate: 0, - id: 'tof_elt_0_' + id: 'J3' }) -const tof_elt_1_ = board.add(PinSocket_1x06_P2_54mm_Vertical, { +// tof.elt[1] +const J4 = board.add(PinSocket_1x06_P2_54mm_Vertical, { translate: pt(0.982, 2.311), rotate: 0, - id: 'tof_elt_1_' + id: 'J4' }) -const tof_elt_2_ = board.add(PinSocket_1x06_P2_54mm_Vertical, { +// tof.elt[2] +const J5 = board.add(PinSocket_1x06_P2_54mm_Vertical, { translate: pt(1.161, 2.311), rotate: 0, - id: 'tof_elt_2_' + id: 'J5' }) -const i2c_pull_scl_res_res = board.add(R_0603_1608Metric, { +// i2c_pull.scl_res.res +const R9 = board.add(R_0603_1608Metric, { translate: pt(1.089, 3.069), rotate: 0, - id: 'i2c_pull_scl_res_res' + id: 'R9' }) -const i2c_pull_sda_res_res = board.add(R_0603_1608Metric, { +// i2c_pull.sda_res.res +const R10 = board.add(R_0603_1608Metric, { translate: pt(1.089, 3.165), rotate: 0, - id: 'i2c_pull_sda_res_res' + id: 'R10' }) -const i2c_tp_tp_scl_tp = board.add(TestPoint_TE_RCT_0805, { +// i2c_tp.tp_scl.tp +const TP4 = board.add(TestPoint_TE_RCT_0805, { translate: pt(0.456, 3.077), rotate: 0, - id: 'i2c_tp_tp_scl_tp' + id: 'TP4' }) -const i2c_tp_tp_sda_tp = board.add(TestPoint_TE_RCT_0805, { +// i2c_tp.tp_sda.tp +const TP5 = board.add(TestPoint_TE_RCT_0805, { translate: pt(0.456, 3.191), rotate: 0, - id: 'i2c_tp_tp_sda_tp' + id: 'TP5' }) -const lcd_device_conn = board.add(Hirose_FH12_15S_0_5SH_1x15_1MP_P0_50mm_Horizontal, { +// lcd.device.conn +const J6 = board.add(Hirose_FH12_15S_0_5SH_1x15_1MP_P0_50mm_Horizontal, { translate: pt(2.808, 0.685), rotate: 0, - id: 'lcd_device_conn' + id: 'J6' }) -const lcd_lcd = board.add(Lcd_Er_Oled0_91_3_Outline, { +// lcd.lcd +const U4 = board.add(Lcd_Er_Oled0_91_3_Outline, { translate: pt(3.064, 0.260), rotate: 0, - id: 'lcd_lcd' + id: 'U4' }) -const lcd_c1_cap = board.add(C_0603_1608Metric, { +// lcd.c1_cap +const C7 = board.add(C_0603_1608Metric, { translate: pt(3.693, 0.521), rotate: 0, - id: 'lcd_c1_cap' + id: 'C7' }) -const lcd_c2_cap = board.add(C_0603_1608Metric, { +// lcd.c2_cap +const C8 = board.add(C_0603_1608Metric, { translate: pt(3.173, 0.637), rotate: 0, - id: 'lcd_c2_cap' + id: 'C8' }) -const lcd_iref_res = board.add(R_0603_1608Metric, { +// lcd.iref_res +const R11 = board.add(R_0603_1608Metric, { translate: pt(3.329, 0.637), rotate: 0, - id: 'lcd_iref_res' + id: 'R11' }) -const lcd_vcomh_cap_cap = board.add(C_0805_2012Metric, { +// lcd.vcomh_cap.cap +const C9 = board.add(C_0805_2012Metric, { translate: pt(3.182, 0.531), rotate: 0, - id: 'lcd_vcomh_cap_cap' + id: 'C9' }) -const lcd_vdd_cap1_cap = board.add(C_0603_1608Metric, { +// lcd.vdd_cap1.cap +const C10 = board.add(C_0603_1608Metric, { translate: pt(3.485, 0.637), rotate: 0, - id: 'lcd_vdd_cap1_cap' + id: 'C10' }) -const lcd_vdd_cap2_cap = board.add(C_0805_2012Metric, { +// lcd.vdd_cap2.cap +const C11 = board.add(C_0805_2012Metric, { translate: pt(3.355, 0.531), rotate: 0, - id: 'lcd_vdd_cap2_cap' + id: 'C11' }) -const lcd_vcc_cap1_cap = board.add(C_0603_1608Metric, { +// lcd.vcc_cap1.cap +const C12 = board.add(C_0603_1608Metric, { translate: pt(3.641, 0.637), rotate: 0, - id: 'lcd_vcc_cap1_cap' + id: 'C12' }) -const lcd_vcc_cap2_cap = board.add(C_0805_2012Metric, { +// lcd.vcc_cap2.cap +const C13 = board.add(C_0805_2012Metric, { translate: pt(3.528, 0.531), rotate: 0, - id: 'lcd_vcc_cap2_cap' + id: 'C13' }) -const imu_ic = board.add(Bosch_LGA_14_3x2_5mm_P0_5mm, { +// imu.ic +const U5 = board.add(Bosch_LGA_14_3x2_5mm_P0_5mm, { translate: pt(1.200, 2.652), rotate: 0, - id: 'imu_ic' + id: 'U5' }) -const imu_vdd_cap_cap = board.add(C_0603_1608Metric, { +// imu.vdd_cap.cap +const C14 = board.add(C_0603_1608Metric, { translate: pt(1.186, 2.783), rotate: 0, - id: 'imu_vdd_cap_cap' + id: 'C14' }) -const imu_vddio_cap_cap = board.add(C_0603_1608Metric, { +// imu.vddio_cap.cap +const C15 = board.add(C_0603_1608Metric, { translate: pt(1.342, 2.783), rotate: 0, - id: 'imu_vddio_cap_cap' + id: 'C15' }) -const expander_ic = board.add(SOIC_16W_7_5x10_3mm_P1_27mm, { +// expander.ic +const U6 = board.add(SOIC_16W_7_5x10_3mm_P1_27mm, { translate: pt(1.582, 1.955), rotate: 0, - id: 'expander_ic' + id: 'U6' }) -const expander_vdd_cap_cap = board.add(C_0603_1608Metric, { +// expander.vdd_cap.cap +const C16 = board.add(C_0603_1608Metric, { translate: pt(1.913, 1.771), rotate: 0, - id: 'expander_vdd_cap_cap' + id: 'C16' }) -const leds_led_0__package = board.add(LED_0603_1608Metric, { +// leds.led[0].package +const D2 = board.add(LED_0603_1608Metric, { translate: pt(0.699, 3.069), rotate: 0, - id: 'leds_led_0__package' + id: 'D2' }) -const leds_led_1__package = board.add(LED_0603_1608Metric, { +// leds.led[1].package +const D3 = board.add(LED_0603_1608Metric, { translate: pt(0.855, 3.069), rotate: 0, - id: 'leds_led_1__package' + id: 'D3' }) -const leds_led_2__package = board.add(LED_0603_1608Metric, { +// leds.led[2].package +const D4 = board.add(LED_0603_1608Metric, { translate: pt(0.699, 3.166), rotate: 0, - id: 'leds_led_2__package' + id: 'D4' }) -const leds_led_3__package = board.add(LED_0603_1608Metric, { +// leds.led[3].package +const D5 = board.add(LED_0603_1608Metric, { translate: pt(0.855, 3.166), rotate: 0, - id: 'leds_led_3__package' + id: 'D5' }) -const spk_tp_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(2.077, 3.077), rotate: 0, - id: 'spk_tp_tp' +// spk_tp.tp +const TP6 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(2.328, 3.077), rotate: 0, + id: 'TP6' }) -const spk_drv_ic = board.add(MSOP_8_1EP_3x3mm_P0_65mm_EP1_68x1_88mm_ThermalVias, { +// spk_drv.ic +const U7 = board.add(MSOP_8_1EP_3x3mm_P0_65mm_EP1_68x1_88mm_ThermalVias, { translate: pt(0.704, 2.657), rotate: 0, - id: 'spk_drv_ic' + id: 'U7' }) -const spk_drv_pwr_cap_cap = board.add(C_0603_1608Metric, { +// spk_drv.pwr_cap.cap +const C17 = board.add(C_0603_1608Metric, { translate: pt(0.639, 2.794), rotate: 0, - id: 'spk_drv_pwr_cap_cap' + id: 'C17' }) -const spk_drv_bulk_cap_cap = board.add(C_0805_2012Metric, { +// spk_drv.bulk_cap.cap +const C18 = board.add(C_0805_2012Metric, { translate: pt(0.933, 2.627), rotate: 0, - id: 'spk_drv_bulk_cap_cap' + id: 'C18' }) -const spk_drv_inp_res = board.add(R_0603_1608Metric, { +// spk_drv.inp_res +const R12 = board.add(R_0603_1608Metric, { translate: pt(0.795, 2.794), rotate: 0, - id: 'spk_drv_inp_res' + id: 'R12' }) -const spk_drv_inp_cap = board.add(C_0603_1608Metric, { +// spk_drv.inp_cap +const C19 = board.add(C_0603_1608Metric, { translate: pt(0.951, 2.794), rotate: 0, - id: 'spk_drv_inp_cap' + id: 'C19' }) -const spk_drv_inn_res = board.add(R_0603_1608Metric, { +// spk_drv.inn_res +const R13 = board.add(R_0603_1608Metric, { translate: pt(0.639, 2.891), rotate: 0, - id: 'spk_drv_inn_res' + id: 'R13' }) -const spk_drv_inn_cap = board.add(C_0603_1608Metric, { +// spk_drv.inn_cap +const C20 = board.add(C_0603_1608Metric, { translate: pt(0.795, 2.891), rotate: 0, - id: 'spk_drv_inn_cap' + id: 'C20' }) -const spk_conn = board.add(JST_PH_B2B_PH_K_1x02_P2_00mm_Vertical, { - translate: pt(0.096, 3.170), rotate: 0, - id: 'spk_conn' +// spk.conn +const J7 = board.add(JST_PH_B2B_PH_K_1x02_P2_00mm_Vertical, { + translate: pt(2.004, 2.719), rotate: 0, + id: 'J7' }) -const ws2812bArray_led_0_ = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { +// ws2812bArray.led[0] +const D6 = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { translate: pt(0.144, 1.850), rotate: 0, - id: 'ws2812bArray_led_0_' + id: 'D6' }) -const ws2812bArray_led_1_ = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { +// ws2812bArray.led[1] +const D7 = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { translate: pt(0.470, 1.850), rotate: 0, - id: 'ws2812bArray_led_1_' + id: 'D7' }) -const ws2812bArray_led_2_ = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { +// ws2812bArray.led[2] +const D8 = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { translate: pt(0.144, 2.106), rotate: 0, - id: 'ws2812bArray_led_2_' + id: 'D8' }) -const ws2812bArray_led_3_ = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { +// ws2812bArray.led[3] +const D9 = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { translate: pt(0.470, 2.106), rotate: 0, - id: 'ws2812bArray_led_3_' + id: 'D9' }) -const ws2812bArray_led_4_ = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { +// ws2812bArray.led[4] +const D10 = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { translate: pt(0.144, 2.362), rotate: 0, - id: 'ws2812bArray_led_4_' + id: 'D10' }) -const led_pixel_conn = board.add(JST_PH_B3B_PH_K_1x03_P2_00mm_Vertical, { - translate: pt(3.174, 2.719), rotate: 0, - id: 'led_pixel_conn' +// led_pixel.conn +const J8 = board.add(JST_PH_B3B_PH_K_1x03_P2_00mm_Vertical, { + translate: pt(2.394, 2.719), rotate: 0, + id: 'J8' }) -const motor_driver1_ic = board.add(TSSOP_16_1EP_4_4x5mm_P0_65mm_EP3x3mm_ThermalVias, { - translate: pt(0.154, 2.697), rotate: 0, - id: 'motor_driver1_ic' +// motor_driver1.ic +const U8 = board.add(TSSOP_16_1EP_4_4x5mm_P0_65mm_EP3x3mm_ThermalVias, { + translate: pt(3.575, 1.850), rotate: 0, + id: 'U8' }) -const motor_driver1_vm_cap_cap = board.add(C_0805_2012Metric, { - translate: pt(0.067, 2.883), rotate: 0, - id: 'motor_driver1_vm_cap_cap' +// motor_driver1.vm_cap.cap +const C21 = board.add(C_0805_2012Metric, { + translate: pt(3.489, 2.037), rotate: 0, + id: 'C21' }) -const motor_driver1_vint_cap_cap = board.add(C_0805_2012Metric, { - translate: pt(0.240, 2.883), rotate: 0, - id: 'motor_driver1_vint_cap_cap' +// motor_driver1.vint_cap.cap +const C22 = board.add(C_0805_2012Metric, { + translate: pt(3.662, 2.037), rotate: 0, + id: 'C22' }) -const motor_driver1_vcp_cap = board.add(C_0603_1608Metric, { - translate: pt(0.405, 2.873), rotate: 0, - id: 'motor_driver1_vcp_cap' +// motor_driver1.vcp_cap +const C23 = board.add(C_0603_1608Metric, { + translate: pt(3.826, 2.027), rotate: 0, + id: 'C23' }) -const m1_a_conn = board.add(JST_PH_B2B_PH_K_1x02_P2_00mm_Vertical, { - translate: pt(3.642, 2.719), rotate: 0, - id: 'm1_a_conn' +// m1_a.conn +const J9 = board.add(JST_PH_B2B_PH_K_1x02_P2_00mm_Vertical, { + translate: pt(2.863, 2.719), rotate: 0, + id: 'J9' }) -const m1_b_conn = board.add(JST_PH_B2B_PH_K_1x02_P2_00mm_Vertical, { - translate: pt(2.784, 2.719), rotate: 0, - id: 'm1_b_conn' +// m1_b.conn +const J10 = board.add(JST_PH_B2B_PH_K_1x02_P2_00mm_Vertical, { + translate: pt(3.252, 2.719), rotate: 0, + id: 'J10' }) -const motor_driver2_ic = board.add(TSSOP_16_1EP_4_4x5mm_P0_65mm_EP3x3mm_ThermalVias, { - translate: pt(3.575, 1.850), rotate: 0, - id: 'motor_driver2_ic' +// motor_driver2.ic +const U9 = board.add(TSSOP_16_1EP_4_4x5mm_P0_65mm_EP3x3mm_ThermalVias, { + translate: pt(0.154, 2.697), rotate: 0, + id: 'U9' }) -const motor_driver2_vm_cap_cap = board.add(C_0805_2012Metric, { - translate: pt(3.489, 2.037), rotate: 0, - id: 'motor_driver2_vm_cap_cap' +// motor_driver2.vm_cap.cap +const C24 = board.add(C_0805_2012Metric, { + translate: pt(0.067, 2.883), rotate: 0, + id: 'C24' }) -const motor_driver2_vint_cap_cap = board.add(C_0805_2012Metric, { - translate: pt(3.662, 2.037), rotate: 0, - id: 'motor_driver2_vint_cap_cap' +// motor_driver2.vint_cap.cap +const C25 = board.add(C_0805_2012Metric, { + translate: pt(0.240, 2.883), rotate: 0, + id: 'C25' }) -const motor_driver2_vcp_cap = board.add(C_0603_1608Metric, { - translate: pt(3.826, 2.027), rotate: 0, - id: 'motor_driver2_vcp_cap' +// motor_driver2.vcp_cap +const C26 = board.add(C_0603_1608Metric, { + translate: pt(0.405, 2.873), rotate: 0, + id: 'C26' }) -const m2_a_conn = board.add(JST_PH_B2B_PH_K_1x02_P2_00mm_Vertical, { - translate: pt(2.004, 2.719), rotate: 0, - id: 'm2_a_conn' +// m2_a.conn +const J11 = board.add(JST_PH_B2B_PH_K_1x02_P2_00mm_Vertical, { + translate: pt(3.642, 2.719), rotate: 0, + id: 'J11' }) -const m2_b_conn = board.add(JST_PH_B2B_PH_K_1x02_P2_00mm_Vertical, { - translate: pt(1.615, 2.719), rotate: 0, - id: 'm2_b_conn' +// m2_b.conn +const J12 = board.add(JST_PH_B2B_PH_K_1x02_P2_00mm_Vertical, { + translate: pt(0.096, 3.170), rotate: 0, + id: 'J12' }) -const servo_conn = board.add(PinHeader_1x03_P2_54mm_Vertical, { +// servo.conn +const J13 = board.add(PinHeader_1x03_P2_54mm_Vertical, { translate: pt(3.233, 2.012), rotate: 0, - id: 'servo_conn' + id: 'J13' }) -const led_res = board.add(R_Array_Concave_4x0603, { +// led_res +const RN1 = board.add(R_Array_Concave_4x0603, { translate: pt(2.573, 3.113), rotate: 0, - id: 'led_res' + id: 'RN1' }) +board.setNetlist([ + {name: "vbatt", pads: [["TP1", "1"], ["U2", "4"], ["U7", "1"], ["U7", "6"], ["D6", "1"], ["D7", "1"], ["D8", "1"], ["D9", "1"], ["D10", "1"], ["J8", "1"], ["U8", "12"], ["U9", "12"], ["U8", "1"], ["U9", "1"], ["J13", "2"], ["R1", "2"], ["U2", "1"], ["C23", "2"], ["C26", "2"], ["C17", "1"], ["C18", "1"], ["C21", "1"], ["C24", "1"], ["C2", "1"], ["R2", "1"]]}, + {name: "gnd", pads: [["J1", "1"], ["TP2", "1"], ["U2", "2"], ["D1", "2"], ["U3", "1"], ["U3", "15"], ["U3", "38"], ["U3", "39"], ["J3", "2"], ["J4", "2"], ["J5", "2"], ["U5", "1"], ["U5", "2"], ["U5", "3"], ["U5", "6"], ["U5", "7"], ["U6", "1"], ["U6", "2"], ["U6", "3"], ["U6", "8"], ["U7", "7"], ["U7", "9"], ["D6", "3"], ["D7", "3"], ["D8", "3"], ["D9", "3"], ["D10", "3"], ["J8", "3"], ["U8", "3"], ["U8", "6"], ["U8", "13"], ["U8", "17"], ["U9", "3"], ["U9", "6"], ["U9", "13"], ["U9", "17"], ["J13", "3"], ["U1", "2"], ["R11", "2"], ["C20", "2"], ["C4", "2"], ["C5", "2"], ["J2", "4"], ["SW1", "2"], ["J6", "6"], ["C9", "2"], ["C10", "2"], ["C11", "2"], ["C12", "2"], ["C13", "2"], ["C14", "2"], ["C15", "2"], ["R5", "1"], ["C16", "2"], ["C17", "2"], ["C18", "2"], ["C21", "2"], ["C22", "2"], ["C24", "2"], ["C25", "2"], ["R7", "2"], ["C6", "2"], ["C1", "2"], ["C2", "2"], ["C3", "2"]]}, + {name: "v3v3", pads: [["TP3", "1"], ["D1", "1"], ["U3", "2"], ["J3", "1"], ["J4", "1"], ["J5", "1"], ["U5", "5"], ["U5", "12"], ["U5", "8"], ["U6", "16"], ["U1", "5"], ["R6", "1"], ["C4", "1"], ["C5", "1"], ["J2", "1"], ["R9", "1"], ["R10", "1"], ["J6", "7"], ["J6", "5"], ["C10", "1"], ["C11", "1"], ["C15", "1"], ["C14", "1"], ["C16", "1"], ["D2", "2"], ["D3", "2"], ["D4", "2"], ["D5", "2"], ["R8", "1"], ["C1", "1"], ["L1", "2"], ["C3", "1"]]}, + {name: "isense.pwr_in", pads: [["J1", "2"], ["R1", "1"], ["R3", "1"]]}, + {name: "i2c_chain_0.scl", pads: [["U3", "16"], ["U5", "13"], ["U6", "14"], ["R9", "2"], ["TP4", "1"], ["J3", "3"], ["J4", "3"], ["J5", "3"]]}, + {name: "i2c_chain_0.sda", pads: [["U3", "14"], ["U5", "14"], ["U6", "15"], ["R10", "2"], ["J3", "4"], ["J4", "4"], ["J5", "4"], ["TP5", "1"]]}, + {name: "lcd.spi.sck", pads: [["U3", "9"], ["J6", "11"]]}, + {name: "lcd.spi.mosi", pads: [["U3", "8"], ["J6", "12"]]}, + {name: "lcd.cs", pads: [["U3", "13"], ["J6", "8"]]}, + {name: "lcd.reset", pads: [["U3", "12"], ["J6", "9"]]}, + {name: "lcd.dc", pads: [["U3", "10"], ["J6", "10"]]}, + {name: "isense.out", pads: [["U3", "4"], ["R4", "1"], ["U1", "4"]]}, + {name: "expander.io.tof_reset_0", pads: [["U6", "10"], ["J3", "6"]]}, + {name: "expander.io.tof_reset_1", pads: [["U6", "11"], ["J4", "6"]]}, + {name: "expander.io.tof_reset_2", pads: [["U6", "12"], ["J5", "6"]]}, + {name: "expander.io.led_0", pads: [["U6", "4"], ["RN1", "8"]]}, + {name: "expander.io.led_1", pads: [["U6", "5"], ["RN1", "7"]]}, + {name: "expander.io.led_2", pads: [["U6", "6"], ["RN1", "6"]]}, + {name: "expander.io.led_3", pads: [["U6", "7"], ["RN1", "5"]]}, + {name: "spk_chain_0", pads: [["U3", "11"], ["TP6", "1"], ["C19", "2"]]}, + {name: "spk_chain_1.a", pads: [["U7", "8"], ["J7", "1"]]}, + {name: "spk_chain_1.b", pads: [["U7", "5"], ["J7", "2"]]}, + {name: "ws2812bArray.din", pads: [["U3", "23"], ["D6", "4"]]}, + {name: "ws2812bArray.dout", pads: [["D10", "2"], ["J8", "2"]]}, + {name: "motor_driver1.ain1", pads: [["U3", "30"], ["U8", "16"]]}, + {name: "motor_driver1.ain2", pads: [["U3", "31"], ["U8", "15"]]}, + {name: "motor_driver1.bin1", pads: [["U3", "36"], ["U8", "9"]]}, + {name: "motor_driver1.bin2", pads: [["U3", "33"], ["U8", "10"]]}, + {name: "m1_a.a", pads: [["U8", "2"], ["J9", "2"]]}, + {name: "m1_a.b", pads: [["U8", "4"], ["J9", "1"]]}, + {name: "m1_b.a", pads: [["U8", "7"], ["J10", "2"]]}, + {name: "m1_b.b", pads: [["U8", "5"], ["J10", "1"]]}, + {name: "motor_driver2.ain1", pads: [["U3", "26"], ["U9", "16"]]}, + {name: "motor_driver2.ain2", pads: [["U3", "27"], ["U9", "15"]]}, + {name: "motor_driver2.bin1", pads: [["U3", "29"], ["U9", "9"]]}, + {name: "motor_driver2.bin2", pads: [["U3", "28"], ["U9", "10"]]}, + {name: "m2_a.a", pads: [["U9", "2"], ["J11", "2"]]}, + {name: "m2_a.b", pads: [["U9", "4"], ["J11", "1"]]}, + {name: "m2_b.a", pads: [["U9", "7"], ["J12", "2"]]}, + {name: "m2_b.b", pads: [["U9", "5"], ["J12", "1"]]}, + {name: "servo.pwm", pads: [["U3", "37"], ["J13", "1"]]}, + {name: "led_res.a.0", pads: [["RN1", "1"], ["D2", "1"]]}, + {name: "led_res.a.1", pads: [["RN1", "2"], ["D3", "1"]]}, + {name: "led_res.a.2", pads: [["RN1", "3"], ["D4", "1"]]}, + {name: "led_res.a.3", pads: [["RN1", "4"], ["D5", "1"]]}, + {name: "isense.amp.r2.b", pads: [["R3", "2"], ["U1", "1"], ["R5", "2"]]}, + {name: "isense.amp.r1.b", pads: [["R2", "2"], ["U1", "3"], ["R4", "2"]]}, + {name: "reg_3v3.fb.output", pads: [["U2", "5"], ["R6", "2"], ["R7", "1"]]}, + {name: "reg_3v3.power_path.switch", pads: [["U2", "3"], ["L1", "1"]]}, + {name: "mcu.program_uart_node.a_tx", pads: [["U3", "35"], ["J2", "2"]]}, + {name: "mcu.program_uart_node.b_tx", pads: [["U3", "34"], ["J2", "3"]]}, + {name: "mcu.program_en_node", pads: [["U3", "3"], ["R8", "2"], ["C6", "1"]]}, + {name: "mcu.program_boot_node", pads: [["U3", "25"], ["SW1", "1"]]}, + {name: "mcu.ic.io2", pads: [["U3", "24"]]}, + {name: "tof.elt[0].ic.gpio1", pads: [["J3", "5"]]}, + {name: "tof.elt[1].ic.gpio1", pads: [["J4", "5"]]}, + {name: "tof.elt[2].ic.gpio1", pads: [["J5", "5"]]}, + {name: "lcd.c1_cap.pos", pads: [["C7", "1"], ["J6", "3"]]}, + {name: "lcd.c1_cap.neg", pads: [["C7", "2"], ["J6", "4"]]}, + {name: "lcd.c2_cap.pos", pads: [["C8", "1"], ["J6", "1"]]}, + {name: "lcd.c2_cap.neg", pads: [["C8", "2"], ["J6", "2"]]}, + {name: "lcd.iref_res.a", pads: [["R11", "1"], ["J6", "13"]]}, + {name: "lcd.device.vcomh", pads: [["J6", "14"], ["C9", "1"]]}, + {name: "lcd.device.vcc", pads: [["J6", "15"], ["C12", "1"], ["C13", "1"]]}, + {name: "imu.int1", pads: [["U5", "4"]]}, + {name: "imu.int2", pads: [["U5", "9"]]}, + {name: "spk_drv.inp_cap.pos", pads: [["C19", "1"], ["R12", "1"]]}, + {name: "spk_drv.inp_res.b", pads: [["R12", "2"], ["U7", "4"]]}, + {name: "spk_drv.inn_cap.pos", pads: [["C20", "1"], ["R13", "1"]]}, + {name: "spk_drv.inn_res.b", pads: [["R13", "2"], ["U7", "3"]]}, + {name: "ws2812bArray.led[0].dout", pads: [["D6", "2"], ["D7", "4"]]}, + {name: "ws2812bArray.led[1].dout", pads: [["D7", "2"], ["D8", "4"]]}, + {name: "ws2812bArray.led[2].dout", pads: [["D8", "2"], ["D9", "4"]]}, + {name: "ws2812bArray.led[3].dout", pads: [["D9", "2"], ["D10", "4"]]}, + {name: "motor_driver1.ic.vint", pads: [["U8", "14"], ["C22", "1"]]}, + {name: "motor_driver1.vcp_cap.pos", pads: [["C23", "1"], ["U8", "11"]]}, + {name: "motor_driver2.ic.vint", pads: [["U9", "14"], ["C25", "1"]]}, + {name: "motor_driver2.vcp_cap.pos", pads: [["C26", "1"], ["U9", "11"]]} +]) + const limit0 = pt(-0.07874015748031496, -0.07874015748031496); const limit1 = pt(4.002755905511811, 3.374409448818898); const xMin = Math.min(limit0[0], limit1[0]); diff --git a/examples/RobotOwl/RobotOwl.svgpcb.js b/examples/RobotOwl/RobotOwl.svgpcb.js index 7798399a2..66c8a2aeb 100644 --- a/examples/RobotOwl/RobotOwl.svgpcb.js +++ b/examples/RobotOwl/RobotOwl.svgpcb.js @@ -1,198 +1,283 @@ const board = new PCB(); -const jlc_th_th1 = board.add(JlcToolingHole_1_152mm, { +// jlc_th.th1 +const H1 = board.add(JlcToolingHole_1_152mm, { translate: pt(4.146, 2.762), rotate: 0, - id: 'jlc_th_th1' + id: 'H1' }) -const jlc_th_th2 = board.add(JlcToolingHole_1_152mm, { +// jlc_th.th2 +const H2 = board.add(JlcToolingHole_1_152mm, { translate: pt(4.185, 2.762), rotate: 0, - id: 'jlc_th_th2' + id: 'H2' }) -const jlc_th_th3 = board.add(JlcToolingHole_1_152mm, { +// jlc_th.th3 +const H3 = board.add(JlcToolingHole_1_152mm, { translate: pt(4.146, 2.801), rotate: 0, - id: 'jlc_th_th3' + id: 'H3' }) -const mcu = board.add(Freenove_ESP32S3_WROOM_Expansion, { +// mcu +const U1 = board.add(Freenove_ESP32S3_WROOM_Expansion, { translate: pt(0.160, 1.960), rotate: 0, - id: 'mcu' + id: 'U1' }) -const tp_gnd_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(3.727, 2.799), rotate: 0, - id: 'tp_gnd_tp' -}) -const tp_usb_tp = board.add(TestPoint_TE_RCT_0805, { +// tp_gnd.tp +const TP1 = board.add(TestPoint_TE_RCT_0805, { translate: pt(2.976, 2.799), rotate: 0, - id: 'tp_usb_tp' + id: 'TP1' +}) +// tp_usb.tp +const TP2 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(3.226, 2.799), rotate: 0, + id: 'TP2' }) -const tp_3v3_tp = board.add(TestPoint_TE_RCT_0805, { +// tp_3v3.tp +const TP3 = board.add(TestPoint_TE_RCT_0805, { translate: pt(3.477, 2.799), rotate: 0, - id: 'tp_3v3_tp' + id: 'TP3' }) -const reg_12v_ic = board.add(SOT_23_5, { +// reg_12v.ic +const U2 = board.add(SOT_23_5, { translate: pt(1.467, 2.363), rotate: 0, - id: 'reg_12v_ic' + id: 'U2' }) -const reg_12v_fb_div_top_res = board.add(R_0603_1608Metric, { +// reg_12v.fb.div.top_res +const R1 = board.add(R_0603_1608Metric, { translate: pt(1.444, 2.615), rotate: 0, - id: 'reg_12v_fb_div_top_res' + id: 'R1' }) -const reg_12v_fb_div_bottom_res = board.add(R_0603_1608Metric, { +// reg_12v.fb.div.bottom_res +const R2 = board.add(R_0603_1608Metric, { translate: pt(1.600, 2.615), rotate: 0, - id: 'reg_12v_fb_div_bottom_res' + id: 'R2' }) -const reg_12v_power_path_inductor = board.add(L_1210_3225Metric, { +// reg_12v.power_path.inductor +const L1 = board.add(L_1210_3225Metric, { translate: pt(1.676, 2.359), rotate: 0, - id: 'reg_12v_power_path_inductor' + id: 'L1' }) -const reg_12v_power_path_in_cap_cap = board.add(C_0805_2012Metric, { +// reg_12v.power_path.in_cap.cap +const C1 = board.add(C_0805_2012Metric, { translate: pt(1.453, 2.508), rotate: 0, - id: 'reg_12v_power_path_in_cap_cap' + id: 'C1' }) -const reg_12v_power_path_out_cap_cap = board.add(C_0805_2012Metric, { +// reg_12v.power_path.out_cap.cap +const C2 = board.add(C_0805_2012Metric, { translate: pt(1.626, 2.508), rotate: 0, - id: 'reg_12v_power_path_out_cap_cap' + id: 'C2' }) -const reg_12v_rect = board.add(D_SOD_323, { +// reg_12v.rect +const D1 = board.add(D_SOD_323, { translate: pt(1.796, 2.507), rotate: 0, - id: 'reg_12v_rect' + id: 'D1' }) -const tp_12v_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(3.226, 2.799), rotate: 0, - id: 'tp_12v_tp' +// tp_12v.tp +const TP4 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(3.727, 2.799), rotate: 0, + id: 'TP4' }) -const mic_ic = board.add(Knowles_LGA_5_3_5x2_65mm, { +// mic.ic +const U3 = board.add(Knowles_LGA_5_3_5x2_65mm, { translate: pt(1.448, 2.841), rotate: 0, - id: 'mic_ic' + id: 'U3' }) -const mic_pwr_cap_cap = board.add(C_0603_1608Metric, { +// mic.pwr_cap.cap +const C3 = board.add(C_0603_1608Metric, { translate: pt(1.444, 2.987), rotate: 0, - id: 'mic_pwr_cap_cap' + id: 'C3' }) -const photodiode_r = board.add(R_0603_1608Metric, { +// photodiode.r +const R3 = board.add(R_0603_1608Metric, { translate: pt(3.848, 2.542), rotate: 0, - id: 'photodiode_r' + id: 'R3' }) -const photodiode_pd = board.add(Osram_BPW34S_SMD, { +// photodiode.pd +const D2 = board.add(Osram_BPW34S_SMD, { translate: pt(3.947, 2.385), rotate: 0, - id: 'photodiode_pd' + id: 'D2' }) -const oled22_device_conn = board.add(Hirose_FH12_24S_0_5SH_1x24_1MP_P0_50mm_Horizontal, { +// oled22.device.conn +const J1 = board.add(Hirose_FH12_24S_0_5SH_1x24_1MP_P0_50mm_Horizontal, { translate: pt(1.715, 1.577), rotate: 0, - id: 'oled22_device_conn' + id: 'J1' }) -const oled22_lcd = board.add(Lcd_Er_Oled022_1_Outline, { +// oled22.lcd +const U4 = board.add(Lcd_Er_Oled022_1_Outline, { translate: pt(2.580, 0.607), rotate: 0, - id: 'oled22_lcd' + id: 'U4' }) -const oled22_iref_res = board.add(R_0603_1608Metric, { +// oled22.iref_res +const R4 = board.add(R_0603_1608Metric, { translate: pt(2.736, 1.413), rotate: 0, - id: 'oled22_iref_res' + id: 'R4' }) -const oled22_vcomh_cap_cap = board.add(C_1206_3216Metric, { +// oled22.vcomh_cap.cap +const C4 = board.add(C_1206_3216Metric, { translate: pt(2.202, 1.430), rotate: 0, - id: 'oled22_vcomh_cap_cap' + id: 'C4' }) -const oled22_vdd_cap1_cap = board.add(C_0603_1608Metric, { +// oled22.vdd_cap1.cap +const C5 = board.add(C_0603_1608Metric, { translate: pt(2.892, 1.413), rotate: 0, - id: 'oled22_vdd_cap1_cap' + id: 'C5' }) -const oled22_vdd_cap2_cap = board.add(C_0805_2012Metric, { +// oled22.vdd_cap2.cap +const C6 = board.add(C_0805_2012Metric, { translate: pt(2.398, 1.423), rotate: 0, - id: 'oled22_vdd_cap2_cap' + id: 'C6' }) -const oled22_vcc_cap1_cap = board.add(C_0603_1608Metric, { +// oled22.vcc_cap1.cap +const C7 = board.add(C_0603_1608Metric, { translate: pt(3.048, 1.413), rotate: 0, - id: 'oled22_vcc_cap1_cap' + id: 'C7' }) -const oled22_vcc_cap2_cap = board.add(C_0805_2012Metric, { +// oled22.vcc_cap2.cap +const C8 = board.add(C_0805_2012Metric, { translate: pt(2.572, 1.423), rotate: 0, - id: 'oled22_vcc_cap2_cap' + id: 'C8' }) -const oled_rst_ic = board.add(SOT_23, { +// oled_rst.ic +const U5 = board.add(SOT_23, { translate: pt(2.716, 2.829), rotate: 0, - id: 'oled_rst_ic' + id: 'U5' }) -const oled_pull_res = board.add(R_0603_1608Metric, { +// oled_pull.res +const R5 = board.add(R_0603_1608Metric, { translate: pt(3.970, 2.791), rotate: 0, - id: 'oled_pull_res' + id: 'R5' }) -const spk_drv_ic = board.add(Maxim_WLP_9_1_595x1_415_Layout3x3_P0_4mm_Ball0_27mm_Pad0_25mm_NSMD, { +// spk_drv.ic +const U6 = board.add(Maxim_WLP_9_1_595x1_415_Layout3x3_P0_4mm_Ball0_27mm_Pad0_25mm_NSMD, { translate: pt(1.699, 2.829), rotate: 0, - id: 'spk_drv_ic' + id: 'U6' }) -const spk_drv_pwr_cap0_cap = board.add(C_0603_1608Metric, { +// spk_drv.pwr_cap0.cap +const C9 = board.add(C_0603_1608Metric, { translate: pt(1.860, 2.964), rotate: 0, - id: 'spk_drv_pwr_cap0_cap' + id: 'C9' }) -const spk_drv_pwr_cap1_cap = board.add(C_0805_2012Metric, { +// spk_drv.pwr_cap1.cap +const C10 = board.add(C_0805_2012Metric, { translate: pt(1.695, 2.974), rotate: 0, - id: 'spk_drv_pwr_cap1_cap' + id: 'C10' }) -const spk_conn = board.add(PinHeader_1x02_P2_54mm_Horizontal, { +// spk.conn +const J2 = board.add(PinHeader_1x02_P2_54mm_Horizontal, { translate: pt(2.107, 2.933), rotate: 0, - id: 'spk_conn' + id: 'J2' }) -const servo_0__conn = board.add(PinHeader_1x03_P2_54mm_Horizontal, { - translate: pt(3.256, 2.566), rotate: 0, - id: 'servo_0__conn' +// servo[0].conn +const J3 = board.add(PinHeader_1x03_P2_54mm_Horizontal, { + translate: pt(2.048, 2.566), rotate: 0, + id: 'J3' }) -const servo_1__conn = board.add(PinHeader_1x03_P2_54mm_Horizontal, { +// servo[1].conn +const J4 = board.add(PinHeader_1x03_P2_54mm_Horizontal, { translate: pt(2.652, 2.566), rotate: 0, - id: 'servo_1__conn' + id: 'J4' }) -const ws2812bArray_led_0_ = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { +// ws2812bArray.led[0] +const D3 = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { translate: pt(0.144, 2.405), rotate: 0, - id: 'ws2812bArray_led_0_' + id: 'D3' }) -const ws2812bArray_led_1_ = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { +// ws2812bArray.led[1] +const D4 = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { translate: pt(0.470, 2.405), rotate: 0, - id: 'ws2812bArray_led_1_' + id: 'D4' }) -const ws2812bArray_led_2_ = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { +// ws2812bArray.led[2] +const D5 = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { translate: pt(0.797, 2.405), rotate: 0, - id: 'ws2812bArray_led_2_' + id: 'D5' }) -const ws2812bArray_led_3_ = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { +// ws2812bArray.led[3] +const D6 = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { translate: pt(1.124, 2.405), rotate: 0, - id: 'ws2812bArray_led_3_' + id: 'D6' }) -const ws2812bArray_led_4_ = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { +// ws2812bArray.led[4] +const D7 = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { translate: pt(0.144, 2.661), rotate: 0, - id: 'ws2812bArray_led_4_' + id: 'D7' }) -const ws2812bArray_led_5_ = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { +// ws2812bArray.led[5] +const D8 = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { translate: pt(0.470, 2.661), rotate: 0, - id: 'ws2812bArray_led_5_' + id: 'D8' }) -const ws2812bArray_led_6_ = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { +// ws2812bArray.led[6] +const D9 = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { translate: pt(0.797, 2.661), rotate: 0, - id: 'ws2812bArray_led_6_' + id: 'D9' }) -const ws2812bArray_led_7_ = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { +// ws2812bArray.led[7] +const D10 = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { translate: pt(1.124, 2.661), rotate: 0, - id: 'ws2812bArray_led_7_' + id: 'D10' }) -const ws2812bArray_led_8_ = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { +// ws2812bArray.led[8] +const D11 = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { translate: pt(0.144, 2.917), rotate: 0, - id: 'ws2812bArray_led_8_' + id: 'D11' }) -const ws2812bArray_led_9_ = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { +// ws2812bArray.led[9] +const D12 = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { translate: pt(0.470, 2.917), rotate: 0, - id: 'ws2812bArray_led_9_' + id: 'D12' }) -const ws2812bArray_led_10_ = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { +// ws2812bArray.led[10] +const D13 = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { translate: pt(0.797, 2.917), rotate: 0, - id: 'ws2812bArray_led_10_' + id: 'D13' }) -const ws2812bArray_led_11_ = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { +// ws2812bArray.led[11] +const D14 = board.add(LED_WS2812B_PLCC4_5_0x5_0mm_P3_2mm, { translate: pt(1.124, 2.917), rotate: 0, - id: 'ws2812bArray_led_11_' + id: 'D14' }) -const extNeopixels_conn = board.add(PinHeader_1x03_P2_54mm_Horizontal, { - translate: pt(2.048, 2.566), rotate: 0, - id: 'extNeopixels_conn' +// extNeopixels.conn +const J5 = board.add(PinHeader_1x03_P2_54mm_Horizontal, { + translate: pt(3.256, 2.566), rotate: 0, + id: 'J5' }) +board.setNetlist([ + {name: "gnd", pads: [["U1", "21"], ["U5", "1"], ["TP1", "1"], ["U2", "2"], ["U3", "3"], ["D2", "2"], ["U6", "C2"], ["J3", "3"], ["J4", "3"], ["D3", "3"], ["D4", "3"], ["D5", "3"], ["D6", "3"], ["D7", "3"], ["D8", "3"], ["D9", "3"], ["D10", "3"], ["D11", "3"], ["D12", "3"], ["D13", "3"], ["D14", "3"], ["J5", "3"], ["U3", "2"], ["R4", "2"], ["C3", "2"], ["J1", "3"], ["J1", "1"], ["J1", "24"], ["J1", "2"], ["J1", "12"], ["J1", "11"], ["J1", "16"], ["J1", "17"], ["J1", "18"], ["J1", "19"], ["J1", "20"], ["C4", "2"], ["C5", "2"], ["C6", "2"], ["C7", "2"], ["C8", "2"], ["C9", "2"], ["C10", "2"], ["R2", "2"], ["J1", "7"], ["J1", "10"], ["J1", "8"], ["C1", "2"], ["C2", "2"]]}, + {name: "vusb", pads: [["U1", "20"], ["TP2", "1"], ["U2", "5"], ["U6", "A1"], ["U6", "A2"], ["J3", "2"], ["J4", "2"], ["D3", "1"], ["D4", "1"], ["D5", "1"], ["D6", "1"], ["D7", "1"], ["D8", "1"], ["D9", "1"], ["D10", "1"], ["D11", "1"], ["D12", "1"], ["D13", "1"], ["D14", "1"], ["J5", "1"], ["U2", "4"], ["C9", "1"], ["C10", "1"], ["L1", "1"], ["C1", "1"]]}, + {name: "v3v3", pads: [["U1", "1"], ["U5", "3"], ["TP3", "1"], ["U3", "5"], ["R3", "1"], ["R5", "1"], ["C3", "1"], ["J1", "5"], ["C5", "1"], ["C6", "1"], ["J1", "6"]]}, + {name: "v12", pads: [["TP4", "1"], ["D1", "1"], ["R1", "1"], ["C2", "1"], ["J1", "23"], ["C7", "1"], ["C8", "1"]]}, + {name: "mic.clk", pads: [["U3", "4"], ["U1", "12"]]}, + {name: "mic.data", pads: [["U3", "1"], ["U1", "19"]]}, + {name: "photodiode.out", pads: [["U1", "38"], ["R3", "2"], ["D2", "1"]]}, + {name: "oled22.i2c.scl", pads: [["U1", "4"], ["J1", "13"]]}, + {name: "oled22.i2c.sda", pads: [["U1", "3"], ["J1", "14"], ["J1", "15"]]}, + {name: "oled_rst.nreset", pads: [["U5", "2"], ["R5", "2"], ["J1", "9"]]}, + {name: "spk_drv.i2s.sck", pads: [["U1", "35"], ["U6", "C1"]]}, + {name: "spk_drv.i2s.ws", pads: [["U1", "37"], ["U6", "C3"]]}, + {name: "spk_drv.i2s.sd", pads: [["U1", "36"], ["U6", "B1"]]}, + {name: "spk_drv.out.a", pads: [["U6", "A3"], ["J2", "1"]]}, + {name: "spk_drv.out.b", pads: [["U6", "B3"], ["J2", "2"]]}, + {name: "servo[0].pwm", pads: [["U1", "25"], ["J3", "1"]]}, + {name: "servo[1].pwm", pads: [["U1", "24"], ["J4", "1"]]}, + {name: "ws2812bArray.din", pads: [["U1", "26"], ["D3", "4"]]}, + {name: "ws2812bArray.dout", pads: [["D14", "2"], ["J5", "2"]]}, + {name: "reg_12v.fb.output", pads: [["U2", "3"], ["R1", "2"], ["R2", "1"]]}, + {name: "reg_12v.power_path.switch", pads: [["U2", "1"], ["L1", "2"], ["D1", "2"]]}, + {name: "oled22.iref_res.a", pads: [["R4", "1"], ["J1", "21"]]}, + {name: "oled22.device.vcomh", pads: [["J1", "22"], ["C4", "1"]]}, + {name: "ws2812bArray.led[0].dout", pads: [["D3", "2"], ["D4", "4"]]}, + {name: "ws2812bArray.led[1].dout", pads: [["D4", "2"], ["D5", "4"]]}, + {name: "ws2812bArray.led[2].dout", pads: [["D5", "2"], ["D6", "4"]]}, + {name: "ws2812bArray.led[3].dout", pads: [["D6", "2"], ["D7", "4"]]}, + {name: "ws2812bArray.led[4].dout", pads: [["D7", "2"], ["D8", "4"]]}, + {name: "ws2812bArray.led[5].dout", pads: [["D8", "2"], ["D9", "4"]]}, + {name: "ws2812bArray.led[6].dout", pads: [["D9", "2"], ["D10", "4"]]}, + {name: "ws2812bArray.led[7].dout", pads: [["D10", "2"], ["D11", "4"]]}, + {name: "ws2812bArray.led[8].dout", pads: [["D11", "2"], ["D12", "4"]]}, + {name: "ws2812bArray.led[9].dout", pads: [["D12", "2"], ["D13", "4"]]}, + {name: "ws2812bArray.led[10].dout", pads: [["D13", "2"], ["D14", "4"]]} +]) + const limit0 = pt(-0.07874015748031496, -0.07874015748031496); const limit1 = pt(4.303543307086614, 3.142913385826772); const xMin = Math.min(limit0[0], limit1[0]); diff --git a/examples/SevenSegment/SevenSegment.svgpcb.js b/examples/SevenSegment/SevenSegment.svgpcb.js index 7fa240fbc..97ca01e90 100644 --- a/examples/SevenSegment/SevenSegment.svgpcb.js +++ b/examples/SevenSegment/SevenSegment.svgpcb.js @@ -1,462 +1,670 @@ const board = new PCB(); -const jlc_th_th1 = board.add(JlcToolingHole_1_152mm, { +// jlc_th.th1 +const CH1 = board.add(JlcToolingHole_1_152mm, { translate: pt(3.246, 2.093), rotate: 0, - id: 'jlc_th_th1' + id: 'CH1' }) -const jlc_th_th2 = board.add(JlcToolingHole_1_152mm, { +// jlc_th.th2 +const CH2 = board.add(JlcToolingHole_1_152mm, { translate: pt(3.285, 2.093), rotate: 0, - id: 'jlc_th_th2' + id: 'CH2' }) -const jlc_th_th3 = board.add(JlcToolingHole_1_152mm, { +// jlc_th.th3 +const CH3 = board.add(JlcToolingHole_1_152mm, { translate: pt(3.246, 2.132), rotate: 0, - id: 'jlc_th_th3' + id: 'CH3' }) -const pwr_conn_conn = board.add(JST_PH_B2B_PH_K_1x02_P2_00mm_Vertical, { +// pwr_conn.conn +const CJ1 = board.add(JST_PH_B2B_PH_K_1x02_P2_00mm_Vertical, { translate: pt(0.767, 1.870), rotate: 0, - id: 'pwr_conn_conn' + id: 'CJ1' }) -const tp_pwr_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(2.316, 2.130), rotate: 0, - id: 'tp_pwr_tp' -}) -const tp_gnd_tp = board.add(TestPoint_TE_RCT_0805, { +// tp_pwr.tp +const CTP1 = board.add(TestPoint_TE_RCT_0805, { translate: pt(1.816, 2.130), rotate: 0, - id: 'tp_gnd_tp' + id: 'CTP1' +}) +// tp_gnd.tp +const CTP2 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(2.066, 2.130), rotate: 0, + id: 'CTP2' }) -const reg_3v3_ic = board.add(SOT_223_3_TabPin2, { +// reg_3v3.ic +const CU1 = board.add(SOT_223_3_TabPin2, { translate: pt(2.713, 1.244), rotate: 0, - id: 'reg_3v3_ic' + id: 'CU1' }) -const reg_3v3_in_cap_cap = board.add(C_0603_1608Metric, { +// reg_3v3.in_cap.cap +const CC1 = board.add(C_0603_1608Metric, { translate: pt(2.772, 1.454), rotate: 0, - id: 'reg_3v3_in_cap_cap' + id: 'CC1' }) -const reg_3v3_out_cap_cap = board.add(C_0805_2012Metric, { +// reg_3v3.out_cap.cap +const CC2 = board.add(C_0805_2012Metric, { translate: pt(2.607, 1.464), rotate: 0, - id: 'reg_3v3_out_cap_cap' + id: 'CC2' }) -const tp_3v3_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(3.062, 2.130), rotate: 0, - id: 'tp_3v3_tp' +// tp_3v3.tp +const CTP3 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(2.316, 2.130), rotate: 0, + id: 'CTP3' }) -const prot_3v3_diode = board.add(D_SOD_323, { +// prot_3v3.diode +const CD1 = board.add(D_SOD_323, { translate: pt(2.564, 2.130), rotate: 0, - id: 'prot_3v3_diode' + id: 'CD1' }) -const mcu_ic = board.add(ESP32_S3_WROOM_1, { +// mcu.ic +const CU2 = board.add(ESP32_S3_WROOM_1, { translate: pt(0.945, 0.530), rotate: 0, - id: 'mcu_ic' + id: 'CU2' }) -const mcu_vcc_cap0_cap = board.add(C_1206_3216Metric, { +// mcu.vcc_cap0.cap +const CC3 = board.add(C_1206_3216Metric, { translate: pt(2.020, 0.419), rotate: 0, - id: 'mcu_vcc_cap0_cap' + id: 'CC3' }) -const mcu_vcc_cap1_cap = board.add(C_0603_1608Metric, { +// mcu.vcc_cap1.cap +const CC4 = board.add(C_0603_1608Metric, { translate: pt(2.208, 0.403), rotate: 0, - id: 'mcu_vcc_cap1_cap' + id: 'CC4' }) -const mcu_prog_conn = board.add(Tag_Connect_TC2030_IDC_FP_2x03_P1_27mm_Vertical, { +// mcu.prog.conn +const CJ2 = board.add(Tag_Connect_TC2030_IDC_FP_2x03_P1_27mm_Vertical, { translate: pt(2.096, 0.167), rotate: 0, - id: 'mcu_prog_conn' + id: 'CJ2' }) -const mcu_en_pull_rc_r = board.add(R_0603_1608Metric, { +// mcu.en_pull.rc.r +const CR1 = board.add(R_0603_1608Metric, { translate: pt(2.364, 0.403), rotate: 0, - id: 'mcu_en_pull_rc_r' + id: 'CR1' }) -const mcu_en_pull_rc_c = board.add(C_0603_1608Metric, { +// mcu.en_pull.rc.c +const CC5 = board.add(C_0603_1608Metric, { translate: pt(1.987, 0.533), rotate: 0, - id: 'mcu_en_pull_rc_c' + id: 'CC5' }) -const ledr_package = board.add(LED_0603_1608Metric, { +// ledr.package +const CD2 = board.add(LED_0603_1608Metric, { translate: pt(0.399, 2.122), rotate: 0, - id: 'ledr_package' + id: 'CD2' }) -const ledr_res = board.add(R_0603_1608Metric, { +// ledr.res +const CR2 = board.add(R_0603_1608Metric, { translate: pt(0.399, 2.219), rotate: 0, - id: 'ledr_res' + id: 'CR2' }) -const ledg_package = board.add(LED_0603_1608Metric, { +// ledg.package +const CD3 = board.add(LED_0603_1608Metric, { + translate: pt(0.634, 2.122), rotate: 0, + id: 'CD3' +}) +// ledg.res +const CR3 = board.add(R_0603_1608Metric, { + translate: pt(0.634, 2.219), rotate: 0, + id: 'CR3' +}) +// ledb.package +const CD4 = board.add(LED_0603_1608Metric, { translate: pt(0.869, 2.122), rotate: 0, - id: 'ledg_package' + id: 'CD4' }) -const ledg_res = board.add(R_0603_1608Metric, { +// ledb.res +const CR4 = board.add(R_0603_1608Metric, { translate: pt(0.869, 2.219), rotate: 0, - id: 'ledg_res' + id: 'CR4' }) -const ledb_package = board.add(LED_0603_1608Metric, { - translate: pt(0.634, 2.122), rotate: 0, - id: 'ledb_package' +// sw[0].package +const CSW1 = board.add(SW_Push_1P1T_MP_NO_Horizontal_Alps_SKRTLAE010, { + translate: pt(2.617, 1.831), rotate: 0, + id: 'CSW1' }) -const ledb_res = board.add(R_0603_1608Metric, { - translate: pt(0.634, 2.219), rotate: 0, - id: 'ledb_res' +// sw[1].package +const CSW2 = board.add(SW_Push_1P1T_MP_NO_Horizontal_Alps_SKRTLAE010, { + translate: pt(2.958, 1.831), rotate: 0, + id: 'CSW2' }) -const sw_0__package = board.add(SW_Push_1P1T_MP_NO_Horizontal_Alps_SKRTLAE010, { +// sw[2].package +const CSW3 = board.add(SW_Push_1P1T_MP_NO_Horizontal_Alps_SKRTLAE010, { translate: pt(3.299, 1.831), rotate: 0, - id: 'sw_0__package' -}) -const sw_1__package = board.add(SW_Push_1P1T_MP_NO_Horizontal_Alps_SKRTLAE010, { - translate: pt(2.617, 1.831), rotate: 0, - id: 'sw_1__package' + id: 'CSW3' }) -const sw_2__package = board.add(SW_Push_1P1T_MP_NO_Horizontal_Alps_SKRTLAE010, { +// sw[3].package +const CSW4 = board.add(SW_Push_1P1T_MP_NO_Horizontal_Alps_SKRTLAE010, { translate: pt(0.111, 2.183), rotate: 0, - id: 'sw_2__package' -}) -const sw_3__package = board.add(SW_Push_1P1T_MP_NO_Horizontal_Alps_SKRTLAE010, { - translate: pt(2.958, 1.831), rotate: 0, - id: 'sw_3__package' + id: 'CSW4' }) -const i2c_pull_scl_res_res = board.add(R_0603_1608Metric, { - translate: pt(1.338, 2.122), rotate: 0, - id: 'i2c_pull_scl_res_res' +// i2c_pull.scl_res.res +const CR5 = board.add(R_0603_1608Metric, { + translate: pt(1.104, 2.122), rotate: 0, + id: 'CR5' }) -const i2c_pull_sda_res_res = board.add(R_0603_1608Metric, { - translate: pt(1.338, 2.219), rotate: 0, - id: 'i2c_pull_sda_res_res' +// i2c_pull.sda_res.res +const CR6 = board.add(R_0603_1608Metric, { + translate: pt(1.104, 2.219), rotate: 0, + id: 'CR6' }) -const i2c_tp_tp_scl_tp = board.add(TestPoint_TE_RCT_0805, { +// i2c_tp.tp_scl.tp +const CTP4 = board.add(TestPoint_TE_RCT_0805, { translate: pt(1.909, 1.778), rotate: 0, - id: 'i2c_tp_tp_scl_tp' + id: 'CTP4' }) -const i2c_tp_tp_sda_tp = board.add(TestPoint_TE_RCT_0805, { +// i2c_tp.tp_sda.tp +const CTP5 = board.add(TestPoint_TE_RCT_0805, { translate: pt(1.909, 1.892), rotate: 0, - id: 'i2c_tp_tp_sda_tp' + id: 'CTP5' }) -const env_ic = board.add(Bosch_LGA_8_3x3mm_P0_8mm_ClockwisePinNumbering, { +// env.ic +const CU3 = board.add(Bosch_LGA_8_3x3mm_P0_8mm_ClockwisePinNumbering, { translate: pt(0.069, 1.809), rotate: 0, - id: 'env_ic' + id: 'CU3' }) -const env_vdd_cap_cap = board.add(C_0603_1608Metric, { +// env.vdd_cap.cap +const CC6 = board.add(C_0603_1608Metric, { translate: pt(0.058, 1.946), rotate: 0, - id: 'env_vdd_cap_cap' + id: 'CC6' }) -const env_vddio_cap_cap = board.add(C_0603_1608Metric, { +// env.vddio_cap.cap +const CC7 = board.add(C_0603_1608Metric, { translate: pt(0.214, 1.946), rotate: 0, - id: 'env_vddio_cap_cap' + id: 'CC7' }) -const als_ic = board.add(HVSOF6, { +// als.ic +const CU4 = board.add(HVSOF6, { translate: pt(2.163, 1.781), rotate: 0, - id: 'als_ic' + id: 'CU4' }) -const als_vcc_cap_cap = board.add(C_0603_1608Metric, { +// als.vcc_cap.cap +const CC8 = board.add(C_0603_1608Metric, { translate: pt(2.329, 1.769), rotate: 0, - id: 'als_vcc_cap_cap' + id: 'CC8' }) -const als_dvi_res = board.add(R_0603_1608Metric, { +// als.dvi_res +const CR7 = board.add(R_0603_1608Metric, { translate: pt(2.152, 1.891), rotate: 0, - id: 'als_dvi_res' + id: 'CR7' }) -const als_dvi_cap = board.add(C_0603_1608Metric, { +// als.dvi_cap +const CC9 = board.add(C_0603_1608Metric, { translate: pt(2.308, 1.891), rotate: 0, - id: 'als_dvi_cap' + id: 'CC9' }) -const rgb_shift_ic = board.add(SOT_23_5, { +// rgb_shift.ic +const CU5 = board.add(SOT_23_5, { translate: pt(0.471, 1.807), rotate: 0, - id: 'rgb_shift_ic' + id: 'CU5' }) -const rgb_shift_vdd_cap_cap = board.add(C_0603_1608Metric, { +// rgb_shift.vdd_cap.cap +const CC10 = board.add(C_0603_1608Metric, { translate: pt(0.449, 1.942), rotate: 0, - id: 'rgb_shift_vdd_cap_cap' + id: 'CC10' }) -const rgb_tp_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(2.066, 2.130), rotate: 0, - id: 'rgb_tp_tp' +// rgb_tp.tp +const CTP6 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(2.811, 2.130), rotate: 0, + id: 'CTP6' }) -const digit_0__led_0_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { +// digit[0].led[0] +const CD5 = board.add(LED_SK6812_EC15_1_5x1_5mm, { translate: pt(2.580, 0.039), rotate: 0, - id: 'digit_0__led_0_' + id: 'CD5' }) -const digit_0__led_1_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { +// digit[0].led[1] +const CD6 = board.add(LED_SK6812_EC15_1_5x1_5mm, { translate: pt(2.698, 0.039), rotate: 0, - id: 'digit_0__led_1_' + id: 'CD6' }) -const digit_0__led_2_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { +// digit[0].led[2] +const CD7 = board.add(LED_SK6812_EC15_1_5x1_5mm, { translate: pt(2.816, 0.039), rotate: 0, - id: 'digit_0__led_2_' + id: 'CD7' }) -const digit_0__led_3_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { +// digit[0].led[3] +const CD8 = board.add(LED_SK6812_EC15_1_5x1_5mm, { translate: pt(2.934, 0.039), rotate: 0, - id: 'digit_0__led_3_' + id: 'CD8' }) -const digit_0__led_4_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { +// digit[0].led[4] +const CD9 = board.add(LED_SK6812_EC15_1_5x1_5mm, { translate: pt(2.580, 0.157), rotate: 0, - id: 'digit_0__led_4_' + id: 'CD9' }) -const digit_0__led_5_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { +// digit[0].led[5] +const CD10 = board.add(LED_SK6812_EC15_1_5x1_5mm, { translate: pt(2.698, 0.157), rotate: 0, - id: 'digit_0__led_5_' + id: 'CD10' }) -const digit_0__led_6_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { +// digit[0].led[6] +const CD11 = board.add(LED_SK6812_EC15_1_5x1_5mm, { translate: pt(2.816, 0.157), rotate: 0, - id: 'digit_0__led_6_' + id: 'CD11' }) -const digit_0__led_7_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { +// digit[0].led[7] +const CD12 = board.add(LED_SK6812_EC15_1_5x1_5mm, { translate: pt(2.934, 0.157), rotate: 0, - id: 'digit_0__led_7_' + id: 'CD12' }) -const digit_0__led_8_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { +// digit[0].led[8] +const CD13 = board.add(LED_SK6812_EC15_1_5x1_5mm, { translate: pt(2.580, 0.276), rotate: 0, - id: 'digit_0__led_8_' + id: 'CD13' }) -const digit_0__led_9_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { +// digit[0].led[9] +const CD14 = board.add(LED_SK6812_EC15_1_5x1_5mm, { translate: pt(2.698, 0.276), rotate: 0, - id: 'digit_0__led_9_' + id: 'CD14' }) -const digit_0__led_10_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { +// digit[0].led[10] +const CD15 = board.add(LED_SK6812_EC15_1_5x1_5mm, { translate: pt(2.816, 0.276), rotate: 0, - id: 'digit_0__led_10_' + id: 'CD15' }) -const digit_0__led_11_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { +// digit[0].led[11] +const CD16 = board.add(LED_SK6812_EC15_1_5x1_5mm, { translate: pt(2.934, 0.276), rotate: 0, - id: 'digit_0__led_11_' + id: 'CD16' }) -const digit_0__led_12_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { +// digit[0].led[12] +const CD17 = board.add(LED_SK6812_EC15_1_5x1_5mm, { translate: pt(2.580, 0.394), rotate: 0, - id: 'digit_0__led_12_' + id: 'CD17' }) -const digit_0__led_13_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { +// digit[0].led[13] +const CD18 = board.add(LED_SK6812_EC15_1_5x1_5mm, { translate: pt(2.698, 0.394), rotate: 0, - id: 'digit_0__led_13_' + id: 'CD18' +}) +// digit[1].led[0] +const CD19 = board.add(LED_SK6812_EC15_1_5x1_5mm, { + translate: pt(3.131, 0.039), rotate: 0, + id: 'CD19' +}) +// digit[1].led[1] +const CD20 = board.add(LED_SK6812_EC15_1_5x1_5mm, { + translate: pt(3.249, 0.039), rotate: 0, + id: 'CD20' +}) +// digit[1].led[2] +const CD21 = board.add(LED_SK6812_EC15_1_5x1_5mm, { + translate: pt(3.367, 0.039), rotate: 0, + id: 'CD21' +}) +// digit[1].led[3] +const CD22 = board.add(LED_SK6812_EC15_1_5x1_5mm, { + translate: pt(3.485, 0.039), rotate: 0, + id: 'CD22' +}) +// digit[1].led[4] +const CD23 = board.add(LED_SK6812_EC15_1_5x1_5mm, { + translate: pt(3.131, 0.157), rotate: 0, + id: 'CD23' +}) +// digit[1].led[5] +const CD24 = board.add(LED_SK6812_EC15_1_5x1_5mm, { + translate: pt(3.249, 0.157), rotate: 0, + id: 'CD24' +}) +// digit[1].led[6] +const CD25 = board.add(LED_SK6812_EC15_1_5x1_5mm, { + translate: pt(3.367, 0.157), rotate: 0, + id: 'CD25' +}) +// digit[1].led[7] +const CD26 = board.add(LED_SK6812_EC15_1_5x1_5mm, { + translate: pt(3.485, 0.157), rotate: 0, + id: 'CD26' +}) +// digit[1].led[8] +const CD27 = board.add(LED_SK6812_EC15_1_5x1_5mm, { + translate: pt(3.131, 0.276), rotate: 0, + id: 'CD27' +}) +// digit[1].led[9] +const CD28 = board.add(LED_SK6812_EC15_1_5x1_5mm, { + translate: pt(3.249, 0.276), rotate: 0, + id: 'CD28' +}) +// digit[1].led[10] +const CD29 = board.add(LED_SK6812_EC15_1_5x1_5mm, { + translate: pt(3.367, 0.276), rotate: 0, + id: 'CD29' }) -const digit_1__led_0_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { +// digit[1].led[11] +const CD30 = board.add(LED_SK6812_EC15_1_5x1_5mm, { + translate: pt(3.485, 0.276), rotate: 0, + id: 'CD30' +}) +// digit[1].led[12] +const CD31 = board.add(LED_SK6812_EC15_1_5x1_5mm, { + translate: pt(3.131, 0.394), rotate: 0, + id: 'CD31' +}) +// digit[1].led[13] +const CD32 = board.add(LED_SK6812_EC15_1_5x1_5mm, { + translate: pt(3.249, 0.394), rotate: 0, + id: 'CD32' +}) +// digit[2].led[0] +const CD33 = board.add(LED_SK6812_EC15_1_5x1_5mm, { translate: pt(2.580, 0.591), rotate: 0, - id: 'digit_1__led_0_' + id: 'CD33' }) -const digit_1__led_1_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { +// digit[2].led[1] +const CD34 = board.add(LED_SK6812_EC15_1_5x1_5mm, { translate: pt(2.698, 0.591), rotate: 0, - id: 'digit_1__led_1_' + id: 'CD34' }) -const digit_1__led_2_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { +// digit[2].led[2] +const CD35 = board.add(LED_SK6812_EC15_1_5x1_5mm, { translate: pt(2.816, 0.591), rotate: 0, - id: 'digit_1__led_2_' + id: 'CD35' }) -const digit_1__led_3_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { +// digit[2].led[3] +const CD36 = board.add(LED_SK6812_EC15_1_5x1_5mm, { translate: pt(2.934, 0.591), rotate: 0, - id: 'digit_1__led_3_' + id: 'CD36' }) -const digit_1__led_4_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { +// digit[2].led[4] +const CD37 = board.add(LED_SK6812_EC15_1_5x1_5mm, { translate: pt(2.580, 0.709), rotate: 0, - id: 'digit_1__led_4_' + id: 'CD37' }) -const digit_1__led_5_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { +// digit[2].led[5] +const CD38 = board.add(LED_SK6812_EC15_1_5x1_5mm, { translate: pt(2.698, 0.709), rotate: 0, - id: 'digit_1__led_5_' + id: 'CD38' }) -const digit_1__led_6_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { +// digit[2].led[6] +const CD39 = board.add(LED_SK6812_EC15_1_5x1_5mm, { translate: pt(2.816, 0.709), rotate: 0, - id: 'digit_1__led_6_' + id: 'CD39' }) -const digit_1__led_7_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { +// digit[2].led[7] +const CD40 = board.add(LED_SK6812_EC15_1_5x1_5mm, { translate: pt(2.934, 0.709), rotate: 0, - id: 'digit_1__led_7_' + id: 'CD40' }) -const digit_1__led_8_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { +// digit[2].led[8] +const CD41 = board.add(LED_SK6812_EC15_1_5x1_5mm, { translate: pt(2.580, 0.827), rotate: 0, - id: 'digit_1__led_8_' + id: 'CD41' }) -const digit_1__led_9_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { +// digit[2].led[9] +const CD42 = board.add(LED_SK6812_EC15_1_5x1_5mm, { translate: pt(2.698, 0.827), rotate: 0, - id: 'digit_1__led_9_' + id: 'CD42' }) -const digit_1__led_10_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { +// digit[2].led[10] +const CD43 = board.add(LED_SK6812_EC15_1_5x1_5mm, { translate: pt(2.816, 0.827), rotate: 0, - id: 'digit_1__led_10_' + id: 'CD43' }) -const digit_1__led_11_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { +// digit[2].led[11] +const CD44 = board.add(LED_SK6812_EC15_1_5x1_5mm, { translate: pt(2.934, 0.827), rotate: 0, - id: 'digit_1__led_11_' + id: 'CD44' }) -const digit_1__led_12_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { +// digit[2].led[12] +const CD45 = board.add(LED_SK6812_EC15_1_5x1_5mm, { translate: pt(2.580, 0.945), rotate: 0, - id: 'digit_1__led_12_' + id: 'CD45' }) -const digit_1__led_13_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { +// digit[2].led[13] +const CD46 = board.add(LED_SK6812_EC15_1_5x1_5mm, { translate: pt(2.698, 0.945), rotate: 0, - id: 'digit_1__led_13_' + id: 'CD46' }) -const digit_2__led_0_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { +// digit[3].led[0] +const CD47 = board.add(LED_SK6812_EC15_1_5x1_5mm, { translate: pt(3.131, 0.591), rotate: 0, - id: 'digit_2__led_0_' + id: 'CD47' }) -const digit_2__led_1_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { +// digit[3].led[1] +const CD48 = board.add(LED_SK6812_EC15_1_5x1_5mm, { translate: pt(3.249, 0.591), rotate: 0, - id: 'digit_2__led_1_' + id: 'CD48' }) -const digit_2__led_2_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { +// digit[3].led[2] +const CD49 = board.add(LED_SK6812_EC15_1_5x1_5mm, { translate: pt(3.367, 0.591), rotate: 0, - id: 'digit_2__led_2_' + id: 'CD49' }) -const digit_2__led_3_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { +// digit[3].led[3] +const CD50 = board.add(LED_SK6812_EC15_1_5x1_5mm, { translate: pt(3.485, 0.591), rotate: 0, - id: 'digit_2__led_3_' + id: 'CD50' }) -const digit_2__led_4_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { +// digit[3].led[4] +const CD51 = board.add(LED_SK6812_EC15_1_5x1_5mm, { translate: pt(3.131, 0.709), rotate: 0, - id: 'digit_2__led_4_' + id: 'CD51' }) -const digit_2__led_5_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { +// digit[3].led[5] +const CD52 = board.add(LED_SK6812_EC15_1_5x1_5mm, { translate: pt(3.249, 0.709), rotate: 0, - id: 'digit_2__led_5_' + id: 'CD52' }) -const digit_2__led_6_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { +// digit[3].led[6] +const CD53 = board.add(LED_SK6812_EC15_1_5x1_5mm, { translate: pt(3.367, 0.709), rotate: 0, - id: 'digit_2__led_6_' + id: 'CD53' }) -const digit_2__led_7_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { +// digit[3].led[7] +const CD54 = board.add(LED_SK6812_EC15_1_5x1_5mm, { translate: pt(3.485, 0.709), rotate: 0, - id: 'digit_2__led_7_' + id: 'CD54' }) -const digit_2__led_8_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { +// digit[3].led[8] +const CD55 = board.add(LED_SK6812_EC15_1_5x1_5mm, { translate: pt(3.131, 0.827), rotate: 0, - id: 'digit_2__led_8_' + id: 'CD55' }) -const digit_2__led_9_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { +// digit[3].led[9] +const CD56 = board.add(LED_SK6812_EC15_1_5x1_5mm, { translate: pt(3.249, 0.827), rotate: 0, - id: 'digit_2__led_9_' + id: 'CD56' }) -const digit_2__led_10_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { +// digit[3].led[10] +const CD57 = board.add(LED_SK6812_EC15_1_5x1_5mm, { translate: pt(3.367, 0.827), rotate: 0, - id: 'digit_2__led_10_' + id: 'CD57' }) -const digit_2__led_11_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { +// digit[3].led[11] +const CD58 = board.add(LED_SK6812_EC15_1_5x1_5mm, { translate: pt(3.485, 0.827), rotate: 0, - id: 'digit_2__led_11_' + id: 'CD58' }) -const digit_2__led_12_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { +// digit[3].led[12] +const CD59 = board.add(LED_SK6812_EC15_1_5x1_5mm, { translate: pt(3.131, 0.945), rotate: 0, - id: 'digit_2__led_12_' + id: 'CD59' }) -const digit_2__led_13_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { +// digit[3].led[13] +const CD60 = board.add(LED_SK6812_EC15_1_5x1_5mm, { translate: pt(3.249, 0.945), rotate: 0, - id: 'digit_2__led_13_' -}) -const digit_3__led_0_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { - translate: pt(3.131, 0.039), rotate: 0, - id: 'digit_3__led_0_' -}) -const digit_3__led_1_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { - translate: pt(3.249, 0.039), rotate: 0, - id: 'digit_3__led_1_' -}) -const digit_3__led_2_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { - translate: pt(3.367, 0.039), rotate: 0, - id: 'digit_3__led_2_' + id: 'CD60' }) -const digit_3__led_3_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { - translate: pt(3.485, 0.039), rotate: 0, - id: 'digit_3__led_3_' -}) -const digit_3__led_4_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { - translate: pt(3.131, 0.157), rotate: 0, - id: 'digit_3__led_4_' -}) -const digit_3__led_5_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { - translate: pt(3.249, 0.157), rotate: 0, - id: 'digit_3__led_5_' -}) -const digit_3__led_6_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { - translate: pt(3.367, 0.157), rotate: 0, - id: 'digit_3__led_6_' -}) -const digit_3__led_7_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { - translate: pt(3.485, 0.157), rotate: 0, - id: 'digit_3__led_7_' -}) -const digit_3__led_8_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { - translate: pt(3.131, 0.276), rotate: 0, - id: 'digit_3__led_8_' -}) -const digit_3__led_9_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { - translate: pt(3.249, 0.276), rotate: 0, - id: 'digit_3__led_9_' -}) -const digit_3__led_10_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { - translate: pt(3.367, 0.276), rotate: 0, - id: 'digit_3__led_10_' -}) -const digit_3__led_11_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { - translate: pt(3.485, 0.276), rotate: 0, - id: 'digit_3__led_11_' -}) -const digit_3__led_12_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { - translate: pt(3.131, 0.394), rotate: 0, - id: 'digit_3__led_12_' +// center.led[0] +const CD61 = board.add(LED_SK6812_EC15_1_5x1_5mm, { + translate: pt(1.489, 1.780), rotate: 0, + id: 'CD61' }) -const digit_3__led_13_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { - translate: pt(3.249, 0.394), rotate: 0, - id: 'digit_3__led_13_' +// center.led[1] +const CD62 = board.add(LED_SK6812_EC15_1_5x1_5mm, { + translate: pt(1.489, 1.898), rotate: 0, + id: 'CD62' }) -const center_led_0_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { +// meta.led[0] +const CD63 = board.add(LED_SK6812_EC15_1_5x1_5mm, { translate: pt(1.686, 1.780), rotate: 0, - id: 'center_led_0_' + id: 'CD63' }) -const center_led_1_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { +// meta.led[1] +const CD64 = board.add(LED_SK6812_EC15_1_5x1_5mm, { translate: pt(1.686, 1.898), rotate: 0, - id: 'center_led_1_' + id: 'CD64' }) -const meta_led_0_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { - translate: pt(1.489, 1.780), rotate: 0, - id: 'meta_led_0_' -}) -const meta_led_1_ = board.add(LED_SK6812_EC15_1_5x1_5mm, { - translate: pt(1.489, 1.898), rotate: 0, - id: 'meta_led_1_' -}) -const spk_dac_rc_r = board.add(R_0603_1608Metric, { - translate: pt(1.104, 2.122), rotate: 0, - id: 'spk_dac_rc_r' +// spk_dac.rc.r +const CR8 = board.add(R_0603_1608Metric, { + translate: pt(1.338, 2.122), rotate: 0, + id: 'CR8' }) -const spk_dac_rc_c = board.add(C_0603_1608Metric, { - translate: pt(1.104, 2.219), rotate: 0, - id: 'spk_dac_rc_c' +// spk_dac.rc.c +const CC11 = board.add(C_0603_1608Metric, { + translate: pt(1.338, 2.219), rotate: 0, + id: 'CC11' }) -const spk_tp_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(2.811, 2.130), rotate: 0, - id: 'spk_tp_tp' +// spk_tp.tp +const CTP7 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(3.062, 2.130), rotate: 0, + id: 'CTP7' }) -const spk_drv_ic = board.add(MSOP_8_1EP_3x3mm_P0_65mm_EP1_68x1_88mm_ThermalVias, { +// spk_drv.ic +const CU6 = board.add(MSOP_8_1EP_3x3mm_P0_65mm_EP1_68x1_88mm_ThermalVias, { translate: pt(3.128, 1.171), rotate: 0, - id: 'spk_drv_ic' + id: 'CU6' }) -const spk_drv_pwr_cap_cap = board.add(C_0603_1608Metric, { +// spk_drv.pwr_cap.cap +const CC12 = board.add(C_0603_1608Metric, { translate: pt(3.063, 1.308), rotate: 0, - id: 'spk_drv_pwr_cap_cap' + id: 'CC12' }) -const spk_drv_bulk_cap_cap = board.add(C_0805_2012Metric, { +// spk_drv.bulk_cap.cap +const CC13 = board.add(C_0805_2012Metric, { translate: pt(3.357, 1.141), rotate: 0, - id: 'spk_drv_bulk_cap_cap' + id: 'CC13' }) -const spk_drv_inp_res = board.add(R_0603_1608Metric, { +// spk_drv.inp_res +const CR9 = board.add(R_0603_1608Metric, { translate: pt(3.219, 1.308), rotate: 0, - id: 'spk_drv_inp_res' + id: 'CR9' }) -const spk_drv_inp_cap = board.add(C_0603_1608Metric, { +// spk_drv.inp_cap +const CC14 = board.add(C_0603_1608Metric, { translate: pt(3.375, 1.308), rotate: 0, - id: 'spk_drv_inp_cap' + id: 'CC14' }) -const spk_drv_inn_res = board.add(R_0603_1608Metric, { +// spk_drv.inn_res +const CR10 = board.add(R_0603_1608Metric, { translate: pt(3.063, 1.405), rotate: 0, - id: 'spk_drv_inn_res' + id: 'CR10' }) -const spk_drv_inn_cap = board.add(C_0603_1608Metric, { +// spk_drv.inn_cap +const CC15 = board.add(C_0603_1608Metric, { translate: pt(3.219, 1.405), rotate: 0, - id: 'spk_drv_inn_cap' + id: 'CC15' }) -const spk_conn = board.add(JST_PH_B2B_PH_K_1x02_P2_00mm_Vertical, { +// spk.conn +const CJ3 = board.add(JST_PH_B2B_PH_K_1x02_P2_00mm_Vertical, { translate: pt(1.156, 1.870), rotate: 0, - id: 'spk_conn' + id: 'CJ3' }) -const v5v_sense_div_top_res = board.add(R_0603_1608Metric, { +// v5v_sense.div.top_res +const CR11 = board.add(R_0603_1608Metric, { translate: pt(1.573, 2.122), rotate: 0, - id: 'v5v_sense_div_top_res' + id: 'CR11' }) -const v5v_sense_div_bottom_res = board.add(R_0603_1608Metric, { +// v5v_sense.div.bottom_res +const CR12 = board.add(R_0603_1608Metric, { translate: pt(1.573, 2.219), rotate: 0, - id: 'v5v_sense_div_bottom_res' + id: 'CR12' }) +board.setNetlist([ + {name: "Cpwr", pads: [["CJ1", "2"], ["CTP1", "1"], ["CU1", "3"], ["CU5", "5"], ["CD5", "2"], ["CD6", "2"], ["CD7", "2"], ["CD8", "2"], ["CD9", "2"], ["CD10", "2"], ["CD11", "2"], ["CD12", "2"], ["CD13", "2"], ["CD14", "2"], ["CD15", "2"], ["CD16", "2"], ["CD17", "2"], ["CD18", "2"], ["CD19", "2"], ["CD20", "2"], ["CD21", "2"], ["CD22", "2"], ["CD23", "2"], ["CD24", "2"], ["CD25", "2"], ["CD26", "2"], ["CD27", "2"], ["CD28", "2"], ["CD29", "2"], ["CD30", "2"], ["CD31", "2"], ["CD32", "2"], ["CD33", "2"], ["CD34", "2"], ["CD35", "2"], ["CD36", "2"], ["CD37", "2"], ["CD38", "2"], ["CD39", "2"], ["CD40", "2"], ["CD41", "2"], ["CD42", "2"], ["CD43", "2"], ["CD44", "2"], ["CD45", "2"], ["CD46", "2"], ["CD47", "2"], ["CD48", "2"], ["CD49", "2"], ["CD50", "2"], ["CD51", "2"], ["CD52", "2"], ["CD53", "2"], ["CD54", "2"], ["CD55", "2"], ["CD56", "2"], ["CD57", "2"], ["CD58", "2"], ["CD59", "2"], ["CD60", "2"], ["CD61", "2"], ["CD62", "2"], ["CD63", "2"], ["CD64", "2"], ["CU6", "1"], ["CU6", "6"], ["CR11", "1"], ["CC1", "1"], ["CC10", "1"], ["CC12", "1"], ["CC13", "1"]]}, + {name: "Cgnd", pads: [["CJ1", "1"], ["CTP2", "1"], ["CU1", "1"], ["CD1", "2"], ["CU2", "1"], ["CU2", "40"], ["CU2", "41"], ["CR2", "2"], ["CR3", "2"], ["CR4", "2"], ["CSW1", "1"], ["CSW2", "1"], ["CSW3", "1"], ["CSW4", "1"], ["CU3", "1"], ["CU3", "5"], ["CU3", "7"], ["CU4", "2"], ["CU4", "3"], ["CU5", "1"], ["CU5", "3"], ["CD5", "4"], ["CD6", "4"], ["CD7", "4"], ["CD8", "4"], ["CD9", "4"], ["CD10", "4"], ["CD11", "4"], ["CD12", "4"], ["CD13", "4"], ["CD14", "4"], ["CD15", "4"], ["CD16", "4"], ["CD17", "4"], ["CD18", "4"], ["CD19", "4"], ["CD20", "4"], ["CD21", "4"], ["CD22", "4"], ["CD23", "4"], ["CD24", "4"], ["CD25", "4"], ["CD26", "4"], ["CD27", "4"], ["CD28", "4"], ["CD29", "4"], ["CD30", "4"], ["CD31", "4"], ["CD32", "4"], ["CD33", "4"], ["CD34", "4"], ["CD35", "4"], ["CD36", "4"], ["CD37", "4"], ["CD38", "4"], ["CD39", "4"], ["CD40", "4"], ["CD41", "4"], ["CD42", "4"], ["CD43", "4"], ["CD44", "4"], ["CD45", "4"], ["CD46", "4"], ["CD47", "4"], ["CD48", "4"], ["CD49", "4"], ["CD50", "4"], ["CD51", "4"], ["CD52", "4"], ["CD53", "4"], ["CD54", "4"], ["CD55", "4"], ["CD56", "4"], ["CD57", "4"], ["CD58", "4"], ["CD59", "4"], ["CD60", "4"], ["CD61", "4"], ["CD62", "4"], ["CD63", "4"], ["CD64", "4"], ["CU6", "7"], ["CU6", "9"], ["CC11", "2"], ["CR12", "2"], ["CC9", "2"], ["CC15", "2"], ["CC1", "2"], ["CC2", "2"], ["CC3", "2"], ["CC4", "2"], ["CJ2", "5"], ["CC6", "2"], ["CC7", "2"], ["CC8", "2"], ["CC10", "2"], ["CC12", "2"], ["CC13", "2"], ["CC5", "2"]]}, + {name: "Cv3v3", pads: [["CU1", "2"], ["CTP3", "1"], ["CD1", "1"], ["CU2", "2"], ["CU3", "2"], ["CU3", "6"], ["CU3", "8"], ["CU4", "1"], ["CC2", "1"], ["CR7", "1"], ["CC3", "1"], ["CC4", "1"], ["CJ2", "1"], ["CR5", "1"], ["CR6", "1"], ["CC7", "1"], ["CC6", "1"], ["CC8", "1"], ["CR1", "1"]]}, + {name: "Cledr.signal", pads: [["CU2", "4"], ["CD2", "2"]]}, + {name: "Cledg.signal", pads: [["CU2", "5"], ["CD3", "2"]]}, + {name: "Cledb.signal", pads: [["CU2", "6"], ["CD4", "2"]]}, + {name: "Csw[0].out", pads: [["CU2", "32"], ["CSW1", "2"]]}, + {name: "Csw[1].out", pads: [["CU2", "33"], ["CSW2", "2"]]}, + {name: "Csw[2].out", pads: [["CU2", "34"], ["CSW3", "2"]]}, + {name: "Csw[3].out", pads: [["CU2", "35"], ["CSW4", "2"]]}, + {name: "Ci2c_chain_0.scl", pads: [["CU2", "9"], ["CU3", "4"], ["CU4", "6"], ["CR5", "2"], ["CTP4", "1"]]}, + {name: "Ci2c_chain_0.sda", pads: [["CU2", "8"], ["CU3", "3"], ["CU4", "4"], ["CR6", "2"], ["CTP5", "1"]]}, + {name: "Crgb_shift.input", pads: [["CU2", "12"], ["CU5", "2"]]}, + {name: "Crgb_shift.output", pads: [["CU5", "4"], ["CD5", "1"], ["CTP6", "1"]]}, + {name: "Cdigit[0].dout", pads: [["CD18", "3"], ["CD19", "1"]]}, + {name: "Cdigit[1].dout", pads: [["CD32", "3"], ["CD63", "1"]]}, + {name: "Cmeta.dout", pads: [["CD64", "3"], ["CD61", "1"]]}, + {name: "Ccenter.dout", pads: [["CD62", "3"], ["CD33", "1"]]}, + {name: "Cdigit[2].dout", pads: [["CD46", "3"], ["CD47", "1"]]}, + {name: "Cspk_chain_0", pads: [["CU2", "31"], ["CR8", "1"]]}, + {name: "Cspk_chain_1", pads: [["CTP7", "1"], ["CC14", "2"], ["CR8", "2"], ["CC11", "1"]]}, + {name: "Cspk_chain_2.a", pads: [["CU6", "8"], ["CJ3", "1"]]}, + {name: "Cspk_chain_2.b", pads: [["CU6", "5"], ["CJ3", "2"]]}, + {name: "Cv5v_sense.output", pads: [["CU2", "7"], ["CR11", "2"], ["CR12", "1"]]}, + {name: "Cmcu.program_uart_node.a_tx", pads: [["CU2", "37"], ["CJ2", "3"]]}, + {name: "Cmcu.program_uart_node.b_tx", pads: [["CU2", "36"], ["CJ2", "4"]]}, + {name: "Cmcu.program_en_node", pads: [["CU2", "3"], ["CJ2", "6"], ["CR1", "2"], ["CC5", "1"]]}, + {name: "Cmcu.program_boot_node", pads: [["CU2", "27"], ["CJ2", "2"]]}, + {name: "Cledr.res.a", pads: [["CR2", "1"], ["CD2", "1"]]}, + {name: "Cledg.res.a", pads: [["CR3", "1"], ["CD3", "1"]]}, + {name: "Cledb.res.a", pads: [["CR4", "1"], ["CD4", "1"]]}, + {name: "Cals.dvi_res.b", pads: [["CR7", "2"], ["CU4", "5"], ["CC9", "1"]]}, + {name: "Cdigit[0].led[0].dout", pads: [["CD5", "3"], ["CD6", "1"]]}, + {name: "Cdigit[0].led[1].dout", pads: [["CD6", "3"], ["CD7", "1"]]}, + {name: "Cdigit[0].led[2].dout", pads: [["CD7", "3"], ["CD8", "1"]]}, + {name: "Cdigit[0].led[3].dout", pads: [["CD8", "3"], ["CD9", "1"]]}, + {name: "Cdigit[0].led[4].dout", pads: [["CD9", "3"], ["CD10", "1"]]}, + {name: "Cdigit[0].led[5].dout", pads: [["CD10", "3"], ["CD11", "1"]]}, + {name: "Cdigit[0].led[6].dout", pads: [["CD11", "3"], ["CD12", "1"]]}, + {name: "Cdigit[0].led[7].dout", pads: [["CD12", "3"], ["CD13", "1"]]}, + {name: "Cdigit[0].led[8].dout", pads: [["CD13", "3"], ["CD14", "1"]]}, + {name: "Cdigit[0].led[9].dout", pads: [["CD14", "3"], ["CD15", "1"]]}, + {name: "Cdigit[0].led[10].dout", pads: [["CD15", "3"], ["CD16", "1"]]}, + {name: "Cdigit[0].led[11].dout", pads: [["CD16", "3"], ["CD17", "1"]]}, + {name: "Cdigit[0].led[12].dout", pads: [["CD17", "3"], ["CD18", "1"]]}, + {name: "Cdigit[1].led[0].dout", pads: [["CD19", "3"], ["CD20", "1"]]}, + {name: "Cdigit[1].led[1].dout", pads: [["CD20", "3"], ["CD21", "1"]]}, + {name: "Cdigit[1].led[2].dout", pads: [["CD21", "3"], ["CD22", "1"]]}, + {name: "Cdigit[1].led[3].dout", pads: [["CD22", "3"], ["CD23", "1"]]}, + {name: "Cdigit[1].led[4].dout", pads: [["CD23", "3"], ["CD24", "1"]]}, + {name: "Cdigit[1].led[5].dout", pads: [["CD24", "3"], ["CD25", "1"]]}, + {name: "Cdigit[1].led[6].dout", pads: [["CD25", "3"], ["CD26", "1"]]}, + {name: "Cdigit[1].led[7].dout", pads: [["CD26", "3"], ["CD27", "1"]]}, + {name: "Cdigit[1].led[8].dout", pads: [["CD27", "3"], ["CD28", "1"]]}, + {name: "Cdigit[1].led[9].dout", pads: [["CD28", "3"], ["CD29", "1"]]}, + {name: "Cdigit[1].led[10].dout", pads: [["CD29", "3"], ["CD30", "1"]]}, + {name: "Cdigit[1].led[11].dout", pads: [["CD30", "3"], ["CD31", "1"]]}, + {name: "Cdigit[1].led[12].dout", pads: [["CD31", "3"], ["CD32", "1"]]}, + {name: "Cdigit[2].led[0].dout", pads: [["CD33", "3"], ["CD34", "1"]]}, + {name: "Cdigit[2].led[1].dout", pads: [["CD34", "3"], ["CD35", "1"]]}, + {name: "Cdigit[2].led[2].dout", pads: [["CD35", "3"], ["CD36", "1"]]}, + {name: "Cdigit[2].led[3].dout", pads: [["CD36", "3"], ["CD37", "1"]]}, + {name: "Cdigit[2].led[4].dout", pads: [["CD37", "3"], ["CD38", "1"]]}, + {name: "Cdigit[2].led[5].dout", pads: [["CD38", "3"], ["CD39", "1"]]}, + {name: "Cdigit[2].led[6].dout", pads: [["CD39", "3"], ["CD40", "1"]]}, + {name: "Cdigit[2].led[7].dout", pads: [["CD40", "3"], ["CD41", "1"]]}, + {name: "Cdigit[2].led[8].dout", pads: [["CD41", "3"], ["CD42", "1"]]}, + {name: "Cdigit[2].led[9].dout", pads: [["CD42", "3"], ["CD43", "1"]]}, + {name: "Cdigit[2].led[10].dout", pads: [["CD43", "3"], ["CD44", "1"]]}, + {name: "Cdigit[2].led[11].dout", pads: [["CD44", "3"], ["CD45", "1"]]}, + {name: "Cdigit[2].led[12].dout", pads: [["CD45", "3"], ["CD46", "1"]]}, + {name: "Cdigit[3].led[0].dout", pads: [["CD47", "3"], ["CD48", "1"]]}, + {name: "Cdigit[3].led[1].dout", pads: [["CD48", "3"], ["CD49", "1"]]}, + {name: "Cdigit[3].led[2].dout", pads: [["CD49", "3"], ["CD50", "1"]]}, + {name: "Cdigit[3].led[3].dout", pads: [["CD50", "3"], ["CD51", "1"]]}, + {name: "Cdigit[3].led[4].dout", pads: [["CD51", "3"], ["CD52", "1"]]}, + {name: "Cdigit[3].led[5].dout", pads: [["CD52", "3"], ["CD53", "1"]]}, + {name: "Cdigit[3].led[6].dout", pads: [["CD53", "3"], ["CD54", "1"]]}, + {name: "Cdigit[3].led[7].dout", pads: [["CD54", "3"], ["CD55", "1"]]}, + {name: "Cdigit[3].led[8].dout", pads: [["CD55", "3"], ["CD56", "1"]]}, + {name: "Cdigit[3].led[9].dout", pads: [["CD56", "3"], ["CD57", "1"]]}, + {name: "Cdigit[3].led[10].dout", pads: [["CD57", "3"], ["CD58", "1"]]}, + {name: "Cdigit[3].led[11].dout", pads: [["CD58", "3"], ["CD59", "1"]]}, + {name: "Cdigit[3].led[12].dout", pads: [["CD59", "3"], ["CD60", "1"]]}, + {name: "Cdigit[3].dout", pads: [["CD60", "3"]]}, + {name: "Ccenter.led[0].dout", pads: [["CD61", "3"], ["CD62", "1"]]}, + {name: "Cmeta.led[0].dout", pads: [["CD63", "3"], ["CD64", "1"]]}, + {name: "Cspk_drv.inp_cap.pos", pads: [["CC14", "1"], ["CR9", "1"]]}, + {name: "Cspk_drv.inp_res.b", pads: [["CR9", "2"], ["CU6", "4"]]}, + {name: "Cspk_drv.inn_cap.pos", pads: [["CC15", "1"], ["CR10", "1"]]}, + {name: "Cspk_drv.inn_res.b", pads: [["CR10", "2"], ["CU6", "3"]]} +]) + const limit0 = pt(-0.07874015748031496, -0.07874015748031496); const limit1 = pt(3.6425196850393706, 2.3822834645669295); const xMin = Math.min(limit0[0], limit1[0]); diff --git a/examples/Simon/Simon.svgpcb.js b/examples/Simon/Simon.svgpcb.js index 0eab6866f..0d5070194 100644 --- a/examples/Simon/Simon.svgpcb.js +++ b/examples/Simon/Simon.svgpcb.js @@ -1,169 +1,248 @@ const board = new PCB(); -const mcu = board.add(Nucleo32, { +// mcu +const U1 = board.add(Nucleo32, { translate: pt(0.365, 0.990), rotate: 0, - id: 'mcu' + id: 'U1' }) -const spk_drv_ic = board.add(SOIC_8_3_9x4_9mm_P1_27mm, { +// spk_drv.ic +const U2 = board.add(SOIC_8_3_9x4_9mm_P1_27mm, { translate: pt(0.915, 1.240), rotate: 0, - id: 'spk_drv_ic' + id: 'U2' }) -const spk_drv_in_cap_cap = board.add(C_0603_1608Metric, { +// spk_drv.in_cap.cap +const C1 = board.add(C_0603_1608Metric, { translate: pt(1.158, 1.163), rotate: 0, - id: 'spk_drv_in_cap_cap' + id: 'C1' }) -const spk_drv_byp_cap = board.add(C_0603_1608Metric, { +// spk_drv.byp_cap +const C2 = board.add(C_0603_1608Metric, { translate: pt(1.158, 1.259), rotate: 0, - id: 'spk_drv_byp_cap' + id: 'C2' }) -const spk_drv_sig_cap = board.add(C_0603_1608Metric, { +// spk_drv.sig_cap +const C3 = board.add(C_0603_1608Metric, { translate: pt(0.828, 1.415), rotate: 0, - id: 'spk_drv_sig_cap' + id: 'C3' }) -const spk_drv_sig_res = board.add(R_0603_1608Metric, { +// spk_drv.sig_res +const R1 = board.add(R_0603_1608Metric, { translate: pt(0.983, 1.415), rotate: 0, - id: 'spk_drv_sig_res' + id: 'R1' }) -const spk_drv_fb_res = board.add(R_0603_1608Metric, { +// spk_drv.fb_res +const R2 = board.add(R_0603_1608Metric, { translate: pt(1.139, 1.415), rotate: 0, - id: 'spk_drv_fb_res' + id: 'R2' }) -const spk_conn = board.add(JST_PH_B2B_PH_K_1x02_P2_00mm_Vertical, { +// spk.conn +const J1 = board.add(JST_PH_B2B_PH_K_1x02_P2_00mm_Vertical, { translate: pt(1.431, 1.264), rotate: 0, - id: 'spk_conn' + id: 'J1' }) -const rgb_package = board.add(LED_LiteOn_LTST_C19HE1WT, { +// rgb.package +const D1 = board.add(LED_LiteOn_LTST_C19HE1WT, { translate: pt(1.766, 1.189), rotate: 0, - id: 'rgb_package' + id: 'D1' }) -const rgb_red_res = board.add(R_0603_1608Metric, { +// rgb.red_res +const R3 = board.add(R_0603_1608Metric, { translate: pt(1.905, 1.163), rotate: 0, - id: 'rgb_red_res' + id: 'R3' }) -const rgb_green_res = board.add(R_0603_1608Metric, { +// rgb.green_res +const R4 = board.add(R_0603_1608Metric, { translate: pt(1.783, 1.312), rotate: 0, - id: 'rgb_green_res' + id: 'R4' }) -const rgb_blue_res = board.add(R_0603_1608Metric, { +// rgb.blue_res +const R5 = board.add(R_0603_1608Metric, { translate: pt(1.939, 1.312), rotate: 0, - id: 'rgb_blue_res' + id: 'R5' }) -const sw_package = board.add(SW_Push_SPST_NO_Alps_SKRK, { +// sw.package +const SW1 = board.add(SW_Push_SPST_NO_Alps_SKRK, { translate: pt(2.223, 1.201), rotate: 0, - id: 'sw_package' + id: 'SW1' }) -const sw_pull_res = board.add(R_0603_1608Metric, { - translate: pt(1.062, 1.590), rotate: 0, - id: 'sw_pull_res' +// sw_pull.res +const R6 = board.add(R_0603_1608Metric, { + translate: pt(2.508, 1.163), rotate: 0, + id: 'R6' }) -const btn_0_ = board.add(PinHeader_1x04_P2_54mm_Vertical, { +// btn[0] +const J2 = board.add(PinHeader_1x04_P2_54mm_Vertical, { translate: pt(1.395, 0.937), rotate: 0, - id: 'btn_0_' + id: 'J2' }) -const btn_pull_0__res = board.add(R_0603_1608Metric, { +// btn_pull[0].res +const R7 = board.add(R_0603_1608Metric, { translate: pt(0.828, 1.590), rotate: 0, - id: 'btn_pull_0__res' + id: 'R7' }) -const btn_1_ = board.add(PinHeader_1x04_P2_54mm_Vertical, { +// btn[1] +const J3 = board.add(PinHeader_1x04_P2_54mm_Vertical, { translate: pt(1.576, 0.937), rotate: 0, - id: 'btn_1_' + id: 'J3' }) -const btn_pull_1__res = board.add(R_0603_1608Metric, { - translate: pt(1.531, 1.590), rotate: 0, - id: 'btn_pull_1__res' +// btn_pull[1].res +const R8 = board.add(R_0603_1608Metric, { + translate: pt(1.062, 1.590), rotate: 0, + id: 'R8' }) -const btn_2_ = board.add(PinHeader_1x04_P2_54mm_Vertical, { +// btn[2] +const J4 = board.add(PinHeader_1x04_P2_54mm_Vertical, { translate: pt(1.757, 0.937), rotate: 0, - id: 'btn_2_' + id: 'J4' }) -const btn_pull_2__res = board.add(R_0603_1608Metric, { +// btn_pull[2].res +const R9 = board.add(R_0603_1608Metric, { translate: pt(1.297, 1.590), rotate: 0, - id: 'btn_pull_2__res' + id: 'R9' }) -const btn_3_ = board.add(PinHeader_1x04_P2_54mm_Vertical, { +// btn[3] +const J5 = board.add(PinHeader_1x04_P2_54mm_Vertical, { translate: pt(1.939, 0.937), rotate: 0, - id: 'btn_3_' + id: 'J5' }) -const btn_pull_3__res = board.add(R_0603_1608Metric, { - translate: pt(2.508, 1.163), rotate: 0, - id: 'btn_pull_3__res' +// btn_pull[3].res +const R10 = board.add(R_0603_1608Metric, { + translate: pt(1.531, 1.590), rotate: 0, + id: 'R10' }) -const pwr_ic = board.add(SOT_23_5, { +// pwr.ic +const U3 = board.add(SOT_23_5, { translate: pt(2.130, 0.634), rotate: 0, - id: 'pwr_ic' + id: 'U3' }) -const pwr_fb_div_top_res = board.add(R_0603_1608Metric, { +// pwr.fb.div.top_res +const R11 = board.add(R_0603_1608Metric, { translate: pt(2.284, 0.769), rotate: 0, - id: 'pwr_fb_div_top_res' + id: 'R11' }) -const pwr_fb_div_bottom_res = board.add(R_0603_1608Metric, { +// pwr.fb.div.bottom_res +const R12 = board.add(R_0603_1608Metric, { translate: pt(2.107, 0.875), rotate: 0, - id: 'pwr_fb_div_bottom_res' + id: 'R12' }) -const pwr_power_path_inductor = board.add(L_0805_2012Metric, { +// pwr.power_path.inductor +const L1 = board.add(L_0805_2012Metric, { translate: pt(2.118, 0.774), rotate: 0, - id: 'pwr_power_path_inductor' + id: 'L1' }) -const pwr_power_path_in_cap_cap = board.add(C_0603_1608Metric, { +// pwr.power_path.in_cap.cap +const C4 = board.add(C_0603_1608Metric, { translate: pt(2.263, 0.875), rotate: 0, - id: 'pwr_power_path_in_cap_cap' + id: 'C4' }) -const pwr_power_path_out_cap_cap = board.add(C_0603_1608Metric, { +// pwr.power_path.out_cap.cap +const C5 = board.add(C_0603_1608Metric, { translate: pt(2.419, 0.875), rotate: 0, - id: 'pwr_power_path_out_cap_cap' + id: 'C5' }) -const pwr_rect = board.add(D_SOD_323, { +// pwr.rect +const D2 = board.add(D_SOD_323, { translate: pt(2.313, 0.604), rotate: 0, - id: 'pwr_rect' -}) -const btn_drv_0__pre = board.add(SOT_23, { - translate: pt(1.955, 0.382), rotate: 0, - id: 'btn_drv_0__pre' -}) -const btn_drv_0__pull = board.add(R_0603_1608Metric, { - translate: pt(2.128, 0.344), rotate: 0, - id: 'btn_drv_0__pull' -}) -const btn_drv_0__drv = board.add(TO_252_2, { - translate: pt(2.131, 0.138), rotate: 0, - id: 'btn_drv_0__drv' -}) -const btn_drv_1__pre = board.add(SOT_23, { - translate: pt(0.845, 0.949), rotate: 0, - id: 'btn_drv_1__pre' -}) -const btn_drv_1__pull = board.add(R_0603_1608Metric, { - translate: pt(1.018, 0.911), rotate: 0, - id: 'btn_drv_1__pull' + id: 'D2' }) -const btn_drv_1__drv = board.add(TO_252_2, { - translate: pt(1.021, 0.705), rotate: 0, - id: 'btn_drv_1__drv' -}) -const btn_drv_2__pre = board.add(SOT_23, { +// btn_drv[0].pre +const Q1 = board.add(SOT_23, { translate: pt(0.845, 0.382), rotate: 0, - id: 'btn_drv_2__pre' + id: 'Q1' }) -const btn_drv_2__pull = board.add(R_0603_1608Metric, { +// btn_drv[0].pull +const R13 = board.add(R_0603_1608Metric, { translate: pt(1.018, 0.344), rotate: 0, - id: 'btn_drv_2__pull' + id: 'R13' }) -const btn_drv_2__drv = board.add(TO_252_2, { +// btn_drv[0].drv +const Q2 = board.add(TO_252_2, { translate: pt(1.021, 0.138), rotate: 0, - id: 'btn_drv_2__drv' + id: 'Q2' }) -const btn_drv_3__pre = board.add(SOT_23, { +// btn_drv[1].pre +const Q3 = board.add(SOT_23, { translate: pt(1.400, 0.382), rotate: 0, - id: 'btn_drv_3__pre' + id: 'Q3' }) -const btn_drv_3__pull = board.add(R_0603_1608Metric, { +// btn_drv[1].pull +const R14 = board.add(R_0603_1608Metric, { translate: pt(1.573, 0.344), rotate: 0, - id: 'btn_drv_3__pull' + id: 'R14' }) -const btn_drv_3__drv = board.add(TO_252_2, { +// btn_drv[1].drv +const Q4 = board.add(TO_252_2, { translate: pt(1.576, 0.138), rotate: 0, - id: 'btn_drv_3__drv' + id: 'Q4' +}) +// btn_drv[2].pre +const Q5 = board.add(SOT_23, { + translate: pt(1.955, 0.382), rotate: 0, + id: 'Q5' +}) +// btn_drv[2].pull +const R15 = board.add(R_0603_1608Metric, { + translate: pt(2.128, 0.344), rotate: 0, + id: 'R15' +}) +// btn_drv[2].drv +const Q6 = board.add(TO_252_2, { + translate: pt(2.131, 0.138), rotate: 0, + id: 'Q6' }) +// btn_drv[3].pre +const Q7 = board.add(SOT_23, { + translate: pt(0.845, 0.949), rotate: 0, + id: 'Q7' +}) +// btn_drv[3].pull +const R16 = board.add(R_0603_1608Metric, { + translate: pt(1.018, 0.911), rotate: 0, + id: 'R16' +}) +// btn_drv[3].drv +const Q8 = board.add(TO_252_2, { + translate: pt(1.021, 0.705), rotate: 0, + id: 'Q8' +}) + +board.setNetlist([ + {name: "v5v", pads: [["U1", "19"], ["U2", "6"], ["U3", "5"], ["U3", "4"], ["C1", "1"], ["L1", "1"], ["C4", "1"]]}, + {name: "v3v3", pads: [["U1", "29"], ["D1", "2"], ["R6", "1"], ["R7", "1"], ["R8", "1"], ["R9", "1"], ["R10", "1"]]}, + {name: "gnd", pads: [["U1", "4"], ["U1", "17"], ["J2", "2"], ["J2", "4"], ["J3", "2"], ["J3", "4"], ["J4", "2"], ["J4", "4"], ["J5", "2"], ["J5", "4"], ["U2", "1"], ["U2", "7"], ["SW1", "2"], ["U3", "2"], ["Q1", "2"], ["Q3", "2"], ["Q5", "2"], ["Q7", "2"], ["C2", "2"], ["C1", "2"], ["R12", "2"], ["C4", "2"], ["C5", "2"]]}, + {name: "v12", pads: [["R13", "1"], ["Q2", "3"], ["R14", "1"], ["Q4", "3"], ["R15", "1"], ["Q6", "3"], ["R16", "1"], ["Q8", "3"], ["D2", "1"], ["R11", "1"], ["C5", "1"]]}, + {name: "spk_drv.sig", pads: [["U1", "24"], ["C3", "2"]]}, + {name: "spk_drv.spk.a", pads: [["U2", "5"], ["J1", "1"], ["R2", "2"]]}, + {name: "spk_drv.spk.b", pads: [["U2", "8"], ["J1", "2"]]}, + {name: "mcu.gpio.rgb_red", pads: [["U1", "15"], ["R3", "2"]]}, + {name: "mcu.gpio.rgb_green", pads: [["U1", "14"], ["R4", "2"]]}, + {name: "mcu.gpio.rgb_blue", pads: [["U1", "13"], ["R5", "2"]]}, + {name: "sw.out", pads: [["U1", "27"], ["SW1", "1"], ["R6", "2"]]}, + {name: "btn_pull[0].io", pads: [["J2", "3"], ["U1", "6"], ["R7", "2"]]}, + {name: "btn_pull[1].io", pads: [["J3", "3"], ["U1", "8"], ["R8", "2"]]}, + {name: "btn_pull[2].io", pads: [["J4", "3"], ["U1", "10"], ["R9", "2"]]}, + {name: "btn_pull[3].io", pads: [["J5", "3"], ["U1", "12"], ["R10", "2"]]}, + {name: "btn_drv[0].control", pads: [["U1", "5"], ["Q1", "1"]]}, + {name: "btn_drv[0].output", pads: [["Q2", "2"], ["J2", "1"]]}, + {name: "btn_drv[1].control", pads: [["U1", "7"], ["Q3", "1"]]}, + {name: "btn_zeroed_current[1]", pads: [["Q4", "2"], ["J3", "1"]]}, + {name: "btn_drv[2].control", pads: [["U1", "9"], ["Q5", "1"]]}, + {name: "btn_zeroed_current[2]", pads: [["Q6", "2"], ["J4", "1"]]}, + {name: "btn_drv[3].control", pads: [["U1", "11"], ["Q7", "1"]]}, + {name: "btn_zeroed_current[3]", pads: [["Q8", "2"], ["J5", "1"]]}, + {name: "spk_drv.sig_cap.pos", pads: [["C3", "1"], ["R1", "1"]]}, + {name: "spk_drv.sig_res.b", pads: [["R1", "2"], ["R2", "1"], ["U2", "4"]]}, + {name: "spk_drv.byp_cap.pos", pads: [["C2", "1"], ["U2", "3"], ["U2", "2"]]}, + {name: "rgb.red_res.a", pads: [["R3", "1"], ["D1", "3"]]}, + {name: "rgb.green_res.a", pads: [["R4", "1"], ["D1", "4"]]}, + {name: "rgb.blue_res.a", pads: [["R5", "1"], ["D1", "1"]]}, + {name: "pwr.fb.output", pads: [["U3", "3"], ["R11", "2"], ["R12", "1"]]}, + {name: "pwr.power_path.switch", pads: [["U3", "1"], ["L1", "2"], ["D2", "2"]]}, + {name: "btn_drv[0].pre.drain", pads: [["Q1", "3"], ["R13", "2"], ["Q2", "1"]]}, + {name: "btn_drv[1].pre.drain", pads: [["Q3", "3"], ["R14", "2"], ["Q4", "1"]]}, + {name: "btn_drv[2].pre.drain", pads: [["Q5", "3"], ["R15", "2"], ["Q6", "1"]]}, + {name: "btn_drv[3].pre.drain", pads: [["Q7", "3"], ["R16", "2"], ["Q8", "1"]]} +]) const limit0 = pt(-0.07874015748031496, -0.07874015748031496); const limit1 = pt(2.6842519685039368, 2.0192913385826774); diff --git a/examples/SwdDebugger/SwdDebugger.svgpcb.js b/examples/SwdDebugger/SwdDebugger.svgpcb.js index cf87d1300..f9bd356cf 100644 --- a/examples/SwdDebugger/SwdDebugger.svgpcb.js +++ b/examples/SwdDebugger/SwdDebugger.svgpcb.js @@ -1,170 +1,246 @@ const board = new PCB(); -const jlc_th_th1 = board.add(JlcToolingHole_1_152mm, { +// jlc_th.th1 +const SH1 = board.add(JlcToolingHole_1_152mm, { translate: pt(1.635, 1.158), rotate: 0, - id: 'jlc_th_th1' + id: 'SH1' }) -const jlc_th_th2 = board.add(JlcToolingHole_1_152mm, { +// jlc_th.th2 +const SH2 = board.add(JlcToolingHole_1_152mm, { translate: pt(1.674, 1.158), rotate: 0, - id: 'jlc_th_th2' + id: 'SH2' }) -const jlc_th_th3 = board.add(JlcToolingHole_1_152mm, { +// jlc_th.th3 +const SH3 = board.add(JlcToolingHole_1_152mm, { translate: pt(1.635, 1.198), rotate: 0, - id: 'jlc_th_th3' + id: 'SH3' }) -const usb_conn = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { +// usb.conn +const SJ1 = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { translate: pt(1.111, 0.165), rotate: 0, - id: 'usb_conn' + id: 'SJ1' }) -const usb_cc_pull_cc1_res = board.add(R_0402_1005Metric, { +// usb.cc_pull.cc1.res +const SR1 = board.add(R_0402_1005Metric, { translate: pt(1.396, 0.019), rotate: 0, - id: 'usb_cc_pull_cc1_res' + id: 'SR1' }) -const usb_cc_pull_cc2_res = board.add(R_0402_1005Metric, { +// usb.cc_pull.cc2.res +const SR2 = board.add(R_0402_1005Metric, { translate: pt(1.396, 0.095), rotate: 0, - id: 'usb_cc_pull_cc2_res' + id: 'SR2' }) -const vusb_protect_diode = board.add(D_SOD_323, { +// vusb_protect.diode +const SD1 = board.add(D_SOD_323, { translate: pt(1.263, 1.196), rotate: 0, - id: 'vusb_protect_diode' + id: 'SD1' }) -const usb_reg_ic = board.add(SOT_23_5, { - translate: pt(0.900, 0.816), rotate: 0, - id: 'usb_reg_ic' -}) -const usb_reg_in_cap_cap = board.add(C_0402_1005Metric, { - translate: pt(1.029, 0.940), rotate: 0, - id: 'usb_reg_in_cap_cap' -}) -const usb_reg_out_cap_cap = board.add(C_0805_2012Metric, { - translate: pt(0.887, 0.961), rotate: 0, - id: 'usb_reg_out_cap_cap' -}) -const target_reg_ic = board.add(SOT_23_5, { +// usb_reg.ic +const SU1 = board.add(SOT_23_5, { translate: pt(0.537, 0.816), rotate: 0, - id: 'target_reg_ic' + id: 'SU1' }) -const target_reg_in_cap_cap = board.add(C_0402_1005Metric, { +// usb_reg.in_cap.cap +const SC1 = board.add(C_0402_1005Metric, { translate: pt(0.666, 0.940), rotate: 0, - id: 'target_reg_in_cap_cap' + id: 'SC1' }) -const target_reg_out_cap_cap = board.add(C_0805_2012Metric, { +// usb_reg.out_cap.cap +const SC2 = board.add(C_0805_2012Metric, { translate: pt(0.524, 0.961), rotate: 0, - id: 'target_reg_out_cap_cap' + id: 'SC2' +}) +// target_reg.ic +const SU2 = board.add(SOT_23_5, { + translate: pt(0.900, 0.816), rotate: 0, + id: 'SU2' }) -const mcu_swd_conn = board.add(PinHeader_2x05_P1_27mm_Vertical_SMD, { +// target_reg.in_cap.cap +const SC3 = board.add(C_0402_1005Metric, { + translate: pt(1.029, 0.940), rotate: 0, + id: 'SC3' +}) +// target_reg.out_cap.cap +const SC4 = board.add(C_0805_2012Metric, { + translate: pt(0.887, 0.961), rotate: 0, + id: 'SC4' +}) +// mcu.swd.conn +const SJ2 = board.add(PinHeader_2x05_P1_27mm_Vertical_SMD, { translate: pt(0.614, 0.146), rotate: 0, - id: 'mcu_swd_conn' + id: 'SJ2' }) -const mcu_ic = board.add(LQFP_48_7x7mm_P0_5mm, { +// mcu.ic +const SU3 = board.add(LQFP_48_7x7mm_P0_5mm, { translate: pt(0.203, 0.203), rotate: 0, - id: 'mcu_ic' + id: 'SU3' }) -const mcu_pwr_cap_0__cap = board.add(C_0805_2012Metric, { +// mcu.pwr_cap[0].cap +const SC5 = board.add(C_0805_2012Metric, { translate: pt(0.256, 0.483), rotate: 0, - id: 'mcu_pwr_cap_0__cap' + id: 'SC5' }) -const mcu_pwr_cap_1__cap = board.add(C_0402_1005Metric, { +// mcu.pwr_cap[1].cap +const SC6 = board.add(C_0402_1005Metric, { translate: pt(0.511, 0.463), rotate: 0, - id: 'mcu_pwr_cap_1__cap' + id: 'SC6' }) -const mcu_pwr_cap_2__cap = board.add(C_0402_1005Metric, { +// mcu.pwr_cap[2].cap +const SC7 = board.add(C_0402_1005Metric, { translate: pt(0.622, 0.463), rotate: 0, - id: 'mcu_pwr_cap_2__cap' + id: 'SC7' }) -const mcu_pwr_cap_3__cap = board.add(C_0402_1005Metric, { +// mcu.pwr_cap[3].cap +const SC8 = board.add(C_0402_1005Metric, { translate: pt(0.733, 0.463), rotate: 0, - id: 'mcu_pwr_cap_3__cap' + id: 'SC8' }) -const mcu_vdda_cap_0_cap = board.add(C_0402_1005Metric, { +// mcu.vdda_cap_0.cap +const SC9 = board.add(C_0402_1005Metric, { translate: pt(0.036, 0.613), rotate: 0, - id: 'mcu_vdda_cap_0_cap' + id: 'SC9' }) -const mcu_vdda_cap_1_cap = board.add(C_0402_1005Metric, { +// mcu.vdda_cap_1.cap +const SC10 = board.add(C_0402_1005Metric, { translate: pt(0.147, 0.613), rotate: 0, - id: 'mcu_vdda_cap_1_cap' + id: 'SC10' }) -const mcu_usb_pull_dp = board.add(R_0402_1005Metric, { +// mcu.usb_pull.dp +const SR3 = board.add(R_0402_1005Metric, { translate: pt(0.399, 0.463), rotate: 0, - id: 'mcu_usb_pull_dp' + id: 'SR3' }) -const mcu_crystal = board.add(Resonator_SMD_Murata_CSTxExxV_3Pin_3_0x1_1mm, { +// mcu.crystal +const SU4 = board.add(Resonator_SMD_Murata_CSTxExxV_3Pin_3_0x1_1mm, { translate: pt(0.079, 0.508), rotate: 0, - id: 'mcu_crystal' + id: 'SU4' }) -const usb_esd = board.add(SOT_23, { +// usb_esd +const SU5 = board.add(SOT_23, { translate: pt(1.520, 1.225), rotate: 0, - id: 'usb_esd' + id: 'SU5' }) -const led_tgt_package = board.add(LED_0603_1608Metric, { - translate: pt(0.832, 1.187), rotate: 0, - id: 'led_tgt_package' -}) -const led_tgt_res = board.add(R_0402_1005Metric, { - translate: pt(0.810, 1.274), rotate: 0, - id: 'led_tgt_res' -}) -const led_usb_package = board.add(LED_0603_1608Metric, { +// led_tgt.package +const SD2 = board.add(LED_0603_1608Metric, { translate: pt(0.362, 1.187), rotate: 0, - id: 'led_usb_package' + id: 'SD2' }) -const led_usb_res = board.add(R_0402_1005Metric, { +// led_tgt.res +const SR4 = board.add(R_0402_1005Metric, { translate: pt(0.341, 1.274), rotate: 0, - id: 'led_usb_res' + id: 'SR4' }) -const en_pull_res = board.add(R_0402_1005Metric, { - translate: pt(0.228, 1.485), rotate: 0, - id: 'en_pull_res' +// led_usb.package +const SD3 = board.add(LED_0603_1608Metric, { + translate: pt(0.597, 1.187), rotate: 0, + id: 'SD3' +}) +// led_usb.res +const SR5 = board.add(R_0402_1005Metric, { + translate: pt(0.575, 1.274), rotate: 0, + id: 'SR5' +}) +// en_pull.res +const SR6 = board.add(R_0402_1005Metric, { + translate: pt(0.037, 1.485), rotate: 0, + id: 'SR6' }) -const target_drv_swclk_res = board.add(R_0402_1005Metric, { +// target_drv.swclk_res +const SR7 = board.add(R_0402_1005Metric, { translate: pt(0.037, 1.177), rotate: 0, - id: 'target_drv_swclk_res' + id: 'SR7' }) -const target_drv_swdio_res = board.add(R_0402_1005Metric, { +// target_drv.swdio_res +const SR8 = board.add(R_0402_1005Metric, { translate: pt(0.149, 1.177), rotate: 0, - id: 'target_drv_swdio_res' + id: 'SR8' }) -const target_drv_swdio_drv_res = board.add(R_0402_1005Metric, { +// target_drv.swdio_drv_res +const SR9 = board.add(R_0402_1005Metric, { translate: pt(0.037, 1.253), rotate: 0, - id: 'target_drv_swdio_drv_res' + id: 'SR9' }) -const target_drv_reset_res = board.add(R_0402_1005Metric, { +// target_drv.reset_res +const SR10 = board.add(R_0402_1005Metric, { translate: pt(0.149, 1.253), rotate: 0, - id: 'target_drv_reset_res' + id: 'SR10' }) -const target_drv_swo_res = board.add(R_0402_1005Metric, { +// target_drv.swo_res +const SR11 = board.add(R_0402_1005Metric, { translate: pt(0.037, 1.330), rotate: 0, - id: 'target_drv_swo_res' + id: 'SR11' }) -const reset_pull_res = board.add(R_0402_1005Metric, { - translate: pt(0.037, 1.485), rotate: 0, - id: 'reset_pull_res' +// reset_pull.res +const SR12 = board.add(R_0402_1005Metric, { + translate: pt(0.228, 1.485), rotate: 0, + id: 'SR12' }) -const reset_sw_package = board.add(SW_SPST_SKQG_WithoutStem, { +// reset_sw.package +const SSW1 = board.add(SW_SPST_SKQG_WithoutStem, { translate: pt(1.350, 0.861), rotate: 0, - id: 'reset_sw_package' + id: 'SSW1' }) -const target_conn = board.add(PinHeader_2x05_P1_27mm_Vertical_SMD, { +// target.conn +const SJ3 = board.add(PinHeader_2x05_P1_27mm_Vertical_SMD, { translate: pt(0.169, 0.894), rotate: 0, - id: 'target_conn' + id: 'SJ3' }) -const led_target_package = board.add(LED_0603_1608Metric, { - translate: pt(0.597, 1.187), rotate: 0, - id: 'led_target_package' +// led_target.package +const SD4 = board.add(LED_0603_1608Metric, { + translate: pt(0.832, 1.187), rotate: 0, + id: 'SD4' }) -const led_target_res = board.add(R_0402_1005Metric, { - translate: pt(0.575, 1.274), rotate: 0, - id: 'led_target_res' +// led_target.res +const SR13 = board.add(R_0402_1005Metric, { + translate: pt(0.810, 1.274), rotate: 0, + id: 'SR13' }) -const target_sense_div_top_res = board.add(R_0402_1005Metric, { +// target_sense.div.top_res +const SR14 = board.add(R_0402_1005Metric, { translate: pt(1.045, 1.177), rotate: 0, - id: 'target_sense_div_top_res' + id: 'SR14' }) -const target_sense_div_bottom_res = board.add(R_0402_1005Metric, { +// target_sense.div.bottom_res +const SR15 = board.add(R_0402_1005Metric, { translate: pt(1.045, 1.253), rotate: 0, - id: 'target_sense_div_bottom_res' + id: 'SR15' }) +board.setNetlist([ + {name: "Svusb", pads: [["SJ1", "A4"], ["SJ1", "B9"], ["SJ1", "B4"], ["SJ1", "A9"], ["SD1", "1"], ["SU1", "1"], ["SU2", "1"], ["SU1", "3"], ["SC1", "1"], ["SC3", "1"]]}, + {name: "Sgnd", pads: [["SU5", "3"], ["SJ1", "A1"], ["SJ1", "B12"], ["SJ1", "B1"], ["SJ1", "A12"], ["SD1", "2"], ["SU1", "2"], ["SU2", "2"], ["SU3", "8"], ["SU3", "23"], ["SU3", "35"], ["SU3", "47"], ["SU3", "44"], ["SU4", "2"], ["SR4", "2"], ["SR5", "2"], ["SSW1", "2"], ["SR13", "2"], ["SR15", "2"], ["SJ1", "S1"], ["SJ3", "3"], ["SJ3", "5"], ["SJ3", "9"], ["SC1", "2"], ["SC2", "2"], ["SC3", "2"], ["SC4", "2"], ["SC5", "2"], ["SC6", "2"], ["SC7", "2"], ["SC8", "2"], ["SC9", "2"], ["SC10", "2"], ["SR1", "1"], ["SR2", "1"], ["SJ2", "3"], ["SJ2", "5"], ["SJ2", "9"]]}, + {name: "Sv3v3", pads: [["SU1", "5"], ["SU3", "1"], ["SU3", "9"], ["SU3", "24"], ["SU3", "36"], ["SU3", "48"], ["SR6", "1"], ["SR12", "1"], ["SC2", "1"], ["SJ2", "1"], ["SC5", "1"], ["SC6", "1"], ["SC7", "1"], ["SC8", "1"], ["SC9", "1"], ["SC10", "1"], ["SR3", "1"]]}, + {name: "Svtarget", pads: [["SU2", "5"], ["SJ3", "1"], ["SD4", "2"], ["SR14", "1"], ["SC4", "1"]]}, + {name: "Susb_chain_0.d_P", pads: [["SJ1", "A6"], ["SJ1", "B6"], ["SU5", "2"], ["SU3", "33"], ["SR3", "2"]]}, + {name: "Susb_chain_0.d_N", pads: [["SJ1", "A7"], ["SJ1", "B7"], ["SU5", "1"], ["SU3", "32"]]}, + {name: "Sled_tgt.signal", pads: [["SU3", "30"], ["SD2", "2"]]}, + {name: "Sled_usb.signal", pads: [["SU3", "42"], ["SD3", "2"]]}, + {name: "Sen_pull.io", pads: [["SU3", "28"], ["SU2", "3"], ["SR6", "2"]]}, + {name: "Starget_drv.swclk_in", pads: [["SU3", "26"], ["SR7", "1"]]}, + {name: "Starget_drv.swdio_out", pads: [["SU3", "27"], ["SR8", "1"], ["SR9", "2"]]}, + {name: "Starget_drv.swdio_in", pads: [["SU3", "25"], ["SR9", "1"]]}, + {name: "Sreset_pull.io", pads: [["SU3", "18"], ["SR12", "2"], ["SSW1", "1"], ["SR10", "1"]]}, + {name: "Starget_drv.swo_out", pads: [["SU3", "31"], ["SR11", "1"]]}, + {name: "Starget_drv.swd.swdio", pads: [["SJ3", "2"], ["SR8", "2"]]}, + {name: "Starget_drv.swd.swclk", pads: [["SR7", "2"], ["SJ3", "4"]]}, + {name: "Starget_drv.swo_in", pads: [["SR11", "2"], ["SJ3", "6"]]}, + {name: "Starget_drv.reset_out", pads: [["SR10", "2"], ["SJ3", "10"]]}, + {name: "Starget_sense.output", pads: [["SU3", "10"], ["SR14", "2"], ["SR15", "1"]]}, + {name: "Susb.conn.cc.cc1", pads: [["SJ1", "A5"], ["SR1", "2"]]}, + {name: "Susb.conn.cc.cc2", pads: [["SJ1", "B5"], ["SR2", "2"]]}, + {name: "Smcu.xtal_node.xi", pads: [["SU3", "5"], ["SU4", "1"]]}, + {name: "Smcu.xtal_node.xo", pads: [["SU3", "6"], ["SU4", "3"]]}, + {name: "Smcu.swd_node.swdio", pads: [["SU3", "34"], ["SJ2", "2"]]}, + {name: "Smcu.swd_node.swclk", pads: [["SU3", "37"], ["SJ2", "4"]]}, + {name: "Smcu.reset_node", pads: [["SU3", "7"], ["SJ2", "10"]]}, + {name: "Smcu.swd.swo", pads: [["SU3", "39"], ["SJ2", "6"]]}, + {name: "Smcu.swd.tdi", pads: [["SJ2", "8"]]}, + {name: "Sled_tgt.res.a", pads: [["SR4", "1"], ["SD2", "1"]]}, + {name: "Sled_usb.res.a", pads: [["SR5", "1"], ["SD3", "1"]]}, + {name: "Starget.tdi", pads: [["SJ3", "8"]]}, + {name: "Sled_target.res.a", pads: [["SR13", "1"], ["SD4", "1"]]} +]) + const limit0 = pt(-0.07874015748031496, -0.07874015748031496); const limit1 = pt(1.792322834645669, 1.6212598425196851); const xMin = Math.min(limit0[0], limit1[0]); diff --git a/examples/TestBlinkyArray/TestBlinkyArray.svgpcb.js b/examples/TestBlinkyArray/TestBlinkyArray.svgpcb.js index 2744a14df..41ef228ab 100644 --- a/examples/TestBlinkyArray/TestBlinkyArray.svgpcb.js +++ b/examples/TestBlinkyArray/TestBlinkyArray.svgpcb.js @@ -1,114 +1,168 @@ const board = new PCB(); -const usb_conn = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { +// usb.conn +const J1 = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { translate: pt(2.750, 0.165), rotate: 0, - id: 'usb_conn' + id: 'J1' }) -const usb_cc_pull_cc1_res = board.add(R_0603_1608Metric, { +// usb.cc_pull.cc1.res +const R1 = board.add(R_0603_1608Metric, { translate: pt(2.598, 0.420), rotate: 0, - id: 'usb_cc_pull_cc1_res' + id: 'R1' }) -const usb_cc_pull_cc2_res = board.add(R_0603_1608Metric, { +// usb.cc_pull.cc2.res +const R2 = board.add(R_0603_1608Metric, { translate: pt(2.754, 0.420), rotate: 0, - id: 'usb_cc_pull_cc2_res' + id: 'R2' }) -const reg_ic = board.add(SOT_23_6, { +// reg.ic +const U1 = board.add(SOT_23_6, { translate: pt(0.081, 1.809), rotate: 0, - id: 'reg_ic' + id: 'U1' }) -const reg_fb_div_top_res = board.add(R_0603_1608Metric, { +// reg.fb.div.top_res +const R3 = board.add(R_0603_1608Metric, { translate: pt(0.409, 1.944), rotate: 0, - id: 'reg_fb_div_top_res' + id: 'R3' }) -const reg_fb_div_bottom_res = board.add(R_0603_1608Metric, { +// reg.fb.div.bottom_res +const R4 = board.add(R_0603_1608Metric, { translate: pt(0.058, 2.061), rotate: 0, - id: 'reg_fb_div_bottom_res' + id: 'R4' }) -const reg_hf_in_cap_cap = board.add(C_0603_1608Metric, { +// reg.hf_in_cap.cap +const C1 = board.add(C_0603_1608Metric, { translate: pt(0.214, 2.061), rotate: 0, - id: 'reg_hf_in_cap_cap' + id: 'C1' }) -const reg_vbst_cap = board.add(C_0603_1608Metric, { +// reg.vbst_cap +const C2 = board.add(C_0603_1608Metric, { translate: pt(0.370, 2.061), rotate: 0, - id: 'reg_vbst_cap' + id: 'C2' }) -const reg_power_path_inductor = board.add(L_0805_2012Metric, { +// reg.power_path.inductor +const L1 = board.add(L_0805_2012Metric, { translate: pt(0.242, 1.949), rotate: 0, - id: 'reg_power_path_inductor' + id: 'L1' }) -const reg_power_path_in_cap_cap = board.add(C_0805_2012Metric, { +// reg.power_path.in_cap.cap +const C3 = board.add(C_0805_2012Metric, { translate: pt(0.268, 1.781), rotate: 0, - id: 'reg_power_path_in_cap_cap' + id: 'C3' }) -const reg_power_path_out_cap_cap = board.add(C_0805_2012Metric, { +// reg.power_path.out_cap.cap +const C4 = board.add(C_0805_2012Metric, { translate: pt(0.067, 1.954), rotate: 0, - id: 'reg_power_path_out_cap_cap' + id: 'C4' }) -const mcu_ic = board.add(ESP32_WROOM_32, { +// mcu.ic +const U2 = board.add(ESP32_WROOM_32, { translate: pt(0.945, 0.414), rotate: 0, - id: 'mcu_ic' + id: 'U2' }) -const mcu_vcc_cap0_cap = board.add(C_1206_3216Metric, { +// mcu.vcc_cap0.cap +const C5 = board.add(C_1206_3216Metric, { translate: pt(2.020, 0.789), rotate: 0, - id: 'mcu_vcc_cap0_cap' + id: 'C5' }) -const mcu_vcc_cap1_cap = board.add(C_0603_1608Metric, { +// mcu.vcc_cap1.cap +const C6 = board.add(C_0603_1608Metric, { translate: pt(2.208, 0.773), rotate: 0, - id: 'mcu_vcc_cap1_cap' + id: 'C6' }) -const mcu_prog_conn = board.add(PinHeader_1x04_P2_54mm_Vertical, { +// mcu.prog.conn +const J2 = board.add(PinHeader_1x04_P2_54mm_Vertical, { translate: pt(2.000, 0.370), rotate: 0, - id: 'mcu_prog_conn' + id: 'J2' }) -const mcu_boot_package = board.add(SW_SPST_SKQG_WithoutStem, { +// mcu.boot.package +const SW1 = board.add(SW_SPST_SKQG_WithoutStem, { translate: pt(2.096, 0.593), rotate: 0, - id: 'mcu_boot_package' + id: 'SW1' }) -const mcu_en_pull_rc_r = board.add(R_0603_1608Metric, { +// mcu.en_pull.rc.r +const R5 = board.add(R_0603_1608Metric, { translate: pt(2.364, 0.773), rotate: 0, - id: 'mcu_en_pull_rc_r' + id: 'R5' }) -const mcu_en_pull_rc_c = board.add(C_0603_1608Metric, { +// mcu.en_pull.rc.c +const C7 = board.add(C_0603_1608Metric, { translate: pt(1.987, 0.903), rotate: 0, - id: 'mcu_en_pull_rc_c' + id: 'C7' }) -const sw_package = board.add(SW_SPST_SKQG_WithoutStem, { +// sw.package +const SW2 = board.add(SW_SPST_SKQG_WithoutStem, { translate: pt(0.752, 1.854), rotate: 0, - id: 'sw_package' + id: 'SW2' }) -const led_led_0__package = board.add(LED_0603_1608Metric, { +// led.led[0].package +const D1 = board.add(LED_0603_1608Metric, { translate: pt(2.599, 0.595), rotate: 0, - id: 'led_led_0__package' + id: 'D1' }) -const led_led_0__res = board.add(R_0603_1608Metric, { +// led.led[0].res +const R6 = board.add(R_0603_1608Metric, { translate: pt(2.598, 0.790), rotate: 0, - id: 'led_led_0__res' + id: 'R6' }) -const led_led_1__package = board.add(LED_0603_1608Metric, { +// led.led[1].package +const D2 = board.add(LED_0603_1608Metric, { translate: pt(2.755, 0.595), rotate: 0, - id: 'led_led_1__package' + id: 'D2' }) -const led_led_1__res = board.add(R_0603_1608Metric, { +// led.led[1].res +const R7 = board.add(R_0603_1608Metric, { translate: pt(2.754, 0.790), rotate: 0, - id: 'led_led_1__res' + id: 'R7' }) -const led_led_2__package = board.add(LED_0603_1608Metric, { +// led.led[2].package +const D3 = board.add(LED_0603_1608Metric, { translate: pt(2.599, 0.693), rotate: 0, - id: 'led_led_2__package' + id: 'D3' }) -const led_led_2__res = board.add(R_0603_1608Metric, { +// led.led[2].res +const R8 = board.add(R_0603_1608Metric, { translate: pt(2.598, 0.887), rotate: 0, - id: 'led_led_2__res' + id: 'R8' }) -const led_led_3__package = board.add(LED_0603_1608Metric, { +// led.led[3].package +const D4 = board.add(LED_0603_1608Metric, { translate: pt(2.755, 0.693), rotate: 0, - id: 'led_led_3__package' + id: 'D4' }) -const led_led_3__res = board.add(R_0603_1608Metric, { +// led.led[3].res +const R9 = board.add(R_0603_1608Metric, { translate: pt(2.754, 0.887), rotate: 0, - id: 'led_led_3__res' + id: 'R9' }) +board.setNetlist([ + {name: "usb.gnd", pads: [["J1", "A1"], ["J1", "B12"], ["J1", "B1"], ["J1", "A12"], ["U1", "1"], ["U2", "1"], ["U2", "15"], ["U2", "38"], ["U2", "39"], ["SW2", "2"], ["J1", "S1"], ["C1", "2"], ["C5", "2"], ["C6", "2"], ["J2", "4"], ["SW1", "2"], ["R6", "2"], ["R7", "2"], ["R8", "2"], ["R9", "2"], ["R4", "2"], ["C7", "2"], ["R1", "1"], ["R2", "1"], ["C3", "2"], ["C4", "2"]]}, + {name: "usb.pwr", pads: [["J1", "A4"], ["J1", "B9"], ["J1", "B4"], ["J1", "A9"], ["U1", "3"], ["U1", "5"], ["C1", "1"], ["C3", "1"]]}, + {name: "reg.pwr_out", pads: [["U2", "2"], ["R3", "1"], ["C5", "1"], ["C6", "1"], ["J2", "1"], ["R5", "1"], ["L1", "2"], ["C4", "1"]]}, + {name: "sw.out", pads: [["U2", "8"], ["SW2", "1"]]}, + {name: "mcu.gpio.led_0", pads: [["U2", "26"], ["D1", "2"]]}, + {name: "mcu.gpio.led_1", pads: [["U2", "27"], ["D2", "2"]]}, + {name: "mcu.gpio.led_2", pads: [["U2", "28"], ["D3", "2"]]}, + {name: "mcu.gpio.led_3", pads: [["U2", "29"], ["D4", "2"]]}, + {name: "usb.usb.dp", pads: [["J1", "A6"], ["J1", "B6"]]}, + {name: "usb.usb.dm", pads: [["J1", "A7"], ["J1", "B7"]]}, + {name: "usb.conn.cc.cc1", pads: [["J1", "A5"], ["R1", "2"]]}, + {name: "usb.conn.cc.cc2", pads: [["J1", "B5"], ["R2", "2"]]}, + {name: "reg.fb.output", pads: [["U1", "4"], ["R3", "2"], ["R4", "1"]]}, + {name: "reg.vbst_cap.neg", pads: [["C2", "2"], ["U1", "2"], ["L1", "1"]]}, + {name: "reg.vbst_cap.pos", pads: [["C2", "1"], ["U1", "6"]]}, + {name: "mcu.program_uart_node.a_tx", pads: [["U2", "35"], ["J2", "2"]]}, + {name: "mcu.program_uart_node.b_tx", pads: [["U2", "34"], ["J2", "3"]]}, + {name: "mcu.program_en_node", pads: [["U2", "3"], ["R5", "2"], ["C7", "1"]]}, + {name: "mcu.program_boot_node", pads: [["U2", "25"], ["SW1", "1"]]}, + {name: "mcu.ic.io2", pads: [["U2", "24"]]}, + {name: "led.led[0].res.a", pads: [["R6", "1"], ["D1", "1"]]}, + {name: "led.led[1].res.a", pads: [["R7", "1"], ["D2", "1"]]}, + {name: "led.led[2].res.a", pads: [["R8", "1"], ["D3", "1"]]}, + {name: "led.led[3].res.a", pads: [["R9", "1"], ["D4", "1"]]} +]) + const limit0 = pt(-0.07874015748031496, -0.07874015748031496); const limit1 = pt(3.077165354330709, 2.20748031496063); const xMin = Math.min(limit0[0], limit1[0]); diff --git a/examples/TestBlinkyBasic/TestBlinkyBasic.svgpcb.js b/examples/TestBlinkyBasic/TestBlinkyBasic.svgpcb.js index a53e0603c..67f88cd82 100644 --- a/examples/TestBlinkyBasic/TestBlinkyBasic.svgpcb.js +++ b/examples/TestBlinkyBasic/TestBlinkyBasic.svgpcb.js @@ -1,18 +1,29 @@ const board = new PCB(); -const mcu = board.add(Nucleo32, { +// mcu +const U1 = board.add(Nucleo32, { translate: pt(0.365, 0.990), rotate: 0, - id: 'mcu' + id: 'U1' }) -const led_package = board.add(LED_0603_1608Metric, { +// led.package +const D1 = board.add(LED_0603_1608Metric, { translate: pt(0.828, 0.029), rotate: 0, - id: 'led_package' + id: 'D1' }) -const led_res = board.add(R_0603_1608Metric, { +// led.res +const R1 = board.add(R_0603_1608Metric, { translate: pt(0.828, 0.126), rotate: 0, - id: 'led_res' + id: 'R1' }) +board.setNetlist([ + {name: "led.signal", pads: [["U1", "10"], ["D1", "2"]]}, + {name: "mcu.gnd", pads: [["U1", "4"], ["U1", "17"], ["R1", "2"]]}, + {name: "mcu.pwr_out", pads: [["U1", "29"]]}, + {name: "mcu.vusb_out", pads: [["U1", "19"]]}, + {name: "led.res.a", pads: [["R1", "1"], ["D1", "1"]]} +]) + const limit0 = pt(-0.07874015748031496, -0.07874015748031496); const limit1 = pt(1.0041338582677166, 2.0192913385826774); const xMin = Math.min(limit0[0], limit1[0]); diff --git a/examples/TestBlinkyBasicBattery/TestBlinkyBasicBattery.svgpcb.js b/examples/TestBlinkyBasicBattery/TestBlinkyBasicBattery.svgpcb.js index 0de534117..fb188449d 100644 --- a/examples/TestBlinkyBasicBattery/TestBlinkyBasicBattery.svgpcb.js +++ b/examples/TestBlinkyBasicBattery/TestBlinkyBasicBattery.svgpcb.js @@ -1,34 +1,53 @@ const board = new PCB(); -const bat_cell_0_ = board.add(BatteryHolder_Keystone_2460_1xAA, { +// bat.cell[0] +const U1 = board.add(BatteryHolder_Keystone_2460_1xAA, { translate: pt(0.108, 0.343), rotate: 0, - id: 'bat_cell_0_' + id: 'U1' }) -const bat_cell_1_ = board.add(BatteryHolder_Keystone_2460_1xAA, { +// bat.cell[1] +const U2 = board.add(BatteryHolder_Keystone_2460_1xAA, { translate: pt(0.108, 1.067), rotate: 0, - id: 'bat_cell_1_' + id: 'U2' }) -const bat_cell_2_ = board.add(BatteryHolder_Keystone_2460_1xAA, { +// bat.cell[2] +const U3 = board.add(BatteryHolder_Keystone_2460_1xAA, { translate: pt(0.108, 1.791), rotate: 0, - id: 'bat_cell_2_' + id: 'U3' }) -const bat_cell_3_ = board.add(BatteryHolder_Keystone_2460_1xAA, { +// bat.cell[3] +const U4 = board.add(BatteryHolder_Keystone_2460_1xAA, { translate: pt(0.108, 2.516), rotate: 0, - id: 'bat_cell_3_' + id: 'U4' }) -const mcu = board.add(XIAO_RP2040_SMD, { +// mcu +const U5 = board.add(XIAO_RP2040_SMD, { translate: pt(2.730, 0.410), rotate: 0, - id: 'mcu' + id: 'U5' }) -const led_package = board.add(LED_0603_1608Metric, { +// led.package +const D1 = board.add(LED_0603_1608Metric, { translate: pt(3.180, 0.029), rotate: 0, - id: 'led_package' + id: 'D1' }) -const led_res = board.add(R_0603_1608Metric, { +// led.res +const R1 = board.add(R_0603_1608Metric, { translate: pt(3.180, 0.126), rotate: 0, - id: 'led_res' + id: 'R1' }) +board.setNetlist([ + {name: "mcu.pwr_vin", pads: [["U4", "1"]]}, + {name: "mcu.gnd", pads: [["U5", "13"], ["U1", "2"], ["R1", "2"]]}, + {name: "led.signal", pads: [["U5", "7"], ["D1", "2"]]}, + {name: "bat.cell[0].pwr", pads: [["U1", "1"], ["U2", "2"]]}, + {name: "bat.cell[1].pwr", pads: [["U2", "1"], ["U3", "2"]]}, + {name: "bat.cell[2].pwr", pads: [["U3", "1"], ["U4", "2"]]}, + {name: "mcu.pwr_out", pads: [["U5", "12"]]}, + {name: "mcu.vusb_out", pads: [["U5", "14"]]}, + {name: "led.res.a", pads: [["R1", "1"], ["D1", "1"]]} +]) + const limit0 = pt(-0.07874015748031496, -0.07874015748031496); const limit1 = pt(3.356102362204725, 2.9763779527559056); const xMin = Math.min(limit0[0], limit1[0]); diff --git a/examples/TestBlinkyChain/TestBlinkyChain.svgpcb.js b/examples/TestBlinkyChain/TestBlinkyChain.svgpcb.js index 9c1444026..3f2bb4235 100644 --- a/examples/TestBlinkyChain/TestBlinkyChain.svgpcb.js +++ b/examples/TestBlinkyChain/TestBlinkyChain.svgpcb.js @@ -1,117 +1,174 @@ const board = new PCB(); -const usb_conn = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { +// usb.conn +const J1 = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { translate: pt(1.111, 0.165), rotate: 0, - id: 'usb_conn' + id: 'J1' }) -const usb_cc_pull_cc1_res = board.add(R_0603_1608Metric, { +// usb.cc_pull.cc1.res +const R1 = board.add(R_0603_1608Metric, { translate: pt(0.960, 0.420), rotate: 0, - id: 'usb_cc_pull_cc1_res' + id: 'R1' }) -const usb_cc_pull_cc2_res = board.add(R_0603_1608Metric, { +// usb.cc_pull.cc2.res +const R2 = board.add(R_0603_1608Metric, { translate: pt(1.116, 0.420), rotate: 0, - id: 'usb_cc_pull_cc2_res' + id: 'R2' }) -const reg_ic = board.add(SOT_23_6, { +// reg.ic +const U1 = board.add(SOT_23_6, { translate: pt(0.081, 0.804), rotate: 0, - id: 'reg_ic' + id: 'U1' }) -const reg_fb_div_top_res = board.add(R_0603_1608Metric, { +// reg.fb.div.top_res +const R3 = board.add(R_0603_1608Metric, { translate: pt(0.058, 0.939), rotate: 0, - id: 'reg_fb_div_top_res' + id: 'R3' }) -const reg_fb_div_bottom_res = board.add(R_0603_1608Metric, { +// reg.fb.div.bottom_res +const R4 = board.add(R_0603_1608Metric, { translate: pt(0.214, 0.939), rotate: 0, - id: 'reg_fb_div_bottom_res' + id: 'R4' }) -const reg_hf_in_cap_cap = board.add(C_0603_1608Metric, { +// reg.hf_in_cap.cap +const C1 = board.add(C_0603_1608Metric, { translate: pt(0.370, 0.939), rotate: 0, - id: 'reg_hf_in_cap_cap' + id: 'C1' }) -const reg_vbst_cap = board.add(C_0603_1608Metric, { +// reg.vbst_cap +const C2 = board.add(C_0603_1608Metric, { translate: pt(0.058, 1.036), rotate: 0, - id: 'reg_vbst_cap' + id: 'C2' }) -const reg_power_path_inductor = board.add(L_0603_1608Metric, { +// reg.power_path.inductor +const L1 = board.add(L_0603_1608Metric, { translate: pt(0.214, 1.036), rotate: 0, - id: 'reg_power_path_inductor' + id: 'L1' }) -const reg_power_path_in_cap_cap = board.add(C_0603_1608Metric, { +// reg.power_path.in_cap.cap +const C3 = board.add(C_0603_1608Metric, { translate: pt(0.370, 1.036), rotate: 0, - id: 'reg_power_path_in_cap_cap' + id: 'C3' }) -const reg_power_path_out_cap_cap = board.add(C_0805_2012Metric, { +// reg.power_path.out_cap.cap +const C4 = board.add(C_0805_2012Metric, { translate: pt(0.268, 0.776), rotate: 0, - id: 'reg_power_path_out_cap_cap' + id: 'C4' }) -const mcu_swd_conn = board.add(PinHeader_2x05_P1_27mm_Vertical_SMD, { +// mcu.swd.conn +const J2 = board.add(PinHeader_2x05_P1_27mm_Vertical_SMD, { translate: pt(0.614, 0.146), rotate: 0, - id: 'mcu_swd_conn' + id: 'J2' }) -const mcu_ic = board.add(LQFP_48_7x7mm_P0_5mm, { +// mcu.ic +const U2 = board.add(LQFP_48_7x7mm_P0_5mm, { translate: pt(0.203, 0.203), rotate: 0, - id: 'mcu_ic' + id: 'U2' }) -const mcu_pwr_cap_0__cap = board.add(C_0805_2012Metric, { +// mcu.pwr_cap[0].cap +const C5 = board.add(C_0805_2012Metric, { translate: pt(0.067, 0.483), rotate: 0, - id: 'mcu_pwr_cap_0__cap' + id: 'C5' }) -const mcu_pwr_cap_1__cap = board.add(C_0603_1608Metric, { +// mcu.pwr_cap[1].cap +const C6 = board.add(C_0603_1608Metric, { translate: pt(0.231, 0.474), rotate: 0, - id: 'mcu_pwr_cap_1__cap' + id: 'C6' }) -const mcu_pwr_cap_2__cap = board.add(C_0603_1608Metric, { +// mcu.pwr_cap[2].cap +const C7 = board.add(C_0603_1608Metric, { translate: pt(0.387, 0.474), rotate: 0, - id: 'mcu_pwr_cap_2__cap' + id: 'C7' }) -const mcu_pwr_cap_3__cap = board.add(C_0603_1608Metric, { +// mcu.pwr_cap[3].cap +const C8 = board.add(C_0603_1608Metric, { translate: pt(0.543, 0.474), rotate: 0, - id: 'mcu_pwr_cap_3__cap' + id: 'C8' }) -const mcu_vdda_cap_0_cap = board.add(C_0603_1608Metric, { +// mcu.vdda_cap_0.cap +const C9 = board.add(C_0603_1608Metric, { translate: pt(0.699, 0.474), rotate: 0, - id: 'mcu_vdda_cap_0_cap' + id: 'C9' }) -const mcu_vdda_cap_1_cap = board.add(C_0603_1608Metric, { +// mcu.vdda_cap_1.cap +const C10 = board.add(C_0603_1608Metric, { translate: pt(0.058, 0.590), rotate: 0, - id: 'mcu_vdda_cap_1_cap' + id: 'C10' }) -const sw_package = board.add(SW_SPST_SKQG_WithoutStem, { +// sw.package +const SW1 = board.add(SW_SPST_SKQG_WithoutStem, { translate: pt(0.714, 0.849), rotate: 0, - id: 'sw_package' + id: 'SW1' }) -const led_0__package = board.add(LED_0603_1608Metric, { - translate: pt(0.058, 1.212), rotate: 0, - id: 'led_0__package' -}) -const led_0__res = board.add(R_0603_1608Metric, { - translate: pt(0.058, 1.309), rotate: 0, - id: 'led_0__res' -}) -const led_1__package = board.add(LED_0603_1608Metric, { +// led[0].package +const D1 = board.add(LED_0603_1608Metric, { translate: pt(1.058, 0.766), rotate: 0, - id: 'led_1__package' + id: 'D1' }) -const led_1__res = board.add(R_0603_1608Metric, { +// led[0].res +const R5 = board.add(R_0603_1608Metric, { translate: pt(1.057, 0.863), rotate: 0, - id: 'led_1__res' + id: 'R5' }) -const led_2__package = board.add(LED_0603_1608Metric, { - translate: pt(0.293, 1.212), rotate: 0, - id: 'led_2__package' -}) -const led_2__res = board.add(R_0603_1608Metric, { - translate: pt(0.293, 1.309), rotate: 0, - id: 'led_2__res' -}) -const led_3__package = board.add(LED_0603_1608Metric, { +// led[1].package +const D2 = board.add(LED_0603_1608Metric, { translate: pt(1.293, 0.766), rotate: 0, - id: 'led_3__package' + id: 'D2' }) -const led_3__res = board.add(R_0603_1608Metric, { +// led[1].res +const R6 = board.add(R_0603_1608Metric, { translate: pt(1.292, 0.863), rotate: 0, - id: 'led_3__res' + id: 'R6' }) +// led[2].package +const D3 = board.add(LED_0603_1608Metric, { + translate: pt(0.058, 1.212), rotate: 0, + id: 'D3' +}) +// led[2].res +const R7 = board.add(R_0603_1608Metric, { + translate: pt(0.058, 1.309), rotate: 0, + id: 'R7' +}) +// led[3].package +const D4 = board.add(LED_0603_1608Metric, { + translate: pt(0.293, 1.212), rotate: 0, + id: 'D4' +}) +// led[3].res +const R8 = board.add(R_0603_1608Metric, { + translate: pt(0.293, 1.309), rotate: 0, + id: 'R8' +}) + +board.setNetlist([ + {name: "usb.gnd", pads: [["J1", "A1"], ["J1", "B12"], ["J1", "B1"], ["J1", "A12"], ["U1", "1"], ["U2", "8"], ["U2", "23"], ["U2", "35"], ["U2", "47"], ["U2", "44"], ["SW1", "2"], ["R5", "2"], ["R6", "2"], ["R7", "2"], ["R8", "2"], ["J1", "S1"], ["C1", "2"], ["C5", "2"], ["C6", "2"], ["C7", "2"], ["C8", "2"], ["C9", "2"], ["C10", "2"], ["R4", "2"], ["R1", "1"], ["R2", "1"], ["J2", "3"], ["J2", "5"], ["J2", "9"], ["C3", "2"], ["C4", "2"]]}, + {name: "usb.pwr", pads: [["J1", "A4"], ["J1", "B9"], ["J1", "B4"], ["J1", "A9"], ["U1", "3"], ["U1", "5"], ["C1", "1"], ["C3", "1"]]}, + {name: "reg.pwr_out", pads: [["U2", "1"], ["U2", "9"], ["U2", "24"], ["U2", "36"], ["U2", "48"], ["R3", "1"], ["J2", "1"], ["C5", "1"], ["C6", "1"], ["C7", "1"], ["C8", "1"], ["C9", "1"], ["C10", "1"], ["L1", "2"], ["C4", "1"]]}, + {name: "sw.out", pads: [["U2", "10"], ["SW1", "1"]]}, + {name: "led[0].signal", pads: [["U2", "11"], ["D1", "2"]]}, + {name: "led[1].signal", pads: [["U2", "12"], ["D2", "2"]]}, + {name: "led[2].signal", pads: [["U2", "13"], ["D3", "2"]]}, + {name: "led[3].signal", pads: [["U2", "14"], ["D4", "2"]]}, + {name: "usb.usb.dp", pads: [["J1", "A6"], ["J1", "B6"]]}, + {name: "usb.usb.dm", pads: [["J1", "A7"], ["J1", "B7"]]}, + {name: "usb.conn.cc.cc1", pads: [["J1", "A5"], ["R1", "2"]]}, + {name: "usb.conn.cc.cc2", pads: [["J1", "B5"], ["R2", "2"]]}, + {name: "reg.fb.output", pads: [["U1", "4"], ["R3", "2"], ["R4", "1"]]}, + {name: "reg.vbst_cap.neg", pads: [["C2", "2"], ["U1", "2"], ["L1", "1"]]}, + {name: "reg.vbst_cap.pos", pads: [["C2", "1"], ["U1", "6"]]}, + {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.swo", pads: [["J2", "6"]]}, + {name: "mcu.swd.tdi", pads: [["J2", "8"]]}, + {name: "mcu.ic.osc.xtal_in", pads: [["U2", "5"]]}, + {name: "mcu.ic.osc.xtal_out", pads: [["U2", "6"]]}, + {name: "led[0].res.a", pads: [["R5", "1"], ["D1", "1"]]}, + {name: "led[1].res.a", pads: [["R6", "1"], ["D2", "1"]]}, + {name: "led[2].res.a", pads: [["R7", "1"], ["D3", "1"]]}, + {name: "led[3].res.a", pads: [["R8", "1"], ["D4", "1"]]} +]) const limit0 = pt(-0.07874015748031496, -0.07874015748031496); const limit1 = pt(1.4688976377952758, 1.455511811023622); diff --git a/examples/TestBlinkyComplete/TestBlinkyComplete.svgpcb.js b/examples/TestBlinkyComplete/TestBlinkyComplete.svgpcb.js index 0d64099fb..ffdadc517 100644 --- a/examples/TestBlinkyComplete/TestBlinkyComplete.svgpcb.js +++ b/examples/TestBlinkyComplete/TestBlinkyComplete.svgpcb.js @@ -1,90 +1,133 @@ const board = new PCB(); -const usb_conn = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { +// usb.conn +const J1 = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { translate: pt(1.111, 0.165), rotate: 0, - id: 'usb_conn' + id: 'J1' }) -const usb_cc_pull_cc1_res = board.add(R_0603_1608Metric, { +// usb.cc_pull.cc1.res +const R1 = board.add(R_0603_1608Metric, { translate: pt(0.960, 0.420), rotate: 0, - id: 'usb_cc_pull_cc1_res' + id: 'R1' }) -const usb_cc_pull_cc2_res = board.add(R_0603_1608Metric, { +// usb.cc_pull.cc2.res +const R2 = board.add(R_0603_1608Metric, { translate: pt(1.116, 0.420), rotate: 0, - id: 'usb_cc_pull_cc2_res' + id: 'R2' }) -const reg_ic = board.add(SOT_23_6, { +// reg.ic +const U1 = board.add(SOT_23_6, { translate: pt(0.081, 0.804), rotate: 0, - id: 'reg_ic' + id: 'U1' }) -const reg_fb_div_top_res = board.add(R_0603_1608Metric, { +// reg.fb.div.top_res +const R3 = board.add(R_0603_1608Metric, { translate: pt(0.058, 0.939), rotate: 0, - id: 'reg_fb_div_top_res' + id: 'R3' }) -const reg_fb_div_bottom_res = board.add(R_0603_1608Metric, { +// reg.fb.div.bottom_res +const R4 = board.add(R_0603_1608Metric, { translate: pt(0.214, 0.939), rotate: 0, - id: 'reg_fb_div_bottom_res' + id: 'R4' }) -const reg_hf_in_cap_cap = board.add(C_0603_1608Metric, { +// reg.hf_in_cap.cap +const C1 = board.add(C_0603_1608Metric, { translate: pt(0.370, 0.939), rotate: 0, - id: 'reg_hf_in_cap_cap' + id: 'C1' }) -const reg_vbst_cap = board.add(C_0603_1608Metric, { +// reg.vbst_cap +const C2 = board.add(C_0603_1608Metric, { translate: pt(0.058, 1.036), rotate: 0, - id: 'reg_vbst_cap' + id: 'C2' }) -const reg_power_path_inductor = board.add(L_0603_1608Metric, { +// reg.power_path.inductor +const L1 = board.add(L_0603_1608Metric, { translate: pt(0.214, 1.036), rotate: 0, - id: 'reg_power_path_inductor' + id: 'L1' }) -const reg_power_path_in_cap_cap = board.add(C_0603_1608Metric, { +// reg.power_path.in_cap.cap +const C3 = board.add(C_0603_1608Metric, { translate: pt(0.370, 1.036), rotate: 0, - id: 'reg_power_path_in_cap_cap' + id: 'C3' }) -const reg_power_path_out_cap_cap = board.add(C_0805_2012Metric, { +// reg.power_path.out_cap.cap +const C4 = board.add(C_0805_2012Metric, { translate: pt(0.268, 0.776), rotate: 0, - id: 'reg_power_path_out_cap_cap' + id: 'C4' }) -const mcu_swd_conn = board.add(PinHeader_2x05_P1_27mm_Vertical_SMD, { +// mcu.swd.conn +const J2 = board.add(PinHeader_2x05_P1_27mm_Vertical_SMD, { translate: pt(0.614, 0.146), rotate: 0, - id: 'mcu_swd_conn' + id: 'J2' }) -const mcu_ic = board.add(LQFP_48_7x7mm_P0_5mm, { +// mcu.ic +const U2 = board.add(LQFP_48_7x7mm_P0_5mm, { translate: pt(0.203, 0.203), rotate: 0, - id: 'mcu_ic' + id: 'U2' }) -const mcu_pwr_cap_0__cap = board.add(C_0805_2012Metric, { +// mcu.pwr_cap[0].cap +const C5 = board.add(C_0805_2012Metric, { translate: pt(0.067, 0.483), rotate: 0, - id: 'mcu_pwr_cap_0__cap' + id: 'C5' }) -const mcu_pwr_cap_1__cap = board.add(C_0603_1608Metric, { +// mcu.pwr_cap[1].cap +const C6 = board.add(C_0603_1608Metric, { translate: pt(0.231, 0.474), rotate: 0, - id: 'mcu_pwr_cap_1__cap' + id: 'C6' }) -const mcu_pwr_cap_2__cap = board.add(C_0603_1608Metric, { +// mcu.pwr_cap[2].cap +const C7 = board.add(C_0603_1608Metric, { translate: pt(0.387, 0.474), rotate: 0, - id: 'mcu_pwr_cap_2__cap' + id: 'C7' }) -const mcu_pwr_cap_3__cap = board.add(C_0603_1608Metric, { +// mcu.pwr_cap[3].cap +const C8 = board.add(C_0603_1608Metric, { translate: pt(0.543, 0.474), rotate: 0, - id: 'mcu_pwr_cap_3__cap' + id: 'C8' }) -const mcu_vdda_cap_0_cap = board.add(C_0603_1608Metric, { +// mcu.vdda_cap_0.cap +const C9 = board.add(C_0603_1608Metric, { translate: pt(0.699, 0.474), rotate: 0, - id: 'mcu_vdda_cap_0_cap' + id: 'C9' }) -const mcu_vdda_cap_1_cap = board.add(C_0603_1608Metric, { +// mcu.vdda_cap_1.cap +const C10 = board.add(C_0603_1608Metric, { translate: pt(0.058, 0.590), rotate: 0, - id: 'mcu_vdda_cap_1_cap' + id: 'C10' }) -const led_package = board.add(LED_0603_1608Metric, { +// led.package +const D1 = board.add(LED_0603_1608Metric, { translate: pt(0.605, 0.766), rotate: 0, - id: 'led_package' + id: 'D1' }) -const led_res = board.add(R_0603_1608Metric, { +// led.res +const R5 = board.add(R_0603_1608Metric, { translate: pt(0.605, 0.863), rotate: 0, - id: 'led_res' + id: 'R5' }) +board.setNetlist([ + {name: "usb.gnd", pads: [["J1", "A1"], ["J1", "B12"], ["J1", "B1"], ["J1", "A12"], ["U1", "1"], ["U2", "8"], ["U2", "23"], ["U2", "35"], ["U2", "47"], ["U2", "44"], ["R5", "2"], ["J1", "S1"], ["C1", "2"], ["C5", "2"], ["C6", "2"], ["C7", "2"], ["C8", "2"], ["C9", "2"], ["C10", "2"], ["R4", "2"], ["R1", "1"], ["R2", "1"], ["J2", "3"], ["J2", "5"], ["J2", "9"], ["C3", "2"], ["C4", "2"]]}, + {name: "usb.pwr", pads: [["J1", "A4"], ["J1", "B9"], ["J1", "B4"], ["J1", "A9"], ["U1", "3"], ["U1", "5"], ["C1", "1"], ["C3", "1"]]}, + {name: "reg.pwr_out", pads: [["U2", "1"], ["U2", "9"], ["U2", "24"], ["U2", "36"], ["U2", "48"], ["R3", "1"], ["J2", "1"], ["C5", "1"], ["C6", "1"], ["C7", "1"], ["C8", "1"], ["C9", "1"], ["C10", "1"], ["L1", "2"], ["C4", "1"]]}, + {name: "led.signal", pads: [["U2", "10"], ["D1", "2"]]}, + {name: "usb.usb.dp", pads: [["J1", "A6"], ["J1", "B6"]]}, + {name: "usb.usb.dm", pads: [["J1", "A7"], ["J1", "B7"]]}, + {name: "usb.conn.cc.cc1", pads: [["J1", "A5"], ["R1", "2"]]}, + {name: "usb.conn.cc.cc2", pads: [["J1", "B5"], ["R2", "2"]]}, + {name: "reg.fb.output", pads: [["U1", "4"], ["R3", "2"], ["R4", "1"]]}, + {name: "reg.vbst_cap.neg", pads: [["C2", "2"], ["U1", "2"], ["L1", "1"]]}, + {name: "reg.vbst_cap.pos", pads: [["C2", "1"], ["U1", "6"]]}, + {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.swo", pads: [["J2", "6"]]}, + {name: "mcu.swd.tdi", pads: [["J2", "8"]]}, + {name: "mcu.ic.osc.xtal_in", pads: [["U2", "5"]]}, + {name: "mcu.ic.osc.xtal_out", pads: [["U2", "6"]]}, + {name: "led.res.a", pads: [["R5", "1"], ["D1", "1"]]} +]) + const limit0 = pt(-0.07874015748031496, -0.07874015748031496); const limit1 = pt(1.4385826771653545, 1.1826771653543309); const xMin = Math.min(limit0[0], limit1[0]); diff --git a/examples/TestBlinkyEmpty/TestBlinkyEmpty.svgpcb.js b/examples/TestBlinkyEmpty/TestBlinkyEmpty.svgpcb.js index f3c464aaa..9f7986908 100644 --- a/examples/TestBlinkyEmpty/TestBlinkyEmpty.svgpcb.js +++ b/examples/TestBlinkyEmpty/TestBlinkyEmpty.svgpcb.js @@ -2,6 +2,10 @@ const board = new PCB(); +board.setNetlist([ + +]) + const limit0 = pt(-0.07874015748031496, -0.07874015748031496); const limit1 = pt(0.0, 0.0); const xMin = Math.min(limit0[0], limit1[0]); diff --git a/examples/TestBlinkyExpanded/TestBlinkyExpanded.svgpcb.js b/examples/TestBlinkyExpanded/TestBlinkyExpanded.svgpcb.js index 9c1444026..3f2bb4235 100644 --- a/examples/TestBlinkyExpanded/TestBlinkyExpanded.svgpcb.js +++ b/examples/TestBlinkyExpanded/TestBlinkyExpanded.svgpcb.js @@ -1,117 +1,174 @@ const board = new PCB(); -const usb_conn = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { +// usb.conn +const J1 = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { translate: pt(1.111, 0.165), rotate: 0, - id: 'usb_conn' + id: 'J1' }) -const usb_cc_pull_cc1_res = board.add(R_0603_1608Metric, { +// usb.cc_pull.cc1.res +const R1 = board.add(R_0603_1608Metric, { translate: pt(0.960, 0.420), rotate: 0, - id: 'usb_cc_pull_cc1_res' + id: 'R1' }) -const usb_cc_pull_cc2_res = board.add(R_0603_1608Metric, { +// usb.cc_pull.cc2.res +const R2 = board.add(R_0603_1608Metric, { translate: pt(1.116, 0.420), rotate: 0, - id: 'usb_cc_pull_cc2_res' + id: 'R2' }) -const reg_ic = board.add(SOT_23_6, { +// reg.ic +const U1 = board.add(SOT_23_6, { translate: pt(0.081, 0.804), rotate: 0, - id: 'reg_ic' + id: 'U1' }) -const reg_fb_div_top_res = board.add(R_0603_1608Metric, { +// reg.fb.div.top_res +const R3 = board.add(R_0603_1608Metric, { translate: pt(0.058, 0.939), rotate: 0, - id: 'reg_fb_div_top_res' + id: 'R3' }) -const reg_fb_div_bottom_res = board.add(R_0603_1608Metric, { +// reg.fb.div.bottom_res +const R4 = board.add(R_0603_1608Metric, { translate: pt(0.214, 0.939), rotate: 0, - id: 'reg_fb_div_bottom_res' + id: 'R4' }) -const reg_hf_in_cap_cap = board.add(C_0603_1608Metric, { +// reg.hf_in_cap.cap +const C1 = board.add(C_0603_1608Metric, { translate: pt(0.370, 0.939), rotate: 0, - id: 'reg_hf_in_cap_cap' + id: 'C1' }) -const reg_vbst_cap = board.add(C_0603_1608Metric, { +// reg.vbst_cap +const C2 = board.add(C_0603_1608Metric, { translate: pt(0.058, 1.036), rotate: 0, - id: 'reg_vbst_cap' + id: 'C2' }) -const reg_power_path_inductor = board.add(L_0603_1608Metric, { +// reg.power_path.inductor +const L1 = board.add(L_0603_1608Metric, { translate: pt(0.214, 1.036), rotate: 0, - id: 'reg_power_path_inductor' + id: 'L1' }) -const reg_power_path_in_cap_cap = board.add(C_0603_1608Metric, { +// reg.power_path.in_cap.cap +const C3 = board.add(C_0603_1608Metric, { translate: pt(0.370, 1.036), rotate: 0, - id: 'reg_power_path_in_cap_cap' + id: 'C3' }) -const reg_power_path_out_cap_cap = board.add(C_0805_2012Metric, { +// reg.power_path.out_cap.cap +const C4 = board.add(C_0805_2012Metric, { translate: pt(0.268, 0.776), rotate: 0, - id: 'reg_power_path_out_cap_cap' + id: 'C4' }) -const mcu_swd_conn = board.add(PinHeader_2x05_P1_27mm_Vertical_SMD, { +// mcu.swd.conn +const J2 = board.add(PinHeader_2x05_P1_27mm_Vertical_SMD, { translate: pt(0.614, 0.146), rotate: 0, - id: 'mcu_swd_conn' + id: 'J2' }) -const mcu_ic = board.add(LQFP_48_7x7mm_P0_5mm, { +// mcu.ic +const U2 = board.add(LQFP_48_7x7mm_P0_5mm, { translate: pt(0.203, 0.203), rotate: 0, - id: 'mcu_ic' + id: 'U2' }) -const mcu_pwr_cap_0__cap = board.add(C_0805_2012Metric, { +// mcu.pwr_cap[0].cap +const C5 = board.add(C_0805_2012Metric, { translate: pt(0.067, 0.483), rotate: 0, - id: 'mcu_pwr_cap_0__cap' + id: 'C5' }) -const mcu_pwr_cap_1__cap = board.add(C_0603_1608Metric, { +// mcu.pwr_cap[1].cap +const C6 = board.add(C_0603_1608Metric, { translate: pt(0.231, 0.474), rotate: 0, - id: 'mcu_pwr_cap_1__cap' + id: 'C6' }) -const mcu_pwr_cap_2__cap = board.add(C_0603_1608Metric, { +// mcu.pwr_cap[2].cap +const C7 = board.add(C_0603_1608Metric, { translate: pt(0.387, 0.474), rotate: 0, - id: 'mcu_pwr_cap_2__cap' + id: 'C7' }) -const mcu_pwr_cap_3__cap = board.add(C_0603_1608Metric, { +// mcu.pwr_cap[3].cap +const C8 = board.add(C_0603_1608Metric, { translate: pt(0.543, 0.474), rotate: 0, - id: 'mcu_pwr_cap_3__cap' + id: 'C8' }) -const mcu_vdda_cap_0_cap = board.add(C_0603_1608Metric, { +// mcu.vdda_cap_0.cap +const C9 = board.add(C_0603_1608Metric, { translate: pt(0.699, 0.474), rotate: 0, - id: 'mcu_vdda_cap_0_cap' + id: 'C9' }) -const mcu_vdda_cap_1_cap = board.add(C_0603_1608Metric, { +// mcu.vdda_cap_1.cap +const C10 = board.add(C_0603_1608Metric, { translate: pt(0.058, 0.590), rotate: 0, - id: 'mcu_vdda_cap_1_cap' + id: 'C10' }) -const sw_package = board.add(SW_SPST_SKQG_WithoutStem, { +// sw.package +const SW1 = board.add(SW_SPST_SKQG_WithoutStem, { translate: pt(0.714, 0.849), rotate: 0, - id: 'sw_package' + id: 'SW1' }) -const led_0__package = board.add(LED_0603_1608Metric, { - translate: pt(0.058, 1.212), rotate: 0, - id: 'led_0__package' -}) -const led_0__res = board.add(R_0603_1608Metric, { - translate: pt(0.058, 1.309), rotate: 0, - id: 'led_0__res' -}) -const led_1__package = board.add(LED_0603_1608Metric, { +// led[0].package +const D1 = board.add(LED_0603_1608Metric, { translate: pt(1.058, 0.766), rotate: 0, - id: 'led_1__package' + id: 'D1' }) -const led_1__res = board.add(R_0603_1608Metric, { +// led[0].res +const R5 = board.add(R_0603_1608Metric, { translate: pt(1.057, 0.863), rotate: 0, - id: 'led_1__res' + id: 'R5' }) -const led_2__package = board.add(LED_0603_1608Metric, { - translate: pt(0.293, 1.212), rotate: 0, - id: 'led_2__package' -}) -const led_2__res = board.add(R_0603_1608Metric, { - translate: pt(0.293, 1.309), rotate: 0, - id: 'led_2__res' -}) -const led_3__package = board.add(LED_0603_1608Metric, { +// led[1].package +const D2 = board.add(LED_0603_1608Metric, { translate: pt(1.293, 0.766), rotate: 0, - id: 'led_3__package' + id: 'D2' }) -const led_3__res = board.add(R_0603_1608Metric, { +// led[1].res +const R6 = board.add(R_0603_1608Metric, { translate: pt(1.292, 0.863), rotate: 0, - id: 'led_3__res' + id: 'R6' }) +// led[2].package +const D3 = board.add(LED_0603_1608Metric, { + translate: pt(0.058, 1.212), rotate: 0, + id: 'D3' +}) +// led[2].res +const R7 = board.add(R_0603_1608Metric, { + translate: pt(0.058, 1.309), rotate: 0, + id: 'R7' +}) +// led[3].package +const D4 = board.add(LED_0603_1608Metric, { + translate: pt(0.293, 1.212), rotate: 0, + id: 'D4' +}) +// led[3].res +const R8 = board.add(R_0603_1608Metric, { + translate: pt(0.293, 1.309), rotate: 0, + id: 'R8' +}) + +board.setNetlist([ + {name: "usb.gnd", pads: [["J1", "A1"], ["J1", "B12"], ["J1", "B1"], ["J1", "A12"], ["U1", "1"], ["U2", "8"], ["U2", "23"], ["U2", "35"], ["U2", "47"], ["U2", "44"], ["SW1", "2"], ["R5", "2"], ["R6", "2"], ["R7", "2"], ["R8", "2"], ["J1", "S1"], ["C1", "2"], ["C5", "2"], ["C6", "2"], ["C7", "2"], ["C8", "2"], ["C9", "2"], ["C10", "2"], ["R4", "2"], ["R1", "1"], ["R2", "1"], ["J2", "3"], ["J2", "5"], ["J2", "9"], ["C3", "2"], ["C4", "2"]]}, + {name: "usb.pwr", pads: [["J1", "A4"], ["J1", "B9"], ["J1", "B4"], ["J1", "A9"], ["U1", "3"], ["U1", "5"], ["C1", "1"], ["C3", "1"]]}, + {name: "reg.pwr_out", pads: [["U2", "1"], ["U2", "9"], ["U2", "24"], ["U2", "36"], ["U2", "48"], ["R3", "1"], ["J2", "1"], ["C5", "1"], ["C6", "1"], ["C7", "1"], ["C8", "1"], ["C9", "1"], ["C10", "1"], ["L1", "2"], ["C4", "1"]]}, + {name: "sw.out", pads: [["U2", "10"], ["SW1", "1"]]}, + {name: "led[0].signal", pads: [["U2", "11"], ["D1", "2"]]}, + {name: "led[1].signal", pads: [["U2", "12"], ["D2", "2"]]}, + {name: "led[2].signal", pads: [["U2", "13"], ["D3", "2"]]}, + {name: "led[3].signal", pads: [["U2", "14"], ["D4", "2"]]}, + {name: "usb.usb.dp", pads: [["J1", "A6"], ["J1", "B6"]]}, + {name: "usb.usb.dm", pads: [["J1", "A7"], ["J1", "B7"]]}, + {name: "usb.conn.cc.cc1", pads: [["J1", "A5"], ["R1", "2"]]}, + {name: "usb.conn.cc.cc2", pads: [["J1", "B5"], ["R2", "2"]]}, + {name: "reg.fb.output", pads: [["U1", "4"], ["R3", "2"], ["R4", "1"]]}, + {name: "reg.vbst_cap.neg", pads: [["C2", "2"], ["U1", "2"], ["L1", "1"]]}, + {name: "reg.vbst_cap.pos", pads: [["C2", "1"], ["U1", "6"]]}, + {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.swo", pads: [["J2", "6"]]}, + {name: "mcu.swd.tdi", pads: [["J2", "8"]]}, + {name: "mcu.ic.osc.xtal_in", pads: [["U2", "5"]]}, + {name: "mcu.ic.osc.xtal_out", pads: [["U2", "6"]]}, + {name: "led[0].res.a", pads: [["R5", "1"], ["D1", "1"]]}, + {name: "led[1].res.a", pads: [["R6", "1"], ["D2", "1"]]}, + {name: "led[2].res.a", pads: [["R7", "1"], ["D3", "1"]]}, + {name: "led[3].res.a", pads: [["R8", "1"], ["D4", "1"]]} +]) const limit0 = pt(-0.07874015748031496, -0.07874015748031496); const limit1 = pt(1.4688976377952758, 1.455511811023622); diff --git a/examples/TestBlinkyImplicit/TestBlinkyImplicit.svgpcb.js b/examples/TestBlinkyImplicit/TestBlinkyImplicit.svgpcb.js index 9c1444026..3f2bb4235 100644 --- a/examples/TestBlinkyImplicit/TestBlinkyImplicit.svgpcb.js +++ b/examples/TestBlinkyImplicit/TestBlinkyImplicit.svgpcb.js @@ -1,117 +1,174 @@ const board = new PCB(); -const usb_conn = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { +// usb.conn +const J1 = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { translate: pt(1.111, 0.165), rotate: 0, - id: 'usb_conn' + id: 'J1' }) -const usb_cc_pull_cc1_res = board.add(R_0603_1608Metric, { +// usb.cc_pull.cc1.res +const R1 = board.add(R_0603_1608Metric, { translate: pt(0.960, 0.420), rotate: 0, - id: 'usb_cc_pull_cc1_res' + id: 'R1' }) -const usb_cc_pull_cc2_res = board.add(R_0603_1608Metric, { +// usb.cc_pull.cc2.res +const R2 = board.add(R_0603_1608Metric, { translate: pt(1.116, 0.420), rotate: 0, - id: 'usb_cc_pull_cc2_res' + id: 'R2' }) -const reg_ic = board.add(SOT_23_6, { +// reg.ic +const U1 = board.add(SOT_23_6, { translate: pt(0.081, 0.804), rotate: 0, - id: 'reg_ic' + id: 'U1' }) -const reg_fb_div_top_res = board.add(R_0603_1608Metric, { +// reg.fb.div.top_res +const R3 = board.add(R_0603_1608Metric, { translate: pt(0.058, 0.939), rotate: 0, - id: 'reg_fb_div_top_res' + id: 'R3' }) -const reg_fb_div_bottom_res = board.add(R_0603_1608Metric, { +// reg.fb.div.bottom_res +const R4 = board.add(R_0603_1608Metric, { translate: pt(0.214, 0.939), rotate: 0, - id: 'reg_fb_div_bottom_res' + id: 'R4' }) -const reg_hf_in_cap_cap = board.add(C_0603_1608Metric, { +// reg.hf_in_cap.cap +const C1 = board.add(C_0603_1608Metric, { translate: pt(0.370, 0.939), rotate: 0, - id: 'reg_hf_in_cap_cap' + id: 'C1' }) -const reg_vbst_cap = board.add(C_0603_1608Metric, { +// reg.vbst_cap +const C2 = board.add(C_0603_1608Metric, { translate: pt(0.058, 1.036), rotate: 0, - id: 'reg_vbst_cap' + id: 'C2' }) -const reg_power_path_inductor = board.add(L_0603_1608Metric, { +// reg.power_path.inductor +const L1 = board.add(L_0603_1608Metric, { translate: pt(0.214, 1.036), rotate: 0, - id: 'reg_power_path_inductor' + id: 'L1' }) -const reg_power_path_in_cap_cap = board.add(C_0603_1608Metric, { +// reg.power_path.in_cap.cap +const C3 = board.add(C_0603_1608Metric, { translate: pt(0.370, 1.036), rotate: 0, - id: 'reg_power_path_in_cap_cap' + id: 'C3' }) -const reg_power_path_out_cap_cap = board.add(C_0805_2012Metric, { +// reg.power_path.out_cap.cap +const C4 = board.add(C_0805_2012Metric, { translate: pt(0.268, 0.776), rotate: 0, - id: 'reg_power_path_out_cap_cap' + id: 'C4' }) -const mcu_swd_conn = board.add(PinHeader_2x05_P1_27mm_Vertical_SMD, { +// mcu.swd.conn +const J2 = board.add(PinHeader_2x05_P1_27mm_Vertical_SMD, { translate: pt(0.614, 0.146), rotate: 0, - id: 'mcu_swd_conn' + id: 'J2' }) -const mcu_ic = board.add(LQFP_48_7x7mm_P0_5mm, { +// mcu.ic +const U2 = board.add(LQFP_48_7x7mm_P0_5mm, { translate: pt(0.203, 0.203), rotate: 0, - id: 'mcu_ic' + id: 'U2' }) -const mcu_pwr_cap_0__cap = board.add(C_0805_2012Metric, { +// mcu.pwr_cap[0].cap +const C5 = board.add(C_0805_2012Metric, { translate: pt(0.067, 0.483), rotate: 0, - id: 'mcu_pwr_cap_0__cap' + id: 'C5' }) -const mcu_pwr_cap_1__cap = board.add(C_0603_1608Metric, { +// mcu.pwr_cap[1].cap +const C6 = board.add(C_0603_1608Metric, { translate: pt(0.231, 0.474), rotate: 0, - id: 'mcu_pwr_cap_1__cap' + id: 'C6' }) -const mcu_pwr_cap_2__cap = board.add(C_0603_1608Metric, { +// mcu.pwr_cap[2].cap +const C7 = board.add(C_0603_1608Metric, { translate: pt(0.387, 0.474), rotate: 0, - id: 'mcu_pwr_cap_2__cap' + id: 'C7' }) -const mcu_pwr_cap_3__cap = board.add(C_0603_1608Metric, { +// mcu.pwr_cap[3].cap +const C8 = board.add(C_0603_1608Metric, { translate: pt(0.543, 0.474), rotate: 0, - id: 'mcu_pwr_cap_3__cap' + id: 'C8' }) -const mcu_vdda_cap_0_cap = board.add(C_0603_1608Metric, { +// mcu.vdda_cap_0.cap +const C9 = board.add(C_0603_1608Metric, { translate: pt(0.699, 0.474), rotate: 0, - id: 'mcu_vdda_cap_0_cap' + id: 'C9' }) -const mcu_vdda_cap_1_cap = board.add(C_0603_1608Metric, { +// mcu.vdda_cap_1.cap +const C10 = board.add(C_0603_1608Metric, { translate: pt(0.058, 0.590), rotate: 0, - id: 'mcu_vdda_cap_1_cap' + id: 'C10' }) -const sw_package = board.add(SW_SPST_SKQG_WithoutStem, { +// sw.package +const SW1 = board.add(SW_SPST_SKQG_WithoutStem, { translate: pt(0.714, 0.849), rotate: 0, - id: 'sw_package' + id: 'SW1' }) -const led_0__package = board.add(LED_0603_1608Metric, { - translate: pt(0.058, 1.212), rotate: 0, - id: 'led_0__package' -}) -const led_0__res = board.add(R_0603_1608Metric, { - translate: pt(0.058, 1.309), rotate: 0, - id: 'led_0__res' -}) -const led_1__package = board.add(LED_0603_1608Metric, { +// led[0].package +const D1 = board.add(LED_0603_1608Metric, { translate: pt(1.058, 0.766), rotate: 0, - id: 'led_1__package' + id: 'D1' }) -const led_1__res = board.add(R_0603_1608Metric, { +// led[0].res +const R5 = board.add(R_0603_1608Metric, { translate: pt(1.057, 0.863), rotate: 0, - id: 'led_1__res' + id: 'R5' }) -const led_2__package = board.add(LED_0603_1608Metric, { - translate: pt(0.293, 1.212), rotate: 0, - id: 'led_2__package' -}) -const led_2__res = board.add(R_0603_1608Metric, { - translate: pt(0.293, 1.309), rotate: 0, - id: 'led_2__res' -}) -const led_3__package = board.add(LED_0603_1608Metric, { +// led[1].package +const D2 = board.add(LED_0603_1608Metric, { translate: pt(1.293, 0.766), rotate: 0, - id: 'led_3__package' + id: 'D2' }) -const led_3__res = board.add(R_0603_1608Metric, { +// led[1].res +const R6 = board.add(R_0603_1608Metric, { translate: pt(1.292, 0.863), rotate: 0, - id: 'led_3__res' + id: 'R6' }) +// led[2].package +const D3 = board.add(LED_0603_1608Metric, { + translate: pt(0.058, 1.212), rotate: 0, + id: 'D3' +}) +// led[2].res +const R7 = board.add(R_0603_1608Metric, { + translate: pt(0.058, 1.309), rotate: 0, + id: 'R7' +}) +// led[3].package +const D4 = board.add(LED_0603_1608Metric, { + translate: pt(0.293, 1.212), rotate: 0, + id: 'D4' +}) +// led[3].res +const R8 = board.add(R_0603_1608Metric, { + translate: pt(0.293, 1.309), rotate: 0, + id: 'R8' +}) + +board.setNetlist([ + {name: "usb.gnd", pads: [["J1", "A1"], ["J1", "B12"], ["J1", "B1"], ["J1", "A12"], ["U1", "1"], ["U2", "8"], ["U2", "23"], ["U2", "35"], ["U2", "47"], ["U2", "44"], ["SW1", "2"], ["R5", "2"], ["R6", "2"], ["R7", "2"], ["R8", "2"], ["J1", "S1"], ["C1", "2"], ["C5", "2"], ["C6", "2"], ["C7", "2"], ["C8", "2"], ["C9", "2"], ["C10", "2"], ["R4", "2"], ["R1", "1"], ["R2", "1"], ["J2", "3"], ["J2", "5"], ["J2", "9"], ["C3", "2"], ["C4", "2"]]}, + {name: "usb.pwr", pads: [["J1", "A4"], ["J1", "B9"], ["J1", "B4"], ["J1", "A9"], ["U1", "3"], ["U1", "5"], ["C1", "1"], ["C3", "1"]]}, + {name: "reg.pwr_out", pads: [["U2", "1"], ["U2", "9"], ["U2", "24"], ["U2", "36"], ["U2", "48"], ["R3", "1"], ["J2", "1"], ["C5", "1"], ["C6", "1"], ["C7", "1"], ["C8", "1"], ["C9", "1"], ["C10", "1"], ["L1", "2"], ["C4", "1"]]}, + {name: "sw.out", pads: [["U2", "10"], ["SW1", "1"]]}, + {name: "led[0].signal", pads: [["U2", "11"], ["D1", "2"]]}, + {name: "led[1].signal", pads: [["U2", "12"], ["D2", "2"]]}, + {name: "led[2].signal", pads: [["U2", "13"], ["D3", "2"]]}, + {name: "led[3].signal", pads: [["U2", "14"], ["D4", "2"]]}, + {name: "usb.usb.dp", pads: [["J1", "A6"], ["J1", "B6"]]}, + {name: "usb.usb.dm", pads: [["J1", "A7"], ["J1", "B7"]]}, + {name: "usb.conn.cc.cc1", pads: [["J1", "A5"], ["R1", "2"]]}, + {name: "usb.conn.cc.cc2", pads: [["J1", "B5"], ["R2", "2"]]}, + {name: "reg.fb.output", pads: [["U1", "4"], ["R3", "2"], ["R4", "1"]]}, + {name: "reg.vbst_cap.neg", pads: [["C2", "2"], ["U1", "2"], ["L1", "1"]]}, + {name: "reg.vbst_cap.pos", pads: [["C2", "1"], ["U1", "6"]]}, + {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.swo", pads: [["J2", "6"]]}, + {name: "mcu.swd.tdi", pads: [["J2", "8"]]}, + {name: "mcu.ic.osc.xtal_in", pads: [["U2", "5"]]}, + {name: "mcu.ic.osc.xtal_out", pads: [["U2", "6"]]}, + {name: "led[0].res.a", pads: [["R5", "1"], ["D1", "1"]]}, + {name: "led[1].res.a", pads: [["R6", "1"], ["D2", "1"]]}, + {name: "led[2].res.a", pads: [["R7", "1"], ["D3", "1"]]}, + {name: "led[3].res.a", pads: [["R8", "1"], ["D4", "1"]]} +]) const limit0 = pt(-0.07874015748031496, -0.07874015748031496); const limit1 = pt(1.4688976377952758, 1.455511811023622); diff --git a/examples/TestBlinkyMicro/TestBlinkyMicro.svgpcb.js b/examples/TestBlinkyMicro/TestBlinkyMicro.svgpcb.js index 7d20c0054..cf4c20eb7 100644 --- a/examples/TestBlinkyMicro/TestBlinkyMicro.svgpcb.js +++ b/examples/TestBlinkyMicro/TestBlinkyMicro.svgpcb.js @@ -1,113 +1,167 @@ const board = new PCB(); -const usb_conn = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { +// usb.conn +const J1 = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { translate: pt(2.750, 0.165), rotate: 0, - id: 'usb_conn' + id: 'J1' }) -const usb_cc_pull_cc1_res = board.add(R_0603_1608Metric, { +// usb.cc_pull.cc1.res +const R1 = board.add(R_0603_1608Metric, { translate: pt(2.598, 0.420), rotate: 0, - id: 'usb_cc_pull_cc1_res' + id: 'R1' }) -const usb_cc_pull_cc2_res = board.add(R_0603_1608Metric, { +// usb.cc_pull.cc2.res +const R2 = board.add(R_0603_1608Metric, { translate: pt(2.754, 0.420), rotate: 0, - id: 'usb_cc_pull_cc2_res' + id: 'R2' }) -const reg_ic = board.add(SOT_23_6, { +// reg.ic +const U1 = board.add(SOT_23_6, { translate: pt(0.081, 1.809), rotate: 0, - id: 'reg_ic' + id: 'U1' }) -const reg_fb_div_top_res = board.add(R_0603_1608Metric, { +// reg.fb.div.top_res +const R3 = board.add(R_0603_1608Metric, { translate: pt(0.409, 1.944), rotate: 0, - id: 'reg_fb_div_top_res' + id: 'R3' }) -const reg_fb_div_bottom_res = board.add(R_0603_1608Metric, { +// reg.fb.div.bottom_res +const R4 = board.add(R_0603_1608Metric, { translate: pt(0.058, 2.061), rotate: 0, - id: 'reg_fb_div_bottom_res' + id: 'R4' }) -const reg_hf_in_cap_cap = board.add(C_0603_1608Metric, { +// reg.hf_in_cap.cap +const C1 = board.add(C_0603_1608Metric, { translate: pt(0.214, 2.061), rotate: 0, - id: 'reg_hf_in_cap_cap' + id: 'C1' }) -const reg_vbst_cap = board.add(C_0603_1608Metric, { +// reg.vbst_cap +const C2 = board.add(C_0603_1608Metric, { translate: pt(0.370, 2.061), rotate: 0, - id: 'reg_vbst_cap' + id: 'C2' }) -const reg_power_path_inductor = board.add(L_0805_2012Metric, { +// reg.power_path.inductor +const L1 = board.add(L_0805_2012Metric, { translate: pt(0.242, 1.949), rotate: 0, - id: 'reg_power_path_inductor' + id: 'L1' }) -const reg_power_path_in_cap_cap = board.add(C_0805_2012Metric, { +// reg.power_path.in_cap.cap +const C3 = board.add(C_0805_2012Metric, { translate: pt(0.268, 1.781), rotate: 0, - id: 'reg_power_path_in_cap_cap' + id: 'C3' }) -const reg_power_path_out_cap_cap = board.add(C_0805_2012Metric, { +// reg.power_path.out_cap.cap +const C4 = board.add(C_0805_2012Metric, { translate: pt(0.067, 1.954), rotate: 0, - id: 'reg_power_path_out_cap_cap' + id: 'C4' }) -const mcu_ic = board.add(ESP32_WROOM_32, { +// mcu.ic +const U2 = board.add(ESP32_WROOM_32, { translate: pt(0.945, 0.414), rotate: 0, - id: 'mcu_ic' + id: 'U2' }) -const mcu_vcc_cap0_cap = board.add(C_1206_3216Metric, { +// mcu.vcc_cap0.cap +const C5 = board.add(C_1206_3216Metric, { translate: pt(2.020, 0.789), rotate: 0, - id: 'mcu_vcc_cap0_cap' + id: 'C5' }) -const mcu_vcc_cap1_cap = board.add(C_0603_1608Metric, { +// mcu.vcc_cap1.cap +const C6 = board.add(C_0603_1608Metric, { translate: pt(2.208, 0.773), rotate: 0, - id: 'mcu_vcc_cap1_cap' + id: 'C6' }) -const mcu_prog_conn = board.add(PinHeader_1x04_P2_54mm_Vertical, { +// mcu.prog.conn +const J2 = board.add(PinHeader_1x04_P2_54mm_Vertical, { translate: pt(2.000, 0.370), rotate: 0, - id: 'mcu_prog_conn' + id: 'J2' }) -const mcu_boot_package = board.add(SW_SPST_SKQG_WithoutStem, { +// mcu.boot.package +const SW1 = board.add(SW_SPST_SKQG_WithoutStem, { translate: pt(2.096, 0.593), rotate: 0, - id: 'mcu_boot_package' + id: 'SW1' }) -const mcu_en_pull_rc_r = board.add(R_0603_1608Metric, { +// mcu.en_pull.rc.r +const R5 = board.add(R_0603_1608Metric, { translate: pt(2.364, 0.773), rotate: 0, - id: 'mcu_en_pull_rc_r' + id: 'R5' }) -const mcu_en_pull_rc_c = board.add(C_0603_1608Metric, { +// mcu.en_pull.rc.c +const C7 = board.add(C_0603_1608Metric, { translate: pt(1.987, 0.903), rotate: 0, - id: 'mcu_en_pull_rc_c' + id: 'C7' }) -const sw_package = board.add(SW_SPST_SKQG_WithoutStem, { +// sw.package +const SW2 = board.add(SW_SPST_SKQG_WithoutStem, { translate: pt(0.752, 1.854), rotate: 0, - id: 'sw_package' + id: 'SW2' }) -const led_0__package = board.add(LED_0603_1608Metric, { - translate: pt(1.566, 1.771), rotate: 0, - id: 'led_0__package' -}) -const led_0__res = board.add(R_0603_1608Metric, { - translate: pt(1.566, 1.868), rotate: 0, - id: 'led_0__res' -}) -const led_1__package = board.add(LED_0603_1608Metric, { +// led[0].package +const D1 = board.add(LED_0603_1608Metric, { translate: pt(1.096, 1.771), rotate: 0, - id: 'led_1__package' + id: 'D1' }) -const led_1__res = board.add(R_0603_1608Metric, { +// led[0].res +const R6 = board.add(R_0603_1608Metric, { translate: pt(1.096, 1.868), rotate: 0, - id: 'led_1__res' + id: 'R6' }) -const led_2__package = board.add(LED_0603_1608Metric, { - translate: pt(1.801, 1.771), rotate: 0, - id: 'led_2__package' -}) -const led_2__res = board.add(R_0603_1608Metric, { - translate: pt(1.801, 1.868), rotate: 0, - id: 'led_2__res' -}) -const led_3__package = board.add(LED_0603_1608Metric, { +// led[1].package +const D2 = board.add(LED_0603_1608Metric, { translate: pt(1.331, 1.771), rotate: 0, - id: 'led_3__package' + id: 'D2' }) -const led_3__res = board.add(R_0603_1608Metric, { +// led[1].res +const R7 = board.add(R_0603_1608Metric, { translate: pt(1.331, 1.868), rotate: 0, - id: 'led_3__res' + id: 'R7' }) +// led[2].package +const D3 = board.add(LED_0603_1608Metric, { + translate: pt(1.566, 1.771), rotate: 0, + id: 'D3' +}) +// led[2].res +const R8 = board.add(R_0603_1608Metric, { + translate: pt(1.566, 1.868), rotate: 0, + id: 'R8' +}) +// led[3].package +const D4 = board.add(LED_0603_1608Metric, { + translate: pt(1.801, 1.771), rotate: 0, + id: 'D4' +}) +// led[3].res +const R9 = board.add(R_0603_1608Metric, { + translate: pt(1.801, 1.868), rotate: 0, + id: 'R9' +}) + +board.setNetlist([ + {name: "usb.gnd", pads: [["J1", "A1"], ["J1", "B12"], ["J1", "B1"], ["J1", "A12"], ["U1", "1"], ["U2", "1"], ["U2", "15"], ["U2", "38"], ["U2", "39"], ["SW2", "2"], ["R6", "2"], ["R7", "2"], ["R8", "2"], ["R9", "2"], ["J1", "S1"], ["C1", "2"], ["C5", "2"], ["C6", "2"], ["J2", "4"], ["SW1", "2"], ["R4", "2"], ["C7", "2"], ["R1", "1"], ["R2", "1"], ["C3", "2"], ["C4", "2"]]}, + {name: "usb.pwr", pads: [["J1", "A4"], ["J1", "B9"], ["J1", "B4"], ["J1", "A9"], ["U1", "3"], ["U1", "5"], ["C1", "1"], ["C3", "1"]]}, + {name: "reg.pwr_out", pads: [["U2", "2"], ["R3", "1"], ["C5", "1"], ["C6", "1"], ["J2", "1"], ["R5", "1"], ["L1", "2"], ["C4", "1"]]}, + {name: "sw.out", pads: [["U2", "8"], ["SW2", "1"]]}, + {name: "led[0].signal", pads: [["U2", "26"], ["D1", "2"]]}, + {name: "led[1].signal", pads: [["U2", "27"], ["D2", "2"]]}, + {name: "led[2].signal", pads: [["U2", "28"], ["D3", "2"]]}, + {name: "led[3].signal", pads: [["U2", "29"], ["D4", "2"]]}, + {name: "usb.usb.dp", pads: [["J1", "A6"], ["J1", "B6"]]}, + {name: "usb.usb.dm", pads: [["J1", "A7"], ["J1", "B7"]]}, + {name: "usb.conn.cc.cc1", pads: [["J1", "A5"], ["R1", "2"]]}, + {name: "usb.conn.cc.cc2", pads: [["J1", "B5"], ["R2", "2"]]}, + {name: "reg.fb.output", pads: [["U1", "4"], ["R3", "2"], ["R4", "1"]]}, + {name: "reg.vbst_cap.neg", pads: [["C2", "2"], ["U1", "2"], ["L1", "1"]]}, + {name: "reg.vbst_cap.pos", pads: [["C2", "1"], ["U1", "6"]]}, + {name: "mcu.program_uart_node.a_tx", pads: [["U2", "35"], ["J2", "2"]]}, + {name: "mcu.program_uart_node.b_tx", pads: [["U2", "34"], ["J2", "3"]]}, + {name: "mcu.program_en_node", pads: [["U2", "3"], ["R5", "2"], ["C7", "1"]]}, + {name: "mcu.program_boot_node", pads: [["U2", "25"], ["SW1", "1"]]}, + {name: "mcu.ic.io2", pads: [["U2", "24"]]}, + {name: "led[0].res.a", pads: [["R6", "1"], ["D1", "1"]]}, + {name: "led[1].res.a", pads: [["R7", "1"], ["D2", "1"]]}, + {name: "led[2].res.a", pads: [["R8", "1"], ["D3", "1"]]}, + {name: "led[3].res.a", pads: [["R9", "1"], ["D4", "1"]]} +]) const limit0 = pt(-0.07874015748031496, -0.07874015748031496); const limit1 = pt(3.077165354330709, 2.20748031496063); diff --git a/examples/TestBlinkyPacked/TestBlinkyPacked.svgpcb.js b/examples/TestBlinkyPacked/TestBlinkyPacked.svgpcb.js index 3df3a407c..8c8beac41 100644 --- a/examples/TestBlinkyPacked/TestBlinkyPacked.svgpcb.js +++ b/examples/TestBlinkyPacked/TestBlinkyPacked.svgpcb.js @@ -1,102 +1,153 @@ const board = new PCB(); -const usb_conn = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { +// usb.conn +const J1 = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { translate: pt(0.209, 1.907), rotate: 0, - id: 'usb_conn' + id: 'J1' }) -const usb_cc_pull_cc1_res = board.add(R_0603_1608Metric, { +// usb.cc_pull.cc1.res +const R1 = board.add(R_0603_1608Metric, { translate: pt(0.058, 2.162), rotate: 0, - id: 'usb_cc_pull_cc1_res' + id: 'R1' }) -const usb_cc_pull_cc2_res = board.add(R_0603_1608Metric, { +// usb.cc_pull.cc2.res +const R2 = board.add(R_0603_1608Metric, { translate: pt(0.214, 2.162), rotate: 0, - id: 'usb_cc_pull_cc2_res' + id: 'R2' }) -const reg_ic = board.add(SOT_23_6, { +// reg.ic +const U1 = board.add(SOT_23_6, { translate: pt(0.618, 1.809), rotate: 0, - id: 'reg_ic' + id: 'U1' }) -const reg_fb_div_top_res = board.add(R_0603_1608Metric, { +// reg.fb.div.top_res +const R3 = board.add(R_0603_1608Metric, { translate: pt(0.946, 1.944), rotate: 0, - id: 'reg_fb_div_top_res' + id: 'R3' }) -const reg_fb_div_bottom_res = board.add(R_0603_1608Metric, { +// reg.fb.div.bottom_res +const R4 = board.add(R_0603_1608Metric, { translate: pt(0.595, 2.061), rotate: 0, - id: 'reg_fb_div_bottom_res' + id: 'R4' }) -const reg_hf_in_cap_cap = board.add(C_0603_1608Metric, { +// reg.hf_in_cap.cap +const C1 = board.add(C_0603_1608Metric, { translate: pt(0.751, 2.061), rotate: 0, - id: 'reg_hf_in_cap_cap' + id: 'C1' }) -const reg_vbst_cap = board.add(C_0603_1608Metric, { +// reg.vbst_cap +const C2 = board.add(C_0603_1608Metric, { translate: pt(0.907, 2.061), rotate: 0, - id: 'reg_vbst_cap' + id: 'C2' }) -const reg_power_path_inductor = board.add(L_0805_2012Metric, { +// reg.power_path.inductor +const L1 = board.add(L_0805_2012Metric, { translate: pt(0.779, 1.949), rotate: 0, - id: 'reg_power_path_inductor' + id: 'L1' }) -const reg_power_path_in_cap_cap = board.add(C_0805_2012Metric, { +// reg.power_path.in_cap.cap +const C3 = board.add(C_0805_2012Metric, { translate: pt(0.805, 1.781), rotate: 0, - id: 'reg_power_path_in_cap_cap' + id: 'C3' }) -const reg_power_path_out_cap_cap = board.add(C_0805_2012Metric, { +// reg.power_path.out_cap.cap +const C4 = board.add(C_0805_2012Metric, { translate: pt(0.604, 1.954), rotate: 0, - id: 'reg_power_path_out_cap_cap' + id: 'C4' }) -const mcu_ic = board.add(ESP32_WROOM_32, { +// mcu.ic +const U2 = board.add(ESP32_WROOM_32, { translate: pt(0.945, 0.414), rotate: 0, - id: 'mcu_ic' + id: 'U2' }) -const mcu_vcc_cap0_cap = board.add(C_1206_3216Metric, { +// mcu.vcc_cap0.cap +const C5 = board.add(C_1206_3216Metric, { translate: pt(2.020, 0.789), rotate: 0, - id: 'mcu_vcc_cap0_cap' + id: 'C5' }) -const mcu_vcc_cap1_cap = board.add(C_0603_1608Metric, { +// mcu.vcc_cap1.cap +const C6 = board.add(C_0603_1608Metric, { translate: pt(2.208, 0.773), rotate: 0, - id: 'mcu_vcc_cap1_cap' + id: 'C6' }) -const mcu_prog_conn = board.add(PinHeader_1x04_P2_54mm_Vertical, { +// mcu.prog.conn +const J2 = board.add(PinHeader_1x04_P2_54mm_Vertical, { translate: pt(2.000, 0.370), rotate: 0, - id: 'mcu_prog_conn' + id: 'J2' }) -const mcu_boot_package = board.add(SW_SPST_SKQG_WithoutStem, { +// mcu.boot.package +const SW1 = board.add(SW_SPST_SKQG_WithoutStem, { translate: pt(2.096, 0.593), rotate: 0, - id: 'mcu_boot_package' + id: 'SW1' }) -const mcu_en_pull_rc_r = board.add(R_0603_1608Metric, { +// mcu.en_pull.rc.r +const R5 = board.add(R_0603_1608Metric, { translate: pt(2.364, 0.773), rotate: 0, - id: 'mcu_en_pull_rc_r' + id: 'R5' }) -const mcu_en_pull_rc_c = board.add(C_0603_1608Metric, { +// mcu.en_pull.rc.c +const C7 = board.add(C_0603_1608Metric, { translate: pt(1.987, 0.903), rotate: 0, - id: 'mcu_en_pull_rc_c' + id: 'C7' }) -const sw_package = board.add(SW_SPST_SKQG_WithoutStem, { +// sw.package +const SW2 = board.add(SW_SPST_SKQG_WithoutStem, { translate: pt(1.289, 1.854), rotate: 0, - id: 'sw_package' + id: 'SW2' }) -const led_led_0__package = board.add(LED_0603_1608Metric, { +// led.led[0].package +const D1 = board.add(LED_0603_1608Metric, { translate: pt(1.633, 1.771), rotate: 0, - id: 'led_led_0__package' + id: 'D1' }) -const led_led_1__package = board.add(LED_0603_1608Metric, { +// led.led[1].package +const D2 = board.add(LED_0603_1608Metric, { translate: pt(1.789, 1.771), rotate: 0, - id: 'led_led_1__package' + id: 'D2' }) -const led_led_2__package = board.add(LED_0603_1608Metric, { +// led.led[2].package +const D3 = board.add(LED_0603_1608Metric, { translate: pt(1.633, 1.868), rotate: 0, - id: 'led_led_2__package' + id: 'D3' }) -const led_led_3__package = board.add(LED_0603_1608Metric, { +// led.led[3].package +const D4 = board.add(LED_0603_1608Metric, { translate: pt(1.789, 1.868), rotate: 0, - id: 'led_led_3__package' + id: 'D4' }) -const res_pack = board.add(R_Array_Concave_4x0603, { +// res_pack +const RN1 = board.add(R_Array_Concave_4x0603, { translate: pt(2.027, 1.816), rotate: 0, - id: 'res_pack' + id: 'RN1' }) +board.setNetlist([ + {name: "usb.gnd", pads: [["J1", "A1"], ["J1", "B12"], ["J1", "B1"], ["J1", "A12"], ["U1", "1"], ["U2", "1"], ["U2", "15"], ["U2", "38"], ["U2", "39"], ["SW2", "2"], ["J1", "S1"], ["C1", "2"], ["C5", "2"], ["C6", "2"], ["J2", "4"], ["SW1", "2"], ["R4", "2"], ["C7", "2"], ["RN1", "8"], ["RN1", "7"], ["RN1", "6"], ["RN1", "5"], ["R1", "1"], ["R2", "1"], ["C3", "2"], ["C4", "2"]]}, + {name: "usb.pwr", pads: [["J1", "A4"], ["J1", "B9"], ["J1", "B4"], ["J1", "A9"], ["U1", "3"], ["U1", "5"], ["C1", "1"], ["C3", "1"]]}, + {name: "reg.pwr_out", pads: [["U2", "2"], ["R3", "1"], ["C5", "1"], ["C6", "1"], ["J2", "1"], ["R5", "1"], ["L1", "2"], ["C4", "1"]]}, + {name: "sw.out", pads: [["U2", "8"], ["SW2", "1"]]}, + {name: "mcu.gpio.led_0", pads: [["U2", "26"], ["D1", "2"]]}, + {name: "mcu.gpio.led_1", pads: [["U2", "27"], ["D2", "2"]]}, + {name: "mcu.gpio.led_2", pads: [["U2", "28"], ["D3", "2"]]}, + {name: "mcu.gpio.led_3", pads: [["U2", "29"], ["D4", "2"]]}, + {name: "res_pack.a.0", pads: [["RN1", "1"], ["D1", "1"]]}, + {name: "res_pack.a.1", pads: [["RN1", "2"], ["D2", "1"]]}, + {name: "res_pack.a.2", pads: [["RN1", "3"], ["D3", "1"]]}, + {name: "res_pack.a.3", pads: [["RN1", "4"], ["D4", "1"]]}, + {name: "usb.usb.dp", pads: [["J1", "A6"], ["J1", "B6"]]}, + {name: "usb.usb.dm", pads: [["J1", "A7"], ["J1", "B7"]]}, + {name: "usb.conn.cc.cc1", pads: [["J1", "A5"], ["R1", "2"]]}, + {name: "usb.conn.cc.cc2", pads: [["J1", "B5"], ["R2", "2"]]}, + {name: "reg.fb.output", pads: [["U1", "4"], ["R3", "2"], ["R4", "1"]]}, + {name: "reg.vbst_cap.neg", pads: [["C2", "2"], ["U1", "2"], ["L1", "1"]]}, + {name: "reg.vbst_cap.pos", pads: [["C2", "1"], ["U1", "6"]]}, + {name: "mcu.program_uart_node.a_tx", pads: [["U2", "35"], ["J2", "2"]]}, + {name: "mcu.program_uart_node.b_tx", pads: [["U2", "34"], ["J2", "3"]]}, + {name: "mcu.program_en_node", pads: [["U2", "3"], ["R5", "2"], ["C7", "1"]]}, + {name: "mcu.program_boot_node", pads: [["U2", "25"], ["SW1", "1"]]}, + {name: "mcu.ic.io2", pads: [["U2", "24"]]} +]) + const limit0 = pt(-0.07874015748031496, -0.07874015748031496); const limit1 = pt(2.5401574803149614, 2.308661417322835); const xMin = Math.min(limit0[0], limit1[0]); diff --git a/examples/TestBlinkyWithLibrary/TestBlinkyWithLibrary.svgpcb.js b/examples/TestBlinkyWithLibrary/TestBlinkyWithLibrary.svgpcb.js index bb09a7fd0..b4786cc0f 100644 --- a/examples/TestBlinkyWithLibrary/TestBlinkyWithLibrary.svgpcb.js +++ b/examples/TestBlinkyWithLibrary/TestBlinkyWithLibrary.svgpcb.js @@ -1,122 +1,179 @@ const board = new PCB(); -const usb_conn = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { +// usb.conn +const J1 = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { translate: pt(2.750, 0.165), rotate: 0, - id: 'usb_conn' + id: 'J1' }) -const usb_cc_pull_cc1_res = board.add(R_0603_1608Metric, { +// usb.cc_pull.cc1.res +const R1 = board.add(R_0603_1608Metric, { translate: pt(2.598, 0.420), rotate: 0, - id: 'usb_cc_pull_cc1_res' + id: 'R1' }) -const usb_cc_pull_cc2_res = board.add(R_0603_1608Metric, { +// usb.cc_pull.cc2.res +const R2 = board.add(R_0603_1608Metric, { translate: pt(2.754, 0.420), rotate: 0, - id: 'usb_cc_pull_cc2_res' + id: 'R2' }) -const reg_ic = board.add(SOT_23_6, { +// reg.ic +const U1 = board.add(SOT_23_6, { translate: pt(2.621, 0.633), rotate: 0, - id: 'reg_ic' + id: 'U1' }) -const reg_fb_div_top_res = board.add(R_0603_1608Metric, { +// reg.fb.div.top_res +const R3 = board.add(R_0603_1608Metric, { translate: pt(2.949, 0.769), rotate: 0, - id: 'reg_fb_div_top_res' + id: 'R3' }) -const reg_fb_div_bottom_res = board.add(R_0603_1608Metric, { +// reg.fb.div.bottom_res +const R4 = board.add(R_0603_1608Metric, { translate: pt(2.598, 0.885), rotate: 0, - id: 'reg_fb_div_bottom_res' + id: 'R4' }) -const reg_hf_in_cap_cap = board.add(C_0603_1608Metric, { +// reg.hf_in_cap.cap +const C1 = board.add(C_0603_1608Metric, { translate: pt(2.754, 0.885), rotate: 0, - id: 'reg_hf_in_cap_cap' + id: 'C1' }) -const reg_vbst_cap = board.add(C_0603_1608Metric, { +// reg.vbst_cap +const C2 = board.add(C_0603_1608Metric, { translate: pt(2.910, 0.885), rotate: 0, - id: 'reg_vbst_cap' + id: 'C2' }) -const reg_power_path_inductor = board.add(L_0805_2012Metric, { +// reg.power_path.inductor +const L1 = board.add(L_0805_2012Metric, { translate: pt(2.782, 0.773), rotate: 0, - id: 'reg_power_path_inductor' + id: 'L1' }) -const reg_power_path_in_cap_cap = board.add(C_0805_2012Metric, { +// reg.power_path.in_cap.cap +const C3 = board.add(C_0805_2012Metric, { translate: pt(2.808, 0.605), rotate: 0, - id: 'reg_power_path_in_cap_cap' + id: 'C3' }) -const reg_power_path_out_cap_cap = board.add(C_0805_2012Metric, { +// reg.power_path.out_cap.cap +const C4 = board.add(C_0805_2012Metric, { translate: pt(2.607, 0.778), rotate: 0, - id: 'reg_power_path_out_cap_cap' + id: 'C4' }) -const mcu_ic = board.add(ESP32_WROOM_32, { +// mcu.ic +const U2 = board.add(ESP32_WROOM_32, { translate: pt(0.945, 0.414), rotate: 0, - id: 'mcu_ic' + id: 'U2' }) -const mcu_vcc_cap0_cap = board.add(C_1206_3216Metric, { +// mcu.vcc_cap0.cap +const C5 = board.add(C_1206_3216Metric, { translate: pt(2.020, 0.789), rotate: 0, - id: 'mcu_vcc_cap0_cap' + id: 'C5' }) -const mcu_vcc_cap1_cap = board.add(C_0603_1608Metric, { +// mcu.vcc_cap1.cap +const C6 = board.add(C_0603_1608Metric, { translate: pt(2.208, 0.773), rotate: 0, - id: 'mcu_vcc_cap1_cap' + id: 'C6' }) -const mcu_prog_conn = board.add(PinHeader_1x04_P2_54mm_Vertical, { +// mcu.prog.conn +const J2 = board.add(PinHeader_1x04_P2_54mm_Vertical, { translate: pt(2.000, 0.370), rotate: 0, - id: 'mcu_prog_conn' + id: 'J2' }) -const mcu_boot_package = board.add(SW_SPST_SKQG_WithoutStem, { +// mcu.boot.package +const SW1 = board.add(SW_SPST_SKQG_WithoutStem, { translate: pt(2.096, 0.593), rotate: 0, - id: 'mcu_boot_package' + id: 'SW1' }) -const mcu_en_pull_rc_r = board.add(R_0603_1608Metric, { +// mcu.en_pull.rc.r +const R5 = board.add(R_0603_1608Metric, { translate: pt(2.364, 0.773), rotate: 0, - id: 'mcu_en_pull_rc_r' + id: 'R5' }) -const mcu_en_pull_rc_c = board.add(C_0603_1608Metric, { +// mcu.en_pull.rc.c +const C7 = board.add(C_0603_1608Metric, { translate: pt(1.987, 0.903), rotate: 0, - id: 'mcu_en_pull_rc_c' + id: 'C7' }) -const sw_package = board.add(SW_SPST_SKQG_WithoutStem, { +// sw.package +const SW2 = board.add(SW_SPST_SKQG_WithoutStem, { translate: pt(2.707, 1.493), rotate: 0, - id: 'sw_package' + id: 'SW2' }) -const led_0__package = board.add(LED_0603_1608Metric, { - translate: pt(0.528, 1.771), rotate: 0, - id: 'led_0__package' -}) -const led_0__res = board.add(R_0603_1608Metric, { - translate: pt(0.528, 1.868), rotate: 0, - id: 'led_0__res' -}) -const led_1__package = board.add(LED_0603_1608Metric, { +// led[0].package +const D1 = board.add(LED_0603_1608Metric, { translate: pt(0.058, 1.771), rotate: 0, - id: 'led_1__package' + id: 'D1' }) -const led_1__res = board.add(R_0603_1608Metric, { +// led[0].res +const R6 = board.add(R_0603_1608Metric, { translate: pt(0.058, 1.868), rotate: 0, - id: 'led_1__res' + id: 'R6' }) -const led_2__package = board.add(LED_0603_1608Metric, { - translate: pt(0.763, 1.771), rotate: 0, - id: 'led_2__package' -}) -const led_2__res = board.add(R_0603_1608Metric, { - translate: pt(0.763, 1.868), rotate: 0, - id: 'led_2__res' -}) -const led_3__package = board.add(LED_0603_1608Metric, { +// led[1].package +const D2 = board.add(LED_0603_1608Metric, { translate: pt(0.293, 1.771), rotate: 0, - id: 'led_3__package' + id: 'D2' }) -const led_3__res = board.add(R_0603_1608Metric, { +// led[1].res +const R7 = board.add(R_0603_1608Metric, { translate: pt(0.293, 1.868), rotate: 0, - id: 'led_3__res' + id: 'R7' }) -const mag_ic = board.add(SOT_23, { +// led[2].package +const D3 = board.add(LED_0603_1608Metric, { + translate: pt(0.528, 1.771), rotate: 0, + id: 'D3' +}) +// led[2].res +const R8 = board.add(R_0603_1608Metric, { + translate: pt(0.528, 1.868), rotate: 0, + id: 'R8' +}) +// led[3].package +const D4 = board.add(LED_0603_1608Metric, { + translate: pt(0.763, 1.771), rotate: 0, + id: 'D4' +}) +// led[3].res +const R9 = board.add(R_0603_1608Metric, { + translate: pt(0.763, 1.868), rotate: 0, + id: 'R9' +}) +// mag.ic +const U3 = board.add(SOT_23, { translate: pt(2.616, 1.099), rotate: 0, - id: 'mag_ic' + id: 'U3' }) -const mag_cap_cap = board.add(C_0603_1608Metric, { +// mag.cap.cap +const C8 = board.add(C_0603_1608Metric, { translate: pt(2.598, 1.234), rotate: 0, - id: 'mag_cap_cap' + id: 'C8' }) +board.setNetlist([ + {name: "usb.gnd", pads: [["J1", "A1"], ["J1", "B12"], ["J1", "B1"], ["J1", "A12"], ["U1", "1"], ["U2", "1"], ["U2", "15"], ["U2", "38"], ["U2", "39"], ["SW2", "2"], ["R6", "2"], ["R7", "2"], ["R8", "2"], ["R9", "2"], ["U3", "3"], ["J1", "S1"], ["C1", "2"], ["C5", "2"], ["C6", "2"], ["J2", "4"], ["SW1", "2"], ["C8", "2"], ["R4", "2"], ["C7", "2"], ["R1", "1"], ["R2", "1"], ["C3", "2"], ["C4", "2"]]}, + {name: "usb.pwr", pads: [["J1", "A4"], ["J1", "B9"], ["J1", "B4"], ["J1", "A9"], ["U1", "3"], ["U1", "5"], ["C1", "1"], ["C3", "1"]]}, + {name: "reg.pwr_out", pads: [["U2", "2"], ["U3", "1"], ["R3", "1"], ["C5", "1"], ["C6", "1"], ["J2", "1"], ["C8", "1"], ["R5", "1"], ["L1", "2"], ["C4", "1"]]}, + {name: "sw.out", pads: [["U2", "8"], ["SW2", "1"]]}, + {name: "led[0].signal", pads: [["U2", "26"], ["D1", "2"]]}, + {name: "led[1].signal", pads: [["U2", "27"], ["D2", "2"]]}, + {name: "led[2].signal", pads: [["U2", "28"], ["D3", "2"]]}, + {name: "led[3].signal", pads: [["U2", "29"], ["D4", "2"]]}, + {name: "mag.out", pads: [["U2", "9"], ["U3", "2"]]}, + {name: "usb.usb.dp", pads: [["J1", "A6"], ["J1", "B6"]]}, + {name: "usb.usb.dm", pads: [["J1", "A7"], ["J1", "B7"]]}, + {name: "usb.conn.cc.cc1", pads: [["J1", "A5"], ["R1", "2"]]}, + {name: "usb.conn.cc.cc2", pads: [["J1", "B5"], ["R2", "2"]]}, + {name: "reg.fb.output", pads: [["U1", "4"], ["R3", "2"], ["R4", "1"]]}, + {name: "reg.vbst_cap.neg", pads: [["C2", "2"], ["U1", "2"], ["L1", "1"]]}, + {name: "reg.vbst_cap.pos", pads: [["C2", "1"], ["U1", "6"]]}, + {name: "mcu.program_uart_node.a_tx", pads: [["U2", "35"], ["J2", "2"]]}, + {name: "mcu.program_uart_node.b_tx", pads: [["U2", "34"], ["J2", "3"]]}, + {name: "mcu.program_en_node", pads: [["U2", "3"], ["R5", "2"], ["C7", "1"]]}, + {name: "mcu.program_boot_node", pads: [["U2", "25"], ["SW1", "1"]]}, + {name: "mcu.ic.io2", pads: [["U2", "24"]]}, + {name: "led[0].res.a", pads: [["R6", "1"], ["D1", "1"]]}, + {name: "led[1].res.a", pads: [["R7", "1"], ["D2", "1"]]}, + {name: "led[2].res.a", pads: [["R8", "1"], ["D3", "1"]]}, + {name: "led[3].res.a", pads: [["R9", "1"], ["D4", "1"]]} +]) + const limit0 = pt(-0.07874015748031496, -0.07874015748031496); const limit1 = pt(3.1251968503937015, 2.01496062992126); const xMin = Math.min(limit0[0], limit1[0]); diff --git a/examples/TestBlinkyWithLibraryExport/TestBlinkyWithLibraryExport.svgpcb.js b/examples/TestBlinkyWithLibraryExport/TestBlinkyWithLibraryExport.svgpcb.js index bb09a7fd0..b4786cc0f 100644 --- a/examples/TestBlinkyWithLibraryExport/TestBlinkyWithLibraryExport.svgpcb.js +++ b/examples/TestBlinkyWithLibraryExport/TestBlinkyWithLibraryExport.svgpcb.js @@ -1,122 +1,179 @@ const board = new PCB(); -const usb_conn = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { +// usb.conn +const J1 = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { translate: pt(2.750, 0.165), rotate: 0, - id: 'usb_conn' + id: 'J1' }) -const usb_cc_pull_cc1_res = board.add(R_0603_1608Metric, { +// usb.cc_pull.cc1.res +const R1 = board.add(R_0603_1608Metric, { translate: pt(2.598, 0.420), rotate: 0, - id: 'usb_cc_pull_cc1_res' + id: 'R1' }) -const usb_cc_pull_cc2_res = board.add(R_0603_1608Metric, { +// usb.cc_pull.cc2.res +const R2 = board.add(R_0603_1608Metric, { translate: pt(2.754, 0.420), rotate: 0, - id: 'usb_cc_pull_cc2_res' + id: 'R2' }) -const reg_ic = board.add(SOT_23_6, { +// reg.ic +const U1 = board.add(SOT_23_6, { translate: pt(2.621, 0.633), rotate: 0, - id: 'reg_ic' + id: 'U1' }) -const reg_fb_div_top_res = board.add(R_0603_1608Metric, { +// reg.fb.div.top_res +const R3 = board.add(R_0603_1608Metric, { translate: pt(2.949, 0.769), rotate: 0, - id: 'reg_fb_div_top_res' + id: 'R3' }) -const reg_fb_div_bottom_res = board.add(R_0603_1608Metric, { +// reg.fb.div.bottom_res +const R4 = board.add(R_0603_1608Metric, { translate: pt(2.598, 0.885), rotate: 0, - id: 'reg_fb_div_bottom_res' + id: 'R4' }) -const reg_hf_in_cap_cap = board.add(C_0603_1608Metric, { +// reg.hf_in_cap.cap +const C1 = board.add(C_0603_1608Metric, { translate: pt(2.754, 0.885), rotate: 0, - id: 'reg_hf_in_cap_cap' + id: 'C1' }) -const reg_vbst_cap = board.add(C_0603_1608Metric, { +// reg.vbst_cap +const C2 = board.add(C_0603_1608Metric, { translate: pt(2.910, 0.885), rotate: 0, - id: 'reg_vbst_cap' + id: 'C2' }) -const reg_power_path_inductor = board.add(L_0805_2012Metric, { +// reg.power_path.inductor +const L1 = board.add(L_0805_2012Metric, { translate: pt(2.782, 0.773), rotate: 0, - id: 'reg_power_path_inductor' + id: 'L1' }) -const reg_power_path_in_cap_cap = board.add(C_0805_2012Metric, { +// reg.power_path.in_cap.cap +const C3 = board.add(C_0805_2012Metric, { translate: pt(2.808, 0.605), rotate: 0, - id: 'reg_power_path_in_cap_cap' + id: 'C3' }) -const reg_power_path_out_cap_cap = board.add(C_0805_2012Metric, { +// reg.power_path.out_cap.cap +const C4 = board.add(C_0805_2012Metric, { translate: pt(2.607, 0.778), rotate: 0, - id: 'reg_power_path_out_cap_cap' + id: 'C4' }) -const mcu_ic = board.add(ESP32_WROOM_32, { +// mcu.ic +const U2 = board.add(ESP32_WROOM_32, { translate: pt(0.945, 0.414), rotate: 0, - id: 'mcu_ic' + id: 'U2' }) -const mcu_vcc_cap0_cap = board.add(C_1206_3216Metric, { +// mcu.vcc_cap0.cap +const C5 = board.add(C_1206_3216Metric, { translate: pt(2.020, 0.789), rotate: 0, - id: 'mcu_vcc_cap0_cap' + id: 'C5' }) -const mcu_vcc_cap1_cap = board.add(C_0603_1608Metric, { +// mcu.vcc_cap1.cap +const C6 = board.add(C_0603_1608Metric, { translate: pt(2.208, 0.773), rotate: 0, - id: 'mcu_vcc_cap1_cap' + id: 'C6' }) -const mcu_prog_conn = board.add(PinHeader_1x04_P2_54mm_Vertical, { +// mcu.prog.conn +const J2 = board.add(PinHeader_1x04_P2_54mm_Vertical, { translate: pt(2.000, 0.370), rotate: 0, - id: 'mcu_prog_conn' + id: 'J2' }) -const mcu_boot_package = board.add(SW_SPST_SKQG_WithoutStem, { +// mcu.boot.package +const SW1 = board.add(SW_SPST_SKQG_WithoutStem, { translate: pt(2.096, 0.593), rotate: 0, - id: 'mcu_boot_package' + id: 'SW1' }) -const mcu_en_pull_rc_r = board.add(R_0603_1608Metric, { +// mcu.en_pull.rc.r +const R5 = board.add(R_0603_1608Metric, { translate: pt(2.364, 0.773), rotate: 0, - id: 'mcu_en_pull_rc_r' + id: 'R5' }) -const mcu_en_pull_rc_c = board.add(C_0603_1608Metric, { +// mcu.en_pull.rc.c +const C7 = board.add(C_0603_1608Metric, { translate: pt(1.987, 0.903), rotate: 0, - id: 'mcu_en_pull_rc_c' + id: 'C7' }) -const sw_package = board.add(SW_SPST_SKQG_WithoutStem, { +// sw.package +const SW2 = board.add(SW_SPST_SKQG_WithoutStem, { translate: pt(2.707, 1.493), rotate: 0, - id: 'sw_package' + id: 'SW2' }) -const led_0__package = board.add(LED_0603_1608Metric, { - translate: pt(0.528, 1.771), rotate: 0, - id: 'led_0__package' -}) -const led_0__res = board.add(R_0603_1608Metric, { - translate: pt(0.528, 1.868), rotate: 0, - id: 'led_0__res' -}) -const led_1__package = board.add(LED_0603_1608Metric, { +// led[0].package +const D1 = board.add(LED_0603_1608Metric, { translate: pt(0.058, 1.771), rotate: 0, - id: 'led_1__package' + id: 'D1' }) -const led_1__res = board.add(R_0603_1608Metric, { +// led[0].res +const R6 = board.add(R_0603_1608Metric, { translate: pt(0.058, 1.868), rotate: 0, - id: 'led_1__res' + id: 'R6' }) -const led_2__package = board.add(LED_0603_1608Metric, { - translate: pt(0.763, 1.771), rotate: 0, - id: 'led_2__package' -}) -const led_2__res = board.add(R_0603_1608Metric, { - translate: pt(0.763, 1.868), rotate: 0, - id: 'led_2__res' -}) -const led_3__package = board.add(LED_0603_1608Metric, { +// led[1].package +const D2 = board.add(LED_0603_1608Metric, { translate: pt(0.293, 1.771), rotate: 0, - id: 'led_3__package' + id: 'D2' }) -const led_3__res = board.add(R_0603_1608Metric, { +// led[1].res +const R7 = board.add(R_0603_1608Metric, { translate: pt(0.293, 1.868), rotate: 0, - id: 'led_3__res' + id: 'R7' }) -const mag_ic = board.add(SOT_23, { +// led[2].package +const D3 = board.add(LED_0603_1608Metric, { + translate: pt(0.528, 1.771), rotate: 0, + id: 'D3' +}) +// led[2].res +const R8 = board.add(R_0603_1608Metric, { + translate: pt(0.528, 1.868), rotate: 0, + id: 'R8' +}) +// led[3].package +const D4 = board.add(LED_0603_1608Metric, { + translate: pt(0.763, 1.771), rotate: 0, + id: 'D4' +}) +// led[3].res +const R9 = board.add(R_0603_1608Metric, { + translate: pt(0.763, 1.868), rotate: 0, + id: 'R9' +}) +// mag.ic +const U3 = board.add(SOT_23, { translate: pt(2.616, 1.099), rotate: 0, - id: 'mag_ic' + id: 'U3' }) -const mag_cap_cap = board.add(C_0603_1608Metric, { +// mag.cap.cap +const C8 = board.add(C_0603_1608Metric, { translate: pt(2.598, 1.234), rotate: 0, - id: 'mag_cap_cap' + id: 'C8' }) +board.setNetlist([ + {name: "usb.gnd", pads: [["J1", "A1"], ["J1", "B12"], ["J1", "B1"], ["J1", "A12"], ["U1", "1"], ["U2", "1"], ["U2", "15"], ["U2", "38"], ["U2", "39"], ["SW2", "2"], ["R6", "2"], ["R7", "2"], ["R8", "2"], ["R9", "2"], ["U3", "3"], ["J1", "S1"], ["C1", "2"], ["C5", "2"], ["C6", "2"], ["J2", "4"], ["SW1", "2"], ["C8", "2"], ["R4", "2"], ["C7", "2"], ["R1", "1"], ["R2", "1"], ["C3", "2"], ["C4", "2"]]}, + {name: "usb.pwr", pads: [["J1", "A4"], ["J1", "B9"], ["J1", "B4"], ["J1", "A9"], ["U1", "3"], ["U1", "5"], ["C1", "1"], ["C3", "1"]]}, + {name: "reg.pwr_out", pads: [["U2", "2"], ["U3", "1"], ["R3", "1"], ["C5", "1"], ["C6", "1"], ["J2", "1"], ["C8", "1"], ["R5", "1"], ["L1", "2"], ["C4", "1"]]}, + {name: "sw.out", pads: [["U2", "8"], ["SW2", "1"]]}, + {name: "led[0].signal", pads: [["U2", "26"], ["D1", "2"]]}, + {name: "led[1].signal", pads: [["U2", "27"], ["D2", "2"]]}, + {name: "led[2].signal", pads: [["U2", "28"], ["D3", "2"]]}, + {name: "led[3].signal", pads: [["U2", "29"], ["D4", "2"]]}, + {name: "mag.out", pads: [["U2", "9"], ["U3", "2"]]}, + {name: "usb.usb.dp", pads: [["J1", "A6"], ["J1", "B6"]]}, + {name: "usb.usb.dm", pads: [["J1", "A7"], ["J1", "B7"]]}, + {name: "usb.conn.cc.cc1", pads: [["J1", "A5"], ["R1", "2"]]}, + {name: "usb.conn.cc.cc2", pads: [["J1", "B5"], ["R2", "2"]]}, + {name: "reg.fb.output", pads: [["U1", "4"], ["R3", "2"], ["R4", "1"]]}, + {name: "reg.vbst_cap.neg", pads: [["C2", "2"], ["U1", "2"], ["L1", "1"]]}, + {name: "reg.vbst_cap.pos", pads: [["C2", "1"], ["U1", "6"]]}, + {name: "mcu.program_uart_node.a_tx", pads: [["U2", "35"], ["J2", "2"]]}, + {name: "mcu.program_uart_node.b_tx", pads: [["U2", "34"], ["J2", "3"]]}, + {name: "mcu.program_en_node", pads: [["U2", "3"], ["R5", "2"], ["C7", "1"]]}, + {name: "mcu.program_boot_node", pads: [["U2", "25"], ["SW1", "1"]]}, + {name: "mcu.ic.io2", pads: [["U2", "24"]]}, + {name: "led[0].res.a", pads: [["R6", "1"], ["D1", "1"]]}, + {name: "led[1].res.a", pads: [["R7", "1"], ["D2", "1"]]}, + {name: "led[2].res.a", pads: [["R8", "1"], ["D3", "1"]]}, + {name: "led[3].res.a", pads: [["R9", "1"], ["D4", "1"]]} +]) + const limit0 = pt(-0.07874015748031496, -0.07874015748031496); const limit1 = pt(3.1251968503937015, 2.01496062992126); const xMin = Math.min(limit0[0], limit1[0]); diff --git a/examples/TestBlinkyWithModeledSchematicImport/TestBlinkyWithModeledSchematicImport.svgpcb.js b/examples/TestBlinkyWithModeledSchematicImport/TestBlinkyWithModeledSchematicImport.svgpcb.js index f164d7aa0..c1df37634 100644 --- a/examples/TestBlinkyWithModeledSchematicImport/TestBlinkyWithModeledSchematicImport.svgpcb.js +++ b/examples/TestBlinkyWithModeledSchematicImport/TestBlinkyWithModeledSchematicImport.svgpcb.js @@ -1,122 +1,180 @@ const board = new PCB(); -const usb_conn = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { +// usb.conn +const J1 = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { translate: pt(0.987, 1.907), rotate: 0, - id: 'usb_conn' + id: 'J1' }) -const usb_cc_pull_cc1_res = board.add(R_0603_1608Metric, { +// usb.cc_pull.cc1.res +const R1 = board.add(R_0603_1608Metric, { translate: pt(0.835, 2.162), rotate: 0, - id: 'usb_cc_pull_cc1_res' + id: 'R1' }) -const usb_cc_pull_cc2_res = board.add(R_0603_1608Metric, { +// usb.cc_pull.cc2.res +const R2 = board.add(R_0603_1608Metric, { translate: pt(0.991, 2.162), rotate: 0, - id: 'usb_cc_pull_cc2_res' + id: 'R2' }) -const reg_ic = board.add(SOT_23_6, { +// reg.ic +const U1 = board.add(SOT_23_6, { translate: pt(1.576, 1.809), rotate: 0, - id: 'reg_ic' + id: 'U1' }) -const reg_fb_div_top_res = board.add(R_0603_1608Metric, { +// reg.fb.div.top_res +const R3 = board.add(R_0603_1608Metric, { translate: pt(1.904, 1.944), rotate: 0, - id: 'reg_fb_div_top_res' + id: 'R3' }) -const reg_fb_div_bottom_res = board.add(R_0603_1608Metric, { +// reg.fb.div.bottom_res +const R4 = board.add(R_0603_1608Metric, { translate: pt(1.554, 2.061), rotate: 0, - id: 'reg_fb_div_bottom_res' + id: 'R4' }) -const reg_hf_in_cap_cap = board.add(C_0603_1608Metric, { +// reg.hf_in_cap.cap +const C1 = board.add(C_0603_1608Metric, { translate: pt(1.709, 2.061), rotate: 0, - id: 'reg_hf_in_cap_cap' + id: 'C1' }) -const reg_vbst_cap = board.add(C_0603_1608Metric, { +// reg.vbst_cap +const C2 = board.add(C_0603_1608Metric, { translate: pt(1.865, 2.061), rotate: 0, - id: 'reg_vbst_cap' + id: 'C2' }) -const reg_power_path_inductor = board.add(L_0805_2012Metric, { +// reg.power_path.inductor +const L1 = board.add(L_0805_2012Metric, { translate: pt(1.737, 1.949), rotate: 0, - id: 'reg_power_path_inductor' + id: 'L1' }) -const reg_power_path_in_cap_cap = board.add(C_0805_2012Metric, { +// reg.power_path.in_cap.cap +const C3 = board.add(C_0805_2012Metric, { translate: pt(1.763, 1.781), rotate: 0, - id: 'reg_power_path_in_cap_cap' + id: 'C3' }) -const reg_power_path_out_cap_cap = board.add(C_0805_2012Metric, { +// reg.power_path.out_cap.cap +const C4 = board.add(C_0805_2012Metric, { translate: pt(1.562, 1.954), rotate: 0, - id: 'reg_power_path_out_cap_cap' + id: 'C4' }) -const mcu_ic = board.add(ESP32_WROOM_32, { +// mcu.ic +const U2 = board.add(ESP32_WROOM_32, { translate: pt(0.945, 0.414), rotate: 0, - id: 'mcu_ic' + id: 'U2' }) -const mcu_vcc_cap0_cap = board.add(C_1206_3216Metric, { +// mcu.vcc_cap0.cap +const C5 = board.add(C_1206_3216Metric, { translate: pt(2.020, 0.789), rotate: 0, - id: 'mcu_vcc_cap0_cap' + id: 'C5' }) -const mcu_vcc_cap1_cap = board.add(C_0603_1608Metric, { +// mcu.vcc_cap1.cap +const C6 = board.add(C_0603_1608Metric, { translate: pt(2.208, 0.773), rotate: 0, - id: 'mcu_vcc_cap1_cap' + id: 'C6' }) -const mcu_prog_conn = board.add(PinHeader_1x04_P2_54mm_Vertical, { +// mcu.prog.conn +const J2 = board.add(PinHeader_1x04_P2_54mm_Vertical, { translate: pt(2.000, 0.370), rotate: 0, - id: 'mcu_prog_conn' + id: 'J2' }) -const mcu_boot_package = board.add(SW_SPST_SKQG_WithoutStem, { +// mcu.boot.package +const SW1 = board.add(SW_SPST_SKQG_WithoutStem, { translate: pt(2.096, 0.593), rotate: 0, - id: 'mcu_boot_package' + id: 'SW1' }) -const mcu_en_pull_rc_r = board.add(R_0603_1608Metric, { +// mcu.en_pull.rc.r +const R5 = board.add(R_0603_1608Metric, { translate: pt(2.364, 0.773), rotate: 0, - id: 'mcu_en_pull_rc_r' + id: 'R5' }) -const mcu_en_pull_rc_c = board.add(C_0603_1608Metric, { +// mcu.en_pull.rc.c +const C7 = board.add(C_0603_1608Metric, { translate: pt(1.987, 0.903), rotate: 0, - id: 'mcu_en_pull_rc_c' + id: 'C7' }) -const conn = board.add(PinHeader_1x04_P2_54mm_Vertical, { +// conn +const J3 = board.add(PinHeader_1x04_P2_54mm_Vertical, { translate: pt(1.385, 2.112), rotate: 0, - id: 'conn' + id: 'J3' }) -const sense_Q1 = board.add(SOT_23, { +// sense.Q1 +const Q1 = board.add(SOT_23, { translate: pt(0.410, 1.809), rotate: 0, - id: 'sense_Q1' + id: 'Q1' }) -const sense_R3 = board.add(R_0603_1608Metric, { +// sense.R3 +const R6 = board.add(R_0603_1608Metric, { translate: pt(0.566, 1.944), rotate: 0, - id: 'sense_R3' + id: 'R6' }) -const sense_R4 = board.add(R_0603_1608Metric, { +// sense.R4 +const R7 = board.add(R_0603_1608Metric, { translate: pt(0.393, 2.061), rotate: 0, - id: 'sense_R4' + id: 'R7' }) -const sense_C2 = board.add(C_0805_2012Metric, { +// sense.C2 +const C8 = board.add(C_0805_2012Metric, { translate: pt(0.592, 1.781), rotate: 0, - id: 'sense_C2' + id: 'C8' }) -const sense_C4 = board.add(C_0603_1608Metric, { +// sense.C4 +const C9 = board.add(C_0603_1608Metric, { translate: pt(0.549, 2.061), rotate: 0, - id: 'sense_C4' + id: 'C9' }) -const sense_R1 = board.add(R_0603_1608Metric, { +// sense.R1 +const R8 = board.add(R_0603_1608Metric, { translate: pt(0.058, 2.220), rotate: 0, - id: 'sense_R1' + id: 'R8' }) -const sense_R2 = board.add(R_0603_1608Metric, { +// sense.R2 +const R9 = board.add(R_0603_1608Metric, { translate: pt(0.214, 2.220), rotate: 0, - id: 'sense_R2' + id: 'R9' }) -const sense_C3 = board.add(C_0603_1608Metric, { +// sense.C3 +const C10 = board.add(C_0603_1608Metric, { translate: pt(0.370, 2.220), rotate: 0, - id: 'sense_C3' + id: 'C10' }) -const sense_U1 = board.add(SOP_16_3_9x9_9mm_P1_27mm, { +// sense.U1 +const U3 = board.add(SOP_16_3_9x9_9mm_P1_27mm, { translate: pt(0.148, 1.947), rotate: 0, - id: 'sense_U1' + id: 'U3' }) -const sense_C1 = board.add(C_0805_2012Metric, { +// sense.C1 +const C11 = board.add(C_0805_2012Metric, { translate: pt(0.402, 1.954), rotate: 0, - id: 'sense_C1' + id: 'C11' }) +board.setNetlist([ + {name: "sense.GND", pads: [["J1", "A1"], ["J1", "B12"], ["J1", "B1"], ["J1", "A12"], ["U1", "1"], ["U2", "1"], ["U2", "15"], ["U2", "38"], ["U2", "39"], ["C8", "2"], ["R9", "2"], ["U3", "14"], ["C11", "2"], ["U3", "10"], ["U3", "9"], ["U3", "15"], ["U3", "5"], ["C10", "2"], ["J1", "S1"], ["C1", "2"], ["C5", "2"], ["C6", "2"], ["J2", "4"], ["SW1", "2"], ["J3", "2"], ["R4", "2"], ["C7", "2"], ["R1", "1"], ["R2", "1"], ["C3", "2"], ["C4", "2"]]}, + {name: "usb.pwr", pads: [["J1", "A4"], ["J1", "B9"], ["J1", "B4"], ["J1", "A9"], ["U1", "3"], ["U1", "5"], ["C1", "1"], ["C3", "1"]]}, + {name: "sense.VCC", pads: [["U2", "2"], ["Q1", "2"], ["C11", "1"], ["U3", "1"], ["U3", "16"], ["R3", "1"], ["C5", "1"], ["C6", "1"], ["J2", "1"], ["R5", "1"], ["L1", "2"], ["C4", "1"]]}, + {name: "sense.dout", pads: [["U2", "8"], ["U3", "12"]]}, + {name: "sense.sck", pads: [["U2", "9"], ["U3", "11"]]}, + {name: "sense.ep", pads: [["J3", "1"], ["C8", "1"], ["R8", "1"], ["Q1", "3"], ["U3", "3"]]}, + {name: "sense.sp", pads: [["J3", "3"], ["R6", "1"]]}, + {name: "sense.sn", pads: [["J3", "4"], ["R7", "1"]]}, + {name: "usb.usb.dp", pads: [["J1", "A6"], ["J1", "B6"]]}, + {name: "usb.usb.dm", pads: [["J1", "A7"], ["J1", "B7"]]}, + {name: "usb.conn.cc.cc1", pads: [["J1", "A5"], ["R1", "2"]]}, + {name: "usb.conn.cc.cc2", pads: [["J1", "B5"], ["R2", "2"]]}, + {name: "reg.fb.output", pads: [["U1", "4"], ["R3", "2"], ["R4", "1"]]}, + {name: "reg.vbst_cap.neg", pads: [["C2", "2"], ["U1", "2"], ["L1", "1"]]}, + {name: "reg.vbst_cap.pos", pads: [["C2", "1"], ["U1", "6"]]}, + {name: "mcu.program_uart_node.a_tx", pads: [["U2", "35"], ["J2", "2"]]}, + {name: "mcu.program_uart_node.b_tx", pads: [["U2", "34"], ["J2", "3"]]}, + {name: "mcu.program_en_node", pads: [["U2", "3"], ["R5", "2"], ["C7", "1"]]}, + {name: "mcu.program_boot_node", pads: [["U2", "25"], ["SW1", "1"]]}, + {name: "mcu.ic.io2", pads: [["U2", "24"]]}, + {name: "sense.R3.b", pads: [["R6", "2"], ["C9", "1"], ["U3", "8"]]}, + {name: "sense.R4.b", pads: [["R7", "2"], ["C9", "2"], ["U3", "7"]]}, + {name: "sense.R1.b", pads: [["R8", "2"], ["R9", "1"], ["U3", "4"]]}, + {name: "sense.Q1.base", pads: [["Q1", "1"], ["U3", "2"]]}, + {name: "sense.C3.pos", pads: [["C10", "1"], ["U3", "6"]]}, + {name: "sense.U1.ports.13", pads: [["U3", "13"]]} +]) + const limit0 = pt(-0.07874015748031496, -0.07874015748031496); const limit1 = pt(2.5401574803149614, 2.366535433070866); const xMin = Math.min(limit0[0], limit1[0]); diff --git a/examples/TestBlinkyWithSchematicImport/TestBlinkyWithSchematicImport.svgpcb.js b/examples/TestBlinkyWithSchematicImport/TestBlinkyWithSchematicImport.svgpcb.js index f164d7aa0..c1df37634 100644 --- a/examples/TestBlinkyWithSchematicImport/TestBlinkyWithSchematicImport.svgpcb.js +++ b/examples/TestBlinkyWithSchematicImport/TestBlinkyWithSchematicImport.svgpcb.js @@ -1,122 +1,180 @@ const board = new PCB(); -const usb_conn = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { +// usb.conn +const J1 = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { translate: pt(0.987, 1.907), rotate: 0, - id: 'usb_conn' + id: 'J1' }) -const usb_cc_pull_cc1_res = board.add(R_0603_1608Metric, { +// usb.cc_pull.cc1.res +const R1 = board.add(R_0603_1608Metric, { translate: pt(0.835, 2.162), rotate: 0, - id: 'usb_cc_pull_cc1_res' + id: 'R1' }) -const usb_cc_pull_cc2_res = board.add(R_0603_1608Metric, { +// usb.cc_pull.cc2.res +const R2 = board.add(R_0603_1608Metric, { translate: pt(0.991, 2.162), rotate: 0, - id: 'usb_cc_pull_cc2_res' + id: 'R2' }) -const reg_ic = board.add(SOT_23_6, { +// reg.ic +const U1 = board.add(SOT_23_6, { translate: pt(1.576, 1.809), rotate: 0, - id: 'reg_ic' + id: 'U1' }) -const reg_fb_div_top_res = board.add(R_0603_1608Metric, { +// reg.fb.div.top_res +const R3 = board.add(R_0603_1608Metric, { translate: pt(1.904, 1.944), rotate: 0, - id: 'reg_fb_div_top_res' + id: 'R3' }) -const reg_fb_div_bottom_res = board.add(R_0603_1608Metric, { +// reg.fb.div.bottom_res +const R4 = board.add(R_0603_1608Metric, { translate: pt(1.554, 2.061), rotate: 0, - id: 'reg_fb_div_bottom_res' + id: 'R4' }) -const reg_hf_in_cap_cap = board.add(C_0603_1608Metric, { +// reg.hf_in_cap.cap +const C1 = board.add(C_0603_1608Metric, { translate: pt(1.709, 2.061), rotate: 0, - id: 'reg_hf_in_cap_cap' + id: 'C1' }) -const reg_vbst_cap = board.add(C_0603_1608Metric, { +// reg.vbst_cap +const C2 = board.add(C_0603_1608Metric, { translate: pt(1.865, 2.061), rotate: 0, - id: 'reg_vbst_cap' + id: 'C2' }) -const reg_power_path_inductor = board.add(L_0805_2012Metric, { +// reg.power_path.inductor +const L1 = board.add(L_0805_2012Metric, { translate: pt(1.737, 1.949), rotate: 0, - id: 'reg_power_path_inductor' + id: 'L1' }) -const reg_power_path_in_cap_cap = board.add(C_0805_2012Metric, { +// reg.power_path.in_cap.cap +const C3 = board.add(C_0805_2012Metric, { translate: pt(1.763, 1.781), rotate: 0, - id: 'reg_power_path_in_cap_cap' + id: 'C3' }) -const reg_power_path_out_cap_cap = board.add(C_0805_2012Metric, { +// reg.power_path.out_cap.cap +const C4 = board.add(C_0805_2012Metric, { translate: pt(1.562, 1.954), rotate: 0, - id: 'reg_power_path_out_cap_cap' + id: 'C4' }) -const mcu_ic = board.add(ESP32_WROOM_32, { +// mcu.ic +const U2 = board.add(ESP32_WROOM_32, { translate: pt(0.945, 0.414), rotate: 0, - id: 'mcu_ic' + id: 'U2' }) -const mcu_vcc_cap0_cap = board.add(C_1206_3216Metric, { +// mcu.vcc_cap0.cap +const C5 = board.add(C_1206_3216Metric, { translate: pt(2.020, 0.789), rotate: 0, - id: 'mcu_vcc_cap0_cap' + id: 'C5' }) -const mcu_vcc_cap1_cap = board.add(C_0603_1608Metric, { +// mcu.vcc_cap1.cap +const C6 = board.add(C_0603_1608Metric, { translate: pt(2.208, 0.773), rotate: 0, - id: 'mcu_vcc_cap1_cap' + id: 'C6' }) -const mcu_prog_conn = board.add(PinHeader_1x04_P2_54mm_Vertical, { +// mcu.prog.conn +const J2 = board.add(PinHeader_1x04_P2_54mm_Vertical, { translate: pt(2.000, 0.370), rotate: 0, - id: 'mcu_prog_conn' + id: 'J2' }) -const mcu_boot_package = board.add(SW_SPST_SKQG_WithoutStem, { +// mcu.boot.package +const SW1 = board.add(SW_SPST_SKQG_WithoutStem, { translate: pt(2.096, 0.593), rotate: 0, - id: 'mcu_boot_package' + id: 'SW1' }) -const mcu_en_pull_rc_r = board.add(R_0603_1608Metric, { +// mcu.en_pull.rc.r +const R5 = board.add(R_0603_1608Metric, { translate: pt(2.364, 0.773), rotate: 0, - id: 'mcu_en_pull_rc_r' + id: 'R5' }) -const mcu_en_pull_rc_c = board.add(C_0603_1608Metric, { +// mcu.en_pull.rc.c +const C7 = board.add(C_0603_1608Metric, { translate: pt(1.987, 0.903), rotate: 0, - id: 'mcu_en_pull_rc_c' + id: 'C7' }) -const conn = board.add(PinHeader_1x04_P2_54mm_Vertical, { +// conn +const J3 = board.add(PinHeader_1x04_P2_54mm_Vertical, { translate: pt(1.385, 2.112), rotate: 0, - id: 'conn' + id: 'J3' }) -const sense_Q1 = board.add(SOT_23, { +// sense.Q1 +const Q1 = board.add(SOT_23, { translate: pt(0.410, 1.809), rotate: 0, - id: 'sense_Q1' + id: 'Q1' }) -const sense_R3 = board.add(R_0603_1608Metric, { +// sense.R3 +const R6 = board.add(R_0603_1608Metric, { translate: pt(0.566, 1.944), rotate: 0, - id: 'sense_R3' + id: 'R6' }) -const sense_R4 = board.add(R_0603_1608Metric, { +// sense.R4 +const R7 = board.add(R_0603_1608Metric, { translate: pt(0.393, 2.061), rotate: 0, - id: 'sense_R4' + id: 'R7' }) -const sense_C2 = board.add(C_0805_2012Metric, { +// sense.C2 +const C8 = board.add(C_0805_2012Metric, { translate: pt(0.592, 1.781), rotate: 0, - id: 'sense_C2' + id: 'C8' }) -const sense_C4 = board.add(C_0603_1608Metric, { +// sense.C4 +const C9 = board.add(C_0603_1608Metric, { translate: pt(0.549, 2.061), rotate: 0, - id: 'sense_C4' + id: 'C9' }) -const sense_R1 = board.add(R_0603_1608Metric, { +// sense.R1 +const R8 = board.add(R_0603_1608Metric, { translate: pt(0.058, 2.220), rotate: 0, - id: 'sense_R1' + id: 'R8' }) -const sense_R2 = board.add(R_0603_1608Metric, { +// sense.R2 +const R9 = board.add(R_0603_1608Metric, { translate: pt(0.214, 2.220), rotate: 0, - id: 'sense_R2' + id: 'R9' }) -const sense_C3 = board.add(C_0603_1608Metric, { +// sense.C3 +const C10 = board.add(C_0603_1608Metric, { translate: pt(0.370, 2.220), rotate: 0, - id: 'sense_C3' + id: 'C10' }) -const sense_U1 = board.add(SOP_16_3_9x9_9mm_P1_27mm, { +// sense.U1 +const U3 = board.add(SOP_16_3_9x9_9mm_P1_27mm, { translate: pt(0.148, 1.947), rotate: 0, - id: 'sense_U1' + id: 'U3' }) -const sense_C1 = board.add(C_0805_2012Metric, { +// sense.C1 +const C11 = board.add(C_0805_2012Metric, { translate: pt(0.402, 1.954), rotate: 0, - id: 'sense_C1' + id: 'C11' }) +board.setNetlist([ + {name: "sense.GND", pads: [["J1", "A1"], ["J1", "B12"], ["J1", "B1"], ["J1", "A12"], ["U1", "1"], ["U2", "1"], ["U2", "15"], ["U2", "38"], ["U2", "39"], ["C8", "2"], ["R9", "2"], ["U3", "14"], ["C11", "2"], ["U3", "10"], ["U3", "9"], ["U3", "15"], ["U3", "5"], ["C10", "2"], ["J1", "S1"], ["C1", "2"], ["C5", "2"], ["C6", "2"], ["J2", "4"], ["SW1", "2"], ["J3", "2"], ["R4", "2"], ["C7", "2"], ["R1", "1"], ["R2", "1"], ["C3", "2"], ["C4", "2"]]}, + {name: "usb.pwr", pads: [["J1", "A4"], ["J1", "B9"], ["J1", "B4"], ["J1", "A9"], ["U1", "3"], ["U1", "5"], ["C1", "1"], ["C3", "1"]]}, + {name: "sense.VCC", pads: [["U2", "2"], ["Q1", "2"], ["C11", "1"], ["U3", "1"], ["U3", "16"], ["R3", "1"], ["C5", "1"], ["C6", "1"], ["J2", "1"], ["R5", "1"], ["L1", "2"], ["C4", "1"]]}, + {name: "sense.dout", pads: [["U2", "8"], ["U3", "12"]]}, + {name: "sense.sck", pads: [["U2", "9"], ["U3", "11"]]}, + {name: "sense.ep", pads: [["J3", "1"], ["C8", "1"], ["R8", "1"], ["Q1", "3"], ["U3", "3"]]}, + {name: "sense.sp", pads: [["J3", "3"], ["R6", "1"]]}, + {name: "sense.sn", pads: [["J3", "4"], ["R7", "1"]]}, + {name: "usb.usb.dp", pads: [["J1", "A6"], ["J1", "B6"]]}, + {name: "usb.usb.dm", pads: [["J1", "A7"], ["J1", "B7"]]}, + {name: "usb.conn.cc.cc1", pads: [["J1", "A5"], ["R1", "2"]]}, + {name: "usb.conn.cc.cc2", pads: [["J1", "B5"], ["R2", "2"]]}, + {name: "reg.fb.output", pads: [["U1", "4"], ["R3", "2"], ["R4", "1"]]}, + {name: "reg.vbst_cap.neg", pads: [["C2", "2"], ["U1", "2"], ["L1", "1"]]}, + {name: "reg.vbst_cap.pos", pads: [["C2", "1"], ["U1", "6"]]}, + {name: "mcu.program_uart_node.a_tx", pads: [["U2", "35"], ["J2", "2"]]}, + {name: "mcu.program_uart_node.b_tx", pads: [["U2", "34"], ["J2", "3"]]}, + {name: "mcu.program_en_node", pads: [["U2", "3"], ["R5", "2"], ["C7", "1"]]}, + {name: "mcu.program_boot_node", pads: [["U2", "25"], ["SW1", "1"]]}, + {name: "mcu.ic.io2", pads: [["U2", "24"]]}, + {name: "sense.R3.b", pads: [["R6", "2"], ["C9", "1"], ["U3", "8"]]}, + {name: "sense.R4.b", pads: [["R7", "2"], ["C9", "2"], ["U3", "7"]]}, + {name: "sense.R1.b", pads: [["R8", "2"], ["R9", "1"], ["U3", "4"]]}, + {name: "sense.Q1.base", pads: [["Q1", "1"], ["U3", "2"]]}, + {name: "sense.C3.pos", pads: [["C10", "1"], ["U3", "6"]]}, + {name: "sense.U1.ports.13", pads: [["U3", "13"]]} +]) + const limit0 = pt(-0.07874015748031496, -0.07874015748031496); const limit1 = pt(2.5401574803149614, 2.366535433070866); const xMin = Math.min(limit0[0], limit1[0]); diff --git a/examples/TofArray/TofArray.svgpcb.js b/examples/TofArray/TofArray.svgpcb.js index 397f8cde1..cf667c4cf 100644 --- a/examples/TofArray/TofArray.svgpcb.js +++ b/examples/TofArray/TofArray.svgpcb.js @@ -1,294 +1,425 @@ const board = new PCB(); -const jlc_th_th1 = board.add(JlcToolingHole_1_152mm, { +// jlc_th.th1 +const H1 = board.add(JlcToolingHole_1_152mm, { translate: pt(2.098, 1.682), rotate: 0, - id: 'jlc_th_th1' + id: 'H1' }) -const jlc_th_th2 = board.add(JlcToolingHole_1_152mm, { +// jlc_th.th2 +const H2 = board.add(JlcToolingHole_1_152mm, { translate: pt(2.137, 1.682), rotate: 0, - id: 'jlc_th_th2' + id: 'H2' }) -const jlc_th_th3 = board.add(JlcToolingHole_1_152mm, { +// jlc_th.th3 +const H3 = board.add(JlcToolingHole_1_152mm, { translate: pt(2.098, 1.721), rotate: 0, - id: 'jlc_th_th3' + id: 'H3' }) -const usb_conn = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { +// usb.conn +const J1 = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { translate: pt(2.034, 0.165), rotate: 0, - id: 'usb_conn' + id: 'J1' }) -const usb_cc_pull_cc1_res = board.add(R_0603_1608Metric, { +// usb.cc_pull.cc1.res +const R1 = board.add(R_0603_1608Metric, { translate: pt(1.883, 0.420), rotate: 0, - id: 'usb_cc_pull_cc1_res' + id: 'R1' }) -const usb_cc_pull_cc2_res = board.add(R_0603_1608Metric, { +// usb.cc_pull.cc2.res +const R2 = board.add(R_0603_1608Metric, { translate: pt(2.039, 0.420), rotate: 0, - id: 'usb_cc_pull_cc2_res' + id: 'R2' }) -const can_conn = board.add(Molex_SL_171971_0005_1x05_P2_54mm_Vertical, { +// can.conn +const J2 = board.add(Molex_SL_171971_0005_1x05_P2_54mm_Vertical, { translate: pt(1.539, 0.973), rotate: 0, - id: 'can_conn' + id: 'J2' }) -const tp_vusb_tp = board.add(TestPoint_Keystone_5015_Micro_Minature, { - translate: pt(0.659, 1.735), rotate: 0, - id: 'tp_vusb_tp' -}) -const tp_gnd_tp = board.add(TestPoint_Keystone_5015_Micro_Minature, { +// tp_vusb.tp +const TP1 = board.add(TestPoint_Keystone_5015_Micro_Minature, { translate: pt(2.172, 1.365), rotate: 0, - id: 'tp_gnd_tp' + id: 'TP1' }) -const reg_3v3_ic = board.add(SOT_223_3_TabPin2, { +// tp_gnd.tp +const TP2 = board.add(TestPoint_Keystone_5015_Micro_Minature, { + translate: pt(0.085, 1.735), rotate: 0, + id: 'TP2' +}) +// reg_3v3.ic +const U1 = board.add(SOT_223_3_TabPin2, { translate: pt(0.173, 0.935), rotate: 0, - id: 'reg_3v3_ic' + id: 'U1' }) -const reg_3v3_in_cap_cap = board.add(C_0603_1608Metric, { +// reg_3v3.in_cap.cap +const C1 = board.add(C_0603_1608Metric, { translate: pt(0.231, 1.145), rotate: 0, - id: 'reg_3v3_in_cap_cap' + id: 'C1' }) -const reg_3v3_out_cap_cap = board.add(C_0805_2012Metric, { +// reg_3v3.out_cap.cap +const C2 = board.add(C_0805_2012Metric, { translate: pt(0.067, 1.155), rotate: 0, - id: 'reg_3v3_out_cap_cap' + id: 'C2' }) -const tp_3v3_tp = board.add(TestPoint_Keystone_5015_Micro_Minature, { - translate: pt(0.085, 1.735), rotate: 0, - id: 'tp_3v3_tp' +// tp_3v3.tp +const TP3 = board.add(TestPoint_Keystone_5015_Micro_Minature, { + translate: pt(0.372, 1.735), rotate: 0, + id: 'TP3' }) -const prot_3v3_diode = board.add(D_SOD_323, { +// prot_3v3.diode +const D1 = board.add(D_SOD_323, { translate: pt(1.213, 1.719), rotate: 0, - id: 'prot_3v3_diode' + id: 'D1' }) -const mcu_swd_conn = board.add(Tag_Connect_TC2050_IDC_FP_2x05_P1_27mm_Vertical, { +// mcu.swd.conn +const J3 = board.add(Tag_Connect_TC2050_IDC_FP_2x05_P1_27mm_Vertical, { translate: pt(0.661, 0.167), rotate: 0, - id: 'mcu_swd_conn' + id: 'J3' }) -const mcu_ic = board.add(LQFP_48_7x7mm_P0_5mm, { +// mcu.ic +const U2 = board.add(LQFP_48_7x7mm_P0_5mm, { translate: pt(0.203, 0.203), rotate: 0, - id: 'mcu_ic' + id: 'U2' }) -const mcu_pwr_cap_0__cap = board.add(C_0805_2012Metric, { +// mcu.pwr_cap[0].cap +const C3 = board.add(C_0805_2012Metric, { translate: pt(0.272, 0.483), rotate: 0, - id: 'mcu_pwr_cap_0__cap' + id: 'C3' }) -const mcu_pwr_cap_1__cap = board.add(C_0603_1608Metric, { +// mcu.pwr_cap[1].cap +const C4 = board.add(C_0603_1608Metric, { translate: pt(0.436, 0.474), rotate: 0, - id: 'mcu_pwr_cap_1__cap' + id: 'C4' }) -const mcu_pwr_cap_2__cap = board.add(C_0603_1608Metric, { +// mcu.pwr_cap[2].cap +const C5 = board.add(C_0603_1608Metric, { translate: pt(0.592, 0.474), rotate: 0, - id: 'mcu_pwr_cap_2__cap' + id: 'C5' }) -const mcu_pwr_cap_3__cap = board.add(C_0603_1608Metric, { +// mcu.pwr_cap[3].cap +const C6 = board.add(C_0603_1608Metric, { translate: pt(0.748, 0.474), rotate: 0, - id: 'mcu_pwr_cap_3__cap' + id: 'C6' }) -const mcu_vdda_cap_0_cap = board.add(C_0603_1608Metric, { +// mcu.vdda_cap_0.cap +const C7 = board.add(C_0603_1608Metric, { translate: pt(0.058, 0.647), rotate: 0, - id: 'mcu_vdda_cap_0_cap' + id: 'C7' }) -const mcu_vdda_cap_1_cap = board.add(C_0603_1608Metric, { +// mcu.vdda_cap_1.cap +const C8 = board.add(C_0603_1608Metric, { translate: pt(0.214, 0.647), rotate: 0, - id: 'mcu_vdda_cap_1_cap' + id: 'C8' }) -const mcu_usb_pull_dp = board.add(R_0603_1608Metric, { +// mcu.usb_pull.dp +const R3 = board.add(R_0603_1608Metric, { translate: pt(0.370, 0.647), rotate: 0, - id: 'mcu_usb_pull_dp' + id: 'R3' }) -const mcu_crystal_package = board.add(Crystal_SMD_3225_4Pin_3_2x2_5mm, { +// mcu.crystal.package +const X1 = board.add(Crystal_SMD_3225_4Pin_3_2x2_5mm, { translate: pt(0.083, 0.512), rotate: 0, - id: 'mcu_crystal_package' + id: 'X1' }) -const mcu_crystal_cap_a = board.add(C_0603_1608Metric, { +// mcu.crystal.cap_a +const C9 = board.add(C_0603_1608Metric, { translate: pt(0.526, 0.647), rotate: 0, - id: 'mcu_crystal_cap_a' + id: 'C9' }) -const mcu_crystal_cap_b = board.add(C_0603_1608Metric, { +// mcu.crystal.cap_b +const C10 = board.add(C_0603_1608Metric, { translate: pt(0.682, 0.647), rotate: 0, - id: 'mcu_crystal_cap_b' + id: 'C10' }) -const sw1_package = board.add(SW_SPST_SKQG_WithoutStem, { +// sw1.package +const SW1 = board.add(SW_SPST_SKQG_WithoutStem, { translate: pt(0.742, 1.424), rotate: 0, - id: 'sw1_package' + id: 'SW1' }) -const leds_led_0__package = board.add(LED_0603_1608Metric, { +// leds.led[0].package +const D2 = board.add(LED_0603_1608Metric, { translate: pt(2.233, 0.823), rotate: 0, - id: 'leds_led_0__package' + id: 'D2' }) -const leds_led_1__package = board.add(LED_0603_1608Metric, { +// leds.led[1].package +const D3 = board.add(LED_0603_1608Metric, { translate: pt(2.389, 0.823), rotate: 0, - id: 'leds_led_1__package' + id: 'D3' }) -const leds_led_2__package = board.add(LED_0603_1608Metric, { +// leds.led[2].package +const D4 = board.add(LED_0603_1608Metric, { translate: pt(2.233, 0.920), rotate: 0, - id: 'leds_led_2__package' + id: 'D4' }) -const leds_led_3__package = board.add(LED_0603_1608Metric, { +// leds.led[3].package +const D5 = board.add(LED_0603_1608Metric, { translate: pt(2.389, 0.920), rotate: 0, - id: 'leds_led_3__package' + id: 'D5' }) -const leds_led_4__package = board.add(LED_0603_1608Metric, { +// leds.led[4].package +const D6 = board.add(LED_0603_1608Metric, { translate: pt(2.233, 1.017), rotate: 0, - id: 'leds_led_4__package' + id: 'D6' }) -const tof_elt_0__ic = board.add(ST_VL53L0X, { +// tof.elt[0].ic +const U3 = board.add(ST_VL53L0X, { translate: pt(1.063, 0.057), rotate: 0, - id: 'tof_elt_0__ic' + id: 'U3' }) -const tof_elt_0__vdd_cap_0__cap = board.add(C_0603_1608Metric, { +// tof.elt[0].vdd_cap[0].cap +const C11 = board.add(C_0603_1608Metric, { translate: pt(1.025, 0.452), rotate: 0, - id: 'tof_elt_0__vdd_cap_0__cap' + id: 'C11' }) -const tof_elt_0__vdd_cap_1__cap = board.add(C_0805_2012Metric, { +// tof.elt[0].vdd_cap[1].cap +const C12 = board.add(C_0805_2012Metric, { translate: pt(1.498, 0.192), rotate: 0, - id: 'tof_elt_0__vdd_cap_1__cap' + id: 'C12' }) -const tof_elt_1__ic = board.add(ST_VL53L0X, { +// tof.elt[1].ic +const U4 = board.add(ST_VL53L0X, { translate: pt(1.295, 0.057), rotate: 0, - id: 'tof_elt_1__ic' + id: 'U4' }) -const tof_elt_1__vdd_cap_0__cap = board.add(C_0603_1608Metric, { +// tof.elt[1].vdd_cap[0].cap +const C13 = board.add(C_0603_1608Metric, { translate: pt(1.181, 0.452), rotate: 0, - id: 'tof_elt_1__vdd_cap_0__cap' + id: 'C13' }) -const tof_elt_1__vdd_cap_1__cap = board.add(C_0805_2012Metric, { +// tof.elt[1].vdd_cap[1].cap +const C14 = board.add(C_0805_2012Metric, { translate: pt(1.033, 0.346), rotate: 0, - id: 'tof_elt_1__vdd_cap_1__cap' + id: 'C14' }) -const tof_elt_2__ic = board.add(ST_VL53L0X, { +// tof.elt[2].ic +const U5 = board.add(ST_VL53L0X, { translate: pt(1.528, 0.057), rotate: 0, - id: 'tof_elt_2__ic' + id: 'U5' }) -const tof_elt_2__vdd_cap_0__cap = board.add(C_0603_1608Metric, { +// tof.elt[2].vdd_cap[0].cap +const C15 = board.add(C_0603_1608Metric, { translate: pt(1.337, 0.452), rotate: 0, - id: 'tof_elt_2__vdd_cap_0__cap' + id: 'C15' }) -const tof_elt_2__vdd_cap_1__cap = board.add(C_0805_2012Metric, { +// tof.elt[2].vdd_cap[1].cap +const C16 = board.add(C_0805_2012Metric, { translate: pt(1.207, 0.346), rotate: 0, - id: 'tof_elt_2__vdd_cap_1__cap' + id: 'C16' }) -const tof_elt_3__ic = board.add(ST_VL53L0X, { +// tof.elt[3].ic +const U6 = board.add(ST_VL53L0X, { translate: pt(1.063, 0.211), rotate: 0, - id: 'tof_elt_3__ic' + id: 'U6' }) -const tof_elt_3__vdd_cap_0__cap = board.add(C_0603_1608Metric, { +// tof.elt[3].vdd_cap[0].cap +const C17 = board.add(C_0603_1608Metric, { translate: pt(1.493, 0.452), rotate: 0, - id: 'tof_elt_3__vdd_cap_0__cap' + id: 'C17' }) -const tof_elt_3__vdd_cap_1__cap = board.add(C_0805_2012Metric, { +// tof.elt[3].vdd_cap[1].cap +const C18 = board.add(C_0805_2012Metric, { translate: pt(1.380, 0.346), rotate: 0, - id: 'tof_elt_3__vdd_cap_1__cap' + id: 'C18' }) -const tof_elt_4__ic = board.add(ST_VL53L0X, { +// tof.elt[4].ic +const U7 = board.add(ST_VL53L0X, { translate: pt(1.295, 0.211), rotate: 0, - id: 'tof_elt_4__ic' + id: 'U7' }) -const tof_elt_4__vdd_cap_0__cap = board.add(C_0603_1608Metric, { +// tof.elt[4].vdd_cap[0].cap +const C19 = board.add(C_0603_1608Metric, { translate: pt(1.648, 0.452), rotate: 0, - id: 'tof_elt_4__vdd_cap_0__cap' + id: 'C19' }) -const tof_elt_4__vdd_cap_1__cap = board.add(C_0805_2012Metric, { +// tof.elt[4].vdd_cap[1].cap +const C20 = board.add(C_0805_2012Metric, { translate: pt(1.553, 0.346), rotate: 0, - id: 'tof_elt_4__vdd_cap_1__cap' + id: 'C20' }) -const i2c_pull_scl_res_res = board.add(R_0603_1608Metric, { - translate: pt(1.710, 1.341), rotate: 0, - id: 'i2c_pull_scl_res_res' +// i2c_pull.scl_res.res +const R4 = board.add(R_0603_1608Metric, { + translate: pt(1.476, 1.341), rotate: 0, + id: 'R4' }) -const i2c_pull_sda_res_res = board.add(R_0603_1608Metric, { - translate: pt(1.710, 1.437), rotate: 0, - id: 'i2c_pull_sda_res_res' +// i2c_pull.sda_res.res +const R5 = board.add(R_0603_1608Metric, { + translate: pt(1.476, 1.437), rotate: 0, + id: 'R5' }) -const i2c_tp_tp_scl_tp = board.add(TestPoint_Keystone_5015_Micro_Minature, { +// i2c_tp.tp_scl.tp +const TP4 = board.add(TestPoint_Keystone_5015_Micro_Minature, { translate: pt(0.085, 1.365), rotate: 0, - id: 'i2c_tp_tp_scl_tp' + id: 'TP4' }) -const i2c_tp_tp_sda_tp = board.add(TestPoint_Keystone_5015_Micro_Minature, { +// i2c_tp.tp_sda.tp +const TP5 = board.add(TestPoint_Keystone_5015_Micro_Minature, { translate: pt(0.085, 1.511), rotate: 0, - id: 'i2c_tp_tp_sda_tp' + id: 'TP5' }) -const usb_esd = board.add(SOT_23, { +// usb_esd +const U8 = board.add(SOT_23, { translate: pt(1.793, 1.749), rotate: 0, - id: 'usb_esd' + id: 'U8' }) -const tp_can_tp_txd_tp = board.add(TestPoint_Keystone_5015_Micro_Minature, { +// tp_can.tp_txd.tp +const TP6 = board.add(TestPoint_Keystone_5015_Micro_Minature, { translate: pt(0.372, 1.365), rotate: 0, - id: 'tp_can_tp_txd_tp' + id: 'TP6' }) -const tp_can_tp_rxd_tp = board.add(TestPoint_Keystone_5015_Micro_Minature, { +// tp_can.tp_rxd.tp +const TP7 = board.add(TestPoint_Keystone_5015_Micro_Minature, { translate: pt(0.372, 1.511), rotate: 0, - id: 'tp_can_tp_rxd_tp' + id: 'TP7' }) -const xcvr_ic = board.add(SOIC_8_3_9x4_9mm_P1_27mm, { +// xcvr.ic +const U9 = board.add(SOIC_8_3_9x4_9mm_P1_27mm, { translate: pt(1.157, 0.900), rotate: 0, - id: 'xcvr_ic' + id: 'U9' }) -const xcvr_vdd_cap_cap = board.add(C_0603_1608Metric, { +// xcvr.vdd_cap.cap +const C21 = board.add(C_0603_1608Metric, { translate: pt(1.069, 1.074), rotate: 0, - id: 'xcvr_vdd_cap_cap' + id: 'C21' }) -const can_esd = board.add(SOT_23, { +// can_esd +const U10 = board.add(SOT_23, { translate: pt(1.983, 1.749), rotate: 0, - id: 'can_esd' + id: 'U10' }) -const tp_spk_tp = board.add(TestPoint_Keystone_5015_Micro_Minature, { - translate: pt(0.372, 1.735), rotate: 0, - id: 'tp_spk_tp' +// tp_spk.tp +const TP8 = board.add(TestPoint_Keystone_5015_Micro_Minature, { + translate: pt(0.659, 1.735), rotate: 0, + id: 'TP8' }) -const spk_dac_rc_r = board.add(R_0603_1608Metric, { - translate: pt(1.476, 1.341), rotate: 0, - id: 'spk_dac_rc_r' +// spk_dac.rc.r +const R6 = board.add(R_0603_1608Metric, { + translate: pt(1.710, 1.341), rotate: 0, + id: 'R6' }) -const spk_dac_rc_c = board.add(C_0603_1608Metric, { - translate: pt(1.476, 1.437), rotate: 0, - id: 'spk_dac_rc_c' +// spk_dac.rc.c +const C22 = board.add(C_0603_1608Metric, { + translate: pt(1.710, 1.437), rotate: 0, + id: 'C22' }) -const tp_spk_in_tp = board.add(TestPoint_Keystone_5015_Micro_Minature, { +// tp_spk_in.tp +const TP9 = board.add(TestPoint_Keystone_5015_Micro_Minature, { translate: pt(0.947, 1.735), rotate: 0, - id: 'tp_spk_in_tp' + id: 'TP9' }) -const spk_drv_ic = board.add(MSOP_8_1EP_3x3mm_P0_65mm_EP1_68x1_88mm_ThermalVias, { +// spk_drv.ic +const U11 = board.add(MSOP_8_1EP_3x3mm_P0_65mm_EP1_68x1_88mm_ThermalVias, { translate: pt(0.587, 0.863), rotate: 0, - id: 'spk_drv_ic' + id: 'U11' }) -const spk_drv_pwr_cap_cap = board.add(C_0603_1608Metric, { +// spk_drv.pwr_cap.cap +const C23 = board.add(C_0603_1608Metric, { translate: pt(0.523, 1.000), rotate: 0, - id: 'spk_drv_pwr_cap_cap' + id: 'C23' }) -const spk_drv_bulk_cap_cap = board.add(C_0805_2012Metric, { +// spk_drv.bulk_cap.cap +const C24 = board.add(C_0805_2012Metric, { translate: pt(0.817, 0.832), rotate: 0, - id: 'spk_drv_bulk_cap_cap' + id: 'C24' }) -const spk_drv_inp_res = board.add(R_0603_1608Metric, { +// spk_drv.inp_res +const R7 = board.add(R_0603_1608Metric, { translate: pt(0.679, 1.000), rotate: 0, - id: 'spk_drv_inp_res' + id: 'R7' }) -const spk_drv_inp_cap = board.add(C_0603_1608Metric, { +// spk_drv.inp_cap +const C25 = board.add(C_0603_1608Metric, { translate: pt(0.835, 1.000), rotate: 0, - id: 'spk_drv_inp_cap' + id: 'C25' }) -const spk_drv_inn_res = board.add(R_0603_1608Metric, { +// spk_drv.inn_res +const R8 = board.add(R_0603_1608Metric, { translate: pt(0.523, 1.096), rotate: 0, - id: 'spk_drv_inn_res' + id: 'R8' }) -const spk_drv_inn_cap = board.add(C_0603_1608Metric, { +// spk_drv.inn_cap +const C26 = board.add(C_0603_1608Metric, { translate: pt(0.679, 1.096), rotate: 0, - id: 'spk_drv_inn_cap' + id: 'C26' }) -const spk_conn = board.add(JST_PH_B2B_PH_K_1x02_P2_00mm_Vertical, { +// spk.conn +const J4 = board.add(JST_PH_B2B_PH_K_1x02_P2_00mm_Vertical, { translate: pt(1.124, 1.442), rotate: 0, - id: 'spk_conn' + id: 'J4' }) -const res1 = board.add(R_Array_Concave_4x0603, { +// res1 +const RN1 = board.add(R_Array_Concave_4x0603, { translate: pt(1.455, 1.756), rotate: 0, - id: 'res1' + id: 'RN1' }) -const res2 = board.add(R_Array_Concave_4x0603, { +// res2 +const RN2 = board.add(R_Array_Concave_4x0603, { translate: pt(1.617, 1.756), rotate: 0, - id: 'res2' + id: 'RN2' }) -const rgb_device_package = board.add(LED_LiteOn_LTST_C19HE1WT, { +// rgb.device.package +const D7 = board.add(LED_LiteOn_LTST_C19HE1WT, { translate: pt(1.928, 1.367), rotate: 0, - id: 'rgb_device_package' + id: 'D7' }) +board.setNetlist([ + {name: "vusb", pads: [["J1", "A4"], ["J1", "B9"], ["J1", "B4"], ["J1", "A9"], ["TP1", "1"], ["U1", "3"], ["U11", "1"], ["U11", "6"], ["C1", "1"], ["C23", "1"], ["C24", "1"]]}, + {name: "gnd", pads: [["U8", "3"], ["U10", "3"], ["J1", "A1"], ["J1", "B12"], ["J1", "B1"], ["J1", "A12"], ["J2", "3"], ["TP2", "1"], ["U1", "1"], ["D1", "2"], ["U2", "8"], ["U2", "23"], ["U2", "35"], ["U2", "47"], ["U2", "44"], ["SW1", "2"], ["U9", "2"], ["U9", "8"], ["U11", "7"], ["U11", "9"], ["C22", "2"], ["J1", "S1"], ["C26", "2"], ["C1", "2"], ["C2", "2"], ["C3", "2"], ["C4", "2"], ["C5", "2"], ["C6", "2"], ["C7", "2"], ["C8", "2"], ["X1", "2"], ["X1", "4"], ["U3", "2"], ["U3", "3"], ["U3", "4"], ["U3", "6"], ["U3", "12"], ["U4", "2"], ["U4", "3"], ["U4", "4"], ["U4", "6"], ["U4", "12"], ["U5", "2"], ["U5", "3"], ["U5", "4"], ["U5", "6"], ["U5", "12"], ["U6", "2"], ["U6", "3"], ["U6", "4"], ["U6", "6"], ["U6", "12"], ["U7", "2"], ["U7", "3"], ["U7", "4"], ["U7", "6"], ["U7", "12"], ["C21", "2"], ["C23", "2"], ["C24", "2"], ["R1", "1"], ["R2", "1"], ["J3", "2"], ["J3", "3"], ["J3", "5"], ["C9", "2"], ["C10", "2"], ["C11", "2"], ["C12", "2"], ["C13", "2"], ["C14", "2"], ["C15", "2"], ["C16", "2"], ["C17", "2"], ["C18", "2"], ["C19", "2"], ["C20", "2"]]}, + {name: "v3v3", pads: [["U1", "2"], ["TP3", "1"], ["D1", "1"], ["U2", "1"], ["U2", "9"], ["U2", "24"], ["U2", "36"], ["U2", "48"], ["U9", "3"], ["C2", "1"], ["J3", "1"], ["C3", "1"], ["C4", "1"], ["C5", "1"], ["C6", "1"], ["C7", "1"], ["C8", "1"], ["R3", "1"], ["D2", "2"], ["D3", "2"], ["D4", "2"], ["D5", "2"], ["D6", "2"], ["U3", "1"], ["U3", "11"], ["U4", "1"], ["U4", "11"], ["U5", "1"], ["U5", "11"], ["U6", "1"], ["U6", "11"], ["U7", "1"], ["U7", "11"], ["R4", "1"], ["R5", "1"], ["C21", "1"], ["D7", "2"], ["C11", "1"], ["C12", "1"], ["C13", "1"], ["C14", "1"], ["C15", "1"], ["C16", "1"], ["C17", "1"], ["C18", "1"], ["C19", "1"], ["C20", "1"]]}, + {name: "sw1_chain_0", pads: [["U2", "19"], ["SW1", "1"]]}, + {name: "leds_chain_0.0", pads: [["U2", "20"], ["RN1", "8"]]}, + {name: "leds_chain_0.1", pads: [["U2", "25"], ["RN1", "7"]]}, + {name: "leds_chain_0.2", pads: [["U2", "29"], ["RN2", "7"]]}, + {name: "leds_chain_0.3", pads: [["U2", "30"], ["RN2", "6"]]}, + {name: "leds_chain_0.4", pads: [["U2", "31"], ["RN2", "5"]]}, + {name: "leds_chain_0.5", pads: [["U2", "26"], ["RN1", "6"]]}, + {name: "leds_chain_0.6", pads: [["U2", "27"], ["RN1", "5"]]}, + {name: "leds_chain_0.7", pads: [["U2", "28"], ["RN2", "8"]]}, + {name: "i2c_chain_0.scl", pads: [["U2", "21"], ["R4", "2"], ["TP4", "1"], ["U3", "10"], ["U4", "10"], ["U5", "10"], ["U6", "10"], ["U7", "10"]]}, + {name: "i2c_chain_0.sda", pads: [["U2", "22"], ["R5", "2"], ["U3", "9"], ["U4", "9"], ["U5", "9"], ["U6", "9"], ["U7", "9"], ["TP5", "1"]]}, + {name: "mcu.gpio.tof_reset_0", pads: [["U2", "42"], ["U3", "5"]]}, + {name: "mcu.gpio.tof_reset_1", pads: [["U2", "41"], ["U4", "5"]]}, + {name: "mcu.gpio.tof_reset_2", pads: [["U2", "4"], ["U5", "5"]]}, + {name: "mcu.gpio.tof_reset_3", pads: [["U2", "3"], ["U6", "5"]]}, + {name: "mcu.gpio.tof_reset_4", pads: [["U2", "2"], ["U7", "5"]]}, + {name: "usb_chain_0.d_P", pads: [["J1", "A6"], ["J1", "B6"], ["U8", "2"], ["U2", "33"], ["R3", "2"]]}, + {name: "usb_chain_0.d_N", pads: [["J1", "A7"], ["J1", "B7"], ["U8", "1"], ["U2", "32"]]}, + {name: "can_chain_0.txd", pads: [["U2", "46"], ["U9", "1"], ["TP6", "1"]]}, + {name: "can_chain_0.rxd", pads: [["U2", "45"], ["U9", "4"], ["TP7", "1"]]}, + {name: "can_chain_1.canh", pads: [["U9", "7"], ["U10", "2"], ["J2", "4"]]}, + {name: "can_chain_1.canl", pads: [["U9", "6"], ["U10", "1"], ["J2", "5"]]}, + {name: "spk_chain_0", pads: [["U2", "11"], ["TP8", "1"], ["R6", "1"]]}, + {name: "spk_chain_1", pads: [["TP9", "1"], ["C25", "2"], ["R6", "2"], ["C22", "1"]]}, + {name: "spk_chain_2.a", pads: [["U11", "8"], ["J4", "1"]]}, + {name: "spk_chain_2.b", pads: [["U11", "5"], ["J4", "2"]]}, + {name: "res1.a.0", pads: [["RN1", "1"], ["D2", "1"]]}, + {name: "res1.a.1", pads: [["RN1", "2"], ["D3", "1"]]}, + {name: "res1.a.2", pads: [["RN1", "3"], ["D7", "3"]]}, + {name: "res1.a.3", pads: [["RN1", "4"], ["D7", "4"]]}, + {name: "res2.a.0", pads: [["RN2", "1"], ["D7", "1"]]}, + {name: "res2.a.1", pads: [["RN2", "2"], ["D4", "1"]]}, + {name: "res2.a.2", pads: [["RN2", "3"], ["D5", "1"]]}, + {name: "res2.a.3", pads: [["RN2", "4"], ["D6", "1"]]}, + {name: "usb.conn.cc.cc1", pads: [["J1", "A5"], ["R1", "2"]]}, + {name: "usb.conn.cc.cc2", pads: [["J1", "B5"], ["R2", "2"]]}, + {name: "can.pwr", pads: [["J2", "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"], ["J3", "10"]]}, + {name: "mcu.swd_node.swclk", pads: [["U2", "37"], ["J3", "9"]]}, + {name: "mcu.reset_node", pads: [["U2", "7"], ["J3", "6"]]}, + {name: "mcu.swd.swo", pads: [["U2", "39"], ["J3", "8"]]}, + {name: "mcu.swd.tdi", pads: [["J3", "7"]]}, + {name: "tof.elt[0].ic.gpio1", pads: [["U3", "7"]]}, + {name: "tof.elt[1].ic.gpio1", pads: [["U4", "7"]]}, + {name: "tof.elt[2].ic.gpio1", pads: [["U5", "7"]]}, + {name: "tof.elt[3].ic.gpio1", pads: [["U6", "7"]]}, + {name: "tof.elt[4].ic.gpio1", pads: [["U7", "7"]]}, + {name: "spk_drv.inp_cap.pos", pads: [["C25", "1"], ["R7", "1"]]}, + {name: "spk_drv.inp_res.b", pads: [["R7", "2"], ["U11", "4"]]}, + {name: "spk_drv.inn_cap.pos", pads: [["C26", "1"], ["R8", "1"]]}, + {name: "spk_drv.inn_res.b", pads: [["R8", "2"], ["U11", "3"]]} +]) + const limit0 = pt(-0.07874015748031496, -0.07874015748031496); const limit1 = pt(2.565748031496063, 1.9062992125984253); const xMin = Math.min(limit0[0], limit1[0]); diff --git a/examples/UsbFpgaProgrammer/UsbFpgaProgrammer.svgpcb.js b/examples/UsbFpgaProgrammer/UsbFpgaProgrammer.svgpcb.js index 9912f00de..5244aec2a 100644 --- a/examples/UsbFpgaProgrammer/UsbFpgaProgrammer.svgpcb.js +++ b/examples/UsbFpgaProgrammer/UsbFpgaProgrammer.svgpcb.js @@ -1,154 +1,235 @@ const board = new PCB(); -const jlc_th_th1 = board.add(JlcToolingHole_1_152mm, { +// jlc_th.th1 +const FH1 = board.add(JlcToolingHole_1_152mm, { translate: pt(0.000, 1.224), rotate: 0, - id: 'jlc_th_th1' + id: 'FH1' }) -const jlc_th_th2 = board.add(JlcToolingHole_1_152mm, { +// jlc_th.th2 +const FH2 = board.add(JlcToolingHole_1_152mm, { translate: pt(0.039, 1.224), rotate: 0, - id: 'jlc_th_th2' + id: 'FH2' }) -const jlc_th_th3 = board.add(JlcToolingHole_1_152mm, { +// jlc_th.th3 +const FH3 = board.add(JlcToolingHole_1_152mm, { translate: pt(0.000, 1.263), rotate: 0, - id: 'jlc_th_th3' + id: 'FH3' }) -const usb_conn = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { +// usb.conn +const FJ1 = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { translate: pt(1.224, 0.165), rotate: 0, - id: 'usb_conn' + id: 'FJ1' }) -const usb_cc_pull_cc1_res = board.add(R_0603_1608Metric, { +// usb.cc_pull.cc1.res +const FR1 = board.add(R_0603_1608Metric, { translate: pt(1.072, 0.420), rotate: 0, - id: 'usb_cc_pull_cc1_res' + id: 'FR1' }) -const usb_cc_pull_cc2_res = board.add(R_0603_1608Metric, { +// usb.cc_pull.cc2.res +const FR2 = board.add(R_0603_1608Metric, { translate: pt(1.228, 0.420), rotate: 0, - id: 'usb_cc_pull_cc2_res' + id: 'FR2' }) -const vusb_protect_diode = board.add(D_SOD_323, { +// vusb_protect.diode +const FD1 = board.add(D_SOD_323, { translate: pt(1.225, 0.852), rotate: 0, - id: 'vusb_protect_diode' + id: 'FD1' }) -const ft232_ic = board.add(LQFP_48_7x7mm_P0_5mm, { +// ft232.ic +const FU1 = board.add(LQFP_48_7x7mm_P0_5mm, { translate: pt(0.203, 0.203), rotate: 0, - id: 'ft232_ic' + id: 'FU1' }) -const ft232_vbus_fb_fb = board.add(L_0603_1608Metric, { +// ft232.vbus_fb.fb +const FFB1 = board.add(L_0603_1608Metric, { translate: pt(0.676, 0.202), rotate: 0, - id: 'ft232_vbus_fb_fb' + id: 'FFB1' }) -const ft232_vregin_cap0_cap = board.add(C_0805_2012Metric, { +// ft232.vregin_cap0.cap +const FC1 = board.add(C_0805_2012Metric, { translate: pt(0.512, 0.212), rotate: 0, - id: 'ft232_vregin_cap0_cap' + id: 'FC1' }) -const ft232_vregin_cap1_cap = board.add(C_0603_1608Metric, { +// ft232.vregin_cap1.cap +const FC2 = board.add(C_0603_1608Metric, { translate: pt(0.832, 0.202), rotate: 0, - id: 'ft232_vregin_cap1_cap' + id: 'FC2' }) -const ft232_vphy_fb_fb = board.add(L_0603_1608Metric, { +// ft232.vphy_fb.fb +const FFB2 = board.add(L_0603_1608Metric, { translate: pt(0.503, 0.319), rotate: 0, - id: 'ft232_vphy_fb_fb' + id: 'FFB2' }) -const ft232_vphy_cap_cap = board.add(C_0603_1608Metric, { +// ft232.vphy_cap.cap +const FC3 = board.add(C_0603_1608Metric, { translate: pt(0.659, 0.319), rotate: 0, - id: 'ft232_vphy_cap_cap' + id: 'FC3' }) -const ft232_vpll_fb_fb = board.add(L_0603_1608Metric, { +// ft232.vpll_fb.fb +const FFB3 = board.add(L_0603_1608Metric, { translate: pt(0.815, 0.319), rotate: 0, - id: 'ft232_vpll_fb_fb' + id: 'FFB3' }) -const ft232_vpll_cap_cap = board.add(C_0603_1608Metric, { +// ft232.vpll_cap.cap +const FC4 = board.add(C_0603_1608Metric, { translate: pt(0.058, 0.474), rotate: 0, - id: 'ft232_vpll_cap_cap' + id: 'FC4' }) -const ft232_vcccore_cap_cap = board.add(C_0603_1608Metric, { +// ft232.vcccore_cap.cap +const FC5 = board.add(C_0603_1608Metric, { translate: pt(0.214, 0.474), rotate: 0, - id: 'ft232_vcccore_cap_cap' + id: 'FC5' }) -const ft232_vcca_cap_cap = board.add(C_0603_1608Metric, { +// ft232.vcca_cap.cap +const FC6 = board.add(C_0603_1608Metric, { translate: pt(0.370, 0.474), rotate: 0, - id: 'ft232_vcca_cap_cap' + id: 'FC6' }) -const ft232_vccd_cap_cap = board.add(C_0603_1608Metric, { +// ft232.vccd_cap.cap +const FC7 = board.add(C_0603_1608Metric, { translate: pt(0.526, 0.474), rotate: 0, - id: 'ft232_vccd_cap_cap' + id: 'FC7' }) -const ft232_vccio_cap0_cap = board.add(C_0603_1608Metric, { +// ft232.vccio_cap0.cap +const FC8 = board.add(C_0603_1608Metric, { translate: pt(0.682, 0.474), rotate: 0, - id: 'ft232_vccio_cap0_cap' + id: 'FC8' }) -const ft232_vccio_cap1_cap = board.add(C_0603_1608Metric, { +// ft232.vccio_cap1.cap +const FC9 = board.add(C_0603_1608Metric, { translate: pt(0.838, 0.474), rotate: 0, - id: 'ft232_vccio_cap1_cap' + id: 'FC9' }) -const ft232_vccio_cap2_cap = board.add(C_0603_1608Metric, { +// ft232.vccio_cap2.cap +const FC10 = board.add(C_0603_1608Metric, { translate: pt(0.058, 0.570), rotate: 0, - id: 'ft232_vccio_cap2_cap' + id: 'FC10' }) -const ft232_ref_res = board.add(R_0603_1608Metric, { +// ft232.ref_res +const FR3 = board.add(R_0603_1608Metric, { translate: pt(0.214, 0.570), rotate: 0, - id: 'ft232_ref_res' + id: 'FR3' }) -const ft232_crystal_package = board.add(Crystal_SMD_3225_4Pin_3_2x2_5mm, { +// ft232.crystal.package +const FX1 = board.add(Crystal_SMD_3225_4Pin_3_2x2_5mm, { translate: pt(0.528, 0.067), rotate: 0, - id: 'ft232_crystal_package' + id: 'FX1' }) -const ft232_crystal_cap_a = board.add(C_0603_1608Metric, { +// ft232.crystal.cap_a +const FC11 = board.add(C_0603_1608Metric, { translate: pt(0.370, 0.570), rotate: 0, - id: 'ft232_crystal_cap_a' + id: 'FC11' }) -const ft232_crystal_cap_b = board.add(C_0603_1608Metric, { +// ft232.crystal.cap_b +const FC12 = board.add(C_0603_1608Metric, { translate: pt(0.526, 0.570), rotate: 0, - id: 'ft232_crystal_cap_b' + id: 'FC12' }) -const ft232_eeprom_ic = board.add(SOT_23_6, { +// ft232.eeprom.ic +const FU2 = board.add(SOT_23_6, { translate: pt(0.730, 0.067), rotate: 0, - id: 'ft232_eeprom_ic' + id: 'FU2' }) -const ft232_eeprom_vcc_cap_cap = board.add(C_0603_1608Metric, { +// ft232.eeprom.vcc_cap.cap +const FC13 = board.add(C_0603_1608Metric, { translate: pt(0.682, 0.570), rotate: 0, - id: 'ft232_eeprom_vcc_cap_cap' + id: 'FC13' }) -const ft232_eeprom_spi_do_pull_res = board.add(R_0603_1608Metric, { +// ft232.eeprom_spi.do_pull.res +const FR4 = board.add(R_0603_1608Metric, { translate: pt(0.838, 0.570), rotate: 0, - id: 'ft232_eeprom_spi_do_pull_res' + id: 'FR4' }) -const ft232_eeprom_spi_do_res = board.add(R_0603_1608Metric, { +// ft232.eeprom_spi.do_res +const FR5 = board.add(R_0603_1608Metric, { translate: pt(0.058, 0.667), rotate: 0, - id: 'ft232_eeprom_spi_do_res' + id: 'FR5' }) -const usb_esd = board.add(SOT_23, { +// usb_esd +const FU3 = board.add(SOT_23, { translate: pt(1.481, 0.881), rotate: 0, - id: 'usb_esd' + id: 'FU3' }) -const led0_package = board.add(LED_0603_1608Metric, { - translate: pt(0.985, 0.843), rotate: 0, - id: 'led0_package' -}) -const led0_res = board.add(R_0603_1608Metric, { - translate: pt(0.985, 0.940), rotate: 0, - id: 'led0_res' -}) -const led1_package = board.add(LED_0603_1608Metric, { +// led0.package +const FD2 = board.add(LED_0603_1608Metric, { translate: pt(0.515, 0.843), rotate: 0, - id: 'led1_package' + id: 'FD2' }) -const led1_res = board.add(R_0603_1608Metric, { +// led0.res +const FR6 = board.add(R_0603_1608Metric, { translate: pt(0.515, 0.940), rotate: 0, - id: 'led1_res' + id: 'FR6' }) -const led2_package = board.add(LED_0603_1608Metric, { +// led1.package +const FD3 = board.add(LED_0603_1608Metric, { translate: pt(0.750, 0.843), rotate: 0, - id: 'led2_package' + id: 'FD3' }) -const led2_res = board.add(R_0603_1608Metric, { +// led1.res +const FR7 = board.add(R_0603_1608Metric, { translate: pt(0.750, 0.940), rotate: 0, - id: 'led2_res' + id: 'FR7' }) -const out_conn = board.add(PinHeader_2x05_P1_27mm_Vertical_SMD, { +// led2.package +const FD4 = board.add(LED_0603_1608Metric, { + translate: pt(0.985, 0.843), rotate: 0, + id: 'FD4' +}) +// led2.res +const FR8 = board.add(R_0603_1608Metric, { + translate: pt(0.985, 0.940), rotate: 0, + id: 'FR8' +}) +// out.conn +const FJ2 = board.add(PinHeader_2x05_P1_27mm_Vertical_SMD, { translate: pt(0.169, 0.960), rotate: 0, - id: 'out_conn' + id: 'FJ2' }) +board.setNetlist([ + {name: "Fvusb", pads: [["FJ1", "A4"], ["FJ1", "B9"], ["FJ1", "B4"], ["FJ1", "A9"], ["FD1", "1"], ["FFB1", "1"]]}, + {name: "Fgnd", pads: [["FU3", "3"], ["FJ1", "A1"], ["FJ1", "B12"], ["FJ1", "B1"], ["FJ1", "A12"], ["FD1", "2"], ["FU1", "4"], ["FU1", "9"], ["FU1", "41"], ["FU1", "10"], ["FU1", "11"], ["FU1", "22"], ["FU1", "23"], ["FU1", "35"], ["FU1", "36"], ["FU1", "47"], ["FU1", "48"], ["FU1", "42"], ["FR6", "2"], ["FR7", "2"], ["FR8", "2"], ["FJ1", "S1"], ["FR3", "2"], ["FJ2", "3"], ["FJ2", "5"], ["FJ2", "9"], ["FC1", "2"], ["FC2", "2"], ["FC3", "2"], ["FC4", "2"], ["FC5", "2"], ["FC6", "2"], ["FC7", "2"], ["FC8", "2"], ["FC9", "2"], ["FC10", "2"], ["FX1", "2"], ["FX1", "4"], ["FU2", "2"], ["FR1", "1"], ["FR2", "1"], ["FC11", "2"], ["FC12", "2"], ["FC13", "2"]]}, + {name: "Fusb_chain_0.d_P", pads: [["FJ1", "A6"], ["FJ1", "B6"], ["FU3", "2"], ["FU1", "7"]]}, + {name: "Fusb_chain_0.d_N", pads: [["FJ1", "A7"], ["FJ1", "B7"], ["FU3", "1"], ["FU1", "6"]]}, + {name: "Fled0.signal", pads: [["FU1", "21"], ["FD2", "2"]]}, + {name: "Fled1.signal", pads: [["FU1", "27"], ["FD3", "2"]]}, + {name: "Fled2.signal", pads: [["FU1", "28"], ["FD4", "2"]]}, + {name: "Fft232.mpsse.sck", pads: [["FU1", "13"], ["FJ2", "4"]]}, + {name: "Fft232.mpsse.mosi", pads: [["FU1", "14"], ["FJ2", "6"]]}, + {name: "Fft232.mpsse.miso", pads: [["FU1", "15"], ["FJ2", "8"]]}, + {name: "Fout.cs", pads: [["FU1", "17"], ["FJ2", "2"]]}, + {name: "Fout.reset", pads: [["FU1", "20"], ["FJ2", "10"]]}, + {name: "Fusb.conn.cc.cc1", pads: [["FJ1", "A5"], ["FR1", "2"]]}, + {name: "Fusb.conn.cc.cc2", pads: [["FJ1", "B5"], ["FR2", "2"]]}, + {name: "Fft232.acbus.1", pads: [["FU1", "25"]]}, + {name: "Fft232.acbus.2", pads: [["FU1", "26"]]}, + {name: "Fft232.acbus.5", pads: [["FU1", "29"]]}, + {name: "Fft232.acbus.6", pads: [["FU1", "30"]]}, + {name: "Fft232.acbus.7", pads: [["FU1", "31"]]}, + {name: "Fft232.acbus.8", pads: [["FU1", "32"]]}, + {name: "Fft232.acbus.9", pads: [["FU1", "33"]]}, + {name: "Fft232.ic.vregin", pads: [["FU1", "40"], ["FFB1", "2"], ["FC1", "1"], ["FC2", "1"]]}, + {name: "Fft232.ic.vccd", pads: [["FU1", "39"], ["FU1", "12"], ["FU1", "24"], ["FU1", "46"], ["FU1", "34"], ["FFB2", "1"], ["FFB3", "1"], ["FC7", "1"], ["FC8", "1"], ["FC9", "1"], ["FC10", "1"], ["FU2", "6"], ["FR4", "1"], ["FC13", "1"]]}, + {name: "Fft232.ic.vphy", pads: [["FU1", "3"], ["FFB2", "2"], ["FC3", "1"]]}, + {name: "Fft232.ic.vpll", pads: [["FU1", "8"], ["FFB3", "2"], ["FC4", "1"]]}, + {name: "Fft232.ic.vcccore", pads: [["FU1", "38"], ["FC5", "1"]]}, + {name: "Fft232.ic.vcca", pads: [["FU1", "37"], ["FC6", "1"]]}, + {name: "Fft232.ref_res.a", pads: [["FR3", "1"], ["FU1", "5"]]}, + {name: "Fft232.crystal.crystal.xtal_in", pads: [["FX1", "1"], ["FC11", "1"], ["FU1", "1"]]}, + {name: "Fft232.crystal.crystal.xtal_out", pads: [["FX1", "3"], ["FC12", "1"], ["FU1", "2"]]}, + {name: "Fft232.eeprom.cs", pads: [["FU1", "45"], ["FU2", "5"]]}, + {name: "Fft232.eeprom_spi.eeclk", pads: [["FU1", "44"], ["FU2", "4"]]}, + {name: "Fft232.eeprom_spi.eedata", pads: [["FU1", "43"], ["FR5", "2"], ["FU2", "3"]]}, + {name: "Fft232.eeprom_spi.spi.miso", pads: [["FU2", "1"], ["FR5", "1"], ["FR4", "2"]]}, + {name: "Fft232.ic.adbus.3", pads: [["FU1", "16"]]}, + {name: "Fft232.ic.adbus.5", pads: [["FU1", "18"]]}, + {name: "Fft232.ic.adbus.6", pads: [["FU1", "19"]]}, + {name: "Fled0.res.a", pads: [["FR6", "1"], ["FD2", "1"]]}, + {name: "Fled1.res.a", pads: [["FR7", "1"], ["FD3", "1"]]}, + {name: "Fled2.res.a", pads: [["FR8", "1"], ["FD4", "1"]]}, + {name: "Fout.pwr", pads: [["FJ2", "1"]]} +]) + const limit0 = pt(-0.07874015748031496, -0.07874015748031496); const limit1 = pt(1.5962598425196852, 1.3811023622047247); const xMin = Math.min(limit0[0], limit1[0]); diff --git a/examples/UsbKey/UsbKey.svgpcb.js b/examples/UsbKey/UsbKey.svgpcb.js index a2a1f1564..66fe3a8aa 100644 --- a/examples/UsbKey/UsbKey.svgpcb.js +++ b/examples/UsbKey/UsbKey.svgpcb.js @@ -1,74 +1,115 @@ const board = new PCB(); -const jlc_th_th1 = board.add(JlcToolingHole_1_152mm, { +// jlc_th.th1 +const H1 = board.add(JlcToolingHole_1_152mm, { translate: pt(0.728, 0.561), rotate: 0, - id: 'jlc_th_th1' + id: 'H1' }) -const jlc_th_th2 = board.add(JlcToolingHole_1_152mm, { +// jlc_th.th2 +const H2 = board.add(JlcToolingHole_1_152mm, { translate: pt(0.768, 0.561), rotate: 0, - id: 'jlc_th_th2' + id: 'H2' }) -const jlc_th_th3 = board.add(JlcToolingHole_1_152mm, { +// jlc_th.th3 +const H3 = board.add(JlcToolingHole_1_152mm, { translate: pt(0.728, 0.601), rotate: 0, - id: 'jlc_th_th3' + id: 'H3' }) -const usb = board.add(USB_A_Pads, { +// usb +const J1 = board.add(USB_A_Pads, { translate: pt(0.630, 0.463), rotate: 0, - id: 'usb' + id: 'J1' }) -const reg_3v3_ic = board.add(UDFN_4_1EP_1x1mm_P0_65mm_EP0_48x0_48mm, { +// reg_3v3.ic +const U1 = board.add(UDFN_4_1EP_1x1mm_P0_65mm_EP0_48x0_48mm, { translate: pt(0.339, 0.591), rotate: 0, - id: 'reg_3v3_ic' + id: 'U1' }) -const reg_3v3_in_cap_cap = board.add(C_0402_1005Metric, { +// reg_3v3.in_cap.cap +const C1 = board.add(C_0402_1005Metric, { translate: pt(0.340, 0.678), rotate: 0, - id: 'reg_3v3_in_cap_cap' + id: 'C1' }) -const mcu_swd_conn = board.add(Tag_Connect_TC2030_IDC_NL_2x03_P1_27mm_Vertical, { +// mcu.swd.conn +const J2 = board.add(Tag_Connect_TC2030_IDC_NL_2x03_P1_27mm_Vertical, { translate: pt(0.138, 0.365), rotate: 0, - id: 'mcu_swd_conn' + id: 'J2' }) -const mcu_ic = board.add(QFN_32_1EP_5x5mm_P0_5mm_EP3_45x3_45mm, { +// mcu.ic +const U2 = board.add(QFN_32_1EP_5x5mm_P0_5mm_EP3_45x3_45mm, { translate: pt(0.123, 0.123), rotate: 0, - id: 'mcu_ic' + id: 'U2' }) -const rgb_package = board.add(LED_Lumex_SML_LX0404SIUPGUSB, { +// rgb.package +const D1 = board.add(LED_Lumex_SML_LX0404SIUPGUSB, { translate: pt(0.035, 0.597), rotate: 0, - id: 'rgb_package' + id: 'D1' }) -const rgb_red_res = board.add(R_0402_1005Metric, { +// rgb.red_res +const R1 = board.add(R_0402_1005Metric, { translate: pt(0.147, 0.580), rotate: 0, - id: 'rgb_red_res' + id: 'R1' }) -const rgb_green_res = board.add(R_0402_1005Metric, { +// rgb.green_res +const R2 = board.add(R_0402_1005Metric, { translate: pt(0.037, 0.690), rotate: 0, - id: 'rgb_green_res' + id: 'R2' }) -const rgb_blue_res = board.add(R_0402_1005Metric, { +// rgb.blue_res +const R3 = board.add(R_0402_1005Metric, { translate: pt(0.149, 0.690), rotate: 0, - id: 'rgb_blue_res' + id: 'R3' }) -const ts1_res = board.add(R_0402_1005Metric, { +// ts1.res +const R4 = board.add(R_0402_1005Metric, { translate: pt(0.922, 0.580), rotate: 0, - id: 'ts1_res' + id: 'R4' }) -const ts2_res = board.add(R_0402_1005Metric, { +// ts2.res +const R5 = board.add(R_0402_1005Metric, { translate: pt(0.037, 0.845), rotate: 0, - id: 'ts2_res' + id: 'R5' }) -const tss_cap = board.add(C_0402_1005Metric, { - translate: pt(0.417, 0.845), rotate: 0, - id: 'tss_cap' -}) -const packed_mcu_vdda_cap_cap = board.add(C_0402_1005Metric, { +// tss.cap +const C2 = board.add(C_0402_1005Metric, { translate: pt(0.227, 0.845), rotate: 0, - id: 'packed_mcu_vdda_cap_cap' + id: 'C2' }) -const packed_mcu_vdd1_cap_cap = board.add(C_0603_1608Metric, { +// packed_mcu_vdda_cap.cap +const C3 = board.add(C_0402_1005Metric, { + translate: pt(0.417, 0.845), rotate: 0, + id: 'C3' +}) +// packed_mcu_vdd1_cap.cap +const C4 = board.add(C_0603_1608Metric, { translate: pt(0.552, 0.590), rotate: 0, - id: 'packed_mcu_vdd1_cap_cap' + id: 'C4' }) +board.setNetlist([ + {name: "gnd", pads: [["J1", "4"], ["U1", "2"], ["U1", "5"], ["U2", "16"], ["U2", "32"], ["U2", "33"], ["C2", "2"], ["U2", "15"], ["U2", "3"], ["C1", "2"], ["J2", "5"], ["C4", "2"], ["C3", "2"]]}, + {name: "v3v3", pads: [["U1", "1"], ["U2", "17"], ["U2", "1"], ["U2", "5"], ["D1", "1"], ["J2", "1"], ["C4", "1"], ["C3", "1"]]}, + {name: "usb.pwr", pads: [["J1", "1"], ["U1", "4"], ["U1", "3"], ["C1", "1"]]}, + {name: "usb.usb.dp", pads: [["U2", "22"], ["J1", "3"]]}, + {name: "usb.usb.dm", pads: [["U2", "21"], ["J1", "2"]]}, + {name: "rgb.signals.red", pads: [["U2", "7"], ["R1", "2"]]}, + {name: "rgb.signals.green", pads: [["U2", "8"], ["R2", "2"]]}, + {name: "rgb.signals.blue", pads: [["U2", "9"], ["R3", "2"]]}, + {name: "ts1.io", pads: [["U2", "27"], ["R4", "1"]]}, + {name: "ts2.io", pads: [["U2", "28"], ["R5", "1"]]}, + {name: "tss.io", pads: [["U2", "29"], ["C2", "1"]]}, + {name: "mcu.swd_node.swdio", pads: [["U2", "23"], ["J2", "2"]]}, + {name: "mcu.swd_node.swclk", pads: [["U2", "24"], ["J2", "4"]]}, + {name: "mcu.swd.reset", pads: [["J2", "3"]]}, + {name: "mcu.swd.swo", pads: [["J2", "6"]]}, + {name: "mcu.ic.nrst", pads: [["U2", "4"]]}, + {name: "rgb.red_res.a", pads: [["R1", "1"], ["D1", "2"]]}, + {name: "rgb.green_res.a", pads: [["R2", "1"], ["D1", "3"]]}, + {name: "rgb.blue_res.a", pads: [["R3", "1"], ["D1", "4"]]}, + {name: "ts1.res.b", pads: [["R4", "2"]]}, + {name: "ts2.res.b", pads: [["R5", "2"]]} +]) + const limit0 = pt(-0.07874015748031496, -0.07874015748031496); const limit1 = pt(1.0771653543307087, 0.9818897637795276); const xMin = Math.min(limit0[0], limit1[0]); diff --git a/examples/UsbSourceMeasure/UsbSourceMeasure.svgpcb.js b/examples/UsbSourceMeasure/UsbSourceMeasure.svgpcb.js index 4d48cf937..efe954975 100644 --- a/examples/UsbSourceMeasure/UsbSourceMeasure.svgpcb.js +++ b/examples/UsbSourceMeasure/UsbSourceMeasure.svgpcb.js @@ -1,994 +1,1402 @@ const board = new PCB(); -const jlc_th_th1 = board.add(JlcToolingHole_1_152mm, { +// jlc_th.th1 +const H1 = board.add(JlcToolingHole_1_152mm, { translate: pt(5.588, 4.566), rotate: 0, - id: 'jlc_th_th1' + id: 'H1' }) -const jlc_th_th2 = board.add(JlcToolingHole_1_152mm, { +// jlc_th.th2 +const H2 = board.add(JlcToolingHole_1_152mm, { translate: pt(5.627, 4.566), rotate: 0, - id: 'jlc_th_th2' + id: 'H2' }) -const jlc_th_th3 = board.add(JlcToolingHole_1_152mm, { +// jlc_th.th3 +const H3 = board.add(JlcToolingHole_1_152mm, { translate: pt(5.588, 4.605), rotate: 0, - id: 'jlc_th_th3' + id: 'H3' }) -const usb_conn = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { +// usb.conn +const J1 = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { translate: pt(3.954, 3.280), rotate: 0, - id: 'usb_conn' + id: 'J1' }) -const tp_gnd_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(2.506, 4.603), rotate: 0, - id: 'tp_gnd_tp' +// tp_gnd.tp +const TP1 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(2.256, 4.603), rotate: 0, + id: 'TP1' }) -const filt_vusb_fb = board.add(L_1206_3216Metric, { +// filt_vusb.fb +const FB1 = board.add(L_1206_3216Metric, { translate: pt(1.979, 4.613), rotate: 0, - id: 'filt_vusb_fb' + id: 'FB1' }) -const cap_vusb_cap = board.add(CP_Elec_8x10, { +// cap_vusb.cap +const C1 = board.add(CP_Elec_8x10, { translate: pt(4.498, 3.288), rotate: 0, - id: 'cap_vusb_cap' + id: 'C1' }) -const prot_vusb_diode = board.add(D_SMA, { +// prot_vusb.diode +const D1 = board.add(D_SMA, { translate: pt(0.842, 4.635), rotate: 0, - id: 'prot_vusb_diode' + id: 'D1' }) -const tp_vusb_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(4.008, 4.603), rotate: 0, - id: 'tp_vusb_tp' +// tp_vusb.tp +const TP2 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(2.506, 4.603), rotate: 0, + id: 'TP2' }) -const reg_v5_ic = board.add(SOT_23_6, { +// reg_v5.ic +const U1 = board.add(SOT_23_6, { translate: pt(2.127, 3.182), rotate: 0, - id: 'reg_v5_ic' + id: 'U1' }) -const reg_v5_fb_div_top_res = board.add(R_0603_1608Metric, { +// reg_v5.fb.div.top_res +const R1 = board.add(R_0603_1608Metric, { translate: pt(2.286, 3.400), rotate: 0, - id: 'reg_v5_fb_div_top_res' + id: 'R1' }) -const reg_v5_fb_div_bottom_res = board.add(R_0603_1608Metric, { +// reg_v5.fb.div.bottom_res +const R2 = board.add(R_0603_1608Metric, { translate: pt(1.845, 3.530), rotate: 0, - id: 'reg_v5_fb_div_bottom_res' + id: 'R2' }) -const reg_v5_hf_in_cap_cap = board.add(C_0603_1608Metric, { +// reg_v5.hf_in_cap.cap +const C2 = board.add(C_0603_1608Metric, { translate: pt(2.001, 3.530), rotate: 0, - id: 'reg_v5_hf_in_cap_cap' + id: 'C2' }) -const reg_v5_boot_cap = board.add(C_0603_1608Metric, { +// reg_v5.boot_cap +const C3 = board.add(C_0603_1608Metric, { translate: pt(2.157, 3.530), rotate: 0, - id: 'reg_v5_boot_cap' + id: 'C3' }) -const reg_v5_power_path_inductor = board.add(L_Sunlord_SWPA5040S, { +// reg_v5.power_path.inductor +const L1 = board.add(L_Sunlord_SWPA5040S, { translate: pt(1.897, 3.224), rotate: 0, - id: 'reg_v5_power_path_inductor' + id: 'L1' }) -const reg_v5_power_path_in_cap_cap = board.add(C_1206_3216Metric, { +// reg_v5.power_path.in_cap.cap +const C4 = board.add(C_1206_3216Metric, { translate: pt(1.877, 3.417), rotate: 0, - id: 'reg_v5_power_path_in_cap_cap' + id: 'C4' }) -const reg_v5_power_path_out_cap_cap = board.add(C_1206_3216Metric, { +// reg_v5.power_path.out_cap.cap +const C5 = board.add(C_1206_3216Metric, { translate: pt(2.098, 3.417), rotate: 0, - id: 'reg_v5_power_path_out_cap_cap' + id: 'C5' }) -const reg_v5_en_res = board.add(R_0603_1608Metric, { +// reg_v5.en_res +const R3 = board.add(R_0603_1608Metric, { translate: pt(2.313, 3.530), rotate: 0, - id: 'reg_v5_en_res' + id: 'R3' }) -const tp_v5_tp = board.add(TestPoint_TE_RCT_0805, { +// tp_v5.tp +const TP3 = board.add(TestPoint_TE_RCT_0805, { translate: pt(2.756, 4.603), rotate: 0, - id: 'tp_v5_tp' + id: 'TP3' }) -const reg_3v3_ic = board.add(SOT_223_3_TabPin2, { +// reg_3v3.ic +const U2 = board.add(SOT_223_3_TabPin2, { translate: pt(3.154, 3.257), rotate: 0, - id: 'reg_3v3_ic' + id: 'U2' }) -const reg_3v3_in_cap_cap = board.add(C_0603_1608Metric, { +// reg_3v3.in_cap.cap +const C6 = board.add(C_0603_1608Metric, { translate: pt(3.213, 3.467), rotate: 0, - id: 'reg_3v3_in_cap_cap' + id: 'C6' }) -const reg_3v3_out_cap_cap = board.add(C_0805_2012Metric, { +// reg_3v3.out_cap.cap +const C7 = board.add(C_0805_2012Metric, { translate: pt(3.048, 3.476), rotate: 0, - id: 'reg_3v3_out_cap_cap' + id: 'C7' }) -const prot_3v3_diode = board.add(D_SMA, { +// prot_3v3.diode +const D2 = board.add(D_SMA, { translate: pt(1.236, 4.635), rotate: 0, - id: 'prot_3v3_diode' + id: 'D2' }) -const tp_3v3_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(3.758, 4.603), rotate: 0, - id: 'tp_3v3_tp' +// tp_3v3.tp +const TP4 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(3.007, 4.603), rotate: 0, + id: 'TP4' }) -const conv_power_path_inductor = board.add(L_Bourns_SRP1245A, { +// conv.power_path.inductor +const L2 = board.add(L_Bourns_SRP1245A, { translate: pt(0.289, 2.069), rotate: 0, - id: 'conv_power_path_inductor' + id: 'L2' }) -const conv_power_path_in_cap_cap_c_0_ = board.add(C_1206_3216Metric, { +// conv.power_path.in_cap.cap.c[0] +const C8 = board.add(C_1206_3216Metric, { translate: pt(0.091, 2.725), rotate: 0, - id: 'conv_power_path_in_cap_cap_c_0_' + id: 'C8' }) -const conv_power_path_in_cap_cap_c_1_ = board.add(C_1206_3216Metric, { +// conv.power_path.in_cap.cap.c[1] +const C9 = board.add(C_1206_3216Metric, { translate: pt(0.311, 2.725), rotate: 0, - id: 'conv_power_path_in_cap_cap_c_1_' + id: 'C9' }) -const conv_power_path_in_cap_cap_c_2_ = board.add(C_1206_3216Metric, { +// conv.power_path.in_cap.cap.c[2] +const C10 = board.add(C_1206_3216Metric, { translate: pt(0.531, 2.725), rotate: 0, - id: 'conv_power_path_in_cap_cap_c_2_' + id: 'C10' }) -const conv_power_path_out_cap_cap_c_0_ = board.add(C_1206_3216Metric, { +// conv.power_path.out_cap.cap.c[0] +const C11 = board.add(C_1206_3216Metric, { translate: pt(0.752, 2.725), rotate: 0, - id: 'conv_power_path_out_cap_cap_c_0_' + id: 'C11' }) -const conv_power_path_out_cap_cap_c_1_ = board.add(C_1206_3216Metric, { +// conv.power_path.out_cap.cap.c[1] +const C12 = board.add(C_1206_3216Metric, { translate: pt(0.972, 2.725), rotate: 0, - id: 'conv_power_path_out_cap_cap_c_1_' + id: 'C12' }) -const conv_power_path_out_cap_cap_c_2_ = board.add(C_1206_3216Metric, { +// conv.power_path.out_cap.cap.c[2] +const C13 = board.add(C_1206_3216Metric, { translate: pt(1.193, 2.725), rotate: 0, - id: 'conv_power_path_out_cap_cap_c_2_' + id: 'C13' }) -const conv_power_path_out_cap_cap_c_3_ = board.add(C_1206_3216Metric, { +// conv.power_path.out_cap.cap.c[3] +const C14 = board.add(C_1206_3216Metric, { translate: pt(1.413, 2.725), rotate: 0, - id: 'conv_power_path_out_cap_cap_c_3_' + id: 'C14' }) -const conv_power_path_out_cap_cap_c_4_ = board.add(C_1206_3216Metric, { +// conv.power_path.out_cap.cap.c[4] +const C15 = board.add(C_1206_3216Metric, { translate: pt(0.091, 2.855), rotate: 0, - id: 'conv_power_path_out_cap_cap_c_4_' + id: 'C15' }) -const conv_power_path_out_cap_cap_c_5_ = board.add(C_1206_3216Metric, { +// conv.power_path.out_cap.cap.c[5] +const C16 = board.add(C_1206_3216Metric, { translate: pt(0.311, 2.855), rotate: 0, - id: 'conv_power_path_out_cap_cap_c_5_' + id: 'C16' }) -const conv_power_path_out_cap_cap_c_6_ = board.add(C_1206_3216Metric, { +// conv.power_path.out_cap.cap.c[6] +const C17 = board.add(C_1206_3216Metric, { translate: pt(0.531, 2.855), rotate: 0, - id: 'conv_power_path_out_cap_cap_c_6_' + id: 'C17' }) -const conv_power_path_out_cap_cap_c_7_ = board.add(C_1206_3216Metric, { +// conv.power_path.out_cap.cap.c[7] +const C18 = board.add(C_1206_3216Metric, { translate: pt(0.752, 2.855), rotate: 0, - id: 'conv_power_path_out_cap_cap_c_7_' + id: 'C18' }) -const conv_power_path_out_cap_cap_c_8_ = board.add(C_1206_3216Metric, { +// conv.power_path.out_cap.cap.c[8] +const C19 = board.add(C_1206_3216Metric, { translate: pt(0.972, 2.855), rotate: 0, - id: 'conv_power_path_out_cap_cap_c_8_' + id: 'C19' }) -const conv_buck_sw_driver_ic = board.add(SOIC_8_3_9x4_9mm_P1_27mm, { +// conv.buck_sw.driver.ic +const U3 = board.add(SOIC_8_3_9x4_9mm_P1_27mm, { translate: pt(1.098, 2.471), rotate: 0, - id: 'conv_buck_sw_driver_ic' + id: 'U3' }) -const conv_buck_sw_driver_cap_cap = board.add(C_0603_1608Metric, { +// conv.buck_sw.driver.cap.cap +const C20 = board.add(C_0603_1608Metric, { translate: pt(1.492, 2.838), rotate: 0, - id: 'conv_buck_sw_driver_cap_cap' + id: 'C20' }) -const conv_buck_sw_driver_high_cap_cap = board.add(C_0603_1608Metric, { +// conv.buck_sw.driver.high_cap.cap +const C21 = board.add(C_0603_1608Metric, { translate: pt(0.058, 2.968), rotate: 0, - id: 'conv_buck_sw_driver_high_cap_cap' + id: 'C21' }) -const conv_buck_sw_driver_boot = board.add(D_SOD_323, { +// conv.buck_sw.driver.boot +const D3 = board.add(D_SOD_323, { translate: pt(1.166, 2.847), rotate: 0, - id: 'conv_buck_sw_driver_boot' + id: 'D3' }) -const conv_buck_sw_low_fet = board.add(TO_252_2, { +// conv.buck_sw.low_fet +const Q1 = board.add(TO_252_2, { translate: pt(0.870, 1.951), rotate: 0, - id: 'conv_buck_sw_low_fet' + id: 'Q1' }) -const conv_buck_sw_low_gate_res = board.add(R_0603_1608Metric, { +// conv.buck_sw.low_gate_res +const R4 = board.add(R_0603_1608Metric, { translate: pt(0.214, 2.968), rotate: 0, - id: 'conv_buck_sw_low_gate_res' + id: 'R4' }) -const conv_buck_sw_high_fet = board.add(TO_252_2, { +// conv.buck_sw.high_fet +const Q2 = board.add(TO_252_2, { translate: pt(1.346, 1.951), rotate: 0, - id: 'conv_buck_sw_high_fet' + id: 'Q2' }) -const conv_buck_sw_high_gate_res = board.add(R_0603_1608Metric, { +// conv.buck_sw.high_gate_res +const R5 = board.add(R_0603_1608Metric, { translate: pt(0.370, 2.968), rotate: 0, - id: 'conv_buck_sw_high_gate_res' + id: 'R5' }) -const conv_boost_sw_driver_ic = board.add(SOIC_8_3_9x4_9mm_P1_27mm, { +// conv.boost_sw.driver.ic +const U4 = board.add(SOIC_8_3_9x4_9mm_P1_27mm, { translate: pt(1.429, 2.471), rotate: 0, - id: 'conv_boost_sw_driver_ic' + id: 'U4' }) -const conv_boost_sw_driver_cap_cap = board.add(C_0603_1608Metric, { +// conv.boost_sw.driver.cap.cap +const C22 = board.add(C_0603_1608Metric, { translate: pt(0.526, 2.968), rotate: 0, - id: 'conv_boost_sw_driver_cap_cap' + id: 'C22' }) -const conv_boost_sw_driver_high_cap_cap = board.add(C_0603_1608Metric, { +// conv.boost_sw.driver.high_cap.cap +const C23 = board.add(C_0603_1608Metric, { translate: pt(0.682, 2.968), rotate: 0, - id: 'conv_boost_sw_driver_high_cap_cap' + id: 'C23' }) -const conv_boost_sw_driver_boot = board.add(D_SOD_323, { +// conv.boost_sw.driver.boot +const D4 = board.add(D_SOD_323, { translate: pt(1.331, 2.847), rotate: 0, - id: 'conv_boost_sw_driver_boot' + id: 'D4' }) -const conv_boost_sw_low_fet = board.add(TO_252_2, { +// conv.boost_sw.low_fet +const Q3 = board.add(TO_252_2, { translate: pt(0.252, 2.502), rotate: 0, - id: 'conv_boost_sw_low_fet' + id: 'Q3' }) -const conv_boost_sw_low_gate_res = board.add(R_0603_1608Metric, { +// conv.boost_sw.low_gate_res +const R6 = board.add(R_0603_1608Metric, { translate: pt(0.838, 2.968), rotate: 0, - id: 'conv_boost_sw_low_gate_res' + id: 'R6' }) -const conv_boost_sw_high_fet = board.add(TO_252_2, { +// conv.boost_sw.high_fet +const Q4 = board.add(TO_252_2, { translate: pt(0.728, 2.502), rotate: 0, - id: 'conv_boost_sw_high_fet' + id: 'Q4' }) -const conv_boost_sw_high_gate_res = board.add(R_0603_1608Metric, { +// conv.boost_sw.high_gate_res +const R7 = board.add(R_0603_1608Metric, { translate: pt(0.994, 2.968), rotate: 0, - id: 'conv_boost_sw_high_gate_res' + id: 'R7' }) -const prot_conv_diode = board.add(D_SMA, { +// prot_conv.diode +const D5 = board.add(D_SMA, { translate: pt(1.630, 4.635), rotate: 0, - id: 'prot_conv_diode' + id: 'D5' }) -const tp_conv_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(4.259, 4.603), rotate: 0, - id: 'tp_conv_tp' +// tp_conv.tp +const TP5 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(3.257, 4.603), rotate: 0, + id: 'TP5' }) -const reg_v12_ic = board.add(SOT_23_5, { - translate: pt(5.460, 3.182), rotate: 0, - id: 'reg_v12_ic' +// reg_v12.ic +const U5 = board.add(SOT_23_5, { + translate: pt(4.904, 3.182), rotate: 0, + id: 'U5' }) -const reg_v12_fb_div_top_res = board.add(R_0603_1608Metric, { - translate: pt(5.781, 3.317), rotate: 0, - id: 'reg_v12_fb_div_top_res' +// reg_v12.fb.div.top_res +const R8 = board.add(R_0603_1608Metric, { + translate: pt(5.224, 3.317), rotate: 0, + id: 'R8' }) -const reg_v12_fb_div_bottom_res = board.add(R_0603_1608Metric, { - translate: pt(5.438, 3.431), rotate: 0, - id: 'reg_v12_fb_div_bottom_res' +// reg_v12.fb.div.bottom_res +const R9 = board.add(R_0603_1608Metric, { + translate: pt(4.881, 3.431), rotate: 0, + id: 'R9' }) -const reg_v12_power_path_inductor = board.add(L_0805_2012Metric, { - translate: pt(5.614, 3.322), rotate: 0, - id: 'reg_v12_power_path_inductor' +// reg_v12.power_path.inductor +const L3 = board.add(L_0805_2012Metric, { + translate: pt(5.058, 3.322), rotate: 0, + id: 'L3' }) -const reg_v12_power_path_in_cap_cap = board.add(C_0805_2012Metric, { - translate: pt(5.647, 3.154), rotate: 0, - id: 'reg_v12_power_path_in_cap_cap' +// reg_v12.power_path.in_cap.cap +const C24 = board.add(C_0805_2012Metric, { + translate: pt(5.091, 3.154), rotate: 0, + id: 'C24' }) -const reg_v12_power_path_out_cap_cap = board.add(C_0603_1608Metric, { - translate: pt(5.594, 3.431), rotate: 0, - id: 'reg_v12_power_path_out_cap_cap' +// reg_v12.power_path.out_cap.cap +const C25 = board.add(C_0603_1608Metric, { + translate: pt(5.037, 3.431), rotate: 0, + id: 'C25' }) -const reg_v12_cf = board.add(C_0603_1608Metric, { - translate: pt(5.750, 3.431), rotate: 0, - id: 'reg_v12_cf' +// reg_v12.cf +const C26 = board.add(C_0603_1608Metric, { + translate: pt(5.193, 3.431), rotate: 0, + id: 'C26' }) -const reg_v12_rect = board.add(D_SOD_323, { - translate: pt(5.443, 3.326), rotate: 0, - id: 'reg_v12_rect' +// reg_v12.rect +const D6 = board.add(D_SOD_323, { + translate: pt(4.887, 3.326), rotate: 0, + id: 'D6' }) -const tp_v12_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(4.509, 4.603), rotate: 0, - id: 'tp_v12_tp' +// tp_v12.tp +const TP6 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(3.507, 4.603), rotate: 0, + id: 'TP6' }) -const reg_analog_ic = board.add(SOT_23_5, { +// reg_analog.ic +const U6 = board.add(SOT_23_5, { translate: pt(3.526, 3.182), rotate: 0, - id: 'reg_analog_ic' + id: 'U6' }) -const reg_analog_in_cap_cap = board.add(C_0603_1608Metric, { +// reg_analog.in_cap.cap +const C27 = board.add(C_0603_1608Metric, { translate: pt(3.504, 3.447), rotate: 0, - id: 'reg_analog_in_cap_cap' + id: 'C27' }) -const reg_analog_out_cap_cap = board.add(C_1206_3216Metric, { +// reg_analog.out_cap.cap +const C28 = board.add(C_1206_3216Metric, { translate: pt(3.536, 3.333), rotate: 0, - id: 'reg_analog_out_cap_cap' + id: 'C28' }) -const tp_analog_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(3.507, 4.603), rotate: 0, - id: 'tp_analog_tp' +// tp_analog.tp +const TP7 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(3.758, 4.603), rotate: 0, + id: 'TP7' }) -const reg_vref_ic = board.add(SOT_23, { +// reg_vref.ic +const U7 = board.add(SOT_23, { translate: pt(1.409, 4.251), rotate: 0, - id: 'reg_vref_ic' + id: 'U7' }) -const reg_vref_in_cap_cap = board.add(C_0603_1608Metric, { +// reg_vref.in_cap.cap +const C29 = board.add(C_0603_1608Metric, { translate: pt(1.391, 4.386), rotate: 0, - id: 'reg_vref_in_cap_cap' + id: 'C29' }) -const tp_vref_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(3.007, 4.603), rotate: 0, - id: 'tp_vref_tp' +// tp_vref.tp +const TP8 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(4.008, 4.603), rotate: 0, + id: 'TP8' }) -const ref_div_div_top_res = board.add(R_0603_1608Metric, { - translate: pt(0.058, 4.594), rotate: 0, - id: 'ref_div_div_top_res' +// ref_div.div.top_res +const R10 = board.add(R_0603_1608Metric, { + translate: pt(4.455, 4.213), rotate: 0, + id: 'R10' }) -const ref_div_div_bottom_res = board.add(R_0603_1608Metric, { - translate: pt(0.058, 4.691), rotate: 0, - id: 'ref_div_div_bottom_res' +// ref_div.div.bottom_res +const R11 = board.add(R_0603_1608Metric, { + translate: pt(4.455, 4.309), rotate: 0, + id: 'R11' }) -const ref_cap = board.add(C_0603_1608Metric, { +// ref_cap +const C30 = board.add(C_0603_1608Metric, { translate: pt(5.804, 4.594), rotate: 0, - id: 'ref_cap' + id: 'C30' }) -const reg_vcontrol_ic = board.add(SOT_23_5, { - translate: pt(4.904, 3.182), rotate: 0, - id: 'reg_vcontrol_ic' +// reg_vcontrol.ic +const U8 = board.add(SOT_23_5, { + translate: pt(5.481, 3.182), rotate: 0, + id: 'U8' }) -const reg_vcontrol_fb_div_top_res = board.add(R_0603_1608Metric, { - translate: pt(5.047, 3.317), rotate: 0, - id: 'reg_vcontrol_fb_div_top_res' +// reg_vcontrol.fb.div.top_res +const R12 = board.add(R_0603_1608Metric, { + translate: pt(5.625, 3.317), rotate: 0, + id: 'R12' }) -const reg_vcontrol_fb_div_bottom_res = board.add(R_0603_1608Metric, { - translate: pt(5.203, 3.317), rotate: 0, - id: 'reg_vcontrol_fb_div_bottom_res' -}) -const reg_vcontrol_power_path_inductor = board.add(L_0603_1608Metric, { - translate: pt(4.881, 3.431), rotate: 0, - id: 'reg_vcontrol_power_path_inductor' -}) -const reg_vcontrol_power_path_in_cap_cap = board.add(C_0603_1608Metric, { - translate: pt(5.037, 3.431), rotate: 0, - id: 'reg_vcontrol_power_path_in_cap_cap' -}) -const reg_vcontrol_power_path_out_cap_cap = board.add(C_0805_2012Metric, { - translate: pt(5.091, 3.154), rotate: 0, - id: 'reg_vcontrol_power_path_out_cap_cap' -}) -const reg_vcontrol_cf = board.add(C_0603_1608Metric, { - translate: pt(5.193, 3.431), rotate: 0, - id: 'reg_vcontrol_cf' -}) -const reg_vcontrol_rect = board.add(D_SOD_323, { - translate: pt(4.887, 3.326), rotate: 0, - id: 'reg_vcontrol_rect' -}) -const tp_vcontrol_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(3.257, 4.603), rotate: 0, - id: 'tp_vcontrol_tp' +// reg_vcontrol.fb.div.bottom_res +const R13 = board.add(R_0603_1608Metric, { + translate: pt(5.781, 3.317), rotate: 0, + id: 'R13' +}) +// reg_vcontrol.power_path.inductor +const L4 = board.add(L_0603_1608Metric, { + translate: pt(5.459, 3.431), rotate: 0, + id: 'L4' +}) +// reg_vcontrol.power_path.in_cap.cap +const C31 = board.add(C_0603_1608Metric, { + translate: pt(5.615, 3.431), rotate: 0, + id: 'C31' +}) +// reg_vcontrol.power_path.out_cap.cap +const C32 = board.add(C_0805_2012Metric, { + translate: pt(5.669, 3.154), rotate: 0, + id: 'C32' +}) +// reg_vcontrol.cf +const C33 = board.add(C_0603_1608Metric, { + translate: pt(5.771, 3.431), rotate: 0, + id: 'C33' +}) +// reg_vcontrol.rect +const D7 = board.add(D_SOD_323, { + translate: pt(5.464, 3.326), rotate: 0, + id: 'D7' +}) +// tp_vcontrol.tp +const TP9 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(4.259, 4.603), rotate: 0, + id: 'TP9' }) -const reg_vcontroln_ic = board.add(SOT_23_6, { +// reg_vcontroln.ic +const U9 = board.add(SOT_23_6, { translate: pt(0.081, 4.251), rotate: 0, - id: 'reg_vcontroln_ic' + id: 'U9' }) -const reg_vcontroln_cf = board.add(C_0805_2012Metric, { +// reg_vcontroln.cf +const C34 = board.add(C_0805_2012Metric, { translate: pt(0.287, 4.396), rotate: 0, - id: 'reg_vcontroln_cf' + id: 'C34' }) -const reg_vcontroln_cout_cap_c_0_ = board.add(C_1206_3216Metric, { +// reg_vcontroln.cout.cap.c[0] +const C35 = board.add(C_1206_3216Metric, { translate: pt(0.291, 4.229), rotate: 0, - id: 'reg_vcontroln_cout_cap_c_0_' + id: 'C35' }) -const reg_vcontroln_cout_cap_c_1_ = board.add(C_1206_3216Metric, { +// reg_vcontroln.cout.cap.c[1] +const C36 = board.add(C_1206_3216Metric, { translate: pt(0.091, 4.402), rotate: 0, - id: 'reg_vcontroln_cout_cap_c_1_' + id: 'C36' }) -const tp_vcontroln_tp = board.add(TestPoint_TE_RCT_0805, { - translate: pt(2.256, 4.603), rotate: 0, - id: 'tp_vcontroln_tp' +// tp_vcontroln.tp +const TP10 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(4.509, 4.603), rotate: 0, + id: 'TP10' }) -const control_dmeas_r1 = board.add(R_0603_1608Metric, { +// control.dmeas.r1 +const R14 = board.add(R_0603_1608Metric, { translate: pt(2.980, 2.519), rotate: 0, - id: 'control_dmeas_r1' + id: 'R14' }) -const control_dmeas_r2 = board.add(R_0603_1608Metric, { +// control.dmeas.r2 +const R15 = board.add(R_0603_1608Metric, { translate: pt(3.135, 2.519), rotate: 0, - id: 'control_dmeas_r2' + id: 'R15' }) -const control_dmeas_rf = board.add(R_0603_1608Metric, { +// control.dmeas.rf +const R16 = board.add(R_0603_1608Metric, { translate: pt(1.751, 2.647), rotate: 0, - id: 'control_dmeas_rf' + id: 'R16' }) -const control_dmeas_rg = board.add(R_0603_1608Metric, { +// control.dmeas.rg +const R17 = board.add(R_0603_1608Metric, { translate: pt(1.907, 2.647), rotate: 0, - id: 'control_dmeas_rg' + id: 'R17' }) -const control_dclamp_res = board.add(R_0603_1608Metric, { +// control.dclamp.res +const R18 = board.add(R_0603_1608Metric, { translate: pt(2.063, 2.647), rotate: 0, - id: 'control_dclamp_res' + id: 'R18' }) -const control_err_d_rtop = board.add(R_0603_1608Metric, { +// control.err_d.rtop +const R19 = board.add(R_0603_1608Metric, { translate: pt(2.219, 2.647), rotate: 0, - id: 'control_err_d_rtop' + id: 'R19' }) -const control_err_d_rbot = board.add(R_0603_1608Metric, { +// control.err_d.rbot +const R20 = board.add(R_0603_1608Metric, { translate: pt(2.375, 2.647), rotate: 0, - id: 'control_err_d_rbot' + id: 'R20' }) -const control_err_d_rout = board.add(R_0603_1608Metric, { +// control.err_d.rout +const R21 = board.add(R_0603_1608Metric, { translate: pt(2.531, 2.647), rotate: 0, - id: 'control_err_d_rout' + id: 'R21' }) -const control_err_volt_rtop = board.add(R_0603_1608Metric, { +// control.err_volt.rtop +const R22 = board.add(R_0603_1608Metric, { translate: pt(2.687, 2.647), rotate: 0, - id: 'control_err_volt_rtop' + id: 'R22' }) -const control_err_volt_rbot = board.add(R_0603_1608Metric, { +// control.err_volt.rbot +const R23 = board.add(R_0603_1608Metric, { translate: pt(2.843, 2.647), rotate: 0, - id: 'control_err_volt_rbot' + id: 'R23' }) -const control_err_volt_rout = board.add(R_0603_1608Metric, { +// control.err_volt.rout +const R24 = board.add(R_0603_1608Metric, { translate: pt(2.998, 2.647), rotate: 0, - id: 'control_err_volt_rout' + id: 'R24' }) -const control_err_source_rtop = board.add(R_0603_1608Metric, { +// control.err_source.rtop +const R25 = board.add(R_0603_1608Metric, { translate: pt(3.154, 2.647), rotate: 0, - id: 'control_err_source_rtop' + id: 'R25' }) -const control_err_source_rbot = board.add(R_0603_1608Metric, { +// control.err_source.rbot +const R26 = board.add(R_0603_1608Metric, { translate: pt(1.751, 2.744), rotate: 0, - id: 'control_err_source_rbot' + id: 'R26' }) -const control_err_source_rout = board.add(R_0603_1608Metric, { +// control.err_source.rout +const R27 = board.add(R_0603_1608Metric, { translate: pt(1.907, 2.744), rotate: 0, - id: 'control_err_source_rout' + id: 'R27' }) -const control_err_source_diode = board.add(D_SOD_323, { +// control.err_source.diode +const D8 = board.add(D_SOD_323, { translate: pt(2.322, 2.528), rotate: 0, - id: 'control_err_source_diode' + id: 'D8' }) -const control_err_sink_rtop = board.add(R_0603_1608Metric, { +// control.err_sink.rtop +const R28 = board.add(R_0603_1608Metric, { translate: pt(2.063, 2.744), rotate: 0, - id: 'control_err_sink_rtop' + id: 'R28' }) -const control_err_sink_rbot = board.add(R_0603_1608Metric, { +// control.err_sink.rbot +const R29 = board.add(R_0603_1608Metric, { translate: pt(2.219, 2.744), rotate: 0, - id: 'control_err_sink_rbot' + id: 'R29' }) -const control_err_sink_rout = board.add(R_0603_1608Metric, { +// control.err_sink.rout +const R30 = board.add(R_0603_1608Metric, { translate: pt(2.375, 2.744), rotate: 0, - id: 'control_err_sink_rout' + id: 'R30' }) -const control_err_sink_diode = board.add(D_SOD_323, { +// control.err_sink.diode +const D9 = board.add(D_SOD_323, { translate: pt(2.487, 2.528), rotate: 0, - id: 'control_err_sink_diode' + id: 'D9' }) -const control_off_sw_device_ic = board.add(SOT_363_SC_70_6, { +// control.off_sw.device.ic +const U10 = board.add(SOT_363_SC_70_6, { translate: pt(2.965, 2.231), rotate: 0, - id: 'control_off_sw_device_ic' + id: 'U10' }) -const control_off_sw_device_vdd_cap_cap = board.add(C_0603_1608Metric, { +// control.off_sw.device.vdd_cap.cap +const C37 = board.add(C_0603_1608Metric, { translate: pt(2.531, 2.744), rotate: 0, - id: 'control_off_sw_device_vdd_cap_cap' + id: 'C37' }) -const control_int_r = board.add(R_0603_1608Metric, { +// control.int.r +const R31 = board.add(R_0603_1608Metric, { translate: pt(2.687, 2.744), rotate: 0, - id: 'control_int_r' + id: 'R31' }) -const control_int_c = board.add(C_0603_1608Metric, { +// control.int.c +const C38 = board.add(C_0603_1608Metric, { translate: pt(2.843, 2.744), rotate: 0, - id: 'control_int_c' + id: 'C38' }) -const control_amp_r1 = board.add(R_0603_1608Metric, { +// control.amp.r1 +const R32 = board.add(R_0603_1608Metric, { translate: pt(2.998, 2.744), rotate: 0, - id: 'control_amp_r1' + id: 'R32' }) -const control_amp_r2 = board.add(R_0603_1608Metric, { +// control.amp.r2 +const R33 = board.add(R_0603_1608Metric, { translate: pt(3.154, 2.744), rotate: 0, - id: 'control_amp_r2' + id: 'R33' }) -const control_hvclamp_res = board.add(R_0603_1608Metric, { +// control.hvclamp.res +const R34 = board.add(R_0603_1608Metric, { translate: pt(1.751, 2.841), rotate: 0, - id: 'control_hvclamp_res' + id: 'R34' }) -const control_driver_clamp1 = board.add(D_SOD_323, { +// control.driver.clamp1 +const D10 = board.add(D_SOD_323, { translate: pt(2.653, 2.528), rotate: 0, - id: 'control_driver_clamp1' + id: 'D10' }) -const control_driver_clamp2 = board.add(D_SOD_323, { +// control.driver.clamp2 +const D11 = board.add(D_SOD_323, { translate: pt(2.819, 2.528), rotate: 0, - id: 'control_driver_clamp2' + id: 'D11' }) -const control_driver_high_fet = board.add(TO_252_2, { +// control.driver.high_fet +const Q5 = board.add(TO_252_2, { translate: pt(2.826, 1.951), rotate: 0, - id: 'control_driver_high_fet' + id: 'Q5' }) -const control_driver_low_fet = board.add(TO_252_2, { +// control.driver.low_fet +const Q6 = board.add(TO_252_2, { translate: pt(1.944, 2.313), rotate: 0, - id: 'control_driver_low_fet' + id: 'Q6' }) -const control_driver_res = board.add(R_0603_1608Metric, { +// control.driver.res +const R35 = board.add(R_0603_1608Metric, { translate: pt(1.907, 2.841), rotate: 0, - id: 'control_driver_res' + id: 'R35' }) -const control_isense_ranges_0__pwr_sw_ic = board.add(SMDIP_6_W7_62mm, { +// control.isense.ranges[0].pwr_sw.ic +const U11 = board.add(SMDIP_6_W7_62mm, { translate: pt(1.894, 1.975), rotate: 0, - id: 'control_isense_ranges_0__pwr_sw_ic' + id: 'U11' }) -const control_isense_ranges_0__pwr_sw_res = board.add(R_0603_1608Metric, { +// control.isense.ranges[0].pwr_sw.res +const R36 = board.add(R_0603_1608Metric, { translate: pt(2.063, 2.841), rotate: 0, - id: 'control_isense_ranges_0__pwr_sw_res' + id: 'R36' }) -const control_isense_ranges_0__isense_res_res = board.add(R_1206_3216Metric, { +// control.isense.ranges[0].isense.res.res +const R37 = board.add(R_1206_3216Metric, { translate: pt(3.157, 2.220), rotate: 0, - id: 'control_isense_ranges_0__isense_res_res' + id: 'R37' }) -const control_isense_ranges_0__clamp_res = board.add(R_0603_1608Metric, { +// control.isense.ranges[0].clamp.res +const R38 = board.add(R_0603_1608Metric, { translate: pt(2.219, 2.841), rotate: 0, - id: 'control_isense_ranges_0__clamp_res' + id: 'R38' }) -const control_isense_ranges_0__sense_sw_device_ic = board.add(SOT_23_6, { +// control.isense.ranges[0].sense_sw.device.ic +const U12 = board.add(SOT_23_6, { translate: pt(2.581, 2.243), rotate: 0, - id: 'control_isense_ranges_0__sense_sw_device_ic' + id: 'U12' }) -const control_isense_ranges_0__sense_sw_device_vdd_cap_cap = board.add(C_0805_2012Metric, { +// control.isense.ranges[0].sense_sw.device.vdd_cap.cap +const C39 = board.add(C_0805_2012Metric, { translate: pt(1.979, 2.529), rotate: 0, - id: 'control_isense_ranges_0__sense_sw_device_vdd_cap_cap' + id: 'C39' }) -const control_isense_ranges_1__pwr_sw_ic = board.add(SMDIP_6_W7_62mm, { +// control.isense.ranges[1].pwr_sw.ic +const U13 = board.add(SMDIP_6_W7_62mm, { translate: pt(2.335, 1.975), rotate: 0, - id: 'control_isense_ranges_1__pwr_sw_ic' + id: 'U13' }) -const control_isense_ranges_1__pwr_sw_res = board.add(R_0603_1608Metric, { +// control.isense.ranges[1].pwr_sw.res +const R39 = board.add(R_0603_1608Metric, { translate: pt(2.375, 2.841), rotate: 0, - id: 'control_isense_ranges_1__pwr_sw_res' + id: 'R39' }) -const control_isense_ranges_1__isense_res_res = board.add(R_1206_3216Metric, { +// control.isense.ranges[1].isense.res.res +const R40 = board.add(R_1206_3216Metric, { translate: pt(1.783, 2.535), rotate: 0, - id: 'control_isense_ranges_1__isense_res_res' + id: 'R40' }) -const control_isense_ranges_1__clamp_res = board.add(R_0603_1608Metric, { +// control.isense.ranges[1].clamp.res +const R41 = board.add(R_0603_1608Metric, { translate: pt(2.531, 2.841), rotate: 0, - id: 'control_isense_ranges_1__clamp_res' + id: 'R41' }) -const control_isense_ranges_1__sense_sw_device_ic = board.add(SOT_23_6, { +// control.isense.ranges[1].sense_sw.device.ic +const U14 = board.add(SOT_23_6, { translate: pt(2.781, 2.243), rotate: 0, - id: 'control_isense_ranges_1__sense_sw_device_ic' + id: 'U14' }) -const control_isense_ranges_1__sense_sw_device_vdd_cap_cap = board.add(C_0805_2012Metric, { +// control.isense.ranges[1].sense_sw.device.vdd_cap.cap +const C40 = board.add(C_0805_2012Metric, { translate: pt(2.152, 2.529), rotate: 0, - id: 'control_isense_ranges_1__sense_sw_device_vdd_cap_cap' + id: 'C40' }) -const control_imeas_amp = board.add(SOIC_8_3_9x4_9mm_P1_27mm, { +// control.imeas.amp +const U15 = board.add(SOIC_8_3_9x4_9mm_P1_27mm, { translate: pt(2.315, 2.282), rotate: 0, - id: 'control_imeas_amp' + id: 'U15' }) -const control_imeas_vdd_cap_cap = board.add(C_0603_1608Metric, { +// control.imeas.vdd_cap.cap +const C41 = board.add(C_0603_1608Metric, { translate: pt(2.687, 2.841), rotate: 0, - id: 'control_imeas_vdd_cap_cap' + id: 'C41' }) -const control_vmeas_r1 = board.add(R_0603_1608Metric, { +// control.vmeas.r1 +const R42 = board.add(R_0603_1608Metric, { translate: pt(2.843, 2.841), rotate: 0, - id: 'control_vmeas_r1' + id: 'R42' }) -const control_vmeas_r2 = board.add(R_0603_1608Metric, { +// control.vmeas.r2 +const R43 = board.add(R_0603_1608Metric, { translate: pt(2.998, 2.841), rotate: 0, - id: 'control_vmeas_r2' + id: 'R43' }) -const control_vmeas_rf = board.add(R_0603_1608Metric, { +// control.vmeas.rf +const R44 = board.add(R_0603_1608Metric, { translate: pt(3.154, 2.841), rotate: 0, - id: 'control_vmeas_rf' + id: 'R44' }) -const control_vmeas_rg = board.add(R_0603_1608Metric, { +// control.vmeas.rg +const R45 = board.add(R_0603_1608Metric, { translate: pt(1.751, 2.937), rotate: 0, - id: 'control_vmeas_rg' + id: 'R45' }) -const control_vclamp_res = board.add(R_0603_1608Metric, { +// control.vclamp.res +const R46 = board.add(R_0603_1608Metric, { translate: pt(1.907, 2.937), rotate: 0, - id: 'control_vclamp_res' + id: 'R46' }) -const pd_ic = board.add(WQFN_14_1EP_2_5x2_5mm_P0_5mm_EP1_45x1_45mm, { +// pd.ic +const U16 = board.add(WQFN_14_1EP_2_5x2_5mm_P0_5mm_EP1_45x1_45mm, { translate: pt(0.573, 4.257), rotate: 0, - id: 'pd_ic' + id: 'U16' }) -const pd_vdd_cap_0__cap = board.add(C_0603_1608Metric, { +// pd.vdd_cap[0].cap +const C42 = board.add(C_0603_1608Metric, { translate: pt(0.731, 4.398), rotate: 0, - id: 'pd_vdd_cap_0__cap' + id: 'C42' }) -const pd_vdd_cap_1__cap = board.add(C_0805_2012Metric, { +// pd.vdd_cap[1].cap +const C43 = board.add(C_0805_2012Metric, { translate: pt(0.567, 4.407), rotate: 0, - id: 'pd_vdd_cap_1__cap' + id: 'C43' }) -const mcu_ic = board.add(ESP32_S3_WROOM_1, { +// mcu.ic +const U17 = board.add(ESP32_S3_WROOM_1, { translate: pt(3.504, 0.530), rotate: 0, - id: 'mcu_ic' + id: 'U17' }) -const mcu_vcc_cap0_cap = board.add(C_1206_3216Metric, { +// mcu.vcc_cap0.cap +const C44 = board.add(C_1206_3216Metric, { translate: pt(4.579, 0.242), rotate: 0, - id: 'mcu_vcc_cap0_cap' + id: 'C44' }) -const mcu_vcc_cap1_cap = board.add(C_0603_1608Metric, { +// mcu.vcc_cap1.cap +const C45 = board.add(C_0603_1608Metric, { translate: pt(4.767, 0.226), rotate: 0, - id: 'mcu_vcc_cap1_cap' + id: 'C45' }) -const mcu_prog_conn = board.add(Tag_Connect_TC2030_IDC_NL_2x03_P1_27mm_Vertical, { +// mcu.prog.conn +const J2 = board.add(Tag_Connect_TC2030_IDC_NL_2x03_P1_27mm_Vertical, { translate: pt(4.626, 0.079), rotate: 0, - id: 'mcu_prog_conn' + id: 'J2' }) -const mcu_en_pull_rc_r = board.add(R_0603_1608Metric, { +// mcu.en_pull.rc.r +const R47 = board.add(R_0603_1608Metric, { translate: pt(4.546, 0.356), rotate: 0, - id: 'mcu_en_pull_rc_r' + id: 'R47' }) -const mcu_en_pull_rc_c = board.add(C_0603_1608Metric, { +// mcu.en_pull.rc.c +const C46 = board.add(C_0603_1608Metric, { translate: pt(4.702, 0.356), rotate: 0, - id: 'mcu_en_pull_rc_c' + id: 'C46' }) -const led_package = board.add(LED_0603_1608Metric, { +// led.package +const D12 = board.add(LED_0603_1608Metric, { translate: pt(4.220, 4.213), rotate: 0, - id: 'led_package' + id: 'D12' }) -const led_res = board.add(R_0603_1608Metric, { +// led.res +const R48 = board.add(R_0603_1608Metric, { translate: pt(4.220, 4.310), rotate: 0, - id: 'led_res' + id: 'R48' }) -const usb_esd = board.add(SOT_23, { +// usb_esd +const U18 = board.add(SOT_23, { translate: pt(5.473, 4.633), rotate: 0, - id: 'usb_esd' + id: 'U18' }) -const i2c_tp_tp_scl_tp = board.add(TestPoint_TE_RCT_0805, { +// i2c_tp.tp_scl.tp +const TP11 = board.add(TestPoint_TE_RCT_0805, { translate: pt(2.983, 4.221), rotate: 0, - id: 'i2c_tp_tp_scl_tp' + id: 'TP11' }) -const i2c_tp_tp_sda_tp = board.add(TestPoint_TE_RCT_0805, { +// i2c_tp.tp_sda.tp +const TP12 = board.add(TestPoint_TE_RCT_0805, { translate: pt(2.983, 4.335), rotate: 0, - id: 'i2c_tp_tp_sda_tp' + id: 'TP12' }) -const i2c_pull_scl_res_res = board.add(R_0603_1608Metric, { - translate: pt(6.097, 4.213), rotate: 0, - id: 'i2c_pull_scl_res_res' +// i2c_pull.scl_res.res +const R49 = board.add(R_0603_1608Metric, { + translate: pt(4.690, 4.213), rotate: 0, + id: 'R49' }) -const i2c_pull_sda_res_res = board.add(R_0603_1608Metric, { - translate: pt(6.097, 4.309), rotate: 0, - id: 'i2c_pull_sda_res_res' +// i2c_pull.sda_res.res +const R50 = board.add(R_0603_1608Metric, { + translate: pt(4.690, 4.309), rotate: 0, + id: 'R50' }) -const oled_device_conn = board.add(Hirose_FH12_24S_0_5SH_1x24_1MP_P0_50mm_Horizontal, { +// oled.device.conn +const J3 = board.add(Hirose_FH12_24S_0_5SH_1x24_1MP_P0_50mm_Horizontal, { translate: pt(0.356, 1.577), rotate: 0, - id: 'oled_device_conn' + id: 'J3' }) -const oled_lcd = board.add(Lcd_Er_Oled022_1_Outline, { +// oled.lcd +const U19 = board.add(Lcd_Er_Oled022_1_Outline, { translate: pt(1.220, 0.607), rotate: 0, - id: 'oled_lcd' + id: 'U19' }) -const oled_iref_res = board.add(R_0603_1608Metric, { +// oled.iref_res +const R51 = board.add(R_0603_1608Metric, { translate: pt(1.377, 1.413), rotate: 0, - id: 'oled_iref_res' + id: 'R51' }) -const oled_vcomh_cap_cap = board.add(C_1206_3216Metric, { +// oled.vcomh_cap.cap +const C47 = board.add(C_1206_3216Metric, { translate: pt(0.843, 1.430), rotate: 0, - id: 'oled_vcomh_cap_cap' + id: 'C47' }) -const oled_vdd_cap1_cap = board.add(C_0603_1608Metric, { +// oled.vdd_cap1.cap +const C48 = board.add(C_0603_1608Metric, { translate: pt(1.533, 1.413), rotate: 0, - id: 'oled_vdd_cap1_cap' + id: 'C48' }) -const oled_vdd_cap2_cap = board.add(C_0805_2012Metric, { +// oled.vdd_cap2.cap +const C49 = board.add(C_0805_2012Metric, { translate: pt(1.039, 1.423), rotate: 0, - id: 'oled_vdd_cap2_cap' + id: 'C49' }) -const oled_vcc_cap1_cap = board.add(C_0603_1608Metric, { +// oled.vcc_cap1.cap +const C50 = board.add(C_0603_1608Metric, { translate: pt(1.689, 1.413), rotate: 0, - id: 'oled_vcc_cap1_cap' + id: 'C50' }) -const oled_vcc_cap2_cap = board.add(C_0805_2012Metric, { +// oled.vcc_cap2.cap +const C51 = board.add(C_0805_2012Metric, { translate: pt(1.213, 1.423), rotate: 0, - id: 'oled_vcc_cap2_cap' + id: 'C51' +}) +// buck_rc.rc.r +const R52 = board.add(R_0603_1608Metric, { + translate: pt(4.924, 4.213), rotate: 0, + id: 'R52' +}) +// buck_rc.rc.c +const C52 = board.add(C_0603_1608Metric, { + translate: pt(4.924, 4.309), rotate: 0, + id: 'C52' }) -const buck_rc_rc_r = board.add(R_0603_1608Metric, { +// boost_rc.rc.r +const R53 = board.add(R_0603_1608Metric, { translate: pt(5.159, 4.213), rotate: 0, - id: 'buck_rc_rc_r' + id: 'R53' }) -const buck_rc_rc_c = board.add(C_0603_1608Metric, { +// boost_rc.rc.c +const C53 = board.add(C_0603_1608Metric, { translate: pt(5.159, 4.309), rotate: 0, - id: 'buck_rc_rc_c' + id: 'C53' }) -const boost_rc_rc_r = board.add(R_0603_1608Metric, { - translate: pt(5.394, 4.213), rotate: 0, - id: 'boost_rc_rc_r' +// conv_comp.ic +const U20 = board.add(SOT_353_SC_70_5, { + translate: pt(2.055, 4.239), rotate: 0, + id: 'U20' }) -const boost_rc_rc_c = board.add(C_0603_1608Metric, { - translate: pt(5.394, 4.309), rotate: 0, - id: 'boost_rc_rc_c' +// conv_comp.vdd_cap.cap +const C54 = board.add(C_0603_1608Metric, { + translate: pt(2.050, 4.362), rotate: 0, + id: 'C54' }) -const conv_comp_ic = board.add(SOT_353_SC_70_5, { - translate: pt(2.446, 4.239), rotate: 0, - id: 'conv_comp_ic' +// comp_ref.div.top_res +const R54 = board.add(R_0603_1608Metric, { + translate: pt(5.394, 4.213), rotate: 0, + id: 'R54' }) -const conv_comp_vdd_cap_cap = board.add(C_0603_1608Metric, { - translate: pt(2.441, 4.362), rotate: 0, - id: 'conv_comp_vdd_cap_cap' +// comp_ref.div.bottom_res +const R55 = board.add(R_0603_1608Metric, { + translate: pt(5.394, 4.309), rotate: 0, + id: 'R55' }) -const comp_ref_div_top_res = board.add(R_0603_1608Metric, { +// comp_sense.div.top_res +const R56 = board.add(R_0603_1608Metric, { translate: pt(5.628, 4.213), rotate: 0, - id: 'comp_ref_div_top_res' + id: 'R56' }) -const comp_ref_div_bottom_res = board.add(R_0603_1608Metric, { +// comp_sense.div.bottom_res +const R57 = board.add(R_0603_1608Metric, { translate: pt(5.628, 4.309), rotate: 0, - id: 'comp_ref_div_bottom_res' -}) -const comp_sense_div_top_res = board.add(R_0603_1608Metric, { - translate: pt(4.690, 4.213), rotate: 0, - id: 'comp_sense_div_top_res' -}) -const comp_sense_div_bottom_res = board.add(R_0603_1608Metric, { - translate: pt(4.690, 4.309), rotate: 0, - id: 'comp_sense_div_bottom_res' + id: 'R57' }) -const conv_latch_ic = board.add(VSSOP_8_2_4x2_1mm_P0_5mm, { +// conv_latch.ic +const U21 = board.add(VSSOP_8_2_4x2_1mm_P0_5mm, { translate: pt(2.713, 4.235), rotate: 0, - id: 'conv_latch_ic' + id: 'U21' }) -const conv_latch_vdd_cap_cap = board.add(C_0603_1608Metric, { +// conv_latch.vdd_cap.cap +const C55 = board.add(C_0603_1608Metric, { translate: pt(2.685, 4.354), rotate: 0, - id: 'conv_latch_vdd_cap_cap' + id: 'C55' }) -const conv_en_pull_res = board.add(R_0603_1608Metric, { - translate: pt(5.221, 4.594), rotate: 0, - id: 'conv_en_pull_res' -}) -const comp_pull_res = board.add(R_0603_1608Metric, { +// conv_en_pull.res +const R58 = board.add(R_0603_1608Metric, { translate: pt(4.752, 4.594), rotate: 0, - id: 'comp_pull_res' -}) -const pass_temp_ic = board.add(SOT_563, { - translate: pt(3.455, 4.227), rotate: 0, - id: 'pass_temp_ic' + id: 'R58' }) -const pass_temp_vdd_cap_cap = board.add(C_0603_1608Metric, { - translate: pt(3.460, 4.339), rotate: 0, - id: 'pass_temp_vdd_cap_cap' +// comp_pull.res +const R59 = board.add(R_0603_1608Metric, { + translate: pt(4.986, 4.594), rotate: 0, + id: 'R59' }) -const conv_temp_ic = board.add(SOT_563, { +// pass_temp.ic +const U22 = board.add(SOT_563, { translate: pt(3.220, 4.227), rotate: 0, - id: 'conv_temp_ic' + id: 'U22' }) -const conv_temp_vdd_cap_cap = board.add(C_0603_1608Metric, { +// pass_temp.vdd_cap.cap +const C56 = board.add(C_0603_1608Metric, { translate: pt(3.225, 4.339), rotate: 0, - id: 'conv_temp_vdd_cap_cap' + id: 'C56' }) -const conv_sense_div_top_res = board.add(R_0603_1608Metric, { - translate: pt(4.924, 4.213), rotate: 0, - id: 'conv_sense_div_top_res' +// conv_temp.ic +const U23 = board.add(SOT_563, { + translate: pt(3.455, 4.227), rotate: 0, + id: 'U23' }) -const conv_sense_div_bottom_res = board.add(R_0603_1608Metric, { - translate: pt(4.924, 4.309), rotate: 0, - id: 'conv_sense_div_bottom_res' +// conv_temp.vdd_cap.cap +const C57 = board.add(C_0603_1608Metric, { + translate: pt(3.460, 4.339), rotate: 0, + id: 'C57' }) -const ioe_ic = board.add(TSSOP_16_4_4x5mm_P0_65mm, { +// conv_sense.div.top_res +const R60 = board.add(R_0603_1608Metric, { + translate: pt(5.863, 4.213), rotate: 0, + id: 'R60' +}) +// conv_sense.div.bottom_res +const R61 = board.add(R_0603_1608Metric, { + translate: pt(5.863, 4.309), rotate: 0, + id: 'R61' +}) +// ioe.ic +const U24 = board.add(TSSOP_16_4_4x5mm_P0_65mm, { translate: pt(2.121, 3.833), rotate: 0, - id: 'ioe_ic' + id: 'U24' }) -const ioe_vdd_cap_cap = board.add(C_0603_1608Metric, { +// ioe.vdd_cap.cap +const C58 = board.add(C_0603_1608Metric, { translate: pt(2.028, 4.010), rotate: 0, - id: 'ioe_vdd_cap_cap' + id: 'C58' }) -const enc_package = board.add(RotaryEncoder_Bourns_PEC11S, { +// enc.package +const SW1 = board.add(RotaryEncoder_Bourns_PEC11S, { translate: pt(3.758, 2.158), rotate: 0, - id: 'enc_package' + id: 'SW1' }) -const dir_package = board.add(DirectionSwitch_Alps_SKRH, { +// dir.package +const SW2 = board.add(DirectionSwitch_Alps_SKRH, { translate: pt(2.676, 3.330), rotate: 0, - id: 'dir_package' -}) -const rgb_package = board.add(LED_LiteOn_LTST_C19HE1WT, { - translate: pt(2.033, 4.239), rotate: 0, - id: 'rgb_package' -}) -const rgb_red_res = board.add(R_0603_1608Metric, { - translate: pt(2.172, 4.213), rotate: 0, - id: 'rgb_red_res' -}) -const rgb_green_res = board.add(R_0603_1608Metric, { - translate: pt(2.050, 4.362), rotate: 0, - id: 'rgb_green_res' -}) -const rgb_blue_res = board.add(R_0603_1608Metric, { - translate: pt(2.206, 4.362), rotate: 0, - id: 'rgb_blue_res' -}) -const qwiic_pull_scl_res_res = board.add(R_0603_1608Metric, { - translate: pt(0.528, 4.594), rotate: 0, - id: 'qwiic_pull_scl_res_res' + id: 'SW2' +}) +// rgb.package +const D13 = board.add(LED_LiteOn_LTST_C19HE1WT, { + translate: pt(2.278, 4.239), rotate: 0, + id: 'D13' +}) +// rgb.red_res +const R62 = board.add(R_0603_1608Metric, { + translate: pt(2.417, 4.213), rotate: 0, + id: 'R62' +}) +// rgb.green_res +const R63 = board.add(R_0603_1608Metric, { + translate: pt(2.294, 4.362), rotate: 0, + id: 'R63' +}) +// rgb.blue_res +const R64 = board.add(R_0603_1608Metric, { + translate: pt(2.450, 4.362), rotate: 0, + id: 'R64' +}) +// qwiic_pull.scl_res.res +const R65 = board.add(R_0603_1608Metric, { + translate: pt(6.097, 4.213), rotate: 0, + id: 'R65' }) -const qwiic_pull_sda_res_res = board.add(R_0603_1608Metric, { - translate: pt(0.528, 4.691), rotate: 0, - id: 'qwiic_pull_sda_res_res' +// qwiic_pull.sda_res.res +const R66 = board.add(R_0603_1608Metric, { + translate: pt(6.097, 4.309), rotate: 0, + id: 'R66' }) -const qwiic_conn = board.add(JST_SH_SM04B_SRSS_TB_1x04_1MP_P1_00mm_Horizontal, { +// qwiic.conn +const J4 = board.add(JST_SH_SM04B_SRSS_TB_1x04_1MP_P1_00mm_Horizontal, { translate: pt(1.061, 4.313), rotate: 0, - id: 'qwiic_conn' + id: 'J4' }) -const dutio_conn = board.add(PinHeader_1x03_P2_54mm_Horizontal, { +// dutio.conn +const J5 = board.add(PinHeader_1x03_P2_54mm_Horizontal, { translate: pt(0.071, 3.995), rotate: 0, - id: 'dutio_conn' + id: 'J5' }) -const touch_duck = board.add(Symbol_DucklingSolid, { +// touch_duck +const U25 = board.add(Symbol_DucklingSolid, { translate: pt(5.901, 4.566), rotate: 0, - id: 'touch_duck' + id: 'U25' }) -const fan_drv_pre = board.add(SOT_23, { +// fan_drv.pre +const Q7 = board.add(SOT_23, { translate: pt(4.104, 3.792), rotate: 0, - id: 'fan_drv_pre' + id: 'Q7' }) -const fan_drv_pull = board.add(R_0603_1608Metric, { +// fan_drv.pull +const R67 = board.add(R_0603_1608Metric, { translate: pt(4.278, 3.927), rotate: 0, - id: 'fan_drv_pull' + id: 'R67' }) -const fan_drv_drv = board.add(SOT_23, { +// fan_drv.drv +const Q8 = board.add(SOT_23, { translate: pt(4.104, 3.965), rotate: 0, - id: 'fan_drv_drv' + id: 'Q8' }) -const fan_conn = board.add(JST_PH_B2B_PH_K_1x02_P2_00mm_Vertical, { +// fan.conn +const J6 = board.add(JST_PH_B2B_PH_K_1x02_P2_00mm_Vertical, { translate: pt(1.699, 4.314), rotate: 0, - id: 'fan_conn' + id: 'J6' }) -const dac_ic = board.add(MSOP_10_3x3mm_P0_5mm, { +// dac.ic +const U26 = board.add(MSOP_10_3x3mm_P0_5mm, { translate: pt(0.730, 3.794), rotate: 0, - id: 'dac_ic' + id: 'U26' }) -const dac_vdd_cap_0__cap = board.add(C_0603_1608Metric, { +// dac.vdd_cap[0].cap +const C59 = board.add(C_0603_1608Metric, { translate: pt(0.663, 3.931), rotate: 0, - id: 'dac_vdd_cap_0__cap' + id: 'C59' }) -const dac_vdd_cap_1__cap = board.add(C_0805_2012Metric, { +// dac.vdd_cap[1].cap +const C60 = board.add(C_0805_2012Metric, { translate: pt(0.961, 3.764), rotate: 0, - id: 'dac_vdd_cap_1__cap' + id: 'C60' }) -const dac_out_cap_0_ = board.add(C_0603_1608Metric, { +// dac.out_cap[0] +const C61 = board.add(C_0603_1608Metric, { translate: pt(0.819, 3.931), rotate: 0, - id: 'dac_out_cap_0_' + id: 'C61' }) -const dac_out_cap_1_ = board.add(C_0603_1608Metric, { +// dac.out_cap[1] +const C62 = board.add(C_0603_1608Metric, { translate: pt(0.974, 3.931), rotate: 0, - id: 'dac_out_cap_1_' + id: 'C62' }) -const dac_out_cap_2_ = board.add(C_0603_1608Metric, { +// dac.out_cap[2] +const C63 = board.add(C_0603_1608Metric, { translate: pt(0.663, 4.028), rotate: 0, - id: 'dac_out_cap_2_' + id: 'C63' }) -const dac_ferrite_fb = board.add(L_0603_1608Metric, { - translate: pt(4.986, 4.594), rotate: 0, - id: 'dac_ferrite_fb' +// dac_ferrite.fb +const FB2 = board.add(L_0603_1608Metric, { + translate: pt(5.221, 4.594), rotate: 0, + id: 'FB2' }) -const tp_cv_conn = board.add(U_FL_Hirose_U_FL_R_SMT_1_Vertical, { +// tp_cv.conn +const J7 = board.add(U_FL_Hirose_U_FL_R_SMT_1_Vertical, { translate: pt(4.533, 3.824), rotate: 0, - id: 'tp_cv_conn' + id: 'J7' }) -const tp_cv_res = board.add(R_0603_1608Metric, { +// tp_cv.res +const R68 = board.add(R_0603_1608Metric, { translate: pt(4.512, 3.990), rotate: 0, - id: 'tp_cv_res' -}) -const tp_cisrc_conn = board.add(U_FL_Hirose_U_FL_R_SMT_1_Vertical, { - translate: pt(5.108, 3.824), rotate: 0, - id: 'tp_cisrc_conn' -}) -const tp_cisrc_res = board.add(R_0603_1608Metric, { - translate: pt(5.087, 3.990), rotate: 0, - id: 'tp_cisrc_res' + id: 'R68' }) -const tp_cisnk_conn = board.add(U_FL_Hirose_U_FL_R_SMT_1_Vertical, { +// tp_cisrc.conn +const J8 = board.add(U_FL_Hirose_U_FL_R_SMT_1_Vertical, { translate: pt(4.821, 3.824), rotate: 0, - id: 'tp_cisnk_conn' + id: 'J8' }) -const tp_cisnk_res = board.add(R_0603_1608Metric, { +// tp_cisrc.res +const R69 = board.add(R_0603_1608Metric, { translate: pt(4.800, 3.990), rotate: 0, - id: 'tp_cisnk_res' + id: 'R69' +}) +// tp_cisnk.conn +const J9 = board.add(U_FL_Hirose_U_FL_R_SMT_1_Vertical, { + translate: pt(5.108, 3.824), rotate: 0, + id: 'J9' +}) +// tp_cisnk.res +const R70 = board.add(R_0603_1608Metric, { + translate: pt(5.087, 3.990), rotate: 0, + id: 'R70' }) -const adc_ic = board.add(TSSOP_20_4_4x6_5mm_P0_65mm, { +// adc.ic +const U27 = board.add(TSSOP_20_4_4x6_5mm_P0_65mm, { translate: pt(1.344, 3.253), rotate: 0, - id: 'adc_ic' + id: 'U27' }) -const adc_avdd_res_res = board.add(R_0603_1608Metric, { +// adc.avdd_res.res +const R71 = board.add(R_0603_1608Metric, { translate: pt(1.593, 3.260), rotate: 0, - id: 'adc_avdd_res_res' + id: 'R71' }) -const adc_dvdd_res_res = board.add(R_0603_1608Metric, { +// adc.dvdd_res.res +const R72 = board.add(R_0603_1608Metric, { translate: pt(1.593, 3.357), rotate: 0, - id: 'adc_dvdd_res_res' + id: 'R72' }) -const adc_avdd_cap_0_cap = board.add(C_0603_1608Metric, { +// adc.avdd_cap_0.cap +const C64 = board.add(C_0603_1608Metric, { translate: pt(1.250, 3.459), rotate: 0, - id: 'adc_avdd_cap_0_cap' + id: 'C64' }) -const adc_avdd_cap_1_cap = board.add(C_0603_1608Metric, { +// adc.avdd_cap_1.cap +const C65 = board.add(C_0603_1608Metric, { translate: pt(1.406, 3.459), rotate: 0, - id: 'adc_avdd_cap_1_cap' + id: 'C65' }) -const adc_dvdd_cap_0_cap = board.add(C_0603_1608Metric, { +// adc.dvdd_cap_0.cap +const C66 = board.add(C_0603_1608Metric, { translate: pt(1.562, 3.459), rotate: 0, - id: 'adc_dvdd_cap_0_cap' + id: 'C66' }) -const adc_dvdd_cap_1_cap = board.add(C_0603_1608Metric, { +// adc.dvdd_cap_1.cap +const C67 = board.add(C_0603_1608Metric, { translate: pt(1.250, 3.556), rotate: 0, - id: 'adc_dvdd_cap_1_cap' + id: 'C67' }) -const adc_vref_cap_cap = board.add(C_0805_2012Metric, { +// adc.vref_cap.cap +const C68 = board.add(C_0805_2012Metric, { translate: pt(1.602, 3.154), rotate: 0, - id: 'adc_vref_cap_cap' + id: 'C68' +}) +// tp_vcen.conn +const J10 = board.add(U_FL_Hirose_U_FL_R_SMT_1_Vertical, { + translate: pt(5.396, 3.824), rotate: 0, + id: 'J10' +}) +// tp_vcen.res +const R73 = board.add(R_0603_1608Metric, { + translate: pt(5.374, 3.990), rotate: 0, + id: 'R73' +}) +// vcen_rc.rc.r +const R74 = board.add(R_0603_1608Metric, { + translate: pt(0.058, 4.594), rotate: 0, + id: 'R74' +}) +// vcen_rc.rc.c +const C69 = board.add(C_0603_1608Metric, { + translate: pt(0.058, 4.691), rotate: 0, + id: 'C69' }) -const tp_vcen_conn = board.add(U_FL_Hirose_U_FL_R_SMT_1_Vertical, { +// tp_mi.conn +const J11 = board.add(U_FL_Hirose_U_FL_R_SMT_1_Vertical, { translate: pt(5.683, 3.824), rotate: 0, - id: 'tp_vcen_conn' + id: 'J11' }) -const tp_vcen_res = board.add(R_0603_1608Metric, { +// tp_mi.res +const R75 = board.add(R_0603_1608Metric, { translate: pt(5.662, 3.990), rotate: 0, - id: 'tp_vcen_res' + id: 'R75' }) -const vcen_rc_rc_r = board.add(R_0603_1608Metric, { +// mi_rc.rc.r +const R76 = board.add(R_0603_1608Metric, { translate: pt(0.293, 4.594), rotate: 0, - id: 'vcen_rc_rc_r' + id: 'R76' }) -const vcen_rc_rc_c = board.add(C_0603_1608Metric, { +// mi_rc.rc.c +const C70 = board.add(C_0603_1608Metric, { translate: pt(0.293, 4.691), rotate: 0, - id: 'vcen_rc_rc_c' + id: 'C70' }) -const tp_mi_conn = board.add(U_FL_Hirose_U_FL_R_SMT_1_Vertical, { +// tp_mv.conn +const J12 = board.add(U_FL_Hirose_U_FL_R_SMT_1_Vertical, { translate: pt(5.970, 3.824), rotate: 0, - id: 'tp_mi_conn' + id: 'J12' }) -const tp_mi_res = board.add(R_0603_1608Metric, { +// tp_mv.res +const R77 = board.add(R_0603_1608Metric, { translate: pt(5.949, 3.990), rotate: 0, - id: 'tp_mi_res' + id: 'R77' }) -const mi_rc_rc_r = board.add(R_0603_1608Metric, { - translate: pt(4.455, 4.213), rotate: 0, - id: 'mi_rc_rc_r' -}) -const mi_rc_rc_c = board.add(C_0603_1608Metric, { - translate: pt(4.455, 4.309), rotate: 0, - id: 'mi_rc_rc_c' -}) -const tp_mv_conn = board.add(U_FL_Hirose_U_FL_R_SMT_1_Vertical, { - translate: pt(5.396, 3.824), rotate: 0, - id: 'tp_mv_conn' -}) -const tp_mv_res = board.add(R_0603_1608Metric, { - translate: pt(5.374, 3.990), rotate: 0, - id: 'tp_mv_res' -}) -const mv_rc_rc_r = board.add(R_0603_1608Metric, { - translate: pt(5.863, 4.213), rotate: 0, - id: 'mv_rc_rc_r' +// mv_rc.rc.r +const R78 = board.add(R_0603_1608Metric, { + translate: pt(0.528, 4.594), rotate: 0, + id: 'R78' }) -const mv_rc_rc_c = board.add(C_0603_1608Metric, { - translate: pt(5.863, 4.309), rotate: 0, - id: 'mv_rc_rc_c' +// mv_rc.rc.c +const C71 = board.add(C_0603_1608Metric, { + translate: pt(0.528, 4.691), rotate: 0, + id: 'C71' }) -const outn = board.add(CalTest_CT3151, { +// outn +const J13 = board.add(CalTest_CT3151, { translate: pt(5.152, 2.199), rotate: 0, - id: 'outn' + id: 'J13' }) -const outp = board.add(CalTest_CT3151, { +// outp +const J14 = board.add(CalTest_CT3151, { translate: pt(0.882, 3.500), rotate: 0, - id: 'outp' + id: 'J14' }) -const outd = board.add(PinHeader_1x02_P2_54mm_Horizontal, { +// outd +const J15 = board.add(PinHeader_1x02_P2_54mm_Horizontal, { translate: pt(3.707, 4.355), rotate: 0, - id: 'outd' -}) -const vimeas_amps_ic = board.add(SOIC_8_3_9x4_9mm_P1_27mm, { - translate: pt(1.706, 3.831), rotate: 0, - id: 'vimeas_amps_ic' -}) -const vimeas_amps_vdd_cap_cap = board.add(C_0805_2012Metric, { - translate: pt(1.627, 4.016), rotate: 0, - id: 'vimeas_amps_vdd_cap_cap' + id: 'J15' }) -const ampdmeas_amps_ic = board.add(SOIC_8_3_9x4_9mm_P1_27mm, { +// vimeas_amps.ic +const U28 = board.add(SOIC_8_3_9x4_9mm_P1_27mm, { translate: pt(1.296, 3.831), rotate: 0, - id: 'ampdmeas_amps_ic' + id: 'U28' }) -const ampdmeas_amps_vdd_cap_cap = board.add(C_0805_2012Metric, { +// vimeas_amps.vdd_cap.cap +const C72 = board.add(C_0805_2012Metric, { translate: pt(1.218, 4.016), rotate: 0, - id: 'ampdmeas_amps_vdd_cap_cap' + id: 'C72' }) -const cd_amps_ic = board.add(SOIC_8_3_9x4_9mm_P1_27mm, { - translate: pt(3.765, 3.831), rotate: 0, - id: 'cd_amps_ic' +// ampdmeas_amps.ic +const U29 = board.add(SOIC_8_3_9x4_9mm_P1_27mm, { + translate: pt(1.706, 3.831), rotate: 0, + id: 'U29' }) -const cd_amps_vdd_cap_cap = board.add(C_0603_1608Metric, { - translate: pt(3.678, 4.006), rotate: 0, - id: 'cd_amps_vdd_cap_cap' +// ampdmeas_amps.vdd_cap.cap +const C73 = board.add(C_0805_2012Metric, { + translate: pt(1.627, 4.016), rotate: 0, + id: 'C73' }) -const cv_amps_ic = board.add(SOIC_8_3_9x4_9mm_P1_27mm, { - translate: pt(3.356, 3.831), rotate: 0, - id: 'cv_amps_ic' +// cd_amps.ic +const U30 = board.add(SOIC_8_3_9x4_9mm_P1_27mm, { + translate: pt(2.537, 3.831), rotate: 0, + id: 'U30' }) -const cv_amps_vdd_cap_cap = board.add(C_0603_1608Metric, { - translate: pt(3.268, 4.006), rotate: 0, - id: 'cv_amps_vdd_cap_cap' +// cd_amps.vdd_cap.cap +const C74 = board.add(C_0603_1608Metric, { + translate: pt(2.449, 4.006), rotate: 0, + id: 'C74' }) -const ci_amps_ic = board.add(SOIC_8_3_9x4_9mm_P1_27mm, { +// cv_amps.ic +const U31 = board.add(SOIC_8_3_9x4_9mm_P1_27mm, { translate: pt(2.946, 3.831), rotate: 0, - id: 'ci_amps_ic' + id: 'U31' }) -const ci_amps_vdd_cap_cap = board.add(C_0603_1608Metric, { +// cv_amps.vdd_cap.cap +const C75 = board.add(C_0603_1608Metric, { translate: pt(2.859, 4.006), rotate: 0, - id: 'ci_amps_vdd_cap_cap' + id: 'C75' }) -const cintref_amps_ic = board.add(SOIC_8_3_9x4_9mm_P1_27mm, { - translate: pt(2.537, 3.831), rotate: 0, - id: 'cintref_amps_ic' +// ci_amps.ic +const U32 = board.add(SOIC_8_3_9x4_9mm_P1_27mm, { + translate: pt(3.356, 3.831), rotate: 0, + id: 'U32' }) -const cintref_amps_vdd_cap_cap = board.add(C_0603_1608Metric, { - translate: pt(2.449, 4.006), rotate: 0, - id: 'cintref_amps_vdd_cap_cap' +// ci_amps.vdd_cap.cap +const C76 = board.add(C_0603_1608Metric, { + translate: pt(3.268, 4.006), rotate: 0, + id: 'C76' +}) +// cintref_amps.ic +const U33 = board.add(SOIC_8_3_9x4_9mm_P1_27mm, { + translate: pt(3.765, 3.831), rotate: 0, + id: 'U33' +}) +// cintref_amps.vdd_cap.cap +const C77 = board.add(C_0603_1608Metric, { + translate: pt(3.678, 4.006), rotate: 0, + id: 'C77' }) +board.setNetlist([ + {name: "gnd", pads: [["U18", "3"], ["J7", "2"], ["J8", "2"], ["J9", "2"], ["J10", "2"], ["J11", "2"], ["J12", "2"], ["J1", "A1"], ["J1", "B12"], ["J1", "B1"], ["J1", "A12"], ["C30", "2"], ["J13", "1"], ["J15", "1"], ["TP1", "1"], ["C1", "2"], ["D1", "2"], ["U1", "1"], ["U2", "1"], ["D2", "2"], ["D5", "2"], ["U5", "2"], ["U6", "2"], ["U7", "3"], ["U8", "2"], ["U9", "1"], ["U16", "8"], ["U16", "9"], ["U16", "15"], ["U17", "1"], ["U17", "40"], ["U17", "41"], ["U20", "2"], ["U21", "4"], ["U22", "2"], ["U22", "4"], ["U23", "2"], ["U24", "1"], ["U24", "2"], ["U24", "3"], ["U24", "8"], ["SW1", "C"], ["SW1", "S2"], ["SW2", "5"], ["J4", "1"], ["J5", "1"], ["Q7", "2"], ["J6", "1"], ["U26", "10"], ["U27", "2"], ["U27", "3"], ["U27", "19"], ["R11", "2"], ["C52", "2"], ["C53", "2"], ["R55", "2"], ["R57", "2"], ["R61", "2"], ["C69", "2"], ["C70", "2"], ["C71", "2"], ["J1", "S1"], ["R51", "2"], ["C61", "2"], ["C62", "2"], ["C63", "2"], ["C2", "2"], ["C6", "2"], ["C7", "2"], ["C27", "2"], ["C28", "2"], ["C29", "2"], ["U15", "2"], ["Q6", "2"], ["C42", "2"], ["C43", "2"], ["C44", "2"], ["C45", "2"], ["J2", "5"], ["J3", "3"], ["J3", "1"], ["J3", "24"], ["J3", "2"], ["J3", "12"], ["J3", "11"], ["J3", "16"], ["J3", "17"], ["J3", "18"], ["J3", "19"], ["J3", "20"], ["C47", "2"], ["C48", "2"], ["C49", "2"], ["C50", "2"], ["C51", "2"], ["C54", "2"], ["C55", "2"], ["C56", "2"], ["C57", "2"], ["C58", "2"], ["C59", "2"], ["C60", "2"], ["C64", "2"], ["C65", "2"], ["C66", "2"], ["C67", "2"], ["C68", "2"], ["R2", "2"], ["R9", "2"], ["R13", "2"], ["U30", "4"], ["U31", "4"], ["U33", "4"], ["U32", "4"], ["U10", "2"], ["C46", "2"], ["Q1", "3"], ["Q3", "3"], ["R42", "1"], ["J3", "7"], ["J3", "10"], ["J3", "8"], ["C4", "2"], ["C5", "2"], ["U3", "6"], ["U4", "6"], ["C24", "2"], ["C25", "2"], ["C31", "2"], ["C32", "2"], ["C35", "2"], ["C36", "2"], ["C41", "2"], ["C74", "2"], ["C75", "2"], ["C77", "2"], ["C76", "2"], ["C37", "2"], ["C8", "2"], ["C9", "2"], ["C10", "2"], ["C11", "2"], ["C12", "2"], ["C13", "2"], ["C14", "2"], ["C15", "2"], ["C16", "2"], ["C17", "2"], ["C18", "2"], ["C19", "2"], ["C20", "2"], ["C22", "2"], ["R36", "2"], ["R39", "2"], ["U12", "2"], ["U12", "4"], ["U14", "2"], ["U14", "4"], ["C39", "2"], ["C40", "2"]]}, + {name: "vusb", pads: [["U16", "2"], ["FB1", "2"], ["C1", "1"], ["D1", "1"], ["TP2", "1"], ["U1", "3"], ["R3", "1"], ["C2", "1"], ["C4", "1"], ["Q2", "2"], ["C8", "1"], ["C9", "1"], ["C10", "1"]]}, + {name: "v5", pads: [["TP3", "1"], ["U2", "3"], ["U5", "5"], ["U6", "1"], ["U7", "1"], ["U8", "5"], ["R67", "1"], ["Q8", "2"], ["R1", "1"], ["U5", "4"], ["U6", "3"], ["U8", "4"], ["C6", "1"], ["C27", "1"], ["C29", "1"], ["U3", "4"], ["U4", "4"], ["L3", "1"], ["L4", "1"], ["D3", "2"], ["D4", "2"], ["C24", "1"], ["C31", "1"], ["C20", "1"], ["C22", "1"], ["L1", "2"], ["C5", "1"]]}, + {name: "v3v3", pads: [["U9", "4"], ["U9", "5"], ["U2", "2"], ["D2", "1"], ["TP4", "1"], ["U16", "3"], ["U16", "4"], ["U17", "2"], ["D12", "2"], ["U20", "5"], ["U21", "8"], ["R58", "1"], ["R59", "1"], ["U22", "5"], ["U23", "4"], ["U23", "5"], ["U24", "16"], ["D13", "2"], ["J4", "2"], ["R54", "1"], ["R72", "1"], ["C7", "1"], ["C42", "1"], ["C43", "1"], ["C44", "1"], ["C45", "1"], ["J2", "1"], ["R49", "1"], ["R50", "1"], ["J3", "5"], ["C48", "1"], ["C49", "1"], ["C54", "1"], ["C55", "1"], ["C56", "1"], ["C57", "1"], ["C58", "1"], ["R65", "1"], ["R66", "1"], ["R47", "1"], ["J3", "6"]]}, + {name: "vconv", pads: [["D5", "1"], ["TP5", "1"], ["Q5", "2"], ["R56", "1"], ["R60", "1"], ["Q4", "2"], ["C11", "1"], ["C12", "1"], ["C13", "1"], ["C14", "1"], ["C15", "1"], ["C16", "1"], ["C17", "1"], ["C18", "1"], ["C19", "1"]]}, + {name: "v12", pads: [["TP6", "1"], ["D6", "1"], ["C26", "1"], ["R8", "1"], ["C25", "1"], ["J3", "23"], ["C50", "1"], ["C51", "1"]]}, + {name: "vanalog", pads: [["U6", "5"], ["TP7", "1"], ["R71", "1"], ["C28", "1"], ["U15", "6"], ["U30", "8"], ["U10", "5"], ["U33", "8"], ["U32", "8"], ["U31", "8"], ["C41", "1"], ["C74", "1"], ["C37", "1"], ["C77", "1"], ["C76", "1"], ["C75", "1"]]}, + {name: "vref", pads: [["U7", "2"], ["TP8", "1"], ["FB2", "1"], ["U27", "4"], ["R10", "1"], ["C68", "1"]]}, + {name: "vcenter", pads: [["U33", "6"], ["R73", "1"], ["R74", "1"], ["U33", "3"], ["U33", "7"], ["R17", "1"], ["R45", "1"], ["R33", "2"], ["R19", "1"], ["U15", "7"], ["U15", "3"]]}, + {name: "vcontrol", pads: [["TP9", "1"], ["D7", "1"], ["C33", "1"], ["R12", "1"], ["C32", "1"], ["U29", "8"], ["U28", "8"], ["C73", "1"], ["C72", "1"], ["U12", "5"], ["U14", "5"], ["C39", "1"], ["C40", "1"]]}, + {name: "vcontroln", pads: [["U9", "2"], ["TP10", "1"], ["U29", "4"], ["U28", "4"], ["C73", "2"], ["C72", "2"], ["C35", "1"], ["C36", "1"]]}, + {name: "usb.pwr", pads: [["J1", "A4"], ["J1", "B9"], ["J1", "B4"], ["J1", "A9"], ["FB1", "1"]]}, + {name: "ref_div.output", pads: [["U33", "5"], ["C30", "1"], ["R10", "2"], ["R11", "1"]]}, + {name: "usb.cc.cc1", pads: [["J1", "A5"], ["U16", "10"], ["U16", "11"]]}, + {name: "usb.cc.cc2", pads: [["J1", "B5"], ["U16", "1"], ["U16", "14"]]}, + {name: "mcu.program_boot_node", pads: [["R48", "2"], ["U17", "27"], ["J2", "2"]]}, + {name: "usb_chain_0.d_P", pads: [["J1", "A6"], ["J1", "B6"], ["U18", "2"], ["U17", "14"]]}, + {name: "usb_chain_0.d_N", pads: [["J1", "A7"], ["J1", "B7"], ["U18", "1"], ["U17", "13"]]}, + {name: "i2c_pull.i2c.scl", pads: [["U17", "39"], ["U16", "6"], ["U22", "1"], ["U23", "1"], ["U24", "14"], ["U26", "2"], ["R49", "2"], ["TP11", "1"], ["J3", "13"]]}, + {name: "i2c_pull.i2c.sda", pads: [["U17", "38"], ["U16", "7"], ["U22", "6"], ["U23", "6"], ["U24", "15"], ["U26", "3"], ["R50", "2"], ["TP12", "1"], ["J3", "14"], ["J3", "15"]]}, + {name: "pd.int", pads: [["U17", "21"], ["U16", "5"]]}, + {name: "oled.reset", pads: [["U17", "20"], ["J3", "9"]]}, + {name: "mcu.gpio.irange_0", pads: [["U17", "12"], ["U12", "3"], ["U11", "1"]]}, + {name: "mcu.gpio.irange_1", pads: [["U17", "11"], ["U14", "3"], ["U13", "1"]]}, + {name: "mcu.gpio.off_0", pads: [["U17", "31"], ["U10", "6"]]}, + {name: "buck_rc.input", pads: [["U17", "35"], ["R52", "1"]]}, + {name: "buck_rc.output", pads: [["U3", "2"], ["R52", "2"], ["C52", "1"]]}, + {name: "boost_rc.input", pads: [["U17", "32"], ["R53", "1"]]}, + {name: "boost_rc.output", pads: [["U4", "2"], ["R53", "2"], ["C53", "1"]]}, + {name: "comp_ref.output", pads: [["U20", "1"], ["R54", "2"], ["R55", "1"]]}, + {name: "comp_sense.output", pads: [["U20", "3"], ["R56", "2"], ["R57", "1"]]}, + {name: "conv_en_pull.io", pads: [["U17", "33"], ["U21", "6"], ["R58", "2"]]}, + {name: "conv_comp.out", pads: [["U20", "4"], ["U21", "7"], ["R59", "2"]]}, + {name: "conv_latch.nq", pads: [["U21", "3"], ["U17", "23"], ["U3", "3"], ["U4", "3"]]}, + {name: "conv_sense.output", pads: [["U17", "18"], ["R60", "2"], ["R61", "1"]]}, + {name: "enc.a", pads: [["U17", "5"], ["SW1", "A"]]}, + {name: "enc.b", pads: [["U17", "6"], ["SW1", "B"]]}, + {name: "enc.sw", pads: [["U17", "4"], ["SW1", "S1"]]}, + {name: "dir.a", pads: [["U24", "5"], ["SW2", "1"]]}, + {name: "dir.b", pads: [["U24", "6"], ["SW2", "4"]]}, + {name: "dir.c", pads: [["U24", "9"], ["SW2", "3"]]}, + {name: "dir.d", pads: [["U24", "7"], ["SW2", "6"]]}, + {name: "dir.center", pads: [["U24", "4"], ["SW2", "2"]]}, + {name: "ioe.io.rgb_red", pads: [["U24", "11"], ["R62", "2"]]}, + {name: "ioe.io.rgb_green", pads: [["U24", "12"], ["R63", "2"]]}, + {name: "ioe.io.rgb_blue", pads: [["U24", "10"], ["R64", "2"]]}, + {name: "qwiic_pull.i2c.scl", pads: [["U17", "24"], ["R65", "2"], ["J4", "4"]]}, + {name: "qwiic_pull.i2c.sda", pads: [["U17", "25"], ["J4", "3"], ["R66", "2"]]}, + {name: "dutio.io0", pads: [["U17", "15"], ["J5", "2"]]}, + {name: "dutio.io1", pads: [["U17", "17"], ["J5", "3"]]}, + {name: "touch_duck.pad", pads: [["U17", "22"], ["U25", "1"]]}, + {name: "fan_drv.control", pads: [["U17", "19"], ["Q7", "1"]]}, + {name: "fan.pwr", pads: [["J6", "2"], ["Q8", "3"]]}, + {name: "dac_ferrite.pwr_out", pads: [["FB2", "2"], ["U26", "1"], ["U26", "4"], ["C59", "1"], ["C60", "1"]]}, + {name: "dac.out0", pads: [["U26", "6"], ["R68", "1"], ["R22", "1"], ["C61", "1"]]}, + {name: "dac.out1", pads: [["U26", "7"], ["R69", "1"], ["R28", "1"], ["C62", "1"]]}, + {name: "dac.out2", pads: [["U26", "8"], ["R70", "1"], ["R25", "1"], ["C63", "1"]]}, + {name: "adc.spi.sck", pads: [["U27", "14"], ["U17", "8"]]}, + {name: "adc.spi.mosi", pads: [["U27", "15"], ["U17", "9"]]}, + {name: "adc.spi.miso", pads: [["U27", "16"], ["U17", "10"]]}, + {name: "adc.cs", pads: [["U27", "13"], ["U17", "7"]]}, + {name: "vcen_rc.output", pads: [["U27", "5"], ["R74", "2"], ["C69", "1"]]}, + {name: "control.meas_i", pads: [["U15", "5"], ["R75", "1"], ["R76", "1"], ["R26", "1"], ["R29", "1"]]}, + {name: "mi_rc.output", pads: [["U27", "6"], ["R76", "2"], ["C70", "1"]]}, + {name: "control.measured_voltage", pads: [["U31", "3"], ["R77", "1"], ["R78", "1"], ["R46", "2"]]}, + {name: "mv_rc.output", pads: [["U27", "7"], ["R78", "2"], ["C71", "1"]]}, + {name: "outp.port", pads: [["J14", "1"], ["J15", "2"], ["R34", "1"], ["R37", "2"], ["R40", "2"], ["U15", "1"]]}, + {name: "vimeas_amps.inp.0", pads: [["U28", "3"], ["R43", "2"], ["R45", "2"]]}, + {name: "vimeas_amps.inn.0", pads: [["U28", "2"], ["R42", "2"], ["R44", "2"]]}, + {name: "vimeas_amps.out.0", pads: [["U28", "1"], ["R44", "1"], ["R46", "1"]]}, + {name: "vimeas_amps.inp.1", pads: [["U28", "5"], ["R34", "2"]]}, + {name: "control.outa", pads: [["U28", "6"], ["U28", "7"], ["R14", "1"], ["R43", "1"]]}, + {name: "ampdmeas_amps.inp.0", pads: [["U29", "3"], ["U33", "1"], ["C38", "1"]]}, + {name: "ampdmeas_amps.inn.0", pads: [["U29", "2"], ["R32", "2"], ["R33", "1"]]}, + {name: "control.drive", pads: [["U29", "1"], ["R32", "1"], ["R15", "1"], ["R35", "2"]]}, + {name: "ampdmeas_amps.inp.1", pads: [["U29", "5"], ["R15", "2"], ["R17", "2"]]}, + {name: "ampdmeas_amps.inn.1", pads: [["U29", "6"], ["R14", "2"], ["R16", "2"]]}, + {name: "ampdmeas_amps.out.1", pads: [["U29", "7"], ["R16", "1"], ["R18", "1"]]}, + {name: "cd_amps.inp.0", pads: [["U30", "3"], ["R18", "2"]]}, + {name: "cd_amps.inn.0", pads: [["U30", "2"], ["U30", "1"], ["R20", "1"]]}, + {name: "cd_amps.inp.1", pads: [["U30", "5"], ["R19", "2"], ["R20", "2"]]}, + {name: "cd_amps.inn.1", pads: [["U30", "6"], ["R21", "2"], ["U10", "1"]]}, + {name: "cd_amps.out.1", pads: [["U30", "7"], ["R21", "1"]]}, + {name: "control.meas_v", pads: [["U31", "2"], ["U31", "1"], ["R23", "1"]]}, + {name: "cv_amps.inp.1", pads: [["U31", "5"], ["R22", "2"], ["R23", "2"]]}, + {name: "cv_amps.inn.1", pads: [["U31", "6"], ["R24", "2"], ["U10", "3"], ["U32", "6"], ["U32", "2"], ["R27", "2"], ["R30", "2"]]}, + {name: "cv_amps.out.1", pads: [["U31", "7"], ["R24", "1"]]}, + {name: "ci_amps.inp.0", pads: [["U32", "3"], ["R28", "2"], ["R29", "2"]]}, + {name: "ci_amps.out.0", pads: [["U32", "1"], ["D9", "1"]]}, + {name: "ci_amps.inp.1", pads: [["U32", "5"], ["R25", "2"], ["R26", "2"]]}, + {name: "ci_amps.out.1", pads: [["U32", "7"], ["D8", "2"]]}, + {name: "cintref_amps.inn.0", pads: [["U33", "2"], ["R31", "2"], ["C38", "2"]]}, + {name: "reg_v5.fb.output", pads: [["U1", "4"], ["R1", "2"], ["R2", "1"]]}, + {name: "reg_v5.boot_cap.neg", pads: [["C3", "2"], ["U1", "2"], ["L1", "1"]]}, + {name: "reg_v5.boot_cap.pos", pads: [["C3", "1"], ["U1", "6"]]}, + {name: "reg_v5.en_res.b", pads: [["R3", "2"], ["U1", "5"]]}, + {name: "conv.sw_in_force", pads: [["Q1", "2"], ["Q2", "3"], ["L2", "1"], ["U3", "7"], ["C21", "2"]]}, + {name: "conv.sw_out_force", pads: [["L2", "2"], ["Q3", "2"], ["Q4", "3"], ["U4", "7"], ["C23", "2"]]}, + {name: "conv.buck_sw.low_gate_res.a", pads: [["R4", "1"], ["U3", "5"]]}, + {name: "conv.buck_sw.low_gate_res.b", pads: [["R4", "2"], ["Q1", "1"]]}, + {name: "conv.buck_sw.high_gate_res.a", pads: [["R5", "1"], ["U3", "8"]]}, + {name: "conv.buck_sw.high_gate_res.b", pads: [["R5", "2"], ["Q2", "1"]]}, + {name: "conv.buck_sw.driver.ic.bst", pads: [["U3", "1"], ["D3", "1"], ["C21", "1"]]}, + {name: "conv.boost_sw.low_gate_res.a", pads: [["R6", "1"], ["U4", "5"]]}, + {name: "conv.boost_sw.low_gate_res.b", pads: [["R6", "2"], ["Q3", "1"]]}, + {name: "conv.boost_sw.high_gate_res.a", pads: [["R7", "1"], ["U4", "8"]]}, + {name: "conv.boost_sw.high_gate_res.b", pads: [["R7", "2"], ["Q4", "1"]]}, + {name: "conv.boost_sw.driver.ic.bst", pads: [["U4", "1"], ["D4", "1"], ["C23", "1"]]}, + {name: "reg_v12.fb.output", pads: [["U5", "3"], ["C26", "2"], ["R8", "2"], ["R9", "1"]]}, + {name: "reg_v12.power_path.switch", pads: [["U5", "1"], ["L3", "2"], ["D6", "2"]]}, + {name: "reg_vcontrol.fb.output", pads: [["U8", "3"], ["C33", "2"], ["R12", "2"], ["R13", "1"]]}, + {name: "reg_vcontrol.power_path.switch", pads: [["U8", "1"], ["L4", "2"], ["D7", "2"]]}, + {name: "reg_vcontroln.cf.neg", pads: [["C34", "2"], ["U9", "3"]]}, + {name: "reg_vcontroln.cf.pos", pads: [["C34", "1"], ["U9", "6"]]}, + {name: "control.int_link", pads: [["U10", "4"], ["R31", "1"]]}, + {name: "control.driver.out", pads: [["D11", "2"], ["Q6", "3"], ["Q5", "3"], ["U11", "4"], ["U13", "4"]]}, + {name: "control.isense.sense_in", pads: [["U15", "8"], ["U12", "6"], ["U14", "6"]]}, + {name: "control.err_source.diode.cathode", pads: [["D8", "1"], ["R27", "1"]]}, + {name: "control.err_sink.diode.anode", pads: [["D9", "2"], ["R30", "1"]]}, + {name: "control.driver.res.a", pads: [["R35", "1"], ["D10", "2"], ["Q5", "1"], ["Q6", "1"]]}, + {name: "control.driver.clamp1.cathode", pads: [["D10", "1"], ["D11", "1"]]}, + {name: "control.isense.ranges[0].pwr_sw.pwr_out", pads: [["U11", "6"], ["R37", "1"], ["R38", "1"]]}, + {name: "control.isense.ranges[0].clamp.signal_out", pads: [["R38", "2"], ["U12", "1"]]}, + {name: "control.isense.ranges[0].pwr_sw.res.a", pads: [["R36", "1"], ["U11", "2"]]}, + {name: "control.isense.ranges[1].pwr_sw.pwr_out", pads: [["U13", "6"], ["R40", "1"], ["R41", "1"]]}, + {name: "control.isense.ranges[1].clamp.signal_out", pads: [["R41", "2"], ["U14", "1"]]}, + {name: "control.isense.ranges[1].pwr_sw.res.a", pads: [["R39", "1"], ["U13", "2"]]}, + {name: "pd.ic.vconn", pads: [["U16", "12"], ["U16", "13"]]}, + {name: "mcu.program_uart_node.a_tx", pads: [["U17", "37"], ["J2", "3"]]}, + {name: "mcu.program_uart_node.b_tx", pads: [["U17", "36"], ["J2", "4"]]}, + {name: "mcu.program_en_node", pads: [["U17", "3"], ["J2", "6"], ["R47", "2"], ["C46", "1"]]}, + {name: "led.res.a", pads: [["R48", "1"], ["D12", "1"]]}, + {name: "oled.iref_res.a", pads: [["R51", "1"], ["J3", "21"]]}, + {name: "oled.device.vcomh", pads: [["J3", "22"], ["C47", "1"]]}, + {name: "conv_latch.clk", pads: [["U21", "1"]]}, + {name: "conv_latch.d", pads: [["U21", "2"]]}, + {name: "conv_latch.q", pads: [["U21", "5"]]}, + {name: "pass_temp.alert", pads: [["U22", "3"]]}, + {name: "conv_temp.alert", pads: [["U23", "3"]]}, + {name: "rgb.red_res.a", pads: [["R62", "1"], ["D13", "3"]]}, + {name: "rgb.green_res.a", pads: [["R63", "1"], ["D13", "4"]]}, + {name: "rgb.blue_res.a", pads: [["R64", "1"], ["D13", "1"]]}, + {name: "fan_drv.pre.drain", pads: [["Q7", "3"], ["R67", "2"], ["Q8", "1"]]}, + {name: "dac.out3", pads: [["U26", "9"]]}, + {name: "dac.rdy", pads: [["U26", "5"]]}, + {name: "tp_cv.res.b", pads: [["R68", "2"], ["J7", "1"]]}, + {name: "tp_cisrc.res.b", pads: [["R69", "2"], ["J8", "1"]]}, + {name: "tp_cisnk.res.b", pads: [["R70", "2"], ["J9", "1"]]}, + {name: "adc.vins.3", pads: [["U27", "8"]]}, + {name: "adc.vins.4", pads: [["U27", "9"]]}, + {name: "adc.vins.5", pads: [["U27", "10"]]}, + {name: "adc.vins.6", pads: [["U27", "11"]]}, + {name: "adc.vins.7", pads: [["U27", "12"]]}, + {name: "adc.ic.avdd", pads: [["U27", "1"], ["R71", "2"], ["C64", "1"], ["C65", "1"]]}, + {name: "adc.ic.dvdd", pads: [["U27", "20"], ["R72", "2"], ["C66", "1"], ["C67", "1"]]}, + {name: "tp_vcen.res.b", pads: [["R73", "2"], ["J10", "1"]]}, + {name: "tp_mi.res.b", pads: [["R75", "2"], ["J11", "1"]]}, + {name: "tp_mv.res.b", pads: [["R77", "2"], ["J12", "1"]]} +]) + const limit0 = pt(-0.07874015748031496, -0.07874015748031496); const limit1 = pt(6.273818897637796, 4.838188976377953); const xMin = Math.min(limit0[0], limit1[0]); diff --git a/examples/UsbUart/UsbUart.svgpcb.js b/examples/UsbUart/UsbUart.svgpcb.js index 2a135a43b..4cb124b68 100644 --- a/examples/UsbUart/UsbUart.svgpcb.js +++ b/examples/UsbUart/UsbUart.svgpcb.js @@ -1,78 +1,118 @@ const board = new PCB(); -const jlc_th_th1 = board.add(JlcToolingHole_1_152mm, { +// jlc_th.th1 +const UH1 = board.add(JlcToolingHole_1_152mm, { translate: pt(0.518, 0.839), rotate: 0, - id: 'jlc_th_th1' + id: 'UH1' }) -const jlc_th_th2 = board.add(JlcToolingHole_1_152mm, { +// jlc_th.th2 +const UH2 = board.add(JlcToolingHole_1_152mm, { translate: pt(0.557, 0.839), rotate: 0, - id: 'jlc_th_th2' + id: 'UH2' }) -const jlc_th_th3 = board.add(JlcToolingHole_1_152mm, { +// jlc_th.th3 +const UH3 = board.add(JlcToolingHole_1_152mm, { translate: pt(0.518, 0.879), rotate: 0, - id: 'jlc_th_th3' + id: 'UH3' }) -const usb_uart_conn = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { +// usb_uart.conn +const UJ1 = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { translate: pt(0.209, 0.165), rotate: 0, - id: 'usb_uart_conn' + id: 'UJ1' }) -const usb_uart_cc_pull_cc1_res = board.add(R_0603_1608Metric, { +// usb_uart.cc_pull.cc1.res +const UR1 = board.add(R_0603_1608Metric, { translate: pt(0.058, 0.420), rotate: 0, - id: 'usb_uart_cc_pull_cc1_res' + id: 'UR1' }) -const usb_uart_cc_pull_cc2_res = board.add(R_0603_1608Metric, { +// usb_uart.cc_pull.cc2.res +const UR2 = board.add(R_0603_1608Metric, { translate: pt(0.214, 0.420), rotate: 0, - id: 'usb_uart_cc_pull_cc2_res' + id: 'UR2' }) -const vusb_protect_diode = board.add(D_SOD_323, { +// vusb_protect.diode +const UD1 = board.add(D_SOD_323, { translate: pt(0.816, 0.604), rotate: 0, - id: 'vusb_protect_diode' + id: 'UD1' }) -const usbconv_ic = board.add(QFN_28_1EP_5x5mm_P0_5mm_EP3_35x3_35mm, { +// usbconv.ic +const UU1 = board.add(QFN_28_1EP_5x5mm_P0_5mm_EP3_35x3_35mm, { translate: pt(0.122, 0.689), rotate: 0, - id: 'usbconv_ic' + id: 'UU1' }) -const usbconv_regin_cap0_cap = board.add(C_0603_1608Metric, { +// usbconv.regin_cap0.cap +const UC1 = board.add(C_0603_1608Metric, { translate: pt(0.342, 0.595), rotate: 0, - id: 'usbconv_regin_cap0_cap' + id: 'UC1' }) -const usbconv_regin_cap1_cap = board.add(C_0603_1608Metric, { +// usbconv.regin_cap1.cap +const UC2 = board.add(C_0603_1608Metric, { translate: pt(0.342, 0.692), rotate: 0, - id: 'usbconv_regin_cap1_cap' + id: 'UC2' }) -const usbconv_vdd_cap_cap = board.add(C_0603_1608Metric, { +// usbconv.vdd_cap.cap +const UC3 = board.add(C_0603_1608Metric, { translate: pt(0.058, 0.879), rotate: 0, - id: 'usbconv_vdd_cap_cap' + id: 'UC3' }) -const usb_esd = board.add(SOT_23, { +// usb_esd +const UU2 = board.add(SOT_23, { translate: pt(1.073, 0.633), rotate: 0, - id: 'usb_esd' + id: 'UU2' }) -const led_package = board.add(LED_0603_1608Metric, { +// led.package +const UD2 = board.add(LED_0603_1608Metric, { translate: pt(0.577, 0.595), rotate: 0, - id: 'led_package' + id: 'UD2' }) -const led_res = board.add(R_0603_1608Metric, { +// led.res +const UR3 = board.add(R_0603_1608Metric, { translate: pt(0.576, 0.693), rotate: 0, - id: 'led_res' + id: 'UR3' }) -const reg_3v3_ic = board.add(SOT_23_5, { +// reg_3v3.ic +const UU3 = board.add(SOT_23_5, { translate: pt(0.878, 0.067), rotate: 0, - id: 'reg_3v3_ic' + id: 'UU3' }) -const reg_3v3_in_cap_cap = board.add(C_0603_1608Metric, { +// reg_3v3.in_cap.cap +const UC4 = board.add(C_0603_1608Metric, { translate: pt(0.855, 0.332), rotate: 0, - id: 'reg_3v3_in_cap_cap' + id: 'UC4' }) -const reg_3v3_out_cap_cap = board.add(C_1206_3216Metric, { +// reg_3v3.out_cap.cap +const UC5 = board.add(C_1206_3216Metric, { translate: pt(0.887, 0.219), rotate: 0, - id: 'reg_3v3_out_cap_cap' + id: 'UC5' }) -const out_conn = board.add(PinHeader_1x04_P2_54mm_Vertical, { +// out.conn +const UJ2 = board.add(PinHeader_1x04_P2_54mm_Vertical, { translate: pt(0.608, 0.370), rotate: 0, - id: 'out_conn' + id: 'UJ2' }) +board.setNetlist([ + {name: "Uvusb", pads: [["UJ1", "A4"], ["UJ1", "B9"], ["UJ1", "B4"], ["UJ1", "A9"], ["UD1", "1"], ["UU1", "7"], ["UU1", "8"], ["UU3", "1"], ["UU3", "3"], ["UC1", "1"], ["UC2", "1"], ["UC4", "1"]]}, + {name: "Ugnd", pads: [["UU2", "3"], ["UJ1", "A1"], ["UJ1", "B12"], ["UJ1", "B1"], ["UJ1", "A12"], ["UD1", "2"], ["UU1", "3"], ["UU1", "29"], ["UR3", "2"], ["UU3", "2"], ["UJ2", "3"], ["UJ1", "S1"], ["UC1", "2"], ["UC2", "2"], ["UC3", "2"], ["UC4", "2"], ["UC5", "2"], ["UR1", "1"], ["UR2", "1"]]}, + {name: "Uv3v3", pads: [["UU3", "5"], ["UJ2", "4"], ["UC5", "1"]]}, + {name: "Uusb_chain_0.d_P", pads: [["UJ1", "A6"], ["UJ1", "B6"], ["UU2", "2"], ["UU1", "4"]]}, + {name: "Uusb_chain_0.d_N", pads: [["UJ1", "A7"], ["UJ1", "B7"], ["UU2", "1"], ["UU1", "5"]]}, + {name: "Uusbconv.nsuspend", pads: [["UU1", "11"], ["UD2", "2"]]}, + {name: "Uusbconv.uart.tx", pads: [["UU1", "26"], ["UJ2", "1"]]}, + {name: "Uusbconv.uart.rx", pads: [["UU1", "25"], ["UJ2", "2"]]}, + {name: "Uusb_uart.conn.cc.cc1", pads: [["UJ1", "A5"], ["UR1", "2"]]}, + {name: "Uusb_uart.conn.cc.cc2", pads: [["UJ1", "B5"], ["UR2", "2"]]}, + {name: "Uusbconv.suspend", pads: [["UU1", "12"]]}, + {name: "Uusbconv.ri", pads: [["UU1", "2"]]}, + {name: "Uusbconv.dcd", pads: [["UU1", "1"]]}, + {name: "Uusbconv.dtr", pads: [["UU1", "28"]]}, + {name: "Uusbconv.dsr", pads: [["UU1", "27"]]}, + {name: "Uusbconv.rts", pads: [["UU1", "24"]]}, + {name: "Uusbconv.cts", pads: [["UU1", "23"]]}, + {name: "Uusbconv.ic.vdd", pads: [["UU1", "6"], ["UU1", "9"], ["UC3", "1"]]}, + {name: "Uled.res.a", pads: [["UR3", "1"], ["UD2", "1"]]} +]) + const limit0 = pt(-0.07874015748031496, -0.07874015748031496); const limit1 = pt(1.187992125984252, 1.0255905511811025); const xMin = Math.min(limit0[0], limit1[0]);