63 if(
parameters->getOption<std::string>(OPT_component_name) !=
"all")
65 auto to_be_splitted(
parameters->getOption<std::string>(OPT_component_name));
66 const auto splitted =
SplitString(to_be_splitted,
",");
67 for(
const auto& component_to_be_characterized : splitted)
77 for(
const auto& library : libraries)
81 for(
const auto& fu : fus)
95 std::ofstream file_out(
parameters->getOption<std::string>(OPT_output_file).c_str(), std::ios::out);
96 for(
const auto& cell :
cells)
98 file_out << cell << std::endl;
107 switch(relationship_type)
112 const auto* technology_flow_step_factory = GetPointer<const TechnologyFlowStepFactory>(
115 const std::string technology_flow_signature =
117 const vertex technology_flow_step =
120 technology_flow_step ?
121 design_flow_graph->CGetDesignFlowStepInfo(technology_flow_step)->design_flow_step :
122 technology_flow_step_factory->CreateTechnologyFlowStep(
124 relationship.insert(technology_design_flow_step);
127 const std::string technology_flow_signature =
129 const vertex technology_flow_step =
132 technology_flow_step ?
133 design_flow_graph->CGetDesignFlowStepInfo(technology_flow_step)->design_flow_step :
134 technology_flow_step_factory->CreateTechnologyFlowStep(
136 relationship.insert(technology_design_flow_step);
140 const std::string technology_flow_signature =
142 const vertex technology_flow_step =
145 technology_flow_step ?
146 design_flow_graph->CGetDesignFlowStepInfo(technology_flow_step)->design_flow_step :
148 relationship.insert(technology_design_flow_step);
186 const std::vector<std::string>&,
const size_t,
const unsigned int constPort,
187 const bool is_commutative,
size_t)
191 unsigned int n_ports = GetPointer<module>(obj)->get_in_port_size();
198 has_first_synthesis_id = constPort;
std::string GetName() const override
Return the name of this design step.
#define DEBUG_LEVEL_VERY_PEDANTIC
extremely verbose debugging print is performed.
GenerateFuList(const generic_deviceRef _device, const DesignFlowManagerConstRef design_flow_manager, const ParameterConstRef parameters)
The constructor.
#define INDENT_DBG_MEX(dbgLevel, curDbgLevel, mex)
We are producing a debug version of the program, so the message is printed;.
void ComputeRelationships(DesignFlowStepSet &relationship, const DesignFlowStep::RelationshipType relationship_type) override
Compute the relationships of a step with other steps.
const fu_map_type & get_library_fu() const
Return the list of the resources contained into the given library.
File containing functions and utilities to support the printing of debug messagges.
#define GET_CLASS(obj)
Macro returning the actual type of an object.
const std::vector< std::string > SplitString(const std::string &input, const std::string &separators)
Function which splits a string into tokens.
CustomOrderedSet< std::string > components_to_be_characterized
The list of components to be added to the list; if the list is empty, all the components will be adde...
RelationshipType
The relationship type.
Source must be executed to satisfy target.
The base class for design step.
const std::vector< std::string > & get_library_list() const
Return the list of the libraries.
const std::string & get_name() const override
Return the name of the operation.
DesignFlowStep_Status Exec() override
Execute the step.
CustomOrderedSet< std::string > cells
The set of list of cells.
Class specification of the manager of the technology library data structures.
This class specifies the characteristic of a particular functional unit.
std::string GetSignature() const override
Return a unified identifier of this design step.
Auxiliary methods for manipulating string.
#define THROW_UNREACHABLE(str_expr)
helper function used to specify that some points should never be reached
unsigned int has_first_synthesis_id
The id of the first analyzed cell of a sequence of cells which differ for the position of the constan...
ToDataFileStep_Type
Autoheader include.
std::string component
The current functional unit.
Class specification of the data structures used to manage technology information. ...
Classes to describe design flow graph.
Target must be reexecuted.
static const std::string ComputeSignature(const TechnologyFlowStep_Type technology_flow_step_type)
Compute the signature of a technology flow step.
Factory for technology flow step.
boost::graph_traits< graph >::vertex_descriptor vertex
vertex definition.
bool HasToBeExecuted() const override
Check if this step has actually to be executed.
const Wrefcount< const DesignFlowManager > design_flow_manager
The design flow manager.
DesignFlowStepFactoryConstRef CGetDesignFlowStepFactory() const override
Return the factory to create this type of steps.
const ParameterConstRef parameters
Set of input parameters.
DesignFlowStep_Status
The status of a step.
Class for generating the list of functional untis to be characterized.
void AnalyzeCell(functional_unit *fu, const unsigned int prec, const std::vector< std::string > &portsize_parameters, const size_t portsize_index, const std::vector< std::string > &pipe_parameters, const size_t stage_index, const unsigned int constPort, const bool is_commutative, size_t max_lut_size) override
Analyze the single cell.
const technology_managerRef TM
Technology manager.
refcount< T > lock() const
DesignFlowStepFactoryConstRef CGetDesignFlowStepFactory() const override
Return the factory to create this type of steps.
This class describes all classes used to represent a structural object.
std::string GetName() const override
Return the name of this design step.
bool HasToBeExecuted() const override
Check if this step has actually to be executed.
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.
virtual void AnalyzeFu(const technology_nodeRef f_unit)
Analyze all the cells built starting from a template.
Class implementation of the structural_manager.
Class specification of the manager for each library.
int debug_level
The debug level.
std::string current_list
The current entry for list of functional units.
library_managerRef get_library_manager(const std::string &Name) const
Return the library data structure corresponding to the given library id.
Base class for technology flow steps.
std::string GetSignature() const override
Return a unified identifier of this design step.
Step which loads device dependent technology information.