Ignore:
Timestamp:
Oct 1, 2007, 1:36:39 PM (17 years ago)
Author:
rosiere
Message:

Vhdl : RegisterFile_Multi_Banked - "full crossbar"
Correction d'un bug pour le "partial crossbar"

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/src/test.cpp

    r57 r58  
    9898   * Simulation - Begin
    9999   ********************************************************/
    100   const bool     simulate_read = false;
    101100  const uint32_t nb_request    = _param->_nb_word;
    102101  // random init
     
    177176     
    178177
    179       if (simulate_read == true)
    180         {
    181           cout << "<" << name << "> 2) Read the RegisterFile (no write)" << endl;
    182          
    183           nb_val = 0;
    184           nb_ack = 0;
    185           Tdata_t read_address [_param->_nb_port_read];
    186 
    187           while (nb_ack < nb_request)
    188             {
    189               cout << "cycle : " << static_cast<uint32_t> (sc_simulation_time()) << endl;
     178      {
     179        cout << "<" << name << "> 2) Read the RegisterFile (no write)" << endl;
     180       
     181        nb_val = 0;
     182        nb_ack = 0;
     183        Tdata_t read_address [_param->_nb_port_read];
     184       
     185        while (nb_ack < nb_request)
     186          {
     187            cout << "cycle : " << static_cast<uint32_t> (sc_simulation_time()) << endl;
     188           
     189            for (uint32_t num_port=0; num_port < _param->_nb_port_read; num_port ++)
     190              {
     191                if ((nb_val < nb_request) and
     192                    (READ_VAL [num_port].read() == 0))
     193                  {
     194                    read_address [num_port] = tab_address[nb_val];
     195                    READ_VAL     [num_port].write(1);
     196                    READ_ADDRESS [num_port].write(read_address [num_port]);
     197                   
     198                    nb_val ++;
     199                   
     200                    if (nb_val >= nb_request)
     201                      break;
     202                  }
     203              }
    190204             
    191               for (uint32_t num_port=0; num_port < _param->_nb_port_read; num_port ++)
    192                 {
    193                   if ((nb_val < nb_request) and
    194                       (READ_VAL [num_port].read() == 0))
    195                     {
    196                       read_address [num_port] = tab_address[nb_val];
    197                       READ_VAL     [num_port].write(1);
    198                       READ_ADDRESS [num_port].write(read_address [num_port]);
    199                      
    200                       nb_val ++;
    201                      
    202                       if (nb_val >= nb_request)
    203                         break;
    204                     }
    205                 }
    206              
    207               SC_START(1);
    208              
    209               // reset write_val port
    210               for (uint32_t num_port=0; num_port < _param->_nb_port_read; num_port ++)
    211                 {
    212                   if ((READ_ACK [num_port].read() == 1) and
    213                       (READ_VAL [num_port].read() == 1))
    214                     {
    215                       READ_VAL  [num_port] .write(0);
    216                      
    217                       cout << "(" << num_port << ") [" << read_address [num_port] << "] => " << READ_DATA [num_port].read() << endl;
    218                      
    219                       TEST(Tdata_t,READ_DATA [num_port].read(), tab_data[read_address [num_port]]);
    220                       nb_ack ++;
    221                     }
    222                 }
    223              
    224               SC_START(0);
    225             }
    226         }
     205            SC_START(1);
     206           
     207            // reset write_val port
     208            for (uint32_t num_port=0; num_port < _param->_nb_port_read; num_port ++)
     209              {
     210                if ((READ_ACK [num_port].read() == 1) and
     211                    (READ_VAL [num_port].read() == 1))
     212                  {
     213                    READ_VAL  [num_port] .write(0);
     214                   
     215                    cout << "(" << num_port << ") [" << read_address [num_port] << "] => " << READ_DATA [num_port].read() << endl;
     216                   
     217                    TEST(Tdata_t,READ_DATA [num_port].read(), tab_data[read_address [num_port]]);
     218                    nb_ack ++;
     219                  }
     220              }
     221           
     222            SC_START(0);
     223          }
     224      }
    227225    }
    228226 
Note: See TracChangeset for help on using the changeset viewer.