source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/include/Register_translation_unit.h @ 123

Last change on this file since 123 was 123, checked in by rosiere, 15 years ago

1) Fix performance
2) add auto generation to SPECINT2000
3) add reset in genMoore and genMealy

  • Property svn:keywords set to Id
File size: 11.1 KB
Line 
1#ifndef morpheo_behavioural_core_multi_ooo_engine_ooo_engine_rename_unit_register_translation_unit_Register_translation_unit_h
2#define morpheo_behavioural_core_multi_ooo_engine_ooo_engine_rename_unit_register_translation_unit_Register_translation_unit_h
3
4/*
5 * $Id: Register_translation_unit.h 123 2009-06-08 20:43:30Z rosiere $
6 *
7 * [ Description ]
8 *
9 */
10
11#ifdef SYSTEMC
12#include "systemc.h"
13#endif
14
15#include <iostream>
16#include "Common/include/ToString.h"
17#include "Common/include/Debug.h"
18#include "Behavioural/include/Types.h"
19
20#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/include/Parameters.h"
21#ifdef STATISTICS
22#include "Behavioural/include/Stat.h"
23#endif
24#include "Behavioural/include/Component.h"
25#ifdef VHDL
26#include "Behavioural/include/Vhdl.h"
27#endif
28#include "Behavioural/include/Usage.h"
29
30#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Dependency_checking_unit/include/Dependency_checking_unit.h"
31#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/include/Free_List_unit.h"
32#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/include/Register_Address_Translation_unit.h"
33#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/include/Stat_List_unit.h"
34#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/include/Register_translation_unit_Glue.h"
35
36namespace morpheo {
37namespace behavioural {
38namespace core {
39namespace multi_ooo_engine {
40namespace ooo_engine {
41namespace rename_unit {
42namespace register_translation_unit {
43
44
45  class Register_translation_unit
46#if SYSTEMC
47    : public sc_module
48#endif
49  {
50    // -----[ fields ]----------------------------------------------------
51    // Parameters
52  protected : const std::string  _name;
53  protected : const Parameters * _param;
54  private   : const Tusage_t     _usage;
55
56#ifdef STATISTICS
57  public    : Stat                           * _stat;
58#endif
59
60  public    : Component                      * _component;
61  private   : Interfaces                     * _interfaces;
62
63#ifdef SYSTEMC
64    // ~~~~~[ Interface ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
65    // Interface
66  public    : SC_CLOCK                      *  in_CLOCK        ;
67  public    : SC_IN (Tcontrol_t)            *  in_NRESET       ;
68
69    // ~~~~~[ Interface "rename" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
70  public    : SC_IN (Tcontrol_t        )   **  in_RENAME_VAL               ;//[nb_inst_insert]
71  public    : SC_OUT(Tcontrol_t        )   ** out_RENAME_ACK               ;//[nb_inst_insert]
72  public    : SC_IN (Tcontext_t        )   **  in_RENAME_FRONT_END_ID      ;//[nb_inst_insert]
73  public    : SC_IN (Tcontext_t        )   **  in_RENAME_CONTEXT_ID        ;//[nb_inst_insert]
74  public    : SC_IN (Tcontrol_t        )   **  in_RENAME_READ_RA           ;//[nb_inst_insert]
75  public    : SC_IN (Tgeneral_address_t)   **  in_RENAME_NUM_REG_RA_LOG    ;//[nb_inst_insert]
76  public    : SC_IN (Tcontrol_t        )   **  in_RENAME_READ_RB           ;//[nb_inst_insert]
77  public    : SC_IN (Tgeneral_address_t)   **  in_RENAME_NUM_REG_RB_LOG    ;//[nb_inst_insert]
78  public    : SC_IN (Tcontrol_t        )   **  in_RENAME_READ_RC           ;//[nb_inst_insert]
79  public    : SC_IN (Tspecial_address_t)   **  in_RENAME_NUM_REG_RC_LOG    ;//[nb_inst_insert]
80  public    : SC_IN (Tcontrol_t        )   **  in_RENAME_WRITE_RD          ;//[nb_inst_insert]
81  public    : SC_IN (Tgeneral_address_t)   **  in_RENAME_NUM_REG_RD_LOG    ;//[nb_inst_insert]
82  public    : SC_IN (Tcontrol_t        )   **  in_RENAME_WRITE_RE          ;//[nb_inst_insert]
83  public    : SC_IN (Tspecial_address_t)   **  in_RENAME_NUM_REG_RE_LOG    ;//[nb_inst_insert]
84
85    // ~~~~~[ Interface "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
86  public    : SC_OUT(Tcontrol_t        )   ** out_INSERT_VAL               ;//[nb_inst_insert]
87  public    : SC_IN (Tcontrol_t        )   **  in_INSERT_ACK               ;//[nb_inst_insert]
88  public    : SC_OUT(Tcontext_t        )   ** out_INSERT_FRONT_END_ID      ;//[nb_inst_insert]
89  public    : SC_OUT(Tcontext_t        )   ** out_INSERT_CONTEXT_ID        ;//[nb_inst_insert]
90  public    : SC_OUT(Tcontrol_t        )   ** out_INSERT_READ_RA           ;//[nb_inst_insert]
91#ifdef DEBUG
92  public    : SC_OUT(Tgeneral_address_t)   ** out_INSERT_NUM_REG_RA_LOG    ;//[nb_inst_insert]
93#endif
94  public    : SC_OUT(Tgeneral_address_t)   ** out_INSERT_NUM_REG_RA_PHY    ;//[nb_inst_insert]
95  public    : SC_OUT(Tcontrol_t        )   ** out_INSERT_READ_RB           ;//[nb_inst_insert]
96#ifdef DEBUG
97  public    : SC_OUT(Tgeneral_address_t)   ** out_INSERT_NUM_REG_RB_LOG    ;//[nb_inst_insert]
98#endif
99  public    : SC_OUT(Tgeneral_address_t)   ** out_INSERT_NUM_REG_RB_PHY    ;//[nb_inst_insert]
100  public    : SC_OUT(Tcontrol_t        )   ** out_INSERT_READ_RC           ;//[nb_inst_insert]
101#ifdef DEBUG
102  public    : SC_OUT(Tspecial_address_t)   ** out_INSERT_NUM_REG_RC_LOG    ;//[nb_inst_insert]
103#endif
104  public    : SC_OUT(Tspecial_address_t)   ** out_INSERT_NUM_REG_RC_PHY    ;//[nb_inst_insert]
105  public    : SC_OUT(Tcontrol_t        )   ** out_INSERT_WRITE_RD          ;//[nb_inst_insert]
106  public    : SC_OUT(Tgeneral_address_t)   ** out_INSERT_NUM_REG_RD_LOG    ;//[nb_inst_insert]
107  public    : SC_OUT(Tgeneral_address_t)   ** out_INSERT_NUM_REG_RD_PHY_OLD;//[nb_inst_insert]
108  public    : SC_OUT(Tgeneral_address_t)   ** out_INSERT_NUM_REG_RD_PHY_NEW;//[nb_inst_insert]
109  public    : SC_OUT(Tcontrol_t        )   ** out_INSERT_WRITE_RE          ;//[nb_inst_insert]
110  public    : SC_OUT(Tspecial_address_t)   ** out_INSERT_NUM_REG_RE_LOG    ;//[nb_inst_insert]
111  public    : SC_OUT(Tspecial_address_t)   ** out_INSERT_NUM_REG_RE_PHY_OLD;//[nb_inst_insert]
112  public    : SC_OUT(Tspecial_address_t)   ** out_INSERT_NUM_REG_RE_PHY_NEW;//[nb_inst_insert]
113
114    // ~~~~~[ Interface "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
115  public    : SC_IN (Tcontrol_t        )   **  in_RETIRE_VAL               ;//[nb_inst_retire]
116  public    : SC_OUT(Tcontrol_t        )   ** out_RETIRE_ACK               ;//[nb_inst_retire]
117  public    : SC_IN (Tcontext_t        )   **  in_RETIRE_FRONT_END_ID      ;//[nb_inst_retire]
118  public    : SC_IN (Tcontext_t        )   **  in_RETIRE_CONTEXT_ID        ;//[nb_inst_retire]
119//   public    : SC_IN (Tcontrol_t        )   **  in_RETIRE_READ_RA           ;//[nb_inst_retire]
120//   public    : SC_IN (Tgeneral_address_t)   **  in_RETIRE_NUM_REG_RA_PHY    ;//[nb_inst_retire]
121//   public    : SC_IN (Tcontrol_t        )   **  in_RETIRE_READ_RB           ;//[nb_inst_retire]
122//   public    : SC_IN (Tgeneral_address_t)   **  in_RETIRE_NUM_REG_RB_PHY    ;//[nb_inst_retire]
123//   public    : SC_IN (Tcontrol_t        )   **  in_RETIRE_READ_RC           ;//[nb_inst_retire]
124//   public    : SC_IN (Tspecial_address_t)   **  in_RETIRE_NUM_REG_RC_PHY    ;//[nb_inst_retire]
125  public    : SC_IN (Tcontrol_t        )   **  in_RETIRE_WRITE_RD          ;//[nb_inst_retire]
126  public    : SC_IN (Tgeneral_address_t)   **  in_RETIRE_NUM_REG_RD_LOG    ;//[nb_inst_retire]
127  public    : SC_IN (Tgeneral_address_t)   **  in_RETIRE_NUM_REG_RD_PHY_OLD;//[nb_inst_retire]
128  public    : SC_IN (Tgeneral_address_t)   **  in_RETIRE_NUM_REG_RD_PHY_NEW;//[nb_inst_retire]
129  public    : SC_IN (Tcontrol_t        )   **  in_RETIRE_WRITE_RE          ;//[nb_inst_retire]
130  public    : SC_IN (Tspecial_address_t)   **  in_RETIRE_NUM_REG_RE_LOG    ;//[nb_inst_retire]
131  public    : SC_IN (Tspecial_address_t)   **  in_RETIRE_NUM_REG_RE_PHY_OLD;//[nb_inst_retire]
132  public    : SC_IN (Tspecial_address_t)   **  in_RETIRE_NUM_REG_RE_PHY_NEW;//[nb_inst_retire]
133
134    // ~~~~~[ Interface "retire_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
135  public    : SC_IN (Tcontrol_t        )  ***  in_RETIRE_EVENT_VAL         ;//[nb_front_end][nb_context]
136  public    : SC_OUT(Tcontrol_t        )  *** out_RETIRE_EVENT_ACK         ;//[nb_front_end][nb_context]
137  public    : SC_IN (Tevent_state_t    )  ***  in_RETIRE_EVENT_STATE       ;//[nb_front_end][nb_context]
138
139    // ~~~~~[ interface : "info" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
140#ifdef DEBUG_TEST
141  public    : SC_IN (bool      )            *  in_INFO_ROB_EMPTY  ;
142#endif
143
144    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
145  public : morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::dependency_checking_unit::Dependency_checking_unit                   * _component_dependency_checking_unit;
146  public : morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::free_list_unit::Free_List_unit                                       * _component_free_list_unit;
147  public : morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::register_address_translation_unit::Register_Address_Translation_unit * _component_register_address_translation_unit;
148  public : morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::stat_list_unit::Stat_List_unit                                       * _component_stat_list_unit;
149  public : morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::register_translation_unit_glue::Register_translation_unit_Glue       * _component_register_translation_unit_glue;
150
151    // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
152
153    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
154#endif
155
156    // -----[ Methods ]---------------------------------------------------
157
158#ifdef SYSTEMC
159    SC_HAS_PROCESS (Register_translation_unit);
160#endif
161  public  :          Register_translation_unit             
162  (
163#ifdef SYSTEMC
164   sc_module_name                                name,
165#else                                         
166   std::string                                   name,
167#endif                                         
168#ifdef STATISTICS
169   morpheo::behavioural::Parameters_Statistics * param_statistics,
170#endif
171   Parameters                                  * param,
172   morpheo::behavioural::Tusage_t                usage
173   );
174  public  :          ~Register_translation_unit             (void);
175                                               
176  private : void        allocation                (
177#ifdef STATISTICS
178                                                   morpheo::behavioural::Parameters_Statistics * param_statistics
179#else
180                                                   void
181#endif
182                                                   );
183  private : void        deallocation              (void);
184                                               
185#ifdef SYSTEMC                                 
186# if defined(STATISTICS) or defined(VHDL_TESTBENCH)
187  public  : void        transition                (void);
188# endif                                       
189#endif                                         
190
191#if VHDL                                       
192  public  : void        vhdl                      (void);
193#endif                                         
194
195#ifdef STATISTICS
196  public  : void        statistics_declaration    (morpheo::behavioural::Parameters_Statistics * param_statistics);
197#endif
198#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
199  private : void        end_cycle                 (void);
200#endif
201  };
202
203}; // end namespace register_translation_unit
204}; // end namespace rename_unit
205}; // end namespace ooo_engine
206}; // end namespace multi_ooo_engine
207}; // end namespace core
208
209}; // end namespace behavioural
210}; // end namespace morpheo             
211
212#endif
Note: See TracBrowser for help on using the repository browser.