Skip to content

KLayout Python library for integrated quantum circuit design.

License

Notifications You must be signed in to change notification settings

jkotilahti/KQCircuits

 
 

Repository files navigation

KQCircuits

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

Continuous Integration DOI License Latest version Click for documentation

KQCircuits generates multi-layer 2-dimensional-geometry representing common structures in quantum processing units (QPU). It includes definitions of parametrized geometrical objects or “elements”, framework to easily define your own elements, framework to get geometry from the elements by setting values to parameters and a framework to assemble a full QPU design by combining many of the elements in different geometrical relations. Among other templates, are also structures to combine QPU designs to create optical mask layout and EBL patterns for fabrication of quantum circuits and export a set of files for a mask as needed for QPU fabrication.

QPU design workflow

Example layout

Getting started

KQCircuits is a KLayout extension. KLayout can be used either using a graphical user interface or as a standalone python module. KQCircuits supports both modes of operation. For the first time users, the graphical user interface (GUI) mode is recommended.

Video tutorials for the GUI installation can be found on YouTube.

Windows Ubuntu MacOS
KQCircuits Getting Started (Windows) KQCircuits Getting Started (Ubuntu) KQCircuits Getting Started (MacOS)

Install

KQCircuits can be used in either Salt package or developer setup mode. The Salt package is easier to install and try out but has some limitations. As such, advanced users are recommended to use the developer setup below.

Easy Salt package

Follow the instructions in the getting started documentation.

Developer setup

Install KLayout and run:

python setup_within_klayout.py

then KLayout will contain KQCircuits. In Windows you must run the command with administrator privileges. You may have to write python3 or py instead of python depending on your OS and Python installation, just make sure that the command refers to Python 3. For further details see the developer setup documentation.

For stand-alone mode run

python -m pip install -e "klayout_package/python[docs,tests]"

Then scripts may be run and documentation can be built. For further details see the documentation.

Documentation

Documentation for KQCircuits can be found here.

It may also be generated from the sources with make html in the docs directory.

Tutorials

Follow the User Guide for tutorials.

Example of GUI elements

Simulations

Animation of simulations

KQC currently supports exporting to Ansys HFSS/Q3D, Sonnet, and Elmer.

Parameter sweeps are easy to implement, for example

simulations = sweep_simulation(layout, sim_class, sim_parameters, {
    'cpl_length': [160, 180, 200],
    'arm_width': [24, 28, 32, 36],
})

exports simulations with the given individual parameters varied roughly as in the animation.

A sweep of all possible combinations between the given parameters is done by changing the function to cross_sweep_simulation. Check klayout_package/python/scripts/simulations for example simulation exports.

Support

If you have any questions, problems or ideas related to KQCircuits, please start a discussion in GitHub or create a GitHub issue.

Contributing

Contributions to KQC are welcome from the community. Contributors are expected to accept IQM Individual Contributor License Agreement by filling a form at IQM website. See also section Contributing in the documentation.

Citation

Please see the documentation for instructions on how to cite KQCircuits in your projects and publications.

Copyright

This code is part of KQCircuits

Copyright (C) 2021-2022 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 https://www.gnu.org/licenses/gpl-3.0.html.

The software distribution should follow IQM trademark policy for open-source software (meetiqm.com/developers/osstmpolicy). IQM welcomes contributions to the code. Please see our contribution agreements for individuals (meetiqm.com/developers/clas/individual) and organizations (meetiqm.com/developers/clas/organization).

Trademarks

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

About

KLayout Python library for integrated quantum circuit design.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 99.7%
  • Other 0.3%