![]() |
PandA-2024.02
|
identify and optimize lut expressions. More...
#include "lut_transformation.hpp"#include <kitty/print.hpp>#include <mockturtle/algorithms/aig_resub.hpp>#include <mockturtle/algorithms/balancing.hpp>#include <mockturtle/algorithms/balancing/sop_balancing.hpp>#include <mockturtle/algorithms/cleanup.hpp>#include <mockturtle/algorithms/collapse_mapped.hpp>#include <mockturtle/algorithms/cut_rewriting.hpp>#include <mockturtle/algorithms/functional_reduction.hpp>#include <mockturtle/algorithms/lut_mapping.hpp>#include <mockturtle/algorithms/node_resynthesis.hpp>#include <mockturtle/algorithms/node_resynthesis/bidecomposition.hpp>#include <mockturtle/algorithms/node_resynthesis/dsd.hpp>#include <mockturtle/algorithms/node_resynthesis/shannon.hpp>#include <mockturtle/algorithms/node_resynthesis/xag_npn.hpp>#include <mockturtle/algorithms/refactoring.hpp>#include <mockturtle/generators/arithmetic.hpp>#include <mockturtle/io/write_bench.hpp>#include <mockturtle/networks/aig.hpp>#include <mockturtle/networks/klut.hpp>#include <mockturtle/views/mapping_view.hpp>#include <type_traits>#include "Parameter.hpp"#include "allocation_constants.hpp"#include "application_manager.hpp"#include "behavioral_helper.hpp"#include "dbgPrintHelper.hpp"#include "design_flow_graph.hpp"#include "design_flow_manager.hpp"#include "function_behavior.hpp"#include "hls_device.hpp"#include "hls_manager.hpp"#include "math_function.hpp"#include "string_manipulation.hpp"#include "technology_flow_step.hpp"#include "technology_flow_step_factory.hpp"#include "technology_manager.hpp"#include "technology_node.hpp"#include "time_info.hpp"#include "tree_basic_block.hpp"#include "tree_helper.hpp"#include "tree_manager.hpp"#include "tree_manipulation.hpp"#include "tree_reindex.hpp"#include <fstream>
Go to the source code of this file.
Data Structures | |
| class | klut_network_ext |
klut_network_ext class provides operations derived from the one already existing in mockturtle::klut_network. More... | |
| struct | klut_network_node |
Helper structure that better represents a mockturtle::klut_network's node. More... | |
Macros | |
| #define | USE_SAT 0 |
| #define | LIN64 |
| #define | ABC_NAMESPACE pabc |
| #define | ABC_NO_USE_READLINE |
| #define | FMT_HEADER_ONLY 1 |
| #define | PHMAP_BIDIRECTIONAL 0 |
| #define | MCDBGQ_NOLOCKFREE_FREELIST 0 |
| #define | MCDBGQ_TRACKMEM 0 |
| #define | MCDBGQ_NOLOCKFREE_IMPLICITPRODBLOCKINDEX 0 |
| #define | MCDBGQ_NOLOCKFREE_IMPLICITPRODHASH 0 |
| #define | MCDBGQ_USEDEBUGFREELIST 0 |
| #define | DISABLE_NAUTY |
| #define | MIG_SYNTHESIS 0 |
| #define | VECT_CONTAINS(v, x) (std::find((v).begin(), (v).end(), x) != (v).end()) |
Typedefs | |
| using | klut_network_fn = mockturtle::klut_network::signal(klut_network_ext::*)(const mockturtle::klut_network::signal, const mockturtle::klut_network::signal) |
Pointer that points to a function of klut_network_ext, that represents a binary operation between two mockturtle::klut_network::signals and returns a mockturtle::klut_network::signal. More... | |
| using | klut_network_fn_v = std::vector< mockturtle::klut_network::signal >(klut_network_ext::*)(const std::vector< mockturtle::klut_network::signal > &, const std::vector< mockturtle::klut_network::signal > &, bool) |
Pointer that points to a function of klut_network_ext, that represents a binary operation between two std::vector<mockturtle::klut_network::signal>s and returns a std::vector<mockturtle::klut_network::signal>. More... | |
Functions | |
| static klut_network_fn | GetBooleanNodeCreationFunction (enum kind code) |
| static std::vector< bool > | IntegerToBitArray (integer_cst_t n, size_t size) |
| static klut_network_fn_v | GetIntegerNodeCreationFunction (enum kind code) |
| static std::string | ConvertBitsToString (const std::vector< bool > &bits, const std::string &true_string="vdd", const std::string &false_string="gnd", const std::string &sep=", ") |
| template<typename T > | |
| static T | ConvertHexToNumber (const std::string &hex0) |
| static void | ParseKLutNetwork (const mockturtle::klut_network &klut, std::vector< klut_network_node > &luts) |
| template<class kne > | |
| static mockturtle::klut_network | SimplifyLutNetwork (const kne &klut_e, size_t max_lut_size) |
identify and optimize lut expressions.
Definition in file lut_transformation.cpp.
| #define ABC_NAMESPACE pabc |
Definition at line 49 of file lut_transformation.cpp.
| #define ABC_NO_USE_READLINE |
Definition at line 50 of file lut_transformation.cpp.
| #define DISABLE_NAUTY |
Definition at line 59 of file lut_transformation.cpp.
| #define FMT_HEADER_ONLY 1 |
Definition at line 52 of file lut_transformation.cpp.
| #define LIN64 |
Definition at line 48 of file lut_transformation.cpp.
| #define MCDBGQ_NOLOCKFREE_FREELIST 0 |
Definition at line 54 of file lut_transformation.cpp.
| #define MCDBGQ_NOLOCKFREE_IMPLICITPRODBLOCKINDEX 0 |
Definition at line 56 of file lut_transformation.cpp.
| #define MCDBGQ_NOLOCKFREE_IMPLICITPRODHASH 0 |
Definition at line 57 of file lut_transformation.cpp.
| #define MCDBGQ_TRACKMEM 0 |
Definition at line 55 of file lut_transformation.cpp.
| #define MCDBGQ_USEDEBUGFREELIST 0 |
Definition at line 58 of file lut_transformation.cpp.
| #define MIG_SYNTHESIS 0 |
Definition at line 60 of file lut_transformation.cpp.
| #define PHMAP_BIDIRECTIONAL 0 |
Definition at line 53 of file lut_transformation.cpp.
| #define USE_SAT 0 |
Definition at line 46 of file lut_transformation.cpp.
Definition at line 198 of file lut_transformation.cpp.
Referenced by lut_transformation::cannotBeLUT(), and lut_transformation::ProcessBasicBlock().
| using klut_network_fn = mockturtle::klut_network::signal (klut_network_ext::*)(const mockturtle::klut_network::signal, const mockturtle::klut_network::signal) |
Pointer that points to a function of klut_network_ext, that represents a binary operation between two mockturtle::klut_network::signals and returns a mockturtle::klut_network::signal.
Definition at line 558 of file lut_transformation.cpp.
| using klut_network_fn_v = std::vector<mockturtle::klut_network::signal> (klut_network_ext::*)( const std::vector<mockturtle::klut_network::signal>&, const std::vector<mockturtle::klut_network::signal>&, bool) |
Pointer that points to a function of klut_network_ext, that represents a binary operation between two std::vector<mockturtle::klut_network::signal>s and returns a std::vector<mockturtle::klut_network::signal>.
Definition at line 565 of file lut_transformation.cpp.
|
static |
Definition at line 783 of file lut_transformation.cpp.
Referenced by lut_transformation::ProcessBasicBlock().

|
static |
Definition at line 802 of file lut_transformation.cpp.
References x.
|
static |
Definition at line 695 of file lut_transformation.cpp.
References klut_network_ext::create_eq(), klut_network_ext::create_ge(), klut_network_ext::create_gt(), and klut_network_ext::create_ne().
Referenced by lut_transformation::ProcessBasicBlock().


|
static |
Definition at line 761 of file lut_transformation.cpp.
References klut_network_ext::create_eq_v(), klut_network_ext::create_ge_v(), klut_network_ext::create_gt_v(), klut_network_ext::create_le_v(), klut_network_ext::create_lt_v(), and klut_network_ext::create_ne_v().
Referenced by lut_transformation::ProcessBasicBlock().


|
static |
Definition at line 726 of file lut_transformation.cpp.
References container_to_string(), STR, and THROW_ASSERT.
Referenced by lut_transformation::ProcessBasicBlock().


|
static |
Definition at line 812 of file lut_transformation.cpp.
Referenced by lut_transformation::ProcessBasicBlock().

|
static |
scripts taken from https://github.com/lnis-uofu/LSOracle
Definition at line 884 of file lut_transformation.cpp.
References lut_transformation::max_lut_size.
Referenced by lut_transformation::ProcessBasicBlock().

1.8.13