PandA-2024.02
Public Types | Public Member Functions | Data Fields | Private Attributes | Friends
functional_unit Struct Reference

This class specifies the characteristic of a particular functional unit. More...

#include <technology_node.hpp>

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

Public Types

using type_t = enum { UNKNOWN=0, COMBINATIONAL, STATETABLE, FF, LATCH, PHYSICAL }
 
using operation_vec = std::vector< technology_nodeRef >
 Type definition of a vector of functional_unit. More...
 

Public Member Functions

 functional_unit ()
 Constructor. More...
 
 functional_unit (const xml_nodeRef XML_description)
 Constructor. More...
 
 ~functional_unit () override
 Destructor. More...
 
void add (const technology_nodeRef &curr)
 Add the given operation to the current functional_unit. More...
 
void set_clock_period (double _clock_period)
 Sets the clock period adopted for the synthesis (0 means that it has been generated with unconstrained synthesis) (in ns) More...
 
double get_clock_period () const
 Returns the clock period adopted for the synthesis (0 means that it has been generated with unconstrained synthesis) (in ns) More...
 
void set_clock_period_resource_fraction (double _clock_period_resource_fraction)
 Sets the clock period resource fraction adopted for the synthesis. More...
 
double get_clock_period_resource_fraction () const
 Returns the clock period resource fraction adopted for the synthesis. More...
 
const operation_vecget_operations () const
 Return the operations that the functional unit can handle. More...
 
size_t get_operations_num () const
 Return the number of the operations that the functional unit can handle. More...
 
technology_nodeRef get_operation (const std::string &op_name) const
 This method returns the operationRef from its name if the functional unit contains an operation of type op_name. More...
 
const std::string & get_name () const override
 Return the name of the operation. More...
 
void xload (const xml_element *node, const technology_nodeRef fu, const ParameterConstRef Param) override
 Load a functional unit starting from an xml file. More...
 
void xwrite (xml_element *rootnode, const technology_nodeRef tn, const ParameterConstRef Param) override
 Add a functional unit to an xml tree. More...
 
void print (std::ostream &os) const override
 function that prints the class functional_unit. 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

type_t logical_type
 return the logical type of the cell More...
 
std::string functional_unit_name
 name of the functional unit. More...
 
std::vector< std::string > ordered_attributes
 list of attributes associated to the components More...
 
std::map< std::string, attributeRefattributes
 map between the attribute keys and the corresponding values More...
 
double clock_period
 clock period adopted for the synthesis (in ns) More...
 
double clock_period_resource_fraction
 clock period resource fraction More...
 
area_infoRef area_m
 This variable stores the resource information of the component. More...
 
xml_nodeRef XML_description
 pointer to the XML description of the cell More...
 
std::string fu_template_name
 Name of the template. More...
 
std::string fu_template_parameters
 Template parameters. More...
 
std::string characterizing_constant_value
 Value used during the characterization of this instance. More...
 
std::string memory_type
 Specify the type of memory the functional unit is compliant with. More...
 
std::string channels_type
 Specify the type of the channel the functional unit is compliant with. More...
 
std::string memory_ctrl_type
 Specify the type of memory controller the functional unit is compliant with. More...
 
std::string bram_load_latency
 Specify the bram load latency the functional unit is compliant with. More...
 
std::string component_timing_alias
 Specify that the functional unit has the same timing per operation it has the one specified by this field. More...
 
TimeStamp characterization_timestamp
 The timestamp of the characterization of this functional unit. More...
 

Private Attributes

std::map< std::string, technology_nodeRefop_name_to_op
 Redefinition of get_kind_text() More...
 
operation_vec list_of_operation
 At each functional unit can be associate several operations with different performances. More...
 

Friends

class technology_manager
 

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

Definition at line 487 of file technology_node.hpp.

Member Typedef Documentation

◆ operation_vec

Type definition of a vector of functional_unit.

Definition at line 492 of file technology_node.hpp.

◆ type_t

using functional_unit::type_t = enum { UNKNOWN = 0, COMBINATIONAL, STATETABLE, FF, LATCH, PHYSICAL }

Definition at line 489 of file technology_node.hpp.

Constructor & Destructor Documentation

◆ functional_unit() [1/2]

functional_unit::functional_unit ( )

Constructor.

Definition at line 344 of file technology_node.cpp.

◆ functional_unit() [2/2]

functional_unit::functional_unit ( const xml_nodeRef  XML_description)
explicit

Constructor.

Definition at line 349 of file technology_node.cpp.

References ~functional_unit().

Here is the call graph for this function:

◆ ~functional_unit()

functional_unit::~functional_unit ( )
overridedefault

Destructor.

Referenced by functional_unit().

Here is the caller graph for this function:

Member Function Documentation

◆ add()

void functional_unit::add ( const technology_nodeRef curr)
inline

Add the given operation to the current functional_unit.

Parameters
curris the added element

Definition at line 573 of file technology_node.hpp.

References technology_node::get_name().

Referenced by xload(), and xwrite().

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

◆ get_clock_period()

double functional_unit::get_clock_period ( ) const
inline

Returns the clock period adopted for the synthesis (0 means that it has been generated with unconstrained synthesis) (in ns)

Definition at line 597 of file technology_node.hpp.

◆ get_clock_period_resource_fraction()

double functional_unit::get_clock_period_resource_fraction ( ) const
inline

Returns the clock period resource fraction adopted for the synthesis.

Definition at line 610 of file technology_node.hpp.

◆ get_name()

const std::string& functional_unit::get_name ( ) const
inlineoverridevirtual

Return the name of the operation.

Implements technology_node.

Definition at line 642 of file technology_node.hpp.

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

Referenced by GenerateFuList::AnalyzeCell(), RTLCharacterization::AnalyzeCell(), and FunctionalUnitStep::AnalyzeFu().

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

◆ get_operation()

technology_nodeRef functional_unit::get_operation ( const std::string &  op_name) const

This method returns the operationRef from its name if the functional unit contains an operation of type op_name.

Definition at line 413 of file technology_node.cpp.

References op_name_to_op.

Referenced by allocation::get_compliant_pipelined_unit(), AllocationInformation::get_correction_time(), AllocationInformation::InitializeMuxDB(), AllocationInformation::is_operation_bounded(), and AllocationInformation::is_operation_PI_registered().

Here is the caller graph for this function:

◆ get_operations()

const operation_vec& functional_unit::get_operations ( ) const
inline

Return the operations that the functional unit can handle.

Returns
operations that the functional unit can handle.

Definition at line 619 of file technology_node.hpp.

Referenced by RTLCharacterization::AnalyzeCell(), allocation::BuildProxyFunctionVerilog(), allocation::BuildProxyFunctionVHDL(), allocation::BuildProxyWrapper(), and AllocationInformation::get_correction_time().

Here is the caller graph for this function:

◆ get_operations_num()

size_t functional_unit::get_operations_num ( ) const
inline

Return the number of the operations that the functional unit can handle.

Returns
an integer representing the number of operations that the functional unit can handle.

Definition at line 628 of file technology_node.hpp.

Referenced by xload().

Here is the caller graph for this function:

◆ print()

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

function that prints the class functional_unit.

Parameters
osis the output stream.

Implements technology_node.

Definition at line 386 of file technology_node.cpp.

References area_m, functional_unit_name, area_info::get_area_value(), list_of_operation, memory_type, and technology_node::PP.

Here is the call graph for this function:

◆ set_clock_period()

void functional_unit::set_clock_period ( double  _clock_period)

Sets the clock period adopted for the synthesis (0 means that it has been generated with unconstrained synthesis) (in ns)

Definition at line 360 of file technology_node.cpp.

References attributes, clock_period, ordered_attributes, STR, and THROW_ASSERT.

◆ set_clock_period_resource_fraction()

void functional_unit::set_clock_period_resource_fraction ( double  _clock_period_resource_fraction)

Sets the clock period resource fraction adopted for the synthesis.

Definition at line 373 of file technology_node.cpp.

References attributes, clock_period_resource_fraction, ordered_attributes, and STR.

◆ xload()

void functional_unit::xload ( const xml_element node,
const technology_nodeRef  fu,
const ParameterConstRef  Param 
)
overridevirtual

◆ xwrite()

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

Add a functional unit to an xml tree.

Parameters
rootnodeis the root node at which the xml representation of the functional unit is attached.

functional unit name

add the operation related to the unit name if there is not anything else

area attributes

dumping of attributes

template stuff

operation stuff

circuit stuff

Implements technology_node.

Definition at line 682 of file technology_node.cpp.

References add(), xml_child::add_child_element(), xml_child::add_child_text(), area_m, attributes, bram_load_latency, channels_type, characterization_timestamp, characterizing_constant_value, component_timing_alias, fu_template_name, fu_template_parameters, functional_unit_name, area_info::get_area_value(), GET_CLASS_NAME, area_info::get_resource_value(), list_of_operation, memory_ctrl_type, memory_type, ordered_attributes, STR, and WRITE_XNVM2.

Here is the call graph for this function:

Friends And Related Function Documentation

◆ technology_manager

friend class technology_manager
friend

Definition at line 683 of file technology_node.hpp.

Field Documentation

◆ area_m

area_infoRef functional_unit::area_m

This variable stores the resource information of the component.

Definition at line 513 of file technology_node.hpp.

Referenced by RTLCharacterization::AnalyzeCell(), AllocationInformation::InitializeMuxDB(), print(), xload(), and xwrite().

◆ attributes

std::map<std::string, attributeRef> functional_unit::attributes

map between the attribute keys and the corresponding values

Definition at line 504 of file technology_node.hpp.

Referenced by set_clock_period(), set_clock_period_resource_fraction(), xload(), and xwrite().

◆ bram_load_latency

std::string functional_unit::bram_load_latency

Specify the bram load latency the functional unit is compliant with.

non-null only in case the functional unit is a memory or a memory controller.

Definition at line 545 of file technology_node.hpp.

Referenced by xload(), and xwrite().

◆ channels_type

std::string functional_unit::channels_type

Specify the type of the channel the functional unit is compliant with.

Definition at line 537 of file technology_node.hpp.

Referenced by RTLCharacterization::AnalyzeCell(), xload(), and xwrite().

◆ characterization_timestamp

TimeStamp functional_unit::characterization_timestamp

The timestamp of the characterization of this functional unit.

Definition at line 552 of file technology_node.hpp.

Referenced by technology_manager::CGetSetupHoldTimeStamp(), xload(), and xwrite().

◆ characterizing_constant_value

std::string functional_unit::characterizing_constant_value

Value used during the characterization of this instance.

Definition at line 530 of file technology_node.hpp.

Referenced by RTLCharacterization::AnalyzeCell(), xload(), and xwrite().

◆ clock_period

double functional_unit::clock_period

clock period adopted for the synthesis (in ns)

Definition at line 507 of file technology_node.hpp.

Referenced by set_clock_period(), and xload().

◆ clock_period_resource_fraction

double functional_unit::clock_period_resource_fraction

clock period resource fraction

Definition at line 510 of file technology_node.hpp.

Referenced by set_clock_period_resource_fraction(), and xload().

◆ component_timing_alias

std::string functional_unit::component_timing_alias

Specify that the functional unit has the same timing per operation it has the one specified by this field.

Definition at line 549 of file technology_node.hpp.

Referenced by xload(), and xwrite().

◆ fu_template_name

std::string functional_unit::fu_template_name

Name of the template.

Definition at line 524 of file technology_node.hpp.

Referenced by RTLCharacterization::AnalyzeCell(), xload(), and xwrite().

◆ fu_template_parameters

std::string functional_unit::fu_template_parameters

Template parameters.

Definition at line 527 of file technology_node.hpp.

Referenced by RTLCharacterization::AnalyzeCell(), FunctionalUnitStep::AnalyzeFu(), xload(), and xwrite().

◆ functional_unit_name

std::string functional_unit::functional_unit_name

name of the functional unit.

Definition at line 498 of file technology_node.hpp.

Referenced by RTLCharacterization::AnalyzeCell(), FunctionalUnitStep::create_template_instance(), print(), xload(), and xwrite().

◆ list_of_operation

operation_vec functional_unit::list_of_operation
private

At each functional unit can be associate several operations with different performances.

Definition at line 681 of file technology_node.hpp.

Referenced by print(), and xwrite().

◆ logical_type

type_t functional_unit::logical_type

return the logical type of the cell

Definition at line 495 of file technology_node.hpp.

Referenced by xload().

◆ memory_ctrl_type

std::string functional_unit::memory_ctrl_type

Specify the type of memory controller the functional unit is compliant with.

non-null only in case the functional unit is a memory controller.

Definition at line 541 of file technology_node.hpp.

Referenced by xload(), and xwrite().

◆ memory_type

std::string functional_unit::memory_type

Specify the type of memory the functional unit is compliant with.

non-null only in case the functional unit is a memory.

Definition at line 534 of file technology_node.hpp.

Referenced by RTLCharacterization::AnalyzeCell(), print(), xload(), and xwrite().

◆ op_name_to_op

std::map<std::string, technology_nodeRef> functional_unit::op_name_to_op
private

Redefinition of get_kind_text()

Redefinition of get_kind()This varibale maps the name of the op with its reference.

Definition at line 678 of file technology_node.hpp.

Referenced by get_operation().

◆ ordered_attributes

std::vector<std::string> functional_unit::ordered_attributes

list of attributes associated to the components

Definition at line 501 of file technology_node.hpp.

Referenced by set_clock_period(), set_clock_period_resource_fraction(), xload(), and xwrite().

◆ XML_description

xml_nodeRef functional_unit::XML_description

pointer to the XML description of the cell

Definition at line 521 of file technology_node.hpp.


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

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