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. 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 mqt.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.2.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.2.0
File Size Uploaded
mqt.syrec-0.2.0.tar.gz 1.8 MB Details

Built distributions (wheels)

Table of built distributions (wheels) for mqt-syrec 0.2.0
File
mqt.syrec-0.2.0-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
mqt.syrec-0.2.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
mqt.syrec-0.2.0-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
mqt.syrec-0.2.0-cp311-cp311-macosx_10_15_x86_64.whl CPython 3.11 CPython 3.11 macOS 10.15+ x86-64 Details
mqt.syrec-0.2.0-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
mqt.syrec-0.2.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.2.0-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details
mqt.syrec-0.2.0-cp310-cp310-macosx_10_15_x86_64.whl CPython 3.10 CPython 3.10 macOS 10.15+ x86-64 Details
mqt.syrec-0.2.0-cp39-cp39-win_amd64.whl CPython 3.9 CPython 3.9 Windows x86-64 Details
mqt.syrec-0.2.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details
mqt.syrec-0.2.0-cp39-cp39-macosx_11_0_arm64.whl CPython 3.9 CPython 3.9 macOS 11.0+ ARM64 Details
mqt.syrec-0.2.0-cp39-cp39-macosx_10_15_x86_64.whl CPython 3.9 CPython 3.9 macOS 10.15+ x86-64 Details
mqt.syrec-0.2.0-cp38-cp38-win_amd64.whl CPython 3.8 CPython 3.8 Windows x86-64 Details
mqt.syrec-0.2.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.2.0-cp38-cp38-macosx_11_0_arm64.whl CPython 3.8 CPython 3.8 macOS 11.0+ ARM64 Details
mqt.syrec-0.2.0-cp38-cp38-macosx_10_15_x86_64.whl CPython 3.8 CPython 3.8 macOS 10.15+ x86-64 Details
mqt.syrec-0.2.0-cp37-cp37m-win_amd64.whl CPython 3.7 CPython 3.7 pymalloc Windows x86-64 Details
mqt.syrec-0.2.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.2.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: 8.3 MB

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

Download URL mqt.syrec-0.2.0.tar.gz
Size 1.8 MB
Tags Source
SHA-256 checksum
How to use checksums
b7e90ad9e45ea1b3e280b2a67e08b30d3f82943e2832f00fd1163df56b892ab2
BLAKE2b-256 checksum
How to use checksums
e5377f243883b74946426b209701f1508a09c34403d958521af7153c9d2c9a4b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.13

Release files / mqt.syrec-0.2.0-cp311-cp311-win_amd64.whl

Download URL mqt.syrec-0.2.0-cp311-cp311-win_amd64.whl
Size 284.1 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
1547a5086dea5689af83e0a69fd16901f494fca77d484891d1455b243206889e
BLAKE2b-256 checksum
How to use checksums
7bae9b37aac97d232640d44ef6c75ae188d7595dc0bcfddf1fe0441302ac1039
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.13

Release files / mqt.syrec-0.2.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL mqt.syrec-0.2.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 313.7 kB
Tags CPython 3.11 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
222f6531a13dddf8aded6a1103d5d46f0ca747a1820b533733a386a9e545ce0b
BLAKE2b-256 checksum
How to use checksums
faa4754c322d370dee8c69bcd917c396ae870a20524ca3ebdab03b98f24f1842
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.13

Release files / mqt.syrec-0.2.0-cp311-cp311-macosx_11_0_arm64.whl

Download URL mqt.syrec-0.2.0-cp311-cp311-macosx_11_0_arm64.whl
Size 246.0 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
ffa78dbfcbf15fd81e6d82e70c4ad941f4873f96e58db654ba6275164617f599
BLAKE2b-256 checksum
How to use checksums
c77ad178483a2db9ffce10810331ba8ab80ae8216737da3329a41bde74749695
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.13

Release files / mqt.syrec-0.2.0-cp311-cp311-macosx_10_15_x86_64.whl

Download URL mqt.syrec-0.2.0-cp311-cp311-macosx_10_15_x86_64.whl
Size 514.4 kB
Tags CPython 3.11 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
73fdeb98794ce661c27e9bed35727e92f27cf3a5f92eed2d19381da33d595cdc
BLAKE2b-256 checksum
How to use checksums
3804d33cf0966a4ee9f5aaca4bcfbe8ab73d89cd4ea75968a2b5ad2c676250e6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.13

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

Download URL mqt.syrec-0.2.0-cp310-cp310-win_amd64.whl
Size 284.1 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
893ac4daddaf424a4555b7e5aadb7e664c8675917f6394ea6175f687095012e6
BLAKE2b-256 checksum
How to use checksums
a5e4f6dd69a67ee9cce109ce392bb2abfdff1928a7c9dac93667048de0ecae55
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.13

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

Download URL mqt.syrec-0.2.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 313.7 kB
Tags CPython 3.10 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
92eec66a2d6e5656e52b14dd393d742661492e9aa24716861c763b2d0571bb23
BLAKE2b-256 checksum
How to use checksums
d8d318ec4bcc3dafbdea5256f4745a3a1d85fe36f7723dfe41fd544b82bb3c25
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.13

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

Download URL mqt.syrec-0.2.0-cp310-cp310-macosx_11_0_arm64.whl
Size 246.1 kB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
98f4cec3f283f8b807cc2861eaa2d94dc6e785cbd8aabfd653fbc46c60e13638
BLAKE2b-256 checksum
How to use checksums
ad9f22a4d1705560b98dba2edfbf8effcf82fa2caed37aacaa5ab0c38b2becf3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.13

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

Download URL mqt.syrec-0.2.0-cp310-cp310-macosx_10_15_x86_64.whl
Size 514.4 kB
Tags CPython 3.10 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
c7f266134e703058559f08da2b9341269509b3d27f92460af638bccc2d60b918
BLAKE2b-256 checksum
How to use checksums
574c07044aef9d1b9d30c0a81671695861a2f35d95ffddffed1f1d16911dc7f0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.13

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

Download URL mqt.syrec-0.2.0-cp39-cp39-win_amd64.whl
Size 284.2 kB
Tags CPython 3.9 Windows x86-64
SHA-256 checksum
How to use checksums
4186920fdd34afcaedbddc3de265bf5184ba65584075d97cd11c40b788d2e8a4
BLAKE2b-256 checksum
How to use checksums
9a349cec79592a894e5a32224557b53e3dfe9818f5cff4f020abde6ef86167ea
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.13

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

Download URL mqt.syrec-0.2.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 314.1 kB
Tags CPython 3.9 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
d667f43823f3035f54878e896334892de04bb3d9405608fb8d49ba3a8b9d8309
BLAKE2b-256 checksum
How to use checksums
20636269ba1d7789044423b7b7350c1bcf730e56e8641a01f71b84db52e1ee09
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.13

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

Download URL mqt.syrec-0.2.0-cp39-cp39-macosx_11_0_arm64.whl
Size 246.1 kB
Tags CPython 3.9 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
c3cf78e10d3988d6545c8f1d672d1407956cd66a9ec0b521901692d9fcc739fd
BLAKE2b-256 checksum
How to use checksums
0dbdbb7652a31ab15c6f3192f6360e0c3877a7f53991144a073ecb0e486e16c8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.13

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

Download URL mqt.syrec-0.2.0-cp39-cp39-macosx_10_15_x86_64.whl
Size 514.5 kB
Tags CPython 3.9 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
0ecf60845921dd5f1737227bc290705fa84b21ccc3c4492e8a1296a624369b24
BLAKE2b-256 checksum
How to use checksums
d7a7df5d5781193c5451f96ac629391f12973a345a46938f5b5db409fd93c035
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.13

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

Download URL mqt.syrec-0.2.0-cp38-cp38-win_amd64.whl
Size 284.1 kB
Tags CPython 3.8 Windows x86-64
SHA-256 checksum
How to use checksums
142eb1559139b839a139c741b1318c4c6564b1b37a278eb3d70f7c38d99fc6f1
BLAKE2b-256 checksum
How to use checksums
92e482e97f0f06b3ee888ac3ed9d72f08b9fe6626949a47d820b3c836ad26741
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.13

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

Download URL mqt.syrec-0.2.0-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 313.7 kB
Tags CPython 3.8 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
66fa160c1699f487a62274d0656bc35603b0bb78d66f5925f1c7fdc907061db9
BLAKE2b-256 checksum
How to use checksums
5c89295893aa0293adec2dba5f8cd1bce52c4b2b8625f0cda0403b62e0542165
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.13

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

Download URL mqt.syrec-0.2.0-cp38-cp38-macosx_11_0_arm64.whl
Size 246.1 kB
Tags CPython 3.8 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
09bae6a4e86eed11dc3e2167adc44033377f7483628a0a67b07316aafdf839f3
BLAKE2b-256 checksum
How to use checksums
c8181887e36c4371eee09a20cc702e4a7242ef8f331d0506b441538cf6ac71d7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.13

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

Download URL mqt.syrec-0.2.0-cp38-cp38-macosx_10_15_x86_64.whl
Size 514.5 kB
Tags CPython 3.8 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
52a77ef094722ce32c30894a6b476e9f27a6baed1e00f0f811609b97a032f545
BLAKE2b-256 checksum
How to use checksums
639689383d4a607e6834ab480b788dfdf4460fb79ab0c2d3209bd692d14fca0b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.13

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

Download URL mqt.syrec-0.2.0-cp37-cp37m-win_amd64.whl
Size 290.0 kB
Tags CPython 3.7 CPython 3.7 pymalloc Windows x86-64
SHA-256 checksum
How to use checksums
018c0757a5f19c10ebbb069e0a00002807261921f37ad32c2c50179a348c0eec
BLAKE2b-256 checksum
How to use checksums
ac14a4e4cfe2d4f647a9844331a0f90287ce387b835da2c50b8da37164ad5af1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.13

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

Download URL mqt.syrec-0.2.0-cp37-cp37m-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 318.1 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
6ff36c890fae7c5670ae54f4461ae1f0f123fc657fd0ca79d266746e04798361
BLAKE2b-256 checksum
How to use checksums
4f1fe20947699ef02b09600b1e142f92d49ae177868357f47bf1ba5f86ecab3a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.13

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

Download URL mqt.syrec-0.2.0-cp37-cp37m-macosx_10_15_x86_64.whl
Size 512.8 kB
Tags CPython 3.7 CPython 3.7 pymalloc macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
873601b68202b6b53774959e3fe18267f33e19f2a1329be94c4434c99a8c8bbc
BLAKE2b-256 checksum
How to use checksums
0a885a8eb945c7e01e63333b30329f40ff35a6f9287863847ab06e7b081e8c54
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.13

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.2.0 This release

20 release files

0.1.0

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