Skip to content

autolayout algorithms for tscircuit PCBs and Schematics

Notifications You must be signed in to change notification settings

tscircuit/schematic-autolayout

Repository files navigation

@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

About

autolayout algorithms for tscircuit PCBs and Schematics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages