source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_select/src/Rename_select_genMealy.cpp @ 81

Last change on this file since 81 was 81, checked in by rosiere, 16 years ago
  • Finish Environment (and test)
  • Continue predictor_unit
  • Add external tools
  • svn keyword "Id" set
  • Property svn:keywords set to Id
File size: 3.5 KB
Line 
1#ifdef SYSTEMC
2/*
3 * $Id: Rename_select_genMealy.cpp 81 2008-04-15 18:40:01Z rosiere $
4 *
5 * [ Description ]
6 *
7 */
8
9#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_select/include/Rename_select.h"
10
11namespace morpheo                    {
12namespace behavioural {
13namespace core {
14namespace multi_ooo_engine {
15namespace ooo_engine {
16namespace rename_unit {
17namespace rename_select {
18
19
20#undef  FUNCTION
21#define FUNCTION "Rename_select::genMealy"
22  void Rename_select::genMealy (void)
23  {
24    log_printf(FUNC,Rename_select,FUNCTION,"Begin");
25
26    Tcontrol_t ack [_param->_nb_front_end][_param->_max_nb_inst_decod];
27    for (uint32_t i=0; i<_param->_nb_front_end; i++)
28      for (uint32_t j=0; j<_param->_nb_inst_decod[i]; j++)
29        ack [i][j] = false;
30   
31    std::list<select_t>::iterator it=select.begin();
32
33    for (uint32_t i=0; i<_param->_nb_inst_rename; i++)
34      {
35        Tcontrol_t val = false;
36
37        while ((it != select.end()) and (val == false))
38          {
39            Tcontext_t x = it->_front_end ;
40            uint32_t   y = it->_inst_decod;
41
42            // Test if this instruction is valid
43            if (PORT_READ(in_RENAME_IN_VAL[x][y]) == 1)
44              {
45                // Find !!!
46                val        = true;
47                ack [x][y] = PORT_READ(in_RENAME_OUT_ACK [i]);
48
49                if (_param->_have_port_front_end_id)
50                PORT_WRITE(out_RENAME_OUT_FRONT_END_ID [i],PORT_READ(in_RENAME_IN_FRONT_END_ID  [x][y]));
51                if (_param->_have_port_context_id)
52                PORT_WRITE(out_RENAME_OUT_CONTEXT_ID   [i],PORT_READ(in_RENAME_IN_CONTEXT_ID    [x][y]));
53                if (_param->_have_port_depth)
54                PORT_WRITE(out_RENAME_OUT_DEPTH        [i],PORT_READ(in_RENAME_IN_DEPTH         [x][y]));
55                PORT_WRITE(out_RENAME_OUT_TYPE         [i],PORT_READ(in_RENAME_IN_TYPE          [x][y]));
56                PORT_WRITE(out_RENAME_OUT_OPERATION    [i],PORT_READ(in_RENAME_IN_OPERATION     [x][y]));
57                PORT_WRITE(out_RENAME_OUT_ADDRESS      [i],PORT_READ(in_RENAME_IN_ADDRESS       [x][y]));
58                PORT_WRITE(out_RENAME_OUT_HAS_IMMEDIAT [i],PORT_READ(in_RENAME_IN_HAS_IMMEDIAT  [x][y]));
59                PORT_WRITE(out_RENAME_OUT_IMMEDIAT     [i],PORT_READ(in_RENAME_IN_IMMEDIAT      [x][y]));
60                PORT_WRITE(out_RENAME_OUT_READ_RA      [i],PORT_READ(in_RENAME_IN_READ_RA       [x][y]));
61                PORT_WRITE(out_RENAME_OUT_NUM_REG_RA   [i],PORT_READ(in_RENAME_IN_NUM_REG_RA    [x][y]));
62                PORT_WRITE(out_RENAME_OUT_READ_RB      [i],PORT_READ(in_RENAME_IN_READ_RB       [x][y]));
63                PORT_WRITE(out_RENAME_OUT_NUM_REG_RB   [i],PORT_READ(in_RENAME_IN_NUM_REG_RB    [x][y]));
64                PORT_WRITE(out_RENAME_OUT_READ_RC      [i],PORT_READ(in_RENAME_IN_READ_RC       [x][y]));
65                PORT_WRITE(out_RENAME_OUT_NUM_REG_RC   [i],PORT_READ(in_RENAME_IN_NUM_REG_RC    [x][y]));
66                PORT_WRITE(out_RENAME_OUT_WRITE_RD     [i],PORT_READ(in_RENAME_IN_WRITE_RD      [x][y]));
67                PORT_WRITE(out_RENAME_OUT_NUM_REG_RD   [i],PORT_READ(in_RENAME_IN_NUM_REG_RD    [x][y]));
68                PORT_WRITE(out_RENAME_OUT_WRITE_RE     [i],PORT_READ(in_RENAME_IN_WRITE_RE      [x][y]));
69                PORT_WRITE(out_RENAME_OUT_NUM_REG_RE   [i],PORT_READ(in_RENAME_IN_NUM_REG_RE    [x][y]));
70                PORT_WRITE(out_RENAME_OUT_EXCEPTION_USE[i],PORT_READ(in_RENAME_IN_EXCEPTION_USE [x][y]));
71              }
72
73            it ++;
74          }
75
76        PORT_WRITE(out_RENAME_OUT_VAL [i], val);
77      }
78
79    for (uint32_t i=0; i<_param->_nb_front_end; i++)
80      for (uint32_t j=0; j<_param->_nb_inst_decod[i]; j++)
81        PORT_WRITE(out_RENAME_IN_ACK [i][j], ack [i][j]);
82
83    log_printf(FUNC,Rename_select,FUNCTION,"End");
84  };
85
86}; // end namespace rename_select
87}; // end namespace rename_unit
88}; // end namespace ooo_engine
89}; // end namespace multi_ooo_engine
90}; // end namespace core
91
92}; // end namespace behavioural
93}; // end namespace morpheo             
94#endif
Note: See TracBrowser for help on using the repository browser.