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 QUICKCELL
Public Members
-
is_operational_params operational_params = {}
Parameters for the
is_operational
function.
-
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. 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_canvas_sidbs
SiDBs within a given canvas are exhaustively determined. This ensures exhaustive coverage of every potential arrangement ofnumber_of_canvas_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_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_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 0x7b94bc740b70>, 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. 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_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 0x7b94bc9031b0>, 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. 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_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.