source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_genMealy_push_gpr.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: 1.5 KB
Line 
1#ifdef SYSTEMC
2/*
3 * $Id: Free_List_unit_genMealy_push_gpr.cpp 88 2008-12-10 18:31:39Z rosiere $
4 *
5 * [ Description ]
6 *
7 */
8
9#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/include/Free_List_unit.h"
10
11namespace morpheo                    {
12namespace behavioural {
13namespace core {
14namespace multi_ooo_engine {
15namespace ooo_engine {
16namespace rename_unit {
17namespace register_translation_unit {
18namespace free_list_unit {
19
20
21#undef  FUNCTION
22#define FUNCTION "Free_List_unit::genMealy_push_gpr"
23  void Free_List_unit::genMealy_push_gpr (void)
24  {
25    log_begin(Free_List_unit,FUNCTION);
26    log_function(Free_List_unit,FUNCTION,_name.c_str());
27
28    bool bank_use [_param->_nb_bank];
29    for (uint32_t i=0; i<_param->_nb_bank; i++)
30      bank_use [i] = false;
31
32    for (uint32_t i=0; i<_param->_nb_push; i++)
33      {
34        bool gpr_ack = not PORT_READ(in_PUSH_GPR_VAL[i]);
35
36        if (not gpr_ack)
37          {
38            // num_bank : MSB
39            uint32_t bank = PORT_READ(in_PUSH_GPR_NUM_REG[i]) >> _param->_bank_gpr_size_slot;
40           
41            if (not bank_use [bank])
42              {
43                // find
44                gpr_ack = true;
45                internal_PUSH_GPR_BANK [i] = bank;
46                bank_use [bank] = true;
47              }
48          }
49
50        internal_PUSH_GPR_ACK [i] = gpr_ack;
51        PORT_WRITE(out_PUSH_GPR_ACK [i], internal_PUSH_GPR_ACK [i]);
52      }
53   
54    log_end(Free_List_unit,FUNCTION);
55  };
56
57}; // end namespace free_list_unit
58}; // end namespace register_translation_unit
59}; // end namespace rename_unit
60}; // end namespace ooo_engine
61}; // end namespace multi_ooo_engine
62}; // end namespace core
63
64}; // end namespace behavioural
65}; // end namespace morpheo             
66#endif
Note: See TracBrowser for help on using the repository browser.