From 9e0418aa29308ab78a6b1081d9e583bfdbae4c62 Mon Sep 17 00:00:00 2001 From: Richard Lin Date: Tue, 7 Jul 2026 00:50:34 -0700 Subject: [PATCH 1/2] Update reference.md --- reference.md | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/reference.md b/reference.md index 7a5dccdf4..6ecf67c4b 100644 --- a/reference.md +++ b/reference.md @@ -163,11 +163,19 @@ def refinements(self) -> Refinements: - Some blocks, particularly discrete components like `Resistor`s and `Fet`s, are implemented as automatic selection from a parts table. - These are some common top-level refinements: - - Class refinement `(SelectorArea, ["footprint_area"], Range.from_lower(1.5))`: require a minimum footprint courtyard area, in mm² - - Common minimum areas for passives, in mm²: 01005=0.72, 0201=0.98, 0402=1.74, 0603=4.32, 0805=6.38, 1206=10.21. + - Class refinement `(SelectorArea, ["filter_area"], Range.from_lower(1.5))`: require a minimum footprint courtyard area, in mm² + + | Package | Minimum Area (mm²) | + |---------|------------------| + | 01005 | 0.72 | + | 0201 | 0.98 | + | 0402 | 1.74 | + | 0603 | 4.32 | + | 0805 | 6.38 | + | 1206 | 10.21 | - Instance refinement `(["part_table_block", "excluded_parts"], ["1N2127"])`: exclude parts from selection, e.g., if they're out-of-stock. - Instance refinement `(["part_table_block", "part"], "1N2127")`: require a particular part. - - Instance refinement `(["part_table_block", "footprint_spec"], "Diode_SMD:D_SMA")`: require a particular footprint. + - Instance refinement `(["part_table_block", "filter_footprints"], ["Diode_SMD:D_SMA"])`: require specific footprints. ### IoController From 80b5a8aed612b3340580805757dc5c5fc0b4d5ac Mon Sep 17 00:00:00 2001 From: Richard Lin Date: Tue, 7 Jul 2026 00:54:13 -0700 Subject: [PATCH 2/2] Update reference.md --- reference.md | 1 + 1 file changed, 1 insertion(+) diff --git a/reference.md b/reference.md index 6ecf67c4b..c2e0ab9b7 100644 --- a/reference.md +++ b/reference.md @@ -266,6 +266,7 @@ class MyBoard(SimpleBoardTop): ``` - `multipack()` is a blend of `contents()` (in that `PackedBlocks` are declared within) and `refinements()` (in that it uses `List[str]` to reference blocks in the design hierarchy). +- All multipack Blocks, Blocks that allow other components to be packed into it, extend `MultipackBlock`. - `self.PackedBlock(...)` is similar to `self.Block(...)`. - `self.pack(...)` takes two arguments: - `multipack_part`: the multipack element that is part of the packed block, either a block or an element of a dynamically-sized packed block array.