PandA-2024.02
generate_hdl.cpp
Go to the documentation of this file.
1 /*
2  *
3  * _/_/_/ _/_/ _/ _/ _/_/_/ _/_/
4  * _/ _/ _/ _/ _/_/ _/ _/ _/ _/ _/
5  * _/_/_/ _/_/_/_/ _/ _/_/ _/ _/ _/_/_/_/
6  * _/ _/ _/ _/ _/ _/ _/ _/ _/
7  * _/ _/ _/ _/ _/ _/_/_/ _/ _/
8  *
9  * ***********************************************
10  * PandA Project
11  * URL: http://panda.dei.polimi.it
12  * Politecnico di Milano - DEIB
13  * System Architectures Group
14  * ***********************************************
15  * Copyright (C) 2004-2024 Politecnico di Milano
16  *
17  * This file is part of the PandA framework.
18  *
19  * The PandA framework is free software; you can redistribute it and/or modify
20  * it under the terms of the GNU General Public License as published by
21  * the Free Software Foundation; either version 3 of the License, or
22  * (at your option) any later version.
23  *
24  * This program is distributed in the hope that it will be useful,
25  * but WITHOUT ANY WARRANTY; without even the implied warranty of
26  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
27  * GNU General Public License for more details.
28  *
29  * You should have received a copy of the GNU General Public License
30  * along with this program. If not, see <http://www.gnu.org/licenses/>.
31  *
32  */
43 #include "generate_hdl.hpp"
44 
45 #include "BackendFlow.hpp"
46 #include "HDL_manager.hpp"
47 #include "Parameter.hpp"
48 #include "behavioral_helper.hpp"
49 #include "call_graph_manager.hpp"
50 #include "custom_set.hpp"
51 #include "hls.hpp"
52 #include "hls_constraints.hpp"
53 #include "hls_device.hpp"
55 #include "hls_manager.hpp"
56 #include "structural_manager.hpp"
57 #include "tree_manager.hpp"
58 #include "tree_reindex.hpp"
59 
60 #include <list>
61 #include <string>
62 #include <tuple>
63 
65  const DesignFlowManagerConstRef _design_flow_manager)
66  : HLS_step(_parameters, _HLSMgr, _design_flow_manager, HLSFlowStep_Type::GENERATE_HDL)
67 {
68 }
69 
72 {
74  switch(relationship_type)
75  {
77  {
80  if(parameters->isOption(OPT_discrepancy_hw) && parameters->getOption<bool>(OPT_discrepancy_hw))
81  {
84  }
85  break;
86  }
88  {
89  break;
90  }
92  {
93  break;
94  }
95  default:
97  }
98  return ret;
99 }
100 
101 generate_hdl::~generate_hdl() = default;
102 
104 {
105  return true;
106 }
107 
109 {
110  HDL_manager HM(HLSMgr, HLSMgr->get_HLS_device(), parameters);
111  const auto file_name = parameters->getOption<std::string>(OPT_top_file);
112  std::list<structural_objectRef> top_circuits;
113  const auto top_symbols = parameters->getOption<std::vector<std::string>>(OPT_top_functions_names);
114  for(const auto& symbol : top_symbols)
115  {
116  const auto top_fnode = HLSMgr->get_tree_manager()->GetFunction(symbol);
117  top_circuits.push_back(HLSMgr->get_HLS(GET_INDEX_CONST_NODE(top_fnode))->top->get_circ());
118  }
119 
120  HM.hdl_gen(file_name, top_circuits, HLSMgr->hdl_files, HLSMgr->aux_files, false);
122 }
const HLS_managerRef HLSMgr
information about all the HLS synthesis
Definition: hls_step.hpp:205
Data structure representing the entire HLS information.
~generate_hdl() override
Destructor.
RelationshipType
The relationship type.
Source must be executed to satisfy target.
const CustomUnorderedSet< std::tuple< HLSFlowStep_Type, HLSFlowStepSpecializationConstRef, HLSFlowStep_Relationship > > ComputeHLSRelationships(const DesignFlowStep::RelationshipType relationship_type) const override
Return the set of analyses in relationship with this design step.
bool HasToBeExecuted() const override
Check if this step has actually to be executed.
#define THROW_UNREACHABLE(str_expr)
helper function used to specify that some points should never be reached
Definition: exceptions.hpp:292
Factory for hls flow step.
HLSFlowStep_Type
Definition: hls_step.hpp:95
redefinition of set to manage ordered/unordered structures
const ParameterConstRef parameters
Set of input parameters.
DesignFlowStep_Status
The status of a step.
Data structure definition for HLS constraints.
This file contains the definition of the configurable flow for generating and executing synthesis scr...
Class used to generate HDL files.
Class specification of the tree_reindex support class.
DesignFlowStep_Status Exec() override
Execute the step.
generate_hdl(const ParameterConstRef _parameters, const HLS_managerRef HLSMgr, const DesignFlowManagerConstRef design_flow_manager)
Constructor.
Template borrowed from the ANTLR library by Terence Parr (http://www.jGuru.com - Software rights: htt...
Definition: refcount.hpp:94
this class is used to manage the command-line or XML options.
Wrapper to call graph.
Class implementation of the structural_manager.
This class writes different HDL based descriptions (VHDL, Verilog, SystemC) starting from a structura...
refcount< const HLSFlowStepSpecialization > HLSFlowStepSpecializationConstRef
const refcount definition of the class
Definition: hls_step.hpp:93
#define GET_INDEX_CONST_NODE(t)
Definition: tree_node.hpp:363
Data structure definition for high-level synthesis flow.
Class specification of the manager of the tree structures extracted from the raw file.
HLS specialization of generic_device.

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