PandA-2024.02
|
This class specifies the characteristic of a particular operation working on a given functional unit. More...
#include <technology_node.hpp>
Public Member Functions | |
operation () | |
Constructor. More... | |
~operation () override | |
Destructor. More... | |
const std::string & | get_name () const override |
Returns the name of the operation. More... | |
bool | is_type_supported (const std::string &type_name) const |
Checks if the specified type name is supported. More... | |
bool | is_type_supported (const std::string &type_name, unsigned long long type_prec) const |
Checks if the specified type name is supported If the attribute "supported_types" is not defined, it will always return true. More... | |
bool | is_type_supported (const std::string &type_name, const std::vector< unsigned long long > &type_prec, const std::vector< unsigned long long > &type_n_element) const |
Checks if the specified type name is supported with the max precision in type_prec. More... | |
std::string | get_type_supported_string () const |
Returns the supported type as a string. More... | |
void | xload (const xml_element *Enode, const technology_nodeRef fu, const ParameterConstRef Param) override |
Load a operation node starting from an xml file. More... | |
void | xwrite (xml_element *rootnode, const technology_nodeRef tn, const ParameterConstRef Param) override |
Add a operation node to an xml tree. More... | |
bool | is_bounded () const |
bool | is_primary_inputs_registered () const |
void | print (std::ostream &os) const override |
function that prints the class operation. More... | |
Public Member Functions inherited from technology_node | |
technology_node () | |
Constructor. More... | |
virtual | ~technology_node () |
Destructor. More... | |
virtual std::string | get_kind_text () const =0 |
Virtual function used to get the string name of a technology_node instance. More... | |
virtual enum tec_kind | get_kind () const =0 |
Virtual function used to find the real type of a technology_nodeinstance. More... | |
Data Fields | |
std::string | operation_name |
name of the operation mappen on a given functional unit. More... | |
time_infoRef | time_m |
class representing the timing information associated with this operation More... | |
bool | commutative |
property of commutativity More... | |
bool | bounded |
flag to determine if the operation is bounded or not More... | |
bool | primary_inputs_registered |
true when the primary input of the functional unit are registered More... | |
std::map< std::string, std::vector< unsigned int > > | supported_types |
supported types and precision of the operation, in form (name, list_of_prec). More... | |
std::string | pipe_parameters |
comma separated string with the parameter for the different implementation of the pipeline. More... | |
std::string | portsize_parameters |
comma separed string with the parameter for different portsize values. More... | |
Additional Inherited Members | |
Static Protected Attributes inherited from technology_node | |
static simple_indent | PP |
pretty print functor object used by all print members to indent the output of the print function. More... | |
This class specifies the characteristic of a particular operation working on a given functional unit.
Definition at line 364 of file technology_node.hpp.
operation::operation | ( | ) |
Constructor.
Definition at line 64 of file technology_node.cpp.
References ~operation().
Referenced by AllocationInformation::GetConnectionTime().
|
overridedefault |
|
inlineoverridevirtual |
Returns the name of the operation.
Implements technology_node.
Definition at line 409 of file technology_node.hpp.
References technology_node::xload(), and technology_node::xwrite().
Referenced by allocation::check_templated_units(), allocation::extract_bambu_provided(), and DiscrepancyAnalysisCWriter::writePostInstructionInfo().
std::string operation::get_type_supported_string | ( | ) | const |
Returns the supported type as a string.
Definition at line 328 of file technology_node.cpp.
References result, and supported_types.
|
inline |
Definition at line 457 of file technology_node.hpp.
Referenced by DiscrepancyAnalysisCWriter::writePostInstructionInfo().
|
inline |
Definition at line 462 of file technology_node.hpp.
References GET_TEC_KIND, GET_TEC_KIND_TEXT, and technology_node::print().
bool operation::is_type_supported | ( | const std::string & | type_name | ) | const |
Checks if the specified type name is supported.
If the attribute "supported_types" is not defined, it will always return true.
type_name | is the name of the type |
if there is at least one supported type, the given type has to be in the list
Definition at line 296 of file technology_node.cpp.
References supported_types.
Referenced by allocation::check_type_and_precision(), and is_type_supported().
bool operation::is_type_supported | ( | const std::string & | type_name, |
unsigned long long | type_prec | ||
) | const |
Checks if the specified type name is supported If the attribute "supported_types" is not defined, it will always return true.
type_name | is the name of the type |
type_prec | is the type precision |
check also for the precision
Definition at line 302 of file technology_node.cpp.
References is_type_supported(), and supported_types.
bool operation::is_type_supported | ( | const std::string & | type_name, |
const std::vector< unsigned long long > & | type_prec, | ||
const std::vector< unsigned long long > & | type_n_element | ||
) | const |
Checks if the specified type name is supported with the max precision in type_prec.
If the attribute "supported_types" is not defined, it will always return true.
type_name | is the name of the type |
type_prec | is the vector of type precisions |
Definition at line 321 of file technology_node.cpp.
References is_type_supported().
|
overridevirtual |
function that prints the class operation.
os | is the output stream. |
Implements technology_node.
Definition at line 288 of file technology_node.cpp.
References bounded, commutative, time_info::get_execution_time(), time_info::get_initiation_time(), operation_name, STR, and time_m.
|
overridevirtual |
Load a operation node starting from an xml file.
node | is a node of the xml tree. |
owner | is the refcount version of this. |
TM | is the technology manager. |
name of the operation
commutative property
parsing of supported types
time characterization
Implements technology_node.
Definition at line 70 of file technology_node.cpp.
References bounded, CE_XVM, commutative, time_info::cycles_time_DEFAULT, time_info::execution_time_DEFAULT, time_info::factory(), from_strongtype_cast(), xml_child::get_children(), technology_node::get_name(), time_info::initiation_time_DEFAULT, LOAD_XVFM, LOAD_XVM, operation_name, pipe_parameters, portsize_parameters, primary_inputs_registered, time_info::set_execution_time(), time_info::set_initiation_time(), time_info::set_stage_period(), time_info::set_synthesis_dependent(), SplitString(), time_info::stage_period_DEFAULT, supported_types, THROW_ASSERT, THROW_ERROR, time_m, and test_panda::type.
|
overridevirtual |
Add a operation node to an xml tree.
rootnode | is the root node at which the xml representation of the operation is attached. |
name of the operation
commutative property
supported types
timing characterization, if any
Implements technology_node.
Definition at line 194 of file technology_node.cpp.
References xml_child::add_child_element(), bounded, commutative, time_info::cycles_time_DEFAULT, time_info::execution_time_DEFAULT, from_strongtype_cast(), time_info::get_cycles(), time_info::get_execution_time(), time_info::get_initiation_time(), technology_node::get_kind_text(), time_info::get_stage_period(), time_info::get_synthesis_dependent(), time_info::initiation_time_DEFAULT, operation_name, pipe_parameters, portsize_parameters, primary_inputs_registered, time_info::stage_period_DEFAULT, STR, supported_types, time_m, WRITE_XNVM, and WRITE_XVM.
bool operation::bounded |
flag to determine if the operation is bounded or not
Definition at line 381 of file technology_node.hpp.
Referenced by print(), library_manager::update(), xload(), and xwrite().
bool operation::commutative |
property of commutativity
Definition at line 378 of file technology_node.hpp.
Referenced by allocation::extract_bambu_provided(), print(), xload(), and xwrite().
std::string operation::operation_name |
name of the operation mappen on a given functional unit.
Definition at line 367 of file technology_node.hpp.
Referenced by FunctionalUnitStep::create_template_instance(), print(), library_manager::update(), xload(), and xwrite().
std::string operation::pipe_parameters |
comma separated string with the parameter for the different implementation of the pipeline.
Empty when the operation is not pipelined
Definition at line 391 of file technology_node.hpp.
Referenced by allocation::check_templated_units(), allocation::extract_bambu_provided(), library_manager::update(), xload(), and xwrite().
std::string operation::portsize_parameters |
comma separed string with the parameter for different portsize values.
Definition at line 394 of file technology_node.hpp.
Referenced by library_manager::update(), xload(), and xwrite().
bool operation::primary_inputs_registered |
true when the primary input of the functional unit are registered
Definition at line 384 of file technology_node.hpp.
std::map<std::string, std::vector<unsigned int> > operation::supported_types |
supported types and precision of the operation, in form (name, list_of_prec).
Definition at line 387 of file technology_node.hpp.
Referenced by allocation::extract_bambu_provided(), get_type_supported_string(), is_type_supported(), xload(), and xwrite().
time_infoRef operation::time_m |
class representing the timing information associated with this operation
Definition at line 370 of file technology_node.hpp.
Referenced by allocation::check_templated_units(), AllocationInformation::get_correction_time(), print(), AllocationInformation::time_m_execution_time(), AllocationInformation::time_m_stage_period(), library_manager::update(), DiscrepancyAnalysisCWriter::writePostInstructionInfo(), xload(), and xwrite().