astra/am3352-sbc

A 4-layer AM3352 single-board computer with 128‑MiB DDR3, PMIC power regulation, USB‑C 5‑V PD input, dual USB host ports, HDMI output with ESD protection, microSD/UART/JTAG interfaces, addressable RGB indicators, and a PWM-driven buzzer.

Version
0.1.19
License
unset
Stars
0

design/vendor/bus-lanes-candidate.d.ts

// Generated by dts-bundle-generator v9.5.1

interface Point {
	x: number;
	y: number;
	color?: string;
	label?: string;
	layer?: string;
	step?: number;
}
interface Line {
	points: {
		x: number;
		y: number;
	}[];
	strokeWidth?: number;
	strokeColor?: string;
	strokeDash?: string | number[];
	zIndex?: number;
	layer?: string;
	step?: number;
	label?: string;
}
interface InfiniteLine {
	directionVector: {
		x: number;
		y: number;
	};
	origin: {
		x: number;
		y: number;
	};
	strokeWidth?: number;
	strokeColor?: string;
	strokeDash?: string | number[];
	layer?: string;
	step?: number;
	label?: string;
}
interface Rect {
	center: {
		x: number;
		y: number;
	};
	width: number;
	height: number;
	ccwRotationDegrees?: number;
	fill?: string;
	stroke?: string;
	color?: string;
	layer?: string;
	step?: number;
	label?: string;
}
interface Circle {
	center: {
		x: number;
		y: number;
	};
	radius: number;
	fill?: string;
	stroke?: string;
	layer?: string;
	step?: number;
	label?: string;
}
interface Polygon {
	points: {
		x: number;
		y: number;
	}[];
	fill?: string;
	stroke?: string;
	strokeWidth?: number;
	color?: string;
	layer?: string;
	step?: number;
	label?: string;
}
interface Arrow {
	start: {
		x: number;
		y: number;
	};
	end: {
		x: number;
		y: number;
	};
	doubleSided?: boolean;
	color?: string;
	label?: string;
	inlineLabel?: string;
}
type NinePointAnchor = "center" | "top_left" | "top_center" | "top_right" | "center_left" | "center_right" | "bottom_left" | "bottom_center" | "bottom_right";
interface Text$1 {
	x: number;
	y: number;
	text: string;
	anchorSide?: NinePointAnchor;
	color?: string;
	fontSize?: number;
	layer?: string;
	step?: number;
}
interface GraphicsObject {
	points?: Point[];
	lines?: Line[];
	infiniteLines?: InfiniteLine[];
	rects?: Rect[];
	circles?: Circle[];
	polygons?: Polygon[];
	arrows?: Arrow[];
	texts?: Text$1[];
	coordinateSystem?: "cartesian" | "screen";
	title?: string;
}
declare class BaseSolver {
	MAX_ITERATIONS: number;
	solved: boolean;
	failed: boolean;
	iterations: number;
	progress: number;
	error: string | null;
	activeSubSolver?: BaseSolver | null;
	failedSubSolvers?: BaseSolver[];
	timeToSolve?: number;
	stats: Record<string, any>;
	_setupDone: boolean;
	getSolverName(): string;
	setup(): void;
	/** Override this method to perform setup logic */
	_setup(): void;
	/** DO NOT OVERRIDE! Override _step() instead */
	step(): void;
	/** Override this method to implement solver logic */
	_step(): void;
	getConstructorParams(): void;
	/**
	 * Override this method to return the standardized output of the solver.
	 * This method should only be called after the solver has completed successfully.
	 * Returns null by default - solvers with outputs should override this method.
	 */
	getOutput(): any;
	solve(): void;
	visualize(): GraphicsObject;
	/**
	 * Called when the solver is about to fail, but we want to see if we have an
	 * "acceptable" or "passable" solution. Mostly used for optimizers that
	 * have an aggressive early stopping criterion.
	 */
	tryFinalAcceptance(): void;
	/**
	 * A lightweight version of the visualize method that can be used to stream
	 * progress
	 */
	preview(): GraphicsObject;
}
/** Board-space geometry: right-handed XY, +X right, +Y up; positions and widths in mm. */
interface Point$1 {
	x: number;
	y: number;
}
export interface Terminal extends Point$1 {
	layer: string;
	pcb_port_id?: string;
	pointId?: string;
	layers?: string[];
}
export interface Connection {
	name: string;
	source_trace_id?: string;
	pointsToConnect: Terminal[];
	nominalTraceWidth?: number;
	width?: number;
}
export interface Bus {
	busId: string;
	name?: string;
	connectionNames: string[];
	/** Maximum total planar copper per member, including supplied fanouts, in mm. */
	maxLength?: number;
	/** Minimum total planar copper per member, including supplied fanouts, in mm. */
	minLength?: number;
	maxLengthSkew?: number;
	traceWidth?: number;
	preferredLayer?: string;
	preferredLayers?: string[];
	allowedLayers?: string[];
}
export interface Wire extends Point$1 {
	route_type: "wire";
	layer: string;
	width: number;
}
export interface Via extends Point$1 {
	route_type: "via";
	from_layer: string;
	to_layer: string;
	layers?: string[];
	via_diameter?: number;
	via_hole_diameter?: number;
}
export interface Trace {
	/** Ending vertex indices of chords generated by the smooth tuner. */
	curvedSegments?: number[];
	/** Inclusive handoff vertex indices; independently tune only outside this shared corridor. */
	coupledSection?: [
		number,
		number
	];
	type: "pcb_trace";
	pcb_trace_id: string;
	connection_name?: string;
	source_trace_id?: string;
	route: (Wire | Via)[];
}
export interface Obstacle {
	type?: string;
	componentId?: string;
	shape?: "circle";
	ccwRotationDegrees?: number;
	center: Point$1;
	width: number;
	height: number;
	layers: string[];
	connectedTo: string[];
}
/** Structural SimpleRouteJson boundary; unknown routing primitives are rejected. */
export interface SimpleRouteJson {
	layerCount: number;
	/** Allowed signal carrier layers; fixed copper and pad dogbones may use other physical layers. */
	allowedLayers?: string[];
	minTraceWidth: number;
	minViaPadDiameter?: number;
	minViaHoleDiameter?: number;
	minViaHoleEdgeToViaHoleEdgeClearance?: number;
	allowBlindAndBuriedVias?: boolean;
	bounds: {
		minX: number;
		maxX: number;
		minY: number;
		maxY: number;
	};
	connections: Connection[];
	obstacles: Obstacle[];
	traces?: Trace[];
	buses?: Bus[];
	defaultObstacleMargin?: number;
	minTraceToPadEdgeClearance?: number;
	minBoardEdgeClearance?: number;
	outline?: Point$1[];
	differentialPairs?: Array<{
		connectionNames: [
			string,
			string
		];
		lengthTolerance: number;
		traceGap?: number;
		maxUncoupledLength?: number;
	}>;
}
export interface SolverOptions {
	smoothTuning?: boolean;
	denseSearch?: boolean;
	maxLaneIterations?: number;
	maxSearchIterations?: number;
}
/** Routes on an implicit clearance-offset visibility graph in board-world mm.
 * Every step expands a geometric vertex or commits a complete lane. */
export declare class BusLanesSolver extends BaseSolver {
	private readonly terminalLayers;
	readonly input: SimpleRouteJson;
	readonly options: SolverOptions;
	phase: string;
	failureCode: string | null;
	traces: Trace[];
	private widths;
	private fixed;
	private orders;
	private attempt;
	private lane;
	private search?;
	private bestPartial;
	private pairedTraces;
	private pairIndex;
	private congestionPass;
	private conflictingLanes;
	private independent?;
	private independentAttempted;
	private pairedNetwork?;
	private pairedNetworkAttempted;
	private negotiated?;
	private reservePackageExits?;
	private pairSearch?;
	private reportedRoutes?;
	private lengthStats?;
	constructor(input: SimpleRouteJson, options?: SolverOptions, terminalLayers?: ReadonlyMap<string, string[]>);
	/** Rematch freshly computed carrier geometry after a pipeline refinement.
	 * The ordinary output validator still checks every endpoint and copper edge. */
	static forRefinement(input: SimpleRouteJson, traces: Trace[], options?: SolverOptions): BusLanesSolver;
	/** Accept already matched candidates through the ordinary output validator. */
	static forValidation(input: SimpleRouteJson, traces: Trace[], options?: SolverOptions): BusLanesSolver;
	getConstructorParams(): (SimpleRouteJson | SolverOptions)[];
	getOutput(): {
		traces: Trace[];
		layerCount: number;
		allowedLayers?: string[];
		minTraceWidth: number;
		minViaPadDiameter?: number;
		minViaHoleDiameter?: number;
		minViaHoleEdgeToViaHoleEdgeClearance?: number;
		allowBlindAndBuriedVias?: boolean;
		bounds: {
			minX: number;
			maxX: number;
			minY: number;
			maxY: number;
		};
		connections: Connection[];
		obstacles: Obstacle[];
		buses?: Bus[];
		defaultObstacleMargin?: number;
		minTraceToPadEdgeClearance?: number;
		minBoardEdgeClearance?: number;
		outline?: Point$1[];
		differentialPairs?: Array<{
			connectionNames: [
				string,
				string
			];
			lengthTolerance: number;
			traceGap?: number;
			maxUncoupledLength?: number;
		}>;
	};
	private fail;
	tryFinalAcceptance(): void;
	private initialize;
	private get useNegotiation();
	private coupledPairs;
	private routePair;
	private scene;
	private startLane;
	private retry;
	private route;
	private match;
	private validateOutput;
	_step(): void;
	visualize(): GraphicsObject;
}
export interface BusLanesPipelineOptions extends SolverOptions {
	fanout?: "auto" | "none";
}
/** Board-world points in mm, +X right, +Y up. Adds only local terminal vias;
 * the interconnect solver retains its strict fixed-layer contract. */
export declare class BusLanesPipelineSolver extends BaseSolver {
	readonly input: SimpleRouteJson;
	readonly options: BusLanesPipelineOptions;
	phase: string;
	traces: Trace[];
	failureCode: string | null;
	private acceptedTraces?;
	private envelopeOptimization?;
	/** Runs only after a complete accepted route exists. A budget interrupt or
	 * exception restores that private snapshot, never mutable work-in-progress. */
	protected optimizeEnvelope(): Generator<void, void>;
	private finishAccepted;
	private sharedPackages?;
	private backwardPackages?;
	private child?;
	private escapes;
	private attempt;
	private completedLanes;
	private remainingInput?;
	private followingInput?;
	private siteRematch?;
	private packageCoupling?;
	private terminalLayers;
	constructor(input: SimpleRouteJson, options?: BusLanesPipelineOptions);
	getConstructorParams(): (SimpleRouteJson | BusLanesPipelineOptions)[];
	getOutput(): {
		traces: Trace[];
		layerCount: number;
		allowedLayers?: string[];
		minTraceWidth: number;
		minViaPadDiameter?: number;
		minViaHoleDiameter?: number;
		minViaHoleEdgeToViaHoleEdgeClearance?: number;
		allowBlindAndBuriedVias?: boolean;
		bounds: {
			minX: number;
			maxX: number;
			minY: number;
			maxY: number;
		};
		connections: Connection[];
		obstacles: Obstacle[];
		buses?: Bus[];
		defaultObstacleMargin?: number;
		minTraceToPadEdgeClearance?: number;
		minBoardEdgeClearance?: number;
		outline?: Point$1[];
		differentialPairs?: Array<{
			connectionNames: [
				string,
				string
			];
			lengthTolerance: number;
			traceGap?: number;
			maxUncoupledLength?: number;
		}>;
	};
	tryFinalAcceptance(): void;
	private childOptions;
	private finishPackageCoupling;
	private prepare;
	_step(): void;
	visualize(): GraphicsObject;
}
/** Check physical coupling outside native package/fanout regions, independently
 * of coupledSection annotations. Local breakouts are measured separately by
 * pairCouplingReports; a shortened annotation cannot hide a separated trunk. */
export declare function exteriorPairSpacingReports(input: SimpleRouteJson, traces: Trace[]): ({
	matched: boolean;
	maxExteriorEdgeGapMm: null;
	maxSamplingErrorMm: null;
	separatedExteriorLengthMm: null;
	connectionNames: [
		string,
		string
	];
	applicable: boolean;
} | {
	matched: boolean;
	maxExteriorEdgeGapMm: number | null;
	maxSamplingErrorMm: number;
	separatedExteriorLengthMm: number;
	connectionNames: [
		string,
		string
	];
	applicable: boolean;
})[];
export declare function busLengthReports(input: SimpleRouteJson, traces: Trace[]): {
	busId: string;
	minLengthMm: number | null;
	aboveMinimumLength: boolean;
	maxLengthMm: number | null;
	withinLengthLimit: boolean;
	toleranceMm: number | null;
	skewMm: number | null;
	matched: boolean;
	lengths: {
		name: string;
		carrierLengthMm: number | null;
		fixedLengthMm: number;
		totalLengthMm: number | null;
	}[];
}[];
export declare function pairLengthReports(input: SimpleRouteJson, traces: Trace[]): {
	busId: string;
	minLengthMm: number | null;
	aboveMinimumLength: boolean;
	maxLengthMm: number | null;
	withinLengthLimit: boolean;
	toleranceMm: number | null;
	skewMm: number | null;
	matched: boolean;
	lengths: {
		name: string;
		carrierLengthMm: number | null;
		fixedLengthMm: number;
		totalLengthMm: number | null;
	}[];
}[];

export {
	Point$1 as Point,
};

export {};