PandA-2024.02
Data Structures | Macros | Typedefs | Enumerations
structural_objects.hpp File Reference

This class describes all classes used to represent a structural object. More...

#include "config_HAVE_TECHNOLOGY_BUILT.hpp"
#include "NP_functionality.hpp"
#include "custom_map.hpp"
#include "exceptions.hpp"
#include "refcount.hpp"
#include "simple_indent.hpp"
#include <boost/preprocessor/seq/for_each.hpp>
#include <ostream>
#include <string>
#include <utility>
#include <vector>
Include dependency graph for structural_objects.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  structural_type_descriptor
 Structure representing the most relevant information about the type of a structural object. More...
 
class  structural_object
 Base object for all the structural objects. More...
 
struct  port_o
 This class describes a port associated with a component or a channel. More...
 
class  event_o
 This class describes a generic event. More...
 
class  data_o
 This class describes a generic data declaration object. More...
 
class  action_o
 This class describes a generic systemC action. More...
 
class  constant_o
 This class describes a constant value. More...
 
class  signal_o
 This class describes a simple logic/RTL signal. More...
 
class  module
 This class describes a generic module. More...
 
class  component_o
 This class describes a generic component. More...
 
class  channel_o
 This class describes a generic channel. More...
 
class  bus_connection_o
 This class describes a generic bus connection. More...
 

Macros

#define HIERARCHY_SEPARATOR   "/"
 
#define MEMORY_PARAMETER   "MEMORY_PARAMETER"
 
#define PIPE_PARAMETER   "PIPE_PARAMETER"
 
#define VALUE_PARAMETER   "VALUE_PARAMETER"
 
#define CLOCK_PORT_NAME   "clock"
 standard name for ports More...
 
#define WENABLE_PORT_NAME   "wenable"
 
#define START_PORT_NAME   "start_port"
 
#define RESET_PORT_NAME   "reset"
 
#define DONE_PORT_NAME   "done_port"
 
#define RETURN_PORT_NAME   "return_port"
 
#define START_PORT_NAME_CFC   "start_port_CFC"
 
#define DONE_PORT_NAME_CFC   "done_port_CFC"
 
#define MOUT_OE_PORT_NAME   "Mout_oe_ram"
 
#define MOUT_BACK_PRESSURE_PORT_NAME   "Mout_back_pressure"
 
#define PRESENT_STATE_PORT_NAME   "present_state"
 
#define NEXT_STATE_PORT_NAME   "next_state"
 
#define NOTIFIER_PORT_MISMATCH   "out_mismatch"
 
#define NOTIFIER_PORT_MISMATCH_ID   "out_mismatch_id"
 
#define NOTIFIER_PORT_MISMATCH_OFFSET   "out_mismatch_trace_offset"
 
#define SELECTOR_REGISTER_FILE   "selector_register_file"
 
#define SUSPENSION   "suspension"
 
#define REQUEST_ACCEPTED   "request_accepted"
 
#define TASKS_POOL_END   "task_pool_end"
 
#define DONE_SCHEDULER   "done_scheduler"
 
#define DONE_REQUEST   "done_request"
 
#define PROXY_PREFIX   "PROXY_PREF_"
 
#define WRAPPED_PROXY_PREFIX   "WRAPPED_PROXY_PREF_"
 
#define GET_SO_KIND_TEXT(meth)
 Macro which defines the get_kind_text function that returns the parameter as a string. More...
 
#define GET_TYPE_NAME(structural_obj)   ((structural_obj)->get_typeRef()->id_type)
 Macro returning the string name of a type. More...
 
#define GET_TYPE_SIZE(structural_obj)
 Macro returning the size of the type of a structural object. More...
 
#define STD_GET_SIZE(structural_obj)   ((structural_obj)->vector_size ? ((structural_obj)->vector_size * (structural_obj)->size) : (structural_obj)->size)
 Macro returning the size of a type. More...
 
#define GET_SO_KIND(meth)
 Macro used to implement get_kind() function in structural_object hyerarchy classes. More...
 
#define ENUM_ID(r, data, elem)   elem,
 
#define PORT_INTERFACE_ENUM
 
#define PORT_DIRECTION_ENUM   (IN)(OUT)(IO)(GEN)(UNKNOWN)(TLM_IN)(TLM_OUT)(TLM_INOUT)
 

Typedefs

using structural_type_descriptorRef = refcount< structural_type_descriptor >
 RefCount type definition of the structural_type_descriptor class structure. More...
 
using structural_objectRef = refcount< structural_object >
 RefCount type definition of the structural_object class structure. More...
 

Enumerations

enum  so_kind {
  component_o_K, channel_o_K, bus_connection_o_K, constant_o_K,
  signal_o_K, signal_vector_o_K, port_o_K, port_vector_o_K,
  event_o_K, data_o_K, action_o_K
}
 Enumerative type for structural object classes, it is used with get_kind() function to know the actual type of a structural_object. More...
 

Functions

Forward declarations.

Autoheader include

 CONSTREF_FORWARD_DECL (BehavioralHelper)
 
 REF_FORWARD_DECL (structural_manager)
 
 REF_FORWARD_DECL (NP_functionality)
 
 CONSTREF_FORWARD_DECL (structural_object)
 
 REF_FORWARD_DECL (structural_object)
 
 REF_FORWARD_DECL (structural_type_descriptor)
 
 CONSTREF_FORWARD_DECL (technology_manager)
 
 REF_FORWARD_DECL (technology_node)
 
 REF_FORWARD_DECL (attribute)
 

Detailed Description

This class describes all classes used to represent a structural object.

Objects can represent items at different level of abstraction: logic, RTL and TLM.

Author
Matteo Barbati mbarb.nosp@m.ati@.nosp@m.gmail.nosp@m..com
Christian Pilato pilat.nosp@m.o@el.nosp@m.et.po.nosp@m.limi.nosp@m..it
Fabrizio Ferrandi fabri.nosp@m.zio..nosp@m.ferra.nosp@m.ndi@.nosp@m.polim.nosp@m.i.it $Revision$ $Date$ Last modified by $Author$

Definition in file structural_objects.hpp.

Macro Definition Documentation

◆ CLOCK_PORT_NAME

#define CLOCK_PORT_NAME   "clock"

standard name for ports

Definition at line 90 of file structural_objects.hpp.

Referenced by classic_datapath::add_clock_reset(), ControlFlowChecker::add_clock_reset(), ControllerCreatorBaseStep::add_clock_reset(), fu_binding::add_gate(), top_entity_cs::add_input_register(), top_entity::add_input_register(), RTLCharacterization::add_input_register(), RTLCharacterization::add_output_register(), cs_interface::add_parameter_port(), allocation::add_proxy_function_module(), allocation::add_proxy_function_wrapper(), ParallelMemoryFuBinding::add_to_SM(), reg_binding::add_to_SM(), StateTransitionGraphManager::add_to_SM(), fu_binding::add_to_SM(), RTLCharacterization::AnalyzeCell(), FunctionalUnitStep::AnalyzeFu(), build_bus_interface(), WB4_interface::build_WB4_bus_interface(), WB4_interface::build_WB4_complete_logic(), minimal_interface::build_wrapper(), buildCircuit(), allocation::BuildProxyFunctionVerilog(), allocation::BuildProxyFunctionVHDL(), allocation::BuildProxyWrapper(), datapath_parallel_cs::connect_module_kernel(), connectClockAndReset(), create_control_flow_checker(), InterfaceInfer::create_resource_array(), InterfaceInfer::create_resource_m_axi(), InterfaceInfer::create_resource_Read_simple(), InterfaceInfer::create_resource_Write_simple(), fsm_controller::create_state_machine(), TestbenchGeneration::Exec(), VcdSignalSelection::Exec(), XilinxTasteBackendFlow::GenerateSynthesisScripts(), BackendFlow::GenerateSynthesisScripts(), vcd_utility::GetClockPeriod(), language_writer::GetHDLReservedNames(), fu_binding_cs::instantiate_component_kernel(), datapath_parallel_cs::instantiate_component_parallel(), cs_interface::instantiate_component_parallel(), TestbenchDUTModuleGenerator::InternalExec(), pipeline_controller::InternalExec(), cs_interface::InternalExec(), TasteInterfaceGeneration::InternalExec(), top_entity_parallel_cs::InternalExec(), classic_datapath::InternalExec(), top_entity::InternalExec(), allocation::InternalExec(), conn_binding::mux_connection(), flopoco_wrapper::outputPortDeclaration(), flopoco_wrapper::outputPortMap(), propagateInterface(), fu_binding::specialise_fu(), reg_binding::specialise_reg(), ModuleGeneratorManager::specialize_fu(), and TestbenchGeneration::write_verilator_testbench().

◆ DONE_PORT_NAME

#define DONE_PORT_NAME   "done_port"

◆ DONE_PORT_NAME_CFC

#define DONE_PORT_NAME_CFC   "done_port_CFC"

Definition at line 97 of file structural_objects.hpp.

Referenced by fu_binding::add_to_SM(), and top_entity::InternalExec().

◆ DONE_REQUEST

#define DONE_REQUEST   "done_request"

◆ DONE_SCHEDULER

#define DONE_SCHEDULER   "done_scheduler"

◆ ENUM_ID

#define ENUM_ID (   r,
  data,
  elem 
)    elem,

Definition at line 598 of file structural_objects.hpp.

◆ GET_SO_KIND

#define GET_SO_KIND (   meth)
Value:
enum so_kind get_kind() const override \
{ \
return (meth##_K); \
}
so_kind
Enumerative type for structural object classes, it is used with get_kind() function to know the actua...

Macro used to implement get_kind() function in structural_object hyerarchy classes.

Definition at line 325 of file structural_objects.hpp.

◆ GET_SO_KIND_TEXT

#define GET_SO_KIND_TEXT (   meth)
Value:
std::string get_kind_text() const override \
{ \
return std::string(#meth); \
}

Macro which defines the get_kind_text function that returns the parameter as a string.

Definition at line 117 of file structural_objects.hpp.

◆ GET_TYPE_NAME

#define GET_TYPE_NAME (   structural_obj)    ((structural_obj)->get_typeRef()->id_type)

◆ GET_TYPE_SIZE

#define GET_TYPE_SIZE (   structural_obj)

◆ HIERARCHY_SEPARATOR

#define HIERARCHY_SEPARATOR   "/"

◆ MEMORY_PARAMETER

#define MEMORY_PARAMETER   "MEMORY_PARAMETER"

◆ MOUT_BACK_PRESSURE_PORT_NAME

#define MOUT_BACK_PRESSURE_PORT_NAME   "Mout_back_pressure"

Definition at line 99 of file structural_objects.hpp.

Referenced by TestbenchGeneration::Exec().

◆ MOUT_OE_PORT_NAME

#define MOUT_OE_PORT_NAME   "Mout_oe_ram"

Definition at line 98 of file structural_objects.hpp.

Referenced by TestbenchGeneration::Exec().

◆ NEXT_STATE_PORT_NAME

#define NEXT_STATE_PORT_NAME   "next_state"

◆ NOTIFIER_PORT_MISMATCH

#define NOTIFIER_PORT_MISMATCH   "out_mismatch"

Definition at line 102 of file structural_objects.hpp.

Referenced by ControlFlowChecker::add_notifiers().

◆ NOTIFIER_PORT_MISMATCH_ID

#define NOTIFIER_PORT_MISMATCH_ID   "out_mismatch_id"

Definition at line 103 of file structural_objects.hpp.

Referenced by ControlFlowChecker::add_notifiers().

◆ NOTIFIER_PORT_MISMATCH_OFFSET

#define NOTIFIER_PORT_MISMATCH_OFFSET   "out_mismatch_trace_offset"

Definition at line 104 of file structural_objects.hpp.

Referenced by ControlFlowChecker::add_notifiers().

◆ PIPE_PARAMETER

#define PIPE_PARAMETER   "PIPE_PARAMETER"

◆ PORT_DIRECTION_ENUM

#define PORT_DIRECTION_ENUM   (IN)(OUT)(IO)(GEN)(UNKNOWN)(TLM_IN)(TLM_OUT)(TLM_INOUT)

Definition at line 613 of file structural_objects.hpp.

◆ PORT_INTERFACE_ENUM

#define PORT_INTERFACE_ENUM
Value:
(PI_RNONE)(PI_WNONE)(PI_RACK)(PI_WACK)(PI_RVALID)(PI_WVALID)(PI_EMPTY_N)(PI_READ)(PI_FULL_N)(PI_WRITE)(PI_FDIN)( \
PI_FDOUT)(PI_ADDRESS)(PI_CHIPENABLE)(PI_WRITEENABLE)(PI_DIN)(PI_DOUT)(PI_M_AXI_OFF)(PI_M_AXI_DIRECT)( \
M_AXI_AWVALID)(M_AXI_AWREADY)(M_AXI_AWADDR)(M_AXI_AWID)(M_AXI_AWLEN)(M_AXI_AWSIZE)(M_AXI_AWBURST)( \
M_AXI_AWLOCK)(M_AXI_AWCACHE)(M_AXI_AWPROT)(M_AXI_AWQOS)(M_AXI_AWREGION)(M_AXI_AWUSER)(M_AXI_WVALID)( \
M_AXI_WREADY)(M_AXI_WDATA)(M_AXI_WSTRB)(M_AXI_WLAST)(M_AXI_WID)(M_AXI_WUSER)(M_AXI_ARVALID)(M_AXI_ARREADY)( \
M_AXI_ARADDR)(M_AXI_ARID)(M_AXI_ARLEN)(M_AXI_ARSIZE)(M_AXI_ARBURST)(M_AXI_ARLOCK)(M_AXI_ARCACHE)(M_AXI_ARPROT)( \
M_AXI_ARQOS)(M_AXI_ARREGION)(M_AXI_ARUSER)(M_AXI_RVALID)(M_AXI_RREADY)(M_AXI_RDATA)(M_AXI_RLAST)(M_AXI_RID)( \
M_AXI_RUSER)(M_AXI_RRESP)(M_AXI_BVALID)(M_AXI_BREADY)(M_AXI_BRESP)(M_AXI_BID)(M_AXI_BUSER)(S_AXIL_AWVALID)( \
S_AXIL_AWREADY)(S_AXIL_AWADDR)(S_AXIL_WVALID)(S_AXIL_WREADY)(S_AXIL_WDATA)(S_AXIL_WSTRB)(S_AXIL_ARVALID)( \
S_AXIL_ARREADY)(S_AXIL_ARADDR)(S_AXIL_RVALID)(S_AXIL_RREADY)(S_AXIL_RDATA)(S_AXIL_RRESP)(S_AXIL_BVALID)( \
S_AXIL_BREADY)(S_AXIL_BRESP)(PI_S_AXIS_TVALID)(PI_S_AXIS_TREADY)(PI_S_AXIS_TDATA)(PI_M_AXIS_TVALID)( \
PI_M_AXIS_TREADY)(PI_M_AXIS_TDATA)(PI_DEFAULT)

Definition at line 599 of file structural_objects.hpp.

◆ PRESENT_STATE_PORT_NAME

#define PRESENT_STATE_PORT_NAME   "present_state"

◆ PROXY_PREFIX

#define PROXY_PREFIX   "PROXY_PREF_"

◆ REQUEST_ACCEPTED

#define REQUEST_ACCEPTED   "request_accepted"

Definition at line 107 of file structural_objects.hpp.

◆ RESET_PORT_NAME

#define RESET_PORT_NAME   "reset"

Definition at line 93 of file structural_objects.hpp.

Referenced by classic_datapath::add_clock_reset(), ControlFlowChecker::add_clock_reset(), ControllerCreatorBaseStep::add_clock_reset(), fu_binding::add_gate(), top_entity::add_input_register(), RTLCharacterization::add_input_register(), RTLCharacterization::add_output_register(), cs_interface::add_parameter_port(), allocation::add_proxy_function_module(), allocation::add_proxy_function_wrapper(), ParallelMemoryFuBinding::add_to_SM(), reg_binding::add_to_SM(), StateTransitionGraphManager::add_to_SM(), fu_binding::add_to_SM(), RTLCharacterization::AnalyzeCell(), FunctionalUnitStep::AnalyzeFu(), build_bus_interface(), WB4_interface::build_WB4_bus_interface(), WB4_interface::build_WB4_complete_logic(), minimal_interface::build_wrapper(), buildCircuit(), allocation::BuildProxyFunctionVerilog(), allocation::BuildProxyFunctionVHDL(), allocation::BuildProxyWrapper(), datapath_parallel_cs::connect_module_kernel(), connectClockAndReset(), create_control_flow_checker(), InterfaceInfer::create_resource_array(), InterfaceInfer::create_resource_m_axi(), InterfaceInfer::create_resource_Read_simple(), InterfaceInfer::create_resource_Write_simple(), fsm_controller::create_state_machine(), TestbenchGeneration::Exec(), language_writer::GetHDLReservedNames(), fu_binding_cs::instantiate_component_kernel(), datapath_parallel_cs::instantiate_component_parallel(), cs_interface::instantiate_component_parallel(), TestbenchDUTModuleGenerator::InternalExec(), pipeline_controller::InternalExec(), cs_interface::InternalExec(), TasteInterfaceGeneration::InternalExec(), top_entity_parallel_cs::InternalExec(), classic_datapath::InternalExec(), top_entity::InternalExec(), allocation::InternalExec(), conn_binding::mux_connection(), flopoco_wrapper::outputPortDeclaration(), flopoco_wrapper::outputPortMap(), propagateInterface(), fu_binding::specialise_fu(), reg_binding::specialise_reg(), ModuleGeneratorManager::specialize_fu(), system_verilog_writer::write_NP_functionalities(), VHDL_writer::write_NP_functionalities(), and verilog_writer::write_NP_functionalities().

◆ RETURN_PORT_NAME

#define RETURN_PORT_NAME   "return_port"

◆ SELECTOR_REGISTER_FILE

#define SELECTOR_REGISTER_FILE   "selector_register_file"

◆ START_PORT_NAME

#define START_PORT_NAME   "start_port"

Definition at line 92 of file structural_objects.hpp.

Referenced by conn_binding::add_command_ports(), top_entity_cs::add_context_switch_port_kernel(), top_entity_cs::add_input_register(), datapath_cs::add_ports(), classic_datapath::add_ports(), datapath_parallel_cs::add_ports(), ControlFlowChecker::add_start_port(), ControllerCreatorBaseStep::add_start_port(), fu_binding::add_to_SM(), OmpAllocation::AddPandaPthreadMutex(), RTLCharacterization::AnalyzeCell(), FunctionalUnitStep::AnalyzeFu(), minimal_interface::build_wrapper(), allocation::BuildProxyFunctionVerilog(), allocation::BuildProxyFunctionVHDL(), datapath_parallel_cs::connect_module_kernel(), top_entity_parallel_cs::connect_port_parallel(), create_control_flow_checker(), InterfaceInfer::create_resource_array(), InterfaceInfer::create_resource_m_axi(), InterfaceInfer::create_resource_Read_simple(), InterfaceInfer::create_resource_Write_simple(), fsm_controller::create_state_machine(), vcd_utility::Exec(), TestbenchGeneration::Exec(), VcdSignalSelection::Exec(), language_writer::GetHDLReservedNames(), TopEntityMemoryMapped::insertStartDoneLogic(), TopEntityMemoryMapped::insertStatusRegister(), fu_binding_cs::instantiate_component_kernel(), conn_binding_cs::instantiate_suspension_component(), TestbenchDUTModuleGenerator::InternalExec(), pipeline_controller::InternalExec(), TasteInterfaceGeneration::InternalExec(), top_entity_parallel_cs::InternalExec(), top_entity::InternalExec(), allocation::InternalExec(), conn_binding::mux_connection(), flopoco_wrapper::outputPortDeclaration(), propagateInterface(), top_entity_parallel_cs::resize_controller_parallel(), fu_binding::specialise_fu(), and ModuleGeneratorManager::specialize_fu().

◆ START_PORT_NAME_CFC

#define START_PORT_NAME_CFC   "start_port_CFC"

Definition at line 96 of file structural_objects.hpp.

Referenced by fu_binding::add_to_SM(), and top_entity::InternalExec().

◆ STD_GET_SIZE

#define STD_GET_SIZE (   structural_obj)    ((structural_obj)->vector_size ? ((structural_obj)->vector_size * (structural_obj)->size) : (structural_obj)->size)

◆ SUSPENSION

#define SUSPENSION   "suspension"

◆ TASKS_POOL_END

#define TASKS_POOL_END   "task_pool_end"

◆ VALUE_PARAMETER

#define VALUE_PARAMETER   "VALUE_PARAMETER"

Definition at line 87 of file structural_objects.hpp.

Referenced by conn_binding::add_sparse_logic_dp().

◆ WENABLE_PORT_NAME

#define WENABLE_PORT_NAME   "wenable"

◆ WRAPPED_PROXY_PREFIX

#define WRAPPED_PROXY_PREFIX   "WRAPPED_PROXY_PREF_"

Typedef Documentation

◆ structural_objectRef

RefCount type definition of the structural_object class structure.

Definition at line 596 of file structural_objects.hpp.

◆ structural_type_descriptorRef

RefCount type definition of the structural_type_descriptor class structure.

Definition at line 301 of file structural_objects.hpp.

Enumeration Type Documentation

◆ so_kind

enum so_kind

Enumerative type for structural object classes, it is used with get_kind() function to know the actual type of a structural_object.

Enumerator
component_o_K 
channel_o_K 
bus_connection_o_K 
constant_o_K 
signal_o_K 
signal_vector_o_K 
port_o_K 
port_vector_o_K 
event_o_K 
data_o_K 
action_o_K 

Definition at line 307 of file structural_objects.hpp.

Function Documentation

◆ CONSTREF_FORWARD_DECL() [1/3]

CONSTREF_FORWARD_DECL ( BehavioralHelper  )

◆ CONSTREF_FORWARD_DECL() [2/3]

CONSTREF_FORWARD_DECL ( structural_object  )

◆ CONSTREF_FORWARD_DECL() [3/3]

CONSTREF_FORWARD_DECL ( technology_manager  )

◆ REF_FORWARD_DECL() [1/6]

REF_FORWARD_DECL ( structural_manager  )

◆ REF_FORWARD_DECL() [2/6]

REF_FORWARD_DECL ( NP_functionality  )

◆ REF_FORWARD_DECL() [3/6]

REF_FORWARD_DECL ( structural_object  )

◆ REF_FORWARD_DECL() [4/6]

REF_FORWARD_DECL ( structural_type_descriptor  )

◆ REF_FORWARD_DECL() [5/6]

REF_FORWARD_DECL ( technology_node  )

◆ REF_FORWARD_DECL() [6/6]

REF_FORWARD_DECL ( attribute  )

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