#ifndef Debug_component_H
#define Debug_component_H

// Boolean
#  define DEBUG_true                                              true 
#  define DEBUG_false                                             false

// Component
#  define DEBUG_Morpheo                                           true
#  define   DEBUG_Behavioural                                     true
#  define   DEBUG_Configuration                                   true
#  define     DEBUG_Generic                                       true
#  define       DEBUG_Comparator                                  true 
#  define       DEBUG_Counter                                     true 
#  define       DEBUG_Divider                                     true 
#  define       DEBUG_Multiplier                                  true 
#  define       DEBUG_Priority                                    true
#  define       DEBUG_Queue                                       true 
#  define       DEBUG_Queue_Control                               true 
#  define       DEBUG_RegisterFile                                true
#  define         DEBUG_RegisterFile_Monolithic                   true 
#  define         DEBUG_RegisterFile_Multi_Banked                 true
#  define       DEBUG_Select                                      true
#  define         DEBUG_Select_Priority_Fixed                     true 
#  define       DEBUG_Shifter                                     true
#  define       DEBUG_Sort                                        true
#  define       DEBUG_Victim                                      true
#  define         DEBUG_Victim_Pseudo_LRU                         true
#  define     DEBUG_Core                                          true
#  define       DEBUG_Core_Glue                                   true
#  define       DEBUG_Dcache_Access                               true
#  define       DEBUG_Icache_Access                               true 
#  define       DEBUG_Multi_Front_end                             true
#  define         DEBUG_Front_end                                 true
#  define           DEBUG_Context_State                           true
#  define           DEBUG_Decod_unit                              true
#  define             DEBUG_Decod                                 true
#  define             DEBUG_Decod_queue                           true
#  define           DEBUG_Front_end_Glue                          true
#  define           DEBUG_Ifetch_unit                             true
#  define             DEBUG_Address_management                    true
#  define             DEBUG_Ifetch_queue                          true
#  define             DEBUG_Ifetch_unit_Glue                      true
#  define           DEBUG_Prediction_unit                         true
#  define             DEBUG_Branch_Target_Buffer                  true
#  define               DEBUG_Branch_Target_Buffer_Glue           true
#  define               DEBUG_Branch_Target_Buffer_Register       true
#  define             DEBUG_Direction                             true
#  define               DEBUG_Direction_Glue                      true
#  define               DEBUG_Meta_Predictor                      true
#  define                 DEBUG_Meta_Predictor_Glue               true
#  define                 DEBUG_Two_Level_Branch_Predictor        true
#  define             DEBUG_Prediction_unit_Glue                  true
#  define             DEBUG_Return_Address_Stack                  true
#  define             DEBUG_Update_Prediction_Table               true
#  define       DEBUG_Multi_OOO_Engine                            true
#  define         DEBUG_OOO_Engine                                true
#  define           DEBUG_Commit_unit                             true
#  define           DEBUG_Issue_queue                             true 
#  define           DEBUG_OOO_Engine_Glue                         true
#  define           DEBUG_Reexecute_unit                          true
#  define           DEBUG_Rename_unit                             true
#  define             DEBUG_Load_Store_pointer_unit               true
#  define             DEBUG_Register_translation_unit             true
#  define               DEBUG_Dependency_checking_unit            true
#  define               DEBUG_Free_List_unit                      true
#  define               DEBUG_Register_Address_Translation_unit   true
#  define               DEBUG_Register_translation_unit_Glue      true
#  define               DEBUG_Stat_List_unit                      true
#  define             DEBUG_Rename_select                         true
#  define             DEBUG_Rename_unit_Glue                      true 
#  define           DEBUG_Special_Register_unit                   true
#  define       DEBUG_Multi_Execute_loop                          true
#  define         DEBUG_Execute_loop                              true
#  define           DEBUG_Execute_loop_Glue                       true 
#  define           DEBUG_Multi_Execute_unit                      true
#  define             DEBUG_Execute_unit                          true
#  define               DEBUG_Functionnal_unit                    true
#  define               DEBUG_Load_store_unit                     true
#  define           DEBUG_Multi_Read_unit                         true
#  define             DEBUG_Read_unit                             true
#  define               DEBUG_Read_queue                          true
#  define               DEBUG_Reservation_station                 true
#  define           DEBUG_Multi_Write_unit                        true
#  define             DEBUG_Write_unit                            true
#  define               DEBUG_Execute_queue                       true
#  define               DEBUG_Write_queue                         true
#  define           DEBUG_Network                                 true
#  define             DEBUG_Execution_unit_to_Write_unit          true
#  define             DEBUG_Read_unit_to_Execution_unit           true
#  define           DEBUG_Register_unit                           true
#  define             DEBUG_Register_unit_Glue                    true

// Others
#  define DEBUG_Allocation                                        true
#  define DEBUG_Interface                                         true

//----------------------------------------------------------------------

// Boolean
#  define NAME_true                                       "true" 
#  define NAME_false                                      "false"
                                                                                                       
// Others                                                                                              
#  define NAME_Allocation                                 "Allocation"
#  define NAME_Interface                                  "Interface"

// Component                                               
#  define NAME_Morpheo                                    "Morpheo"
#  define NAME_Behavioural                                "Behavioural"
#  define NAME_Configuration                              "Configuration"
#  define NAME_Generic                                    "Generic"
#  define NAME_Comparator                                 "Comparator"
#  define NAME_Counter                                    "Counter"
#  define NAME_Divider                                    "Divider"
#  define NAME_Multiplier                                 "Multiplier"
#  define NAME_Priority                                   "Priority"
#  define NAME_Queue                                      "Queue"
#  define NAME_Queue_Control                              "Queue_Control"
#  define NAME_RegisterFile                               "RegisterFile"
#  define NAME_RegisterFile_Monolithic                    "RegisterFile_Monolithic"
#  define NAME_RegisterFile_Multi_Banked                  "RegisterFile_Multi_Banked"
#  define NAME_Select                                     "Select"
#  define NAME_Select_Priority_Fixed                      "Select_Priority_Fixed"
#  define NAME_Shifter                                    "Shifter"
#  define NAME_Sort                                       "Sort"
#  define NAME_Victim                                     "Victim"
#  define NAME_Victim_Pseudo_LRU                          "Victim_Pseudo_LRU"
#  define NAME_Core                                       "Core"
#  define NAME_Core_Glue                                  "Core_Glue"
#  define NAME_Dcache_Access                              "Dcache_Access"
#  define NAME_Icache_Access                              "Icache_Access"
#  define NAME_Multi_Front_end                            "Multi_Front_end"
#  define NAME_Front_end                                  "Front_end"
#  define NAME_Context_State                              "Context_State"
#  define NAME_Decod_unit                                 "Decod_unit"
#  define NAME_Decod                                      "Decod"
#  define NAME_Decod_queue                                "Decod_queue"
#  define NAME_Front_end_Glue                             "Front_end_Glue"
#  define NAME_Ifetch_unit                                "Ifetch_unit"
#  define NAME_Address_management                         "Address_management"
#  define NAME_Ifetch_queue                               "Ifetch_queue"
#  define NAME_Ifetch_unit_Glue                           "Ifetch_unit_Glue"
#  define NAME_Prediction_unit                            "Prediction_unit"
#  define NAME_Branch_Target_Buffer                       "Branch_Target_Buffer"
#  define NAME_Branch_Target_Buffer_Glue                  "Branch_Target_Buffer_Glue"
#  define NAME_Branch_Target_Buffer_Register              "Branch_Target_Buffer_Register"
#  define NAME_Direction                                  "Direction"
#  define NAME_Direction_Glue                             "Direction_Glue"
#  define NAME_Meta_Predictor                             "Meta_Predictor"
#  define NAME_Meta_Predictor_Glue                        "Meta_Predictor_Glue"
#  define NAME_Two_Level_Branch_Predictor                 "Two_Level_Branch_Predictor"
#  define NAME_Prediction_unit_Glue                       "Prediction_unit_Glue"
#  define NAME_Return_Address_Stack                       "Return_Address_Stack"
#  define NAME_Update_Prediction_Table                    "Update_Prediction_Table"
#  define NAME_Multi_OOO_Engine                           "Multi_OOO_Engine"
#  define NAME_OOO_Engine                                 "OOO_Engine"
#  define NAME_Commit_unit                                "Commit_unit"
#  define NAME_Issue_queue                                "Issue_queue"
#  define NAME_OOO_Engine_Glue                            "OOO_Engine_Glue"
#  define NAME_Reexecute_unit                             "Reexecute_unit"
#  define NAME_Rename_unit                                "Rename_unit"
#  define NAME_Load_Store_pointer_unit                    "Load_Store_pointer_unit"
#  define NAME_Register_translation_unit                  "Register_translation_unit"
#  define NAME_Dependency_checking_unit                   "Dependency_checking_unit"
#  define NAME_Free_List_unit                             "Free_List_unit"
#  define NAME_Register_Address_Translation_unit          "Register_Address_Translation_unit"
#  define NAME_Register_translation_unit_Glue             "Register_translation_unit_Glue"
#  define NAME_Stat_List_unit                             "Stat_List_unit"
#  define NAME_Rename_select                              "Rename_select"
#  define NAME_Rename_unit_Glue                           "Rename_unit_Glue"
#  define NAME_Special_Register_unit                      "Special_Register_unit"
#  define NAME_Multi_Execute_loop                         "Multi_Execute_loop"
#  define NAME_Execute_loop                               "Execute_loop"
#  define NAME_Execute_loop_Glue                          "Execute_loop_Glue"
#  define NAME_Multi_Execute_unit                         "Multi_Execute_unit"
#  define NAME_Execute_unit                               "Execute_unit"
#  define NAME_Functionnal_unit                           "Functionnal_unit"
#  define NAME_Load_store_unit                            "Load_store_unit"
#  define NAME_Multi_Read_unit                            "Multi_Read_unit"
#  define NAME_Read_unit                                  "Read_unit"
#  define NAME_Read_queue                                 "Read_queue"
#  define NAME_Reservation_station                        "Reservation_station"
#  define NAME_Multi_Write_unit                           "Multi_Write_unit"
#  define NAME_Write_unit                                 "Write_unit"
#  define NAME_Execute_queue                              "Execute_queue"
#  define NAME_Write_queue                                "Write_queue"
#  define NAME_Network                                    "Network"
#  define NAME_Execution_unit_to_Write_unit               "Execution_unit_to_Write_unit"
#  define NAME_Read_unit_to_Execution_unit                "Read_unit_to_Execution_unit"
#  define NAME_Register_unit                              "Register_unit"
#  define NAME_Register_unit_Glue                         "Register_unit_Glue"

#endif
