![]() |
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().

1.8.13