Automate the design of superconducting quantum circuits.

About KQCircuits

KQCircuits is a Python library developed by the Aalto University and IQM Quantum Computers for automating the design of superconducting quantum circuits. It uses the KLayout layout design program API.

KQCircuits generates multi-layer 2-dimensional geometry representing common structures in quantum processing units (QPU). KQCircuits includes definitions of parametrized geometrical objects or “elements” and a framework to easily define your own elements. KQCircuits allows the user to get geometry from the elements under different sets of parameters and to assemble a full QPU design by combining many of the elements in different geometrical relations. The QPU designs used to create an optical mask layout are then combined with EBL patterns used for fabrication of quantum circuits. The final design is exported as a set of files for a mask as needed for QPU fabrication.

Why KQCircuits?

Quantum processor design is integral to the advancement of quantum innovation, but it is a difficult, time consuming process that involves several repetitive tasks.

Elements in KQCircuits are fully parameterised and many tasks involved with QPU design are automated, allowing the user to design multi-qubit QPUs more efficiently.

Our vision is to develop a community-driven universal platform capable of orchestrating quantum chip development from concept to fabrication in a simple and open framework.

Getting started

KQCircuits is a KLayout extension, therefore KLayout needs to be installed first. KLayout can be used either as a graphical user interface or as a standalone python module. KQCircuits supports both modes of operation.

For the first time users, we recommend installing KLayout as a graphical user interface tool. After that KQCircuits can be installed using KLayout's internal SALT package manager tool as shown here.

If GUI features in KLayout are not needed, KQCircuits can be installed using the pip tool by running: pip install kqcircuits

See KQCircuits documentation on how to perform a Developer Setup if you are interested in modifying KQCircuits code. You can send us a pull request on KQCircuits' github page if you wish to contribute to this project.


Documentation for KQCircuits can be found here.


This code is part of KQCircuits Copyright (C) 2021 IQM Finland Oy

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see

The software distribution should follow IQM trademark policy for open-source software ( IQM welcomes contributions to the code. Please see our contribution agreements for individuals ( and organizations (


KQCircuits is a registered trademark of IQM. Please see IQM open source software trademark policy.