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

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

1) Add new algo in ifetch queue
2) Add Cancel bit
3) new config

  • Property svn:keywords set to Id
File size: 3.1 KB
Line 
1/*
2 * $Id: Parameters_msg_error.cpp 136 2009-10-20 18:52:15Z rosiere $
3 *
4 * [ Description ]
5 *
6 */
7
8#include "Behavioural/include/Types.h"
9#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Issue_queue/include/Parameters.h"
10#include <sstream>
11
12namespace morpheo                    {
13namespace behavioural {
14namespace core {
15namespace multi_ooo_engine {
16namespace ooo_engine {
17namespace issue_queue {
18
19
20#undef  FUNCTION
21#define FUNCTION "Issue_queue::msg_error"
22  Parameters_test Parameters::msg_error(void)
23  {
24    log_begin(Issue_queue,FUNCTION);
25
26    Parameters_test test ("Issue_queue");
27
28    switch (_queue_scheme)
29      {
30      case ISSUE_QUEUE_SCHEME_IN_ORDER        :
31      case ISSUE_QUEUE_SCHEME_OUT_OF_ORDER    :
32        {
33          // supported
34          break;
35        }
36      default :
37        {
38          test.error(toString(_("Issue queue scheme '%s' is not supported. Please wait a next revision.\n"),toString(_queue_scheme).c_str()));
39          break;
40        }
41      }
42
43    if (// (_queue_scheme == ISSUE_QUEUE_SCHEME_IN_BUNDLE_ORDER) or
44        (_queue_scheme == ISSUE_QUEUE_SCHEME_OUT_OF_ORDER   ))
45      test.error(toString(_("Can have deadlock with the queue scheme \"%s\".\n"),toString(_queue_scheme).c_str()));
46
47    if (not is_multiple(_size_queue, _nb_bank))
48      test.error(toString(_("nb_bank (%d) must be a multiple of size_queue (%d).\n"),_nb_bank,_size_queue));
49   
50//     if (not is_multiple(_nb_bank, _nb_inst_issue))
51//       test.error(toString(_("nb_inst_issue (%d) must be a multiple of nb_bank (%d) .\n"),_nb_inst_issue,_nb_bank));
52
53    if (_nb_rename_unit_select > _nb_rename_unit)
54      test.error(toString(_("nb_rename_unit_select must be <= nb_rename_unit.\n")));
55
56    if (_size_bank == 1)
57      test.warning(_("For better performance, the bank's size (size_queue/nb_bank) must be > 1.\n"));
58
59//     for (uint32_t i=0; i<_nb_rename_unit; i++)
60//       {
61//      bool type_present [_nb_type];
62       
63//      for (uint32_t j=0; j<_nb_type; j++)
64//        type_present [j] = not is_type_valid(j);
65
66//      bool find = false;
67//      for (uint32_t j=0; j<_nb_inst_issue; j++)
68//        if (_table_routing [i][j])
69//        {
70//          find = true;
71
72//          for (uint32_t k=0; k<_nb_type; k++)
73//            type_present [k] |= _table_issue_type [j][k];
74//        }
75
76//      if (not find)
77//        test.error(toString(_("Rename_unit [%d] is not connected with a issue slot.\n"),i));
78//      else
79//        for (uint32_t j=0; j<_nb_type; j++)
80//          if (not type_present [j] and not is_type_optionnal(j))
81//            test.error(toString(_("Rename_unit [%d] can't issue instruction's type \"%s\".\n"),i,toString(j).c_str()));
82//       }
83   
84    if ((_priority != PRIORITY_ROUND_ROBIN))
85      test.error(toString(_("Unsupported priority scheme (Coming Soon). Supported scheme are : %s.\n"),toString(PRIORITY_ROUND_ROBIN).c_str()));
86   
87    if ((_load_balancing != LOAD_BALANCING_MAXIMUM_FOR_PRIORITY))
88      test.error(toString(_("Unsupported load_balancing scheme (Coming Soon). Supported scheme are : %s.\n"),toString(LOAD_BALANCING_MAXIMUM_FOR_PRIORITY).c_str()));
89
90    log_end(Issue_queue,FUNCTION);
91
92    return test;
93  };
94
95}; // end namespace issue_queue
96}; // end namespace ooo_engine
97}; // end namespace multi_ooo_engine
98}; // end namespace core
99
100}; // end namespace behavioural
101}; // end namespace morpheo             
Note: See TracBrowser for help on using the repository browser.