45 #ifndef MUX_CONNECTION_BINDING_HPP 46 #define MUX_CONNECTION_BINDING_HPP 79 std::map<resource_id_type, std::map<unsigned int, CustomOrderedSet<unsigned int>>>
regs_in;
81 std::map<resource_id_type, std::map<unsigned int, CustomOrderedSet<unsigned int>>>
chained_in;
83 std::map<resource_id_type, std::map<unsigned int, CustomOrderedSet<resource_id_type>>>
module_in;
126 unsigned int port_index,
unsigned int iteration);
132 unsigned int port_num,
unsigned int port_index,
const OpGraphConstRef data,
133 unsigned int precision,
unsigned int alignment = 0);
145 generic_objRef fu_obj,
unsigned int port_num,
unsigned int port_index,
unsigned int tree_var,
146 unsigned int precision,
const bool is_not_a_phi);
152 unsigned int port_index,
unsigned int tree_var,
unsigned long long precision,
153 const bool is_not_a_phi);
157 void add_conversion(
unsigned int num,
vertex op,
unsigned int form_par_type,
unsigned long long form_par_bitsize,
Generic class managing interconnection binding algorithms.
const HLS_managerRef HLSMgr
information about all the HLS synthesis
Data structure representing the entire HLS information.
CustomOrderedSet< vertex > noswap_computed_table
store the operations for which a port swapping is not beneficial
std::map< resource_id_type, std::map< unsigned int, CustomOrderedSet< unsigned int > > > regs_in
store the registers for each resource and for each port
unsigned long long object_bitsize(const tree_managerRef TreeM, const HLS_manager::io_binding_type &obj) const
Compute the bitsize given a io_binding type.
unsigned int id
variable used to assign a unique id to sparse logic
const unsigned int funId
identifier of the function to be processed (0 means that it is a global step)
cacheType
cache connection type
unsigned int extract_parm_decl(unsigned int tree_var, const tree_managerRef TreeM)
DesignFlowStep_Status InternalExec() override
Execute the step.
std::map< std::tuple< unsigned int, cacheType, const HLS_manager::io_binding_type >, generic_objRef > connCache
connection cache
void determine_connection(const vertex &op, const HLS_manager::io_binding_type &var, generic_objRef fu_obj, unsigned int port_num, unsigned int port_index, const OpGraphConstRef data, unsigned int precision, unsigned int alignment=0)
Determine the actual interconnection.
bool isConstantObj(unsigned int tree_index, const tree_managerRef TreeM)
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...
Base class for all interconnection binding algorithms.
void create_connections()
Creates the connections inside the architecture.
Class used to describe a state transition graph.
Data structure used to store the interconnection binding of datapath elements.
unsigned int address_precision(unsigned int precision, const vertex &op, const OpGraphConstRef data, const tree_managerRef TreeM)
Class managing the interconnection binding.
boost::graph_traits< graph >::vertex_descriptor vertex
vertex definition.
const Wrefcount< const DesignFlowManager > design_flow_manager
The design flow manager.
This file contains the structures needed to manage a graph that will represent the state transition g...
General class used to describe a graph in PandA.
CONSTREF_FORWARD_DECL(OpGraph)
DesignFlowStep_Status
The status of a step.
std::map< resource_id_type, std::map< unsigned int, CustomOrderedSet< unsigned int > > > chained_in
store the chained storage values for each resource and for each port
std::map< generic_objRef, CustomOrderedSet< data_transfer >, GenericObjSorter > ConnectionSources
definition of sources of a connection
void create_single_conn(const OpGraphConstRef data, const vertex &op, generic_objRef fu_obj_src, generic_objRef fu_obj, unsigned int port_num, unsigned int port_index, unsigned int tree_var, unsigned int precision, const bool is_not_a_phi)
create the connection object and update the unique table
CustomOrderedSet< vertex > swap_computed_table
store the operations for which a port swapping is beneficial
void add_conversion(unsigned int num, vertex op, unsigned int form_par_type, unsigned long long form_par_bitsize, unsigned int port_index, const generic_objRef fu_obj, const OpGraphConstRef data, const tree_managerRef TreeM, unsigned int tree_var)
std::pair< unsigned int, unsigned int > resource_id_type
type representing a resource identifier
std::map< resource_id_type, std::map< unsigned int, CustomOrderedSet< resource_id_type > > > module_in
store the resource in IN for each resource and for each port
void Initialize() override
Initialize the step (i.e., like a constructor, but executed just before exec.
Class used to describe a particular graph with operations as nodes.
mux_connection_binding(const ParameterConstRef _parameters, const HLS_managerRef HLSMgr, unsigned int funId, const DesignFlowManagerConstRef design_flow_manager)
Main constructor.
Class managing the connection binding of datapath.
void connect_to_registers(vertex op, const OpGraphConstRef data, generic_objRef fu_obj, unsigned int port_num, unsigned int port_index, unsigned int tree_var, unsigned long long precision, const bool is_not_a_phi)
connect the fu_obj with the associated registers.
unsigned int cur_phi_tree_var
store the current phi use. Used during the analysis of phi nodes
unsigned int input_logic(const conn_binding::ConnectionSources &src, const generic_objRef tgt, unsigned int op, unsigned int port_index, unsigned int iteration)
Computes logic for inputs.
~mux_connection_binding() override
Destructor.
unsigned int mux_interconnection()
Performs specialization of interconnections using mux architecture.