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::signal s 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::signal
s 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().