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/Free_List_unit/src
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit.cpp

    r81 r88  
    3939    log_printf(FUNC,Free_List_unit,FUNCTION,"Begin");
    4040
     41#if DEBUG_Free_List_unit == true
     42    log_printf(INFO,Free_List_unit,FUNCTION,_("<%s> Parameters"),_name.c_str());
     43
     44    std::cout << *param << std::endl;
     45#endif   
     46
    4147    log_printf(INFO,Free_List_unit,FUNCTION,"Allocation");
    4248
     
    4854
    4955#ifdef STATISTICS
    50     if (_usage & USE_STATISTICS)
     56    if (usage_is_set(_usage,USE_STATISTICS))
    5157      {
    5258        log_printf(INFO,Free_List_unit,FUNCTION,"Allocation of statistics");
     
    5763
    5864#ifdef VHDL
    59     if (_usage & USE_VHDL)
     65    if (usage_is_set(_usage,USE_VHDL))
    6066      {
    6167        // generate the vhdl
     
    6773
    6874#ifdef SYSTEMC
    69     if (_usage & USE_SYSTEMC)
     75    if (usage_is_set(_usage,USE_SYSTEMC))
    7076      {
    7177        log_printf(INFO,Free_List_unit,FUNCTION,"Method - transition");
     
    8389        SC_METHOD (genMealy_pop);
    8490        dont_initialize ();
    85         sensitive << (*(in_CLOCK)).neg();
     91        sensitive << (*(in_CLOCK)).neg(); // need internal register
    8692        for (uint32_t i=0; i<_param->_nb_pop; i++)
    8793          sensitive << (*(in_POP_GPR_VAL[i]))
     
    104110        SC_METHOD (genMealy_push_gpr);
    105111        dont_initialize ();
    106         sensitive << (*(in_CLOCK)).neg();
     112        sensitive << (*(in_CLOCK)).neg(); // need internal register
    107113        for (uint32_t i=0; i<_param->_nb_push; i++)
    108114          sensitive << (*(in_PUSH_GPR_VAL    [i]))
     
    123129        SC_METHOD (genMealy_push_spr);
    124130        dont_initialize ();
    125         sensitive << (*(in_CLOCK)).neg();
     131        sensitive << (*(in_CLOCK)).neg(); // need internal register
    126132        for (uint32_t i=0; i<_param->_nb_push; i++)
    127133          sensitive << (*(in_PUSH_SPR_VAL    [i]))
     
    150156
    151157#ifdef STATISTICS
    152     if (_usage & USE_STATISTICS)
     158    if (usage_is_set(_usage,USE_STATISTICS))
    153159      {
    154160        log_printf(INFO,Free_List_unit,FUNCTION,"Generate Statistics file");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_allocation.cpp

    r81 r88  
    8686     }
    8787
    88     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
     88     if (usage_is_set(_usage,USE_SYSTEMC))
     89       {
    8990     _gpr_list = new std::list<uint32_t> [_param->_nb_bank];
    9091     _spr_list = new std::list<uint32_t> [_param->_nb_bank];
     
    9899     internal_PUSH_GPR_BANK = new uint32_t   [_param->_nb_push];
    99100     internal_PUSH_SPR_BANK = new uint32_t   [_param->_nb_push];
     101       }
     102    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    100103
    101104#ifdef POSITION
    102     _component->generate_file();
     105     if (usage_is_set(_usage,USE_POSITION))
     106       _component->generate_file();
    103107#endif
    104108
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_deallocation.cpp

    r81 r88  
    2424    log_printf(FUNC,Free_List_unit,FUNCTION,"Begin");
    2525
    26     if (_usage & USE_SYSTEMC)
     26    if (usage_is_set(_usage,USE_SYSTEMC))
    2727      {
    2828        delete    in_CLOCK ;
     
    4343        delete [] out_PUSH_SPR_ACK    ;
    4444        delete []  in_PUSH_SPR_NUM_REG;
     45
     46        delete [] _gpr_list;
     47        delete [] _spr_list;
     48       
     49        delete [] internal_POP_ACK     ;
     50        delete [] internal_POP_GPR_BANK;
     51        delete [] internal_POP_SPR_BANK;
     52       
     53        delete [] internal_PUSH_GPR_ACK ;
     54        delete [] internal_PUSH_SPR_ACK ;
     55        delete [] internal_PUSH_GPR_BANK;
     56        delete [] internal_PUSH_SPR_BANK;
    4557      }
     58
    4659    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    47      delete [] _gpr_list;
    48      delete [] _spr_list;
    49 
    50      delete [] internal_POP_ACK     ;
    51      delete [] internal_POP_GPR_BANK;
    52      delete [] internal_POP_SPR_BANK;
    53 
    54      delete [] internal_PUSH_GPR_ACK ;
    55      delete [] internal_PUSH_SPR_ACK ;
    56      delete [] internal_PUSH_GPR_BANK;
    57      delete [] internal_PUSH_SPR_BANK;
    5860
    5961     delete _component;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_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/Free_List_unit/src/Free_List_unit_genMealy_pop.cpp

    r81 r88  
    2323  void Free_List_unit::genMealy_pop (void)
    2424  {
    25     log_printf(FUNC,Free_List_unit,FUNCTION,"Begin");
     25    log_begin(Free_List_unit,FUNCTION);
     26    log_function(Free_List_unit,FUNCTION,_name.c_str());
    2627
    2728    for (uint32_t i=0; i<_param->_nb_pop; i++)
     
    7778   
    7879
    79     log_printf(FUNC,Free_List_unit,FUNCTION,"End");
     80    log_end(Free_List_unit,FUNCTION);
    8081  };
    8182
  • 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

    r81 r88  
    2323  void Free_List_unit::genMealy_push_gpr (void)
    2424  {
    25     log_printf(FUNC,Free_List_unit,FUNCTION,"Begin");
     25    log_begin(Free_List_unit,FUNCTION);
     26    log_function(Free_List_unit,FUNCTION,_name.c_str());
    2627
    2728    bool bank_use [_param->_nb_bank];
     
    5152      }
    5253   
    53     log_printf(FUNC,Free_List_unit,FUNCTION,"End");
     54    log_end(Free_List_unit,FUNCTION);
    5455  };
    5556
  • 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_spr.cpp

    r81 r88  
    2323  void Free_List_unit::genMealy_push_spr (void)
    2424  {
    25     log_printf(FUNC,Free_List_unit,FUNCTION,"Begin");
     25    log_begin(Free_List_unit,FUNCTION);
     26    log_function(Free_List_unit,FUNCTION,_name.c_str());
    2627
    2728    bool bank_use [_param->_nb_bank];
     
    5152      }
    5253   
    53     log_printf(FUNC,Free_List_unit,FUNCTION,"End");
     54    log_end(Free_List_unit,FUNCTION);
    5455  };
    5556
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_transition.cpp

    r81 r88  
    2323  void Free_List_unit::transition (void)
    2424  {
    25     log_printf(FUNC,Free_List_unit,FUNCTION,"Begin");
     25    log_begin(Free_List_unit,FUNCTION);
     26    log_function(Free_List_unit,FUNCTION,_name.c_str());
    2627
    2728    if (PORT_READ(in_NRESET) == 0)
     
    3940        // =====[ POP ]======================================
    4041        // ==================================================
    41 //      log_printf(TRACE,Free_List_unit,FUNCTION,"Test transaction POP");
    4242        for (uint32_t i=0; i<_param->_nb_pop; i++)
    4343          if (PORT_READ(in_POP_VAL[i]) and internal_POP_ACK [i])
    4444            {
     45              log_printf(TRACE,Free_List_unit,FUNCTION,"  * POP [%d]",i);
     46
    4547              if (PORT_READ(in_POP_GPR_VAL [i]))
    4648                _gpr_list [internal_POP_GPR_BANK[i]].pop_front();
     
    5355        // =====[ PUSH_GPR ]=================================
    5456        // ==================================================
    55 //      log_printf(TRACE,Free_List_unit,FUNCTION,"Test transaction PUSH_GPR");
    5657        for (uint32_t i=0; i<_param->_nb_push; i++)
    5758          if (PORT_READ(in_PUSH_GPR_VAL[i]) and internal_PUSH_GPR_ACK [i])
    58             _gpr_list [internal_PUSH_GPR_BANK[i]].push_back(//_param->_mask_gpr &
    59                                                             PORT_READ(in_PUSH_GPR_NUM_REG [i]));
     59            {
     60              log_printf(TRACE,Free_List_unit,FUNCTION,"  * PUSH_GPR[%d]",i);
    6061
     62              _gpr_list [internal_PUSH_GPR_BANK[i]].push_back(//_param->_mask_gpr &
     63                                                              PORT_READ(in_PUSH_GPR_NUM_REG [i]));
     64            }
    6165        // ==================================================
    6266        // =====[ PUSH_SPR ]=================================
    6367        // ==================================================
    64 //      log_printf(TRACE,Free_List_unit,FUNCTION,"Test transaction PUSH_SPR");
    6568        for (uint32_t i=0; i<_param->_nb_push; i++)
    6669          if (PORT_READ(in_PUSH_SPR_VAL[i]) and internal_PUSH_SPR_ACK [i])
    67             _spr_list [internal_PUSH_SPR_BANK[i]].push_back(//_param->_mask_spr &
    68                                                             PORT_READ(in_PUSH_SPR_NUM_REG [i]));
     70            {
     71              log_printf(TRACE,Free_List_unit,FUNCTION,"  * PUSH_SPR[%d]",i);
     72
     73              _spr_list [internal_PUSH_SPR_BANK[i]].push_back(//_param->_mask_spr &
     74                                                              PORT_READ(in_PUSH_SPR_NUM_REG [i]));
     75            }
    6976
    7077        if (_param->_priority == PRIORITY_ROUND_ROBIN)
    7178          internal_BANK_PRIORITY = (internal_BANK_PRIORITY+1)%_param->_nb_bank_by_pop;
     79
     80#if (DEBUG >= DEBUG_TRACE) and (DEBUG_Free_List_unit == true)
     81        log_printf(TRACE,Free_List_unit,FUNCTION,"  * Dump Free List");
     82
     83        for (uint32_t i=0; i<_param->_nb_bank; ++i)
     84          {
     85            uint32_t j=0;
     86            for (std::list<Tgeneral_address_t>::iterator it=_gpr_list->begin();
     87                 it!=_gpr_list->end();
     88                 ++it)
     89              {
     90                log_printf(TRACE,Free_List_unit,FUNCTION,"    * GPR_LIST[%.5d][%.5d] : %.5d",i,j,*it);
     91                ++j;
     92              }
     93          }
     94        for (uint32_t i=0; i<_param->_nb_bank; ++i)
     95          {
     96            uint32_t j=0;
     97            for (std::list<Tspecial_address_t>::iterator it=_spr_list->begin();
     98                 it!=_spr_list->end();
     99                 ++it)
     100              {
     101                log_printf(TRACE,Free_List_unit,FUNCTION,"    * SPR_LIST[%.5d][%.5d] : %.5d",i,j,*it);
     102                ++j;
     103              }
     104          }
     105
     106#endif
    72107      }
    73108
     
    76111#endif
    77112
    78     log_printf(FUNC,Free_List_unit,FUNCTION,"End");
     113    log_end(Free_List_unit,FUNCTION);
    79114  };
    80115
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Parameters.cpp

    r81 r88  
    2727                          uint32_t    nb_pop             ,
    2828                          uint32_t    nb_push            ,
    29                           Tpriority_t priority           )
     29                          Tpriority_t priority           ,
     30                          bool        is_toplevel        )
    3031  {
    3132    log_printf(FUNC,Free_List_unit,FUNCTION,"Begin");
     
    4142    test();
    4243
    43     _size_general_register = log2(nb_general_register);
    44     _size_special_register = log2(nb_special_register);
     44    uint32_t size_general_register = log2(nb_general_register);
     45    uint32_t size_special_register = log2(nb_special_register);
    4546
    4647    _nb_bank_by_pop        = _nb_bank / _nb_pop;
     
    4950
    5051    _bank_gpr_nb_slot      = gpr_nb_slot/nb_bank;
    51     _bank_gpr_size_slot    = _size_general_register-log2(nb_bank);
     52    _bank_gpr_size_slot    = size_general_register-log2(nb_bank);
    5253
    5354    _mask_gpr              = gen_mask<Tgeneral_address_t> (_bank_gpr_size_slot);
     
    5657
    5758    _bank_spr_nb_slot      = spr_nb_slot/nb_bank;
    58     _bank_spr_size_slot    = _size_special_register-log2(nb_bank);
     59    _bank_spr_size_slot    = size_special_register-log2(nb_bank);
    5960
    6061    _mask_spr              = gen_mask<Tspecial_address_t> (_bank_spr_size_slot);
     62
     63    if (is_toplevel)
     64      {
     65        _size_general_register = size_general_register;
     66        _size_special_register = size_special_register;
     67
     68        copy();
     69      }
    6170
    6271    log_printf(FUNC,Free_List_unit,FUNCTION,"End");
     
    7483#undef  FUNCTION
    7584#define FUNCTION "Free_List_unit::~Parameters"
    76   Parameters::~Parameters ()
     85  Parameters::~Parameters (void)
     86  {
     87    log_printf(FUNC,Free_List_unit,FUNCTION,"Begin");
     88    log_printf(FUNC,Free_List_unit,FUNCTION,"End");
     89  };
     90
     91#undef  FUNCTION
     92#define FUNCTION "Free_List_unit::copy"
     93  void Parameters::copy (void)
    7794  {
    7895    log_printf(FUNC,Free_List_unit,FUNCTION,"Begin");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Parameters_msg_error.cpp

    r82 r88  
    2929
    3030    if (_nb_general_register <= _nb_thread*_nb_general_register_logic)
    31       test.error(_("The number of physical general register is insufficient.\n"));
     31      test.error(toString(_("The number of physical general register is insufficient. (Minimum : %d)\n"),_nb_thread*_nb_general_register_logic+1));
    3232    if (_nb_special_register <= _nb_thread*_nb_special_register_logic)
    33       test.error(_("The number of physical special register is insufficient.\n"));
     33      test.error(toString(_("The number of physical special register is insufficient. (Minimum : %d)\n"),_nb_thread*_nb_special_register_logic+1));
    3434    if (not is_multiple (_nb_bank, _nb_pop))
    3535      test.error(_("Number of pop must be a multiple of number of bank.\n"));
    3636    if (not is_power2 (_nb_bank))
    3737      test.error(_("Number of bank must be a power of 2.\n"));
     38    if (_nb_general_register < _nb_bank)
     39      test.error(_("The number of physical general register must be >= nb_bank.\n"));
     40    if (_nb_special_register < _nb_bank)
     41      test.error(_("The number of physical special register must be >= nb_bank.\n"));
    3842
    3943    if ((_priority != PRIORITY_STATIC) and
Note: See TracChangeset for help on using the changeset viewer.