Determine Clocking
Header: fiction/algorithms/physical_design/determine_clocking.hpp
Determines a new clock number assignment for the given gate-level layout. Whether the layout has useful/valid clocking information or not, this function will override each gate and wire segment with new clocking information if a valid clock number assignment exists.
-
struct determine_clocking_params
Parameters for the
determine_clocking
algorithm.Public Members
-
bill::solvers sat_engine = bill::solvers::bsat2
The SAT solver to use.
-
bill::solvers sat_engine = bill::solvers::bsat2
-
struct determine_clocking_stats
Statistics for the
determine_clocking
algorithm.Public Functions
-
inline void report(std::ostream &out = std::cout) const
Reports the statistics to the given output stream.
- Parameters:
out – The output stream to report to.
Public Members
-
mockturtle::stopwatch::duration time_total = {0}
Total runtime.
-
inline void report(std::ostream &out = std::cout) const
-
template<typename Lyt>
bool fiction::determine_clocking(Lyt &lyt, const determine_clocking_params ¶ms = {}, determine_clocking_stats *stats = nullptr) Determines clock numbers for the given (unclocked) gate-level layout. This algorithm parses the layout’s gate and wire connections, disregarding any existing clocking information, and constructs a SAT instance to find a valid clock number assignment under which the information flow is respected. It then assigns these clock numbers as an irregular clock map to the given layout via the
assign_clock_number
function, overriding any existing clocking scheme.If no valid clock number assignment exists for
lyt
, this function returnsfalse
and does not modifylyt
.This algorithm was proposed in “Ending the Tyranny of the Clock: SAT-based Clock Number Assignment for Field-coupled Nanotechnologies” by M. Walter, J. Drewniok, and R. Wille in IEEE NANO 2024 (https://ieeexplore.ieee.org/abstract/document/10628908).
- Template Parameters:
Lyt – Gate-level layout type.
- Parameters:
lyt – The gate-level layout to assign clock numbers to.
params – Parameters.
stats – Statistics.
- Returns:
true
ifflyt
could be successfully clocked via a valid clock number assignment.