Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 49 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,7 @@ https://github.com/user-attachments/assets/2f28b7ba-689e-4d80-85b2-5bdef84b41f8
- [PcbPadTraceClearanceError](#pcbpadtraceclearanceerror)
- [PcbPanel](#pcbpanel)
- [PcbPanelizationPlacementError](#pcbpanelizationplacementerror)
- [PcbPin1Location](#pcbpin1location)
- [PcbPlacementError](#pcbplacementerror)
- [PcbPlatedHole](#pcbplatedhole)
- [PcbPort](#pcbport)
Expand Down Expand Up @@ -207,6 +208,7 @@ https://github.com/user-attachments/assets/2f28b7ba-689e-4d80-85b2-5bdef84b41f8
- [SimulationDcSweepCurrentGraph](#simulationdcsweepcurrentgraph)
- [SimulationDcSweepVoltageGraph](#simulationdcsweepvoltagegraph)
- [SimulationExperiment](#simulationexperiment)
- [SimulationMeasurementResult](#simulationmeasurementresult)
- [SimulationOpAmp](#simulationopamp)
- [SimulationOscilloscopeTrace](#simulationoscilloscopetrace)
- [SimulationParameterSweep](#simulationparametersweep)
Expand Down Expand Up @@ -501,7 +503,7 @@ interface SourceManuallyPlacedVia {
type: "source_manually_placed_via"
source_manually_placed_via_id: string
source_group_id: string
source_net_id: string
source_net_id?: string
subcircuit_id?: string
source_trace_id?: string
}
Expand Down Expand Up @@ -1392,6 +1394,8 @@ interface PcbBreakoutPoint {
interface PcbComponentMetadata {
kicad_footprint?: KicadFootprintMetadata
}

type SupplierPin1LocationMap = Partial<Record<SupplierName, PcbPin1Location>>
```

### PcbComponentInvalidLayerError
Expand Down Expand Up @@ -2206,6 +2210,24 @@ interface PcbPanelizationPlacementError extends BaseCircuitJsonError {
}
```

### PcbPin1Location

[Source](https://github.com/tscircuit/circuit-json/blob/main/src/pcb/properties/pcb_pin1_location.ts)

```typescript
type PcbPin1Location =
| "leftside_top"
| "leftside_bottom"
| "rightside_top"
| "rightside_bottom"
| "topside_left"
| "topside_right"
| "bottomside_left"
| "bottomside_right"

type PcbPin1LocationRotation = 0 | 90 | 180 | 270
```

### PcbPlacementError

[Source](https://github.com/tscircuit/circuit-json/blob/main/src/pcb/pcb_placement_error.ts)
Expand Down Expand Up @@ -2831,6 +2853,8 @@ interface PcbVia {
to_layer?: LayerRef
layers: LayerRef[]
pcb_trace_id?: string
source_trace_id?: string
source_net_id?: string
net_is_assignable?: boolean
net_assigned?: boolean
is_tented?: boolean
Expand Down Expand Up @@ -3451,6 +3475,7 @@ interface SimulationAcSweepCurrentGraph {
simulation_ac_sweep_current_graph_id: string
simulation_experiment_id: string
simulation_parameter_sweep_coordinate?: SimulationParameterSweepCoordinate
simulation_parameter_sweep_coordinates?: SimulationParameterSweepCoordinate[]
simulation_current_probe_id: string
frequencies_hz: number[]
complex_currents: SimulationComplexSample[]
Expand All @@ -3469,6 +3494,7 @@ interface SimulationAcSweepVoltageGraph {
simulation_ac_sweep_voltage_graph_id: string
simulation_experiment_id: string
simulation_parameter_sweep_coordinate?: SimulationParameterSweepCoordinate
simulation_parameter_sweep_coordinates?: SimulationParameterSweepCoordinate[]
simulation_voltage_probe_id: string
frequencies_hz: number[]
complex_voltages: SimulationComplexSample[]
Expand Down Expand Up @@ -3591,6 +3617,7 @@ interface SimulationDcOperatingPointCurrent {
simulation_dc_operating_point_current_id: string
simulation_experiment_id: string
simulation_parameter_sweep_coordinate?: SimulationParameterSweepCoordinate
simulation_parameter_sweep_coordinates?: SimulationParameterSweepCoordinate[]
simulation_current_probe_id: string
current: number
name?: string
Expand All @@ -3608,6 +3635,7 @@ interface SimulationDcOperatingPointVoltage {
simulation_dc_operating_point_voltage_id: string
simulation_experiment_id: string
simulation_parameter_sweep_coordinate?: SimulationParameterSweepCoordinate
simulation_parameter_sweep_coordinates?: SimulationParameterSweepCoordinate[]
simulation_voltage_probe_id: string
voltage: number
name?: string
Expand All @@ -3625,6 +3653,7 @@ interface SimulationDcSweepCurrentGraph {
simulation_dc_sweep_current_graph_id: string
simulation_experiment_id: string
simulation_parameter_sweep_coordinate?: SimulationParameterSweepCoordinate
simulation_parameter_sweep_coordinates?: SimulationParameterSweepCoordinate[]
simulation_current_probe_id: string
sweep_values: number[]
sweep_unit: SimulationDcSweepUnit
Expand All @@ -3644,6 +3673,7 @@ interface SimulationDcSweepVoltageGraph {
simulation_dc_sweep_voltage_graph_id: string
simulation_experiment_id: string
simulation_parameter_sweep_coordinate?: SimulationParameterSweepCoordinate
simulation_parameter_sweep_coordinates?: SimulationParameterSweepCoordinate[]
simulation_voltage_probe_id: string
sweep_values: number[]
sweep_unit: SimulationDcSweepUnit
Expand Down Expand Up @@ -3688,6 +3718,22 @@ interface SpiceSimulationOptions {
}
```

### SimulationMeasurementResult

[Source](https://github.com/tscircuit/circuit-json/blob/main/src/simulation/simulation_measurement_result.ts)

```typescript
interface SimulationMeasurementResult {
type: "simulation_measurement_result"
simulation_measurement_result_id: string
simulation_experiment_id: string
name: string
measurement_values: number[]
measurement_unit: string
simulation_parameter_sweep_coordinate_sets?: SimulationParameterSweepCoordinate[][]
}
```

### SimulationOpAmp

[Source](https://github.com/tscircuit/circuit-json/blob/main/src/simulation/simulation_op_amp.ts)
Expand Down Expand Up @@ -3839,6 +3885,7 @@ interface SimulationTransientCurrentGraph {
simulation_transient_current_graph_id: string
simulation_experiment_id: string
simulation_parameter_sweep_coordinate?: SimulationParameterSweepCoordinate
simulation_parameter_sweep_coordinates?: SimulationParameterSweepCoordinate[]
timestamps_ms?: number[]
current_levels: number[]
source_component_id?: string
Expand All @@ -3861,6 +3908,7 @@ interface SimulationTransientVoltageGraph {
simulation_transient_voltage_graph_id: string
simulation_experiment_id: string
simulation_parameter_sweep_coordinate?: SimulationParameterSweepCoordinate
simulation_parameter_sweep_coordinates?: SimulationParameterSweepCoordinate[]
timestamps_ms?: number[]
voltage_levels: number[]
source_component_id?: string
Expand Down
1 change: 1 addition & 0 deletions src/any_circuit_element.ts
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,7 @@ export const any_circuit_element = z.union([
sim.simulation_dc_sweep_current_graph,
sim.simulation_ac_sweep_voltage_graph,
sim.simulation_ac_sweep_current_graph,
sim.simulation_measurement_result,
sim.simulation_parameter_sweep,
sim.simulation_switch,
sim.simulation_voltage_probe,
Expand Down
1 change: 1 addition & 0 deletions src/simulation/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,4 @@ export * from "./simulation_units"
export * from "./simulation_op_amp"
export * from "./simulation_spice_subcircuit"
export * from "./simulation_oscilloscope_trace"
export * from "./simulation_measurement_result"
5 changes: 5 additions & 0 deletions src/simulation/simulation_ac_sweep_current_graph.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ export interface SimulationAcSweepCurrentGraph {
simulation_ac_sweep_current_graph_id: string
simulation_experiment_id: string
simulation_parameter_sweep_coordinate?: SimulationParameterSweepCoordinate
simulation_parameter_sweep_coordinates?: SimulationParameterSweepCoordinate[]
simulation_current_probe_id: string
frequencies_hz: number[]
complex_currents: SimulationComplexSample[]
Expand All @@ -31,6 +32,10 @@ export const simulation_ac_sweep_current_graph = z
simulation_experiment_id: z.string(),
simulation_parameter_sweep_coordinate:
simulation_parameter_sweep_coordinate.optional(),
simulation_parameter_sweep_coordinates: z
.array(simulation_parameter_sweep_coordinate)
.min(2)
.optional(),
simulation_current_probe_id: z.string(),
frequencies_hz: z.array(z.number()),
complex_currents: z.array(simulation_complex_sample),
Expand Down
5 changes: 5 additions & 0 deletions src/simulation/simulation_ac_sweep_voltage_graph.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ export interface SimulationAcSweepVoltageGraph {
simulation_ac_sweep_voltage_graph_id: string
simulation_experiment_id: string
simulation_parameter_sweep_coordinate?: SimulationParameterSweepCoordinate
simulation_parameter_sweep_coordinates?: SimulationParameterSweepCoordinate[]
simulation_voltage_probe_id: string
frequencies_hz: number[]
complex_voltages: SimulationComplexSample[]
Expand All @@ -31,6 +32,10 @@ export const simulation_ac_sweep_voltage_graph = z
simulation_experiment_id: z.string(),
simulation_parameter_sweep_coordinate:
simulation_parameter_sweep_coordinate.optional(),
simulation_parameter_sweep_coordinates: z
.array(simulation_parameter_sweep_coordinate)
.min(2)
.optional(),
simulation_voltage_probe_id: z.string(),
frequencies_hz: z.array(z.number()),
complex_voltages: z.array(simulation_complex_sample),
Expand Down
5 changes: 5 additions & 0 deletions src/simulation/simulation_dc_operating_point_current.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ export interface SimulationDcOperatingPointCurrent {
simulation_dc_operating_point_current_id: string
simulation_experiment_id: string
simulation_parameter_sweep_coordinate?: SimulationParameterSweepCoordinate
simulation_parameter_sweep_coordinates?: SimulationParameterSweepCoordinate[]
simulation_current_probe_id: string
current: number
name?: string
Expand All @@ -25,6 +26,10 @@ export const simulation_dc_operating_point_current = z.object({
simulation_experiment_id: z.string(),
simulation_parameter_sweep_coordinate:
simulation_parameter_sweep_coordinate.optional(),
simulation_parameter_sweep_coordinates: z
.array(simulation_parameter_sweep_coordinate)
.min(2)
.optional(),
simulation_current_probe_id: z.string(),
current: z.number(),
name: z.string().optional(),
Expand Down
5 changes: 5 additions & 0 deletions src/simulation/simulation_dc_operating_point_voltage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ export interface SimulationDcOperatingPointVoltage {
simulation_dc_operating_point_voltage_id: string
simulation_experiment_id: string
simulation_parameter_sweep_coordinate?: SimulationParameterSweepCoordinate
simulation_parameter_sweep_coordinates?: SimulationParameterSweepCoordinate[]
simulation_voltage_probe_id: string
voltage: number
name?: string
Expand All @@ -25,6 +26,10 @@ export const simulation_dc_operating_point_voltage = z.object({
simulation_experiment_id: z.string(),
simulation_parameter_sweep_coordinate:
simulation_parameter_sweep_coordinate.optional(),
simulation_parameter_sweep_coordinates: z
.array(simulation_parameter_sweep_coordinate)
.min(2)
.optional(),
simulation_voltage_probe_id: z.string(),
voltage: z.number(),
name: z.string().optional(),
Expand Down
5 changes: 5 additions & 0 deletions src/simulation/simulation_dc_sweep_current_graph.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ export interface SimulationDcSweepCurrentGraph {
simulation_dc_sweep_current_graph_id: string
simulation_experiment_id: string
simulation_parameter_sweep_coordinate?: SimulationParameterSweepCoordinate
simulation_parameter_sweep_coordinates?: SimulationParameterSweepCoordinate[]
simulation_current_probe_id: string
sweep_values: number[]
sweep_unit: SimulationDcSweepUnit
Expand All @@ -32,6 +33,10 @@ export const simulation_dc_sweep_current_graph = z
simulation_experiment_id: z.string(),
simulation_parameter_sweep_coordinate:
simulation_parameter_sweep_coordinate.optional(),
simulation_parameter_sweep_coordinates: z
.array(simulation_parameter_sweep_coordinate)
.min(2)
.optional(),
simulation_current_probe_id: z.string(),
sweep_values: z.array(z.number()),
sweep_unit: simulation_dc_sweep_unit,
Expand Down
5 changes: 5 additions & 0 deletions src/simulation/simulation_dc_sweep_voltage_graph.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ export interface SimulationDcSweepVoltageGraph {
simulation_dc_sweep_voltage_graph_id: string
simulation_experiment_id: string
simulation_parameter_sweep_coordinate?: SimulationParameterSweepCoordinate
simulation_parameter_sweep_coordinates?: SimulationParameterSweepCoordinate[]
simulation_voltage_probe_id: string
sweep_values: number[]
sweep_unit: SimulationDcSweepUnit
Expand All @@ -32,6 +33,10 @@ export const simulation_dc_sweep_voltage_graph = z
simulation_experiment_id: z.string(),
simulation_parameter_sweep_coordinate:
simulation_parameter_sweep_coordinate.optional(),
simulation_parameter_sweep_coordinates: z
.array(simulation_parameter_sweep_coordinate)
.min(2)
.optional(),
simulation_voltage_probe_id: z.string(),
sweep_values: z.array(z.number()),
sweep_unit: simulation_dc_sweep_unit,
Expand Down
69 changes: 69 additions & 0 deletions src/simulation/simulation_measurement_result.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
import { z } from "zod"
import { getZodPrefixedIdWithDefault } from "src/common"
import { expectTypesMatch } from "src/utils/expect-types-match"
import {
simulation_parameter_sweep_coordinate,
type SimulationParameterSweepCoordinate,
} from "./simulation_parameter_sweep_coordinate"

export interface SimulationMeasurementResult {
type: "simulation_measurement_result"
simulation_measurement_result_id: string
simulation_experiment_id: string
name: string
measurement_values: number[]
measurement_unit: string
simulation_parameter_sweep_coordinate_sets?: SimulationParameterSweepCoordinate[][]
}

export const simulation_measurement_result = z
.object({
type: z.literal("simulation_measurement_result"),
simulation_measurement_result_id: getZodPrefixedIdWithDefault(
"simulation_measurement_result",
),
simulation_experiment_id: z.string(),
name: z.string().min(1),
measurement_values: z.array(z.number().finite()).min(1),
measurement_unit: z.string().min(1),
simulation_parameter_sweep_coordinate_sets: z
.array(z.array(simulation_parameter_sweep_coordinate).min(1))
.min(1)
.optional(),
})
.superRefine((result, context) => {
const coordinateSets = result.simulation_parameter_sweep_coordinate_sets
if (!coordinateSets) {
if (result.measurement_values.length !== 1) {
context.addIssue({
code: z.ZodIssueCode.custom,
path: ["measurement_values"],
message:
"A measurement result without parameter sweeps must contain exactly one value",
})
}
return
}

if (coordinateSets.length !== result.measurement_values.length) {
context.addIssue({
code: z.ZodIssueCode.custom,
path: ["simulation_parameter_sweep_coordinate_sets"],
message:
"measurement_values and simulation_parameter_sweep_coordinate_sets must have the same length",
})
}
})
.describe("Stores scalar measurements for a simulation experiment")

export type SimulationMeasurementResultInput = z.input<
typeof simulation_measurement_result
>
type InferredSimulationMeasurementResult = z.infer<
typeof simulation_measurement_result
>

expectTypesMatch<
SimulationMeasurementResult,
InferredSimulationMeasurementResult
>(true)
5 changes: 5 additions & 0 deletions src/simulation/simulation_transient_current_graph.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ export interface SimulationTransientCurrentGraph {
simulation_transient_current_graph_id: string
simulation_experiment_id: string
simulation_parameter_sweep_coordinate?: SimulationParameterSweepCoordinate
simulation_parameter_sweep_coordinates?: SimulationParameterSweepCoordinate[]
timestamps_ms?: number[]
current_levels: number[]
source_component_id?: string
Expand All @@ -32,6 +33,10 @@ export const simulation_transient_current_graph = z
simulation_experiment_id: z.string(),
simulation_parameter_sweep_coordinate:
simulation_parameter_sweep_coordinate.optional(),
simulation_parameter_sweep_coordinates: z
.array(simulation_parameter_sweep_coordinate)
.min(2)
.optional(),
timestamps_ms: z.array(z.number()).optional(),
current_levels: z.array(z.number()),
source_component_id: z.string().optional(),
Expand Down
5 changes: 5 additions & 0 deletions src/simulation/simulation_transient_voltage_graph.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ export interface SimulationTransientVoltageGraph {
simulation_transient_voltage_graph_id: string
simulation_experiment_id: string
simulation_parameter_sweep_coordinate?: SimulationParameterSweepCoordinate
simulation_parameter_sweep_coordinates?: SimulationParameterSweepCoordinate[]
timestamps_ms?: number[]
voltage_levels: number[]
source_component_id?: string
Expand All @@ -32,6 +33,10 @@ export const simulation_transient_voltage_graph = z
simulation_experiment_id: z.string(),
simulation_parameter_sweep_coordinate:
simulation_parameter_sweep_coordinate.optional(),
simulation_parameter_sweep_coordinates: z
.array(simulation_parameter_sweep_coordinate)
.min(2)
.optional(),
timestamps_ms: z.array(z.number()).optional(),
voltage_levels: z.array(z.number()),
source_component_id: z.string().optional(),
Expand Down
Loading
Loading