source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Branch_Target_Buffer_Register/SelfTest/include/test_BTB.h @ 88

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

Almost complete design
with Test and test platform

  • Property svn:keywords set to Id
File size: 2.7 KB
Line 
1#ifndef test_BTB
2#define test_BTB
3
4  class entry_t
5  {
6  public : Tcontrol_t          _val             ;
7  public : Tcontext_t          _context         ;
8  public : Tcontrol_t          _address_dest_val;
9  public : Tgeneral_data_t     _address_src     ;
10  public : Tgeneral_data_t     _address_dest    ;
11  public : Tbranch_condition_t _condition       ;
12  public : Tcontrol_t          _last_take       ;
13  public : Tcounter_t          _accurate        ;
14
15  public : bool hit (morpheo::behavioural::core::multi_front_end::front_end::prediction_unit::branch_target_buffer::branch_target_buffer_register::Parameters * _param,
16                     Tgeneral_data_t addr_test,
17                     Tcontext_t      context)
18    {
19      Tgeneral_data_t addr_src_offset  = (_address_src  >> _param->_shift_offset)&_param->_mask_offset;
20      Tgeneral_data_t addr_src_index   = (_address_src  >> _param->_shift_bank  )&_param->_mask_bank  ;
21      Tgeneral_data_t addr_src_tag     = (_address_src  >> _param->_shift_tag   );
22     
23      Tgeneral_data_t addr_test_offset = (addr_test >> _param->_shift_offset)&_param->_mask_offset;
24      Tgeneral_data_t addr_test_index  = (addr_test >> _param->_shift_bank  )&_param->_mask_bank  ;
25      Tgeneral_data_t addr_test_tag    = (addr_test >> _param->_shift_tag   );
26
27      bool is_hit = ( (_val             == 1               ) and
28                      (_context         == context         ) and
29                      (addr_test_tag    == addr_src_tag    ) and
30                      (addr_test_index  == addr_src_index  ) and
31                      (addr_test_offset <= addr_src_offset ));
32
33      LABEL("address_src  (tag, index, offset) : %.8x %.8x %.8x",addr_src_tag, addr_src_index, addr_src_offset);
34      LABEL("address_test (tag, index, offset) : %.8x %.8x %.8x - hit : %d",addr_test_tag, addr_test_index, addr_test_offset, is_hit);
35      return is_hit;
36    }
37   
38  public : void print (void)
39    {
40      LABEL("%d - %.2d %.8x %.1d %.8x %.3d %.1d %.4d", 
41            _val             ,
42            _context         ,
43            _address_src     ,
44            _address_dest_val,
45            _address_dest    ,
46            _condition       ,
47            _last_take       ,
48            _accurate        );
49    }
50   
51  };
52
53Tgeneral_data_t gen_addr (morpheo::behavioural::core::multi_front_end::front_end::prediction_unit::branch_target_buffer::branch_target_buffer_register::Parameters * _param,
54                          Tgeneral_data_t index)
55{
56  Tgeneral_data_t addr_tag     = (rand()%(_param->_associativity)) << _param->_shift_tag   ;
57  Tgeneral_data_t addr_index   = (index &_param->_mask_bank        ) << _param->_shift_bank  ;
58  Tgeneral_data_t addr_offset  = (rand()&_param->_mask_offset      ) << _param->_shift_offset;
59
60  LABEL("gen_addr     (tag, index, offset) : %.8x %.8x %.8x",addr_tag, addr_index, addr_offset);
61
62  return (addr_tag    |
63          addr_index  |
64          addr_offset );
65}
66
67#endif
Note: See TracBrowser for help on using the repository browser.