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 filesWe 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:
- 17-qubit quantum processor: A complete multi-qubit device layout
- Single transmon simulation: End-to-end design optimization workflow with Palace
- Example PDK: PDK used to create the examples