@tscircuit/props 0.0.596 → 0.0.597
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +4 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/lib/common/fanoutBoundaryPadding.ts +35 -0
- package/lib/components/autoroutingphase.ts +10 -0
- package/lib/components/breakout.ts +12 -2
- package/lib/components/group.ts +7 -0
- package/lib/index.ts +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { expectTypesMatch } from "lib/typecheck"
|
|
2
|
+
import { z } from "zod"
|
|
3
|
+
import { distance, type Distance } from "./distance"
|
|
4
|
+
|
|
5
|
+
export interface DirectionalFanoutBoundaryPadding {
|
|
6
|
+
top?: Distance
|
|
7
|
+
right?: Distance
|
|
8
|
+
bottom?: Distance
|
|
9
|
+
left?: Distance
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Padding between the union of the fanout source pads and the shared boundary
|
|
14
|
+
* where fanout traces terminate. Omitted directional values are treated as
|
|
15
|
+
* zero.
|
|
16
|
+
*/
|
|
17
|
+
export type FanoutBoundaryPadding = Distance | DirectionalFanoutBoundaryPadding
|
|
18
|
+
|
|
19
|
+
const nonnegativeDistance = distance.refine((value) => value >= 0, {
|
|
20
|
+
message: "Fanout boundary padding cannot be negative",
|
|
21
|
+
})
|
|
22
|
+
|
|
23
|
+
export const fanoutBoundaryPadding = z.union([
|
|
24
|
+
nonnegativeDistance,
|
|
25
|
+
z.object({
|
|
26
|
+
top: nonnegativeDistance.optional(),
|
|
27
|
+
right: nonnegativeDistance.optional(),
|
|
28
|
+
bottom: nonnegativeDistance.optional(),
|
|
29
|
+
left: nonnegativeDistance.optional(),
|
|
30
|
+
}),
|
|
31
|
+
])
|
|
32
|
+
|
|
33
|
+
expectTypesMatch<FanoutBoundaryPadding, z.input<typeof fanoutBoundaryPadding>>(
|
|
34
|
+
true,
|
|
35
|
+
)
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import { expectTypesMatch } from "lib/typecheck"
|
|
2
2
|
import { z } from "zod"
|
|
3
|
+
import {
|
|
4
|
+
type FanoutBoundaryPadding,
|
|
5
|
+
fanoutBoundaryPadding,
|
|
6
|
+
} from "../common/fanoutBoundaryPadding"
|
|
3
7
|
import {
|
|
4
8
|
type NinePointAnchor,
|
|
5
9
|
ninePointAnchor,
|
|
@@ -38,6 +42,11 @@ export interface AutoroutingPhaseProps extends RoutingTolerances {
|
|
|
38
42
|
* direction unconstrained.
|
|
39
43
|
*/
|
|
40
44
|
busFanoutDirections?: Record<BusName, BusFanoutDirection>
|
|
45
|
+
/**
|
|
46
|
+
* Padding between the union of the fanout source pads and the shared
|
|
47
|
+
* boundary where fanout traces terminate.
|
|
48
|
+
*/
|
|
49
|
+
fanoutBoundaryPadding?: FanoutBoundaryPadding
|
|
41
50
|
}
|
|
42
51
|
|
|
43
52
|
const busFanoutDirection = z.union([
|
|
@@ -65,6 +74,7 @@ export const autoroutingPhaseProps = z
|
|
|
65
74
|
connections: z.array(z.string()).optional(),
|
|
66
75
|
reroute: z.boolean().optional(),
|
|
67
76
|
busFanoutDirections: z.record(busFanoutDirection).optional(),
|
|
77
|
+
fanoutBoundaryPadding: fanoutBoundaryPadding.optional(),
|
|
68
78
|
})
|
|
69
79
|
.superRefine((value, ctx) => {
|
|
70
80
|
if (
|
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
import { distance } from "
|
|
2
|
-
import
|
|
1
|
+
import { distance, type Distance } from "lib/common/distance"
|
|
2
|
+
import {
|
|
3
|
+
type FanoutBoundaryPadding,
|
|
4
|
+
fanoutBoundaryPadding,
|
|
5
|
+
} from "lib/common/fanoutBoundaryPadding"
|
|
3
6
|
import { expectTypesMatch } from "lib/typecheck"
|
|
4
7
|
import { z } from "zod"
|
|
5
8
|
import {
|
|
@@ -21,6 +24,12 @@ export interface BreakoutProps
|
|
|
21
24
|
paddingRight?: Distance
|
|
22
25
|
paddingTop?: Distance
|
|
23
26
|
paddingBottom?: Distance
|
|
27
|
+
/**
|
|
28
|
+
* Padding between the union of the fanout source pads and the shared
|
|
29
|
+
* boundary where fanout traces terminate. This is independent of the
|
|
30
|
+
* breakout group's layout padding.
|
|
31
|
+
*/
|
|
32
|
+
fanoutBoundaryPadding?: FanoutBoundaryPadding
|
|
24
33
|
}
|
|
25
34
|
|
|
26
35
|
export const breakoutProps = subcircuitGroupProps.extend({
|
|
@@ -30,6 +39,7 @@ export const breakoutProps = subcircuitGroupProps.extend({
|
|
|
30
39
|
paddingRight: distance.optional(),
|
|
31
40
|
paddingTop: distance.optional(),
|
|
32
41
|
paddingBottom: distance.optional(),
|
|
42
|
+
fanoutBoundaryPadding: fanoutBoundaryPadding.optional(),
|
|
33
43
|
})
|
|
34
44
|
|
|
35
45
|
type InferredBreakoutProps = z.input<typeof breakoutProps>
|
package/lib/components/group.ts
CHANGED
|
@@ -335,6 +335,7 @@ export interface AutorouterConfig {
|
|
|
335
335
|
cache?: PcbRouteCache
|
|
336
336
|
traceClearance?: Distance
|
|
337
337
|
availableJumperTypes?: Array<"1206x4" | "0603">
|
|
338
|
+
allowViaInPad?: boolean
|
|
338
339
|
groupMode?:
|
|
339
340
|
| "sequential_trace"
|
|
340
341
|
| "subcircuit"
|
|
@@ -408,6 +409,12 @@ export const autorouterConfig = z.object({
|
|
|
408
409
|
cache: z.custom<PcbRouteCache>((v) => true).optional(),
|
|
409
410
|
traceClearance: length.optional(),
|
|
410
411
|
availableJumperTypes: z.array(z.enum(["1206x4", "0603"])).optional(),
|
|
412
|
+
allowViaInPad: z
|
|
413
|
+
.boolean()
|
|
414
|
+
.optional()
|
|
415
|
+
.describe(
|
|
416
|
+
"Allows the autorouter to place vias inside connected pads. Omitted or false keeps via-in-pad routing disabled.",
|
|
417
|
+
),
|
|
411
418
|
groupMode: z
|
|
412
419
|
.enum(["sequential_trace", "subcircuit", "sequential-trace"])
|
|
413
420
|
.optional(),
|
package/lib/index.ts
CHANGED