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

Almost complete design
with Test and test platform

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Address_management/SelfTest/src/test.cpp

    r84 r88  
    2424#endif
    2525
     26  Tusage_t _usage = USE_ALL;
     27
     28//   _usage = usage_unset(_usage,USE_SYSTEMC              );
     29//   _usage = usage_unset(_usage,USE_VHDL                 );
     30//   _usage = usage_unset(_usage,USE_VHDL_TESTBENCH       );
     31//   _usage = usage_unset(_usage,USE_VHDL_TESTBENCH_ASSERT);
     32//   _usage = usage_unset(_usage,USE_POSITION             );
     33//   _usage = usage_unset(_usage,USE_STATISTICS           );
     34//   _usage = usage_unset(_usage,USE_INFORMATION          );
     35
    2636  Address_management * _Address_management = new Address_management
    2737    (name.c_str(),
     
    3040#endif
    3141     _param,
    32      USE_ALL);
     42     _usage);
    3343 
    3444#ifdef SYSTEMC
     
    6272  ALLOC_SC_SIGNAL (out_EVENT_ACK                          ,"out_EVENT_ACK                          ",Tcontrol_t        );
    6373  ALLOC_SC_SIGNAL ( in_EVENT_ADDRESS                      ," in_EVENT_ADDRESS                      ",Tgeneral_address_t);
     74  ALLOC_SC_SIGNAL ( in_EVENT_ADDRESS_NEXT                 ," in_EVENT_ADDRESS_NEXT                 ",Tgeneral_address_t);
     75  ALLOC_SC_SIGNAL ( in_EVENT_ADDRESS_NEXT_VAL             ," in_EVENT_ADDRESS_NEXT_VAL             ",Tcontrol_t        );
     76  ALLOC_SC_SIGNAL ( in_EVENT_IS_DS_TAKE                   ," in_EVENT_IS_DS_TAKE                   ",Tcontrol_t        );
    6477 
    6578  /********************************************************
     
    7689  INSTANCE_SC_SIGNAL (_Address_management,out_ADDRESS_INSTRUCTION_ADDRESS        );
    7790  INSTANCE1_SC_SIGNAL(_Address_management,out_ADDRESS_INSTRUCTION_ENABLE         ,_param->_nb_instruction);
    78   if (_param->_have_port_instruction_ptr)
     91  if (_param->_have_port_inst_ifetch_ptr)
    7992  INSTANCE_SC_SIGNAL (_Address_management,out_ADDRESS_INST_IFETCH_PTR            );
    8093  INSTANCE_SC_SIGNAL (_Address_management,out_ADDRESS_BRANCH_STATE               );
    81   if (_param->_have_port_branch_update_prediction_id)
     94  if (_param->_have_port_depth)
    8295  INSTANCE_SC_SIGNAL (_Address_management,out_ADDRESS_BRANCH_UPDATE_PREDICTION_ID);
    8396  INSTANCE_SC_SIGNAL (_Address_management,out_PREDICT_VAL                        );
     
    89102  INSTANCE_SC_SIGNAL (_Address_management, in_PREDICT_PC_NEXT_IS_DS_TAKE         );
    90103  INSTANCE1_SC_SIGNAL(_Address_management, in_PREDICT_INSTRUCTION_ENABLE         ,_param->_nb_instruction);
    91   if (_param->_have_port_instruction_ptr)
     104  if (_param->_have_port_inst_ifetch_ptr)
    92105  INSTANCE_SC_SIGNAL (_Address_management, in_PREDICT_INST_IFETCH_PTR            );
    93106  INSTANCE_SC_SIGNAL (_Address_management, in_PREDICT_BRANCH_STATE               );
    94   if (_param->_have_port_branch_update_prediction_id)
     107  if (_param->_have_port_depth)
    95108  INSTANCE_SC_SIGNAL (_Address_management, in_PREDICT_BRANCH_UPDATE_PREDICTION_ID);
    96109  INSTANCE_SC_SIGNAL (_Address_management, in_EVENT_VAL                          );
    97110  INSTANCE_SC_SIGNAL (_Address_management,out_EVENT_ACK                          );
    98111  INSTANCE_SC_SIGNAL (_Address_management, in_EVENT_ADDRESS                      );
     112  INSTANCE_SC_SIGNAL (_Address_management, in_EVENT_ADDRESS_NEXT                 );
     113  INSTANCE_SC_SIGNAL (_Address_management, in_EVENT_ADDRESS_NEXT_VAL             );
     114  INSTANCE_SC_SIGNAL (_Address_management, in_EVENT_IS_DS_TAKE                   );
    99115
    100116  msg(_("<%s> : Start Simulation ............\n"),name.c_str());
     
    143159  Tcontrol_t      nn_val  = false;
    144160
    145   Tgeneral_data_t c_addr  = 0x100;
    146   Tgeneral_data_t n_addr  = 0x100;
    147   Tgeneral_data_t nn_addr = 0x100;
     161  Tgeneral_data_t c_addr  = 0x100>>2;
     162  Tgeneral_data_t n_addr  = 0x100>>2;
     163  Tgeneral_data_t nn_addr = 0x100>>2;
    148164
    149165  Tcontrol_t      c_enable [_param->_nb_instruction];
     
    159175
    160176  LABEL("Send Reset");
    161   do
    162     {
    163       in_EVENT_VAL    ->write(1);
    164       in_EVENT_ADDRESS->write(n_addr);
    165       SC_START(1); 
    166     } while (out_EVENT_ACK->read() == false);
    167   in_EVENT_VAL    ->write(0);
     177//   do
     178//     {
     179//       in_EVENT_VAL             ->write(1);
     180//       in_EVENT_ADDRESS         ->write(n_addr);
     181//       in_EVENT_ADDRESS_NEXT    ->write(nn_addr);
     182//       in_EVENT_ADDRESS_NEXT_VAL->write(0);
     183//       in_EVENT_IS_DS_TAKE      ->write(0);
     184//       SC_START(1); 
     185//     } while (out_EVENT_ACK->read() == false);
     186//   in_EVENT_VAL    ->write(0);
    168187
    169188  n_val = 1;
     
    206225      }
    207226
    208       in_EVENT_VAL    ->write((rand()%100)<percent_transaction_event  );
    209       in_EVENT_ADDRESS->write(0x100);
     227      in_EVENT_VAL             ->write((rand()%100)<percent_transaction_event  );
     228      in_EVENT_ADDRESS         ->write(0x77);
     229      in_EVENT_ADDRESS_NEXT    ->write(0x171);
     230      Tcontrol_t next_val = rand()%2;
     231      in_EVENT_ADDRESS_NEXT_VAL->write(next_val);
     232      in_EVENT_IS_DS_TAKE      ->write(next_val);
    210233
    211234      //-------------------------------------------------
     
    238261          for (uint32_t i=0; i<_param->_nb_instruction; i++)
    239262          TEST(Tcontrol_t        ,out_ADDRESS_INSTRUCTION_ENABLE     [i] ->read(),c_enable[i]);
    240           if (_param->_have_port_instruction_ptr)
     263          if (_param->_have_port_inst_ifetch_ptr)
    241264          TEST(Tinst_ifetch_ptr_t,out_ADDRESS_INST_IFETCH_PTR            ->read(),0);
    242265          TEST(Tbranch_state_t   ,out_ADDRESS_BRANCH_STATE               ->read(),0);
    243           if (_param->_have_port_branch_update_prediction_id)
     266          if (_param->_have_port_depth)
    244267          TEST(Tprediction_ptr_t ,out_ADDRESS_BRANCH_UPDATE_PREDICTION_ID->read(),0);
    245268
     
    272295          LABEL("EVENT      : Transaction accepted");
    273296
    274           c_val           = false;
    275           n_val           = true;
    276           nn_val          = false;
    277 
    278           n_addr         = in_EVENT_ADDRESS->read();
    279           n_is_ds_take   = 0;
     297          c_val        = false;
     298          n_val        = true;
     299          n_addr       = in_EVENT_ADDRESS         ->read();
     300          n_is_ds_take = in_EVENT_IS_DS_TAKE      ->read();
     301          nn_val       = in_EVENT_ADDRESS_NEXT_VAL->read();
     302          nn_addr      = in_EVENT_ADDRESS_NEXT    ->read();
     303          nn_is_ds_take= false;
     304//           nn_val = false;
     305//           n_is_ds_take = 0;
    280306
    281307          n_enable [0] = 1;
    282           for (uint32_t i=1; i<_param->_nb_instruction; i++)
    283             n_enable [i] = 0;
     308          for (uint32_t i=1; i<_param->_nb_instruction; i++)
     309            n_enable [i] = 0;
    284310        }
    285311
     
    347373  delete    out_EVENT_ACK                          ;
    348374  delete     in_EVENT_ADDRESS                      ;
     375  delete     in_EVENT_ADDRESS_NEXT                 ;
     376  delete     in_EVENT_ADDRESS_NEXT_VAL             ;
     377  delete     in_EVENT_IS_DS_TAKE                   ;
    349378#endif
    350379
Note: See TracChangeset for help on using the changeset viewer.