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

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

Almost complete design
with Test and test platform

  • Property svn:keywords set to Id
File size: 6.5 KB
Line 
1/*
2 * $Id: Parameters.cpp 88 2008-12-10 18:31:39Z rosiere $
3 *
4 * [ Description ]
5 *
6 */
7
8#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Parameters.h"
9
10namespace morpheo {
11namespace behavioural {
12namespace core {
13namespace multi_execute_loop {
14namespace execute_loop {
15namespace multi_read_unit {
16namespace read_unit {
17namespace read_queue {
18
19
20  Parameters::Parameters (uint32_t size_queue         ,
21                          uint32_t nb_context         ,
22                          uint32_t nb_front_end       ,
23                          uint32_t nb_ooo_engine      ,
24                          uint32_t nb_packet          ,
25                          uint32_t size_general_data  ,
26                          uint32_t size_special_data  ,
27                          uint32_t nb_general_register,
28                          uint32_t nb_special_register,
29                          uint32_t nb_gpr_write       ,
30                          uint32_t nb_spr_write       ,
31                          uint32_t size_store_queue   ,
32                          uint32_t size_load_queue    ,
33                          bool     is_toplevel)
34  {
35    log_printf(FUNC,Read_queue,"Parameters","Begin");
36
37    _size_queue              = size_queue           ;
38    _nb_context              = nb_context           ;
39    _nb_front_end            = nb_front_end         ;
40    _nb_ooo_engine           = nb_ooo_engine        ;
41    _nb_packet               = nb_packet            ;
42    _nb_general_register     = nb_general_register  ;
43    _nb_special_register     = nb_special_register  ;
44    _nb_gpr_write            = nb_gpr_write         ;
45    _nb_spr_write            = nb_spr_write         ;
46                             
47    _nb_gpr_read             = 2                    ;
48    _nb_spr_read             = 1                    ;
49
50    _size_internal_queue     = (  log2(nb_context         ) //_context_id   
51                                + log2(nb_front_end       ) //_front_end_id
52                                + log2(nb_ooo_engine      ) //_ooo_engine_id
53                                + log2(nb_packet          ) //_rob_id       
54                                + _size_operation           //_operation   
55                                + _size_type                //_type         
56                                + log2(size_store_queue   ) //_store_queue_ptr_write
57                                + log2(size_load_queue    ) //_load_queue_ptr_write
58                                + 1                         //_has_immediat
59                                +  size_general_data        //_immediat     
60                                + 1                         //_read_ra     
61                                + log2(nb_general_register) //_num_reg_ra   
62                                + 1                         //_read_rb     
63                                + log2(nb_general_register) //_num_reg_rb   
64                                + 1                         //_read_rc     
65                                + log2(nb_special_register) //_num_reg_rc   
66                                + 1                         //_write_rd     
67                                + log2(nb_general_register) //_num_reg_rd   
68                                + 1                         //_write_re     
69                                + log2(nb_special_register) //_num_reg_re   
70                                );
71
72    test();
73
74    if (is_toplevel)
75      {
76        _size_general_data       = size_general_data    ;
77        _size_special_data       = size_special_data    ;
78        _size_store_queue_ptr    = log2(size_store_queue);
79        _size_load_queue_ptr     = log2(size_load_queue );
80        _size_context_id         = log2(_nb_context         );
81        _size_front_end_id       = log2(_nb_front_end       );
82        _size_ooo_engine_id      = log2(_nb_ooo_engine      );
83        _size_rob_ptr            = log2(_nb_packet          );
84        _size_general_register   = log2(_nb_general_register);
85        _size_special_register   = log2(_nb_special_register);
86       
87        _have_port_context_id    = _size_context_id    > 0;
88        _have_port_front_end_id  = _size_front_end_id  > 0;
89        _have_port_ooo_engine_id = _size_ooo_engine_id > 0;
90        _have_port_rob_ptr       = _size_rob_ptr       > 0;
91        _have_port_load_queue_ptr= _size_load_queue_ptr> 0;
92       
93        copy();
94      }
95
96    log_printf(FUNC,Read_queue,"Parameters","End");
97  };
98 
99//   Parameters::Parameters (Parameters & param):
100//     _size_queue            (param._size_queue            ),
101//     _nb_context            (param._nb_context            ),
102//     _nb_front_end          (param._nb_front_end          ),
103//     _nb_ooo_engine         (param._nb_ooo_engine         ),
104//     _nb_packet             (param._nb_packet             ),
105//     _size_general_data     (param._size_general_data     ),
106//     _size_special_data     (param._size_special_data     ),
107//     _nb_general_register   (param._nb_general_register   ),
108//     _nb_special_register   (param._nb_special_register   ),
109//     _nb_gpr_write          (param._nb_gpr_write          ),
110//     _nb_spr_write          (param._nb_spr_write          ),
111//     _size_store_queue      (param._size_store_queue      ),
112//     _size_load_queue       (param._size_load_queue       ),
113
114//     _nb_gpr_read           (param._nb_gpr_read           ),
115//     _nb_spr_read           (param._nb_spr_read           ),
116//     _size_context_id       (param._size_context_id       ),
117//     _size_front_end_id     (param._size_front_end_id     ),
118//     _size_ooo_engine_id    (param._size_ooo_engine_id    ),
119//     _size_rob_id           (param._size_rob_id           ),
120//     _size_general_register (param._size_general_register ),
121//     _size_special_register (param._size_special_register ),
122
123//     _have_port_context_id    (param._have_port_context_id   ),
124//     _have_port_front_end_id  (param._have_port_front_end_id ),
125//     _have_port_ooo_engine_id (param._have_port_ooo_engine_id),
126//     _have_port_rob_id        (param._have_port_rob_id       ),
127//     _have_port_load_queue_ptr(param._have_port_load_queue_ptr),
128
129//     _size_internal_queue     (param._size_internal_queue    )
130//   {
131//     log_printf(FUNC,Read_queue,"Parameters (copy)","Begin");
132//     test();
133//     log_printf(FUNC,Read_queue,"Parameters (copy)","End");
134//   };
135
136  Parameters::~Parameters (void) 
137  {
138    log_printf(FUNC,Read_queue,"~Parameters","Begin");
139    log_printf(FUNC,Read_queue,"~Parameters","End");
140  };
141
142  void Parameters::copy (void) 
143  {
144    log_printf(FUNC,Read_queue,"copy","Begin");
145    log_printf(FUNC,Read_queue,"copy","End");
146  };
147
148}; // end namespace read_queue
149}; // end namespace read_unit
150}; // end namespace multi_read_unit
151}; // end namespace execute_loop
152}; // end namespace multi_execute_loop
153}; // end namespace core
154
155}; // end namespace behavioural
156}; // end namespace morpheo             
Note: See TracBrowser for help on using the repository browser.