source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/include/Types.h @ 131

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

1) Add test and configuration
2) Fix Bug
3) Add log file in load store unit
4) Fix Bug in environment

  • Property svn:keywords set to Id
File size: 9.7 KB
Line 
1#ifndef morpheo_behavioural_core_multi_ooo_engine_ooo_engine_commit_unit_Types_h
2#define morpheo_behavioural_core_multi_ooo_engine_ooo_engine_commit_unit_Types_h
3
4/*
5 * $Id: Types.h 124 2009-06-17 12:11:25Z rosiere $
6 *
7 * [ Description ]
8 *
9 */
10
11#include "Behavioural/include/Types.h"
12
13namespace morpheo {
14namespace behavioural {
15namespace core {
16namespace multi_ooo_engine {
17namespace ooo_engine {
18namespace commit_unit {
19
20  typedef enum
21    {
22      RETIRE_IN_ORDER       ,
23      RETIRE_OOO_RENAME_UNIT,
24      RETIRE_OOO_CONTEXT
25    } retire_ooo_t;
26
27  typedef enum
28    {
29      ROB_EMPTY                      , //
30
31      ROB_BRANCH_WAIT_END            , //
32      ROB_BRANCH_COMPLETE            , //
33
34      ROB_STORE_WAIT_END_OK          , //
35      ROB_STORE_WAIT_END_KO          , //
36      ROB_STORE_OK                   , //
37      ROB_STORE_KO                   , //
38      ROB_STORE_OK_WAIT_END          , //
39      ROB_STORE_KO_WAIT_END          , //
40      ROB_STORE_EVENT                , //
41
42      ROB_OTHER_WAIT_END             , //
43
44      ROB_EVENT_WAIT_END             , //
45
46      ROB_END_OK_SPECULATIVE         , //
47      ROB_END_OK                     , //
48      ROB_END_KO_SPECULATIVE         , //
49      ROB_END_KO                     , //
50      ROB_END_BRANCH_MISS_SPECULATIVE, //
51      ROB_END_BRANCH_MISS            , //
52      ROB_END_LOAD_MISS_SPECULATIVE  , //
53      ROB_END_LOAD_MISS_UPDATE       , //
54      ROB_END_LOAD_MISS              , //
55      ROB_END_MISS                   , //
56      ROB_END_EXCEPTION_WAIT_HEAD    , //
57      ROB_END_EXCEPTION_UPDATE       , //
58      ROB_END_EXCEPTION              , //
59      ROB_END
60    } rob_state_t;
61
62  typedef enum
63    {
64      COMMIT_EVENT_STATE_NO_EVENT     ,
65      COMMIT_EVENT_STATE_NOT_YET_EVENT,
66      COMMIT_EVENT_STATE_EVENT        ,
67//    COMMIT_EVENT_STATE_WAIT_DECOD   ,
68      COMMIT_EVENT_STATE_WAIT_END     ,
69//    COMMIT_EVENT_STATE_END         
70    } Tcommit_event_state_t;
71
72#define commit_event_state_to_event_state(x) ((x==COMMIT_EVENT_STATE_EVENT)?EVENT_STATE_EVENT:((x==COMMIT_EVENT_STATE_WAIT_END)?EVENT_STATE_WAITEND:EVENT_STATE_NO_EVENT))
73
74// #define commit_event_state_to_event_state(x) ((x==COMMIT_EVENT_STATE_EVENT)?EVENT_STATE_EVENT:((x==COMMIT_EVENT_STATE_WAIT_END)?EVENT_STATE_WAITEND:((x==COMMIT_EVENT_STATE_END)?EVENT_STATE_END:EVENT_STATE_NO_EVENT)))
75// #define commit_event_state_to_event_state(x) ((x==COMMIT_EVENT_STATE_EVENT)?EVENT_STATE_EVENT:((x==COMMIT_EVENT_STATE_WAIT_DECOD)?EVENT_STATE_WAITEND:((x==COMMIT_EVENT_STATE_WAIT_END)?EVENT_STATE_WAITEND:((x==COMMIT_EVENT_STATE_END)?EVENT_STATE_END:EVENT_STATE_NO_EVENT))))
76
77
78  class entry_t
79  {
80  public  : rob_state_t        state                   ;
81  public  : rob_state_t        state_old               ;
82  public  : uint32_t           ptr                     ;
83  public  : Tcontext_t         front_end_id            ;
84  public  : Tcontext_t         context_id              ;
85  public  : uint32_t           rename_unit_id          ;
86  public  : Tdepth_t           depth                   ;
87  public  : Ttype_t            type                    ;
88  public  : Toperation_t       operation               ;
89  public  : Tcontrol_t         is_delay_slot           ;
90//public  : Tgeneral_data_t    address                 ;
91  public  : Tcontrol_t         use_store_queue         ;
92  public  : Tcontrol_t         use_load_queue          ;
93  public  : Tlsq_ptr_t         store_queue_ptr_write   ;
94  public  : Tlsq_ptr_t         load_queue_ptr_write    ;
95#ifdef DEBUG
96  public  : Tcontrol_t         read_ra                 ;
97  public  : Tgeneral_address_t num_reg_ra_log          ;
98  public  : Tgeneral_address_t num_reg_ra_phy          ;
99  public  : Tcontrol_t         read_rb                 ;
100  public  : Tgeneral_address_t num_reg_rb_log          ;
101  public  : Tgeneral_address_t num_reg_rb_phy          ;
102  public  : Tcontrol_t         read_rc                 ;
103  public  : Tspecial_address_t num_reg_rc_log          ;
104  public  : Tspecial_address_t num_reg_rc_phy          ;
105#endif
106  public  : Tcontrol_t         write_rd                ;
107  public  : Tgeneral_address_t num_reg_rd_log          ;
108  public  : Tgeneral_address_t num_reg_rd_phy_old      ;
109  public  : Tgeneral_address_t num_reg_rd_phy_new      ;
110  public  : Tcontrol_t         write_re                ;
111  public  : Tspecial_address_t num_reg_re_log          ;
112  public  : Tspecial_address_t num_reg_re_phy_old      ;
113  public  : Tspecial_address_t num_reg_re_phy_new      ;
114
115  public  : Texception_t       exception               ;
116  public  : Texception_t       exception_use           ;
117
118  public  : Tspecial_data_t    flags                   ;
119  public  : Tcontrol_t         no_sequence             ;
120//public  : Tcontrol_t         speculative             ;
121//public  : Tgeneral_data_t    data_commit             ; // branch's destination
122#ifdef DEBUG
123  public  : Tgeneral_data_t    load_data               ;
124  public  : Taddress_t         address                 ;
125#endif
126  public  : Taddress_t         address_next            ;
127#ifdef DEBUG
128  public  : double             cycle_rob_in            ;
129  public  : double             cycle_commit            ;
130#endif   
131
132  };
133
134}; // end namespace commit_unit
135}; // end namespace ooo_engine
136}; // end namespace multi_ooo_engine
137}; // end namespace core
138}; // end namespace behavioural
139
140 template<> inline std::string toString<morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::rob_state_t>(const morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::rob_state_t& x)
141  {
142    switch (x)
143      {
144      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_EMPTY                      : return "ROB_EMPTY"                       ; break;
145      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_BRANCH_WAIT_END            : return "ROB_BRANCH_WAIT_END"             ; break;
146      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_BRANCH_COMPLETE            : return "ROB_BRANCH_COMPLETE"             ; break;
147      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_STORE_WAIT_END_OK          : return "ROB_STORE_WAIT_END_OK"           ; break;
148      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_STORE_WAIT_END_KO          : return "ROB_STORE_WAIT_END_KO"           ; break;
149      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_STORE_OK                   : return "ROB_STORE_OK"                    ; break;
150      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_STORE_KO                   : return "ROB_STORE_KO"                    ; break;
151      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_STORE_OK_WAIT_END          : return "ROB_STORE_OK_WAIT_END"           ; break;
152      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_STORE_KO_WAIT_END          : return "ROB_STORE_KO_WAIT_END"           ; break;
153      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_STORE_EVENT                : return "ROB_STORE_EVENT"                 ; break;
154      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_OTHER_WAIT_END             : return "ROB_OTHER_WAIT_END"              ; break;
155      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_EVENT_WAIT_END             : return "ROB_EVENT_WAIT_END"              ; break;
156      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_END_OK_SPECULATIVE         : return "ROB_END_OK_SPECULATIVE"          ; break;
157      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_END_OK                     : return "ROB_END_OK"                      ; break;
158      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_END_KO_SPECULATIVE         : return "ROB_END_KO_SPECULATIVE"          ; break;
159      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_END_KO                     : return "ROB_END_KO"                      ; break;
160      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_END_BRANCH_MISS_SPECULATIVE: return "ROB_END_BRANCH_MISS_SPECULATIVE" ; break;
161      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_END_BRANCH_MISS            : return "ROB_END_BRANCH_MISS"             ; break;
162      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_END_LOAD_MISS_SPECULATIVE  : return "ROB_END_LOAD_MISS_SPECULATIVE"   ; break;
163      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_END_LOAD_MISS_UPDATE       : return "ROB_END_LOAD_MISS_UPDATE"        ; break;
164      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_END_LOAD_MISS              : return "ROB_END_LOAD_MISS"               ; break;
165      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_END_MISS                   : return "ROB_END_MISS"                    ; break;
166      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_END_EXCEPTION_WAIT_HEAD    : return "ROB_END_EXCEPTION_WAIT_HEAD"     ; break;
167      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_END_EXCEPTION_UPDATE       : return "ROB_END_EXCEPTION_UPDATE"        ; break;
168      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_END_EXCEPTION              : return "ROB_END_EXCEPTION"               ; break;
169      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_END                        : return "ROB_END"                         ; break;
170
171      default    : return ""      ; break;
172      }
173  };
174
175}; // end namespace morpheo             
176
177#endif
Note: See TracBrowser for help on using the repository browser.