Network implementations ======================= All network implementations are located in `mockturtle/networks/`: **Headers** * AIG network: ``mockturtle/networks/aig.hpp`` * MIG network: ``mockturtle/networks/mig.hpp`` * XAG network: ``mockturtle/networks/xag.hpp`` * XMG network: ``mockturtle/networks/xmg.hpp`` * *k*-LUT network: ``mockturtle/networks/klut.hpp`` * COVER network: ``mockturtle/networks/cover.hpp`` * abstract XAG network: ``mockturtle/networks/abstract_xag.hpp`` * MUXIG network: ``mockturtle/networks/muxig.hpp`` +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | Interface method | AIG | MIG | XAG | XMG | *k*-LUT | COVER | abstract XAG | MUXIG | +================================+========+========+========+========+=========+========+==============+========+ | ``clone`` | ✓ | ✓ | ✓ | ✓ | ✓ | | | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | | *I/O and constants* | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``get_constant`` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``create_pi`` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``create_po`` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``create_ro`` (**) | | | | | | | | | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``create_ri`` (**) | | | | | | | | | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``is_constant`` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``is_pi`` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``is_ci`` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``is_ro`` (**) | | | | | | | | | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``constant_value`` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | | *Create unary functions* | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``create_buf`` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``create_not`` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | | *Create binary functions* | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``create_and`` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``create_nand`` | ✓ | ✓ | ✓ | ✓ | | ✓ | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``create_or`` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``create_nor`` | ✓ | ✓ | ✓ | ✓ | | ✓ | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``create_lt`` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``create_le`` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``create_gt`` | | | | | | ✓ | | | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``create_ge`` | | | | | | ✓ | | | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``create_xor`` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``create_xnor`` | ✓ | | ✓ | ✓ | | ✓ | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | | *Create ternary functions* | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``create_maj`` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``create_ite`` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``create_xor3`` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | | *Create nary functions* | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``create_nary_and`` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``create_nary_or`` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``create_nary_xor`` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | | *Create arbitrary functions* | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``create_node`` | | | | | ✓ | ✓ | | | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``clone_node`` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | | *Restructuring* | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``substitute_node`` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``substitute_nodes`` | ✓ | | | | | | | | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``replace_in_node`` | ✓ | ✓ | ✓ | ✓ | | | | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``replace_in_outputs`` | ✓ | ✓ | ✓ | ✓ | | | | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``take_out_node`` | ✓ | ✓ | ✓ | ✓ | | | | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``is_dead`` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | | *Structural properties* | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``is_combinational`` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``size`` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``num_pis`` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``num_pos`` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``num_cis`` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``num_cos`` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``num_gates`` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``num_registers`` (**) | | | | | | | | | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``fanin_size`` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``fanout_size`` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``incr_fanout_size`` | ✓ | ✓ | ✓ | ✓ | | | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``decr_fanout_size`` | ✓ | ✓ | ✓ | ✓ | | | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``depth`` (*) | | | | | | | ✓ | | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``level`` (*) | | | | | | | ✓ | | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``is_and`` | ✓ | ✓ | ✓ | ✓ | | | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``is_or`` | ✓ | ✓ | ✓ | ✓ | | | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``is_xor`` | ✓ | ✓ | ✓ | ✓ | | | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``is_maj`` | ✓ | ✓ | ✓ | ✓ | | | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``is_ite`` | ✓ | ✓ | ✓ | ✓ | | | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``is_xor3`` | ✓ | ✓ | ✓ | ✓ | | | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``is_nary_and`` | ✓ | ✓ | ✓ | ✓ | | | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``is_nary_or`` | ✓ | ✓ | ✓ | ✓ | | | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``is_nary_xor`` | ✓ | ✓ | ✓ | ✓ | | | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``is_function`` | | | | | ✓ | ✓ | ✓ | | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | | *Functional properties* | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``node_function`` | ✓ | ✓ | ✓ | ✓ | ✓ | | | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | | *Nodes and signals* | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``get_node`` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``make_signal`` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``is_complemented`` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``node_to_index`` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``index_to_node`` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``pi_at`` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``po_at`` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``ci_at`` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``co_at`` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``ro_at`` (**) | | | | | | | | | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``ri_at`` (**) | | | | | | | | | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``pi_index`` | ✓ | ✓ | ✓ | ✓ | | | | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``po_index`` | ✓ | ✓ | ✓ | ✓ | ✓ | | | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``ci_index`` | ✓ | ✓ | ✓ | ✓ | | | | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``co_index`` | ✓ | ✓ | ✓ | ✓ | | | | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``ro_index`` (**) | | | | | | | | | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``ri_index`` (**) | | | | | | | | | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``ro_to_ri`` (**) | | | | | | | | | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``ri_to_ro`` (**) | | | | | | | | | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | | *Node and signal iterators* | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``foreach_node`` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``foreach_gate`` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``foreach_pi`` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``foreach_po`` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``foreach_ci`` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``foreach_co`` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``foreach_ro`` (**) | | | | | | | | | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``foreach_ri`` (**) | | | | | | | | | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``foreach_register`` (**) | | | | | | | | | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``foreach_fanin`` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``foreach_fanout`` (*) | | | | | | | | | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | | *Simulate values* | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``compute`` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | | *Custom node values* | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``clear_values`` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``value`` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``set_value`` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``incr_value`` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``decr_value`` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | | *Visited flags* | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``clear_visited`` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``visited`` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``set_visited`` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``trav_id`` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``incr_trav_id`` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | | *General methods* | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ | ``events`` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | ✓ | +--------------------------------+--------+--------+--------+--------+---------+--------+--------------+--------+ .. note:: (*) For efficiency reasons, `depth`, `level` and `foreach_fanout` are not implemented in the core of most networks. These interfaces can be extended to a network by wrapping it with appropriate :ref:`views` (in these cases, `depth_view` or `fanout_view`). .. note:: (**) Sequential interfaces are not provided by default, but they can be extended to networks by wrapping with ``sequential`` (See :ref:`sequential`). Supplementary network types --------------------------- Block Network ~~~~~~~~~~~~~ **Header:** ``mockturtle/networks/block.hpp`` This header file defines a data structure of type `block_network`, which is primarily designed to represent both single-output and multi-output nodes. This data structure provides additional methods to create multi-output nodes and access the individual pins. Additional interfaces provided by this network type include: .. doxygenfunction:: mockturtle::block_network::is_multioutput .. doxygenfunction:: mockturtle::block_network::create_ha .. doxygenfunction:: mockturtle::block_network::create_hai .. doxygenfunction:: mockturtle::block_network::create_fa .. doxygenfunction:: mockturtle::block_network::create_fai .. doxygenfunction:: mockturtle::block_network::num_outputs .. doxygenfunction:: mockturtle::block_network::incr_fanout_size_pin .. doxygenfunction:: mockturtle::block_network::decr_fanout_size_pin .. doxygenfunction:: mockturtle::block_network::fanout_size_pin .. doxygenfunction:: mockturtle::block_network::node_function_pin .. doxygenfunction:: mockturtle::block_network::get_output_pin .. doxygenfunction:: mockturtle::block_network::next_output_pin Cover Network ~~~~~~~~~~~~~ **Header:** ``mockturtle/networks/cover.hpp`` This header file defines a data structure of type `cover_network`, which is primarily designed for reading in a `.blif` file and then converting it into other network types (:ref:`cover_to_graph`). This data structure provides an additional node creation function, `create_cover_node`. .. doxygenfunction:: mockturtle::cover_network::create_cover_node Crossed Network ~~~~~~~~~~~~~~~ **Header:** ``mockturtle/networks/crossed.hpp`` The network type `crossed_klut_network` is an extension to *k*-LUT network which supports representation of *crossing* cells. A crossing cell has exactly two inputs and two (ordered) outputs. Additional interfaces provided by this network type include: .. doxygenfunction:: mockturtle::crossed_klut_network::create_crossing .. doxygenfunction:: mockturtle::crossed_klut_network::insert_crossing .. doxygenfunction:: mockturtle::crossed_klut_network::is_crossing .. doxygenfunction:: mockturtle::crossed_klut_network::is_second .. doxygenfunction:: mockturtle::crossed_klut_network::make_second .. doxygenfunction:: mockturtle::crossed_klut_network::ignore_crossings .. doxygenfunction:: mockturtle::crossed_klut_network::foreach_fanin_ignore_crossings Note that the `foreach_gate` function of this network iterates through all logic gates as well as crossings. .. _buffered_network: Buffered Networks ~~~~~~~~~~~~~~~~~ **Header:** ``mockturtle/networks/buffered.hpp`` This header file implements extensions to several network types to `buffered_xxx_network`, currently including: `buffered_aig_network`, `buffered_mig_network`, and `buffered_crossed_klut_network`. Buffered networks support explicit representation of one-input, one-output buffer cells. They serve as interfacing data structure mainly for algorithms related to :ref:`buffer_insertion`. Buffered networks provide or override the following functions: * `create_buf`: Creates a buffer cell * `invert`: Turns a buffer cell into an inverter or vice versa. * `is_buf`: Checks if a node is a buffer, splitter (buffer capable of having multiple fanouts), or inverter cell. * `is_not`: Checks if a buffer cell has negated input (i.e., is an inverter). * `foreach_gate` iterates through logic gates (and crossings, in the case of `buffered_crossed_klut_network`) and neglects buffer, splitter, or inverter cells. * Disables restructuring functions, such as `substitute_node`. Specific for `buffered_crossed_klut_network`: .. doxygenfunction:: mockturtle::buffered_crossed_klut_network::merge_into_crossing **Simulation of buffered networks** .. doxygenfunction:: mockturtle::simulate_buffered Generic Network ~~~~~~~~~~~~~~~ **Header:** ``mockturtle/networks/generic.hpp`` This header file defines a data structure of type `generic_network`, which is primarily designed to represent different node types, such as white and black boxes, registers, input or output box pins. This data represent all the elements as nodes, including POs. Additional interfaces provided by this network type include: .. doxygenfunction:: mockturtle::generic_network::is_node .. doxygenfunction:: mockturtle::generic_network::is_register .. doxygenfunction:: mockturtle::generic_network::is_box_input .. doxygenfunction:: mockturtle::generic_network::is_box_output .. doxygenfunction:: mockturtle::generic_network::create_box_input .. doxygenfunction:: mockturtle::generic_network::create_box_output .. doxygenfunction:: mockturtle::generic_network::create_register .. doxygenfunction:: mockturtle::generic_network::foreach_register .. doxygenfunction:: mockturtle::generic_network::clear_values2 .. doxygenfunction:: mockturtle::generic_network::value2 .. doxygenfunction:: mockturtle::generic_network::set_value2