57 int main(
int argc,
char* argv[])
78 switch(parameters->Exec())
83 throw "Bad Parameters format";
87 if(not(parameters->getOption<
bool>(OPT_no_clean)))
89 std::filesystem::remove_all(parameters->getOption<std::string>(OPT_output_temporary_directory));
104 auto output_level = parameters->getOption<
int>(OPT_output_level);
108 parameters->PrintFullHeader(std::cerr);
112 if(!parameters->isOption(OPT_clock_period))
114 parameters->setOption(OPT_clock_period, 0.0);
122 device->set_parameter(
"clock_period", parameters->getOption<
double>(OPT_clock_period));
126 const DesignFlowStepFactoryConstRef technology_flow_step_factory(
128 design_flow_manager->RegisterFactory(technology_flow_step_factory);
130 const std::string technology_flow_signature =
132 const vertex technology_flow_step = design_flow_manager->GetDesignFlowStep(technology_flow_signature);
134 technology_flow_step ? design_flow_graph->CGetDesignFlowStepInfo(technology_flow_step)->design_flow_step :
135 GetPointer<const TechnologyFlowStepFactory>(technology_flow_step_factory)
137 design_flow_manager->AddStep(technology_design_flow_step);
139 if(parameters->isOption(OPT_component_name))
142 device, parameters->getOption<std::string>(OPT_component_name), design_flow_manager, parameters));
143 design_flow_manager->AddStep(design_flow_step);
145 design_flow_manager->Exec();
150 if(not(parameters->getOption<
bool>(OPT_no_clean)))
152 std::filesystem::remove_all(parameters->getOption<std::string>(OPT_output_temporary_directory));
158 catch(
const char*
str)
160 std::cerr << str << std::endl;
162 catch(
const std::string& str)
164 std::cerr << str << std::endl;
166 catch(std::exception& e)
168 std::cerr << e.what() << std::endl;
172 std::cerr <<
"Unknown error type" << std::endl;
179 parameters->PrintUsage(std::cout);
184 parameters->PrintBugReport(std::cout);
191 if(parameters and not(parameters->getOption<
bool>(OPT_no_clean)))
193 std::filesystem::remove_all(parameters->getOption<std::string>(OPT_output_temporary_directory));
Input function used to read the technology data structures.
int exit_code
NOTE: this file must be included only by source code of the executable (i.e., the file with the main)...
Class specification of the manager of the technology library data structures.
#define OUTPUT_LEVEL_MINIMUM
minimum debugging print is performed.
Include a set of utilities used to manage CPU time measures.
#define START_TIME(time_var)
Macro used to store the start time into time_var.
static generic_deviceRef factory(const ParameterConstRef &Param, const technology_managerRef &TM)
Factory method.
Base class for step of design flow.
This class manages the technology library structures.
int main(int argc, char *argv[])
Classes to describe design flow graph.
#define PARAMETER_PARSED
An integer value to return if parameters have been right parsed.
static const std::string ComputeSignature(const TechnologyFlowStep_Type technology_flow_step_type)
Compute the signature of a technology flow step.
#define STOP_TIME(time_var)
Macro used to store the elapsed time into time_var.
Factory for technology flow step.
refcount< Parameter > ParameterRef
boost::graph_traits< graph >::vertex_descriptor vertex
vertex definition.
Class for performing RTL characterization.
This file collects some utility functions and macros.
#define THROW_ERROR(str_expr)
helper function used to throw an error in a standard way
std::string print_cpu_time(long int t)
massage a long which represents a time interval in milliseconds, into a string suitable for output ...
This class loads default technology libraries.
Template borrowed from the ANTLR library by Terence Parr (http://www.jGuru.com - Software rights: htt...
refcount< technology_manager > technology_managerRef
This class load builtin components in technology manager.
Generic device description.
#define PARAMETER_NOTPARSED