Ignore:
Timestamp:
Dec 31, 2008, 11:18:08 AM (15 years ago)
Author:
rosiere
Message:

1) Fix bug (read unit, RAT -> write in R0, SPR desallocation ...)
2) Change VHDL Execute_queue -> use Generic/Queue?
3) Complete document on VHDL generation
4) Add soc test

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/src/test.cpp

    r88 r98  
    370370      for (uint32_t j=0; j<_param->_nb_ooo_engine; j++)
    371371        {
    372           for (uint32_t i=0; i<_param->_nb_general_register; i++)
     372          _gpr_val [0][j] = 0;
     373          _gpr     [0][j] = 0;
     374          _spr_val [0][j] = 0;
     375          _spr     [0][j] = 0;
     376
     377          for (uint32_t i=1; i<_param->_nb_general_register; i++)
    373378            {
    374379              _gpr_val      [i][j] = ((rand()%100) < percent_registerfile_valid);
    375380              _gpr          [i][j] = rand()%(1<<_param->_size_general_data);
    376381            }
    377           for (uint32_t i=0; i<_param->_nb_special_register; i++)
     382          for (uint32_t i=1; i<_param->_nb_special_register; i++)
    378383            {
    379384              _spr_val      [i][j] = ((rand()%100) < percent_registerfile_valid);
     
    381386            }
    382387        }
     388
     389
    383390      // End initialisation .......
    384391     
     
    466473              Tcontext_t         ooo_engine = rand()% _param->_nb_ooo_engine;
    467474              Tgeneral_address_t num_reg = rand()% _param->_nb_general_register;
    468               Tgeneral_data_t    data    = rand()%(1<<_param->_size_general_data);
     475              Tgeneral_data_t    data    = (num_reg!=0)?(rand()%(1<<_param->_size_general_data)):0;
    469476             
    470477              GPR_WRITE_VAL           [i]->write(val);       
     
    534541//            TEST(Tcontrol_t        ,READ_QUEUE_OUT_READ_RA    ->read(),_read_ra      [rob_id]);
    535542              TEST(Tgeneral_address_t,READ_QUEUE_OUT_NUM_REG_RA ->read(),_num_reg_ra   [rob_id]);
    536               TEST(Tcontrol_t        ,READ_QUEUE_OUT_DATA_RA_VAL->read(),not _read_ra [rob_id] or _gpr_val [_num_reg_ra[rob_id]][ctxt]);
     543              TEST(Tcontrol_t        ,READ_QUEUE_OUT_DATA_RA_VAL->read(),not _read_ra [rob_id] or _gpr_val [_num_reg_ra[rob_id]][ctxt] or (_num_reg_ra[rob_id] == 0));
    537544              if (_read_ra [rob_id] and
    538545                  READ_QUEUE_OUT_DATA_RA_VAL->read())
     
    540547//            TEST(Tcontrol_t        ,READ_QUEUE_OUT_READ_RB    ->read(),_read_rb      [rob_id]);
    541548              TEST(Tgeneral_address_t,READ_QUEUE_OUT_NUM_REG_RB ->read(),_num_reg_rb   [rob_id]);
    542               TEST(Tcontrol_t        ,READ_QUEUE_OUT_DATA_RB_VAL->read(),not _read_rb [rob_id] or _gpr_val [_num_reg_rb[rob_id]][ctxt]);
     549              TEST(Tcontrol_t        ,READ_QUEUE_OUT_DATA_RB_VAL->read(),not _read_rb [rob_id] or _gpr_val [_num_reg_rb[rob_id]][ctxt] or (_num_reg_rb[rob_id] == 0));
    543550              if (_read_rb [rob_id] and
    544551                  READ_QUEUE_OUT_DATA_RB_VAL->read())
Note: See TracChangeset for help on using the changeset viewer.