Mapping Cartesian to Hexagonal Layouts
This algorithm maps Cartesian 2DDWave-clocked layouts used for Quantum-dot Cellular Automata (QCA) to hexagonal row-clocked layouts, which are suitable for Silicon Dangling Bonds (SiDBs).
The respective coordinates on the hexagonal grid are calculated as follows:
Header: fiction/algorithms/physical_design/hexagonalization.hpp
-
struct hexagonalization_params
This structure encapsulates settings that determine how primary inputs (PIs) and primary outputs (POs) are handled during the conversion from a Cartesian to a hexagonal layout.
Public Types
-
enum class io_pin_extension_mode : std::uint8_t
Specifies how primary inputs/outputs should be handled in the hexagonalization process.
Values:
-
enumerator NONE
Do not extend primary inputs/outputs to the top/bottom row (default).
-
enumerator EXTEND
Extend primary inputs/outputs to the top/bottom row.
-
enumerator EXTEND_PLANAR
Extend primary inputs/outputs to the top/bottom row with planar rerouting (i.e., without crossings).
-
enumerator NONE
Public Members
-
io_pin_extension_mode input_pin_extension = io_pin_extension_mode::NONE
Input extension mode. Defaults to none
-
io_pin_extension_mode output_pin_extension = io_pin_extension_mode::NONE
Output extension mode. Defaults to none
-
enum class io_pin_extension_mode : std::uint8_t
-
struct hexagonalization_stats
This struct stores statistics about the hexagonalization process.
Public Functions
-
inline void report(std::ostream &out = std::cout) const
Reports the statistics to the given output stream.
- Parameters:
out – Output stream.
Public Members
-
mockturtle::stopwatch::duration time_total = {0}
Runtime of the hexagonalization process.
-
uint64_t x_size = {0ull}
Layout width.
-
uint64_t y_size = {0ull}
Layout height.
-
uint64_t num_gates = {0ull}
Number of gates.
-
uint64_t num_wires = {0ull}
Number of wires.
-
uint64_t num_crossings = {0ull}
Number of crossings.
-
inline void report(std::ostream &out = std::cout) const
-
template<typename HexLyt, typename CartLyt>
HexLyt fiction::hexagonalization(const CartLyt &lyt, const hexagonalization_params ¶ms = {}, hexagonalization_stats *stats = nullptr) Transforms a 2DDWave-clocked Cartesian layout into a hexagonal even row clocked layout suitable for SiDBs by remapping all gates and wires as originally proposed in “Scalable Physical Design for Silicon Dangling Bond Logic: How a 45° Turn Prevents the Reinvention of the Wheel” by S. Hofmann, M. Walter, and R. Wille in IEEE NANO 2023 (https://ieeexplore.ieee.org/document/10231278).
- Template Parameters:
HexLyt – Even-row hexagonal gate-level layout return type.
CartLyt – Input Cartesian gate-level layout type.
- Parameters:
lyt – 2DDWave-clocked Cartesian gate-level layout to hexagonalize.
params – Parameters.
stats – Statistics.
- Returns:
Hexagonal representation of the Cartesian layout.
- class mnt.pyfiction.hexagonalization_params
This structure encapsulates settings that determine how primary inputs (PIs) and primary outputs (POs) are handled during the conversion from a Cartesian to a hexagonal layout.
- property input_pin_extension
Input extension mode. Defaults to none
- property output_pin_extension
Output extension mode. Defaults to none
- class mnt.pyfiction.hexagonalization_stats
This struct stores statistics about the hexagonalization process.
- property num_crossings
Number of crossings.
- property num_gates
Number of gates.
- property num_wires
Number of wires.
- property time_total
Runtime of the hexagonalization process.
- property x_size
Layout width.
- property y_size
Layout height.
- mnt.pyfiction.hexagonalization(layout: mnt.pyfiction.pyfiction.cartesian_gate_layout, parameters: mnt.pyfiction.pyfiction.hexagonalization_params = <mnt.pyfiction.pyfiction.hexagonalization_params object at 0x799b231e2f30>, statistics: mnt.pyfiction.pyfiction.hexagonalization_stats = None) mnt.pyfiction.pyfiction.hexagonal_gate_layout
Transforms a 2DDWave-clocked Cartesian layout into a hexagonal even row clocked layout suitable for SiDBs by remapping all gates and wires as originally proposed in "Scalable Physical Design for Silicon Dangling Bond Logic: How a 45° Turn Prevents the Reinvention of the Wheel" by S. Hofmann, M. Walter, and R. Wille in IEEE NANO 2023 (https://ieeexplore.ieee.org/document/10231278).
- Template parameter
HexLyt: Even-row hexagonal gate-level layout return type.
- Template parameter
CartLyt: Input Cartesian gate-level layout type.
- Parameter
lyt: 2DDWave-clocked Cartesian gate-level layout to hexagonalize.
- Parameter
params: Parameters.
- Parameter
stats: Statistics.
- Returns:
Hexagonal representation of the Cartesian layout.
- Template parameter