{"id":13736305,"url":"https://github.com/iqm-finland/KQCircuits","last_synced_at":"2025-05-08T12:32:42.067Z","repository":{"id":37079924,"uuid":"286423612","full_name":"iqm-finland/KQCircuits","owner":"iqm-finland","description":"KLayout Python library for integrated quantum circuit design.","archived":false,"fork":false,"pushed_at":"2025-04-16T06:53:36.000Z","size":82605,"stargazers_count":152,"open_issues_count":13,"forks_count":74,"subscribers_count":13,"default_branch":"main","last_synced_at":"2025-04-16T07:14:57.000Z","etag":null,"topics":["eda","gds","gds2","gdsii","klayout","quantum","quantum-computing","qubits","superconducting","superconducting-qubits","unitaryhack"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/iqm-finland.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":"docs/contributing.rst","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":"docs/support.rst","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-08-10T08:49:35.000Z","updated_at":"2025-04-16T06:50:11.000Z","dependencies_parsed_at":"2024-01-29T09:53:32.377Z","dependency_job_id":"6896f3b0-0067-4b63-8402-f31b191a54b6","html_url":"https://github.com/iqm-finland/KQCircuits","commit_stats":{"total_commits":702,"total_committers":22,"mean_commits":31.90909090909091,"dds":0.8276353276353277,"last_synced_commit":"e33b4c9f59104321e7c35df26c320547b6ce3c97"},"previous_names":[],"tags_count":192,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iqm-finland%2FKQCircuits","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iqm-finland%2FKQCircuits/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iqm-finland%2FKQCircuits/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iqm-finland%2FKQCircuits/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iqm-finland","download_url":"https://codeload.github.com/iqm-finland/KQCircuits/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253068974,"owners_count":21848896,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["eda","gds","gds2","gdsii","klayout","quantum","quantum-computing","qubits","superconducting","superconducting-qubits","unitaryhack"],"created_at":"2024-08-03T03:01:19.198Z","updated_at":"2025-05-08T12:32:37.048Z","avatar_url":"https://github.com/iqm-finland.png","language":"Python","funding_links":[],"categories":["layout"],"sub_categories":[],"readme":".. image:: /docs/images/logo-small.png\n   :target: https://github.com/iqm-finland/KQCircuits\n   :alt: KQCircuits\n   :width: 300\n   :align: center\n\n**KQCircuits** is a Python library developed by IQM for automating the design of\nsuperconducting quantum circuits. It uses the `KLayout \u003chttps://klayout.de\u003e`__ layout design API.\n\n.. image:: https://github.com/iqm-finland/KQCircuits/actions/workflows/ci.yaml/badge.svg\n   :target: https://github.com/iqm-finland/KQCircuits/actions/workflows/ci.yaml\n   :alt: Continuous Integration\n\n.. image:: https://zenodo.org/badge/DOI/10.5281/zenodo.4944796.svg\n   :target: https://doi.org/10.5281/zenodo.4944796\n   :alt: DOI\n\n.. image:: https://img.shields.io/badge/License-GPLv3-blue.svg\n   :target: https://github.com/iqm-finland/kqcircuits/blob/master/LICENSE\n   :alt: License\n\n.. image:: https://img.shields.io/pypi/v/kqcircuits\n   :target: https://pypi.org/project/kqcircuits/\n   :alt: PyPI Package\n\n.. image:: https://img.shields.io/badge/click-for%20documentation%20%F0%9F%93%92-lightgrey\n   :target: https://iqm-finland.github.io/KQCircuits/index.html\n   :alt: Click for documentation\n\n.. image:: https://img.shields.io/badge/code%20style-black-000000.svg\n   :target: https://github.com/psf/black\n   :alt: Black badge\n\n----\n\nKQCircuits generates multi-layer 2-dimensional-geometry representing common structures in quantum\nprocessing units (QPU). It includes definitions of parametrized geometrical objects or “elements”,\nframework to easily define your own elements, framework to get geometry from the elements by setting\nvalues to parameters and a framework to assemble a full QPU design by combining many of the elements\nin different geometrical relations. Among other templates, are also structures to combine QPU\ndesigns to create optical mask layout and EBL patterns for fabrication of quantum circuits and\nexport a set of files for a mask as needed for QPU fabrication.\n\n.. image:: /docs/images/readme/design_flow.svg\n   :alt: QPU design workflow\n   :width: 700\n\n\n.. image:: /docs/images/readme/single_xmons_chip_3.png\n   :alt: Example layout\n\nGetting started\n---------------\n\nKQCircuits is a KLayout extension. KLayout can be used either using a graphical user interface or as\na standalone python module. For first time users, the graphical user interface (GUI) mode is recommended.\n\nTo get a first introduction to KQCircuits, follow the\n`Getting started tutorial \u003chttps://iqm-finland.github.io/KQCircuits/getting_started/index.html\u003e`__. It will show you\nhow to install and use KQCircuits in the KLayout GUI, how to create your own custom elements and chips in python code,\nand explains the basics of the KQCircuits workflow.\n\nThe following video shows some of the KQC features:\n\n.. image:: https://img.youtube.com/vi/9ra_5s2i3eU/mqdefault.jpg\n   :target: https://youtu.be/9ra_5s2i3eU\n   :alt: KQCircuits Getting Started\n\n\nInstallation (Klayout GUI)\n^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n`First install KLayout \u003chttps://iqm-finland.github.io/KQCircuits/installation/klayout.html\u003e`__.\nThen, KQCircuits can be installed in two ways:\n\n* `As a Salt package directly from KLayout  \u003chttps://iqm-finland.github.io/KQCircuits/getting_started/salt.html\u003e`__.\n  This allows you to use the KQCircuits chips and elements, and create a user package for your own custom designs.\n* Download the GIT repository, and follow the `Developer GUI setup \u003chttps://iqm-finland.github.io/KQCircuits/developer/setup.html\u003e`__.\n  Choose this if you want to modify the KQCircuits code and possibly contribute to the project.\n\nYou can always switch from Salt package to developer setup later on.\n\nInstallation as standalone python module\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n`Installing KQCircuits as a stand alone python module \u003chttps://iqm-finland.github.io/KQCircuits/developer/standalone.html\u003e`__\nallows you to use KQCircuits features in your own python code with:\n\n.. code-block:: console\n\n   import kqcircuits\n\nYou will also get access to kqc related terminal commands such as:\n\n.. code-block:: console\n\n   kqc mask quick_demo.py              # To build a wafer mask, in this case quick_demo.py\n   kqc sim waveguides_sim_compare.py   # To export and run waveguide simulation\n\nFor standalone installation run command\n\n.. code-block:: console\n\n   python -m pip install -e \"klayout_package/python[docs,tests,sim]\"\n\nFurther details available in the `documentation \u003chttps://iqm-finland.github.io/KQCircuits/developer/standalone.html\u003e`__.\n\nDocumentation\n-------------\n\nDocumentation for KQCircuits can be found `here \u003chttps://iqm-finland.github.io/KQCircuits/\u003e`__.\n\nIt may also be generated from the sources with ``make html`` in the docs directory.\n\nTutorials\n^^^^^^^^^\n\nFollow the `Getting started \u003chttps://iqm-finland.github.io/KQCircuits/getting_started/index.html\u003e`__ section for tutorials.\n\n.. image:: /docs/images/gui_workflows/converting_gui_elements_to_code.gif\n   :target: https://iqm-finland.github.io/KQCircuits/getting_started/gui_features/gui_elements_to_code.html\n   :alt: Example of GUI elements\n   :width: 600\n\nSimulations\n-----------\n\n.. image:: /docs/images/readme/xmon_animation.gif\n   :alt: Animation of simulations\n   :width: 350\n\nKQC currently supports exporting to **Ansys HFSS/Q3D (also with pyEPR)**, **Sonnet**, and **Elmer**.\n\nParameter sweeps are easy to implement, for example\n\n.. code-block:: python\n\n   simulations = sweep_simulation(layout, sim_class, sim_parameters, {\n       'cpl_length': [160, 180, 200],\n       'arm_width': [24, 28, 32, 36],\n   })\n\nexports simulations with the given individual parameters varied roughly as in the animation.\n\nA sweep of all possible combinations between the given parameters is done by changing the function to\n``cross_sweep_simulation``.\nCheck `klayout_package/python/scripts/simulations \u003chttps://github.com/iqm-finland/KQCircuits/tree/main/klayout_package/python/scripts/simulations\u003e`__\nfor example simulation exports.\n\nSupport\n-------\n\nIf you have any questions, problems or ideas related to KQCircuits, please start\na\n`discussion in GitHub \u003chttps://github.com/iqm-finland/KQCircuits/discussions\u003e`__\nor create a `GitHub issue \u003chttps://github.com/iqm-finland/KQCircuits/issues\u003e`__.\n\nContributing\n------------\n\nContributions to KQC are welcome from the community. Contributors are expected to accept IQM\nIndividual Contributor License Agreement by filling `a form at IQM website\n\u003chttps://www.meetiqm.com/technology/iqm-kqcircuits#iqm-contributor-license-agreement\u003e`__.\nSee also section `Contributing\n\u003chttps://iqm-finland.github.io/KQCircuits/contributing.html\u003e`__ in the\ndocumentation.\n\nCitation\n--------\nPlease see the\n`documentation \u003chttps://iqm-finland.github.io/KQCircuits/citing.html\u003e`__\nfor instructions on how to cite KQCircuits in your projects and publications.\n\nCopyright\n---------\n\nThis code is part of KQCircuits\n\nCopyright (C) 2021-2024 IQM Finland Oy\n\nThis program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public\nLicense as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later\nversion.\n\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied\nwarranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License along with this program. If not, see\nhttps://www.gnu.org/licenses/gpl-3.0.html.\n\nThe software distribution should follow IQM trademark policy for open-source software\n(`meetiqm.com/iqm-open-source-trademark-policy \u003chttps://meetiqm.com/iqm-open-source-trademark-policy/\u003e`__).\nIQM welcomes contributions to the code. Please see our contribution agreements for individuals\n(`meetiqm.com/iqm-individual-contributor-license-agreement \u003chttps://meetiqm.com/iqm-individual-contributor-license-agreement/\u003e`__)\nand organizations (`meetiqm.com/iqm-organization-contributor-license-agreement \u003chttps://meetiqm.com/iqm-organization-contributor-license-agreement/\u003e`__).\n\nTrademarks\n----------\n\nKQCircuits is a registered trademark of IQM. Please see\n`IQM open source software trademark policy \u003chttps://meetiqm.com/iqm-open-source-trademark-policy\u003e`__.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiqm-finland%2FKQCircuits","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fiqm-finland%2FKQCircuits","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiqm-finland%2FKQCircuits/lists"}