Important
This project is still in the early stages of development. We appreciate your patience and understanding as work to improve the GUI continues.
The Operational Domain Explorer is a PyQt6 application that enables insight into the robustness of Silicon Dangling Bond (SiDB) gates against material imperfections at the atomic scale. To this end, it relies on physical simulation tools implemented in the fiction framework. The Operational Domain Explorer is developed as part of the Munich Nanotech Toolkit (MNT) by the Chair for Design Automation at the Technical University of Munich.
The Operational Domain was proposed as a methodology to evaluate the extent of physical parameter variations that an SiDB logic gate can tolerate by plotting the logical correctness of that gate's behavior across a predetermined range of physical parameters. Given an SiDB layout L and a Boolean function f : 𝔹ⁿ ⟶ 𝔹ᵐ, the operational domain of L given f is defined in the parameter space as the set of coordinate points for which L implements f. To determine whether L implements f at any given coordinate point (x, y, z), this point can be sampled, i.e., by conducting 2ⁿ physical simulations—one for each possible input pattern of L.
First, clone the repository to your local machine using Git:
git clone https://github.com/cda-tum/opdom-explore.git
cd opdom-explore
First, make sure to install uv.
pip install uv
Second, to start the Operational Domain Explorer, run the application as follows:
cd src/mnt/opdom_explorer/
uv run main.py
-
Run the tests:
uvx nox -s tests --verbose
-
📂 Load SQD File: Begin by loading an SiDB gate as an SQD file. Extensive gate libraries are available in the open-source project fiction. Alternatively, you can use gates designed in tools like SiQAD. It is crucial to ensure that the input and output cells are correctly specified in the SQD file. To be precise,
<type>input</type>
for input cells and<type>output</type>
for output cells must be present in the SQD file directly below the<latcoord n="..." m="..." l="..."/>
tag of the respective SiDBs. -
⚙️ Configure the Operational Domain Simulation: The Operational Domain Explorer offers a wide range of parameters and settings to simulate operational domains for various scenarios. This step is divided into three sections: Physical Simulation, Gate Function, and Operational Domain.
- Physical Simulation: Select a simulation engine. Currently, ExGS, QuickSim, and QuickExact are available, with faster simulators in development.
- Gate Function: Specify the Boolean function the gate is intended to implement. Supported functions include AND, OR, NAND, NOR, XOR, and XNOR, with more to be added soon.
- Operational Domain: Define how the operational domain is simulated. Choose from Grid Search, Random Sampling, Flood Fill, or Contour Tracing algorithms. Additionally, set the dimensions, range, and resolution of the operational domain. You can also configure whether to tolerate or reject kinks in the operational domain.
You can hover over the help icons to get more information.
-
▶️ Run the Operational Domain Simulation: Once the settings are configured, start the operational domain simulation. Note that simulation time can vary depending on the simulation engine, reconstruction algorithm, resolution, etc. High-effort simulation may take several minutes, whereas lower resolutions can be explored almost instantaneously. After the simulation is finished, the settings widget is replaced with a visual representation of the operational domain. -
🔍 Analyze the Results: Analyze the operational domain by clicking the plot to gain insights into charge distribution at any parameter point and understand why the gate is operational or not. Blue, gray, and red represent negatively, neutrally, and positively charged SiDBs, respectively. Use the slider below the layout plot to explore the charge distribution for different input patterns. Note that if the gate is inoperable for any input pattern, it is considered inoperable overall. To aid in the analysis, the output binary-dot logic (BDL) pair is framed with a green or red rectangle to represent operational or non-operational behavior, respectively. In addition, if the gate is non-operational due to the presence of kinks, a red
⚡
symbol is displayed.
If you're interested in contributing, feel free to fork the repository and submit pull requests. Make sure to follow the coding guidelines and run tests before submitting your PR.
If you use the Operational Domain Explorer for academic purposes, we would be thankful if you referred to it by citing the following publication:
@inproceedings{walter2023opdom,
title={{Reducing the Complexity of Operational Domain Computation in Silicon Dangling Bond Logic}},
author={Walter, Marcel and Drewniok, Jan and Ng, Samuel Sze Hang and Walus, Konrad and Wille, Robert},
booktitle={International Symposium on Nanoscale Architectures (NANOARCH)},
}
This project is licensed under the Prosperity Public License 3.0.0.
- Permitted Use: You are free to use this software for personal, academic, and other non-commercial purposes.
- Prohibited Use: Commercial use of this software is not permitted under this license. Any form of direct or indirect commercial exploitation is strictly prohibited without obtaining a commercial license first.
If you would like to obtain a commercial license to use this project in a business, product, or any profit-driven environment, please reach out directly for licensing terms.
For further details, please refer to the LICENSE.md file in this repository.
The Munich Nanotech Toolkit has been supported by the Bavarian State Ministry for Science and Arts through the Distinguished Professorship Program.