source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Issue_queue/src/Parameters.cpp @ 109

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

1) Configuration : instance configuration file : regroup similar instance
2) Configuration : timing default = 0
3) Debug/Commit_unit : Add watch dog timer
4) Issue_queue : Test parameters : add test if type is optionnal
5) Cor_glue : Fix insert index
6) Free_list : remove bank_by_pop (else deadlock)
7) Update Free List : add register to source event

  • Property svn:keywords set to Id
File size: 4.6 KB
Line 
1/*
2 * $Id: Parameters.cpp 109 2009-02-16 20:28:31Z rosiere $
3 *
4 * [ Description ]
5 *
6 */
7
8#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Issue_queue/include/Parameters.h"
9#include "Common/include/Max.h"
10
11namespace morpheo {
12namespace behavioural {
13namespace core {
14namespace multi_ooo_engine {
15namespace ooo_engine {
16namespace issue_queue {
17
18
19#undef  FUNCTION
20#define FUNCTION "Issue_queue::Parameters"
21  Parameters::Parameters (uint32_t          nb_context              ,
22                          uint32_t          nb_front_end            ,
23                          uint32_t          nb_rename_unit          ,
24                          uint32_t          size_queue              ,
25                          uint32_t          nb_bank                 ,
26                          uint32_t          size_packet             ,
27                          uint32_t          size_general_data       ,
28                          uint32_t          size_special_data       ,
29                          uint32_t          size_general_register   ,
30                          uint32_t          size_special_register   ,
31                          uint32_t          size_store_queue_ptr    ,
32                          uint32_t          size_load_queue_ptr     ,
33                          uint32_t          nb_inst_issue           ,
34                          uint32_t        * nb_inst_rename          ,
35                          uint32_t          nb_inst_reexecute       ,
36                          uint32_t          nb_rename_unit_select   ,
37                          Tpriority_t       priority                ,
38                          Tload_balancing_t load_balancing          ,
39                          bool           ** table_routing           ,
40                          bool           ** table_issue_type        ,
41                          bool              is_toplevel             )
42  {
43    log_begin(Issue_queue,FUNCTION);
44
45    _nb_context               = nb_context           ;
46    _nb_front_end             = nb_front_end         ;
47    _nb_rename_unit           = nb_rename_unit       ;
48    _size_queue               = size_queue           ;
49    _nb_bank                  = nb_bank              ;   
50    _nb_inst_issue            = nb_inst_issue        ;
51    _nb_inst_rename           = nb_inst_rename       ;
52    _nb_inst_reexecute        = nb_inst_reexecute    ;
53    _nb_rename_unit_select    = nb_rename_unit_select;
54    _priority                 = priority             ;
55    _load_balancing           = load_balancing       ;
56    _table_routing            = table_routing        ;
57    _table_issue_type         = table_issue_type     ;
58
59    log_printf(TRACE,Issue_queue,FUNCTION,"  * table_routing [nb_rename_unit][nb_inst_issue]");
60    for (uint32_t i=0; i<_nb_rename_unit; ++i)
61      for (uint32_t j=0; j<_nb_inst_issue; ++j)
62        if (_table_routing [i][j])
63          log_printf(TRACE,Issue_queue,FUNCTION,"    [%d][%d] -> true",i,j);
64       
65    log_printf(TRACE,Issue_queue,FUNCTION,"  * table_issue_type [nb_inst_issue][nb_type]");
66    for (uint32_t i=0; i<_nb_inst_issue; ++i)
67      for (uint32_t j=0; j<_nb_type; ++j)
68        if (_table_issue_type [i][j])
69          log_printf(TRACE,Issue_queue,FUNCTION,"    [%d][%d] -> true",i,j);
70   
71    _max_nb_inst_rename       = max<uint32_t>(_nb_inst_rename,_nb_rename_unit);
72    _nb_bank_select_out       = _nb_bank/nb_inst_issue;
73
74    _size_bank                = _size_queue / _nb_bank;
75   
76    test();
77
78    if (is_toplevel)
79      {
80        _size_context_id          = log2(nb_context  );
81        _size_front_end_id        = log2(nb_front_end);
82        _size_rob_ptr             = size_packet          ;
83        _size_general_data        = size_general_data    ;
84        _size_special_data        = size_special_data    ;
85        _size_general_register    = size_general_register;
86        _size_special_register    = size_special_register;
87        _size_store_queue_ptr     = size_store_queue_ptr ;
88        _size_load_queue_ptr      = size_load_queue_ptr  ;
89       
90        _have_port_context_id     = (_size_context_id     > 0);
91        _have_port_front_end_id   = (_size_front_end_id   > 0);
92        _have_port_rob_ptr        = (_size_rob_ptr        > 0);
93        _have_port_load_queue_ptr = (_size_load_queue_ptr > 0);
94       
95        copy();
96      }
97
98    log_end(Issue_queue,FUNCTION);
99  };
100 
101// #undef  FUNCTION
102// #define FUNCTION "Issue_queue::Parameters (copy)"
103//   Parameters::Parameters (Parameters & param)
104//   {
105//     log_begin(Issue_queue,FUNCTION);
106//     test();
107//     log_end(Issue_queue,FUNCTION);
108//   };
109
110#undef  FUNCTION
111#define FUNCTION "Issue_queue::~Parameters"
112  Parameters::~Parameters (void) 
113  {
114    log_begin(Issue_queue,FUNCTION);
115    log_end(Issue_queue,FUNCTION);
116  };
117
118#undef  FUNCTION
119#define FUNCTION "Issue_queue::copy"
120  void Parameters::copy (void) 
121  {
122    log_begin(Issue_queue,FUNCTION);
123    log_end(Issue_queue,FUNCTION);
124  };
125
126}; // end namespace issue_queue
127}; // end namespace ooo_engine
128}; // end namespace multi_ooo_engine
129}; // end namespace core
130
131}; // end namespace behavioural
132}; // end namespace morpheo             
Note: See TracBrowser for help on using the repository browser.