This class represents a definition of a module. More...
#include <module.h>
Public Types | |
enum | Type { CThreadType, ChannelType, ChannelInstanceType, ClassType, DefinitionType, EventType, FunctionType, HierarchicalChannelType, HierarchicalChannelInstanceType, InOutPortType, InPortType, InstanceType, MethodType, ModuleType, ModuleInstanceType, ObjectType, OutPortType, PortType, PrimitiveChannelType, PrimitiveChannelInstanceType, ThreadType, VariableType } |
We are using these enums to identify type type of and instance or definition during traversal. More... | |
Public Member Functions | |
Module (SgClassDefinition *ast_node) | |
Creates an empty module definition. All the lists of instances and sub definitions are empty. | |
~Module () | |
virtual void | initialize_functions () |
This function searches for all functions, SC_THREADS, SC_CTHREADS, and SC_METHODS in the module definition. The corresponding variable vectors will be used. | |
void | print_module_definition () |
Prints the complete module design into the terminal. | |
void | print_hierarchy (unsigned indent_level=0) |
Prints the hierarchy. Roots is this definiton. | |
void | initialize_variables () |
This function searches for all variable declarations in the module definition. The corresponding variable vectors will be used. | |
SgFunctionDefinition * | get_before_end_of_elaboration_definition () |
This function return a pointer to the definition of the function before_end_of_elaboration. | |
Variable * | find_variable (SgVariableDefinition *var_def) |
Find a port by it's ast variable definition. | |
Port * | find_port (SgVariableDefinition *var_def) |
Find a port by it's ast variable definition. | |
Event * | find_event (SgVariableDefinition *var_def) |
Find an event by it's ast variable definition. | |
ModuleInstance * | find_module (SgVariableDefinition *var_def) |
Find an module by it's ast variable definition. | |
PrimitiveChannelInstance * | find_prim_channel (SgVariableDefinition *var_def) |
find a prim channel by it's ast variable definition | |
HierarchicalChannelInstance * | find_hier_channel (SgVariableDefinition *var_def) |
find a hier channel by it's ast variable definition | |
SgClassDefinition * | get_ast_node () |
Returns the ast definition of the class. | |
std::string | get_name () |
returns the name of the module definition | |
virtual std::string | get_ast_type_name () |
Returns the name of the module type. | |
virtual SgType * | get_ast_type () |
Returns the type of the ast node. | |
bool | has_source_location () |
Determines if a ast node has an associated ast node. | |
std::string | get_file_name () |
Get the name of the file where the declaration is located. | |
int | get_line_number () |
Get the line number of the instance. | |
int | get_position_in_line () |
Get the position of the in declaration in the corresponding line In other words the column in the line. | |
Public Attributes | |
ModuleVector | sub_modules_defs_ |
Vector of module definitions which are defined in this module. | |
PrimitiveChannelVector | sub_prim_channel_defs_ |
Vector of primitive channel definitions. Technically, this represents a nested C++ class definition. In a good design this vector should be empty. | |
HierarchicalChannelVector | sub_hier_channel_defs_ |
Vector of hierarchical channel definitions. Technically, this represents a nested C++ class definition. In a good design this vector should be empty. | |
ThreadVector | threads_ |
Vector of threads which are defined in this module. | |
CThreadVector | cthreads_ |
Vector of cthreads which are defined in this module. | |
MethodVector | methods_ |
Vector of methods which are defined in this module. | |
ResetSignalVector | reset_signals_ |
Vector of reset signals which are registered in this module. | |
ResetSignalVector | async_reset_signals_ |
Vector of async reset signals which are registered in this module. | |
int | instance_counter_ |
This variable counts how many instances of this given type exsist in the desgin. | |
EventVector | events_ |
Vector of events which are defined in this module. | |
VariableVector | variables_ |
Vector of C++ builtin variables that are declared in the module. | |
InPortVector | inports_ |
Vector of inports which are defined in this module. | |
InOutPortVector | inoutports_ |
Vector of inoutports which are defined in this module. | |
OutPortVector | outports_ |
Vector of outports which are defined in this module. | |
PrimitiveChannelInstanceVector | sub_prim_channel_ |
Vector of primimitive channel instances which are declared in this module. | |
HierarchicalChannelInstanceVector | sub_hier_channel_ |
Vector of hierarchical channel instances which are declared in this module. | |
ModuleInstanceVector | sub_modules_ |
Vector of module definitions which are defined in this module. | |
FunctionVector | functions_ |
Vector of functions which are defined in this module. | |
Type | type_ |
SgNode * | ast_node_ |
SgType * | ast_type_pointer_ |
Private Member Functions | |
Module (const Module &md) | |
Disabled copy constructor. |
This class represents a definition of a module.
A module is defined by the assembling of modules, channels, ports, processes, and others.
enum risc::Definition::Type [inherited] |
We are using these enums to identify type type of and instance or definition during traversal.
risc::Module::Module | ( | SgClassDefinition * | ast_node | ) | [explicit] |
Creates an empty module definition. All the lists of instances and sub definitions are empty.
Default constructor
risc::Module::~Module | ( | ) |
risc::Module::Module | ( | const Module & | md | ) | [private] |
Disabled copy constructor.
risc::Event * risc::Class::find_event | ( | SgVariableDefinition * | var_def | ) | [inherited] |
Find an event by it's ast variable definition.
risc::HierarchicalChannelInstance * risc::Class::find_hier_channel | ( | SgVariableDefinition * | var_def | ) | [inherited] |
find a hier channel by it's ast variable definition
risc::ModuleInstance * risc::Class::find_module | ( | SgVariableDefinition * | var_def | ) | [inherited] |
Find an module by it's ast variable definition.
risc::Port * risc::Class::find_port | ( | SgVariableDefinition * | var_def | ) | [inherited] |
Find a port by it's ast variable definition.
risc::PrimitiveChannelInstance * risc::Class::find_prim_channel | ( | SgVariableDefinition * | var_def | ) | [inherited] |
find a prim channel by it's ast variable definition
risc::Variable * risc::Class::find_variable | ( | SgVariableDefinition * | var_def | ) | [inherited] |
Find a port by it's ast variable definition.
SgClassDefinition * risc::Class::get_ast_node | ( | ) | [virtual, inherited] |
Returns the ast definition of the class.
Reimplemented from risc::Definition.
SgType * risc::Definition::get_ast_type | ( | ) | [virtual, inherited] |
Returns the type of the ast node.
std::string risc::Class::get_ast_type_name | ( | ) | [virtual, inherited] |
Returns the name of the module type.
Reimplemented from risc::Definition.
SgFunctionDefinition * risc::Class::get_before_end_of_elaboration_definition | ( | ) | [inherited] |
This function return a pointer to the definition of the function before_end_of_elaboration.
get_before_end_of_elaboration_definition
std::string risc::Definition::get_file_name | ( | ) | [inherited] |
Get the name of the file where the declaration is located.
int risc::Definition::get_line_number | ( | ) | [inherited] |
Get the line number of the instance.
std::string risc::Class::get_name | ( | ) | [virtual, inherited] |
returns the name of the module definition
Reimplemented from risc::Definition.
int risc::Definition::get_position_in_line | ( | ) | [inherited] |
Get the position of the in declaration in the corresponding line In other words the column in the line.
bool risc::Definition::has_source_location | ( | ) | [inherited] |
Determines if a ast node has an associated ast node.
void risc::Module::initialize_functions | ( | ) | [virtual] |
This function searches for all functions, SC_THREADS, SC_CTHREADS, and SC_METHODS in the module definition. The corresponding variable vectors will be used.
Reimplemented from risc::Class.
void risc::Class::initialize_variables | ( | ) | [inherited] |
This function searches for all variable declarations in the module definition. The corresponding variable vectors will be used.
void risc::Module::print_hierarchy | ( | unsigned | indent_level = 0 |
) |
Prints the hierarchy. Roots is this definiton.
void risc::Module::print_module_definition | ( | ) |
Prints the complete module design into the terminal.
SgNode* risc::Definition::ast_node_ [inherited] |
SgType* risc::Definition::ast_type_pointer_ [inherited] |
Vector of async reset signals which are registered in this module.
Vector of cthreads which are defined in this module.
EventVector risc::Class::events_ [inherited] |
Vector of events which are defined in this module.
FunctionVector risc::Class::functions_ [inherited] |
Vector of functions which are defined in this module.
InOutPortVector risc::Class::inoutports_ [inherited] |
Vector of inoutports which are defined in this module.
InPortVector risc::Class::inports_ [inherited] |
Vector of inports which are defined in this module.
This variable counts how many instances of this given type exsist in the desgin.
Vector of methods which are defined in this module.
OutPortVector risc::Class::outports_ [inherited] |
Vector of outports which are defined in this module.
Vector of reset signals which are registered in this module.
Vector of hierarchical channel instances which are declared in this module.
Vector of hierarchical channel definitions. Technically, this represents a nested C++ class definition. In a good design this vector should be empty.
ModuleInstanceVector risc::Class::sub_modules_ [inherited] |
Vector of module definitions which are defined in this module.
Vector of module definitions which are defined in this module.
Vector of primimitive channel instances which are declared in this module.
Vector of primitive channel definitions. Technically, this represents a nested C++ class definition. In a good design this vector should be empty.
Vector of threads which are defined in this module.
Type risc::Definition::type_ [inherited] |
VariableVector risc::Class::variables_ [inherited] |
Vector of C++ builtin variables that are declared in the module.