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:

\[y_{\mathit{hex}} = x_{\mathit{Cart}} + y_{\mathit{Cart}}\]
\[x_{\mathit{hex}} = x_{\mathit{Cart}} + \left \lceil{\left \lfloor{\frac{h}{2}} \right \rfloor} - \frac{y_{\mathit{hex}}}{2}\right \rceil\]
../_images/hexagonalization.svg

Header: fiction/algorithms/physical_design/hexagonalization.hpp

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.

template<typename HexLyt, typename CartLyt>
HexLyt fiction::hexagonalization(const CartLyt &lyt, hexagonalization_stats *pst = nullptr) noexcept

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.

Returns:

Hexagonal representation of the Cartesian layout.