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

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

1) Bug fix (Operation, Instruction)
2) Modif Return Address Stack
3) Add Soft Test
4) Add Soc Test

  • Property svn:keywords set to Id
File size: 10.3 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 100 2009-01-08 13:06:27Z 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      ROB_BRANCH_WAIT_END            , //
31      ROB_BRANCH_COMPLETE            , //
32      ROB_STORE_WAIT_HEAD_OK         , //
33//    ROB_STORE_WAIT_HEAD_KO         , //
34      ROB_STORE_HEAD_OK              , //
35      ROB_STORE_HEAD_KO              , //
36      ROB_OTHER_WAIT_END             , //
37      ROB_MISS_WAIT_END              , //
38      ROB_END_OK_SPECULATIVE         , //
39      ROB_END_OK                     , //
40      ROB_END_KO_SPECULATIVE         , //
41      ROB_END_KO                     , //
42      ROB_END_BRANCH_MISS_SPECULATIVE, //
43      ROB_END_BRANCH_MISS            , //
44      ROB_END_MISS                   , //
45      ROB_END_EXCEPTION_WAIT_HEAD    , //
46      ROB_END_EXCEPTION               //
47    } rob_state_t;
48
49  class entry_t
50  {
51  public  : rob_state_t        state                   ;
52  public  : uint32_t           ptr                     ;
53  public  : Tcontext_t         front_end_id            ;
54  public  : Tcontext_t         context_id              ;
55  public  : uint32_t           rename_unit_id          ;
56  public  : Tdepth_t           depth                   ;
57  public  : Ttype_t            type                    ;
58  public  : Toperation_t       operation               ;
59  public  : Tcontrol_t         is_delay_slot           ;
60  public  : Tgeneral_data_t    address                 ;
61  public  : Tcontrol_t         use_store_queue         ;
62  public  : Tcontrol_t         use_load_queue          ;
63  public  : Tlsq_ptr_t         store_queue_ptr_write   ;
64  public  : Tlsq_ptr_t         load_queue_ptr_write    ;
65  public  : Tcontrol_t         read_ra                 ;
66  public  : Tgeneral_address_t num_reg_ra_log          ;
67  public  : Tgeneral_address_t num_reg_ra_phy          ;
68  public  : Tcontrol_t         read_rb                 ;
69  public  : Tgeneral_address_t num_reg_rb_log          ;
70  public  : Tgeneral_address_t num_reg_rb_phy          ;
71  public  : Tcontrol_t         read_rc                 ;
72  public  : Tspecial_address_t num_reg_rc_log          ;
73  public  : Tspecial_address_t num_reg_rc_phy          ;
74  public  : Tcontrol_t         write_rd                ;
75  public  : Tgeneral_address_t num_reg_rd_log          ;
76  public  : Tgeneral_address_t num_reg_rd_phy_old      ;
77  public  : Tgeneral_address_t num_reg_rd_phy_new      ;
78  public  : Tcontrol_t         write_re                ;
79  public  : Tspecial_address_t num_reg_re_log          ;
80  public  : Tspecial_address_t num_reg_re_phy_old      ;
81  public  : Tspecial_address_t num_reg_re_phy_new      ;
82
83  public  : Texception_t       exception               ;
84  public  : Texception_t       exception_use           ;
85
86  public  : Tspecial_data_t    flags                   ;
87  public  : Tcontrol_t         no_sequence             ;
88  public  : Tgeneral_data_t    data_commit             ; // branch's destination
89
90//   public  : entry_t (uint32_t           ptr                     ,
91//                   Tcontext_t         front_end_id            ,
92//                   Tcontext_t         context_id              ,
93//                   Tcontext_t         rename_unit_id          ,
94//                   Tdepth_t           depth                   ,
95//                   Ttype_t            type                    ,
96//                   Toperation_t       operation               ,
97//                   Tcontrol_t         is_delay_slot           ,
98//                   Tgeneral_data_t    address                 ,
99//                   Texception_t       exception               ,
100//                   Texception_t       exception_use           ,
101//                   Tlsq_ptr_t         store_queue_ptr_write   ,
102//                   Tlsq_ptr_t         load_queue_ptr_write    ,
103//                   Tcontrol_t         read_ra                 ,
104//                   Tgeneral_address_t num_reg_ra_log          ,
105//                   Tgeneral_address_t num_reg_ra_phy          ,
106//                   Tcontrol_t         read_rb                 ,
107//                   Tgeneral_address_t num_reg_rb_log          ,
108//                   Tgeneral_address_t num_reg_rb_phy          ,
109//                   Tcontrol_t         read_rc                 ,
110//                   Tspecial_address_t num_reg_rc_log          ,
111//                   Tspecial_address_t num_reg_rc_phy          ,
112//                   Tcontrol_t         write_rd                ,
113//                   Tgeneral_address_t num_reg_rd_log          ,
114//                   Tgeneral_address_t num_reg_rd_phy_old      ,
115//                   Tgeneral_address_t num_reg_rd_phy_new      ,
116//                   Tcontrol_t         write_re                ,
117//                   Tspecial_address_t num_reg_re_log          ,
118//                   Tspecial_address_t num_reg_re_phy_old      ,
119//                   Tspecial_address_t num_reg_re_phy_new      )
120//     {
121//       this->ptr                     = ptr                   ;
122//       this->front_end_id            = front_end_id          ;
123//       this->context_id              = context_id            ;
124//       this->rename_unit_id          = rename_unit_id        ;
125//       this->depth                   = depth                 ;
126//       this->type                    = type                  ;
127//       this->operation               = operation             ;
128//       this->is_delay_slot           = is_delay_slot         ;
129//       this->address                 = address               ;
130//       this->exception               = exception             ;
131//       this->exception_use           = exception_use         ;
132//       this->store_queue_ptr_write   = store_queue_ptr_write ;
133//       this->load_queue_ptr_write    = load_queue_ptr_write  ;
134//       this->read_ra                 = read_ra               ;
135//       this->num_reg_ra_log          = num_reg_ra_log        ;
136//       this->num_reg_ra_phy          = num_reg_ra_phy        ;
137//       this->read_rb                 = read_rb               ;
138//       this->num_reg_rb_log          = num_reg_rb_log        ;
139//       this->num_reg_rb_phy          = num_reg_rb_phy        ;
140//       this->read_rc                 = read_rc               ;
141//       this->num_reg_rc_log          = num_reg_rc_log        ;
142//       this->num_reg_rc_phy          = num_reg_rc_phy        ;
143//       this->write_rd                = write_rd              ;
144//       this->num_reg_rd_log          = num_reg_rd_log        ;
145//       this->num_reg_rd_phy_old      = num_reg_rd_phy_old    ;
146//       this->num_reg_rd_phy_new      = num_reg_rd_phy_new    ;
147//       this->write_re                = write_re              ;
148//       this->num_reg_re_log          = num_reg_re_log        ;
149//       this->num_reg_re_phy_old      = num_reg_re_phy_old    ;
150//       this->num_reg_re_phy_new      = num_reg_re_phy_new    ;
151//     }
152  };
153
154}; // end namespace commit_unit
155}; // end namespace ooo_engine
156}; // end namespace multi_ooo_engine
157}; // end namespace core
158}; // end namespace behavioural
159
160 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)
161  {
162    switch (x)
163      {
164      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_EMPTY                      : return "ROB_EMPTY"                       ; break;
165      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_BRANCH_WAIT_END            : return "ROB_BRANCH_WAIT_END"             ; break;
166      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_BRANCH_COMPLETE            : return "ROB_BRANCH_COMPLETE"             ; break;
167      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_STORE_WAIT_HEAD_OK         : return "ROB_STORE_WAIT_HEAD_OK"          ; break;
168//    case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_STORE_WAIT_HEAD_KO         : return "ROB_STORE_WAIT_HEAD_KO"          ; break;
169      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_STORE_HEAD_OK              : return "ROB_STORE_HEAD_OK"               ; break;
170      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_STORE_HEAD_KO              : return "ROB_STORE_HEAD_KO"               ; break;
171      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_OTHER_WAIT_END             : return "ROB_OTHER_WAIT_END"              ; break;
172      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_MISS_WAIT_END              : return "ROB_MISS_WAIT_END"               ; break;
173      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_END_OK_SPECULATIVE         : return "ROB_END_OK_SPECULATIVE"          ; break;
174      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_END_OK                     : return "ROB_END_OK"                      ; break;
175      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_END_KO_SPECULATIVE         : return "ROB_END_KO_SPECULATIVE"          ; break;
176      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_END_KO                     : return "ROB_END_KO"                      ; break;
177      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_END_BRANCH_MISS_SPECULATIVE: return "ROB_END_BRANCH_MISS_SPECULATIVE" ; break;
178      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_END_BRANCH_MISS            : return "ROB_END_BRANCH_MISS"             ; break;
179      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_END_MISS                   : return "ROB_END_MISS"                    ; break;
180      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_END_EXCEPTION_WAIT_HEAD    : return "ROB_END_EXCEPTION_WAIT_HEAD"     ; break;
181      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_END_EXCEPTION              : return "ROB_END_EXCEPTION"               ; break;
182
183      default    : return ""      ; break;
184      }
185  };
186
187}; // end namespace morpheo             
188
189#endif
Note: See TracBrowser for help on using the repository browser.