source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit_genMoore.cpp @ 112

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

1) Stat_list : fix retire old and new register bug
2) Stat_list : remove read_counter and valid flag, because validation of destination is in retire step (not in commit step)
3) Model : add class Model (cf Morpheo.sim)
4) Allocation : alloc_interface_begin and alloc_interface_end to delete temporary array.
5) Script : add distexe.sh
6) Add Comparator, Multiplier, Divider. But this component are not implemented
7) Software : add Dhrystone

  • Property svn:keywords set to Id
File size: 2.1 KB
Line 
1#ifdef SYSTEMC
2/*
3 * $Id: Stat_List_unit_genMoore.cpp 112 2009-03-18 22:36:26Z rosiere $
4 *
5 * [ Description ]
6 *
7 */
8
9#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/include/Stat_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 stat_list_unit {
19
20
21#undef  FUNCTION
22#define FUNCTION "Stat_List_unit::genMoore"
23  void Stat_List_unit::genMoore (void)
24  {
25    log_begin(Stat_List_unit,FUNCTION);
26    log_function(Stat_List_unit,FUNCTION,_name.c_str());
27
28    uint32_t gpr_ptr = reg_GPR_PTR_FREE;
29    uint32_t spr_ptr = reg_SPR_PTR_FREE;
30
31    for (uint32_t i=0; i<_param->_nb_reg_free; i++)
32      {
33        uint32_t offset  = i*_param->_nb_bank_by_port_free;
34
35        // PUSH_GPR
36        {
37          uint32_t bank_gpr;
38         
39          for (bank_gpr=offset; bank_gpr<offset+_param->_nb_bank_by_port_free; bank_gpr++)
40            if (gpr_stat_list[bank_gpr][gpr_ptr].can_free())
41              break;
42         
43          bool val = (bank_gpr != offset+_param->_nb_bank_by_port_free);
44         
45          internal_PUSH_GPR_VAL      [i] = val;
46          internal_PUSH_GPR_NUM_BANK [i] = bank_gpr;
47
48          PORT_WRITE(out_PUSH_GPR_VAL [i], val);
49          if (val)
50            PORT_WRITE(out_PUSH_GPR_NUM_REG[i], ((bank_gpr<<_param->_shift_gpr) | gpr_ptr));
51        }
52
53        // PUSH_SPR
54        {
55          uint32_t bank_spr;
56         
57          for (bank_spr=offset; bank_spr<offset+_param->_nb_bank_by_port_free; bank_spr++)
58            if (spr_stat_list[bank_spr][spr_ptr].can_free())
59              break;
60
61          bool val = (bank_spr != (offset+_param->_nb_bank_by_port_free));
62         
63          internal_PUSH_SPR_VAL      [i] = val;
64          internal_PUSH_SPR_NUM_BANK [i] = bank_spr;
65
66          PORT_WRITE(out_PUSH_SPR_VAL [i], val);
67          if (val)
68            PORT_WRITE(out_PUSH_SPR_NUM_REG[i], ((bank_spr<<_param->_shift_spr) | spr_ptr));
69        }
70      }
71   
72    log_end(Stat_List_unit,FUNCTION);
73  };
74
75}; // end namespace stat_list_unit
76}; // end namespace register_translation_unit
77}; // end namespace rename_unit
78}; // end namespace ooo_engine
79}; // end namespace multi_ooo_engine
80}; // end namespace core
81
82}; // end namespace behavioural
83}; // end namespace morpheo             
84#endif
Note: See TracBrowser for help on using the repository browser.