source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Parameters.cpp @ 138

Last change on this file since 138 was 138, checked in by rosiere, 14 years ago

1) add counters_t type for interface
2) fix in check load in load_store_unit
3) add parameters (but not yet implemented)
4) change environment and add script (distcc_env.sh ...)
5) add warning if an unser change rename flag with l.mtspr instruction
6) ...

  • Property svn:keywords set to Id
File size: 7.7 KB
Line 
1/*
2 * $Id: Parameters.cpp 138 2010-05-12 17:34:01Z rosiere $
3 *
4 * [ Description ]
5 *
6 */
7
8#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/include/Parameters.h"
9
10namespace morpheo {
11namespace behavioural {
12namespace core {
13namespace multi_execute_loop {
14namespace execute_loop {
15namespace multi_read_unit {
16namespace read_unit {
17
18
19#undef  FUNCTION
20#define FUNCTION "Read_unit::Parameters"
21  Parameters::Parameters (uint32_t nb_inst_read            ,
22                          uint32_t size_read_queue         ,
23                          uint32_t size_reservation_station,
24                          uint32_t nb_context              ,
25                          uint32_t nb_front_end            ,
26                          uint32_t nb_ooo_engine           ,
27                          uint32_t nb_packet               ,
28                          uint32_t size_general_data       ,
29                          uint32_t size_special_data       ,
30                          uint32_t nb_general_register     ,
31                          uint32_t nb_special_register     ,
32                          uint32_t nb_gpr_write            ,
33                          uint32_t nb_spr_write            ,
34                          uint32_t size_store_queue        ,
35                          uint32_t size_load_queue         ,
36                          uint32_t nb_inst_retire          ,
37                          uint32_t nb_bypass_write         ,
38                          uint32_t nb_bypass_memory        ,
39                          bool     is_toplevel)
40  {
41    log_printf(FUNC,Read_unit,FUNCTION,"Begin");
42
43    _nb_inst_read             = nb_inst_read            ;
44    _size_read_queue          = size_read_queue         ;
45    _size_reservation_station = size_reservation_station;
46    _nb_context               = nb_context              ;
47    _nb_front_end             = nb_front_end            ;
48    _nb_ooo_engine            = nb_ooo_engine           ;
49    _nb_packet                = nb_packet               ;
50    _nb_general_register      = nb_general_register     ;
51    _nb_special_register      = nb_special_register     ;
52    _nb_gpr_write             = nb_gpr_write            ;
53    _nb_spr_write             = nb_spr_write            ;
54    _nb_inst_retire           = nb_inst_retire          ;
55    _nb_bypass_write          = nb_bypass_write         ;
56    _nb_bypass_memory         = nb_bypass_memory        ;
57   
58    _nb_gpr_read              = 2;
59    _nb_spr_read              = 1;   
60
61    _param_read_queue = new morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::read_queue::Parameters
62      (_size_read_queue   
63      ,_nb_context         
64      ,_nb_front_end       
65      ,_nb_ooo_engine
66      ,_nb_packet         
67      , size_general_data 
68      , size_special_data 
69      ,_nb_general_register
70      ,_nb_special_register
71      ,_nb_gpr_write
72      ,_nb_spr_write
73      , size_store_queue
74      , size_load_queue
75      );
76
77    _param_reservation_station = new morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::reservation_station::Parameters
78        (_size_reservation_station
79        ,_nb_inst_retire     
80        ,_nb_context         
81        ,_nb_front_end       
82        ,_nb_ooo_engine
83        ,_nb_packet         
84        , size_general_data 
85        , size_special_data 
86        ,_nb_general_register
87        ,_nb_special_register
88        ,_nb_gpr_write
89        ,_nb_spr_write
90        ,_nb_bypass_write
91        ,_nb_bypass_memory
92        , size_store_queue
93        , size_load_queue
94        );
95
96    test();
97
98    if (is_toplevel)
99      {
100        _size_context_id          = log2(nb_context         );
101        _size_front_end_id        = log2(nb_front_end       );
102        _size_ooo_engine_id       = log2(nb_ooo_engine      );
103        _size_rob_ptr             = log2(nb_packet          );
104        _size_general_register    = log2(nb_general_register);
105        _size_special_register    = log2(nb_special_register);
106        _size_general_data        = size_general_data       ;
107        _size_special_data        = size_special_data       ;
108        _size_store_queue_ptr     = log2(size_store_queue   );
109        _size_load_queue_ptr      = log2(size_load_queue    );
110       
111        _have_port_context_id     = _size_context_id     > 0;
112        _have_port_front_end_id   = _size_front_end_id   > 0;
113        _have_port_ooo_engine_id  = _size_ooo_engine_id  > 0;
114        _have_port_rob_ptr        = _size_rob_ptr        > 0;
115        _have_port_load_queue_ptr = _size_load_queue_ptr > 0;
116
117        copy();
118      }
119
120    log_printf(FUNC,Read_unit,FUNCTION,"End");
121  };
122 
123// #undef  FUNCTION
124// #define FUNCTION "Read_unit::Parameters (copy)"
125//   Parameters::Parameters (Parameters & param):
126//     _size_read_queue          (param._size_read_queue         ),
127//     _size_reservation_station (param._size_reservation_station),
128//     _nb_context               (param._nb_context              ),
129//     _nb_front_end             (param._nb_front_end            ),
130//     _nb_ooo_engine            (param._nb_ooo_engine           ),
131//     _nb_packet                (param._nb_packet               ),
132//     _size_general_data        (param._size_general_data       ),
133//     _size_special_data        (param._size_special_data       ),
134//     _nb_general_register      (param._nb_general_register     ),
135//     _nb_special_register      (param._nb_special_register     ),
136//     _nb_gpr_write             (param._nb_gpr_write            ),
137//     _nb_spr_write             (param._nb_spr_write            ),
138//     _size_store_queue         (param._size_store_queue        ),
139//     _size_load_queue          (param._size_load_queue         ),
140//     _nb_inst_retire           (param._nb_inst_retire          ),
141//     _nb_bypass_write          (param._nb_bypass_write         ),
142//     _nb_bypass_memory         (param._nb_bypass_memory        ),
143
144//     _nb_gpr_read              (param._nb_gpr_read             ),
145//     _nb_spr_read              (param._nb_spr_read             ),   
146//     _size_context_id          (param._size_context_id         ),
147//     _size_front_end_id        (param._size_front_end_id       ),
148//     _size_ooo_engine_id       (param._size_ooo_engine_id      ),
149//     _size_packet_id           (param._size_packet_id          ),
150//     _size_general_register    (param._size_general_register   ),
151//     _size_special_register    (param._size_special_register   ),
152
153//     _have_port_context_id     (param._have_port_context_id    ),
154//     _have_port_front_end_id   (param._have_port_front_end_id  ),
155//     _have_port_ooo_engine_id  (param._have_port_ooo_engine_id ),
156//     _have_port_packet_id      (param._have_port_packet_id     ),
157//     _have_port_load_queue_ptr (param._have_port_load_queue_ptr)
158//   {
159//     log_printf(FUNC,Read_unit,FUNCTION,"Begin");
160
161//     _param_read_queue          = param._param_read_queue         ;
162//     _param_reservation_station = param._param_reservation_station;
163
164//     test();
165
166//     log_printf(FUNC,Read_unit,FUNCTION,"End");
167//   };
168
169#undef  FUNCTION
170#define FUNCTION "Read_unit::~Parameters"
171  Parameters::~Parameters (void) 
172  {
173    log_printf(FUNC,Read_unit,FUNCTION,"Begin");
174
175    delete _param_read_queue;
176    delete _param_reservation_station;
177
178    log_printf(FUNC,Read_unit,FUNCTION,"End");
179  };
180
181#undef  FUNCTION
182#define FUNCTION "Read_unit::copy"
183  void Parameters::copy (void) 
184  {
185    log_printf(FUNC,Read_unit,FUNCTION,"Begin");
186
187    COPY(_param_read_queue);
188    COPY(_param_reservation_station);
189
190    log_printf(FUNC,Read_unit,FUNCTION,"End");
191  };
192
193}; // end namespace read_unit
194}; // end namespace multi_read_unit
195}; // end namespace execute_loop
196}; // end namespace multi_execute_loop
197}; // end namespace core
198
199}; // end namespace behavioural
200}; // end namespace morpheo             
Note: See TracBrowser for help on using the repository browser.