58 const DesignFlowManagerConstRef _design_flow_manager)
69 switch(relationship_type)
76 if(
parameters->getOption<
bool>(OPT_generate_taste_architecture))
78 ret.insert(std::make_tuple(HLSFlowStep_Type::GENERATE_TASTE_SYNTHESIS_SCRIPT,
92 #if HAVE_SIMULATION_WRAPPER_BUILT 117 HLSMgr->get_backend_flow()->ExecuteSynthesis();
118 auto objective_string =
parameters->getOption<std::string>(OPT_evaluation_objectives);
119 const auto objective_vector = string_to_container<std::vector<std::string>>(objective_string,
",");
120 bool printed_area =
false;
121 for(
const auto& objective : objective_vector)
123 if((objective ==
"AREA" or objective ==
"AREAxTIME") and !printed_area)
134 HLSMgr->evaluations[
"SLICE"] = slices;
139 HLSMgr->evaluations[
"SLICE_LUTS"] = sliceLuts;
141 double lut_ff_pairs = area_m ? area_m->
get_resource_value(area_info::LUT_FF_PAIRS) : 0;
142 if(lut_ff_pairs != 0.0)
144 HLSMgr->evaluations[
"LUT_FF_PAIRS"] = lut_ff_pairs;
146 double logic_elements = area_m ? area_m->
get_resource_value(area_info::LOGIC_ELEMENTS) : 0;
147 if(logic_elements != 0.0)
149 HLSMgr->evaluations[
"LOGIC_ELEMENTS"] = logic_elements;
151 double functional_elements = area_m ? area_m->
get_resource_value(area_info::FUNCTIONAL_ELEMENTS) : 0;
152 if(functional_elements != 0.0)
154 HLSMgr->evaluations[
"FUNCTIONAL_ELEMENTS"] = functional_elements;
157 if(logic_area != 0.0)
159 HLSMgr->evaluations[
"LOGIC_AREA"] = logic_area;
164 HLSMgr->evaluations[
"POWER"] = power;
169 HLSMgr->evaluations[
"ALMS"] = alms;
174 HLSMgr->evaluations[
"URAMS"] = urams;
179 else if(objective ==
"BRAMS")
187 HLSMgr->evaluations[
"BRAMS"] = brams;
189 else if(objective ==
"DRAMS")
197 HLSMgr->evaluations[
"DRAMS"] = drams;
199 else if(objective ==
"CLOCK_SLACK")
202 const auto time_m =
HLSMgr->get_backend_flow()->get_timing_results();
203 const auto minimum_period = time_m->get_execution_time();
204 const auto clock_period =
parameters->getOption<
double>(OPT_clock_period);
205 const auto slack = clock_period - minimum_period;
206 if(
parameters->getOption<
bool>(OPT_timing_violation_abort) && slack < 0.0)
210 HLSMgr->evaluations[
"CLOCK_SLACK"] = slack;
212 else if(objective ==
"PERIOD")
217 HLSMgr->evaluations[
"PERIOD"] = minimum_period;
219 else if(objective ==
"DSPS")
228 HLSMgr->evaluations[
"DSPS"] = dsps;
230 else if(objective ==
"FREQUENCY" or objective ==
"TIME" or objective ==
"TOTAL_TIME" or objective ==
"AREAxTIME")
236 double maximum_frequency = 1000.0 / minimum_period;
237 HLSMgr->evaluations[
"FREQUENCY"] = maximum_frequency;
239 else if(objective ==
"REGISTERS")
245 HLSMgr->evaluations[
"REGISTERS"] = reg;
const HLS_managerRef HLSMgr
information about all the HLS synthesis
Data structure representing the entire HLS information.
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.
Collect information about resource area.
RelationshipType
The relationship type.
Source must be executed to satisfy target.
Collect information about resource performance.
DesignFlowStep_Status Exec() override
Execute the step.
#define STR(s)
Macro which performs a lexical_cast to a string.
#define THROW_UNREACHABLE(str_expr)
helper function used to specify that some points should never be reached
double get_resource_value(value_t val) const
double get_area_value() const
Return the nominal value for the area of the component.
~SynthesisEvaluation() override
Destructor of the class.
Target must be reexecuted.
double get_execution_time() const
const ParameterConstRef parameters
Set of input parameters.
DesignFlowStep_Status
The status of a step.
This file collects some utility functions and macros.
Data structure definition for HLS constraints.
This file contains the definition of the configurable flow for generating and executing synthesis scr...
Class specification of the tree_reindex support class.
Template borrowed from the ANTLR library by Terence Parr (http://www.jGuru.com - Software rights: htt...
this class is used to manage the command-line or XML options.
refcount< const HLSFlowStepSpecialization > HLSFlowStepSpecializationConstRef
const refcount definition of the class
Data structure definition for high-level synthesis flow.
Class specification of the manager of the tree structures extracted from the raw file.
SynthesisEvaluation(const ParameterConstRef Param, const HLS_managerRef hls_mgr, const DesignFlowManagerConstRef design_flow_manager)
Constructor of the class.