risc::sg::DataConflictTable Class Reference

This class represents the data conflict table among the individual segments. Two segments have a conflict if a least one variable is by the first segment and read by the second segment. A two dimensional array represents this array. More...

#include <data_conflict_table.h>

Inheritance diagram for risc::sg::DataConflictTable:
Inheritance graph
[legend]
Collaboration diagram for risc::sg::DataConflictTable:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 DataConflictTable (SegmentGraph &graph, PathInstanceMapper *path_instance_mapper, bool debugging)
 Default constructor for the DataConflictTable.
virtual void determine_conflict_table ()
 This function determines conflicts among the segments.
void color_members_of_class (const MappedVariable &variable, DataConflictAstAttributes::Status color)
void uncolor_members_of_class (SgVariableSymbol *var_symbol, int instance_id)
bool check_members_of_class (const MappedVariable &mapped_variable, DataConflictAstAttributes::Status color)
bool data_conflict_between (VertexDescriptor first, VertexDescriptor second, int row, int column, int inst_id_first, int inst_id_second, bool dynamic_analysis)
void print_conflict_table (std::string filename)
void print_lookup_table (std::string filename)
int segment_and_instance_id_to_index (int segment_id, int instance_id)
std::pair< int, int > index_to_segment_and_instance_id (int index)
bool has_conflict (int segment_id_1, int instance_id_1, int segment_id_2, int instance_id_2)
void print_instance_id_to_index_lookup_table ()
 This function prints the table instance_id_to_index_lookup_table in the terminal.
void set_conflict (int segment_id_1, int instance_id_1, int segment_id_2, int instance_id_2)
VertexDescriptor segment_id_to_vertex_descriptor (int id)
MappedVariableList get_mapped_variable_statically (SgVariableSymbol *variable, int instance_id)
MappedVariableList get_mapped_variable_dynamically (SgVariableSymbol *variable, int instance_id)

Public Attributes

VertexDescriptorvertex_lookup_
 This lookup table translates segment ids into vertex descriptors. At position i is the segment with the id of instance_id_to_index_lookup_[0][i].
int size_of_conflict_table_
 This variable defines the size of the conflict table. The size is quadratic.
int max_instances_
 This variable represents the max number of module instances in the design. Also, this is the number of rows in the instance_id_to_index_lookup_ table.
int number_of_segments_
 This variable defines how many segments exist in the segment graph. Also, this is the number of columns in the instance_id_to_index_lookup_ table.
int ** instance_id_to_index_lookup_
 This table should be used a lookup table: (segment id, instance id) -> index of conflict table.
bool ** conflict_table_
 The conflict table.
PathInstanceMapperpath_instance_mapper_
SegmentGraphsegment_graph_
ConflictInformation ** conflict_info_
bool debugging_

Detailed Description

This class represents the data conflict table among the individual segments. Two segments have a conflict if a least one variable is by the first segment and read by the second segment. A two dimensional array represents this array.


Constructor & Destructor Documentation

risc::sg::DataConflictTable::DataConflictTable ( SegmentGraph graph,
PathInstanceMapper path_instance_mapper,
bool  debugging 
)

Default constructor for the DataConflictTable.


Member Function Documentation

bool risc::sg::DataConflictTable::check_members_of_class ( const MappedVariable mapped_variable,
DataConflictAstAttributes::Status  color 
)
void risc::sg::DataConflictTable::color_members_of_class ( const MappedVariable variable,
DataConflictAstAttributes::Status  color 
)
bool risc::sg::DataConflictTable::data_conflict_between ( VertexDescriptor  first,
VertexDescriptor  second,
int  row,
int  column,
int  inst_id_first,
int  inst_id_second,
bool  dynamic_analysis 
)
risc::sg::DataConflictTable::determine_conflict_table (  )  [virtual]

This function determines conflicts among the segments.

Reimplemented from risc::sg::ConflictTable.

risc::sg::MappedVariableList risc::sg::ConflictTable::get_mapped_variable_dynamically ( SgVariableSymbol *  variable,
int  instance_id 
) [inherited]
risc::sg::MappedVariableList risc::sg::ConflictTable::get_mapped_variable_statically ( SgVariableSymbol *  variable,
int  instance_id 
) [inherited]
bool risc::sg::ConflictTable::has_conflict ( int  segment_id_1,
int  instance_id_1,
int  segment_id_2,
int  instance_id_2 
) [inherited]
std::pair< int, int > risc::sg::ConflictTable::index_to_segment_and_instance_id ( int  index  )  [inherited]
void risc::sg::ConflictTable::print_conflict_table ( std::string  filename  )  [inherited]
risc::sg::ConflictTable::print_instance_id_to_index_lookup_table (  )  [inherited]

This function prints the table instance_id_to_index_lookup_table in the terminal.

void risc::sg::ConflictTable::print_lookup_table ( std::string  filename  )  [inherited]
int risc::sg::ConflictTable::segment_and_instance_id_to_index ( int  segment_id,
int  instance_id 
) [inherited]
risc::sg::VertexDescriptor risc::sg::ConflictTable::segment_id_to_vertex_descriptor ( int  id  )  [inherited]
void risc::sg::ConflictTable::set_conflict ( int  segment_id_1,
int  instance_id_1,
int  segment_id_2,
int  instance_id_2 
) [inherited]
void risc::sg::DataConflictTable::uncolor_members_of_class ( SgVariableSymbol *  var_symbol,
int  instance_id 
)

Member Data Documentation

The conflict table.

This table should be used a lookup table: (segment id, instance id) -> index of conflict table.

This variable represents the max number of module instances in the design. Also, this is the number of rows in the instance_id_to_index_lookup_ table.

This variable defines how many segments exist in the segment graph. Also, this is the number of columns in the instance_id_to_index_lookup_ table.

This variable defines the size of the conflict table. The size is quadratic.

This lookup table translates segment ids into vertex descriptors. At position i is the segment with the id of instance_id_to_index_lookup_[0][i].


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on 30 Sep 2016 by  doxygen 1.6.1