Ignore:
Timestamp:
Dec 10, 2008, 7:31:39 PM (16 years ago)
Author:
rosiere
Message:

Almost complete design
with Test and test platform

Location:
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit
Files:
14 edited

Legend:

Unmodified
Added
Removed
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/SelfTest/Makefile

    r81 r88  
    2424library_clean                   : Stat_List_unit_library_clean
    2525
     26local_clean                     :
     27
    2628include                         $(DIR_COMPONENT)/Makefile.deps
    2729include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/SelfTest/src/main.cpp

    r81 r88  
    6868         _nb_reg_free           ,
    6969         _nb_bank               ,
    70          _size_counter          );
     70         _size_counter          ,
     71         true //is_toplevel
     72         );
    7173     
    7274      msg(_("%s"),param->print(1).c_str());
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/SelfTest/src/test.cpp

    r82 r88  
    3434#endif
    3535
     36  Tusage_t _usage = USE_ALL;
     37
     38//   _usage = usage_unset(_usage,USE_SYSTEMC              );
     39//   _usage = usage_unset(_usage,USE_VHDL                 );
     40//   _usage = usage_unset(_usage,USE_VHDL_TESTBENCH       );
     41//   _usage = usage_unset(_usage,USE_VHDL_TESTBENCH_ASSERT);
     42//   _usage = usage_unset(_usage,USE_POSITION             );
     43//   _usage = usage_unset(_usage,USE_STATISTICS           );
     44//   _usage = usage_unset(_usage,USE_INFORMATION          );
     45
    3646  Stat_List_unit * _Stat_List_unit = new Stat_List_unit
    3747    (name.c_str(),
     
    4050#endif
    4151     _param,
    42      USE_ALL);
     52     _usage);
    4353 
    4454#ifdef SYSTEMC
     
    7282  ALLOC1_SC_SIGNAL( in_RETIRE_NUM_REG_RC_PHY    ," in_RETIRE_NUM_REG_RC_PHY    ",Tspecial_address_t,_param->_nb_inst_retire);
    7383  ALLOC1_SC_SIGNAL( in_RETIRE_WRITE_RD          ," in_RETIRE_WRITE_RD          ",Tcontrol_t        ,_param->_nb_inst_retire);
     84  ALLOC1_SC_SIGNAL( in_RETIRE_RESTORE_RD_PHY_OLD," in_RETIRE_RESTORE_RD_PHY_OLD",Tcontrol_t        ,_param->_nb_inst_retire);
    7485  ALLOC1_SC_SIGNAL( in_RETIRE_NUM_REG_RD_PHY_OLD," in_RETIRE_NUM_REG_RD_PHY_OLD",Tgeneral_address_t,_param->_nb_inst_retire);
    7586  ALLOC1_SC_SIGNAL( in_RETIRE_NUM_REG_RD_PHY_NEW," in_RETIRE_NUM_REG_RD_PHY_NEW",Tgeneral_address_t,_param->_nb_inst_retire);
    7687  ALLOC1_SC_SIGNAL( in_RETIRE_WRITE_RE          ," in_RETIRE_WRITE_RE          ",Tcontrol_t        ,_param->_nb_inst_retire);
     88  ALLOC1_SC_SIGNAL( in_RETIRE_RESTORE_RE_PHY_OLD," in_RETIRE_RESTORE_RE_PHY_OLD",Tcontrol_t        ,_param->_nb_inst_retire);
    7789  ALLOC1_SC_SIGNAL( in_RETIRE_NUM_REG_RE_PHY_OLD," in_RETIRE_NUM_REG_RE_PHY_OLD",Tspecial_address_t,_param->_nb_inst_retire);
    7890  ALLOC1_SC_SIGNAL( in_RETIRE_NUM_REG_RE_PHY_NEW," in_RETIRE_NUM_REG_RE_PHY_NEW",Tspecial_address_t,_param->_nb_inst_retire);
     
    116128  INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_RETIRE_NUM_REG_RC_PHY    ,_param->_nb_inst_retire);
    117129  INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_RETIRE_WRITE_RD          ,_param->_nb_inst_retire);
     130  INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_RETIRE_RESTORE_RD_PHY_OLD,_param->_nb_inst_retire);
    118131  INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_RETIRE_NUM_REG_RD_PHY_OLD,_param->_nb_inst_retire);
    119132  INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_RETIRE_NUM_REG_RD_PHY_NEW,_param->_nb_inst_retire);
    120133  INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_RETIRE_WRITE_RE          ,_param->_nb_inst_retire);
     134  INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_RETIRE_RESTORE_RE_PHY_OLD,_param->_nb_inst_retire);
    121135  INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_RETIRE_NUM_REG_RE_PHY_OLD,_param->_nb_inst_retire);
    122136  INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_RETIRE_NUM_REG_RE_PHY_NEW,_param->_nb_inst_retire);
     
    347361              in_RETIRE_NUM_REG_RC_PHY     [i]->write(rc);
    348362              in_RETIRE_WRITE_RD           [i]->write(write_rd);
     363              in_RETIRE_RESTORE_RD_PHY_OLD [i]->write(0);
    349364              in_RETIRE_NUM_REG_RD_PHY_OLD [i]->write(rd_old);
    350365              in_RETIRE_NUM_REG_RD_PHY_NEW [i]->write(rd_new);
    351366              in_RETIRE_WRITE_RE           [i]->write(write_re);
     367              in_RETIRE_RESTORE_RE_PHY_OLD [i]->write(0);
    352368              in_RETIRE_NUM_REG_RE_PHY_OLD [i]->write(re_old);
    353369              in_RETIRE_NUM_REG_RE_PHY_NEW [i]->write(re_new);
     
    486502            if (in_RETIRE_VAL [i]->read() and out_RETIRE_ACK [i]->read())
    487503              {
    488                 Tcontrol_t         read_ra  = in_RETIRE_READ_RA            [i]->read();
    489                 Tgeneral_address_t ra       = in_RETIRE_NUM_REG_RA_PHY     [i]->read();
    490                 Tcontrol_t         read_rb  = in_RETIRE_READ_RB            [i]->read();
    491                 Tgeneral_address_t rb       = in_RETIRE_NUM_REG_RB_PHY     [i]->read();
    492                 Tcontrol_t         read_rc  = in_RETIRE_READ_RC            [i]->read();
    493                 Tspecial_address_t rc       = in_RETIRE_NUM_REG_RC_PHY     [i]->read();
    494                 Tcontrol_t         write_rd = in_RETIRE_WRITE_RD           [i]->read();
    495                 Tgeneral_address_t rd_old   = in_RETIRE_NUM_REG_RD_PHY_OLD [i]->read();
    496                 Tgeneral_address_t rd_new   = in_RETIRE_NUM_REG_RD_PHY_NEW [i]->read();
    497                 Tcontrol_t         write_re = in_RETIRE_WRITE_RE           [i]->read();
    498                 Tgeneral_address_t re_old   = in_RETIRE_NUM_REG_RE_PHY_OLD [i]->read();
    499                 Tgeneral_address_t re_new   = in_RETIRE_NUM_REG_RE_PHY_NEW [i]->read();         
     504                Tcontrol_t         read_ra        = in_RETIRE_READ_RA            [i]->read();
     505                Tgeneral_address_t ra             = in_RETIRE_NUM_REG_RA_PHY     [i]->read();
     506                Tcontrol_t         read_rb        = in_RETIRE_READ_RB            [i]->read();
     507                Tgeneral_address_t rb             = in_RETIRE_NUM_REG_RB_PHY     [i]->read();
     508                Tcontrol_t         read_rc        = in_RETIRE_READ_RC            [i]->read();
     509                Tspecial_address_t rc             = in_RETIRE_NUM_REG_RC_PHY     [i]->read();
     510                Tcontrol_t         write_rd       = in_RETIRE_WRITE_RD           [i]->read();
     511                Tcontrol_t         restore_rd_old = in_RETIRE_RESTORE_RD_PHY_OLD [i]->read();
     512                Tgeneral_address_t rd_old         = in_RETIRE_NUM_REG_RD_PHY_OLD [i]->read();
     513                Tgeneral_address_t rd_new         = in_RETIRE_NUM_REG_RD_PHY_NEW [i]->read();
     514                Tcontrol_t         write_re       = in_RETIRE_WRITE_RE           [i]->read();
     515                Tcontrol_t         restore_re_old = in_RETIRE_RESTORE_RE_PHY_OLD [i]->read();
     516                Tgeneral_address_t re_old         = in_RETIRE_NUM_REG_RE_PHY_OLD [i]->read();
     517                Tgeneral_address_t re_new         = in_RETIRE_NUM_REG_RE_PHY_NEW [i]->read();           
    500518
    501519                LABEL("RETIRE [%d] - Accepted",i);
     
    519537                LABEL("   * status[%d]._counter  : %d",rc,spr_status[rc]._counter );
    520538                LABEL(" * read_rd          : %d",write_rd);
     539                LABEL(" * restore_rd_old   : %d",restore_rd_old);
    521540                LABEL(" * reg_rd_old       : %d",rd_old  );
    522541                LABEL("   * status[%d]._is_free  : %d",rd_old,spr_status[rd_old]._is_free );
     
    530549                LABEL("   * status[%d]._counter  : %d",rd_new,spr_status[rd_new]._counter );
    531550                LABEL(" * read_re          : %d",write_re);
     551                LABEL(" * restore_re_old   : %d",restore_re_old);
    532552                LABEL(" * reg_re_old       : %d",re_old  );
    533553                LABEL("   * status[%d]._is_free  : %d",re_old,spr_status[re_old]._is_free );
     
    555575                if (write_rd)
    556576                  {
    557                     gpr_status[rd_old]._is_link  = 0;
    558                     gpr_status[rd_new]._is_valid = 1;
     577                    if (restore_rd_old)
     578                      {
     579                        gpr_status[rd_old]._is_link  = 1;
     580                        gpr_status[rd_new]._is_link  = 0;
     581                        gpr_status[rd_new]._is_valid = 1;
     582                      }
     583                    else
     584                      {
     585                        gpr_status[rd_old]._is_link  = 0;
     586                        gpr_status[rd_new]._is_valid = 1;
     587                      }
    559588                  }
    560589                if (write_re)
    561590                  {
    562                     spr_status[re_old]._is_link  = 0;
    563                     spr_status[re_new]._is_valid = 1;
    564                   }
     591                    if (restore_re_old)
     592                      {
     593                        spr_status[re_old]._is_link  = 1;
     594                        spr_status[re_new]._is_link  = 0;
     595                        spr_status[re_new]._is_valid = 1;
     596                      }
     597                    else
     598                      {
     599                        spr_status[re_old]._is_link  = 0;
     600                        spr_status[re_new]._is_valid = 1;
     601                      }
     602                  }
    565603              }
    566604
     
    647685  delete []  in_RETIRE_NUM_REG_RC_PHY    ;
    648686  delete []  in_RETIRE_WRITE_RD          ;
     687  delete []  in_RETIRE_RESTORE_RD_PHY_OLD;
    649688  delete []  in_RETIRE_NUM_REG_RD_PHY_OLD;
    650689  delete []  in_RETIRE_NUM_REG_RD_PHY_NEW;
    651690  delete []  in_RETIRE_WRITE_RE          ;
     691  delete []  in_RETIRE_RESTORE_RE_PHY_OLD;
    652692  delete []  in_RETIRE_NUM_REG_RE_PHY_OLD;
    653693  delete []  in_RETIRE_NUM_REG_RE_PHY_NEW;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/include/Parameters.h

    r82 r88  
    3636  public : uint32_t   _size_counter          ;
    3737
    38   public : uint32_t   _size_general_register ;
    39   public : uint32_t   _size_special_register ;
     38//public : uint32_t   _size_general_register ;
     39//public : uint32_t   _size_special_register ;
    4040                     
    4141  public : uint32_t   _max_reader            ;
     
    6363                        uint32_t   nb_reg_free           ,
    6464                        uint32_t   nb_bank               ,
    65                         uint32_t   size_counter          );
     65                        uint32_t   size_counter          ,
     66                        bool       is_toplevel=false
     67                        );
    6668
    6769//   public : Parameters  (Parameters & param) ;
    6870  public : ~Parameters () ;
     71
     72  public :        void            copy       (void);
    6973
    7074  public :        Parameters_test msg_error  (void);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/include/Stat_List_unit.h

    r82 r88  
    1 #ifndef morpheo_behavioural_core_multi_ooo_engine_ooo_engine_rename_unit_register_translation_unit_stat_list_unit_Stat_List_unit_h
     1 #ifndef morpheo_behavioural_core_multi_ooo_engine_ooo_engine_rename_unit_register_translation_unit_stat_list_unit_Stat_List_unit_h
    22#define morpheo_behavioural_core_multi_ooo_engine_ooo_engine_rename_unit_register_translation_unit_stat_list_unit_Stat_List_unit_h
    33
     
    8686  public    : SC_IN (Tspecial_address_t)   **  in_RETIRE_NUM_REG_RC_PHY    ;//[nb_inst_retire]
    8787  public    : SC_IN (Tcontrol_t        )   **  in_RETIRE_WRITE_RD          ;//[nb_inst_retire]
     88  public    : SC_IN (Tcontrol_t        )   **  in_RETIRE_RESTORE_RD_PHY_OLD;//[nb_inst_retire]
    8889  public    : SC_IN (Tgeneral_address_t)   **  in_RETIRE_NUM_REG_RD_PHY_OLD;//[nb_inst_retire]
    8990  public    : SC_IN (Tgeneral_address_t)   **  in_RETIRE_NUM_REG_RD_PHY_NEW;//[nb_inst_retire]
    9091  public    : SC_IN (Tcontrol_t        )   **  in_RETIRE_WRITE_RE          ;//[nb_inst_retire]
     92  public    : SC_IN (Tcontrol_t        )   **  in_RETIRE_RESTORE_RE_PHY_OLD;//[nb_inst_retire]
    9193  public    : SC_IN (Tspecial_address_t)   **  in_RETIRE_NUM_REG_RE_PHY_OLD;//[nb_inst_retire]
    9294  public    : SC_IN (Tspecial_address_t)   **  in_RETIRE_NUM_REG_RE_PHY_NEW;//[nb_inst_retire]
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/include/Types.h

    r81 r88  
    2323  class stat_list_entry_t
    2424  {
    25   private : bool     _is_free ; // set = is present in free list
    26   private : bool     _is_link ; // set = is present in rat
    27   private : bool     _is_valid; // set = an instruction have write in this register
    28   private : uint32_t _counter ; // number of register that must read this register
     25  public : bool     _is_free ; // set = is present in free list
     26  public : bool     _is_link ; // set = is present in rat
     27  public : bool     _is_valid; // set = an instruction have write in this register
     28  public : uint32_t _counter ; // number of register that must read this register
    2929
    3030  public :  stat_list_entry_t (void) {};
     
    5555    }
    5656
    57   public : void retire_write_old (void)
     57  public : void retire_write_old (bool restore_old)
    5858    {
    59       _is_link  = 0;
     59      if (not restore_old)
     60        {
     61          _is_link  = 0;
     62        }
     63      // else nothing
    6064    }
    6165
    62   public : void retire_write_new (void)
     66  public : void retire_write_new (bool restore_old)
    6367    {
     68      if (restore_old)
     69        {
     70          _is_link  = 0;
     71        }
     72
     73      // in all case
    6474      _is_valid = 1;
    6575    }
     
    7989      return ((_is_free  == 0) and
    8090              (_is_link  == 0) and
    81               (_is_valid == 1) and
     91//            (_is_valid == 1) and // if is_link <- 0, then retire_write_old or reset
    8292              (_counter  == 0));
    8393    }
    8494
    85   public : friend std::ostream& operator<< (std::ostream& output_stream,
     95  public : friend std::ostream& operator<< (std::ostream& output,
    8696                                            stat_list_entry_t & x)
    8797    {
    88       output_stream << x._is_free  << " "
    89                     << x._is_link  << " "
    90                     << x._is_valid << " "
    91                     << x._counter;
     98      output << x._is_free  << " "
     99             << x._is_link  << " "
     100             << x._is_valid << " "
     101             << x._counter;
    92102     
    93       return output_stream;
     103      return output;
    94104    }
    95105
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Parameters.cpp

    r81 r88  
    2929                          uint32_t   nb_reg_free           ,
    3030                          uint32_t   nb_bank               ,
    31                           uint32_t   size_counter          )
     31                          uint32_t   size_counter          ,
     32                          bool       is_toplevel)
    3233  {
    3334    log_printf(FUNC,Stat_List_unit,FUNCTION,"Begin");
     
    4344    _size_counter           = size_counter       ;
    4445
    45     _size_general_register  = log2(nb_general_register);
    46     _size_special_register  = log2(nb_special_register);
    47    
    4846    _max_reader             = 1<<size_counter;
    4947
     
    6866
    6967    test();
     68   
     69    if (is_toplevel)
     70      {
     71        _size_general_register  = log2(nb_general_register);
     72        _size_special_register  = log2(nb_special_register);
     73       
     74        copy ();
     75      }
     76
    7077    log_printf(FUNC,Stat_List_unit,FUNCTION,"End");
    7178  };
     
    8289#undef  FUNCTION
    8390#define FUNCTION "Stat_List_unit::~Parameters"
    84   Parameters::~Parameters ()
     91  Parameters::~Parameters (void)
    8592  {
    8693    log_printf(FUNC,Stat_List_unit,FUNCTION,"Begin");
    8794    log_printf(FUNC,Stat_List_unit,FUNCTION,"End");
    8895  };
     96
     97#undef  FUNCTION
     98#define FUNCTION "Stat_List_unit::copy"
     99  void Parameters::copy (void)
     100  {
     101    log_printf(FUNC,Stat_List_unit,FUNCTION,"Begin");
     102    log_printf(FUNC,Stat_List_unit,FUNCTION,"End");
     103  };
     104
    89105
    90106}; // end namespace stat_list_unit
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit.cpp

    r81 r88  
    1616namespace register_translation_unit {
    1717namespace stat_list_unit {
    18 
    1918
    2019#undef  FUNCTION
     
    3938    log_printf(FUNC,Stat_List_unit,FUNCTION,"Begin");
    4039
     40#if DEBUG_Stat_List_unit == true
     41    log_printf(INFO,Stat_List_unit,FUNCTION,_("<%s> Parameters"),_name.c_str());
     42
     43    std::cout << *param << std::endl;
     44#endif   
     45
    4146    log_printf(INFO,Stat_List_unit,FUNCTION,"Allocation");
    4247
     
    4853
    4954#ifdef STATISTICS
    50     if (_usage & USE_STATISTICS)
     55    if (usage_is_set(_usage,USE_STATISTICS))
    5156      {
    5257        log_printf(INFO,Stat_List_unit,FUNCTION,"Allocation of statistics");
     
    5762
    5863#ifdef VHDL
    59     if (_usage & USE_VHDL)
     64    if (usage_is_set(_usage,USE_VHDL))
    6065      {
    6166        // generate the vhdl
     
    6772
    6873#ifdef SYSTEMC
    69     if (_usage & USE_SYSTEMC)
     74    if (usage_is_set(_usage,USE_SYSTEMC))
    7075      {
    7176        // Constant
     
    9095        SC_METHOD (genMoore);
    9196        dont_initialize ();
    92         sensitive << (*(in_CLOCK)).neg();
     97        sensitive << (*(in_CLOCK)).neg(); // need internal register
    9398       
    9499# ifdef SYSTEMCASS_SPECIFIC
     
    100105        SC_METHOD (genMealy);
    101106        dont_initialize ();
    102         sensitive << (*(in_CLOCK)).neg();
     107        sensitive << (*(in_CLOCK)).neg(); // need internal register
    103108        for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
    104109          sensitive << (*(in_INSERT_READ_RA        [i]))
     
    135140
    136141#ifdef STATISTICS
    137     if (_usage & USE_STATISTICS)
     142    if (usage_is_set(_usage,USE_STATISTICS))
    138143      {
    139144        log_printf(INFO,Stat_List_unit,FUNCTION,"Generate Statistics file");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit_allocation.cpp

    r81 r88  
    8787       ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RC_PHY    ,"num_reg_rc_phy"    ,Tspecial_address_t,_param->_size_special_register);
    8888       ALLOC1_SIGNAL_IN ( in_RETIRE_WRITE_RD          ,"write_rd"          ,Tcontrol_t        ,1                             );
     89       ALLOC1_SIGNAL_IN ( in_RETIRE_RESTORE_RD_PHY_OLD,"restore_rd_phy_old",Tcontrol_t        ,1                             );
    8990       ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RD_PHY_OLD,"num_reg_rd_phy_old",Tgeneral_address_t,_param->_size_general_register);
    9091       ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RD_PHY_NEW,"num_reg_rd_phy_new",Tgeneral_address_t,_param->_size_general_register);
    9192       ALLOC1_SIGNAL_IN ( in_RETIRE_WRITE_RE          ,"write_re"          ,Tcontrol_t        ,1                             );
     93       ALLOC1_SIGNAL_IN ( in_RETIRE_RESTORE_RE_PHY_OLD,"restore_re_phy_old",Tcontrol_t        ,1                             );
    9294       ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RE_PHY_OLD,"num_reg_re_phy_old",Tspecial_address_t,_param->_size_special_register);
    9395       ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RE_PHY_NEW,"num_reg_re_phy_new",Tspecial_address_t,_param->_size_special_register);
     
    112114     }
    113115
    114     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
     116    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
     117    if (usage_is_set(_usage,USE_SYSTEMC))
     118      {
    115119     gpr_stat_list = new stat_list_entry_t * [_param->_nb_bank];
    116120     spr_stat_list = new stat_list_entry_t * [_param->_nb_bank];
     
    128132     internal_PUSH_SPR_VAL      = new Tcontrol_t [_param->_nb_reg_free];
    129133     internal_PUSH_SPR_NUM_BANK = new uint32_t   [_param->_nb_reg_free];
     134      }
     135
     136    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    130137
    131138#ifdef POSITION
    132     _component->generate_file();
     139    if (usage_is_set(_usage,USE_POSITION))
     140      _component->generate_file();
    133141#endif
    134142
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit_deallocation.cpp

    r81 r88  
    2424    log_printf(FUNC,Stat_List_unit,FUNCTION,"Begin");
    2525
    26     if (_usage & USE_SYSTEMC)
     26    if (usage_is_set(_usage,USE_SYSTEMC))
    2727      {
    2828        delete     in_CLOCK ;
     
    5151        delete []  in_RETIRE_NUM_REG_RC_PHY    ;
    5252        delete []  in_RETIRE_WRITE_RD          ;
     53        delete []  in_RETIRE_RESTORE_RD_PHY_OLD;
    5354        delete []  in_RETIRE_NUM_REG_RD_PHY_OLD;
    5455        delete []  in_RETIRE_NUM_REG_RD_PHY_NEW;
    5556        delete []  in_RETIRE_WRITE_RE          ;
     57        delete []  in_RETIRE_RESTORE_RE_PHY_OLD;
    5658        delete []  in_RETIRE_NUM_REG_RE_PHY_OLD;
    5759        delete []  in_RETIRE_NUM_REG_RE_PHY_NEW;
     
    6466        delete []  in_PUSH_SPR_ACK             ;
    6567        delete [] out_PUSH_SPR_NUM_REG         ;
     68   
     69        // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     70   
     71        delete [] gpr_stat_list;
     72        delete [] spr_stat_list;
     73       
     74        delete [] internal_INSERT_ACK       ;
     75        delete [] internal_RETIRE_ACK       ;
     76        delete [] internal_PUSH_GPR_VAL     ;
     77        delete [] internal_PUSH_GPR_NUM_BANK;
     78        delete [] internal_PUSH_SPR_VAL     ;
     79        delete [] internal_PUSH_SPR_NUM_BANK;
    6680      }
     81
     82
    6783    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    68     delete [] gpr_stat_list;
    69     delete [] spr_stat_list;
    70 
    71     delete [] internal_INSERT_ACK       ;
    72     delete [] internal_RETIRE_ACK       ;
    73     delete [] internal_PUSH_GPR_VAL     ;
    74     delete [] internal_PUSH_GPR_NUM_BANK;
    75     delete [] internal_PUSH_SPR_VAL     ;
    76     delete [] internal_PUSH_SPR_NUM_BANK;
    7784
    7885    delete _component;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit_end_cycle.cpp

    r81 r88  
    2626
    2727#ifdef STATISTICS
    28     _stat->end_cycle();
     28    if (usage_is_set(_usage,USE_STATISTICS))
     29      _stat->end_cycle();
    2930#endif   
    3031
     
    3233    // Evaluation before read the ouput signal
    3334//  sc_start(0);
    34     _interfaces->testbench();
     35    if (usage_is_set(_usage,USE_VHDL_TESTBENCH))
     36      _interfaces->testbench();
    3537#endif
    3638
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit_genMealy.cpp

    r81 r88  
    2323  void Stat_List_unit::genMealy (void)
    2424  {
    25     log_printf(FUNC,Stat_List_unit,FUNCTION,"Begin");
     25    log_begin(Stat_List_unit,FUNCTION);
     26    log_function(Stat_List_unit,FUNCTION,_name.c_str());
    2627
    2728    for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
     
    5758      }
    5859   
    59     log_printf(FUNC,Stat_List_unit,FUNCTION,"End");
     60    log_end(Stat_List_unit,FUNCTION);
    6061  };
    6162
  • 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

    r81 r88  
    2323  void Stat_List_unit::genMoore (void)
    2424  {
    25     log_printf(FUNC,Stat_List_unit,FUNCTION,"Begin");
     25    log_begin(Stat_List_unit,FUNCTION);
     26    log_function(Stat_List_unit,FUNCTION,_name.c_str());
    2627
    2728    uint32_t gpr_ptr = internal_GPR_PTR_FREE;
     
    6970      }
    7071   
    71     log_printf(FUNC,Stat_List_unit,FUNCTION,"End");
     72    log_end(Stat_List_unit,FUNCTION);
    7273  };
    7374
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit_transition.cpp

    r81 r88  
    2323  void Stat_List_unit::transition (void)
    2424  {
    25     log_printf(FUNC,Stat_List_unit,FUNCTION,"Begin");
     25    log_begin(Stat_List_unit,FUNCTION);
     26    log_function(Stat_List_unit,FUNCTION,_name.c_str());
    2627
    2728    if (PORT_READ(in_NRESET) == 0)
     
    121122              if (PORT_READ(in_RETIRE_WRITE_RD [i]))
    122123                {
     124                  Tcontrol_t restore_old = PORT_READ(in_RETIRE_RESTORE_RD_PHY_OLD [i]);
    123125                  {
    124126                    Tgeneral_address_t num_reg = PORT_READ(in_RETIRE_NUM_REG_RD_PHY_OLD [i]);
    125127                    uint32_t bank = num_reg >> _param->_shift_gpr;
    126128                    uint32_t reg  = num_reg  & _param->_mask_gpr ;
    127                     gpr_stat_list [bank][reg].retire_write_old();
     129                    gpr_stat_list [bank][reg].retire_write_old(restore_old);
    128130                  }
    129131                  {
     
    131133                    uint32_t bank = num_reg >> _param->_shift_gpr;
    132134                    uint32_t reg  = num_reg  & _param->_mask_gpr ;
    133                     gpr_stat_list [bank][reg].retire_write_new();
     135                    gpr_stat_list [bank][reg].retire_write_new(restore_old);
    134136                  }
    135137                }
     
    137139              if (PORT_READ(in_RETIRE_WRITE_RE [i]))
    138140                {
     141                  Tcontrol_t restore_old = PORT_READ(in_RETIRE_RESTORE_RE_PHY_OLD [i]);
    139142                  {
    140143                    Tgeneral_address_t num_reg = PORT_READ(in_RETIRE_NUM_REG_RE_PHY_OLD [i]);
    141144                    uint32_t bank = num_reg >> _param->_shift_spr;
    142145                    uint32_t reg  = num_reg  & _param->_mask_spr ;
    143                     spr_stat_list [bank][reg].retire_write_old();
     146                    spr_stat_list [bank][reg].retire_write_old(restore_old);
    144147                  }
    145148                  {
     
    147150                    uint32_t bank = num_reg >> _param->_shift_spr;
    148151                    uint32_t reg  = num_reg  & _param->_mask_spr ;
    149                     spr_stat_list [bank][reg].retire_write_new();
     152                    spr_stat_list [bank][reg].retire_write_new(restore_old);
    150153                  }
    151154                }
     
    171174        internal_SPR_PTR_FREE = ((internal_SPR_PTR_FREE==0)?_param->_nb_special_register_by_bank:internal_SPR_PTR_FREE)-1;
    172175      }
    173    
    174 //     log_printf(TRACE,Stat_List_unit,FUNCTION,"Print gpr_stat_list :");
    175 //     for (uint32_t i=0; i<_param->_nb_bank; i++)
    176 //       {
    177 //      log_printf(TRACE,Stat_List_unit,FUNCTION," * Bank : %d",i);
    178 //      for (uint32_t j=0; j<_param->_nb_general_register_by_bank; j++)
    179 //        {
    180 //          std::ostringstream str;
    181 //          str << gpr_stat_list [i][j];
    182 //          log_printf(TRACE,Stat_List_unit,FUNCTION,"   [%d] %s",j,str.str().c_str());
    183 
    184 //        }
    185 //       }
    186 //     log_printf(TRACE,Stat_List_unit,FUNCTION,"Print spr_stat_list :");
    187 //     for (uint32_t i=0; i<_param->_nb_bank; i++)
    188 //       {
    189 //      log_printf(TRACE,Stat_List_unit,FUNCTION," * Bank : %d",i);
    190 //      for (uint32_t j=0; j<_param->_nb_special_register_by_bank; j++)
    191 //        {
    192 //          std::ostringstream str;
    193 //          str << spr_stat_list [i][j];
    194 //          log_printf(TRACE,Stat_List_unit,FUNCTION,"   [%d] %s",j,str.str().c_str());
    195 //        }
    196 //       }
     176
     177
     178#if (DEBUG >= DEBUG_TRACE)
     179    log_printf(TRACE,Stat_List_unit,FUNCTION,"  * Dump Stat List");
     180    for (uint32_t i=0; i<_param->_nb_bank; i++)
     181      for (uint32_t j=0; j<_param->_nb_general_register_by_bank; j++)
     182        log_printf(TRACE,Stat_List_unit,FUNCTION,"    * GPR[%.4d][%.5d] (%.5d) - free %.1d, link %.1d, valid %.1d, counter %.4d",
     183                   i,
     184                   j,
     185                   (i<<_param->_shift_gpr)|j,
     186                   gpr_stat_list[i][j]._is_free,
     187                   gpr_stat_list[i][j]._is_link,
     188                   gpr_stat_list[i][j]._is_valid,
     189                   gpr_stat_list[i][j]._counter);
     190    for (uint32_t i=0; i<_param->_nb_bank; i++)
     191      for (uint32_t j=0; j<_param->_nb_special_register_by_bank; j++)
     192        log_printf(TRACE,Stat_List_unit,FUNCTION,"    * SPR[%.4d][%.5d] (%.5d) - free %.1d, link %.1d, valid %.1d, counter %.4d",
     193                   i,
     194                   j,
     195                   (i<<_param->_shift_spr)|j,
     196                   spr_stat_list[i][j]._is_free,
     197                   spr_stat_list[i][j]._is_link,
     198                   spr_stat_list[i][j]._is_valid,
     199                   spr_stat_list[i][j]._counter);
     200#endif
    197201
    198202#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
     
    200204#endif
    201205
    202     log_printf(FUNC,Stat_List_unit,FUNCTION,"End");
     206    log_end(Stat_List_unit,FUNCTION);
    203207  };
    204208
Note: See TracChangeset for help on using the changeset viewer.