PandA-2024.02
fu_binding_cs.hpp
Go to the documentation of this file.
1 /*
2  *
3  *
4  * _/_/_/ _/_/ _/ _/ _/_/_/ _/_/
5  * _/ _/ _/ _/ _/_/ _/ _/ _/ _/ _/
6  * _/_/_/ _/_/_/_/ _/ _/_/ _/ _/ _/_/_/_/
7  * _/ _/ _/ _/ _/ _/ _/ _/ _/
8  * _/ _/ _/ _/ _/ _/_/_/ _/ _/
9  *
10  * ***********************************************
11  * PandA Project
12  * URL: http://panda.dei.polimi.it
13  * Politecnico di Milano - DEIB
14  * System Architectures Group
15  * ***********************************************
16  * Copyright (c) 2016-2024 Politecnico di Milano
17  *
18  * This file is part of the PandA framework.
19  *
20  * The PandA framework is free software; you can redistribute it and/or modify
21  * it under the terms of the GNU General Public License as published by
22  * the Free Software Foundation; either version 3 of the License, or
23  * (at your option) any later version.
24  *
25  * This program is distributed in the hope that it will be useful,
26  * but WITHOUT ANY WARRANTY; without even the implied warranty of
27  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
28  * GNU General Public License for more details.
29  *
30  * You should have received a copy of the GNU General Public License
31  * along with this program. If not, see <http://www.gnu.org/licenses/>.
32  *
33  */
40 #ifndef FU_BINDING_CS_H
41 #define FU_BINDING_CS_H
42 
43 #include "fu_binding.hpp"
44 
45 class fu_binding_cs : public fu_binding
46 {
47  public:
48  fu_binding_cs(const HLS_managerConstRef _HLSMgr, const unsigned int function_id, const ParameterConstRef parameters);
49 
53  ~fu_binding_cs() override;
54 
58  void add_to_SM(const HLS_managerRef HLSMgr, const hlsRef HLS, structural_objectRef clock_port,
59  structural_objectRef reset_port) override;
60 
72  const std::list<structural_objectRef>& memory_modules,
73  const structural_objectRef circuit, const hlsRef HLS,
74  unsigned int& _unique_id) override;
75 
86  void manage_extern_global_port(const HLS_managerRef HLSMgr, const hlsRef HLS, const structural_managerRef SM,
87  structural_objectRef port_in, unsigned int dir, structural_objectRef circuit,
88  unsigned int num) override;
89 
90  protected:
98  void instantiate_component_kernel(const HLS_managerRef HLSMgr, const hlsRef HLS, structural_objectRef clock_port,
99  structural_objectRef reset_port);
100 
107  void connectOutOr(const HLS_managerRef HLSMgr, const hlsRef HLS, structural_objectRef port_out_or);
108 
118  const std::list<structural_objectRef>& memory_modules,
119  const structural_objectRef circuit, const hlsRef HLS, unsigned int& _unique_id);
120 
126  void resize_scheduler_ports(const HLS_managerRef HLSMgr, structural_objectRef scheduler_mod);
127 
134 
143  void manage_memory_port_kernel(const structural_managerRef SM, const std::list<structural_objectRef>& memory_modules,
144  const structural_objectRef circuit, const hlsRef HLS, unsigned int& _unique_id);
145 
155  const std::list<structural_objectRef>& memory_modules,
156  const structural_objectRef circuit, const hlsRef HLS, unsigned int& _unique_id);
157 
162  void connect_selector(const hlsRef HLS);
163 
168  void connect_selector_kernel(const hlsRef HLS);
169 
174  void set_atomic_memory_parameter(const hlsRef HLS);
175 };
176 #endif // FU_BINDING_CS_H
void manage_memory_ports_parallel_chained(const HLS_managerRef HLSMgr, const structural_managerRef SM, const std::list< structural_objectRef > &memory_modules, const structural_objectRef circuit, const hlsRef HLS, unsigned int &_unique_id) override
decide based on function what function to call in order to connect appropriately the datapath memory_...
void add_to_SM(const HLS_managerRef HLSMgr, const hlsRef HLS, structural_objectRef clock_port, structural_objectRef reset_port) override
Call different method that instantiate the new component for each function_type.
void manage_extern_global_port(const HLS_managerRef HLSMgr, const hlsRef HLS, const structural_managerRef SM, structural_objectRef port_in, unsigned int dir, structural_objectRef circuit, unsigned int num) override
manage_extern_global_port based on function attach the input of memory modules
~fu_binding_cs() override
Destructor.
void resize_dimension_bus_port(const HLS_managerRef HLSMgr, structural_objectRef port)
for each port resize it using vector size
void connect_scheduler_Datapath(const structural_managerRef SM, const std::list< structural_objectRef > &memory_modules, const structural_objectRef circuit, const hlsRef HLS, unsigned int &_unique_id)
connect scheduler with datapath and other memory modules
void set_atomic_memory_parameter(const hlsRef HLS)
set_atomic_memory_parameter need to set in order to have memory operation defined as atomic ...
void manage_memory_port_kernel(const structural_managerRef SM, const std::list< structural_objectRef > &memory_modules, const structural_objectRef circuit, const hlsRef HLS, unsigned int &_unique_id)
manage_memory_port_kernel connect correctly memory port when in kernel function
void connectOutOr(const HLS_managerRef HLSMgr, const hlsRef HLS, structural_objectRef port_out_or)
connectOutOr connect or with datapath or scheduler depending on function
fu_binding_cs(const HLS_managerConstRef _HLSMgr, const unsigned int function_id, const ParameterConstRef parameters)
void instantiate_component_kernel(const HLS_managerRef HLSMgr, const hlsRef HLS, structural_objectRef clock_port, structural_objectRef reset_port)
instantiate_component_kernel
void connect_selector(const hlsRef HLS)
connect_selector in function not kernel connect selector with all the module that have the right port...
void connect_selector_kernel(const hlsRef HLS)
connect_selector_kernel, kernel take selector from scheduler
Data structure used to store the functional-unit binding of the vertexes.
void manage_memory_port_hierarchical(const structural_managerRef SM, const std::list< structural_objectRef > &memory_modules, const structural_objectRef circuit, const hlsRef HLS, unsigned int &_unique_id)
manage_memory_port_hierarchical connect correctly memory port when in hierarchical function ...
Template borrowed from the ANTLR library by Terence Parr (http://www.jGuru.com - Software rights: htt...
Definition: refcount.hpp:94
Class managing the functional-unit binding.
Definition: fu_binding.hpp:90
const ParameterConstRef parameters
The set of input parameters.
Definition: fu_binding.hpp:118
void resize_scheduler_ports(const HLS_managerRef HLSMgr, structural_objectRef scheduler_mod)
for each port decide its vector size

Generated on Mon Feb 12 2024 13:02:53 for PandA-2024.02 by doxygen 1.8.13