PandA-2024.02
|
Class implementation of the module binding algorithm. More...
#include "cdfc_module_binding.hpp"
#include "Parameter.hpp"
#include "allocation_information.hpp"
#include "behavioral_helper.hpp"
#include "behavioral_writer_helper.hpp"
#include "chaining_information.hpp"
#include "clique_covering.hpp"
#include "cpu_time.hpp"
#include "custom_map.hpp"
#include "custom_set.hpp"
#include "dbgPrintHelper.hpp"
#include "design_flow_manager.hpp"
#include "design_flow_step.hpp"
#include "fu_binding.hpp"
#include "function_behavior.hpp"
#include "graph.hpp"
#include "hash_helper.hpp"
#include "hls.hpp"
#include "hls_constraints.hpp"
#include "hls_device.hpp"
#include "hls_flow_step_factory.hpp"
#include "hls_manager.hpp"
#include "liveness.hpp"
#include "memory.hpp"
#include "module_binding_check.hpp"
#include "mux_connection_binding.hpp"
#include "op_graph.hpp"
#include "parallel_memory_fu_binding.hpp"
#include "reg_binding.hpp"
#include "schedule.hpp"
#include "state_transition_graph_manager.hpp"
#include "storage_value_information.hpp"
#include "storage_value_insertion.hpp"
#include "technology_manager.hpp"
#include "technology_node.hpp"
#include "tree_helper.hpp"
#include "tree_manager.hpp"
#include "tree_node.hpp"
#include "utility.hpp"
#include "weighted_clique_register.hpp"
#include <algorithm>
#include <boost/range/adaptor/reversed.hpp>
#include <cmath>
#include <deque>
#include <filesystem>
#include <iosfwd>
#include <limits>
#include <list>
#include <string>
#include <utility>
#include <vector>
#include "string_manipulation.hpp"
Go to the source code of this file.
Data Structures | |
struct | topological_based_sorting_visitor< OutputIterator > |
struct | cdfc_resource_ordering_functor |
Functor used to compare which of two resources has to be considered first during the binding. More... | |
struct | slack_based_filtering |
class | CdfcWriter |
class | CdfcEdgeWriter |
Macros | |
#define | DEFAULT_SMALL_NORMALIZED_RESOURCE_AREA 2.0 |
#define | MODULE_BINDING_MUX_MARGIN 1.0 |
#define | DSP_MARGIN 1.0 |
#define | CLOCK_MARGIN 0.97 |
#define | OP_THRESHOLD 1000 |
Functions | |
template<typename VertexListGraph , typename OutputIterator , typename P , typename T , typename R > | |
void | topological_based_sorting (const VertexListGraph &g, std::vector< vertex > &c2s, const OpGraphConstRef sdg, OutputIterator result, const boost::bgl_named_params< P, T, R > ¶ms) |
template<typename VertexListGraph , typename OutputIterator > | |
void | topological_based_sorting (const VertexListGraph &g, std::vector< vertex > &c2s, const OpGraphConstRef sdg, OutputIterator result) |
template<bool do_estimation, bool do_conversion, typename vertex_type , class cluster_type > | |
void | estimate_muxes (const connection_relation &con_rel, unsigned long long mux_prec, double &tot_mux_delay, double &tot_mux_area, const cluster_type &cluster, unsigned int &total_muxes, unsigned int &n_shared, const CustomUnorderedMap< vertex_type, vertex > &converter, const HLS_managerRef HLSMgr, const hlsRef HLS, int debug_level) |
static bool | compute_condition1 (const std::string &lib_name, const AllocationInformationConstRef allocation_information, double local_mux_time, unsigned int fu_s1) |
static bool | compute_condition2 (bool cond1, unsigned long long fu_prec, double resource_area, const double small_normalized_resource_area) |
#define CLOCK_MARGIN 0.97 |
Definition at line 108 of file cdfc_module_binding.cpp.
Referenced by cdfc_module_binding::InternalExec().
#define DEFAULT_SMALL_NORMALIZED_RESOURCE_AREA 2.0 |
Definition at line 105 of file cdfc_module_binding.cpp.
#define DSP_MARGIN 1.0 |
Definition at line 107 of file cdfc_module_binding.cpp.
#define MODULE_BINDING_MUX_MARGIN 1.0 |
Definition at line 106 of file cdfc_module_binding.cpp.
Referenced by cdfc_module_binding::InternalExec().
#define OP_THRESHOLD 1000 |
Definition at line 109 of file cdfc_module_binding.cpp.
Referenced by cdfc_module_binding::InternalExec().
|
inlinestatic |
Definition at line 912 of file cdfc_module_binding.cpp.
References AllocationInformation::get_number_channels(), AllocationInformation::get_number_fu(), AllocationInformation::get_worst_number_of_cycles(), INFINITE_UINT, PROXY_LIBRARY, and WORK_LIBRARY.
Referenced by cdfc_module_binding::InternalExec().
|
inlinestatic |
Definition at line 924 of file cdfc_module_binding.cpp.
References cdfc_module_binding::small_normalized_resource_area.
Referenced by cdfc_module_binding::InternalExec().
void estimate_muxes | ( | const connection_relation & | con_rel, |
unsigned long long | mux_prec, | ||
double & | tot_mux_delay, | ||
double & | tot_mux_area, | ||
const cluster_type & | cluster, | ||
unsigned int & | total_muxes, | ||
unsigned int & | n_shared, | ||
const CustomUnorderedMap< vertex_type, vertex > & | converter, | ||
const HLS_managerRef | HLSMgr, | ||
const hlsRef | HLS, | ||
int | debug_level | ||
) |
it is not chained but from the mux binding it counts as input to the mux tree
compute the maximum number of mux ins
Definition at line 293 of file cdfc_module_binding.cpp.
References hls::allocation_information, FunctionBehavior::CGetOpGraph(), DEBUG_LEVEL_VERY_PEDANTIC, DFG_SCA_SELECTOR, AllocationInformation::estimate_muxNto1_area(), AllocationInformation::estimate_muxNto1_delay(), FB_DFG_SCA_SELECTOR, FunctionBehavior::FDFG, hls::functionId, fu_binding::get_assign(), fu_binding::get_index(), fu_binding::get_ports_are_swapped(), reg_binding::get_register(), liveness::get_state_where_end(), StorageValueInformation::get_storage_value_index(), INDENT_DBG_MEX, INFINITE_UINT, StorageValueInformation::is_a_storage_value(), max, no_def, no_phi_chained, no_phi_no_chained, phi, hls::Rfu, hls::Rliv, hls::Rreg, hls::storage_value_information, STR, lenet_tvm::target, THROW_ASSERT, THROW_ERROR, and symmetry::value.
void topological_based_sorting | ( | const VertexListGraph & | g, |
std::vector< vertex > & | c2s, | ||
const OpGraphConstRef | sdg, | ||
OutputIterator | result, | ||
const boost::bgl_named_params< P, T, R > & | params | ||
) |
Definition at line 141 of file cdfc_module_binding.cpp.
Referenced by cdfc_module_binding::InternalExec(), and topological_based_sorting().
void topological_based_sorting | ( | const VertexListGraph & | g, |
std::vector< vertex > & | c2s, | ||
const OpGraphConstRef | sdg, | ||
OutputIterator | result | ||
) |
Definition at line 149 of file cdfc_module_binding.cpp.
References topological_based_sorting().