source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_select/include/Rename_select.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: 9.5 KB
Line 
1#ifndef morpheo_behavioural_core_multi_ooo_engine_ooo_engine_rename_unit_rename_select_Rename_select_h
2#define morpheo_behavioural_core_multi_ooo_engine_ooo_engine_rename_unit_rename_select_Rename_select_h
3
4/*
5 * $Id: Rename_select.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 "Common/include/ToString.h"
16#include "Common/include/Debug.h"
17
18#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_select/include/Types.h"
19#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_select/include/Parameters.h"
20#ifdef STATISTICS
21#include "Behavioural/include/Stat.h"
22#endif
23#include "Behavioural/include/Component.h"
24#ifdef VHDL
25#include "Behavioural/include/Vhdl.h"
26#endif
27#include "Behavioural/include/Usage.h"
28
29#include "Behavioural/Generic/Priority/include/Priority.h"
30
31#include <list>
32#include <iostream>
33
34namespace morpheo {
35namespace behavioural {
36
37namespace core {
38namespace multi_ooo_engine {
39namespace ooo_engine {
40namespace rename_unit {
41namespace rename_select {
42
43
44  class Rename_select
45#if SYSTEMC
46    : public sc_module
47#endif
48  {
49    // -----[ fields ]----------------------------------------------------
50    // Parameters
51  protected : const std::string  _name;
52  protected : const Parameters * _param;
53  private   : const Tusage_t     _usage;
54
55#ifdef STATISTICS
56  public    : Stat                           * _stat;
57#endif
58
59  public    : Component                      * _component;
60  private   : Interfaces                     * _interfaces;
61
62#ifdef SYSTEMC
63    // ~~~~~[ Interface ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
64    // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
65  public    : SC_CLOCK                      *  in_CLOCK        ;
66  public    : SC_IN (Tcontrol_t)            *  in_NRESET       ;
67
68    // ~~~~~[ Interface : "rename_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
69  public    : SC_IN (Tcontrol_t        )  ***  in_RENAME_IN_VAL           ;//[nb_front_end][nb_inst_decod]
70  public    : SC_OUT(Tcontrol_t        )  *** out_RENAME_IN_ACK           ;//[nb_front_end][nb_inst_decod]
71  public    : SC_IN (Tcontext_t        )  ***  in_RENAME_IN_FRONT_END_ID  ;//[nb_front_end][nb_inst_decod]
72  public    : SC_IN (Tcontext_t        )  ***  in_RENAME_IN_CONTEXT_ID    ;//[nb_front_end][nb_inst_decod]
73  public    : SC_IN (Tdepth_t          )  ***  in_RENAME_IN_DEPTH         ;//[nb_front_end][nb_inst_decod]
74  public    : SC_IN (Ttype_t           )  ***  in_RENAME_IN_TYPE          ;//[nb_front_end][nb_inst_decod]
75  public    : SC_IN (Toperation_t      )  ***  in_RENAME_IN_OPERATION     ;//[nb_front_end][nb_inst_decod]
76  public    : SC_IN (Tcontrol_t        )  ***  in_RENAME_IN_NO_EXECUTE    ;//[nb_front_end][nb_inst_decod]
77//public    : SC_IN (Tcontrol_t        )  ***  in_RENAME_IN_HAVE_EVENT    ;//[nb_front_end][nb_inst_decod]
78  public    : SC_IN (Tcontrol_t        )  ***  in_RENAME_IN_LAST_EVENT    ;//[nb_front_end][nb_inst_decod]
79  public    : SC_IN (Tcontrol_t        )  ***  in_RENAME_IN_IS_DELAY_SLOT ;//[nb_front_end][nb_inst_decod]
80#ifdef DEBUG
81  public    : SC_IN (Taddress_t        )  ***  in_RENAME_IN_ADDRESS       ;//[nb_front_end][nb_inst_decod]
82#endif
83  public    : SC_IN (Taddress_t        )  ***  in_RENAME_IN_ADDRESS_NEXT  ;//[nb_front_end][nb_inst_decod]
84  public    : SC_IN (Tcontrol_t        )  ***  in_RENAME_IN_HAS_IMMEDIAT  ;//[nb_front_end][nb_inst_decod]
85  public    : SC_IN (Tgeneral_data_t   )  ***  in_RENAME_IN_IMMEDIAT      ;//[nb_front_end][nb_inst_decod]
86  public    : SC_IN (Tcontrol_t        )  ***  in_RENAME_IN_READ_RA       ;//[nb_front_end][nb_inst_decod]
87  public    : SC_IN (Tgeneral_address_t)  ***  in_RENAME_IN_NUM_REG_RA    ;//[nb_front_end][nb_inst_decod]
88  public    : SC_IN (Tcontrol_t        )  ***  in_RENAME_IN_READ_RB       ;//[nb_front_end][nb_inst_decod]
89  public    : SC_IN (Tgeneral_address_t)  ***  in_RENAME_IN_NUM_REG_RB    ;//[nb_front_end][nb_inst_decod]
90  public    : SC_IN (Tcontrol_t        )  ***  in_RENAME_IN_READ_RC       ;//[nb_front_end][nb_inst_decod]
91  public    : SC_IN (Tspecial_address_t)  ***  in_RENAME_IN_NUM_REG_RC    ;//[nb_front_end][nb_inst_decod]
92  public    : SC_IN (Tcontrol_t        )  ***  in_RENAME_IN_WRITE_RD      ;//[nb_front_end][nb_inst_decod]
93  public    : SC_IN (Tgeneral_address_t)  ***  in_RENAME_IN_NUM_REG_RD    ;//[nb_front_end][nb_inst_decod]
94  public    : SC_IN (Tcontrol_t        )  ***  in_RENAME_IN_WRITE_RE      ;//[nb_front_end][nb_inst_decod]
95  public    : SC_IN (Tspecial_address_t)  ***  in_RENAME_IN_NUM_REG_RE    ;//[nb_front_end][nb_inst_decod]
96  public    : SC_IN (Texception_t      )  ***  in_RENAME_IN_EXCEPTION_USE ;//[nb_front_end][nb_inst_decod]
97  public    : SC_IN (Texception_t      )  ***  in_RENAME_IN_EXCEPTION     ;//[nb_front_end][nb_inst_decod]
98
99    // ~~~~~[ Interface : "rename_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
100  public    : SC_OUT(Tcontrol_t        )   ** out_RENAME_OUT_VAL          ;//[nb_inst_rename]
101  public    : SC_IN (Tcontrol_t        )   **  in_RENAME_OUT_ACK          ;//[nb_inst_rename]
102  public    : SC_OUT(Tcontext_t        )   ** out_RENAME_OUT_FRONT_END_ID ;//[nb_inst_rename]
103  public    : SC_OUT(Tcontext_t        )   ** out_RENAME_OUT_CONTEXT_ID   ;//[nb_inst_rename]
104  public    : SC_OUT(Tdepth_t          )   ** out_RENAME_OUT_DEPTH        ;//[nb_inst_rename]
105  public    : SC_OUT(Ttype_t           )   ** out_RENAME_OUT_TYPE         ;//[nb_inst_rename]
106  public    : SC_OUT(Toperation_t      )   ** out_RENAME_OUT_OPERATION    ;//[nb_inst_rename]
107  public    : SC_OUT(Tcontrol_t        )   ** out_RENAME_OUT_NO_EXECUTE   ;//[nb_inst_rename]
108  public    : SC_OUT(Tcontrol_t        )   ** out_RENAME_OUT_LAST_EVENT   ;//[nb_inst_rename]
109  public    : SC_OUT(Tcontrol_t        )   ** out_RENAME_OUT_IS_DELAY_SLOT;//[nb_inst_rename]
110#ifdef DEBUG
111  public    : SC_OUT(Taddress_t        )   ** out_RENAME_OUT_ADDRESS      ;//[nb_inst_rename]
112#endif
113  public    : SC_OUT(Taddress_t        )   ** out_RENAME_OUT_ADDRESS_NEXT ;//[nb_inst_rename]
114  public    : SC_OUT(Tcontrol_t        )   ** out_RENAME_OUT_HAS_IMMEDIAT ;//[nb_inst_rename]
115  public    : SC_OUT(Tgeneral_data_t   )   ** out_RENAME_OUT_IMMEDIAT     ;//[nb_inst_rename]
116  public    : SC_OUT(Tcontrol_t        )   ** out_RENAME_OUT_READ_RA      ;//[nb_inst_rename]
117  public    : SC_OUT(Tgeneral_address_t)   ** out_RENAME_OUT_NUM_REG_RA   ;//[nb_inst_rename]
118  public    : SC_OUT(Tcontrol_t        )   ** out_RENAME_OUT_READ_RB      ;//[nb_inst_rename]
119  public    : SC_OUT(Tgeneral_address_t)   ** out_RENAME_OUT_NUM_REG_RB   ;//[nb_inst_rename]
120  public    : SC_OUT(Tcontrol_t        )   ** out_RENAME_OUT_READ_RC      ;//[nb_inst_rename]
121  public    : SC_OUT(Tspecial_address_t)   ** out_RENAME_OUT_NUM_REG_RC   ;//[nb_inst_rename]
122  public    : SC_OUT(Tcontrol_t        )   ** out_RENAME_OUT_WRITE_RD     ;//[nb_inst_rename]
123  public    : SC_OUT(Tgeneral_address_t)   ** out_RENAME_OUT_NUM_REG_RD   ;//[nb_inst_rename]
124  public    : SC_OUT(Tcontrol_t        )   ** out_RENAME_OUT_WRITE_RE     ;//[nb_inst_rename]
125  public    : SC_OUT(Tspecial_address_t)   ** out_RENAME_OUT_NUM_REG_RE   ;//[nb_inst_rename]
126  public    : SC_OUT(Texception_t      )   ** out_RENAME_OUT_EXCEPTION_USE;//[nb_inst_rename]
127  public    : SC_OUT(Texception_t      )   ** out_RENAME_OUT_EXCEPTION    ;//[nb_inst_rename]
128
129    // ~~~~~[ Interface "retire_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
130//   public    : SC_IN (Tcontrol_t        )  ***  in_RETIRE_EVENT_FLUSH      ;//[nb_front_end][nb_context]
131  public    : SC_IN (Tcontrol_t        )  ***  in_RETIRE_EVENT_STOP       ;//[nb_front_end][nb_context]
132
133    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
134  private   : generic::priority::Priority   * _priority;
135
136    // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
137
138    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
139#endif
140
141    // -----[ Methods ]---------------------------------------------------
142
143#ifdef SYSTEMC
144    SC_HAS_PROCESS (Rename_select);
145#endif
146  public  :          Rename_select             
147  (
148#ifdef SYSTEMC
149   sc_module_name                                name,
150#else                                         
151   std::string                                   name,
152#endif                                         
153#ifdef STATISTICS
154   morpheo::behavioural::Parameters_Statistics * param_statistics,
155#endif
156   Parameters                                  * param,
157   morpheo::behavioural::Tusage_t                usage
158   );
159  public  :          ~Rename_select             (void);
160                                               
161  private : void        allocation                (
162#ifdef STATISTICS
163                                                   morpheo::behavioural::Parameters_Statistics * param_statistics
164#else
165                                                   void
166#endif
167                                                   );
168  private : void        deallocation              (void);
169                                               
170#ifdef SYSTEMC                                 
171  public  : void        transition                (void);
172  public  : void        genMealy                  (void);
173#endif                                         
174
175#if VHDL                                       
176  public  : void        vhdl                      (void);
177  private : void        vhdl_declaration          (Vhdl * & vhdl);
178  private : void        vhdl_body                 (Vhdl * & vhdl);
179#endif                                         
180
181#ifdef STATISTICS
182  public  : void        statistics_declaration    (morpheo::behavioural::Parameters_Statistics * param_statistics);
183#endif
184#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
185  private : void        end_cycle                 (void);
186#endif
187  };
188
189}; // end namespace rename_select
190}; // end namespace rename_unit
191}; // end namespace ooo_engine
192}; // end namespace multi_ooo_engine
193}; // end namespace core
194
195}; // end namespace behavioural
196}; // end namespace morpheo             
197
198#endif
Note: See TracBrowser for help on using the repository browser.