SiDB Gate Designer
Header: fiction/algorithms/physical_design/design_sidb_gates.hpp
-
template<typename Lyt>
struct design_sidb_gates_params This struct contains parameters and settings to design SiDB gates.
- Template Parameters:
Cell-level – layout type.
Public Types
Public Members
-
sidb_simulation_parameters simulation_parameters = {}
All Parameters for physical SiDB simulations.
-
design_sidb_gates_mode design_mode = design_sidb_gates_mode::EXHAUSTIVE
Gate design mode.
-
std::pair<typename Lyt::cell, typename Lyt::cell> canvas = {}
Canvas spanned by the northwest and southeast cell.
-
std::size_t number_of_sidbs = 1
Number of SiDBs placed in the canvas to create a working gate.
-
sidb_simulation_engine sim_engine = {sidb_simulation_engine::QUICKEXACT}
The simulation engine to be used for the operational domain computation.
-
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<Lyt> ¶ms = {}) 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. Two different design modes are implemented:
exhaustive
andrandom design
.The
exhaustive design
is composed of three steps:In the initial step, all possible distributions of
number_of_sidbs
SiDBs within a given canvas are exhaustively determined. This ensures exhaustive coverage of every potential arrangement ofnumber_of_sidbs
SiDBs 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 design
is composed of four steps:A specified number of canvas SiDBs (
number_of_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 as a starting point for gate design.
spec – Expected Boolean function of the layout given as a multi-output truth table.
params – Parameters for the SiDB Gate Designer.
- Returns:
A vector of designed SiDB gate layouts.
- class mnt.pyfiction.design_sidb_gates_params
This struct contains parameters and settings to design SiDB gates.
- Template parameter
Cell
: -level layout type.
- property canvas
Canvas spanned by the northwest and southeast cell.
- property design_mode
Gate design mode.
- property number_of_sidbs
Number of SiDBs placed in the canvas to create a working gate.
- property sim_engine
The simulation engine to be used for the operational domain computation.
- property simulation_parameters
This struct contains parameters and settings to design SiDB gates.
- Template parameter
Cell
: -level layout type.
- Template parameter
- Template parameter
- mnt.pyfiction.design_sidb_gates(skeleton: mnt.pyfiction.sidb_layout, spec: list[mnt.pyfiction.dynamic_truth_table], params: mnt.pyfiction.design_sidb_gates_params = <mnt.pyfiction.design_sidb_gates_params object at 0x7fd5cbb346f0>) list[mnt.pyfiction.sidb_layout]
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. Two different design modes are implemented: exhaustive and random design.
The exhaustive design is composed of three steps: 1. In the initial step, all possible distributions of number_of_sidbs SiDBs within a given canvas are exhaustively determined. This ensures exhaustive coverage of every potential arrangement of
number_of_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_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 as a starting point 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.
- Returns:
A vector of designed SiDB gate layouts.
- Template parameter