-
Notifications
You must be signed in to change notification settings - Fork 21
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
✨ SiDB Operational Domain Computation #255
Conversation
@Drewniok as you can see, this is WIP code, but I thought I assign you for an early review to keep the workload small. |
Codecov ReportPatch coverage:
Additional details and impacted files@@ Coverage Diff @@
## main #255 +/- ##
==========================================
+ Coverage 95.02% 95.12% +0.09%
==========================================
Files 90 95 +5
Lines 8550 8965 +415
==========================================
+ Hits 8125 8528 +403
- Misses 425 437 +12
☔ View full report in Codecov by Sentry. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for this new function! It will help us a lot.
Signed-off-by: ClangFormat <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM! Thanks for adding more documentation.
@Drewniok Thinking about this more, it probably makes sense to check for a lower distance threshold as well, since we don't want adjacent dots of, e.g., atomic wires to be paired up, right? |
@marcelwa That's a good point! I was also worried about this before. However, I thought that this should not be a problem since we have the flags to only collect for example input cells. I see what you mean. Indeed, for an atomic wire with for example 3 BDL pairs, we would detect 5 pairs, right? (assuming we use 2 nm by default) |
Yes, the current algorithm focuses on cells that are flagged with the input label. Two things here, though: (1) Why would we assume that a user would not "misflag" cells or put cells too close together, even if it is accidental? (2) The data type
I'm not sure if I understand this right. In the current algorithm, each SiDB can only appear in a single pair. It cannot be matched multiple times. |
Yes, these are good thoughts. Let's take this OR gate where the two input BDLs are a little closer than normal. If a user doesn't mark them correctly, it's really hard to correctly detect the correct input BDL pair. 2.) What is the definition of a
Sorry, I was wrong. |
I don't think I understand what you mean by the look-up table idea. Could you elaborate on that, please? Regarding 1 nm as the upper bound: I think that could be too narrow. In the Bestagon gate library, for instance, input/output BDL pairs are ~1.086 nm apart. Given this information, what do you think would be a good upper bound? 1.5 nm maybe?
In my understanding, any two dots that are close enough together such that they are likely to share a charge. In a BDL wire for instance you have always two dots a bit closer together and then a little bit of space and then the next two dots. Those would be regular BDL pairs while the first and last in the row would be input/output BDL pairs, respectively. |
…id matching, e.g., atomic wires as BDL pairs
I think the look-up table is a bit overkill at the moment. I was just thinking that maybe we could store some threashold values for different µ values. But as I said, I think this is not that important yet, since we mostly investigate layouts at around µ ~ -0.3 eV. I agree, let's start with 1.5 nm as an upper limit.
|
… input states of an SiDB layout
include/fiction/algorithms/simulation/sidb/operational_domain.hpp
Outdated
Show resolved
Hide resolved
include/fiction/algorithms/simulation/sidb/operational_domain.hpp
Outdated
Show resolved
Hide resolved
include/fiction/algorithms/simulation/sidb/operational_domain.hpp
Outdated
Show resolved
Hide resolved
# Conflicts: # docs/algorithms/iterators.rst # docs/algorithms/sidb_simulation.rst
Signed-off-by: ClangFormat <[email protected]>
include/fiction/algorithms/simulation/sidb/operational_domain.hpp
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Many thanks, LGTM! This is a super cool and convienent contribution.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
clang-tidy made some suggestions
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
clang-tidy made some suggestions
|
Description
This PR adds several functions to compute the Operational Domain of a given SiDB Layout. The operational domain is the set of all parameter combinations for which the layout is logically operational. Logical operation is defined as the layout implementing a given truth table.
To this end, this PR proposes four operational domain computation algorithms:
Furthermore, this PR adds a couple of utilities:
Checklist: