[10] | 1 | /* |
---|
| 2 | * $Id$ |
---|
| 3 | * |
---|
| 4 | * [ Description ] |
---|
| 5 | * |
---|
| 6 | */ |
---|
| 7 | |
---|
[15] | 8 | #include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/Parameters.h" |
---|
[10] | 9 | |
---|
| 10 | namespace morpheo { |
---|
| 11 | namespace behavioural { |
---|
| 12 | namespace generic { |
---|
[15] | 13 | namespace registerfile{ |
---|
[10] | 14 | namespace registerfile_multi_banked { |
---|
| 15 | namespace registerfile_multi_banked_glue { |
---|
| 16 | |
---|
[15] | 17 | Parameters::Parameters (uint32_t nb_port_read , |
---|
| 18 | uint32_t nb_port_write , |
---|
| 19 | uint32_t size_address , |
---|
| 20 | uint32_t size_word , |
---|
| 21 | uint32_t nb_bank , |
---|
| 22 | uint32_t nb_port_read_by_bank , |
---|
| 23 | uint32_t nb_port_write_by_bank, |
---|
| 24 | Tcrossbar_t crossbar ): |
---|
[10] | 25 | _nb_port_read (nb_port_read ), |
---|
| 26 | _nb_port_write (nb_port_write ), |
---|
| 27 | _size_address (size_address ), |
---|
| 28 | _size_word (size_word ), |
---|
| 29 | _nb_bank (nb_bank ), |
---|
[15] | 30 | _nb_port_read_by_bank (nb_port_read_by_bank ), |
---|
| 31 | _nb_port_write_by_bank (nb_port_write_by_bank), |
---|
| 32 | _crossbar (crossbar ), |
---|
[23] | 33 | _shift_address (_size_address-static_cast<uint32_t>(ceil(log2(_nb_bank)))) |
---|
[10] | 34 | { |
---|
| 35 | log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"Parameters","Begin"); |
---|
[15] | 36 | |
---|
| 37 | if (_crossbar == PARTIAL_CROSSBAR) |
---|
| 38 | { |
---|
| 39 | // All port_src is connected with one port_dest on each bank |
---|
| 40 | |
---|
[23] | 41 | _link_port_read_in_to_out = new uint32_t [_nb_port_read ]; |
---|
| 42 | _link_port_read_in_to_select = new uint32_t [_nb_port_read ]; |
---|
| 43 | _link_port_write_in_to_out = new uint32_t [_nb_port_write]; |
---|
| 44 | _link_port_write_in_to_select = new uint32_t [_nb_port_write]; |
---|
| 45 | uint32_t _nb_port_select_by_bank_read_port [_nb_port_read_by_bank ]; |
---|
| 46 | uint32_t _nb_port_select_by_bank_write_port [_nb_port_write_by_bank]; |
---|
| 47 | |
---|
| 48 | // init |
---|
[15] | 49 | for (uint32_t i=0; i<_nb_port_read_by_bank ;i++) |
---|
[23] | 50 | _nb_port_select_by_bank_read_port [i] = 0; |
---|
| 51 | |
---|
[15] | 52 | for (uint32_t i=0; i<_nb_port_read ;i++) |
---|
[23] | 53 | { |
---|
| 54 | uint32_t x = i%_nb_port_read_by_bank; |
---|
| 55 | _link_port_read_in_to_out [i] = x; |
---|
| 56 | _link_port_read_in_to_select [i] = _nb_port_select_by_bank_read_port [x]; |
---|
| 57 | _nb_port_select_by_bank_read_port [x] ++; |
---|
| 58 | } |
---|
[15] | 59 | |
---|
[23] | 60 | // init |
---|
[15] | 61 | for (uint32_t i=0; i<_nb_port_write_by_bank ;i++) |
---|
| 62 | _nb_port_select_by_bank_write_port [i] = 0; |
---|
[23] | 63 | |
---|
[15] | 64 | for (uint32_t i=0; i<_nb_port_write ;i++) |
---|
[23] | 65 | { |
---|
| 66 | uint32_t x = i%_nb_port_write_by_bank; |
---|
| 67 | _link_port_write_in_to_out [i] = x; |
---|
| 68 | _link_port_write_in_to_select [i] = _nb_port_select_by_bank_write_port [x]; |
---|
| 69 | _nb_port_select_by_bank_write_port [x] ++; |
---|
| 70 | } |
---|
[15] | 71 | } |
---|
[23] | 72 | // else : don't allocate |
---|
| 73 | |
---|
[10] | 74 | test(); |
---|
| 75 | log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"Parameters","End"); |
---|
| 76 | }; |
---|
| 77 | |
---|
| 78 | Parameters::Parameters (Parameters & param): |
---|
[15] | 79 | _nb_port_read (param._nb_port_read ), |
---|
| 80 | _nb_port_write (param._nb_port_write ), |
---|
| 81 | _size_address (param._size_address ), |
---|
| 82 | _size_word (param._size_word ), |
---|
| 83 | _nb_bank (param._nb_bank ), |
---|
| 84 | _nb_port_read_by_bank (param._nb_port_read_by_bank ), |
---|
| 85 | _nb_port_write_by_bank (param._nb_port_write_by_bank), |
---|
| 86 | _crossbar (param._crossbar ), |
---|
| 87 | _shift_address (param._shift_address ) |
---|
[10] | 88 | { |
---|
[15] | 89 | log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"Parameters (copy)","Begin"); |
---|
[10] | 90 | test(); |
---|
[15] | 91 | log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"Parameters (copy)","End"); |
---|
[10] | 92 | }; |
---|
| 93 | |
---|
| 94 | Parameters::~Parameters () |
---|
| 95 | { |
---|
| 96 | log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"~Parameters","Begin"); |
---|
| 97 | log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"~Parameters","End"); |
---|
| 98 | }; |
---|
| 99 | |
---|
| 100 | }; // end namespace registerfile_multi_banked_glue |
---|
| 101 | }; // end namespace registerfile_multi_banked |
---|
[15] | 102 | }; // end namespace registerfile |
---|
[10] | 103 | }; // end namespace generic |
---|
| 104 | }; // end namespace behavioural |
---|
| 105 | }; // end namespace morpheo |
---|