source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/src/Front_end_deallocation.cpp @ 123

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

1) Fix performance
2) add auto generation to SPECINT2000
3) add reset in genMoore and genMealy

  • Property svn:keywords set to Id
File size: 9.5 KB
Line 
1/*
2 * $Id: Front_end_deallocation.cpp 123 2009-06-08 20:43:30Z rosiere $
3 *
4 * [ Description ]
5 *
6 */
7
8#include "Behavioural/Core/Multi_Front_end/Front_end/include/Front_end.h"
9#include "Behavioural/include/Allocation.h"
10
11namespace morpheo                    {
12namespace behavioural {
13namespace core {
14namespace multi_front_end {
15namespace front_end {
16
17
18#undef  FUNCTION
19#define FUNCTION "Front_end::deallocation"
20  void Front_end::deallocation (void)
21  {
22    log_begin(Front_end,FUNCTION);
23
24    if (usage_is_set(_usage,USE_SYSTEMC))
25      {
26        delete    in_CLOCK ;
27        delete    in_NRESET;
28
29        DELETE1_SIGNAL(out_ICACHE_REQ_VAL                   ,_param->_nb_context,1);
30        DELETE1_SIGNAL( in_ICACHE_REQ_ACK                   ,_param->_nb_context,1);
31//      DELETE1_SIGNAL(out_ICACHE_REQ_THREAD_ID             ,_param->_nb_context,_param->_size_context_id           );
32        DELETE1_SIGNAL(out_ICACHE_REQ_PACKET_ID             ,_param->_nb_context,_param->_size_ifetch_queue_ptr     );
33        DELETE1_SIGNAL(out_ICACHE_REQ_ADDRESS               ,_param->_nb_context,_param->_size_instruction_address  );
34        DELETE1_SIGNAL(out_ICACHE_REQ_TYPE                  ,_param->_nb_context,_param->_size_icache_type          );
35
36        DELETE1_SIGNAL( in_ICACHE_RSP_VAL                   ,_param->_nb_context,1);
37        DELETE1_SIGNAL(out_ICACHE_RSP_ACK                   ,_param->_nb_context,1);
38//      DELETE1_SIGNAL( in_ICACHE_RSP_THREAD_ID             ,_param->_nb_context,_param->_size_context_id           );
39        DELETE1_SIGNAL( in_ICACHE_RSP_PACKET_ID             ,_param->_nb_context,_param->_size_ifetch_queue_ptr     );
40        DELETE1_SIGNAL( in_ICACHE_RSP_ERROR                 ,_param->_nb_context,_param->_size_icache_error         );
41        DELETE2_SIGNAL( in_ICACHE_RSP_INSTRUCTION           ,_param->_nb_context,_param->_nb_inst_fetch[it1],_param->_size_instruction );
42
43        DELETE1_SIGNAL(out_DECOD_VAL                        ,_param->_sum_inst_decod, 1);
44        DELETE1_SIGNAL( in_DECOD_ACK                        ,_param->_sum_inst_decod, 1);
45        DELETE1_SIGNAL(out_DECOD_CONTEXT_ID                 ,_param->_sum_inst_decod,_param->_size_context_id            );
46        DELETE1_SIGNAL(out_DECOD_DEPTH                      ,_param->_sum_inst_decod,_param->_size_depth                 );
47        DELETE1_SIGNAL(out_DECOD_TYPE                       ,_param->_sum_inst_decod,_param->_size_type                  );
48        DELETE1_SIGNAL(out_DECOD_OPERATION                  ,_param->_sum_inst_decod,_param->_size_operation             );
49        DELETE1_SIGNAL(out_DECOD_NO_EXECUTE                 ,_param->_sum_inst_decod,1                                   );
50//      DELETE1_SIGNAL(out_DECOD_HAVE_EVENT                 ,_param->_sum_inst_decod,1                                   );
51        DELETE1_SIGNAL(out_DECOD_LAST_EVENT                 ,_param->_sum_inst_decod,1                                   );
52        DELETE1_SIGNAL(out_DECOD_IS_DELAY_SLOT              ,_param->_sum_inst_decod,1                                   );
53#ifdef DEBUG
54        DELETE1_SIGNAL(out_DECOD_ADDRESS                    ,_param->_sum_inst_decod,_param->_size_instruction_address   );
55#endif
56        DELETE1_SIGNAL(out_DECOD_ADDRESS_NEXT               ,_param->_sum_inst_decod,_param->_size_instruction_address   );
57        DELETE1_SIGNAL(out_DECOD_HAS_IMMEDIAT               ,_param->_sum_inst_decod,1                                   );
58        DELETE1_SIGNAL(out_DECOD_IMMEDIAT                   ,_param->_sum_inst_decod,_param->_size_general_data          );
59        DELETE1_SIGNAL(out_DECOD_READ_RA                    ,_param->_sum_inst_decod,1                                   );
60        DELETE1_SIGNAL(out_DECOD_NUM_REG_RA                 ,_param->_sum_inst_decod,_param->_size_general_register_logic);
61        DELETE1_SIGNAL(out_DECOD_READ_RB                    ,_param->_sum_inst_decod,1                                   );
62        DELETE1_SIGNAL(out_DECOD_NUM_REG_RB                 ,_param->_sum_inst_decod,_param->_size_general_register_logic);
63        DELETE1_SIGNAL(out_DECOD_READ_RC                    ,_param->_sum_inst_decod,1                                   );
64        DELETE1_SIGNAL(out_DECOD_NUM_REG_RC                 ,_param->_sum_inst_decod,_param->_size_special_register_logic);
65        DELETE1_SIGNAL(out_DECOD_WRITE_RD                   ,_param->_sum_inst_decod,1                                   );
66        DELETE1_SIGNAL(out_DECOD_NUM_REG_RD                 ,_param->_sum_inst_decod,_param->_size_general_register_logic);
67        DELETE1_SIGNAL(out_DECOD_WRITE_RE                   ,_param->_sum_inst_decod,1                                   );
68        DELETE1_SIGNAL(out_DECOD_NUM_REG_RE                 ,_param->_sum_inst_decod,_param->_size_special_register_logic);
69        DELETE1_SIGNAL(out_DECOD_EXCEPTION_USE              ,_param->_sum_inst_decod,_param->_size_exception_use         );
70        DELETE1_SIGNAL(out_DECOD_EXCEPTION                  ,_param->_sum_inst_decod,_param->_size_exception             );
71
72        DELETE1_SIGNAL( in_BRANCH_COMPLETE_VAL              ,_param->_nb_inst_branch_complete, 1);
73        DELETE1_SIGNAL(out_BRANCH_COMPLETE_ACK              ,_param->_nb_inst_branch_complete, 1);
74        DELETE1_SIGNAL( in_BRANCH_COMPLETE_CONTEXT_ID       ,_param->_nb_inst_branch_complete,_param->_size_context_id);
75        DELETE1_SIGNAL( in_BRANCH_COMPLETE_DEPTH            ,_param->_nb_inst_branch_complete,_param->_size_depth     );
76        DELETE1_SIGNAL( in_BRANCH_COMPLETE_ADDRESS          ,_param->_nb_inst_branch_complete,_param->_size_instruction_address   );
77        DELETE1_SIGNAL( in_BRANCH_COMPLETE_NO_SEQUENCE      ,_param->_nb_inst_branch_complete,1                       );
78        DELETE1_SIGNAL(out_BRANCH_COMPLETE_MISS_PREDICTION  ,_param->_nb_inst_branch_complete,1                       );
79
80        DELETE0_SIGNAL( in_COMMIT_EVENT_VAL                 , 1);
81        DELETE0_SIGNAL(out_COMMIT_EVENT_ACK                 , 1);
82        DELETE0_SIGNAL( in_COMMIT_EVENT_CONTEXT_ID          ,_param->_size_context_id);
83        DELETE0_SIGNAL( in_COMMIT_EVENT_DEPTH               ,_param->_size_depth     );
84        DELETE0_SIGNAL( in_COMMIT_EVENT_TYPE                ,_param->_size_event_type);
85        DELETE0_SIGNAL( in_COMMIT_EVENT_IS_DELAY_SLOT       ,1                       );
86        DELETE0_SIGNAL( in_COMMIT_EVENT_ADDRESS             ,_param->_size_instruction_address   );
87        DELETE0_SIGNAL( in_COMMIT_EVENT_ADDRESS_EPCR_VAL    ,1                       );
88        DELETE0_SIGNAL( in_COMMIT_EVENT_ADDRESS_EPCR        ,_param->_size_instruction_address   );
89        DELETE0_SIGNAL( in_COMMIT_EVENT_ADDRESS_EEAR_VAL    ,1                       );
90        DELETE0_SIGNAL( in_COMMIT_EVENT_ADDRESS_EEAR        ,_param->_size_instruction_address   );
91
92        DELETE1_SIGNAL(out_EVENT_VAL                        ,_param->_nb_context, 1);
93        DELETE1_SIGNAL( in_EVENT_ACK                        ,_param->_nb_context, 1);
94        DELETE1_SIGNAL(out_EVENT_ADDRESS                    ,_param->_nb_context,_param->_size_instruction_address);
95        DELETE1_SIGNAL(out_EVENT_ADDRESS_NEXT               ,_param->_nb_context,_param->_size_instruction_address); 
96        DELETE1_SIGNAL(out_EVENT_ADDRESS_NEXT_VAL           ,_param->_nb_context,1                    );
97        DELETE1_SIGNAL(out_EVENT_IS_DS_TAKE                 ,_param->_nb_context,1                    );
98
99        DELETE1_SIGNAL(out_SPR_EVENT_VAL                    ,_param->_nb_context, 1);
100        DELETE1_SIGNAL( in_SPR_EVENT_ACK                    ,_param->_nb_context, 1);
101        DELETE1_SIGNAL(out_SPR_EVENT_EPCR                   ,_param->_nb_context,_param->_size_spr);
102        DELETE1_SIGNAL(out_SPR_EVENT_EEAR_WEN               ,_param->_nb_context,1                );
103        DELETE1_SIGNAL(out_SPR_EVENT_EEAR                   ,_param->_nb_context,_param->_size_spr);
104        DELETE1_SIGNAL(out_SPR_EVENT_SR_DSX                 ,_param->_nb_context,1                );
105        DELETE1_SIGNAL(out_SPR_EVENT_SR_TO_ESR              ,_param->_nb_context,1                );
106
107        DELETE1_SIGNAL( in_NB_INST_COMMIT_ALL               ,_param->_nb_context,_param->_size_nb_inst_commit);
108        DELETE1_SIGNAL( in_NB_INST_COMMIT_MEM               ,_param->_nb_context,_param->_size_nb_inst_commit);
109        DELETE1_SIGNAL(out_NB_INST_DECOD_ALL                ,_param->_nb_context,_param->_size_nb_inst_decod);
110
111        DELETE1_SIGNAL(out_DEPTH_MIN                        ,_param->_nb_context,_param->_size_depth  );
112        DELETE1_SIGNAL(out_DEPTH_MAX                        ,_param->_nb_context,_param->_size_depth+1);
113        DELETE1_SIGNAL(out_DEPTH_FULL                       ,_param->_nb_context,_param->_size_depth+1);
114
115        DELETE1_SIGNAL( in_SPR_SR_IEE                       ,_param->_nb_context,1);
116        DELETE1_SIGNAL( in_SPR_SR_EPH                       ,_param->_nb_context,1);
117
118        DELETE1_SIGNAL( in_INTERRUPT_ENABLE                 ,_param->_nb_context,1);
119      }
120
121    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
122    delete    _component_glue           ;
123    delete    _component_context_state  ;
124    for (uint32_t i=0; i<_param->_nb_decod_unit; i++)
125    delete    _component_decod_unit  [i];
126    delete [] _component_decod_unit     ;
127    delete    _component_prediction_unit;
128    for (uint32_t i=0; i<_param->_nb_context; i++)
129    delete    _component_ifetch_unit [i];
130    delete [] _component_ifetch_unit    ;
131
132    delete _component;
133
134    log_end(Front_end,FUNCTION);
135  };
136
137}; // end namespace front_end
138}; // end namespace multi_front_end
139}; // end namespace core
140
141}; // end namespace behavioural
142}; // end namespace morpheo             
Note: See TracBrowser for help on using the repository browser.