source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/include/Core_Glue.h @ 145

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

1) Add new algo in ifetch queue
2) Add Cancel bit
3) new config

  • Property svn:keywords set to Id
File size: 20.7 KB
Line 
1#ifndef morpheo_behavioural_core_core_glue_Core_Glue_h
2#define morpheo_behavioural_core_core_glue_Core_Glue_h
3
4/*
5 * $Id: Core_Glue.h 136 2009-10-20 18:52:15Z rosiere $
6 *
7 * [ Description ]
8 *
9 */
10
11#ifdef SYSTEMC
12#include "systemc.h"
13#endif
14
15
16#include "Behavioural/Core/Core_Glue/include/Parameters.h"
17#include "Behavioural/Core/Core_Glue/include/Types.h"
18#ifdef STATISTICS
19#include "Behavioural/include/Stat.h"
20#endif
21#include "Behavioural/include/Component.h"
22#ifdef VHDL
23#include "Behavioural/include/Vhdl.h"
24#endif
25#include "Behavioural/include/Usage.h"
26
27#include "Common/include/ToString.h"
28#include "Common/include/Debug.h"
29
30#include <iostream>
31
32#include "Behavioural/Generic/Priority/include/Priority.h"
33
34
35namespace morpheo {
36namespace behavioural {
37
38namespace core {
39namespace core_glue {
40
41
42  class Core_Glue
43#if SYSTEMC
44    : public sc_module
45#endif
46  {
47    // -----[ fields ]----------------------------------------------------
48    // Parameters
49  protected : const std::string  _name;
50  protected : const Parameters * _param;
51  private   : const Tusage_t     _usage;
52
53#ifdef STATISTICS
54  public    : Stat                           * _stat;
55#endif
56
57  public    : Component                      * _component;
58  private   : Interfaces                     * _interfaces;
59
60#ifdef SYSTEMC
61    // ~~~~~[ Interface ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
62    // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
63  public    : SC_CLOCK                      *  in_CLOCK        ;
64  public    : SC_IN (Tcontrol_t)            *  in_NRESET       ;
65
66    // ~~~~~[ Interface : "rename" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~         
67  public    : SC_OUT(Tcontext_t        )  *** out_RENAME_FRONT_END_ID                       ;//[nb_front_end][nb_inst_decod]
68
69    // ~~~~~[ Interface : "branch_complete" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~         
70  public    : SC_OUT(Tcontrol_t        )  *** out_BRANCH_COMPLETE_FRONT_END_VAL             ;//[nb_front_end][nb_inst_branch_complete]
71  public    : SC_IN (Tcontrol_t        )  ***  in_BRANCH_COMPLETE_FRONT_END_ACK             ;//[nb_front_end][nb_inst_branch_complete]
72  public    : SC_OUT(Tcontext_t        )  *** out_BRANCH_COMPLETE_FRONT_END_CONTEXT_ID      ;//[nb_front_end][nb_inst_branch_complete]
73  public    : SC_OUT(Tdepth_t          )  *** out_BRANCH_COMPLETE_FRONT_END_DEPTH           ;//[nb_front_end][nb_inst_branch_complete]
74  public    : SC_OUT(Taddress_t        )  *** out_BRANCH_COMPLETE_FRONT_END_ADDRESS         ;//[nb_front_end][nb_inst_branch_complete]
75  public    : SC_OUT(Tcontrol_t        )  *** out_BRANCH_COMPLETE_FRONT_END_NO_SEQUENCE     ;//[nb_front_end][nb_inst_branch_complete]
76  public    : SC_IN (Tcontrol_t        )  ***  in_BRANCH_COMPLETE_FRONT_END_MISS_PREDICTION ;//[nb_front_end][nb_inst_branch_complete]
77
78  public    : SC_IN (Tcontrol_t        )  ***  in_BRANCH_COMPLETE_OOO_ENGINE_VAL            ;//[nb_ooo_engine][nb_inst_branch_complete]
79  public    : SC_OUT(Tcontrol_t        )  *** out_BRANCH_COMPLETE_OOO_ENGINE_ACK            ;//[nb_ooo_engine][nb_inst_branch_complete]
80  public    : SC_IN (Tcontext_t        )  ***  in_BRANCH_COMPLETE_OOO_ENGINE_FRONT_END_ID   ;//[nb_ooo_engine][nb_inst_branch_complete]
81  public    : SC_IN (Tcontext_t        )  ***  in_BRANCH_COMPLETE_OOO_ENGINE_CONTEXT_ID     ;//[nb_ooo_engine][nb_inst_branch_complete]
82  public    : SC_IN (Tdepth_t          )  ***  in_BRANCH_COMPLETE_OOO_ENGINE_DEPTH          ;//[nb_ooo_engine][nb_inst_branch_complete]
83  public    : SC_IN (Taddress_t        )  ***  in_BRANCH_COMPLETE_OOO_ENGINE_ADDRESS        ;//[nb_ooo_engine][nb_inst_branch_complete]
84  public    : SC_IN (Tcontrol_t        )  ***  in_BRANCH_COMPLETE_OOO_ENGINE_NO_SEQUENCE    ;//[nb_ooo_engine][nb_inst_branch_complete]
85  public    : SC_OUT(Tcontrol_t        )  *** out_BRANCH_COMPLETE_OOO_ENGINE_MISS_PREDICTION;//[nb_ooo_engine][nb_inst_branch_complete]
86                                                                                   
87    // ~~~~~[ Interface : "commit_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
88  public    : SC_OUT(Tcontrol_t        )   ** out_COMMIT_EVENT_FRONT_END_VAL                ;//[nb_front_end]
89  public    : SC_IN (Tcontrol_t        )   **  in_COMMIT_EVENT_FRONT_END_ACK                ;//[nb_front_end]
90  public    : SC_OUT(Tcontext_t        )   ** out_COMMIT_EVENT_FRONT_END_CONTEXT_ID         ;//[nb_front_end]
91  public    : SC_OUT(Tdepth_t          )   ** out_COMMIT_EVENT_FRONT_END_DEPTH              ;//[nb_front_end]
92  public    : SC_OUT(Tevent_type_t     )   ** out_COMMIT_EVENT_FRONT_END_TYPE               ;//[nb_front_end]
93  public    : SC_OUT(Tcontrol_t        )   ** out_COMMIT_EVENT_FRONT_END_IS_DELAY_SLOT      ;//[nb_front_end]
94  public    : SC_OUT(Taddress_t        )   ** out_COMMIT_EVENT_FRONT_END_ADDRESS            ;//[nb_front_end]
95  public    : SC_OUT(Tcontrol_t        )   ** out_COMMIT_EVENT_FRONT_END_ADDRESS_EPCR_VAL   ;//[nb_front_end]
96  public    : SC_OUT(Taddress_t        )   ** out_COMMIT_EVENT_FRONT_END_ADDRESS_EPCR       ;//[nb_front_end]
97  public    : SC_OUT(Tcontrol_t        )   ** out_COMMIT_EVENT_FRONT_END_ADDRESS_EEAR_VAL   ;//[nb_front_end]
98  public    : SC_OUT(Tgeneral_data_t   )   ** out_COMMIT_EVENT_FRONT_END_ADDRESS_EEAR       ;//[nb_front_end]
99
100  public    : SC_IN (Tcontrol_t        )   **  in_COMMIT_EVENT_OOO_ENGINE_VAL               ;//[nb_ooo_engine]
101  public    : SC_OUT(Tcontrol_t        )   ** out_COMMIT_EVENT_OOO_ENGINE_ACK               ;//[nb_ooo_engine]
102  public    : SC_IN (Tcontext_t        )   **  in_COMMIT_EVENT_OOO_ENGINE_FRONT_END_ID      ;//[nb_ooo_engine]
103  public    : SC_IN (Tcontext_t        )   **  in_COMMIT_EVENT_OOO_ENGINE_CONTEXT_ID        ;//[nb_ooo_engine]
104  public    : SC_IN (Tdepth_t          )   **  in_COMMIT_EVENT_OOO_ENGINE_DEPTH             ;//[nb_ooo_engine]
105  public    : SC_IN (Tevent_type_t     )   **  in_COMMIT_EVENT_OOO_ENGINE_TYPE              ;//[nb_ooo_engine]
106  public    : SC_IN (Tcontrol_t        )   **  in_COMMIT_EVENT_OOO_ENGINE_IS_DELAY_SLOT     ;//[nb_ooo_engine]
107  public    : SC_IN (Taddress_t        )   **  in_COMMIT_EVENT_OOO_ENGINE_ADDRESS           ;//[nb_ooo_engine]
108  public    : SC_IN (Tcontrol_t        )   **  in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EPCR_VAL  ;//[nb_ooo_engine]
109  public    : SC_IN (Taddress_t        )   **  in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EPCR      ;//[nb_ooo_engine]
110  public    : SC_IN (Tcontrol_t        )   **  in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EEAR_VAL  ;//[nb_ooo_engine]
111  public    : SC_IN (Tgeneral_data_t   )   **  in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EEAR      ;//[nb_ooo_engine]
112
113   
114    // ~~~~~[ Interface : "issue" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
115  public    : SC_IN (Tcontrol_t        )  ***  in_ISSUE_OOO_ENGINE_VAL                      ;//[nb_ooo_engine][nb_inst_issue]
116  public    : SC_OUT(Tcontrol_t        )  *** out_ISSUE_OOO_ENGINE_ACK                      ;//[nb_ooo_engine][nb_inst_issue]
117  public    : SC_IN (Tcontext_t        )  ***  in_ISSUE_OOO_ENGINE_FRONT_END_ID             ;//[nb_ooo_engine][nb_inst_issue]
118  public    : SC_IN (Tcontext_t        )  ***  in_ISSUE_OOO_ENGINE_CONTEXT_ID               ;//[nb_ooo_engine][nb_inst_issue]
119  public    : SC_IN (Tpacket_t         )  ***  in_ISSUE_OOO_ENGINE_PACKET_ID                ;//[nb_ooo_engine][nb_inst_issue]
120  public    : SC_IN (Ttype_t           )  ***  in_ISSUE_OOO_ENGINE_TYPE                     ;//[nb_ooo_engine][nb_inst_issue]
121  public    : SC_IN (Toperation_t      )  ***  in_ISSUE_OOO_ENGINE_OPERATION                ;//[nb_ooo_engine][nb_inst_issue]
122  public    : SC_IN (Tcontrol_t        )  ***  in_ISSUE_OOO_ENGINE_CANCEL                   ;//[nb_ooo_engine][nb_inst_issue]
123  public    : SC_IN (Tlsq_ptr_t        )  ***  in_ISSUE_OOO_ENGINE_STORE_QUEUE_PTR_WRITE    ;//[nb_ooo_engine][nb_inst_issue]
124  public    : SC_IN (Tlsq_ptr_t        )  ***  in_ISSUE_OOO_ENGINE_STORE_QUEUE_PTR_READ     ;//[nb_ooo_engine][nb_inst_issue]
125  public    : SC_IN (Tcontrol_t        )  ***  in_ISSUE_OOO_ENGINE_STORE_QUEUE_EMPTY        ;//[nb_ooo_engine][nb_inst_issue]
126  public    : SC_IN (Tlsq_ptr_t        )  ***  in_ISSUE_OOO_ENGINE_LOAD_QUEUE_PTR_WRITE     ;//[nb_ooo_engine][nb_inst_issue]
127  public    : SC_IN (Tcontrol_t        )  ***  in_ISSUE_OOO_ENGINE_HAS_IMMEDIAT             ;//[nb_ooo_engine][nb_inst_issue]
128  public    : SC_IN (Tgeneral_data_t   )  ***  in_ISSUE_OOO_ENGINE_IMMEDIAT                 ;//[nb_ooo_engine][nb_inst_issue]
129  public    : SC_IN (Tcontrol_t        )  ***  in_ISSUE_OOO_ENGINE_READ_RA                  ;//[nb_ooo_engine][nb_inst_issue]
130  public    : SC_IN (Tgeneral_address_t)  ***  in_ISSUE_OOO_ENGINE_NUM_REG_RA               ;//[nb_ooo_engine][nb_inst_issue]
131  public    : SC_IN (Tcontrol_t        )  ***  in_ISSUE_OOO_ENGINE_READ_RB                  ;//[nb_ooo_engine][nb_inst_issue]
132  public    : SC_IN (Tgeneral_address_t)  ***  in_ISSUE_OOO_ENGINE_NUM_REG_RB               ;//[nb_ooo_engine][nb_inst_issue]
133  public    : SC_IN (Tcontrol_t        )  ***  in_ISSUE_OOO_ENGINE_READ_RC                  ;//[nb_ooo_engine][nb_inst_issue]
134  public    : SC_IN (Tspecial_address_t)  ***  in_ISSUE_OOO_ENGINE_NUM_REG_RC               ;//[nb_ooo_engine][nb_inst_issue]
135  public    : SC_IN (Tcontrol_t        )  ***  in_ISSUE_OOO_ENGINE_WRITE_RD                 ;//[nb_ooo_engine][nb_inst_issue]
136  public    : SC_IN (Tgeneral_address_t)  ***  in_ISSUE_OOO_ENGINE_NUM_REG_RD               ;//[nb_ooo_engine][nb_inst_issue]
137  public    : SC_IN (Tcontrol_t        )  ***  in_ISSUE_OOO_ENGINE_WRITE_RE                 ;//[nb_ooo_engine][nb_inst_issue]
138  public    : SC_IN (Tspecial_address_t)  ***  in_ISSUE_OOO_ENGINE_NUM_REG_RE               ;//[nb_ooo_engine][nb_inst_issue]
139
140  public    : SC_OUT(Tcontrol_t        )  *** out_ISSUE_EXECUTE_LOOP_VAL                    ;//[nb_execute_loop][nb_read_unit]
141  public    : SC_IN (Tcontrol_t        )  ***  in_ISSUE_EXECUTE_LOOP_ACK                    ;//[nb_execute_loop][nb_read_unit]
142  public    : SC_OUT(Tcontext_t        )  *** out_ISSUE_EXECUTE_LOOP_CONTEXT_ID             ;//[nb_execute_loop][nb_read_unit]
143  public    : SC_OUT(Tcontext_t        )  *** out_ISSUE_EXECUTE_LOOP_FRONT_END_ID           ;//[nb_execute_loop][nb_read_unit]
144  public    : SC_OUT(Tcontext_t        )  *** out_ISSUE_EXECUTE_LOOP_OOO_ENGINE_ID          ;//[nb_execute_loop][nb_read_unit]
145  public    : SC_OUT(Tpacket_t         )  *** out_ISSUE_EXECUTE_LOOP_PACKET_ID              ;//[nb_execute_loop][nb_read_unit]
146  public    : SC_OUT(Toperation_t      )  *** out_ISSUE_EXECUTE_LOOP_OPERATION              ;//[nb_execute_loop][nb_read_unit]
147  public    : SC_OUT(Ttype_t           )  *** out_ISSUE_EXECUTE_LOOP_TYPE                   ;//[nb_execute_loop][nb_read_unit]
148  public    : SC_OUT(Tcontrol_t        )  *** out_ISSUE_EXECUTE_LOOP_CANCEL                 ;//[nb_execute_loop][nb_read_unit]
149  public    : SC_OUT(Tlsq_ptr_t        )  *** out_ISSUE_EXECUTE_LOOP_STORE_QUEUE_PTR_WRITE  ;//[nb_execute_loop][nb_read_unit]
150  public    : SC_OUT(Tlsq_ptr_t        )  *** out_ISSUE_EXECUTE_LOOP_STORE_QUEUE_PTR_READ   ;//[nb_execute_loop][nb_read_unit]
151  public    : SC_OUT(Tcontrol_t        )  *** out_ISSUE_EXECUTE_LOOP_STORE_QUEUE_EMPTY      ;//[nb_execute_loop][nb_read_unit]
152  public    : SC_OUT(Tlsq_ptr_t        )  *** out_ISSUE_EXECUTE_LOOP_LOAD_QUEUE_PTR_WRITE   ;//[nb_execute_loop][nb_read_unit]
153  public    : SC_OUT(Tcontrol_t        )  *** out_ISSUE_EXECUTE_LOOP_HAS_IMMEDIAT           ;//[nb_execute_loop][nb_read_unit]
154  public    : SC_OUT(Tgeneral_data_t   )  *** out_ISSUE_EXECUTE_LOOP_IMMEDIAT               ;//[nb_execute_loop][nb_read_unit]
155  public    : SC_OUT(Tcontrol_t        )  *** out_ISSUE_EXECUTE_LOOP_READ_RA                ;//[nb_execute_loop][nb_read_unit]
156  public    : SC_OUT(Tgeneral_address_t)  *** out_ISSUE_EXECUTE_LOOP_NUM_REG_RA             ;//[nb_execute_loop][nb_read_unit]
157  public    : SC_OUT(Tcontrol_t        )  *** out_ISSUE_EXECUTE_LOOP_READ_RB                ;//[nb_execute_loop][nb_read_unit]
158  public    : SC_OUT(Tgeneral_address_t)  *** out_ISSUE_EXECUTE_LOOP_NUM_REG_RB             ;//[nb_execute_loop][nb_read_unit]
159  public    : SC_OUT(Tcontrol_t        )  *** out_ISSUE_EXECUTE_LOOP_READ_RC                ;//[nb_execute_loop][nb_read_unit]
160  public    : SC_OUT(Tspecial_address_t)  *** out_ISSUE_EXECUTE_LOOP_NUM_REG_RC             ;//[nb_execute_loop][nb_read_unit]
161  public    : SC_OUT(Tcontrol_t        )  *** out_ISSUE_EXECUTE_LOOP_WRITE_RD               ;//[nb_execute_loop][nb_read_unit]
162  public    : SC_OUT(Tgeneral_address_t)  *** out_ISSUE_EXECUTE_LOOP_NUM_REG_RD             ;//[nb_execute_loop][nb_read_unit]
163  public    : SC_OUT(Tcontrol_t        )  *** out_ISSUE_EXECUTE_LOOP_WRITE_RE               ;//[nb_execute_loop][nb_read_unit]
164  public    : SC_OUT(Tspecial_address_t)  *** out_ISSUE_EXECUTE_LOOP_NUM_REG_RE             ;//[nb_execute_loop][nb_read_unit]
165
166
167    // ~~~~~[ Interface "execute_loop" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
168  public    : SC_OUT(Tcontrol_t        ) **** out_EXECUTE_OOO_ENGINE_VAL                    ;//[nb_ooo_engine][ooo_engine_nb_execute_loop][nb_inst_execute]
169  public    : SC_IN (Tcontrol_t        ) ****  in_EXECUTE_OOO_ENGINE_ACK                    ;//[nb_ooo_engine][ooo_engine_nb_execute_loop][nb_inst_execute]
170  public    : SC_OUT(Tcontext_t        ) **** out_EXECUTE_OOO_ENGINE_FRONT_END_ID           ;//[nb_ooo_engine][ooo_engine_nb_execute_loop][nb_inst_execute]
171  public    : SC_OUT(Tcontext_t        ) **** out_EXECUTE_OOO_ENGINE_CONTEXT_ID             ;//[nb_ooo_engine][ooo_engine_nb_execute_loop][nb_inst_execute]
172  public    : SC_OUT(Tpacket_t         ) **** out_EXECUTE_OOO_ENGINE_PACKET_ID              ;//[nb_ooo_engine][ooo_engine_nb_execute_loop][nb_inst_execute]
173//public    : SC_OUT(Ttype_t           ) **** out_EXECUTE_OOO_ENGINE_TYPE                   ;//[nb_ooo_engine][ooo_engine_nb_execute_loop][nb_inst_execute]
174//public    : SC_OUT(Toperation_t      ) **** out_EXECUTE_OOO_ENGINE_OPERATION              ;//[nb_ooo_engine][ooo_engine_nb_execute_loop][nb_inst_execute]
175  public    : SC_OUT(Tcontrol_t        ) **** out_EXECUTE_OOO_ENGINE_CANCEL                 ;//[nb_ooo_engine][ooo_engine_nb_execute_loop][nb_inst_execute]
176  public    : SC_OUT(Tspecial_data_t   ) **** out_EXECUTE_OOO_ENGINE_FLAGS                  ;//[nb_ooo_engine][ooo_engine_nb_execute_loop][nb_inst_execute]
177  public    : SC_OUT(Texception_t      ) **** out_EXECUTE_OOO_ENGINE_EXCEPTION              ;//[nb_ooo_engine][ooo_engine_nb_execute_loop][nb_inst_execute]
178  public    : SC_OUT(Tcontrol_t        ) **** out_EXECUTE_OOO_ENGINE_NO_SEQUENCE            ;//[nb_ooo_engine][ooo_engine_nb_execute_loop][nb_inst_execute]
179  public    : SC_OUT(Taddress_t        ) **** out_EXECUTE_OOO_ENGINE_ADDRESS                ;//[nb_ooo_engine][ooo_engine_nb_execute_loop][nb_inst_execute]
180  public    : SC_OUT(Tgeneral_data_t   ) **** out_EXECUTE_OOO_ENGINE_DATA                   ;//[nb_ooo_engine][ooo_engine_nb_execute_loop][nb_inst_execute]
181
182  public    : SC_IN (Tcontrol_t        )  ***  in_EXECUTE_EXECUTE_LOOP_VAL                  ;//[nb_execute_loop][nb_write_unit]
183  public    : SC_OUT(Tcontrol_t        )  *** out_EXECUTE_EXECUTE_LOOP_ACK                  ;//[nb_execute_loop][nb_write_unit]
184  public    : SC_IN (Tcontext_t        )  ***  in_EXECUTE_EXECUTE_LOOP_CONTEXT_ID           ;//[nb_execute_loop][nb_write_unit]
185  public    : SC_IN (Tcontext_t        )  ***  in_EXECUTE_EXECUTE_LOOP_FRONT_END_ID         ;//[nb_execute_loop][nb_write_unit]
186  public    : SC_IN (Tcontext_t        )  ***  in_EXECUTE_EXECUTE_LOOP_OOO_ENGINE_ID        ;//[nb_execute_loop][nb_write_unit]
187  public    : SC_IN (Tpacket_t         )  ***  in_EXECUTE_EXECUTE_LOOP_PACKET_ID            ;//[nb_execute_loop][nb_write_unit]
188//public    : SC_IN (Toperation_t      )  ***  in_EXECUTE_EXECUTE_LOOP_OPERATION            ;//[nb_execute_loop][nb_write_unit]
189//public    : SC_IN (Ttype_t           )  ***  in_EXECUTE_EXECUTE_LOOP_TYPE                 ;//[nb_execute_loop][nb_write_unit]
190  public    : SC_IN (Tcontrol_t        )  ***  in_EXECUTE_EXECUTE_LOOP_CANCEL               ;//[nb_execute_loop][nb_write_unit]
191  public    : SC_IN (Tspecial_data_t   )  ***  in_EXECUTE_EXECUTE_LOOP_FLAGS                ;//[nb_execute_loop][nb_write_unit]
192  public    : SC_IN (Texception_t      )  ***  in_EXECUTE_EXECUTE_LOOP_EXCEPTION            ;//[nb_execute_loop][nb_write_unit]
193  public    : SC_IN (Tcontrol_t        )  ***  in_EXECUTE_EXECUTE_LOOP_NO_SEQUENCE          ;//[nb_execute_loop][nb_write_unit]
194  public    : SC_IN (Taddress_t        )  ***  in_EXECUTE_EXECUTE_LOOP_ADDRESS              ;//[nb_execute_loop][nb_write_unit]
195  public    : SC_IN (Tgeneral_data_t   )  ***  in_EXECUTE_EXECUTE_LOOP_DATA                 ;//[nb_execute_loop][nb_write_unit]
196
197//     // ~~~~~[ Interface "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
198//   public    : SC_IN (Tcontrol_t        )  ***  in_INSERT_OOO_ENGINE_VAL                     ;//[nb_ooo_engine][nb_inst_insert]
199//   public    : SC_OUT(Tcontrol_t        )  *** out_INSERT_OOO_ENGINE_ACK                     ;//[nb_ooo_engine][nb_inst_insert]
200//   public    : SC_IN (Tcontrol_t        )  ***  in_INSERT_OOO_ENGINE_RD_USE                  ;//[nb_ooo_engine][nb_inst_insert]
201//   public    : SC_IN (Tgeneral_address_t)  ***  in_INSERT_OOO_ENGINE_RD_NUM_REG              ;//[nb_ooo_engine][nb_inst_insert]
202//   public    : SC_IN (Tcontrol_t        )  ***  in_INSERT_OOO_ENGINE_RE_USE                  ;//[nb_ooo_engine][nb_inst_insert]
203//   public    : SC_IN (Tspecial_address_t)  ***  in_INSERT_OOO_ENGINE_RE_NUM_REG              ;//[nb_ooo_engine][nb_inst_insert]
204
205//   public    : SC_OUT(Tcontrol_t        ) **** out_INSERT_EXECUTE_LOOP_VAL                   ;//[nb_execute_loop][execute_loop_nb_ooo_engine][execute_loop_nb_inst_insert]
206//   public    : SC_IN (Tcontrol_t        ) ****  in_INSERT_EXECUTE_LOOP_ACK                   ;//[nb_execute_loop][execute_loop_nb_ooo_engine][execute_loop_nb_inst_insert]
207//   public    : SC_OUT(Tcontrol_t        ) **** out_INSERT_EXECUTE_LOOP_RD_USE                ;//[nb_execute_loop][execute_loop_nb_ooo_engine][execute_loop_nb_inst_insert]
208//   public    : SC_OUT(Tgeneral_address_t) **** out_INSERT_EXECUTE_LOOP_RD_NUM_REG            ;//[nb_execute_loop][execute_loop_nb_ooo_engine][execute_loop_nb_inst_insert]
209//   public    : SC_OUT(Tcontrol_t        ) **** out_INSERT_EXECUTE_LOOP_RE_USE                ;//[nb_execute_loop][execute_loop_nb_ooo_engine][execute_loop_nb_inst_insert]
210//   public    : SC_OUT(Tspecial_address_t) **** out_INSERT_EXECUTE_LOOP_RE_NUM_REG            ;//[nb_execute_loop][execute_loop_nb_ooo_engine][execute_loop_nb_inst_insert]
211
212
213    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
214//private   : generic::priority::Priority  ** _priority_ooo_engine;                         //[nb_execute_loop]
215  private   : generic::priority::Priority   * _priority_ooo_engine;
216  private   : generic::priority::Priority  ** _priority_read_unit ;                         //[nb_execute_loop]
217
218    // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
219
220    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
221#endif
222
223    // -----[ Methods ]---------------------------------------------------
224
225#ifdef SYSTEMC
226    SC_HAS_PROCESS (Core_Glue);
227#endif
228  public  :          Core_Glue             
229  (
230#ifdef SYSTEMC
231   sc_module_name                                name,
232#else                                         
233   std::string                                   name,
234#endif                                         
235#ifdef STATISTICS
236   morpheo::behavioural::Parameters_Statistics * param_statistics,
237#endif
238   Parameters                                  * param,
239   morpheo::behavioural::Tusage_t                usage
240   );
241  public  :          ~Core_Glue             (void);
242                                               
243  private : void        allocation                (
244#ifdef STATISTICS
245                                                   morpheo::behavioural::Parameters_Statistics * param_statistics
246#else
247                                                   void
248#endif
249                                                   );
250  private : void        deallocation              (void);
251                                               
252#ifdef SYSTEMC                                 
253  public  : void        constant                  (void);
254  public  : void        transition                (void);
255//public  : void        genMoore                  (void);
256  public  : void        genMealy_branch_complete  (void);
257  public  : void        genMealy_commit_event     (void);
258  public  : void        genMealy_issue            (void);
259  public  : void        genMealy_execute          (void);
260//public  : void        genMealy_insert           (void);
261#endif                                         
262
263#if VHDL                                       
264  public  : void        vhdl                      (void);
265  private : void        vhdl_declaration          (Vhdl * & vhdl);
266  private : void        vhdl_body                 (Vhdl * & vhdl);
267#endif                                         
268
269#ifdef STATISTICS
270  public  : void        statistics_allocation     (morpheo::behavioural::Parameters_Statistics * param_statistics);
271  public  : void        statistics_deallocation   (void);
272#endif
273#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
274  private : void        end_cycle                 (void);
275#endif
276  };
277
278}; // end namespace core_glue
279}; // end namespace core
280
281}; // end namespace behavioural
282}; // end namespace morpheo             
283
284#endif
Note: See TracBrowser for help on using the repository browser.