DeviceLayout.jl

DeviceLayout.jl is a Julia package for computer-aided design (CAD) of quantum integrated circuits, developed at the AWS Center for Quantum Computing. The package supports

  • 2D layout generation for fabrication (GDSII export)
  • 3D model generation for electromagnetic simulation
  • Schematic-driven design for managing complex devices with many components

Why DeviceLayout.jl?

We develop DeviceLayout.jl to accelerate design cycles as projects scale to larger quantum processors and larger teams. Key features include:

  • Rich geometry types with first-class support for paths
  • Schematic-driven layout: Manage complexity by separating component geometry and device connectivity
  • 3D modeling and meshing (via Open CASCADE Technology and Gmsh) using rich geometry and schematic information to improve meshing and configure simulations
  • Developed alongside Palace, an open-source tool for electromagnetic finite-element analysis
  • Built-in support for common elements of superconducting quantum processors like coplanar waveguides, air bridges, and flip-chip assemblies
  • Explicit unit support without sacrificing performance
  • The Julia ecosystem: Users write code in Julia, a scientific programming language combining high performance and ease of use
  • Package management: The Julia package manager offers portability and reproducibility for design projects
  • PDK support: Teams can manage their own process design kit as a set of Julia packages in a private registry

Quick Start

Installation

DeviceLayout.jl requires Julia v1.10 or later. You can follow these instructions to install Julia.

From Julia, install DeviceLayout.jl using the built-in package manager, Pkg.jl:

julia> ] # Pressing ] in the Julia REPL activates the Pkg REPL mode
pkg> activate . # Activates an environment in the current directory
pkg> add DeviceLayout # Adds DeviceLayout.jl to the environment
pkg> add FileIO # You'll want FileIO too, to save output files
Use Project Environments

We recommend using an environment for each project rather than installing packages in the default environment. This ensures reproducibility and avoids version conflicts.

Hello World

using DeviceLayout, DeviceLayout.PreferredUnits
using FileIO

# Create a cell
cell = Cell("hello", nm)

# Add a rectangle
render!(cell, centered(Rectangle(100μm, 50μm)), GDSMeta(0))

# Save to GDS
save("hello.gds", cell)

See Getting Started for a more complete introduction, including workflow setup.

What should I read next?

  • New to DeviceLayout.jl? Continue with Getting Started to set up your environment and workflow.
  • Want to learn by doing? Head to the Tutorials.
  • Want a deeper understanding? Read the Concepts section.
  • Looking for API details? Browse the Reference.

Examples

Explore what you can build with DeviceLayout.jl:

Community