Skip to content

Commit 75778e8

Browse files
committed
Trim laser prefab guidance
1 parent a8317ae commit 75778e8

File tree

3 files changed

+8
-80
lines changed

3 files changed

+8
-80
lines changed

docs/elements/board.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ Usually you'll want to use an autorouter preset:
8787
- `autorouter="sequential-trace"` - Iterate over each trace and use tscircuit's fast built-in autorouter. This method is fast and deterministic but often fails with over 50 traces.
8888
- `autorouter="auto-local"` - Use the platform configuration, but only route locally (do not make API calls)
8989
- `autorouter="auto-cloud"` - Use the platform configuration for
90-
- `autorouter="laser_prefab"` - Reserve [prefabricated vias](./via.mdx#prefabricated-vias-for-laser-routing) that can be reassigned during routing. Ideal for rapid-turn PCBs produced with laser ablation and mechanical drilling templates. See the [Biscuit Board Laser Ablation guide](../guides/tscircuit-essentials/biscuit-board-laser-ablation.mdx) for a complete walkthrough.
90+
- `autorouter="laser_prefab"` - Reserve prefabricated vias that can be reassigned during routing. Ideal for rapid-turn PCBs produced with laser ablation and mechanical drilling templates. See the [Biscuit Board Laser Ablation guide](../guides/tscircuit-essentials/biscuit-board-laser-ablation.mdx) for a complete walkthrough.
9191

9292
For complex boards with over 50 traces, you should use `autorouter="auto-cloud"`
9393
to take advantage of tscircuit's cloud autorouters, which internally use the popular

docs/elements/via.mdx

Lines changed: 1 addition & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -42,37 +42,4 @@ import CircuitPreview from "@site/src/components/CircuitPreview"
4242
| outerDiameter | number \| string | "0.8mm" | Outer diameter of the copper annular ring |
4343
| pcbX | number | 0 | PCB X position of the via |
4444
| pcbY | number | 0 | PCB Y position of the via |
45-
| netIsAssignable | boolean | `false` | Marks the via as prefabricated so autorouters like `laser_prefab` can claim it for any compatible net |
46-
47-
### Prefabricated vias for laser routing
48-
49-
The [`laser_prefab` autorouter](./board.mdx#setting-the-autorouter) pairs with
50-
prefabricated ("biscuit") via templates used in laser ablation workflows.
51-
Setting `netIsAssignable` on a via marks it as reusable so the autorouter can
52-
repurpose the hole for whichever net needs to switch layers during routing.
53-
54-
<CircuitPreview
55-
defaultView="pcb"
56-
code={`export default () => (
57-
<board width="10mm" height="10mm" autorouter="laser_prefab">
58-
<testpoint name="TP_TOP" footprintVariant="pad" pcbX={0} pcbY={4} layer="top" />
59-
<testpoint name="TP_BOTTOM" footprintVariant="pad" pcbX={0} pcbY={-4} layer="bottom" />
60-
<via
61-
name="V_ASSIGNABLE"
62-
pcbX={0}
63-
pcbY={0}
64-
fromLayer="top"
65-
toLayer="bottom"
66-
holeDiameter="0.3mm"
67-
outerDiameter="0.6mm"
68-
netIsAssignable
69-
/>
70-
<trace from="TP_TOP.pin1" to="V_ASSIGNABLE.top" />
71-
<trace from="V_ASSIGNABLE.bottom" to="TP_BOTTOM.pin1" />
72-
</board>
73-
)`}
74-
/>
75-
76-
Unused assignable vias keep their original net, while claimed vias are updated
77-
to match the completed connection. For a full walkthrough, see the
78-
[Biscuit Board Laser Ablation guide](../guides/tscircuit-essentials/biscuit-board-laser-ablation.mdx).
45+
| netIsAssignable | boolean | `false` | Marks the via as prefabricated so autorouters like `laser_prefab` can claim it for any compatible net. For a full workflow, see the [Biscuit Board Laser Ablation guide](../guides/tscircuit-essentials/biscuit-board-laser-ablation.mdx). |

docs/guides/tscircuit-essentials/biscuit-board-laser-ablation.mdx

Lines changed: 6 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,10 @@ board.
1717

1818
This guide walks through designing for that workflow. You'll learn how to:
1919

20-
1. Prepare a via template that can be reused across designs.
21-
2. Configure your board to route with `autorouter="laser_prefab"`.
22-
3. Mark vias as assignable so the autorouter can claim them dynamically.
23-
4. Validate that the generated routing honors the biscuit's geometry.
20+
1. Build a reusable via template (the biscuit board).
21+
2. Place that template, route with `autorouter="laser_prefab"`, and confirm the results match the prefabricated geometry.
2422

25-
## 1. Build a reusable via template
23+
## 1. Build a reusable via template (a biscuit board)
2624

2725
Create a component for your biscuit template that contains every via location
2826
available on the board. Mark each via with `netIsAssignable` so it is treated as
@@ -48,7 +46,7 @@ Keep the template focused on the vias themselves. Copper features such as
4846
fiducials or alignment marks should live in their own components so you can swap
4947
templates without affecting the mechanical stackup.
5048

51-
## 2. Place the biscuit template on your board
49+
## 2. Place the biscuit template, route, and validate
5250

5351
Include the template inside your `<board />` before adding components. Because
5452
the vias are already drilled in the physical biscuit, avoid translating or
@@ -76,8 +74,6 @@ rotating the template in a way that misaligns the coordinates.
7674
Keep the board outline slightly inside the biscuit's usable area so the laser
7775
can clear debris without hitting the rails.
7876

79-
## 3. Route with `autorouter="laser_prefab"`
80-
8177
Once the template is in place, add traces exactly as you would for a conventional
8278
board. The router treats assignable vias as neutral territory: any net can claim
8379
them provided both layers are available and no design rules are violated.
@@ -100,25 +96,8 @@ them provided both layers are available and no design rules are violated.
10096
</board>
10197
```
10298

103-
During routing, tscircuit emits a **simple route JSON** that marks each
104-
`netIsAssignable` via with the `netIsAssignable` flag. The `laser_prefab` preset
105-
looks for that flag, allowing it to reserve a via for any trace that needs to
106-
change layers. The [integration test in the core
107-
library](https://github.com/tscircuit/core/blob/main/tests/autorouting/laser-prefab.test.tsx)
108-
verifies the behavior end to end.
109-
110-
### Reserving specific vias
111-
112-
Sometimes you know that certain vias must stay tied to a particular net—perhaps
113-
they connect to ground pour or stitching features. In that case, omit the
114-
`netIsAssignable` flag on those vias and route them manually. The router will
115-
leave them untouched while still consuming the rest of the biscuit template as
116-
needed.
117-
118-
## 4. Validate the routed output
119-
120-
After calling `circuit.renderUntilSettled()`, inspect the PCB view or export the
121-
Gerber/ODB++ data to confirm that:
99+
After generating manufacturing data (Gerber or ODB++ exports) or reviewing the
100+
PCB preview, confirm that:
122101

123102
- Every claimed via matches a real location on the biscuit template.
124103
- Unused vias remain isolated and keep their original net names.
@@ -142,21 +121,3 @@ Gerber/ODB++ data to confirm that:
142121
</board>
143122
)`}
144123
/>
145-
146-
If you need to adjust routing priorities, you can provide a custom autorouter
147-
object instead of the preset. Just make sure the implementation understands the
148-
`netIsAssignable` vias that tscircuit produces.
149-
150-
## Additional tips
151-
152-
- **Version your templates.** Include a `templateVersion` prop or layer marker so
153-
your fabrication team can confirm they are loading the correct biscuit.
154-
- **Simulate thermal load.** Prefabricated vias sometimes have smaller annular
155-
rings. Run a design-rule check (DRC) to ensure high-current nets can handle the
156-
reduced copper area.
157-
- **Document drill tolerances.** Share the biscuit's drill chart with your team so
158-
component footprints can account for any off-center holes.
159-
160-
With these practices, you can create a repeatable laser ablation workflow that
161-
leverages tscircuit's autorouting while taking full advantage of prefabricated
162-
via templates.

0 commit comments

Comments
 (0)