Algorithms for automatic layout PCBs and Schematics
For routing algorithms, see @tscircuit/routing
To use this library in your project:
- Install the package:
npm install @tscircuit/schematic-autolayout
- Import the necessary functions:
import { scene, ascendingCentralLrBug1 } from "@tscircuit/schematic-autolayout"
- Create a scene and apply the layout algorithm:
const myScene = scene()
.addCcwBox("U1", { x: 0, y: 0, leftPorts: 3, rightPorts: 3 })
.addLrBox("R1", { x: -2, y: 0 })
.connect("U1.1", "R1.right")
.build()
const layoutedScene = ascendingCentralLrBug1(myScene)
- Use the layouted scene in your application, for example with a renderer:
import { PlaygroundScene } from "@tscircuit/schematic-autolayout"
function MyComponent() {
return <PlaygroundScene scene={layoutedScene} />
}
The main autolayout algorithm we're working on currently focuses on schematic layout and determines which of the following scenarios is the best fit:
- Row layout (a simple row, e.g. multiple passives)
- Column layout (a simple column, e.g. multiple passives)
- Central LR bug with ascending columns
In this stage, ports are aligned for the layout is adjusted for general orderly-ness.
- Port alignment
- Central LR Bug Only: Shift columns downward where the adjacent colum has the same bottom net