source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_partial_crossbar_genMealy_write.cpp @ 81

Last change on this file since 81 was 81, checked in by rosiere, 16 years ago
  • Finish Environment (and test)
  • Continue predictor_unit
  • Add external tools
  • svn keyword "Id" set
  • Property svn:keywords set to Id
File size: 2.6 KB
Line 
1#ifdef SYSTEMC
2//#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
3/*
4 * $Id: RegisterFile_Multi_Banked_partial_crossbar_genMealy_write.cpp 81 2008-04-15 18:40:01Z rosiere $
5 *
6 * [ Description ]
7 *
8 */
9
10#include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/RegisterFile_Multi_Banked.h"
11
12namespace morpheo                    {
13namespace behavioural {
14namespace generic {
15namespace registerfile {
16namespace registerfile_multi_banked {
17
18
19  void RegisterFile_Multi_Banked::partial_crossbar_genMealy_write (void)
20  {
21    log_printf(FUNC,RegisterFile_Multi_Banked,"partial_crossbar_genMealy_write","Begin");
22
23    bool write_port_use [_param->_nb_bank][_param->_nb_port_write_by_bank];
24    for (uint32_t i=0; i<_param->_nb_bank; i++)
25      for (uint32_t j=0; j<_param->_nb_port_write_by_bank; j++)
26        write_port_use [i][j]=false;
27
28    for (uint32_t i=0; i<_param->_nb_port_write; i++)
29      {
30        bool val = PORT_READ(in_WRITE_VAL    [i]);
31        bool ack = false;
32
33        log_printf(TRACE,RegisterFile_Multi_Banked,"partial_crossbar_genMealy_write","write[%d] : %d",i,val);
34
35        if (val == true)
36          {
37            val                = false;
38            // Compute the adress of the bank
39            Taddress_t address;
40            if (_param->_have_port_address == true)
41              address = PORT_READ(in_WRITE_ADDRESS[i]);
42            else
43              address = 0;
44            log_printf(TRACE,RegisterFile_Multi_Banked,"partial_crossbar_genMealy_write"," * address   : %d",address);
45            Taddress_t bank    = address_bank    (address);
46            log_printf(TRACE,RegisterFile_Multi_Banked,"partial_crossbar_genMealy_write"," * bank      : %d",bank   );
47
48//          // Search loop
49//          for (uint32_t j=0; j<_param->_nb_port_write_by_bank; j++)
50//            {
51            uint32_t j = _param->_link_port_write_to_bank_write [i];
52
53                // find a unbusy port on this bank
54                if (write_port_use[bank][j] == false)
55                  {
56                    // find !!!
57                    write_port_use[bank][j] = true;
58                    val                     = true; 
59                    ack                     = true;
60                   
61                    Taddress_t num_reg = address_num_reg (address);
62
63                    log_printf(TRACE,RegisterFile_Multi_Banked,"partial_crossbar_genMealy_write"," * num_reg   : %d",num_reg);
64                    log_printf(TRACE,RegisterFile_Multi_Banked,"partial_crossbar_genMealy_write"," * bank_port : %d",j      );
65                                   
66                    internal_WRITE_NUM_REG [i] = num_reg;
67
68//                  break;
69                  }
70//            }
71
72            internal_WRITE_BANK [i] = bank;
73          }
74
75        internal_WRITE_VAL [i] = val;
76
77        // Write output
78        PORT_WRITE(out_WRITE_ACK [i], ack);
79      }
80
81    log_printf(FUNC,RegisterFile_Multi_Banked,"partial_crossbar_genMealy_write","End");
82  };
83
84}; // end namespace registerfile_multi_banked
85}; // end namespace registerfile
86}; // end namespace generic
87
88}; // end namespace behavioural
89}; // end namespace morpheo             
90#endif
91//#endif
Note: See TracBrowser for help on using the repository browser.