Apply Gate Library

Applies an FCN gate library to a gate_level_layout to obtain a cell_level_layout implemented in the same technology as the provided gate library. Thereby, this function creates cell-accurate implementations for each gate present in the passed gate_level_layout.

Header: fiction/algorithms/physical_design/apply_gate_library.hpp

template<typename CellLyt, typename GateLibrary, typename GateLyt>
CellLyt fiction::apply_gate_library(const GateLyt &lyt)

Applies a gate library to a given gate-level layout and, thereby, creates and returns a cell-level layout. The gate library type should provide all functions specified in fcn_gate_library. It is, thus, easiest to extend fcn_gate_library to implement a new gate library. Examples are qca_one_library, inml_topolinano_library, and sidb_bestagon_library.

May pass through, and thereby throw, an unsupported_gate_type_exception or an unsupported_gate_orientation_exception.

Template Parameters:
  • CellLyt – Type of the returned cell-level layout.

  • GateLibrary – Type of the gate library to apply.

  • GateLyt – Type of the gate-level layout to apply the library to.

Parameters:

lyt – The gate-level layout.

Returns:

A cell-level layout that implements lyt’s gate types with building blocks defined in GateLibrary.