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 @ 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: 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.