Home

Awesome

@tscircuit/schematic-autolayout

Visual Examples

Algorithms for automatic layout PCBs and Schematics

For routing algorithms, see @tscircuit/routing

Usage

To use this library in your project:

  1. Install the package:
npm install @tscircuit/schematic-autolayout
  1. Import the necessary functions:
import { scene, ascendingCentralLrBug1 } from "@tscircuit/schematic-autolayout"
  1. 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)
  1. Use the layouted scene in your application, for example with a renderer:
import { PlaygroundScene } from "@tscircuit/schematic-autolayout"

function MyComponent() {
  return <PlaygroundScene scene={layoutedScene} />
}

Main Layout

The main autolayout algorithm we're working on currently focuses on schematic layout and determines which of the following scenarios is the best fit:

  1. Row layout (a simple row, e.g. multiple passives)
  2. Column layout (a simple column, e.g. multiple passives)
  3. Central LR bug with ascending columns

Post-layout Processing

In this stage, ports are aligned for the layout is adjusted for general orderly-ness.

  1. Port alignment
  2. Central LR Bug Only: Shift columns downward where the adjacent colum has the same bottom net