41 #ifndef ALLOCATION_SOLUTION_HPP 42 #define ALLOCATION_SOLUTION_HPP 78 #define GIMPLE_RETURN_STD "gimple_return_FU" 79 #define GIMPLE_PHI_STD "gimple_phi_FU" 80 #define GIMPLE_ASM_STD "gimple_asm_FU" 81 #define GIMPLE_LABEL_STD "gimple_label_FU" 82 #define GIMPLE_GOTO_STD "gimple_goto_FU" 83 #define GIMPLE_NOP_STD "gimple_nop_FU" 84 #define GIMPLE_PRAGMA_STD "gimple_pragma_FU" 85 #define READ_COND_STD "read_cond_FU" 86 #define MULTI_READ_COND_STD "multi_read_cond_FU" 87 #define SWITCH_COND_STD "switch_cond_FU" 88 #define ENTRY_STD "entry_FU" 89 #define EXIT_STD "exit_FU" 90 #define NOP_STD "nop_FU" 92 #define ALLOCATION_MUX_MARGIN 1.0 311 bool CanBeMerged(
const unsigned int first_operation,
const unsigned int second_operation)
const;
333 static const std::pair<const CustomMap<unsigned long long, CustomUnorderedMapStable<unsigned int, double>>&,
341 static const std::tuple<const std::vector<unsigned int>&,
const std::vector<unsigned int>&>
378 void Clear()
override;
411 std::pair<std::string, std::string>
get_fu_name(
unsigned int id)
const;
481 unsigned int& fu_name,
bool&
flag,
534 double get_area(
const unsigned int fu_name)
const;
548 unsigned long long get_prec(
const unsigned int fu_name)
const;
554 double get_DSPs(
const unsigned int fu_name)
const;
570 ControlStep
get_initiation_time(
const unsigned int fu_name,
const unsigned int statement_index)
const;
653 bool is_assign(
const unsigned int fu_name)
const;
660 bool is_return(
const unsigned int fu_name)
const;
730 double get_stage_period(
const unsigned int fu_name,
const unsigned int v)
const;
738 double get_correction_time(
unsigned int fu,
const std::string& operation_name,
unsigned int n_ins)
const;
771 unsigned int get_cycles(
const unsigned int fu_name,
const unsigned int v)
const;
879 void print(std::ostream& os)
const;
905 const unsigned int stage = 0)
const;
907 const unsigned int stage = 0)
const;
916 double GetConnectionTime(
const unsigned int first_operation,
const unsigned int second_operation,
941 minimumSlack = slack;
973 double get_connection_time(
unsigned fu_type,
bool add_delay1,
bool add_delay2,
size_t n_complex_ops,
974 size_t n_mem_ops)
const;
1028 bool is_read_only_variable,
unsigned int channel_number);
1036 bool CanBeChained(
const unsigned int first_statement_index,
const unsigned int second_statement_index)
const;
1069 unsigned int operator()(
const unsigned int name)
const;
1076 void update(
const unsigned int name,
int delta);
1132 base128_output_nelem(0),
1133 real_output_nelem(0),
1134 is_single_bool_test_cond_expr(
false),
1135 is_simple_pointer_plus_expr(
false)
1138 void print(std::ostream& os)
const;
std::vector< unsigned long long > base128_input_nelem
vector storing the number of elements in case the input is a vector, 0 otherwise (used for mapping wi...
Data structure representing the entire HLS information.
This structure collect the information of input and output precision of nodes and the node kind...
Class managing the schedule of the operations.
This class manages the tree structures extracted from the raw file.
Class specification of the graph structures.
CustomOrderedMap< T, U > CustomMap
This class specifies the characteristic of a particular functional unit.
std::tuple< unsigned int, unsigned int > io_binding_type
tuple set used to represent the required values or the constant default value associated with the inp...
Absolute Control step First field is the basic block Second field is the relative control step...
std::vector< unsigned int > tech
copy of the technology constraints
std::string node_kind
Node kind.
std::vector< unsigned long long > real_input_nelem
vector storing the number of elements in case the input is a vector, 0 otherwise (real value) ...
This class specifies the characteristic of a particular operation working on a given functional unit...
absl::flat_hash_map< T, U, Hash, Eq, Alloc > CustomUnorderedMap
unsigned long long base128_output_nelem
number of output elements in case the output is a a vector, 0 otherwise (used for mapping with librar...
Data structure used to store the schedule of the operations.
unsigned long long real_output_nelem
number of output elements in case the output is a a vector, 0 otherwise (real_value) ...
bool is_single_bool_test_cond_expr
true when the functional unit is a cond_expr and has the first operand of type bool ...
This class macros for the definition of strong typedef.
Data structure used to store all the HLS constraints.
boost::graph_traits< graph >::vertex_descriptor vertex
vertex definition.
This wrapper collects all the methods used by the High-level synthesis classes to retrieve informatio...
Template definition of refcount.
std::vector< unsigned long long > input_prec
Vector of input precision.
bool is_simple_pointer_plus_expr
true when the functional unit is a pointer plus expr with two constant operands
This file collects some hash functors.
Data structures used in operations graph.
unsigned long long output_prec
Precision of the output.
constraint functor used by get_attribute_of_fu_per_op
Data structure that contains all information about high level synthesis process.
const HLS_managerRef hls_manager
The HLS manager.
void update(int b[SIZE], int bucket[BUCKETSIZE], int a[SIZE], int exp)
Abstract pure class for the technology structure.
Base class for intermediate representation used by HLS ifunction steps.