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 @ 112

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

1) Stat_list : fix retire old and new register bug
2) Stat_list : remove read_counter and valid flag, because validation of destination is in retire step (not in commit step)
3) Model : add class Model (cf Morpheo.sim)
4) Allocation : alloc_interface_begin and alloc_interface_end to delete temporary array.
5) Script : add distexe.sh
6) Add Comparator, Multiplier, Divider. But this component are not implemented
7) Software : add Dhrystone

  • Property svn:keywords set to Id
File size: 7.7 KB
Line 
1#undef  FUNCTION
2#define FUNCTION "Reservation_station::"
3
4#ifdef SYSTEMC
5/*
6 * $Id: Reservation_station_deallocation.cpp 112 2009-03-18 22:36:26Z 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_STORE_QUEUE_PTR_WRITE,_param->_size_store_queue_ptr );
45        DELETE0_SIGNAL( in_INSERT_LOAD_QUEUE_PTR_WRITE ,_param->_size_load_queue_ptr  );
46        DELETE0_SIGNAL( in_INSERT_HAS_IMMEDIAT         ,1                             );
47        DELETE0_SIGNAL( in_INSERT_IMMEDIAT             ,_param->_size_general_data    );
48//      DELETE0_SIGNAL( in_INSERT_READ_RA              ,1                             );
49        DELETE0_SIGNAL( in_INSERT_NUM_REG_RA           ,_param->_size_general_register);
50        DELETE0_SIGNAL( in_INSERT_DATA_RA_VAL          ,1                             );
51        DELETE0_SIGNAL( in_INSERT_DATA_RA              ,_param->_size_general_data    );
52//      DELETE0_SIGNAL( in_INSERT_READ_RB              ,1                             );
53        DELETE0_SIGNAL( in_INSERT_NUM_REG_RB           ,_param->_size_general_register);
54        DELETE0_SIGNAL( in_INSERT_DATA_RB_VAL          ,1                             );
55        DELETE0_SIGNAL( in_INSERT_DATA_RB              ,_param->_size_general_data    );
56//      DELETE0_SIGNAL( in_INSERT_READ_RC              ,1                             );
57        DELETE0_SIGNAL( in_INSERT_NUM_REG_RC           ,_param->_size_special_register);
58        DELETE0_SIGNAL( in_INSERT_DATA_RC_VAL          ,1                             );
59        DELETE0_SIGNAL( in_INSERT_DATA_RC              ,_param->_size_special_data    );
60        DELETE0_SIGNAL( in_INSERT_WRITE_RD             ,1                             );
61        DELETE0_SIGNAL( in_INSERT_NUM_REG_RD           ,_param->_size_general_register);
62        DELETE0_SIGNAL( in_INSERT_WRITE_RE             ,1                             );
63        DELETE0_SIGNAL( in_INSERT_NUM_REG_RE           ,_param->_size_special_register);
64       
65        DELETE1_SIGNAL(out_RETIRE_VAL                  ,_param->_nb_inst_retire,1);
66        DELETE1_SIGNAL( in_RETIRE_ACK                  ,_param->_nb_inst_retire,1);
67        DELETE1_SIGNAL(out_RETIRE_CONTEXT_ID           ,_param->_nb_inst_retire,_param->_size_context_id);
68        DELETE1_SIGNAL(out_RETIRE_FRONT_END_ID         ,_param->_nb_inst_retire,_param->_size_front_end_id);
69        DELETE1_SIGNAL(out_RETIRE_OOO_ENGINE_ID        ,_param->_nb_inst_retire,_param->_size_ooo_engine_id);
70        DELETE1_SIGNAL(out_RETIRE_ROB_ID               ,_param->_nb_inst_retire,_param->_size_rob_ptr);
71        DELETE1_SIGNAL(out_RETIRE_OPERATION            ,_param->_nb_inst_retire,_param->_size_operation);
72        DELETE1_SIGNAL(out_RETIRE_TYPE                 ,_param->_nb_inst_retire,_param->_size_type);
73        DELETE1_SIGNAL(out_RETIRE_STORE_QUEUE_PTR_WRITE,_param->_nb_inst_retire,_param->_size_store_queue_ptr);
74        DELETE1_SIGNAL(out_RETIRE_LOAD_QUEUE_PTR_WRITE ,_param->_nb_inst_retire,_param->_size_load_queue_ptr );
75        DELETE1_SIGNAL(out_RETIRE_HAS_IMMEDIAT         ,_param->_nb_inst_retire,1);
76        DELETE1_SIGNAL(out_RETIRE_IMMEDIAT             ,_param->_nb_inst_retire,_param->_size_general_data);
77        DELETE1_SIGNAL(out_RETIRE_DATA_RA              ,_param->_nb_inst_retire,_param->_size_general_data);
78        DELETE1_SIGNAL(out_RETIRE_DATA_RB              ,_param->_nb_inst_retire,_param->_size_general_data);
79        DELETE1_SIGNAL(out_RETIRE_DATA_RC              ,_param->_nb_inst_retire,_param->_size_special_data);
80        DELETE1_SIGNAL(out_RETIRE_WRITE_RD             ,_param->_nb_inst_retire,1);
81        DELETE1_SIGNAL(out_RETIRE_NUM_REG_RD           ,_param->_nb_inst_retire,_param->_size_general_register);
82        DELETE1_SIGNAL(out_RETIRE_WRITE_RE             ,_param->_nb_inst_retire,1);
83        DELETE1_SIGNAL(out_RETIRE_NUM_REG_RE           ,_param->_nb_inst_retire,_param->_size_special_register);
84       
85        DELETE1_SIGNAL( in_GPR_WRITE_VAL          ,_param->_nb_gpr_write,1);
86        DELETE1_SIGNAL( in_GPR_WRITE_OOO_ENGINE_ID,_param->_nb_gpr_write,_param->_size_ooo_engine_id);
87        DELETE1_SIGNAL( in_GPR_WRITE_NUM_REG      ,_param->_nb_gpr_write,_param->_size_general_register);
88        DELETE1_SIGNAL( in_GPR_WRITE_DATA         ,_param->_nb_gpr_write,_param->_size_general_data);
89       
90        DELETE1_SIGNAL( in_SPR_WRITE_VAL          ,_param->_nb_spr_write,1);
91        DELETE1_SIGNAL( in_SPR_WRITE_OOO_ENGINE_ID,_param->_nb_spr_write,_param->_size_ooo_engine_id);
92        DELETE1_SIGNAL( in_SPR_WRITE_NUM_REG      ,_param->_nb_spr_write,_param->_size_general_register);
93        DELETE1_SIGNAL( in_SPR_WRITE_DATA         ,_param->_nb_spr_write,_param->_size_general_data);
94       
95        DELETE1_SIGNAL( in_BYPASS_WRITE_OOO_ENGINE_ID,_param->_nb_bypass_write,_param->_size_ooo_engine_id);
96        DELETE1_SIGNAL( in_BYPASS_WRITE_GPR_VAL      ,_param->_nb_bypass_write,1);
97        DELETE1_SIGNAL( in_BYPASS_WRITE_GPR_NUM_REG  ,_param->_nb_bypass_write,_param->_size_general_register);
98        DELETE1_SIGNAL( in_BYPASS_WRITE_GPR_DATA     ,_param->_nb_bypass_write,_param->_size_general_data);
99        DELETE1_SIGNAL( in_BYPASS_WRITE_SPR_VAL      ,_param->_nb_bypass_write,1);
100        DELETE1_SIGNAL( in_BYPASS_WRITE_SPR_NUM_REG  ,_param->_nb_bypass_write,_param->_size_special_register);
101        DELETE1_SIGNAL( in_BYPASS_WRITE_SPR_DATA     ,_param->_nb_bypass_write,_param->_size_special_data);
102       
103        DELETE1_SIGNAL( in_BYPASS_MEMORY_VAL          ,_param->_nb_bypass_memory,1);
104        DELETE1_SIGNAL( in_BYPASS_MEMORY_OOO_ENGINE_ID,_param->_nb_bypass_memory,_param->_size_ooo_engine_id);
105        DELETE1_SIGNAL( in_BYPASS_MEMORY_NUM_REG      ,_param->_nb_bypass_memory,_param->_size_general_register);
106        DELETE1_SIGNAL( in_BYPASS_MEMORY_DATA         ,_param->_nb_bypass_memory,_param->_size_general_data);
107       
108        DELETE1(internal_RETIRE_VAL ,_param->_nb_inst_retire);
109        DELETE1(internal_RETIRE_SLOT,_param->_nb_inst_retire);
110      }
111
112    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
113
114    delete    _component;
115#ifdef  SYSTEMC_VHDL_COMPATIBILITY
116    delete [] _queue_valid  ;
117#else
118    delete    _queue_control;
119#endif
120    delete [] _queue        ;
121
122    log_printf(FUNC,Reservation_station,FUNCTION,"End");
123  };
124
125}; // end namespace reservation_station
126}; // end namespace read_unit
127}; // end namespace multi_read_unit
128}; // end namespace execute_loop
129}; // end namespace multi_execute_loop
130}; // end namespace core
131}; // end namespace behavioural
132}; // end namespace morpheo             
133#endif
Note: See TracBrowser for help on using the repository browser.