PandA-2024.02
Public Member Functions | Data Fields
operation Struct Reference

This class specifies the characteristic of a particular operation working on a given functional unit. More...

#include <technology_node.hpp>

Inheritance diagram for operation:
Inheritance graph
[legend]
Collaboration diagram for operation:
Collaboration graph
[legend]

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...
 

Detailed Description

This class specifies the characteristic of a particular operation working on a given functional unit.

Definition at line 364 of file technology_node.hpp.

Constructor & Destructor Documentation

◆ operation()

operation::operation ( )

Constructor.

Definition at line 64 of file technology_node.cpp.

References ~operation().

Referenced by AllocationInformation::GetConnectionTime().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ~operation()

operation::~operation ( )
overridedefault

Destructor.

Referenced by operation().

Here is the caller graph for this function:

Member Function Documentation

◆ get_name()

const std::string& operation::get_name ( ) const
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().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_type_supported_string()

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.

◆ is_bounded()

bool operation::is_bounded ( ) const
inline

Definition at line 457 of file technology_node.hpp.

Referenced by DiscrepancyAnalysisCWriter::writePostInstructionInfo().

Here is the caller graph for this function:

◆ is_primary_inputs_registered()

bool operation::is_primary_inputs_registered ( ) const
inline

Definition at line 462 of file technology_node.hpp.

References GET_TEC_KIND, GET_TEC_KIND_TEXT, and technology_node::print().

Here is the call graph for this function:

◆ is_type_supported() [1/3]

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.

Parameters
type_nameis 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().

Here is the caller graph for this function:

◆ is_type_supported() [2/3]

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.

Parameters
type_nameis the name of the type
type_precis the type precision

check also for the precision

Definition at line 302 of file technology_node.cpp.

References is_type_supported(), and supported_types.

Here is the call graph for this function:

◆ is_type_supported() [3/3]

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.

Parameters
type_nameis the name of the type
type_precis the vector of type precisions

Definition at line 321 of file technology_node.cpp.

References is_type_supported().

Here is the call graph for this function:

◆ print()

void operation::print ( std::ostream &  os) const
overridevirtual

function that prints the class operation.

Parameters
osis 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.

Here is the call graph for this function:

◆ xload()

void operation::xload ( const xml_element Enode,
const technology_nodeRef  fu,
const ParameterConstRef  Param 
)
overridevirtual

Load a operation node starting from an xml file.

Parameters
nodeis a node of the xml tree.
owneris the refcount version of this.
TMis 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.

Here is the call graph for this function:

◆ xwrite()

void operation::xwrite ( xml_element rootnode,
const technology_nodeRef  tn,
const ParameterConstRef  Param 
)
overridevirtual

Add a operation node to an xml tree.

Parameters
rootnodeis 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.

Here is the call graph for this function:

Field Documentation

◆ bounded

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().

◆ commutative

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().

◆ operation_name

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().

◆ pipe_parameters

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().

◆ portsize_parameters

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().

◆ primary_inputs_registered

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.

Referenced by xload(), and xwrite().

◆ supported_types

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_m

time_infoRef operation::time_m

The documentation for this struct was generated from the following files:

Generated on Mon Feb 12 2024 13:03:59 for PandA-2024.02 by doxygen 1.8.13