SiDB Gate Designer
Header: fiction/algorithms/physical_design/design_sidb_gates.hpp
-
struct design_sidb_gates_stats
Statistics for the design of SiDB gates.
Public Functions
-
inline void report(std::ostream &out = std::cout) const
This function outputs the total time taken for the SiDB gate design process to the provided output stream. If no output stream is provided, it defaults to standard output (
std::cout).- Parameters:
out – The output stream to which the report will be written.
Public Members
-
mockturtle::stopwatch::duration time_total = {0}
The total runtime of SiDB gate design process.
-
mockturtle::stopwatch::duration pruning_total = {0}
The runtime of the pruning process.
-
sidb_simulation_engine sim_engine = {sidb_simulation_engine::QUICKEXACT}
The simulation engine to be used for the operational domain computation.
-
std::size_t number_of_layouts = {0}
The number of all possible layouts.
-
std::size_t number_of_layouts_after_first_pruning = {0}
The number of layouts that remain after first pruning (discarding layouts with potential positive SiDBs).
-
std::size_t number_of_layouts_after_second_pruning = {0}
The number of layouts that remain after second pruning (discarding layouts that fail to satisfy the physical model).
-
std::size_t number_of_layouts_after_third_pruning = {0}
The number of layouts that remain after third pruning (discarding layouts with unstable I/O signals).
-
inline void report(std::ostream &out = std::cout) const
-
template<typename CellType>
struct design_sidb_gates_params This struct contains parameters and settings to design SiDB gates.
- Template Parameters:
CellType – Cell type.
Public Types
-
enum class termination_condition : uint8_t
Selector for the different termination conditions for the SiDB gate design process.
Values:
-
enumerator AFTER_FIRST_SOLUTION
The design process is terminated as soon as the first valid SiDB gate design is found.
-
enumerator ALL_COMBINATIONS_ENUMERATED
The design process ends after all possible combinations of SiDBs within the canvas are enumerated.
-
enumerator AFTER_FIRST_SOLUTION
-
enum class design_sidb_gates_mode : uint8_t
Selector for the available design approaches.
Values:
-
enumerator QUICKCELL
Gates are designed by using QuickCell.
-
enumerator AUTOMATIC_EXHAUSTIVE_GATE_DESIGNER
Gates are designed by using the Automatic Exhaustive Gate Designer.
-
enumerator RANDOM
Gate layouts are designed randomly.
-
enumerator PRUNING_ONLY
This design approach adopts the three pruning techniques used by QuickCell to efficiently filter out non-operational layouts. Unlike QuickCell, the subsequent physical simulation step is skipped to enhance efficiency. As a result, the operational validity of the final layouts cannot be guaranteed, although a substantial portion of them are usually operational.
-
enumerator QUICKCELL
Public Members
-
is_operational_params operational_params = {}
Parameters for the
is_operationalfunction.
-
design_sidb_gates_mode design_mode = design_sidb_gates_mode::AUTOMATIC_EXHAUSTIVE_GATE_DESIGNER
Gate design mode.
-
std::pair<CellType, CellType> canvas = {{24, 17}, {34, 28}}
Canvas spanned by the northwest and southeast cell.
-
std::size_t number_of_canvas_sidbs = 1
Number of SiDBs placed in the canvas to create a working gate.
-
termination_condition termination_cond = termination_condition::AFTER_FIRST_SOLUTION
The design process is terminated after a valid SiDB gate design is found.
Note
This parameter has no effect unless the gate design is exhaustive.
-
template<typename Lyt, typename TT>
std::vector<Lyt> fiction::design_sidb_gates(const Lyt &skeleton, const std::vector<TT> &spec, const design_sidb_gates_params<cell<Lyt>> ¶ms = {}, design_sidb_gates_stats *stats = nullptr) noexcept The SiDB Gate Designer designs SiDB gate implementations based on a specified Boolean function, a skeleton layout (can hold defects), canvas size, and a predetermined number of canvas SiDBs. Three different design modes are implemented:
quickcell,exhaustiveandrandom design.A first version of
QuickCellwas proposed in “Towards Fast Automatic Design of Silicon Dangling Bond Logic” by J. Drewniok, M. Walter, S. S. H. Ng, K. Walus, and R. Wille in DATE 2025 (https://ieeexplore.ieee.org/abstract/document/10992885).An extended version of
QuickCellwas proposed in “QuickCell: Fast Automatic Design of Standard Cells for Silicon Dangling Bond Logic” by J. Drewniok, M. Walter, S. S. H. Ng, K. Walus, and R. Wille in TCAD 2025 (https://ieeexplore.ieee.org/document/11146893).The
Automatic Exhaustive Gate Designerwas proposed in “Minimal Design of SiDB Gates: An Optimal Basis for Circuits Based on Silicon Dangling Bonds” by J. Drewniok, M. Walter, and R. Wille in NANOARCH 2023 (https://dl.acm.org/doi/10.1145/3611315.3633241).The
quickcelldesign mode consists of two key steps:Initial Pruning: Efficient filtering techniques are applied to discard layouts that cannot correctly implement the specified logic.
Physical Simulation: The remaining candidate layouts undergo physical simulation to verify their operationality.
The
exhaustive designis composed of three steps:In the initial step, all possible distributions of
number_of_canvas_sidbsSiDBs within a given canvas are exhaustively determined. This ensures exhaustive coverage of every potential arrangement ofnumber_of_canvas_sidbsSiDBs across the canvas.The calculated SiDB distributions are then incorporated into the skeleton, resulting in the generation of distinct SiDB layouts.
The generated SiDB layouts then undergo an extensive simulation process. All input combinations possible for the given Boolean function are used to verify if the logic is fulfilled.
The
random designis composed of four steps:A specified number of canvas SiDBs (
number_of_canvas_sidbs) are randomly added to the skeleton layout.The operation status of the layout is simulated based on a given Boolean function.
If the layout is
operational, it is returned as the result, and the process terminates successfully.If the layout is
non-operational, the process is repeated from the first step until an operational layout is found.
- Template Parameters:
Lyt – SiDB cell-level layout type.
TT – The type of the truth table specifying the gate behavior.
- Parameters:
skeleton – The skeleton layout used for gate design.
spec – Expected Boolean function of the layout given as a multi-output truth table.
params – Parameters for the SiDB Gate Designer.
stats – Statistics.
- Returns:
A vector of designed SiDB gate layouts.
- class mnt.pyfiction.design_sidb_gates_stats
Statistics for the design of SiDB gates.
- class mnt.pyfiction.design_sidb_gates_params
This struct contains parameters and settings to design SiDB gates.
- Template parameter
CellType: Cell type.
- property canvas
Canvas spanned by the northwest and southeast cell.
- property design_mode
Gate design mode.
- property number_of_canvas_sidbs
Number of SiDBs placed in the canvas to create a working gate.
- property operational_params
Parameters for the is_operational function.
- property termination_cond
Selector for the different termination conditions for the SiDB gate design process.
- Template parameter
- mnt.pyfiction.design_sidb_gates(*args, **kwargs)
Overloaded function.
design_sidb_gates(skeleton: fiction::sidb_lattice<fiction::sidb_100_lattice, fiction::cell_level_layout<fiction::sidb_technology, fiction::clocked_layout<fiction::tile_based_layout<fiction::cartesian_layout<fiction::offset::ucoord_t> > > >, false>, spec: collections.abc.Sequence[mnt.pyfiction.pyfiction.dynamic_truth_table], params: mnt.pyfiction.pyfiction.design_sidb_gates_params = <mnt.pyfiction.pyfiction.design_sidb_gates_params object at 0x799b43199670>, stats: mnt.pyfiction.pyfiction.design_sidb_gates_stats = None) -> list[fiction::sidb_lattice<fiction::sidb_100_lattice, fiction::cell_level_layout<fiction::sidb_technology, fiction::clocked_layout<fiction::tile_based_layout<fiction::cartesian_layout<fiction::offset::ucoord_t> > > >, false>]
The SiDB Gate Designer designs SiDB gate implementations based on a specified Boolean function, a skeleton layout (can hold defects), canvas size, and a predetermined number of canvas SiDBs. Three different design modes are implemented: quickcell, exhaustive and random design.
A first version of QuickCell was proposed in "Towards Fast Automatic Design of Silicon Dangling Bond Logic" by J. Drewniok, M. Walter, S. S. H. Ng, K. Walus, and R. Wille in DATE 2025 (https://ieeexplore.ieee.org/abstract/document/10992885).
An extended version of QuickCell was proposed in "QuickCell: Fast Automatic Design of Standard Cells for Silicon Dangling Bond Logic" by J. Drewniok, M. Walter, S. S. H. Ng, K. Walus, and R. Wille in TCAD 2025 (https://ieeexplore.ieee.org/document/11146893).
The Automatic Exhaustive Gate Designer was proposed in "Minimal Design of SiDB Gates: An Optimal Basis for Circuits Based on Silicon Dangling Bonds" by J. Drewniok, M. Walter, and R. Wille in NANOARCH 2023 (https://dl.acm.org/doi/10.1145/3611315.3633241).
The quickcell design mode consists of two key steps: 1. Initial Pruning: Efficient filtering techniques are applied to discard layouts that cannot correctly implement the specified logic. 2. Physical Simulation: The remaining candidate layouts undergo physical simulation to verify their operationality.
The exhaustive design is composed of three steps: 1. In the initial step, all possible distributions of number_of_canvas_sidbs SiDBs within a given canvas are exhaustively determined. This ensures exhaustive coverage of every potential arrangement of number_of_canvas_sidbs SiDBs across the canvas. 2. The calculated SiDB distributions are then incorporated into the skeleton, resulting in the generation of distinct SiDB layouts. 3. The generated SiDB layouts then undergo an extensive simulation process. All input combinations possible for the given Boolean function are used to verify if the logic is fulfilled.
The random design is composed of four steps: 1. A specified number of canvas SiDBs (number_of_canvas_sidbs) are randomly added to the skeleton layout. 2. The operation status of the layout is simulated based on a given Boolean function. 3. If the layout is operational, it is returned as the result, and the process terminates successfully. 4. If the layout is non-operational, the process is repeated from the first step until an operational layout is found.
- Template parameter
Lyt: SiDB cell-level layout type.
- Template parameter
TT: The type of the truth table specifying the gate behavior.
- Parameter
skeleton: The skeleton layout used for gate design.
- Parameter
spec: Expected Boolean function of the layout given as a multi-output truth table.
- Parameter
params: Parameters for the SiDB Gate Designer.
- Parameter
stats: Statistics.
- Returns:
A vector of designed SiDB gate layouts.
design_sidb_gates(skeleton: fiction::sidb_lattice<fiction::sidb_111_lattice, fiction::cell_level_layout<fiction::sidb_technology, fiction::clocked_layout<fiction::tile_based_layout<fiction::cartesian_layout<fiction::offset::ucoord_t> > > >, false>, spec: collections.abc.Sequence[mnt.pyfiction.pyfiction.dynamic_truth_table], params: mnt.pyfiction.pyfiction.design_sidb_gates_params = <mnt.pyfiction.pyfiction.design_sidb_gates_params object at 0x799b231bfdb0>, stats: mnt.pyfiction.pyfiction.design_sidb_gates_stats = None) -> list[fiction::sidb_lattice<fiction::sidb_111_lattice, fiction::cell_level_layout<fiction::sidb_technology, fiction::clocked_layout<fiction::tile_based_layout<fiction::cartesian_layout<fiction::offset::ucoord_t> > > >, false>]
The SiDB Gate Designer designs SiDB gate implementations based on a specified Boolean function, a skeleton layout (can hold defects), canvas size, and a predetermined number of canvas SiDBs. Three different design modes are implemented: quickcell, exhaustive and random design.
A first version of QuickCell was proposed in "Towards Fast Automatic Design of Silicon Dangling Bond Logic" by J. Drewniok, M. Walter, S. S. H. Ng, K. Walus, and R. Wille in DATE 2025 (https://ieeexplore.ieee.org/abstract/document/10992885).
An extended version of QuickCell was proposed in "QuickCell: Fast Automatic Design of Standard Cells for Silicon Dangling Bond Logic" by J. Drewniok, M. Walter, S. S. H. Ng, K. Walus, and R. Wille in TCAD 2025 (https://ieeexplore.ieee.org/document/11146893).
The Automatic Exhaustive Gate Designer was proposed in "Minimal Design of SiDB Gates: An Optimal Basis for Circuits Based on Silicon Dangling Bonds" by J. Drewniok, M. Walter, and R. Wille in NANOARCH 2023 (https://dl.acm.org/doi/10.1145/3611315.3633241).
The quickcell design mode consists of two key steps: 1. Initial Pruning: Efficient filtering techniques are applied to discard layouts that cannot correctly implement the specified logic. 2. Physical Simulation: The remaining candidate layouts undergo physical simulation to verify their operationality.
The exhaustive design is composed of three steps: 1. In the initial step, all possible distributions of number_of_canvas_sidbs SiDBs within a given canvas are exhaustively determined. This ensures exhaustive coverage of every potential arrangement of number_of_canvas_sidbs SiDBs across the canvas. 2. The calculated SiDB distributions are then incorporated into the skeleton, resulting in the generation of distinct SiDB layouts. 3. The generated SiDB layouts then undergo an extensive simulation process. All input combinations possible for the given Boolean function are used to verify if the logic is fulfilled.
The random design is composed of four steps: 1. A specified number of canvas SiDBs (number_of_canvas_sidbs) are randomly added to the skeleton layout. 2. The operation status of the layout is simulated based on a given Boolean function. 3. If the layout is operational, it is returned as the result, and the process terminates successfully. 4. If the layout is non-operational, the process is repeated from the first step until an operational layout is found.
- Template parameter
Lyt: SiDB cell-level layout type.
- Template parameter
TT: The type of the truth table specifying the gate behavior.
- Parameter
skeleton: The skeleton layout used for gate design.
- Parameter
spec: Expected Boolean function of the layout given as a multi-output truth table.
- Parameter
params: Parameters for the SiDB Gate Designer.
- Parameter
stats: Statistics.
- Returns:
A vector of designed SiDB gate layouts.