mnt-opdom-explorer

Explore Operational Domains of SiDB logic gates

https://github.com/cda-tum/mnt-opdom-explorer

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 1 DOI reference(s) in README
  • Academic publication links
    Links to: acm.org
  • Committers with academic emails
    1 of 3 committers (33.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 (15.7%) to scientific vocabulary
Last synced: 6 months ago · JSON representation ·

Repository

Explore Operational Domains of SiDB logic gates

Basic Info
  • Host: GitHub
  • Owner: cda-tum
  • License: other
  • Language: Python
  • Default Branch: main
  • Size: 2.25 MB
Statistics
  • Stars: 25
  • Watchers: 1
  • Forks: 0
  • Open Issues: 29
  • Releases: 0
Created almost 2 years ago · Last pushed 6 months ago
Metadata Files
Readme License Citation

README.md

OS Python CI Coverage License IEEEXplore

Operational Domain Explorer

[!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.

📊 Operational Domain Analysis

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.

🚀 Getting Started

📥 Step 1: Clone the Repository

First, clone the repository to your local machine using Git:

bash git clone https://github.com/cda-tum/opdom-explore.git cd opdom-explore

🖥️ Step 2: Running the Application

First, make sure to install uv.

bash pip install uv

Second, to start the Operational Domain Explorer, run the application as follows:

bash cd src/mnt/opdom_explorer/ uv run main.py

✅ Step 3: Running Tests

  1. Run the tests:

bash uvx nox -s tests --verbose

🌌 Step 4: How to explore your first Operational Domain

📜 Workflow Overview

  1. 📂 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.

  2. ⚙️ 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.

  1. ▶️ 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.

  2. 🔍 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.

🤝 Contributing

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.

📖 Reference

If you use the Operational Domain Explorer for academic purposes, we would be thankful if you referred to it by citing the following publication:

bibtex @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)}, }


📜 License

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.


🙏 Acknowledgements

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

TUM Logo       Coat of Arms of Bavaria

Owner

  • Name: Chair for Design Automation, TU Munich
  • Login: cda-tum
  • Kind: organization
  • Location: Germany

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: "Sze Hang Ng"
  given-names: "Samuel"
  orcid: "0000-0001-8061-3074"
- family-names: "Walus"
  given-names: "Konrad"
  orcid: "0000-0002-3639-6858"
- family-names: "Wille"
  given-names: "Robert"
  orcid: "0000-0002-4993-7860"
title: "Reducing the Complexity of Operational Domain Computation in Silicon Dangling Bond Logic"
version: 0.1.0
doi: 10.1145/3611315.3633246
url: "https://github.com/cda-tum/mnt-opdom-explorer"

GitHub Events

Total
  • Issues event: 1
  • Watch event: 14
  • Issue comment event: 4
  • Push event: 90
  • Public event: 1
  • Pull request event: 11
  • Create event: 7
Last Year
  • Issues event: 1
  • Watch event: 14
  • Issue comment event: 4
  • Push event: 90
  • Public event: 1
  • Pull request event: 11
  • Create event: 7

Committers

Last synced: 8 months ago

All Time
  • Total Commits: 106
  • Total Committers: 3
  • Avg Commits per committer: 35.333
  • Development Distribution Score (DDS): 0.566
Past Year
  • Commits: 93
  • Committers: 3
  • Avg Commits per committer: 31.0
  • Development Distribution Score (DDS): 0.613
Top Committers
Name Email Commits
Marcel Walter m****r@t****e 46
renovate[bot] 2****] 36
Jan Drewniok j****h@g****m 24
Committer Domains (Top 20 + Academic)
tum.de: 1

Issues and Pull Requests

Last synced: 8 months ago

All Time
  • Total issues: 33
  • Total pull requests: 65
  • Average time to close issues: 2 months
  • Average time to close pull requests: 7 days
  • Total issue authors: 3
  • Total pull request authors: 3
  • Average comments per issue: 0.7
  • Average comments per pull request: 0.98
  • Merged pull requests: 50
  • Bot issues: 1
  • Bot pull requests: 47
Past Year
  • Issues: 33
  • Pull requests: 65
  • Average time to close issues: 2 months
  • Average time to close pull requests: 7 days
  • Issue authors: 3
  • Pull request authors: 3
  • Average comments per issue: 0.7
  • Average comments per pull request: 0.98
  • Merged pull requests: 50
  • Bot issues: 1
  • Bot pull requests: 47
Top Authors
Issue Authors
  • marcelwa (19)
  • Drewniok (11)
  • renovate[bot] (1)
Pull Request Authors
  • renovate[bot] (57)
  • Drewniok (13)
  • marcelwa (6)
Top Labels
Issue Labels
enhancement (18) bug (12)
Pull Request Labels
dependencies (44) python (24) pre-commit (17) enhancement (8) documentation (6) bug (5) github-actions (3) ux (1)

Dependencies

.github/workflows/ci.yml actions
  • actions/checkout v4 composite
  • astral-sh/setup-uv v5 composite
  • hendrikmuhs/ccache-action v1.2 composite
  • rui314/setup-mold v1 composite
.github/workflows/codeql-analysis.yml actions
  • actions/checkout v4 composite
  • actions/setup-python v5 composite
  • advanced-security/filter-sarif main composite
  • github/codeql-action/analyze v3 composite
  • github/codeql-action/init v3 composite
  • github/codeql-action/upload-sarif v3 composite
  • jlumbroso/free-disk-space main composite
.github/workflows/coverage.yml actions
  • actions/checkout v4 composite
  • actions/setup-python v5 composite
  • codecov/codecov-action v5 composite
.github/workflows/release-drafter.yml actions
  • release-drafter/release-drafter v6 composite
pyproject.toml pypi
  • PyQt6 ==6.8.1
  • matplotlib ==3.10.1
  • mnt.pyfiction ==0.6.10
  • pandas ==2.2.3
  • qtawesome ==1.4.0
  • scikit-learn ==1.6.1
uv.lock pypi
  • argcomplete 3.6.0
  • attrs 25.3.0
  • cfgv 3.4.0
  • colorama 0.4.6
  • colorlog 6.9.0
  • contourpy 1.3.1
  • coverage 7.7.0
  • cycler 0.12.1
  • dependency-groups 1.3.0
  • distlib 0.3.9
  • exceptiongroup 1.2.2
  • filelock 3.18.0
  • fonttools 4.56.0
  • hatch-vcs 0.4.0
  • hatchling 1.27.0
  • identify 2.6.9
  • iniconfig 2.0.0
  • joblib 1.4.2
  • kiwisolver 1.4.8
  • matplotlib 3.10.1
  • mnt-opdom-explorer *
  • mnt-pyfiction 0.6.10
  • nodeenv 1.9.1
  • nox 2025.2.9
  • numpy 2.2.4
  • packaging 24.2
  • pandas 2.2.3
  • pathspec 0.12.1
  • pillow 11.1.0
  • platformdirs 4.3.6
  • pluggy 1.5.0
  • pre-commit 4.1.0
  • pyparsing 3.2.1
  • pyqt6 6.8.1
  • pyqt6-qt6 6.8.2
  • pyqt6-sip 13.10.0
  • pytest 8.3.5
  • pytest-console-scripts 1.4.1
  • pytest-cov 6.0.0
  • python-dateutil 2.9.0.post0
  • pytz 2025.1
  • pyyaml 6.0.2
  • qtawesome 1.4.0
  • qtpy 2.4.3
  • scikit-learn 1.6.1
  • scipy 1.15.2
  • setuptools 76.0.0
  • setuptools-scm 8.2.0
  • six 1.17.0
  • threadpoolctl 3.6.0
  • tomli 2.2.1
  • trove-classifiers 2025.3.13.13
  • tzdata 2025.1
  • virtualenv 20.29.3
  • z3-solver 4.14.1.0