iNML¶
iNML ToPoliNano Library¶
Header: fiction/technology/inml/topolinano_library.hpp
-
class topolinano_library : public fiction::fcn::gate_library<inml::layout, 4, 4>¶
A concrete FCN gate library as used in “ToPoliNano” (https://topolinano.polito.it/) for the iNML technology. In fiction, this is emulated by using vertically shifted layouts and implementing the ToPoliNano library with \(4 \times 4\) magnet positions with one empty row in most tiles (except for MAJ which needs to be handled differently as this library is not uniform otherwise). Theoretically, it allows for multiple wires in the same tile.
Public Static Functions
-
template<typename GateLyt>
static inline gate set_up_gate(const GateLyt &lyt, const fiction::layouts::layout_base::coordinate &t)¶ Overrides the corresponding function in gate_library. Given a tile
t, this function takes all necessary information from the stored grid into account to choose the correct gate representation for that tile. May it be a gate or wires. Rotation and special marks like input and output, const cells etc. are computed additionally.- Template Parameters:
GateLyt – Shifted Cartesian gate-level layout type.
- Parameters:
lyt – Layout that hosts tile
t.t – Tile to be realized as a ToPoliNano gate.
- Throws:
std::invalid_argument – If
lytshifts rows instead of columns.fcn::unsupported_gate_type_exception – If a terminal also acts as a fanout. Connect the terminal to a separate fanout wire instead.
- Returns:
ToPoliNano gate representation of
tincluding I/Os, rotation, etc.
-
static inline void post_layout_optimization(inml::layout &lyt)¶
Post-layout optimization that straightens the wire segments to save cells.
- Parameters:
lyt – The iNML layout that has been created via application of
set_up_gate.
-
template<typename GateLyt>
MagCAD Magnet Count¶
Header: fiction/technology/inml/magcad_magnet_count.hpp
-
inline uint64_t fiction::inml::magcad_magnet_count(const layout &lyt) noexcept¶
Calculates the number of magnets for an iNML layout the way MagCAD (https://topolinano.polito.it/) would do it. That is, counting chains of 4 inverters as a single entity.
- Parameters:
lyt – The iNML layout whose magnets are counted.
- Returns:
Number of magnets as counted by MagCAD.