Skip to main content

PyPI OS License: MIT CI Bindings codecov

MQT SyReC - A Programming Language for the Synthesis of Reversible Circuits

A tool for HDL-based synthesis of reversible circuits developed by the Chair for Design Automation at the Technical University of Munich and the Institute for Integrated Circuits at the Johannes Kepler University Linz. SyReC is part of the Munich Quantum Toolkit (MQT) and builds upon our quantum functionality representation (QFR).

If you have any questions, feel free to contact us via quantum.cda@xcit.tum.de or by creating an issue on GitHub.

Getting Started

SyReC is available via PyPI for Linux, macOS, and Windows.

  • In order to make the library as easy to use as possible (without compilation), we provide pre-built wheels for most common platforms (64-bit Linux, MacOS, Windows). These can be installed using
    (venv) $ pip install syrec
    
  • Once installed, start the SyReC editor GUI by running:
    (venv) $ syrec-editor
    

Reference

SyReC has been developed based on methods proposed in the following papers:

[1] Robert Wille, Majid Haghparast, Smaran Adarsh, and Tanmay M. "Towards HDL-based Synthesis of Reversible Circuits with No Additional Lines". In International Conference on Computer Aided Design (ICCAD), 2019
@inproceedings{wille2019towardsHDLsynthesis,
    author = {Wille, Robert and Haghparast, Majid and Adarsh, Smaran and M, Tanmay},
    title = {Towards HDL-based Synthesis of Reversible Circuits with No Additional Lines},
    booktitle = {International Conference on Computer Aided Design},
    year = {2019}
}

If you use our tool for your research, we would appreciate if you cited the appropriate publication.


Documentation for Developers

System requirements

Building (and running) is continuously tested under Linux, MacOS, and Windows using the latest available system versions for GitHub Actions. However, the implementation should be compatible with any current C++ compiler supporting C++17 and a minimum CMake version of 3.14.

Disclaimer: We noticed some issues when compiling with Microsoft's MSCV compiler toolchain. If you are developing under Windows, consider using the clang compiler toolchain. A detailed description of how to set this up can be found here.

Setup, Configure, and Build

To start off, clone this repository using

git clone --recurse-submodules -j8 https://github.com/cda-tum/syrec 

Note the --recurse-submodules flag. It is required to also clone all the required submodules. If you happen to forget passing the flag on your initial clone, you can initialize all the submodules by executing git submodule update --init --recursive in the main project directory.

Our projects use CMake as the main build configuration tool. Building a project using CMake is a two-stage process. First, CMake needs to be configured by calling

cmake -S . -B build -DCMAKE_BUILD_TYPE=Release

This tells CMake to search the current directory . (passed via -S) for a CMakeLists.txt file and process it into a directory build (passed via -B). The flag -DCMAKE_BUILD_TYPE=Release tells CMake to configure a Release build ( as opposed to, e.g., a Debug build).

After configuring with CMake, the project can be built by calling

 cmake --build build --config Release

This tries to build the project in the build directory (passed via --build). Some operating systems and developer environments explicitly require a configuration to be set, which is why the --config flag is also passed to the build command. The flag --parallel <NUMBER_OF_THREADS> may be added to trigger a parallel build.

Building the project this way generates

  • the main library libsyrec.a (Unix) / syrec.lib (Windows) in the build/src directory
  • a test executable syrec_test containing a small set of unit tests in the build/test directory (only if -DBUILD_SYREC_TESTS=ON is passed to CMake during configuration)

Building and Extending the Python Bindings

To extend the Python bindings you can locally install the package in edit mode, so that changes in the Python code are instantly available. The following example assumes you have a virtual environment set up and activated.

(venv) $ pip install --editable .

If you change parts of the C++ code, you have to run this command again to make the changes visible in Python.

In order for your IDE to pick up the bindings code, you might have to set the -DBINDINGS=ON CMake configuration option.

Metadata

Release files for mqt-syrec 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mqt-syrec 0.1.0
File Size Uploaded
mqt.syrec-0.1.0.tar.gz 640.3 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for mqt-syrec 0.1.0
File
mqt.syrec-0.1.0-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
mqt.syrec-0.1.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details
mqt.syrec-0.1.0-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details
mqt.syrec-0.1.0-cp310-cp310-macosx_10_15_x86_64.whl CPython 3.10 CPython 3.10 macOS 10.15+ x86-64 Details
mqt.syrec-0.1.0-cp39-cp39-win_amd64.whl CPython 3.9 CPython 3.9 Windows x86-64 Details
mqt.syrec-0.1.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
mqt.syrec-0.1.0-cp39-cp39-macosx_11_0_arm64.whl CPython 3.9 CPython 3.9 macOS 11.0+ ARM64 Details
mqt.syrec-0.1.0-cp39-cp39-macosx_10_15_x86_64.whl CPython 3.9 CPython 3.9 macOS 10.15+ x86-64 Details
mqt.syrec-0.1.0-cp38-cp38-win_amd64.whl CPython 3.8 CPython 3.8 Windows x86-64 Details
mqt.syrec-0.1.0-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.8 CPython 3.8 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
mqt.syrec-0.1.0-cp38-cp38-macosx_11_0_arm64.whl CPython 3.8 CPython 3.8 macOS 11.0+ ARM64 Details
mqt.syrec-0.1.0-cp38-cp38-macosx_10_15_x86_64.whl CPython 3.8 CPython 3.8 macOS 10.15+ x86-64 Details
mqt.syrec-0.1.0-cp37-cp37m-win_amd64.whl CPython 3.7 CPython 3.7 pymalloc Windows x86-64 Details
mqt.syrec-0.1.0-cp37-cp37m-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details
mqt.syrec-0.1.0-cp37-cp37m-macosx_10_15_x86_64.whl CPython 3.7 CPython 3.7 pymalloc macOS 10.15+ x86-64 Details

Total release size: 4.7 MB

Release files / mqt.syrec-0.1.0.tar.gz

Download URL mqt.syrec-0.1.0.tar.gz
Size 640.3 kB
Tags Source
SHA-256 checksum
How to use checksums
63169d3093f068c660210860c155efb819b2961fae1096e7ac112a23371aa0f3
BLAKE2b-256 checksum
How to use checksums
00564bd784cc4cc4fff6b40b13c8c9eaf918edb3a2aaeea6a603c6e172b4bfa9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.9.12

Release files / mqt.syrec-0.1.0-cp310-cp310-win_amd64.whl

Download URL mqt.syrec-0.1.0-cp310-cp310-win_amd64.whl
Size 280.6 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
8773e72b566b48fdbafd5dd4563060a75684babda976ca015ec9078018f00f33
BLAKE2b-256 checksum
How to use checksums
03fe105f2a218ce6467506617723ed9f87f524369e5ec35b2098d1b1d6eba3fa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.9.12

Release files / mqt.syrec-0.1.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL mqt.syrec-0.1.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 301.0 kB
Tags CPython 3.10 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
e822b12a1f52183e837c8e3e341aadb8ad42e45debc6ea0cb20b9f9b17f7bbfb
BLAKE2b-256 checksum
How to use checksums
24c5557611df3a8e2baf03be507d155c8744edb86d74b37f1f90a2b0c2ce271c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.9.12

Release files / mqt.syrec-0.1.0-cp310-cp310-macosx_11_0_arm64.whl

Download URL mqt.syrec-0.1.0-cp310-cp310-macosx_11_0_arm64.whl
Size 242.3 kB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
97bfb28db955df4ba159fa949950d8798f95d68e65d9bc77f39b82c4c904e9d5
BLAKE2b-256 checksum
How to use checksums
81eac2aa6856b157c1ce5938a064daec036f3909f87c42fba2af794793e097a6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.9.12

Release files / mqt.syrec-0.1.0-cp310-cp310-macosx_10_15_x86_64.whl

Download URL mqt.syrec-0.1.0-cp310-cp310-macosx_10_15_x86_64.whl
Size 259.9 kB
Tags CPython 3.10 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
6f9ac56817539aa3367bf3a117d74afa026a1ef3b3b925e69b21133b81795ef1
BLAKE2b-256 checksum
How to use checksums
883feb41a8ce1ad37439c9c17c67390872a440bda058c9db12e3305b826cab88
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.9.12

Release files / mqt.syrec-0.1.0-cp39-cp39-win_amd64.whl

Download URL mqt.syrec-0.1.0-cp39-cp39-win_amd64.whl
Size 280.7 kB
Tags CPython 3.9 Windows x86-64
SHA-256 checksum
How to use checksums
0d578ccd92da73493fbe138bf69a285fa05533747466aa70fc7557689bce1850
BLAKE2b-256 checksum
How to use checksums
11f4dc5d259bef1a2c29f8238115b6860e8bc1371c28133a46bd2091f73bae32
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.9.12

Release files / mqt.syrec-0.1.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL mqt.syrec-0.1.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 301.3 kB
Tags CPython 3.9 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
82fcf96df4acb465b7d4898e3b3c791bfbff57de0311fd97815707434f692048
BLAKE2b-256 checksum
How to use checksums
b058d1d07ae1120d8a555db537ee551d9561366ea7f0eafe166e1f50fd4d14db
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.9.12

Release files / mqt.syrec-0.1.0-cp39-cp39-macosx_11_0_arm64.whl

Download URL mqt.syrec-0.1.0-cp39-cp39-macosx_11_0_arm64.whl
Size 242.5 kB
Tags CPython 3.9 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
ee6a1c35471ca842b211d9fd7082dad3b9742cc2f4e53dc1c4fafa93081c9ce3
BLAKE2b-256 checksum
How to use checksums
e6353b28c3a72d90bf700d8113cf7d42a3282fae9a82a694c1c08045c6c4a732
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.9.12

Release files / mqt.syrec-0.1.0-cp39-cp39-macosx_10_15_x86_64.whl

Download URL mqt.syrec-0.1.0-cp39-cp39-macosx_10_15_x86_64.whl
Size 260.0 kB
Tags CPython 3.9 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
545cae63c91c570bd8465eb4572bbd13fa63ec6947f1bfa4ddd58a1eecb9eaf5
BLAKE2b-256 checksum
How to use checksums
4bc7635874c052f67fabb2caa6fc4ab1a844e9e2b3d61cc237c411a3da90f754
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.9.12

Release files / mqt.syrec-0.1.0-cp38-cp38-win_amd64.whl

Download URL mqt.syrec-0.1.0-cp38-cp38-win_amd64.whl
Size 280.6 kB
Tags CPython 3.8 Windows x86-64
SHA-256 checksum
How to use checksums
269058ac65ba3e6519a5b4b675a2531fd895d3665d1e9ceafce6df33a4ee189a
BLAKE2b-256 checksum
How to use checksums
afe962c8f26427111e3f8a8e8c80dc85dbf6c9bb06d502c9fac054279a30be77
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.9.12

Release files / mqt.syrec-0.1.0-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL mqt.syrec-0.1.0-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 301.1 kB
Tags CPython 3.8 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
2e37b596953296bedc03e1b587af6ce441d720823e4f633488f1faed20f756ce
BLAKE2b-256 checksum
How to use checksums
7513b2bec32c59e531532800c8c5b35569b0add14f1f3ffc6ab6ca2e45c07ba5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.9.12

Release files / mqt.syrec-0.1.0-cp38-cp38-macosx_11_0_arm64.whl

Download URL mqt.syrec-0.1.0-cp38-cp38-macosx_11_0_arm64.whl
Size 242.4 kB
Tags CPython 3.8 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
f696e95b246772ee75a0be6c28e61e9dc61e2d9781d6a9be9baf1f9c1f8e8c3e
BLAKE2b-256 checksum
How to use checksums
6d10aec4c68eb812da1425db70583de4b8cb55c8d37b48024d203616d0995ca5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.9.12

Release files / mqt.syrec-0.1.0-cp38-cp38-macosx_10_15_x86_64.whl

Download URL mqt.syrec-0.1.0-cp38-cp38-macosx_10_15_x86_64.whl
Size 260.0 kB
Tags CPython 3.8 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
ca649d185ce1850824a342e91d2270fd66d91bfc40e831cd73c93554139987d8
BLAKE2b-256 checksum
How to use checksums
9053b3930f0e9669cdcff1a8451793391b6d3f7a4cc558df3d77e04283064716
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.9.12

Release files / mqt.syrec-0.1.0-cp37-cp37m-win_amd64.whl

Download URL mqt.syrec-0.1.0-cp37-cp37m-win_amd64.whl
Size 286.8 kB
Tags CPython 3.7 CPython 3.7 pymalloc Windows x86-64
SHA-256 checksum
How to use checksums
8cfaaf6396743918ad26357f46add96152069582f66518cc30422ae2c11de685
BLAKE2b-256 checksum
How to use checksums
3cfca778c6ad048e136b318216a141305af39d824c2e8a5384c7cd3405897e1e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.9.12

Release files / mqt.syrec-0.1.0-cp37-cp37m-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL mqt.syrec-0.1.0-cp37-cp37m-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 304.8 kB
Tags CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
b7e6461cdbf83c2bbd1afef79305dcb82144f9f3e340746c5cdfdf4803e05ed3
BLAKE2b-256 checksum
How to use checksums
d73d032dac4b63dd36522f038964b140b9b9c203868183b7c4d4e48bb7f07fe3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.9.12

Release files / mqt.syrec-0.1.0-cp37-cp37m-macosx_10_15_x86_64.whl

Download URL mqt.syrec-0.1.0-cp37-cp37m-macosx_10_15_x86_64.whl
Size 257.8 kB
Tags CPython 3.7 CPython 3.7 pymalloc macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
265cc417596eea70fff23e6d9b9e0f4b0e207a5fb0cd2492964b90736531da4d
BLAKE2b-256 checksum
How to use checksums
89d0c6830a04a6697207e0d91eb9f039f2d53e18e063e4a1feb11715c7118160
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.9.12

Release history Release notifications | RSS feed

2.1.0

11 release files

2.0.0

43 release files

1.2.1

19 release files

1.1.1

26 release files

1.1.0

26 release files

1.0.1

20 release files

1.0.0

20 release files

This release

0.1.0 This release

16 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page