This provides two Physical Simulators for Silicon Dangling Bond (SiDB) Logic: QuickExact and QuickSim.
Both are implemented on top of the fiction framework. This project makes the simulators available inside the SiQAD GUI.
QuickExact is an exact simulator, i.e., it determines all physically valid charge configurations of a given layout with 100 % accuracy.
- The parameter
simulation base number autodetection
determines whether the simulation should automatically assess and set the required base number before starting. When set to0
(off), this feature is disabled. However, when set to1
(on), the simulation evaluates the possibility of positively charged SiDBs occurring based on the provided physical parameters or the proximity of SiDBs. If there's a potential for positively charged SiDBs, the base number is dynamically set to 3. Otherwise, it is set to 2. This ensures that the simulation consistently delivers correct results.
QuickSim is an approximate 2-state simulator for determining the ground state of a given SiDB layout.
- It enables the tuning of several simulation parameters:
iteration steps
andalpha
. For gate layouts, there should be no need to adjust the default values. If no solution is found, however,iteration steps
can be increased oralpha
reduced to enable high-effort simulation. - The
Instance count
parameter gives control over the number of threads used for the simulation. When set to-1
, QuickSim maximizes computational resources by utilizing all available threads, optimizing simulation efficiency.
All you need is a git
client, cmake
, the Boost
libraries, and a modern C++ compiler.
Clone the repository and its submodules:
git clone --recursive https://github.com/cda-tum/mnt-siqad-plugins.git
Inside the newly cloned
mnt-siqad-plugins
folder, trigger the build process:
cmake . -B build -DFICTION_Z3=OFF -DFICTION_BENCHMARK=OFF -DFICTION_PROGRESS_BARS=OFF -DMOCKTURTLE_EXAMPLES=OFF
cd build
cmake --build . -j4
Make sure you have SiQAD installed and the plugins compiled.
Navigate to <PATH-TO-SIQAD>/plugins/
and create a new folder called quicksim
and quickexact
.
Move the quicksim
and quickexact
binaries along with their respective .physeng
files from
the mnt-siqad-plugins/build/
directory to the newly created siqad/plugins/quicksim/
and siqad/plugins/quickexact/
directories. Once completed,
restart SiQAD.
QuickExact and QuickSim are now available in the engine list.
If you use QuickExact or QuickSim in your work, we would appreciate it if you cite the following publication:
@inproceedings{drewniok2023quicksim,
author={Drewniok, Jan and Walter, Marcel and Hang Ng, Samuel Sze and Walus, Konrad and Wille, Robert},
title={{\emph{QuickSim}: Efficient \emph{and} Accurate Physical Simulation of Silicon Dangling Bond Logic}},
year={2023},
pages={817-822},
doi={10.1109/NANO58406.2023.10231266}}
@inproceedings{drewniok2024quickexact,
author={Drewniok, Jan and Walter, Marcel and Wille, Robert},
title={{The Need for Speed: Efficient Exact Simulation of Silicon Dangling Bond Logic}},
booktitle={Asia and South Pacific Design Automation Conference (ASP-DAC)},
year={2024}}