0hmX/am62l-lpddr4-ti-pth-router
This code defines a hardware-oriented React/TypeScript setup for a PCB breakout circuit featuring an AM62L LPDDR4 interface, including detailed PCB component placement, routing algorithms, and validation scripts for DDR connections, via placement, and manufacturing constraints.
- Version
- 1.0.1
- License
- unset
- Stars
- 0
autorouting/am62l-free-space-fanout.ts
import type {
AutorouterProgressEvent,
GenericLocalAutorouter,
SimpleRouteJson,
} from "@tscircuit/core"
import {
InProcessAutorouter,
type InProcessAutorouterResult,
} from "./create-in-process-autorouter"
import { solveAm62lFreeSpaceFanout } from "./solve-am62l-free-space-fanout"
export const AM62L_FREE_SPACE_FANOUT_PHASES = [
"build_pad_topology",
"find_two_via_free_space",
"number_distance_from_free_space",
"place_independent_early_drop_vias",
"build_residual_via_lines",
"route_top_layer_dogbones",
"route_prescribed_inner_layers",
"validate_reconstructed_geometry",
] as const
export type Am62lFreeSpaceFanoutPhase =
(typeof AM62L_FREE_SPACE_FANOUT_PHASES)[number]
export type Am62lFreeSpaceFanoutSolve = (
input: SimpleRouteJson,
reportProgress: (event: AutorouterProgressEvent) => void,
) => InProcessAutorouterResult
export type Am62lFanoutAlgorithmFn = (
input: SimpleRouteJson,
) => Promise<GenericLocalAutorouter>
/**
* Creates the algorithmFn passed to a breakout's `autorouter` prop. Keeping
* this adapter separate lets the geometric solver stay a pure SRJ transform.
*/
export const createAm62lFreeSpaceFanoutAlgorithm = (
solve: Am62lFreeSpaceFanoutSolve = solveAm62lFreeSpaceFanout,
): Am62lFanoutAlgorithmFn => {
return async (input) => new InProcessAutorouter(input, solve)
}