Design Automation for Field-coupled Nanotechnologies
847
This code base provides a C++20 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 [email protected]โ or by creating an issue on GitHubโ .
To help you get started with fiction, pick the interface that best fits your use case:
| Goal | Recommended Path | Section |
|---|---|---|
| Try the tool immediately | ๐ณ Docker CLI image | CLI (Docker)โ |
| Full-featured local CLI build | ๐ป Native build | CLI (Source)โ |
| Integrate into a C++ project | ๐ Header-only library | C++ Libraryโ |
| Script / notebooks / rapid prototyping | ๐ Python bindings (PyPI) | Python Bindingsโ |
For a full getting started guideโ , CLI command listโ , or API reference, see the documentationโ .
This is the fastest zero-install path. We release pre-built images of the latest CLI on Docker Hubโ . Make sure you have Docker installedโ on your local system.
Pull the latest image:
docker pull mawalter/fiction:latest
Run the interactive CLI session:
docker run --rm -it mawalter/fiction
Internally, the repository lives at /app/fiction.
When you want to add your own algorithms or contribute to the project, you should build fiction from source.
Clone the project with its submodules:
git clone --recursive https://github.com/cda-tum/fiction.git
cd fiction
Configure and build with CMake:
cmake -S . -B build
cmake --build build --parallel
Run the CLI:
build/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:

If you want to use fiction as a dependency in your project, use its header-only library.
Add fiction as a subdirectory to your CMake project and link against libfiction (assuming your project is
called fanfiction):
add_subdirectory(fiction)
target_link_libraries(fanfiction PRIVATE libfiction)
Then include what you need:
#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/...>
Ideal for notebooks, exploratory scripts, and integration with Python tooling.
Install the library from PyPI:
pip install mnt.pyfiction
Import it in your script:
from mnt import pyfiction
Physical design in fiction can be performed technology-independently. Only if the resulting layouts are to be physically simulated is a specific technology implementation required. To this end, fiction supports various 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.
Gate libraries:
File formats:
*.qca for QCADesignerโ *.qll for MagCADโ and SCERPAโ *.fqca for QCA-STACKโ *.svg for visual representationMany 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!
Gate libraries:
File formats:
*.qcc for ToPoliNanoโ *.qll for ToPoliNano & MagCADโ Many thanks to Umberto Garlando, Fabrizio Riente, and Giuliana Beretta for their support!
Gate libraries:
File formats:
*.sqd for SiQADโ Many thanks to Samuel Sze Hang Ng for his support!
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.
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.
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
plus several path-finding algorithms that work on generic layouts:
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:
Layout correctness can be validatedโ using
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:
Regular clocking schemes have been proposed in the FCN literature and can be used as floor plans for physical design. However, sometimes it makes sense to assign clock numbers on the fly. Therefore, fiction supports both regular and irregular clocking schemesโ with variable numbers of clock phases: for instance, QCA uses four phases, whereas iNML needs only three.
Built-in schemes are
plus the mentioned irregular open clocking that works via a clock map instead of a regular extrapolated cutout.
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.
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.
Designed layouts can be evaluated with regard to several cost functions. The following metrics are currently implemented:
Gate-level layouts:
Cell-level layouts:
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โ .
Since fiction is academic software, we would be thankful if you referred to it by citing the following publications:
@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
@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โ .
The Munich Nanotech Toolkit has been supported by the Bavarian State Ministry for Science and Arts through the Distinguished Professorship Program.
Content type
Image
Digest
sha256:c93abd35fโฆ
Size
331.5 MB
Last updated
almost 2 years ago
docker pull mawalter/fiction