source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_deallocation.cpp

Last change on this file 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: 8.2 KB
Line 
1#undef  FUNCTION
2#define FUNCTION "Reservation_station::"
3
4#ifdef SYSTEMC
5/*
6 * $Id: Reservation_station_deallocation.cpp 136 2009-10-20 18:52:15Z rosiere $
7 *
8 * [ Description ]
9 *
10 */
11
12#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Reservation_station.h"
13#include "Behavioural/include/Allocation.h"
14
15namespace morpheo                    {
16namespace behavioural {
17namespace core {
18namespace multi_execute_loop {
19namespace execute_loop {
20namespace multi_read_unit {
21namespace read_unit {
22namespace reservation_station {
23
24
25#undef  FUNCTION
26#define FUNCTION "Reservation_station::deallocation"
27  void Reservation_station::deallocation (void)
28  {
29    log_printf(FUNC,Reservation_station,FUNCTION,"Begin");
30
31    if (usage_is_set(_usage,USE_SYSTEMC))
32      {
33        delete     in_CLOCK ;
34        delete     in_NRESET;
35
36        DELETE0_SIGNAL( in_INSERT_VAL                  ,1);
37        DELETE0_SIGNAL(out_INSERT_ACK                  ,1);
38        DELETE0_SIGNAL( in_INSERT_CONTEXT_ID           ,_param->_size_context_id      );
39        DELETE0_SIGNAL( in_INSERT_FRONT_END_ID         ,_param->_size_front_end_id    );
40        DELETE0_SIGNAL( in_INSERT_OOO_ENGINE_ID        ,_param->_size_ooo_engine_id   );
41        DELETE0_SIGNAL( in_INSERT_ROB_ID               ,_param->_size_rob_ptr         );
42        DELETE0_SIGNAL( in_INSERT_OPERATION            ,_param->_size_operation       );
43        DELETE0_SIGNAL( in_INSERT_TYPE                 ,_param->_size_type            );
44        DELETE0_SIGNAL( in_INSERT_CANCEL               ,1                             );
45        DELETE0_SIGNAL( in_INSERT_STORE_QUEUE_PTR_WRITE,_param->_size_store_queue_ptr );
46        DELETE0_SIGNAL( in_INSERT_STORE_QUEUE_PTR_READ ,_param->_size_store_queue_ptr );
47        DELETE0_SIGNAL( in_INSERT_STORE_QUEUE_EMPTY    ,1);
48        DELETE0_SIGNAL( in_INSERT_LOAD_QUEUE_PTR_WRITE ,_param->_size_load_queue_ptr  );
49        DELETE0_SIGNAL( in_INSERT_HAS_IMMEDIAT         ,1                             );
50        DELETE0_SIGNAL( in_INSERT_IMMEDIAT             ,_param->_size_general_data    );
51//      DELETE0_SIGNAL( in_INSERT_READ_RA              ,1                             );
52        DELETE0_SIGNAL( in_INSERT_NUM_REG_RA           ,_param->_size_general_register);
53        DELETE0_SIGNAL( in_INSERT_DATA_RA_VAL          ,1                             );
54        DELETE0_SIGNAL( in_INSERT_DATA_RA              ,_param->_size_general_data    );
55//      DELETE0_SIGNAL( in_INSERT_READ_RB              ,1                             );
56        DELETE0_SIGNAL( in_INSERT_NUM_REG_RB           ,_param->_size_general_register);
57        DELETE0_SIGNAL( in_INSERT_DATA_RB_VAL          ,1                             );
58        DELETE0_SIGNAL( in_INSERT_DATA_RB              ,_param->_size_general_data    );
59//      DELETE0_SIGNAL( in_INSERT_READ_RC              ,1                             );
60        DELETE0_SIGNAL( in_INSERT_NUM_REG_RC           ,_param->_size_special_register);
61        DELETE0_SIGNAL( in_INSERT_DATA_RC_VAL          ,1                             );
62        DELETE0_SIGNAL( in_INSERT_DATA_RC              ,_param->_size_special_data    );
63        DELETE0_SIGNAL( in_INSERT_WRITE_RD             ,1                             );
64        DELETE0_SIGNAL( in_INSERT_NUM_REG_RD           ,_param->_size_general_register);
65        DELETE0_SIGNAL( in_INSERT_WRITE_RE             ,1                             );
66        DELETE0_SIGNAL( in_INSERT_NUM_REG_RE           ,_param->_size_special_register);
67       
68        DELETE1_SIGNAL(out_RETIRE_VAL                  ,_param->_nb_inst_retire,1);
69        DELETE1_SIGNAL( in_RETIRE_ACK                  ,_param->_nb_inst_retire,1);
70        DELETE1_SIGNAL(out_RETIRE_CONTEXT_ID           ,_param->_nb_inst_retire,_param->_size_context_id);
71        DELETE1_SIGNAL(out_RETIRE_FRONT_END_ID         ,_param->_nb_inst_retire,_param->_size_front_end_id);
72        DELETE1_SIGNAL(out_RETIRE_OOO_ENGINE_ID        ,_param->_nb_inst_retire,_param->_size_ooo_engine_id);
73        DELETE1_SIGNAL(out_RETIRE_ROB_ID               ,_param->_nb_inst_retire,_param->_size_rob_ptr);
74        DELETE1_SIGNAL(out_RETIRE_OPERATION            ,_param->_nb_inst_retire,_param->_size_operation);
75        DELETE1_SIGNAL(out_RETIRE_TYPE                 ,_param->_nb_inst_retire,_param->_size_type);
76        DELETE1_SIGNAL(out_RETIRE_CANCEL               ,_param->_nb_inst_retire,1);
77        DELETE1_SIGNAL(out_RETIRE_STORE_QUEUE_PTR_WRITE,_param->_nb_inst_retire,_param->_size_store_queue_ptr);
78        DELETE1_SIGNAL(out_RETIRE_STORE_QUEUE_PTR_READ ,_param->_nb_inst_retire,_param->_size_store_queue_ptr);
79        DELETE1_SIGNAL(out_RETIRE_STORE_QUEUE_EMPTY    ,_param->_nb_inst_retire,1);
80        DELETE1_SIGNAL(out_RETIRE_LOAD_QUEUE_PTR_WRITE ,_param->_nb_inst_retire,_param->_size_load_queue_ptr );
81        DELETE1_SIGNAL(out_RETIRE_HAS_IMMEDIAT         ,_param->_nb_inst_retire,1);
82        DELETE1_SIGNAL(out_RETIRE_IMMEDIAT             ,_param->_nb_inst_retire,_param->_size_general_data);
83        DELETE1_SIGNAL(out_RETIRE_DATA_RA              ,_param->_nb_inst_retire,_param->_size_general_data);
84        DELETE1_SIGNAL(out_RETIRE_DATA_RB              ,_param->_nb_inst_retire,_param->_size_general_data);
85        DELETE1_SIGNAL(out_RETIRE_DATA_RC              ,_param->_nb_inst_retire,_param->_size_special_data);
86        DELETE1_SIGNAL(out_RETIRE_WRITE_RD             ,_param->_nb_inst_retire,1);
87        DELETE1_SIGNAL(out_RETIRE_NUM_REG_RD           ,_param->_nb_inst_retire,_param->_size_general_register);
88        DELETE1_SIGNAL(out_RETIRE_WRITE_RE             ,_param->_nb_inst_retire,1);
89        DELETE1_SIGNAL(out_RETIRE_NUM_REG_RE           ,_param->_nb_inst_retire,_param->_size_special_register);
90       
91        DELETE1_SIGNAL( in_GPR_WRITE_VAL          ,_param->_nb_gpr_write,1);
92        DELETE1_SIGNAL( in_GPR_WRITE_OOO_ENGINE_ID,_param->_nb_gpr_write,_param->_size_ooo_engine_id);
93        DELETE1_SIGNAL( in_GPR_WRITE_NUM_REG      ,_param->_nb_gpr_write,_param->_size_general_register);
94        DELETE1_SIGNAL( in_GPR_WRITE_DATA         ,_param->_nb_gpr_write,_param->_size_general_data);
95       
96        DELETE1_SIGNAL( in_SPR_WRITE_VAL          ,_param->_nb_spr_write,1);
97        DELETE1_SIGNAL( in_SPR_WRITE_OOO_ENGINE_ID,_param->_nb_spr_write,_param->_size_ooo_engine_id);
98        DELETE1_SIGNAL( in_SPR_WRITE_NUM_REG      ,_param->_nb_spr_write,_param->_size_general_register);
99        DELETE1_SIGNAL( in_SPR_WRITE_DATA         ,_param->_nb_spr_write,_param->_size_general_data);
100       
101        DELETE1_SIGNAL( in_BYPASS_WRITE_OOO_ENGINE_ID,_param->_nb_bypass_write,_param->_size_ooo_engine_id);
102        DELETE1_SIGNAL( in_BYPASS_WRITE_GPR_VAL      ,_param->_nb_bypass_write,1);
103        DELETE1_SIGNAL( in_BYPASS_WRITE_GPR_NUM_REG  ,_param->_nb_bypass_write,_param->_size_general_register);
104        DELETE1_SIGNAL( in_BYPASS_WRITE_GPR_DATA     ,_param->_nb_bypass_write,_param->_size_general_data);
105        DELETE1_SIGNAL( in_BYPASS_WRITE_SPR_VAL      ,_param->_nb_bypass_write,1);
106        DELETE1_SIGNAL( in_BYPASS_WRITE_SPR_NUM_REG  ,_param->_nb_bypass_write,_param->_size_special_register);
107        DELETE1_SIGNAL( in_BYPASS_WRITE_SPR_DATA     ,_param->_nb_bypass_write,_param->_size_special_data);
108       
109        DELETE1_SIGNAL( in_BYPASS_MEMORY_VAL          ,_param->_nb_bypass_memory,1);
110        DELETE1_SIGNAL( in_BYPASS_MEMORY_OOO_ENGINE_ID,_param->_nb_bypass_memory,_param->_size_ooo_engine_id);
111        DELETE1_SIGNAL( in_BYPASS_MEMORY_NUM_REG      ,_param->_nb_bypass_memory,_param->_size_general_register);
112        DELETE1_SIGNAL( in_BYPASS_MEMORY_DATA         ,_param->_nb_bypass_memory,_param->_size_general_data);
113       
114        DELETE1(internal_RETIRE_VAL ,_param->_nb_inst_retire);
115        DELETE1(internal_RETIRE_SLOT,_param->_nb_inst_retire);
116      }
117
118    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
119
120    delete    _component;
121#ifdef  SYSTEMC_VHDL_COMPATIBILITY
122    delete [] _queue_valid  ;
123#else
124    delete    _queue_control;
125#endif
126    delete [] _queue        ;
127
128    log_printf(FUNC,Reservation_station,FUNCTION,"End");
129  };
130
131}; // end namespace reservation_station
132}; // end namespace read_unit
133}; // end namespace multi_read_unit
134}; // end namespace execute_loop
135}; // end namespace multi_execute_loop
136}; // end namespace core
137}; // end namespace behavioural
138}; // end namespace morpheo             
139#endif
Note: See TracBrowser for help on using the repository browser.