diff --git a/lib/components/primitive-components/Group/Group.ts b/lib/components/primitive-components/Group/Group.ts index 4e5b3bd5c..1d55aa93d 100644 --- a/lib/components/primitive-components/Group/Group.ts +++ b/lib/components/primitive-components/Group/Group.ts @@ -779,21 +779,24 @@ export class Group = typeof groupProps> if (this.props.autorouter?.inputFormat === "simplified") { const preferredTraceWidth = props.defaultTraceWidth ?? props.nominalTraceWidth + const { simpleRouteJson } = getSimpleRouteJsonFromCircuitJson({ + db, + minTraceWidth: Number(props.minTraceWidth ?? 0.15), + nominalTraceWidth: + preferredTraceWidth != null + ? Number(preferredTraceWidth) + : undefined, + subcircuit_id: this.subcircuit_id, + subcircuitComponent: this, + }) + simpleRouteJson.allowViaInPad = autorouterConfig.allowViaInPad + const { autorouting_result } = await fetchWithDebug( `${serverUrl}/autorouting/solve`, { method: "POST", body: JSON.stringify({ - input_simple_route_json: getSimpleRouteJsonFromCircuitJson({ - db, - minTraceWidth: Number(props.minTraceWidth ?? 0.15), - nominalTraceWidth: - preferredTraceWidth != null - ? Number(preferredTraceWidth) - : undefined, - subcircuit_id: this.subcircuit_id, - subcircuitComponent: this, - }).simpleRouteJson, + input_simple_route_json: simpleRouteJson, subcircuit_id: this.subcircuit_id!, }), headers: { @@ -1074,6 +1077,7 @@ export class Group = typeof groupProps> simpleRouteJson, routingPhasePlan.drcTolerances, ) + simpleRouteJson.allowViaInPad = phaseAutorouterConfig.allowViaInPad if ( (hasPhasedAutorouting || isReroutePhase) && diff --git a/package.json b/package.json index cdc963937..e458367e6 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "@tsci/tscircuit.ti": "github:tscircuit/ti#57e314be4b2b06bc546d4def7453e619604d1157", "@tscircuit/alphabet": "0.0.25", "@tscircuit/breakout-point-solver": "github:tscircuit/breakout-point-solver#bac9629", - "@tscircuit/capacity-autorouter": "^0.0.718", + "@tscircuit/capacity-autorouter": "^0.0.722", "@tscircuit/checks": "0.0.146", "@tscircuit/circuit-json-util": "^0.0.101", "@tscircuit/common": "^0.0.20", diff --git a/tests/features/autorouter-allow-via-in-pad.test.tsx b/tests/features/autorouter-allow-via-in-pad.test.tsx new file mode 100644 index 000000000..c77fdfbef --- /dev/null +++ b/tests/features/autorouter-allow-via-in-pad.test.tsx @@ -0,0 +1,32 @@ +import { expect, test } from "bun:test" +import type { SimpleRouteJson } from "lib/utils/autorouting/SimpleRouteJson" +import { getTestFixture } from "tests/fixtures/get-test-fixture" + +test("board autorouter passes allowViaInPad to SimpleRouteJson", async () => { + const { circuit } = getTestFixture() + let autorouterInput: SimpleRouteJson | undefined + + circuit.on("autorouting:start", ({ simpleRouteJson }) => { + autorouterInput = simpleRouteJson + }) + + circuit.add( + + + + + , + ) + + await circuit.renderUntilSettled() + + expect(autorouterInput?.allowViaInPad).toBe(true) +})