mnt.pyfiction


Namemnt.pyfiction JSON
Version 0.6.5 PyPI version JSON
download
home_pagehttps://www.cda.cit.tum.de/research/fcn/
SummaryDesign Automation for Field-coupled Nanotechnologies
upload_time2024-10-22 22:44:17
maintainerNone
docs_urlNone
authorMarcel Walter
requires_python>=3.8
licenseCopyright 2018-2023 Marcel Walter Copyright 2023-present, Chair for Design Automation, Technical University of Munich Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
keywords mnt fiction nanotechnology fcn qca nml sidb design automation placement routing clocking simulation
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # *fiction* – Design Automation for Field-coupled Nanotechnologies

[![Ubuntu CI](https://img.shields.io/github/actions/workflow/status/cda-tum/fiction/ubuntu.yml?label=Ubuntu&logo=ubuntu&style=flat-square)](https://github.com/cda-tum/fiction/actions/workflows/ubuntu.yml)
[![macOS CI](https://img.shields.io/github/actions/workflow/status/cda-tum/fiction/macos.yml?label=macOS&logo=apple&style=flat-square)](https://github.com/cda-tum/fiction/actions/workflows/macos.yml)
[![Windows CI](https://img.shields.io/github/actions/workflow/status/cda-tum/fiction/windows.yml?label=Windows&logo=windows&style=flat-square)](https://github.com/cda-tum/fiction/actions/workflows/windows.yml)
[![Python Bindings](https://img.shields.io/github/actions/workflow/status/cda-tum/fiction/python-bindings.yml?label=Bindings&logo=python&style=flat-square)](https://github.com/cda-tum/fiction/actions/workflows/python-bindings.yml)
[![Docker Image](https://img.shields.io/github/actions/workflow/status/cda-tum/fiction/docker-image.yml?label=Docker&logo=docker&style=flat-square)](https://github.com/cda-tum/fiction/actions/workflows/docker-image.yml)
[![CodeQL](https://img.shields.io/github/actions/workflow/status/cda-tum/fiction/codeql-analysis.yml?label=CodeQL&logo=github&style=flat-square)](https://github.com/cda-tum/fiction/actions/workflows/codeql-analysis.yml)
[![Documentation Status](https://img.shields.io/readthedocs/fiction?label=Docs&logo=readthedocs&style=flat-square)](https://fiction.readthedocs.io/)
[![codecov](https://img.shields.io/codecov/c/github/cda-tum/fiction?label=Coverage&logo=codecov&style=flat-square)](https://codecov.io/gh/cda-tum/fiction)
[![License](https://img.shields.io/github/license/cda-tum/fiction?label=License&style=flat-square)](https://github.com/cda-tum/fiction/blob/main/LICENSE.txt)
[![PyPI](https://img.shields.io/static/v1?label=PyPI&message=mnt.pyfiction&logo=pypi&color=informational&style=flat-square)](https://pypi.org/project/mnt.pyfiction/)
[![Release](https://img.shields.io/github/v/release/cda-tum/fiction?label=fiction&style=flat-square)](https://github.com/cda-tum/fiction/releases)
[![arXiv](https://img.shields.io/static/v1?label=arXiv&message=1905.02477&color=informational&style=flat-square)](https://arxiv.org/abs/1905.02477)

<p align="center">
  <picture>
    <source media="(prefers-color-scheme: dark)" srcset="docs/_static/mnt_light.svg" width="60%">
    <img src="https://raw.githubusercontent.com/cda-tum/fiction/main/docs/_static/mnt_dark.svg" width="60%">
  </picture>
</p>

This code base provides a C++17 framework for **fi**eld-**c**oupled **t**echnology-**i**ndependent **o**pen
**n**anocomputing developed as part of the _Munich Nanotech Toolkit_ (_MNT_) by the
[Chair for Design Automation](https://www.cda.cit.tum.de/) at the [Technical University of Munich](https://www.tum.de/).
Within *fiction*, algorithms for logic synthesis, placement, routing, clocking, verification, and simulation for
[Field-coupled Nanocomputing (FCN)](https://www.springer.com/de/book/9783662437216) technologies are implemented.

To this end, most physical design tasks can be performed on generic data structures that abstract from particular
technology or cell design. Using an extensible set of gate libraries, technologies, and cell types, these can easily
be compiled down to any desired FCN technology for physical simulation.

For these use cases, *fiction* provides
a [C++ header-only library](https://fiction.readthedocs.io/en/latest/getting_started.html#using-fiction-as-a-header-only-library)
as well as [Python bindings](https://fiction.readthedocs.io/en/latest/getting_started.html#python-bindings)
that provide data types and algorithms for recurring tasks, e.g., logic network and layout types on different
abstraction levels, clocking schemes, gate libraries, design automation algorithms, etc. Additionally, *fiction* comes
with an ABC-like
[CLI tool](https://fiction.readthedocs.io/en/latest/getting_started.html#using-fiction-as-a-stand-alone-cli-tool)
that allows quick access to its core functionality.


<p align="center">
  <a href="https://fiction.readthedocs.io/en/latest/">
  <img width=30% src="https://img.shields.io/badge/documentation-blue?style=for-the-badge&logo=read%20the%20docs" alt="Documentation" />
  </a>
</p>

If you have any questions, feel free to contact us via [nanotech.cda@xcit.tum.de](mailto:nanotech.cda@xcit.tum.de) or by
creating an [issue on GitHub](https://github.com/cda-tum/fiction/issues).

## Quick Start (C++)

> Clone the repository and its submodules:

```bash
git clone --recursive https://github.com/cda-tum/fiction.git
```

### The CLI

> Inside the newly cloned `fiction` folder, trigger the build process:

```bash
cmake . -B build
cd build
cmake --build . -j4
```

> Run the CLI tool:

```bash
cli/fiction
```

> Here is an example of running *fiction* to perform a full physical design flow on a QCA circuit layout that can
> afterward be simulated in QCADesigner:

![CLI example](https://raw.githubusercontent.com/cda-tum/fiction/main/docs/_static/fiction_cli_example.gif)

### The Header-only Library

> Add `fiction` as a sub-directory to your CMake project and link against `libfiction` (assuming your project is
> called `fanfiction`):

```CMake
add_subdirectory(fiction/)
target_link_libraries(fanfiction libfiction)
```

> Include the headers you need:

```C++
#include <fiction/layouts/cell_level_layout.hpp>
#include <fiction/layouts/clocking_scheme.hpp>
#include <fiction/technology/qca_one_library.hpp>
#include <fiction/io/write_qca_layout.hpp>
#include <fiction/...>
```

## Quick Start (Python)

> Install the Python bindings from [PyPI](https://pypi.org/project/mnt.pyfiction/):

```bash
pip install mnt.pyfiction
```

> Import the bindings:

```python
from mnt import pyfiction
```

For a full getting started guide, please refer to
the [documentation](https://fiction.readthedocs.io/en/latest/getting_started.html).

## Supported Technologies

Physical design in *fiction* can be performed technology-independent. Only if resulted layouts are to be physically,
simulated, a specific technology implementation is required. To this end, *fiction* supports various potential FCN
implementations together with gate libraries to compile gate-level layout abstractions down to the cell level.
Additionally, output formats for external physical simulator engines are also supported.

### Quantum-dot Cellular Automata (QCA)

<img src="https://raw.githubusercontent.com/cda-tum/fiction/main/docs/_static/qca_cells.png" alt="QCA cells" align="right" height="70"/>

Gate libraries:

- [QCA ONE](https://ieeexplore.ieee.org/document/7538997/)

File formats:

- `*.qca` for [QCADesigner](https://waluslab.ece.ubc.ca/qcadesigner/)
- `*.qll` for [MagCAD](https://topolinano.polito.it/) and [SCERPA](https://ieeexplore.ieee.org/document/8935211)
- `*.fqca` for [QCA-STACK](https://github.com/wlambooy/QCA-STACK)
- `*.svg` for visual representation

Many thanks to Frank Sill Torres for his support with the QCADesigner format, to Willem Lambooy for his support with the
QCA-STACK format, and to Sophia Kuhn for implementing the SVG writer!

### in-plane Nanomagnet Logic (iNML)

<img src="https://raw.githubusercontent.com/cda-tum/fiction/main/docs/_static/nml_cells.png" alt="iNML cells" align="right" height="70"/>

Gate libraries:

- [ToPoliNano](https://topolinano.polito.it/supported-technologies/)

File formats:

- `*.qcc` for [ToPoliNano](https://topolinano.polito.it/)
- `*.qll` for [ToPoliNano & MagCAD](https://topolinano.polito.it/)

Many thanks to Umberto Garlando, Fabrizio Riente, and Giuliana Beretta for their support!

### Silicon Dangling Bonds (SiDBs)

<img src="https://raw.githubusercontent.com/cda-tum/fiction/main/docs/_static/sidb_cells.png" alt="SiDB cells" align="right" height="70"/>

Gate libraries:

- [Bestagon](https://dl.acm.org/doi/10.1145/3489517.3530525)

File formats:

- `*.sqd` for [SiQAD](https://github.com/siqad/siqad)

Many thanks to Samuel Sze Hang Ng for his support!

## Implemented Design Automation Algorithms

The *fiction* framework provides implementations of state-of-the-art design automation algorithms for FCN technologies.
These algorithms can be used in evaluation scripts to perform logic synthesis, physical design, layout verification, and
physical simulation.

### Logic Synthesis

For logic synthesis, *fiction* relies on the [mockturtle library](https://github.com/lsils/mockturtle) that offers a
multitude of logic network types and optimization algorithms. Logic synthesis can be performed in external tools and
resulting Verilog/AIGER/BLIF/... files can be parsed by *fiction*. Alternatively, since *mockturtle* is included in
*fiction*, synthesis can be applied in the same evaluation script.

### Physical Design

For automatic FCN layout obtainment, *fiction* provides algorithms that
receive [mockturtle logic networks](https://mockturtle.readthedocs.io/en/latest/implementations.html) as input
specification and output placed, routed, and clocked generic FCN circuits.

<img src="https://raw.githubusercontent.com/cda-tum/fiction/main/docs/_static/compare1.png" alt="QCA Layout" align="right" width="280"/>

Among these algorithms are

- SMT-based [exact placement and routing](https://ieeexplore.ieee.org/document/8342060)
- OGD-based [scalable placement and routing](https://dl.acm.org/citation.cfm?id=3287705)
- SAT-based [one-pass synthesis](https://ieeexplore.ieee.org/document/9371573)
- SAT-based [multi-path routing](https://dl.acm.org/doi/10.1145/3565478.3572539)
- Graph-oriented [layout design](https://www.cda.cit.tum.de/files/eda/2024_ieee_nano_a_star_is_born.pdf)

plus several path-finding algorithms that work on generic layouts:

- shortest path via the [A* algorithm](https://ieeexplore.ieee.org/document/4082128)
- *k* shortest paths via [Yen's algorithm](https://www.ams.org/journals/qam/1970-27-04/S0033-569X-1970-0253822-7/)

On top, there is a [hexagonalization algorithm](https://ieeexplore.ieee.org/document/10231278) to transform Cartesian
layouts suitable for QCA into hexagonal layouts suitable for SiDBs,
and multiple algorithms to optimize gate-level layouts post-placement:

- [post-layout optimzation](https://dl.acm.org/doi/10.1145/3611315.3633247)
- [wiring reduction](https://www.cda.cit.tum.de/files/eda/2024_dac_wiring_reduction_for_field-coupled_nanotechnologies.pdf)

### Verification

Layout correctness can be [validated](https://fiction.readthedocs.io/en/latest/algorithms/algorithms.html#verification)
using

- [Design Rule Violation (DRV)](https://fiction.readthedocs.io/en/latest/algorithms/verification.html#design-rule-violations-drvs)
  checking
- SAT-based [formal verification](https://ieeexplore.ieee.org/document/9218641) (equivalence checking)

### Physical Simulation

<img src="https://raw.githubusercontent.com/cda-tum/fiction/main/docs/_static/sidb_simulation.png" alt="SiDB simulation result" align="right" width="270"/>

When a layout is compiled to the cell level via the application of a technology-dependent gate library, it can be
simulated using a physical model. Currently, the following simulation algorithms are implemented in *fiction*:

- Silicon Dangling Bonds (SiDBs)
    - Electrostatic Ground State Simulation
        - [*QuickExact*](https://arxiv.org/abs/2308.04487)
        - [*QuickSim*](https://ieeexplore.ieee.org/document/10231266)
        - [Exhaustive *(ExGS)*](https://open.library.ubc.ca/soa/cIRcle/collections/ubctheses/24/items/1.0392909)
    - [Critical Temperature Simulation](https://ieeexplore.ieee.org/document/10231259)
    - [Operational Domain Computation](https://www.cda.cit.tum.de/files/eda/2023_nanoarch_reducing_the_complexity_of_operational_domain_computation_in_silicon_dangling_bond_logic.pdf)

## Clocking Schemes

Regular clocking schemes have been proposed in the FCN literature, which can be used as a floor plans for physical
design. However, sometimes it can make sense to have more freedom and assign clock numbers on the fly. That is
why *fiction* supports both
[regular and irregular clocking schemes](https://fiction.readthedocs.io/en/latest/layouts/clocking_scheme.html)
with variable amounts of clock numbers as QCA for instance uses four clock phases but iNML needs only three.

Built-in schemes are

|                                  [Columnar](https://ieeexplore.ieee.org/document/573740)                                  |                               [Row](https://ieeexplore.ieee.org/document/573740)                                |                                 [2DDWave](https://ieeexplore.ieee.org/document/1717097)                                 |
|:-------------------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------------------------------------------------------------:|:-----------------------------------------------------------------------------------------------------------------------:|
| <img src="https://raw.githubusercontent.com/cda-tum/fiction/main/docs/_static/columnar.png" alt="Columnar" height="200"/> | <img src="https://raw.githubusercontent.com/cda-tum/fiction/main/docs/_static/row.png" alt="Row" height="200"/> | <img src="https://raw.githubusercontent.com/cda-tum/fiction/main/docs/_static/2ddwave.png" alt="2DDWave" height="200"/> |

|                               [USE](https://ieeexplore.ieee.org/document/7219390)                               |                    [RES](https://www.tandfonline.com/doi/abs/10.1080/21681724.2019.1570551)                     |                   [ESR](https://link.springer.com/content/pdf/10.1007/s10470-020-01760-4.pdf)                   |
|:---------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------------------------------------------------------------:|
| <img src="https://raw.githubusercontent.com/cda-tum/fiction/main/docs/_static/use.png" alt="USE" height="200"/> | <img src="https://raw.githubusercontent.com/cda-tum/fiction/main/docs/_static/res.png" alt="RES" height="200"/> | <img src="https://raw.githubusercontent.com/cda-tum/fiction/main/docs/_static/esr.png" alt="ESR" height="200"/> |

|                [CFE](https://ietresearch.onlinelibrary.wiley.com/doi/10.1049/iet-cds.2019.0096)                 |     [Ripple](https://scholarworks.rit.edu/cgi/viewcontent.cgi?referer=&httpsredir=1&article=8266&context=theses)      |                                [BANCS](https://ieeexplore.ieee.org/document/8533251)                                |
|:---------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------------------------------------------------------------------:|:-------------------------------------------------------------------------------------------------------------------:|
| <img src="https://raw.githubusercontent.com/cda-tum/fiction/main/docs/_static/cfe.png" alt="CFE" height="200"/> | <img src="https://raw.githubusercontent.com/cda-tum/fiction/main/docs/_static/ripple.png" alt="Ripple" height="200"/> | <img src="https://raw.githubusercontent.com/cda-tum/fiction/main/docs/_static/bancs.png" alt="BANCS" height="300"/> |

plus the mentioned irregular open clocking that works via a clock map instead of a regular extrapolated cutout.

## Wire Crossings

<img src="https://raw.githubusercontent.com/cda-tum/fiction/main/docs/_static/cross.png" alt="Second layer crossing" align="left" width="200"/>

With many FCN technologies considered planar, wire crossings should be minimized if possible. However, there are some
options in QCA where, using a second layer, crossings over short distances and co-planar rotated cells become possible.
As both are just technical implementations of the same concept, *fiction* supports crossings as wires in a second grid
layer in its data structures for all FCN technologies. They will also be represented as such in corresponding SVG and
QCADesigner output. However, note that it is to be interpreted as the concept of crossings and could also be realized
co-planar.

Wires are only allowed to cross other wires! Wires crossing gates is considered to lead to unstable signals.

## Gate Pins vs. Designated I/Os

<img src="https://raw.githubusercontent.com/cda-tum/fiction/main/docs/_static/io.png" alt="Input pin and cell output" align="right" width="200"/>

In the literature, both are seen: having input cells (pins) directly located in the gate structure or using designated
I/O elements that are located outside of gates. This distinction only makes sense on the gate level and *fiction*
supports both approaches and offers usage in the implemented physical design algorithms.

## Multi Wires

<img src="https://raw.githubusercontent.com/cda-tum/fiction/main/docs/_static/multi.png" alt="Multi wires" align="left" width="200"/>

Gate-level abstraction has its limits. Often, chip area is wasted when only using a single wire per tile. In *fiction*,
cell-level layouts allow for precise control over cell placement and can, thus, also create multiple wire segments per
clock zone. Physical simulation can give an indication of whether the built structures are implementing the intended
functionality.

## Synchronization Elements

<img src="https://raw.githubusercontent.com/cda-tum/fiction/main/docs/_static/se.png" alt="Synchronization element" align="right" width="150"/>

A technology extension proposes to utilize the external clock signal generator in an unconventional way: by creating
further asymmetric clock signals with extended *Hold* phases that are assigned to specific wire
tiles, [synchronization elements](https://ieeexplore.ieee.org/document/8626294) can be created that stall signals over
multiple clock cycles. These artificial latches are able to feed information to any other clock number, but their usage
reduces the overall throughput of the layout. In return, long wire detours for signal synchronization can be prevented.

## Cost Metrics

Designed layouts can be evaluated with regard to several cost functions. The following metrics are currently
implemented:

Gate-level layouts:

- Circuit dimension in tiles
- Number of gate tiles
- Number of wire tiles
- Number of wire crossings
- Number of [synchronization elements](#synchronization-elements)
- Critical path
- Throughput
- Bounding box
- Energy dissipation based on a [physical model](https://ieeexplore.ieee.org/document/8246526) (QCA only)

Cell-level layouts:

- Circuit dimension in cells
- Number of cells
- Bounding box
- Area usage in nm²

## Benchmark Library

To objectively evaluate and compare software and design automation
tools, [MNT Bench](https://www.cda.cit.tum.de/mntbench/) provides gate-level
layouts for various gate libraries and clocking schemes, generated using the latest physical design and
optimization algorithms, with *fiction* offering the corresponding read and write utilities to generate gate-level
layouts from gate-level layout files (``.fgl``) and vice versa.

Additionally, the [benchmarks](https://github.com/cda-tum/fiction/tree/main/benchmarks) folder contains the function
descriptions of frequently used benchmark sets in Verilog format (``.v``) provided
by [MNT Bench](https://www.cda.cit.tum.de/mntbench/).

## Reference

Since *fiction* is academic software, we would be thankful if you referred to it by citing the following publications:

```bibtex
@misc{fiction,
      author = {Walter, Marcel and Wille, Robert and Sill Torres, Frank and Gro{\ss}e, Daniel and Drechsler, Rolf},
      title = {{fiction: An Open Source Framework for the Design of Field-coupled Nanocomputing Circuits}},
      archivePrefix = {arXiv},
      eprint = {1905.02477},
      note = {arXiv:1905.02477},
      year = {2019},
      month = {May}
}
```

and

```bibtex
@inproceedings{mnt,
    author = {Walter, Marcel and Drewniok, Jan and Hofmann, Simon and Hien, Benjamin and Wille, Robert},
    title = {{The Munich Nanotech Toolkit (MNT)}},
    booktitle = {IEEE International Conference on Nanotechnology (IEEE NANO)},
    pages = {454--459},
    year = {2024}
}
```

Additionally, many algorithms implemented in *fiction* have been published individually. For a full list of
publications, please refer to the [documentation](https://fiction.readthedocs.io/en/latest/publications.html).

## Acknowledgements

The Munich Nanotech Toolkit has been supported by the Bavarian State Ministry for Science and Arts through the
Distinguished Professorship Program.

<p align="center">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/cda-tum/mqt/main/docs/_static/tum_dark.svg" width="28%">
<img src="https://raw.githubusercontent.com/cda-tum/mqt/main/docs/_static/tum_light.svg" width="28%" alt="TUM Logo">
</picture>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <!-- Non-breaking spaces for spacing -->
<picture>
<img src="https://raw.githubusercontent.com/cda-tum/mqt/main/docs/_static/logo-bavaria.svg" width="16%" alt="Coat of Arms of Bavaria">
</picture>
</p>

            

Raw data

            {
    "_id": null,
    "home_page": "https://www.cda.cit.tum.de/research/fcn/",
    "name": "mnt.pyfiction",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "MNT, fiction, nanotechnology, FCN, QCA, NML, SiDB, design automation, placement, routing, clocking, simulation",
    "author": "Marcel Walter",
    "author_email": "Marcel Walter <marcel.walter@tum.de>, Jan Drewniok <jan.drewniok@tum.de>, Simon Hofmann <simon.t.hofmann@tum.de>, Benjamin Hien <benjamin.hien@tum.de>",
    "download_url": "https://files.pythonhosted.org/packages/65/32/92b77f4f50433deaba629eb9a0b4be409df0b5f1e061c066184a05e6be14/mnt_pyfiction-0.6.5.tar.gz",
    "platform": null,
    "description": "# *fiction* &ndash; Design Automation for Field-coupled Nanotechnologies\n\n[![Ubuntu CI](https://img.shields.io/github/actions/workflow/status/cda-tum/fiction/ubuntu.yml?label=Ubuntu&logo=ubuntu&style=flat-square)](https://github.com/cda-tum/fiction/actions/workflows/ubuntu.yml)\n[![macOS CI](https://img.shields.io/github/actions/workflow/status/cda-tum/fiction/macos.yml?label=macOS&logo=apple&style=flat-square)](https://github.com/cda-tum/fiction/actions/workflows/macos.yml)\n[![Windows CI](https://img.shields.io/github/actions/workflow/status/cda-tum/fiction/windows.yml?label=Windows&logo=windows&style=flat-square)](https://github.com/cda-tum/fiction/actions/workflows/windows.yml)\n[![Python Bindings](https://img.shields.io/github/actions/workflow/status/cda-tum/fiction/python-bindings.yml?label=Bindings&logo=python&style=flat-square)](https://github.com/cda-tum/fiction/actions/workflows/python-bindings.yml)\n[![Docker Image](https://img.shields.io/github/actions/workflow/status/cda-tum/fiction/docker-image.yml?label=Docker&logo=docker&style=flat-square)](https://github.com/cda-tum/fiction/actions/workflows/docker-image.yml)\n[![CodeQL](https://img.shields.io/github/actions/workflow/status/cda-tum/fiction/codeql-analysis.yml?label=CodeQL&logo=github&style=flat-square)](https://github.com/cda-tum/fiction/actions/workflows/codeql-analysis.yml)\n[![Documentation Status](https://img.shields.io/readthedocs/fiction?label=Docs&logo=readthedocs&style=flat-square)](https://fiction.readthedocs.io/)\n[![codecov](https://img.shields.io/codecov/c/github/cda-tum/fiction?label=Coverage&logo=codecov&style=flat-square)](https://codecov.io/gh/cda-tum/fiction)\n[![License](https://img.shields.io/github/license/cda-tum/fiction?label=License&style=flat-square)](https://github.com/cda-tum/fiction/blob/main/LICENSE.txt)\n[![PyPI](https://img.shields.io/static/v1?label=PyPI&message=mnt.pyfiction&logo=pypi&color=informational&style=flat-square)](https://pypi.org/project/mnt.pyfiction/)\n[![Release](https://img.shields.io/github/v/release/cda-tum/fiction?label=fiction&style=flat-square)](https://github.com/cda-tum/fiction/releases)\n[![arXiv](https://img.shields.io/static/v1?label=arXiv&message=1905.02477&color=informational&style=flat-square)](https://arxiv.org/abs/1905.02477)\n\n<p align=\"center\">\n  <picture>\n    <source media=\"(prefers-color-scheme: dark)\" srcset=\"docs/_static/mnt_light.svg\" width=\"60%\">\n    <img src=\"https://raw.githubusercontent.com/cda-tum/fiction/main/docs/_static/mnt_dark.svg\" width=\"60%\">\n  </picture>\n</p>\n\nThis code base provides a C++17 framework for **fi**eld-**c**oupled **t**echnology-**i**ndependent **o**pen\n**n**anocomputing developed as part of the _Munich Nanotech Toolkit_ (_MNT_) by the\n[Chair for Design Automation](https://www.cda.cit.tum.de/) at the [Technical University of Munich](https://www.tum.de/).\nWithin *fiction*, algorithms for logic synthesis, placement, routing, clocking, verification, and simulation for\n[Field-coupled Nanocomputing (FCN)](https://www.springer.com/de/book/9783662437216) technologies are implemented.\n\nTo this end, most physical design tasks can be performed on generic data structures that abstract from particular\ntechnology or cell design. Using an extensible set of gate libraries, technologies, and cell types, these can easily\nbe compiled down to any desired FCN technology for physical simulation.\n\nFor these use cases, *fiction* provides\na [C++ header-only library](https://fiction.readthedocs.io/en/latest/getting_started.html#using-fiction-as-a-header-only-library)\nas well as [Python bindings](https://fiction.readthedocs.io/en/latest/getting_started.html#python-bindings)\nthat provide data types and algorithms for recurring tasks, e.g., logic network and layout types on different\nabstraction levels, clocking schemes, gate libraries, design automation algorithms, etc. Additionally, *fiction* comes\nwith an ABC-like\n[CLI tool](https://fiction.readthedocs.io/en/latest/getting_started.html#using-fiction-as-a-stand-alone-cli-tool)\nthat allows quick access to its core functionality.\n\n\n<p align=\"center\">\n  <a href=\"https://fiction.readthedocs.io/en/latest/\">\n  <img width=30% src=\"https://img.shields.io/badge/documentation-blue?style=for-the-badge&logo=read%20the%20docs\" alt=\"Documentation\" />\n  </a>\n</p>\n\nIf you have any questions, feel free to contact us via [nanotech.cda@xcit.tum.de](mailto:nanotech.cda@xcit.tum.de) or by\ncreating an [issue on GitHub](https://github.com/cda-tum/fiction/issues).\n\n## Quick Start (C++)\n\n> Clone the repository and its submodules:\n\n```bash\ngit clone --recursive https://github.com/cda-tum/fiction.git\n```\n\n### The CLI\n\n> Inside the newly cloned `fiction` folder, trigger the build process:\n\n```bash\ncmake . -B build\ncd build\ncmake --build . -j4\n```\n\n> Run the CLI tool:\n\n```bash\ncli/fiction\n```\n\n> Here is an example of running *fiction* to perform a full physical design flow on a QCA circuit layout that can\n> afterward be simulated in QCADesigner:\n\n![CLI example](https://raw.githubusercontent.com/cda-tum/fiction/main/docs/_static/fiction_cli_example.gif)\n\n### The Header-only Library\n\n> Add `fiction` as a sub-directory to your CMake project and link against `libfiction` (assuming your project is\n> called `fanfiction`):\n\n```CMake\nadd_subdirectory(fiction/)\ntarget_link_libraries(fanfiction libfiction)\n```\n\n> Include the headers you need:\n\n```C++\n#include <fiction/layouts/cell_level_layout.hpp>\n#include <fiction/layouts/clocking_scheme.hpp>\n#include <fiction/technology/qca_one_library.hpp>\n#include <fiction/io/write_qca_layout.hpp>\n#include <fiction/...>\n```\n\n## Quick Start (Python)\n\n> Install the Python bindings from [PyPI](https://pypi.org/project/mnt.pyfiction/):\n\n```bash\npip install mnt.pyfiction\n```\n\n> Import the bindings:\n\n```python\nfrom mnt import pyfiction\n```\n\nFor a full getting started guide, please refer to\nthe [documentation](https://fiction.readthedocs.io/en/latest/getting_started.html).\n\n## Supported Technologies\n\nPhysical design in *fiction* can be performed technology-independent. Only if resulted layouts are to be physically,\nsimulated, a specific technology implementation is required. To this end, *fiction* supports various potential FCN\nimplementations together with gate libraries to compile gate-level layout abstractions down to the cell level.\nAdditionally, output formats for external physical simulator engines are also supported.\n\n### Quantum-dot Cellular Automata (QCA)\n\n<img src=\"https://raw.githubusercontent.com/cda-tum/fiction/main/docs/_static/qca_cells.png\" alt=\"QCA cells\" align=\"right\" height=\"70\"/>\n\nGate libraries:\n\n- [QCA ONE](https://ieeexplore.ieee.org/document/7538997/)\n\nFile formats:\n\n- `*.qca` for [QCADesigner](https://waluslab.ece.ubc.ca/qcadesigner/)\n- `*.qll` for [MagCAD](https://topolinano.polito.it/) and [SCERPA](https://ieeexplore.ieee.org/document/8935211)\n- `*.fqca` for [QCA-STACK](https://github.com/wlambooy/QCA-STACK)\n- `*.svg` for visual representation\n\nMany thanks to Frank Sill Torres for his support with the QCADesigner format, to Willem Lambooy for his support with the\nQCA-STACK format, and to Sophia Kuhn for implementing the SVG writer!\n\n### in-plane Nanomagnet Logic (iNML)\n\n<img src=\"https://raw.githubusercontent.com/cda-tum/fiction/main/docs/_static/nml_cells.png\" alt=\"iNML cells\" align=\"right\" height=\"70\"/>\n\nGate libraries:\n\n- [ToPoliNano](https://topolinano.polito.it/supported-technologies/)\n\nFile formats:\n\n- `*.qcc` for [ToPoliNano](https://topolinano.polito.it/)\n- `*.qll` for [ToPoliNano & MagCAD](https://topolinano.polito.it/)\n\nMany thanks to Umberto Garlando, Fabrizio Riente, and Giuliana Beretta for their support!\n\n### Silicon Dangling Bonds (SiDBs)\n\n<img src=\"https://raw.githubusercontent.com/cda-tum/fiction/main/docs/_static/sidb_cells.png\" alt=\"SiDB cells\" align=\"right\" height=\"70\"/>\n\nGate libraries:\n\n- [Bestagon](https://dl.acm.org/doi/10.1145/3489517.3530525)\n\nFile formats:\n\n- `*.sqd` for [SiQAD](https://github.com/siqad/siqad)\n\nMany thanks to Samuel Sze Hang Ng for his support!\n\n## Implemented Design Automation Algorithms\n\nThe *fiction* framework provides implementations of state-of-the-art design automation algorithms for FCN technologies.\nThese algorithms can be used in evaluation scripts to perform logic synthesis, physical design, layout verification, and\nphysical simulation.\n\n### Logic Synthesis\n\nFor logic synthesis, *fiction* relies on the [mockturtle library](https://github.com/lsils/mockturtle) that offers a\nmultitude of logic network types and optimization algorithms. Logic synthesis can be performed in external tools and\nresulting Verilog/AIGER/BLIF/... files can be parsed by *fiction*. Alternatively, since *mockturtle* is included in\n*fiction*, synthesis can be applied in the same evaluation script.\n\n### Physical Design\n\nFor automatic FCN layout obtainment, *fiction* provides algorithms that\nreceive [mockturtle logic networks](https://mockturtle.readthedocs.io/en/latest/implementations.html) as input\nspecification and output placed, routed, and clocked generic FCN circuits.\n\n<img src=\"https://raw.githubusercontent.com/cda-tum/fiction/main/docs/_static/compare1.png\" alt=\"QCA Layout\" align=\"right\" width=\"280\"/>\n\nAmong these algorithms are\n\n- SMT-based [exact placement and routing](https://ieeexplore.ieee.org/document/8342060)\n- OGD-based [scalable placement and routing](https://dl.acm.org/citation.cfm?id=3287705)\n- SAT-based [one-pass synthesis](https://ieeexplore.ieee.org/document/9371573)\n- SAT-based [multi-path routing](https://dl.acm.org/doi/10.1145/3565478.3572539)\n- Graph-oriented [layout design](https://www.cda.cit.tum.de/files/eda/2024_ieee_nano_a_star_is_born.pdf)\n\nplus several path-finding algorithms that work on generic layouts:\n\n- shortest path via the [A* algorithm](https://ieeexplore.ieee.org/document/4082128)\n- *k* shortest paths via [Yen's algorithm](https://www.ams.org/journals/qam/1970-27-04/S0033-569X-1970-0253822-7/)\n\nOn top, there is a [hexagonalization algorithm](https://ieeexplore.ieee.org/document/10231278) to transform Cartesian\nlayouts suitable for QCA into hexagonal layouts suitable for SiDBs,\nand multiple algorithms to optimize gate-level layouts post-placement:\n\n- [post-layout optimzation](https://dl.acm.org/doi/10.1145/3611315.3633247)\n- [wiring reduction](https://www.cda.cit.tum.de/files/eda/2024_dac_wiring_reduction_for_field-coupled_nanotechnologies.pdf)\n\n### Verification\n\nLayout correctness can be [validated](https://fiction.readthedocs.io/en/latest/algorithms/algorithms.html#verification)\nusing\n\n- [Design Rule Violation (DRV)](https://fiction.readthedocs.io/en/latest/algorithms/verification.html#design-rule-violations-drvs)\n  checking\n- SAT-based [formal verification](https://ieeexplore.ieee.org/document/9218641) (equivalence checking)\n\n### Physical Simulation\n\n<img src=\"https://raw.githubusercontent.com/cda-tum/fiction/main/docs/_static/sidb_simulation.png\" alt=\"SiDB simulation result\" align=\"right\" width=\"270\"/>\n\nWhen a layout is compiled to the cell level via the application of a technology-dependent gate library, it can be\nsimulated using a physical model. Currently, the following simulation algorithms are implemented in *fiction*:\n\n- Silicon Dangling Bonds (SiDBs)\n    - Electrostatic Ground State Simulation\n        - [*QuickExact*](https://arxiv.org/abs/2308.04487)\n        - [*QuickSim*](https://ieeexplore.ieee.org/document/10231266)\n        - [Exhaustive *(ExGS)*](https://open.library.ubc.ca/soa/cIRcle/collections/ubctheses/24/items/1.0392909)\n    - [Critical Temperature Simulation](https://ieeexplore.ieee.org/document/10231259)\n    - [Operational Domain Computation](https://www.cda.cit.tum.de/files/eda/2023_nanoarch_reducing_the_complexity_of_operational_domain_computation_in_silicon_dangling_bond_logic.pdf)\n\n## Clocking Schemes\n\nRegular clocking schemes have been proposed in the FCN literature, which can be used as a floor plans for physical\ndesign. However, sometimes it can make sense to have more freedom and assign clock numbers on the fly. That is\nwhy *fiction* supports both\n[regular and irregular clocking schemes](https://fiction.readthedocs.io/en/latest/layouts/clocking_scheme.html)\nwith variable amounts of clock numbers as QCA for instance uses four clock phases but iNML needs only three.\n\nBuilt-in schemes are\n\n|                                  [Columnar](https://ieeexplore.ieee.org/document/573740)                                  |                               [Row](https://ieeexplore.ieee.org/document/573740)                                |                                 [2DDWave](https://ieeexplore.ieee.org/document/1717097)                                 |\n|:-------------------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------------------------------------------------------------:|:-----------------------------------------------------------------------------------------------------------------------:|\n| <img src=\"https://raw.githubusercontent.com/cda-tum/fiction/main/docs/_static/columnar.png\" alt=\"Columnar\" height=\"200\"/> | <img src=\"https://raw.githubusercontent.com/cda-tum/fiction/main/docs/_static/row.png\" alt=\"Row\" height=\"200\"/> | <img src=\"https://raw.githubusercontent.com/cda-tum/fiction/main/docs/_static/2ddwave.png\" alt=\"2DDWave\" height=\"200\"/> |\n\n|                               [USE](https://ieeexplore.ieee.org/document/7219390)                               |                    [RES](https://www.tandfonline.com/doi/abs/10.1080/21681724.2019.1570551)                     |                   [ESR](https://link.springer.com/content/pdf/10.1007/s10470-020-01760-4.pdf)                   |\n|:---------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------------------------------------------------------------:|\n| <img src=\"https://raw.githubusercontent.com/cda-tum/fiction/main/docs/_static/use.png\" alt=\"USE\" height=\"200\"/> | <img src=\"https://raw.githubusercontent.com/cda-tum/fiction/main/docs/_static/res.png\" alt=\"RES\" height=\"200\"/> | <img src=\"https://raw.githubusercontent.com/cda-tum/fiction/main/docs/_static/esr.png\" alt=\"ESR\" height=\"200\"/> |\n\n|                [CFE](https://ietresearch.onlinelibrary.wiley.com/doi/10.1049/iet-cds.2019.0096)                 |     [Ripple](https://scholarworks.rit.edu/cgi/viewcontent.cgi?referer=&httpsredir=1&article=8266&context=theses)      |                                [BANCS](https://ieeexplore.ieee.org/document/8533251)                                |\n|:---------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------------------------------------------------------------------:|:-------------------------------------------------------------------------------------------------------------------:|\n| <img src=\"https://raw.githubusercontent.com/cda-tum/fiction/main/docs/_static/cfe.png\" alt=\"CFE\" height=\"200\"/> | <img src=\"https://raw.githubusercontent.com/cda-tum/fiction/main/docs/_static/ripple.png\" alt=\"Ripple\" height=\"200\"/> | <img src=\"https://raw.githubusercontent.com/cda-tum/fiction/main/docs/_static/bancs.png\" alt=\"BANCS\" height=\"300\"/> |\n\nplus the mentioned irregular open clocking that works via a clock map instead of a regular extrapolated cutout.\n\n## Wire Crossings\n\n<img src=\"https://raw.githubusercontent.com/cda-tum/fiction/main/docs/_static/cross.png\" alt=\"Second layer crossing\" align=\"left\" width=\"200\"/>\n\nWith many FCN technologies considered planar, wire crossings should be minimized if possible. However, there are some\noptions in QCA where, using a second layer, crossings over short distances and co-planar rotated cells become possible.\nAs both are just technical implementations of the same concept, *fiction* supports crossings as wires in a second grid\nlayer in its data structures for all FCN technologies. They will also be represented as such in corresponding SVG and\nQCADesigner output. However, note that it is to be interpreted as the concept of crossings and could also be realized\nco-planar.\n\nWires are only allowed to cross other wires! Wires crossing gates is considered to lead to unstable signals.\n\n## Gate Pins vs. Designated I/Os\n\n<img src=\"https://raw.githubusercontent.com/cda-tum/fiction/main/docs/_static/io.png\" alt=\"Input pin and cell output\" align=\"right\" width=\"200\"/>\n\nIn the literature, both are seen: having input cells (pins) directly located in the gate structure or using designated\nI/O elements that are located outside of gates. This distinction only makes sense on the gate level and *fiction*\nsupports both approaches and offers usage in the implemented physical design algorithms.\n\n## Multi Wires\n\n<img src=\"https://raw.githubusercontent.com/cda-tum/fiction/main/docs/_static/multi.png\" alt=\"Multi wires\" align=\"left\" width=\"200\"/>\n\nGate-level abstraction has its limits. Often, chip area is wasted when only using a single wire per tile. In *fiction*,\ncell-level layouts allow for precise control over cell placement and can, thus, also create multiple wire segments per\nclock zone. Physical simulation can give an indication of whether the built structures are implementing the intended\nfunctionality.\n\n## Synchronization Elements\n\n<img src=\"https://raw.githubusercontent.com/cda-tum/fiction/main/docs/_static/se.png\" alt=\"Synchronization element\" align=\"right\" width=\"150\"/>\n\nA technology extension proposes to utilize the external clock signal generator in an unconventional way: by creating\nfurther asymmetric clock signals with extended *Hold* phases that are assigned to specific wire\ntiles, [synchronization elements](https://ieeexplore.ieee.org/document/8626294) can be created that stall signals over\nmultiple clock cycles. These artificial latches are able to feed information to any other clock number, but their usage\nreduces the overall throughput of the layout. In return, long wire detours for signal synchronization can be prevented.\n\n## Cost Metrics\n\nDesigned layouts can be evaluated with regard to several cost functions. The following metrics are currently\nimplemented:\n\nGate-level layouts:\n\n- Circuit dimension in tiles\n- Number of gate tiles\n- Number of wire tiles\n- Number of wire crossings\n- Number of [synchronization elements](#synchronization-elements)\n- Critical path\n- Throughput\n- Bounding box\n- Energy dissipation based on a [physical model](https://ieeexplore.ieee.org/document/8246526) (QCA only)\n\nCell-level layouts:\n\n- Circuit dimension in cells\n- Number of cells\n- Bounding box\n- Area usage in nm\u00b2\n\n## Benchmark Library\n\nTo objectively evaluate and compare software and design automation\ntools, [MNT Bench](https://www.cda.cit.tum.de/mntbench/) provides gate-level\nlayouts for various gate libraries and clocking schemes, generated using the latest physical design and\noptimization algorithms, with *fiction* offering the corresponding read and write utilities to generate gate-level\nlayouts from gate-level layout files (``.fgl``) and vice versa.\n\nAdditionally, the [benchmarks](https://github.com/cda-tum/fiction/tree/main/benchmarks) folder contains the function\ndescriptions of frequently used benchmark sets in Verilog format (``.v``) provided\nby [MNT Bench](https://www.cda.cit.tum.de/mntbench/).\n\n## Reference\n\nSince *fiction* is academic software, we would be thankful if you referred to it by citing the following publications:\n\n```bibtex\n@misc{fiction,\n      author = {Walter, Marcel and Wille, Robert and Sill Torres, Frank and Gro{\\ss}e, Daniel and Drechsler, Rolf},\n      title = {{fiction: An Open Source Framework for the Design of Field-coupled Nanocomputing Circuits}},\n      archivePrefix = {arXiv},\n      eprint = {1905.02477},\n      note = {arXiv:1905.02477},\n      year = {2019},\n      month = {May}\n}\n```\n\nand\n\n```bibtex\n@inproceedings{mnt,\n    author = {Walter, Marcel and Drewniok, Jan and Hofmann, Simon and Hien, Benjamin and Wille, Robert},\n    title = {{The Munich Nanotech Toolkit (MNT)}},\n    booktitle = {IEEE International Conference on Nanotechnology (IEEE NANO)},\n    pages = {454--459},\n    year = {2024}\n}\n```\n\nAdditionally, many algorithms implemented in *fiction* have been published individually. For a full list of\npublications, please refer to the [documentation](https://fiction.readthedocs.io/en/latest/publications.html).\n\n## Acknowledgements\n\nThe Munich Nanotech Toolkit has been supported by the Bavarian State Ministry for Science and Arts through the\nDistinguished Professorship Program.\n\n<p align=\"center\">\n<picture>\n<source media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/cda-tum/mqt/main/docs/_static/tum_dark.svg\" width=\"28%\">\n<img src=\"https://raw.githubusercontent.com/cda-tum/mqt/main/docs/_static/tum_light.svg\" width=\"28%\" alt=\"TUM Logo\">\n</picture>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <!-- Non-breaking spaces for spacing -->\n<picture>\n<img src=\"https://raw.githubusercontent.com/cda-tum/mqt/main/docs/_static/logo-bavaria.svg\" width=\"16%\" alt=\"Coat of Arms of Bavaria\">\n</picture>\n</p>\n",
    "bugtrack_url": null,
    "license": "Copyright 2018-2023 Marcel Walter Copyright 2023-present, Chair for Design Automation, Technical University of Munich  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ",
    "summary": "Design Automation for Field-coupled Nanotechnologies",
    "version": "0.6.5",
    "project_urls": {
        "Documentation": "https://fiction.readthedocs.io/en/latest/",
        "Homepage": "https://www.cda.cit.tum.de/research/fcn/",
        "Research": "https://www.cda.cit.tum.de/research/fcn/",
        "Source": "https://github.com/cda-tum/fiction",
        "Tracker": "https://github.com/cda-tum/fiction/issues"
    },
    "split_keywords": [
        "mnt",
        " fiction",
        " nanotechnology",
        " fcn",
        " qca",
        " nml",
        " sidb",
        " design automation",
        " placement",
        " routing",
        " clocking",
        " simulation"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "8594cd348014ecf994b8f64c08b1063b62c0f15d0133156157328752a0075e9a",
                "md5": "ae984003a5f637262fed7d5d70da49b4",
                "sha256": "6e9e69ebe43807333bdc774acd07f1a6321d3269829731cb9cb67f9810b0e9cc"
            },
            "downloads": -1,
            "filename": "mnt.pyfiction-0.6.5-cp310-cp310-macosx_10_15_x86_64.whl",
            "has_sig": false,
            "md5_digest": "ae984003a5f637262fed7d5d70da49b4",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 3099089,
            "upload_time": "2024-10-22T22:43:35",
            "upload_time_iso_8601": "2024-10-22T22:43:35.479294Z",
            "url": "https://files.pythonhosted.org/packages/85/94/cd348014ecf994b8f64c08b1063b62c0f15d0133156157328752a0075e9a/mnt.pyfiction-0.6.5-cp310-cp310-macosx_10_15_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e37213bc237ae46b5ee313af02a5edb6a4ef03bd1343db806d80533cbc112f72",
                "md5": "2f793005e50c79b176c238680aa862c9",
                "sha256": "fc048625329f8d369a48ce2b109c084eaf0ab7e4ffd6e256e2fac94247758e0a"
            },
            "downloads": -1,
            "filename": "mnt.pyfiction-0.6.5-cp310-cp310-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "2f793005e50c79b176c238680aa862c9",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 2631549,
            "upload_time": "2024-10-22T22:43:37",
            "upload_time_iso_8601": "2024-10-22T22:43:37.559564Z",
            "url": "https://files.pythonhosted.org/packages/e3/72/13bc237ae46b5ee313af02a5edb6a4ef03bd1343db806d80533cbc112f72/mnt.pyfiction-0.6.5-cp310-cp310-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0ac7fc51f157f98d240a90355af98f7a3a02a500fdc3eb9adc24f2af217b9eeb",
                "md5": "88ca6386c5f3725a1d2bd124e1b230d0",
                "sha256": "bde650b6955e5e32cfdc99725b9f1ab05d1a213db0a68a219625d2bd7f420c0c"
            },
            "downloads": -1,
            "filename": "mnt.pyfiction-0.6.5-cp310-cp310-manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "88ca6386c5f3725a1d2bd124e1b230d0",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 15961044,
            "upload_time": "2024-10-22T22:43:39",
            "upload_time_iso_8601": "2024-10-22T22:43:39.022192Z",
            "url": "https://files.pythonhosted.org/packages/0a/c7/fc51f157f98d240a90355af98f7a3a02a500fdc3eb9adc24f2af217b9eeb/mnt.pyfiction-0.6.5-cp310-cp310-manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e4c4db75c7c79072bb623fde976e45d513bad81a8bf0613574528ae45bec8d75",
                "md5": "cfa93037f4d910ddb7fa4af35ebc0a9c",
                "sha256": "7870e7cb3a3100bd855524757ddbe2c70586fed83d354d27ddd2c51968d636d9"
            },
            "downloads": -1,
            "filename": "mnt.pyfiction-0.6.5-cp310-cp310-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "cfa93037f4d910ddb7fa4af35ebc0a9c",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 10192895,
            "upload_time": "2024-10-22T22:43:41",
            "upload_time_iso_8601": "2024-10-22T22:43:41.283762Z",
            "url": "https://files.pythonhosted.org/packages/e4/c4/db75c7c79072bb623fde976e45d513bad81a8bf0613574528ae45bec8d75/mnt.pyfiction-0.6.5-cp310-cp310-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ad775d923e3e268a4c36196cae6c4c3c096f4a64c48bdf262aead338d207aa97",
                "md5": "3d7233ba62716781260039671d251197",
                "sha256": "f3d89d5facd5d977c7c83194027db2d51e7ca6117d5f7b6d9801630187ae3a60"
            },
            "downloads": -1,
            "filename": "mnt.pyfiction-0.6.5-cp311-cp311-macosx_10_15_x86_64.whl",
            "has_sig": false,
            "md5_digest": "3d7233ba62716781260039671d251197",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 3099209,
            "upload_time": "2024-10-22T22:43:43",
            "upload_time_iso_8601": "2024-10-22T22:43:43.528778Z",
            "url": "https://files.pythonhosted.org/packages/ad/77/5d923e3e268a4c36196cae6c4c3c096f4a64c48bdf262aead338d207aa97/mnt.pyfiction-0.6.5-cp311-cp311-macosx_10_15_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9d2ecc4eb26bd5bb87b3565fc18bb079d996353e397eaa6c53f9e2039365d7ef",
                "md5": "59288cd39c660178dd1f0b569651d7fe",
                "sha256": "72c0dda53c09b2d13b3fa27e0671312cd6f15c570e4c2e6a391436aa0f67e59d"
            },
            "downloads": -1,
            "filename": "mnt.pyfiction-0.6.5-cp311-cp311-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "59288cd39c660178dd1f0b569651d7fe",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 2633798,
            "upload_time": "2024-10-22T22:43:47",
            "upload_time_iso_8601": "2024-10-22T22:43:47.654117Z",
            "url": "https://files.pythonhosted.org/packages/9d/2e/cc4eb26bd5bb87b3565fc18bb079d996353e397eaa6c53f9e2039365d7ef/mnt.pyfiction-0.6.5-cp311-cp311-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "841d65c53a375b1c3912a92f1165bec917f56b71222c86f147092a53ca6860a2",
                "md5": "f1e9493d9c36f876078754c92f8087cc",
                "sha256": "b9653ad19c112299f2d799693533da233f8fae8bc0edfbc66330a3b5582adc92"
            },
            "downloads": -1,
            "filename": "mnt.pyfiction-0.6.5-cp311-cp311-manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "f1e9493d9c36f876078754c92f8087cc",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 15966372,
            "upload_time": "2024-10-22T22:43:49",
            "upload_time_iso_8601": "2024-10-22T22:43:49.195217Z",
            "url": "https://files.pythonhosted.org/packages/84/1d/65c53a375b1c3912a92f1165bec917f56b71222c86f147092a53ca6860a2/mnt.pyfiction-0.6.5-cp311-cp311-manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "aa4a178f7806b0d710d19b81a5db65ca0b911f9dc983c14ace04f6bb069d3ac9",
                "md5": "ca258713b032960f96cad372c88d5f19",
                "sha256": "77693ac211468744184cbfdf568265bdb81bfa5066f5f54b6cd8a1d6e2735068"
            },
            "downloads": -1,
            "filename": "mnt.pyfiction-0.6.5-cp311-cp311-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "ca258713b032960f96cad372c88d5f19",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 10195835,
            "upload_time": "2024-10-22T22:43:51",
            "upload_time_iso_8601": "2024-10-22T22:43:51.143052Z",
            "url": "https://files.pythonhosted.org/packages/aa/4a/178f7806b0d710d19b81a5db65ca0b911f9dc983c14ace04f6bb069d3ac9/mnt.pyfiction-0.6.5-cp311-cp311-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "bf20c312519bcf2902f6079cf8d09e44f0afad32bcb63d715de09bf3e1b4ecfb",
                "md5": "9eecb679e926c2ca419802d5b6d2bcca",
                "sha256": "d468628eb937f8567de05beea28197a64021dc000ad3a4cd53bbca98873d3f71"
            },
            "downloads": -1,
            "filename": "mnt.pyfiction-0.6.5-cp312-cp312-macosx_10_15_x86_64.whl",
            "has_sig": false,
            "md5_digest": "9eecb679e926c2ca419802d5b6d2bcca",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 3139693,
            "upload_time": "2024-10-22T22:43:53",
            "upload_time_iso_8601": "2024-10-22T22:43:53.061604Z",
            "url": "https://files.pythonhosted.org/packages/bf/20/c312519bcf2902f6079cf8d09e44f0afad32bcb63d715de09bf3e1b4ecfb/mnt.pyfiction-0.6.5-cp312-cp312-macosx_10_15_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e2ed76ba28bd3602650a2ba0b54de1a954107653605745ae701ac4c01c18474a",
                "md5": "1a6db00d9461a3ec64ce174de51f0de7",
                "sha256": "32b27be5fd99f3c95b09ed986519cb7d8eeea866ad140fc2b85090fa4ca3ec34"
            },
            "downloads": -1,
            "filename": "mnt.pyfiction-0.6.5-cp312-cp312-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "1a6db00d9461a3ec64ce174de51f0de7",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 2646387,
            "upload_time": "2024-10-22T22:43:54",
            "upload_time_iso_8601": "2024-10-22T22:43:54.374885Z",
            "url": "https://files.pythonhosted.org/packages/e2/ed/76ba28bd3602650a2ba0b54de1a954107653605745ae701ac4c01c18474a/mnt.pyfiction-0.6.5-cp312-cp312-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "23ce7cc590d4ee98df18edd31a63e98c7005ce4f9e81f10a9e49486f4a17caa4",
                "md5": "c8beceb43a143df1ea25510b995654c8",
                "sha256": "277b28e21a8a0e31393a52e4d410fba577cc08ee215054652b93da425158555d"
            },
            "downloads": -1,
            "filename": "mnt.pyfiction-0.6.5-cp312-cp312-manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "c8beceb43a143df1ea25510b995654c8",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 15941762,
            "upload_time": "2024-10-22T22:43:55",
            "upload_time_iso_8601": "2024-10-22T22:43:55.885232Z",
            "url": "https://files.pythonhosted.org/packages/23/ce/7cc590d4ee98df18edd31a63e98c7005ce4f9e81f10a9e49486f4a17caa4/mnt.pyfiction-0.6.5-cp312-cp312-manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "72023da140886623d1fa4f08589b38c691927306f62e261ca98eac21efb4da84",
                "md5": "8d50fd13ebf6227f5d16f4f73a37b2b6",
                "sha256": "f105c3de307ee54c0a77ea688364174334c93011212236e3d8bfb0342d2d64ab"
            },
            "downloads": -1,
            "filename": "mnt.pyfiction-0.6.5-cp312-cp312-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "8d50fd13ebf6227f5d16f4f73a37b2b6",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 10226157,
            "upload_time": "2024-10-22T22:43:57",
            "upload_time_iso_8601": "2024-10-22T22:43:57.908261Z",
            "url": "https://files.pythonhosted.org/packages/72/02/3da140886623d1fa4f08589b38c691927306f62e261ca98eac21efb4da84/mnt.pyfiction-0.6.5-cp312-cp312-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0c077e031aa473cc521c17504aa41a71572d071e40620386cae489c70313fd24",
                "md5": "290ee905cf7bde5fc700dff1c5b212a0",
                "sha256": "ba70d6bd8f62e229aeb8d3f5d2850b2d92df1b1250be01e28b449ab7e9ea5246"
            },
            "downloads": -1,
            "filename": "mnt.pyfiction-0.6.5-cp38-cp38-macosx_10_15_x86_64.whl",
            "has_sig": false,
            "md5_digest": "290ee905cf7bde5fc700dff1c5b212a0",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 3098828,
            "upload_time": "2024-10-22T22:44:00",
            "upload_time_iso_8601": "2024-10-22T22:44:00.536487Z",
            "url": "https://files.pythonhosted.org/packages/0c/07/7e031aa473cc521c17504aa41a71572d071e40620386cae489c70313fd24/mnt.pyfiction-0.6.5-cp38-cp38-macosx_10_15_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "04aa53450209bab85521ad8a6d6e472d8073a642cda27e9d6f8ec3f667aca9cf",
                "md5": "b17839448b9a7ff2d4daa08377909d9d",
                "sha256": "a19b1e12046c248849056aa0e7949e6e7b521b77c611e2b9ee06ade580139d05"
            },
            "downloads": -1,
            "filename": "mnt.pyfiction-0.6.5-cp38-cp38-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "b17839448b9a7ff2d4daa08377909d9d",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 2631215,
            "upload_time": "2024-10-22T22:44:02",
            "upload_time_iso_8601": "2024-10-22T22:44:02.448133Z",
            "url": "https://files.pythonhosted.org/packages/04/aa/53450209bab85521ad8a6d6e472d8073a642cda27e9d6f8ec3f667aca9cf/mnt.pyfiction-0.6.5-cp38-cp38-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0ebedd3acc38b5bd7861aabcee34bd5014f738ee799e586fc2db60e93d786d4d",
                "md5": "59710fe3d7fc772eeba3f16b79ca7d44",
                "sha256": "3370d78d77e7b6b192b303f5bc9dd3cbb6c02368d28f18b95ad39612f44931ba"
            },
            "downloads": -1,
            "filename": "mnt.pyfiction-0.6.5-cp38-cp38-manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "59710fe3d7fc772eeba3f16b79ca7d44",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 15959656,
            "upload_time": "2024-10-22T22:44:04",
            "upload_time_iso_8601": "2024-10-22T22:44:04.648185Z",
            "url": "https://files.pythonhosted.org/packages/0e/be/dd3acc38b5bd7861aabcee34bd5014f738ee799e586fc2db60e93d786d4d/mnt.pyfiction-0.6.5-cp38-cp38-manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7223bfeb3505e10d7e01301a1da3759595c4d09b24c412da478885f588e0af5a",
                "md5": "df8513610f50edb236bb378e3599b81e",
                "sha256": "80a372cdd7d912ec8a52022270f02e79e41f345931daee137df65144b3a24f09"
            },
            "downloads": -1,
            "filename": "mnt.pyfiction-0.6.5-cp38-cp38-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "df8513610f50edb236bb378e3599b81e",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 10208077,
            "upload_time": "2024-10-22T22:44:07",
            "upload_time_iso_8601": "2024-10-22T22:44:07.467175Z",
            "url": "https://files.pythonhosted.org/packages/72/23/bfeb3505e10d7e01301a1da3759595c4d09b24c412da478885f588e0af5a/mnt.pyfiction-0.6.5-cp38-cp38-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9424656e6fa00d410a9e4a89c0e027ebc45390b2a176636d73da4a7459c75c7d",
                "md5": "f2f0e5b42e9c2f8c4ade43ac3b65c9f0",
                "sha256": "33fb91c4fb938f6d4c572389158b557f5b839cce4858ddaf6a2214bde3d2ff5a"
            },
            "downloads": -1,
            "filename": "mnt.pyfiction-0.6.5-cp39-cp39-macosx_10_15_x86_64.whl",
            "has_sig": false,
            "md5_digest": "f2f0e5b42e9c2f8c4ade43ac3b65c9f0",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 3099114,
            "upload_time": "2024-10-22T22:44:10",
            "upload_time_iso_8601": "2024-10-22T22:44:10.835610Z",
            "url": "https://files.pythonhosted.org/packages/94/24/656e6fa00d410a9e4a89c0e027ebc45390b2a176636d73da4a7459c75c7d/mnt.pyfiction-0.6.5-cp39-cp39-macosx_10_15_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "43652c157c5655908b2a20112605ef1e6cc50842ef0abde93de294f79429f680",
                "md5": "615af6cf8b98f144e57059ae81afd245",
                "sha256": "566072b7f5efa1de81efc60e46fc9c18bd1ca65cb27cfceb347e13f020e7ffd3"
            },
            "downloads": -1,
            "filename": "mnt.pyfiction-0.6.5-cp39-cp39-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "615af6cf8b98f144e57059ae81afd245",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 2631904,
            "upload_time": "2024-10-22T22:44:12",
            "upload_time_iso_8601": "2024-10-22T22:44:12.054964Z",
            "url": "https://files.pythonhosted.org/packages/43/65/2c157c5655908b2a20112605ef1e6cc50842ef0abde93de294f79429f680/mnt.pyfiction-0.6.5-cp39-cp39-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "cdd2706319b14e239c36e3245e8c19b4407b4d64b19dc5ce5ecf5a2b81afeb91",
                "md5": "2cc273887614a0850fb87300b12f81f9",
                "sha256": "f614ad07e742bf9cb3212bd0ba3a5db6f3a82ea4240b1dfaa9e366720b2d4d2b"
            },
            "downloads": -1,
            "filename": "mnt.pyfiction-0.6.5-cp39-cp39-manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "2cc273887614a0850fb87300b12f81f9",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 15957634,
            "upload_time": "2024-10-22T22:44:13",
            "upload_time_iso_8601": "2024-10-22T22:44:13.514747Z",
            "url": "https://files.pythonhosted.org/packages/cd/d2/706319b14e239c36e3245e8c19b4407b4d64b19dc5ce5ecf5a2b81afeb91/mnt.pyfiction-0.6.5-cp39-cp39-manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ef5ffe0a974bc3f17e0ecd126340b77406468ec2aed343a8db354107de3dbd4a",
                "md5": "aa2a63b7406c94082329a9f0dabc75e1",
                "sha256": "176a2d9577259fe57cfc9907b27b5530491c15b87826a032ad67b5a85ab4ccec"
            },
            "downloads": -1,
            "filename": "mnt.pyfiction-0.6.5-cp39-cp39-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "aa2a63b7406c94082329a9f0dabc75e1",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 10193384,
            "upload_time": "2024-10-22T22:44:15",
            "upload_time_iso_8601": "2024-10-22T22:44:15.543245Z",
            "url": "https://files.pythonhosted.org/packages/ef/5f/fe0a974bc3f17e0ecd126340b77406468ec2aed343a8db354107de3dbd4a/mnt.pyfiction-0.6.5-cp39-cp39-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "653292b77f4f50433deaba629eb9a0b4be409df0b5f1e061c066184a05e6be14",
                "md5": "dfdfb58109f8da466c06598605438fff",
                "sha256": "31efdfd813dca1a79ef26505b4548efd433e038b37169f2c90a6a0d06b875e1e"
            },
            "downloads": -1,
            "filename": "mnt_pyfiction-0.6.5.tar.gz",
            "has_sig": false,
            "md5_digest": "dfdfb58109f8da466c06598605438fff",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 13046871,
            "upload_time": "2024-10-22T22:44:17",
            "upload_time_iso_8601": "2024-10-22T22:44:17.660376Z",
            "url": "https://files.pythonhosted.org/packages/65/32/92b77f4f50433deaba629eb9a0b4be409df0b5f1e061c066184a05e6be14/mnt_pyfiction-0.6.5.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-10-22 22:44:17",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "cda-tum",
    "github_project": "fiction",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "mnt.pyfiction"
}
        
Elapsed time: 2.47371s