mnt.pyfiction
An open-source design automation framework for Field-coupled Nanotechnologies
Science Score: 85.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 7 DOI reference(s) in README -
✓Academic publication links
Links to: arxiv.org, springer.com, wiley.com, ieee.org, acm.org -
✓Committers with academic emails
1 of 12 committers (8.3%) from academic institutions -
✓Institutional organization owner
Organization cda-tum has institutional domain (www.cda.cit.tum.de) -
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (8.9%) to scientific vocabulary
Keywords
Keywords from Contributors
Repository
An open-source design automation framework for Field-coupled Nanotechnologies
Basic Info
- Host: GitHub
- Owner: cda-tum
- License: mit
- Language: C++
- Default Branch: main
- Homepage: https://fiction.readthedocs.io
- Size: 19.3 MB
Statistics
- Stars: 78
- Watchers: 5
- Forks: 28
- Open Issues: 15
- Releases: 22
Topics
Metadata Files
README.md
fiction – Design Automation for Field-coupled Nanotechnologies
This code base provides a C++17 framework for field-coupled technology-independent open nanocomputing developed as part of the Munich Nanotech Toolkit (MNT) by the Chair for Design Automation at the Technical University of Munich. Within fiction, algorithms for logic synthesis, placement, routing, clocking, verification, and simulation for Field-coupled Nanocomputing (FCN) 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 as well as 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 that allows quick access to its core functionality.
If you have any questions, feel free to contact us via nanotech.cda@xcit.tum.de or by creating an issue on GitHub.
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
fictionfolder, 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:

The Header-only Library
Add
fictionas a sub-directory to your CMake project and link againstlibfiction(assuming your project is calledfanfiction):
CMake
add_subdirectory(fiction/)
target_link_libraries(fanfiction libfiction)
Include the headers you need:
```C++
include
include
include
include
include
```
Quick Start (Python)
Install the Python bindings from PyPI:
bash
pip install mnt.pyfiction
Import the bindings:
python
from mnt import pyfiction
For a full getting started guide, please refer to the documentation.
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)

Gate libraries:
File formats:
*.qcafor QCADesigner*.qllfor MagCAD and SCERPA*.fqcafor QCA-STACK*.svgfor 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)

Gate libraries:
File formats:
*.qccfor ToPoliNano*.qllfor ToPoliNano & MagCAD
Many thanks to Umberto Garlando, Fabrizio Riente, and Giuliana Beretta for their support!
Silicon Dangling Bonds (SiDBs)

Gate libraries:
File formats:
*.sqdfor 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 utilizes ABC and the mockturtle library that offer 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 as input specification and output placed, routed, and clocked generic FCN circuits.

Among these algorithms are
- SMT-based exact placement and routing
- OGD-based scalable placement and routing
- SAT-based one-pass synthesis
- SAT-based multi-path routing
- Graph-oriented layout design
plus several path-finding algorithms that work on generic layouts:
- shortest path via the A* algorithm
- k shortest paths via Yen's algorithm
On top, there is a hexagonalization algorithm to transform Cartesian layouts suitable for QCA into hexagonal layouts suitable for SiDBs, and multiple algorithms to optimize gate-level layouts post-placement:
Verification
Layout correctness can be validated using
- Design Rule Violation (DRV) checking
- SAT-based formal verification (equivalence checking)
Physical Simulation

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
- ClusterComplete
- QuickExact
- QuickSim
- Exhaustive (ExGS)
- Critical Temperature Simulation
- Operational Domain Computation
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 with variable amounts of clock numbers as QCA for instance uses four clock phases but iNML needs only three.
Built-in schemes are
| Columnar | Row | 2DDWave |
| :-----------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------: |
|
|
|
|
| USE | RES | ESR |
| :-------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------: |
|
|
|
|
| CFE | Ripple | SRS |
| :-------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------: |
|
|
|
|
| BANCS |
| :-----------------------------------------------------------------------------------------------------------------: |
|
|
plus the mentioned irregular open clocking that works via a clock map instead of a regular extrapolated cutout.
Wire Crossings

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

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

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

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 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
- Critical path
- Throughput
- Bounding box
- Energy dissipation based on a physical model (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 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 folder contains the function
descriptions of frequently used benchmark sets in Verilog format (.v) provided
by MNT Bench.
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.
Acknowledgements
The Munich Nanotech Toolkit has been supported by the Bavarian State Ministry for Science and Arts through the Distinguished Professorship Program.
Owner
- Name: Chair for Design Automation, TU Munich
- Login: cda-tum
- Kind: organization
- Location: Germany
- Website: https://www.cda.cit.tum.de
- Repositories: 22
- Profile: https://github.com/cda-tum
The CDA provides expertise for all main steps in the design and realization of integrated circuits, embedded systems, as well as cyber-physical systems.
Citation (CITATION.cff)
cff-version: 1.2.0 message: "If you use this software, please cite it as below." authors: - family-names: "Walter" given-names: "Marcel" orcid: "0000-0001-5660-9518" - family-names: "Drewniok" given-names: "Jan" orcid: "0000-0002-7545-159X" - family-names: "Hofmann" given-names: "Simon" orcid: "0009-0003-8575-9998" - family-names: "Hien" given-names: "Benjamin" orcid: "0000-0002-6878-8063" - family-names: "Wille" given-names: "Robert" orcid: "0000-0002-4993-7860" title: "The Munich Nanotech Toolkit (MNT)" version: 0.6.11 doi: 10.1109/NANO61778.2024.10628747 url: "https://github.com/cda-tum/fiction"
Committers
Last synced: 7 months ago
Top Committers
| Name | Commits | |
|---|---|---|
| Marcel Walter | m****r@t****e | 234 |
| dependabot[bot] | 4****] | 164 |
| Jan Drewniok | 9****k | 125 |
| renovate[bot] | 2****] | 95 |
| Willem Lambooy | 3****y | 54 |
| simon1hofmann | 1****n | 51 |
| pre-commit-ci[bot] | 6****] | 12 |
| Drewniok | j****h@g****m | 7 |
| Mario Kneidinger | m****r@g****m | 2 |
| benjamin | b****n@w****e | 2 |
| Lukas Burgholzer | b****r@m****m | 1 |
| lsschmid | 1****d | 1 |
Issues and Pull Requests
Last synced: 4 months ago
All Time
- Total issues: 12
- Total pull requests: 527
- Average time to close issues: 19 days
- Average time to close pull requests: 10 days
- Total issue authors: 7
- Total pull request authors: 8
- Average comments per issue: 3.42
- Average comments per pull request: 2.02
- Merged pull requests: 407
- Bot issues: 3
- Bot pull requests: 288
Past Year
- Issues: 5
- Pull requests: 369
- Average time to close issues: about 1 month
- Average time to close pull requests: 4 days
- Issue authors: 4
- Pull request authors: 8
- Average comments per issue: 3.8
- Average comments per pull request: 1.83
- Merged pull requests: 296
- Bot issues: 1
- Bot pull requests: 226
Top Authors
Issue Authors
- Drewniok (3)
- wlambooy (3)
- dependabot[bot] (2)
- simon1hofmann (1)
- contra-bit (1)
- marcelwa (1)
- renovate[bot] (1)
Pull Request Authors
- renovate[bot] (188)
- Drewniok (102)
- dependabot[bot] (87)
- marcelwa (69)
- simon1hofmann (46)
- wlambooy (16)
- pre-commit-ci[bot] (13)
- hibenj (6)
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 1
-
Total downloads:
- pypi 825 last-month
- Total dependent packages: 1
- Total dependent repositories: 0
- Total versions: 13
- Total maintainers: 1
pypi.org: mnt.pyfiction
Design Automation for Field-coupled Nanotechnologies
- Documentation: https://fiction.readthedocs.io/en/latest/
- 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.
-
Latest release: 0.6.11
published 8 months ago
Rankings
Maintainers (1)
Dependencies
- breathe ==4.30.0
- sphinx ==4.0.1
- DoozyX/clang-format-lint-action v0.15 composite
- EndBug/add-and-commit v9 composite
- actions/checkout v3 composite
- ZedThree/clang-tidy-review/post v0.10.1 composite
- actions/github-script v6 composite
- ZedThree/clang-tidy-review v0.10.1 composite
- actions/checkout v3 composite
- actions/upload-artifact v3 composite
- andstor/file-existence-action v2.0.0 composite
- finnp/create-file-action 1.0.0 composite
- actions/checkout v3 composite
- github/codeql-action/analyze v2 composite
- github/codeql-action/autobuild v2 composite
- github/codeql-action/init v2 composite
- BSFishy/pip-action v1 composite
- actions/checkout v3 composite
- actions/setup-python v4 composite
- cda-tum/setup-z3 v1 composite
- codecov/codecov-action v3 composite
- hendrikmuhs/ccache-action v1.2 composite
- actions/checkout v3 composite
- actions/checkout v3 composite
- cda-tum/setup-z3 v1 composite
- hendrikmuhs/ccache-action v1.2 composite
- maxim-lobanov/setup-xcode v1 composite
- BSFishy/pip-action v1 composite
- actions/checkout v3 composite
- actions/setup-python v4 composite
- cda-tum/setup-z3 v1 composite
- hendrikmuhs/ccache-action v1.2 composite
- actions/checkout v3 composite
- cda-tum/setup-z3 v1 composite
- hendrikmuhs/ccache-action v1.2 composite
- alpine latest build
- graphviz *
- python-sat ==0.1.6.dev6
- wrapt_timeout_decorator *
- release-drafter/release-drafter v5 composite