Ignore:
Timestamp:
Sep 29, 2010, 2:32:06 PM (14 years ago)
Author:
choichil
Message:

Correcting file names of vci_synthetic_initiator

File:
1 moved

Legend:

Unmodified
Added
Removed
  • trunk/modules/vci_synthetic_initator/caba/sources/src/vci_synthetic_initiator.cpp

    r96 r98  
    4545  tmpl(/**/)::VciSyntheticInitiator(
    4646      sc_module_name name,
     47      const  soclib::common::MappingTable &mt,
     48      const  soclib::common::IntTab       &vci_index,
    4749      size_t length,    // Packet length (flit numbers)
    4850      float  rho,       // Packets ratio on the network
    4951      size_t depth,     // Fifo depth
    50       size_t x,         //
    51       size_t y,         //
    5252      size_t xmesh,     
    5353      size_t ymesh,
    54       size_t bc_period, // Broadcast period, if no broadcast => 0
    55       size_t xmin,
    56       size_t xmax,
    57       size_t ymin,
    58       size_t ymax
     54      size_t bc_period = 0, // Broadcast period, if no broadcast => 0
     55      size_t xmin = 0,
     56      size_t xmax = 0,
     57      size_t ymin = 0,
     58      size_t ymax = 0
    5959      )
    6060
     
    6565    p_vci("vci_ini"),
    6666
    67     m_srcid_ini( mtc.indexForId(vci_ini_index) ),
     67    m_srcid( mt.indexForId(vci_index) ),
     68    m_coord(vci_index[1]),
    6869    //  FIFOs
    6970    m_length(length),
     
    8081    m_ymax(ymax),
    8182    m_date_fifo("m_date_fifo", depth),
    82     r_tgt_cmd_fsm("r_tgt_cmd_fsm"),
     83    r_vci_fsm("r_vci_fsm"),
    8384    {
    8485
     
    102103
    103104  ///////////////////////////////////
    104   tmpl(void)::destAdress(size_t X_local, size_t Y_local, size_t &X_dest, size_t &Y_dest)
     105  tmpl(size_t)::destAdress()
    105106  ///////////////////////////////////
    106107  {
    107     X_dest = (size_t) ((rand())%m_xmesh);
    108     Y_dest = (size_t) ((rand())%m_ymesh);
     108    size_t dest;
     109    do{
     110      dest = (size_t) (rand() % (m_xmesh * m_ymesh));
     111    } while(dest == m_srcid);
     112    return dest ;
    109113  }
     114
     115
     116  ///////////////////////////////////
     117//  tmpl(void)::destAdress(/*size_t X_local, size_t Y_local,*/ size_t &X_dest, size_t &Y_dest)
     118  ///////////////////////////////////
     119//  {
     120//    size_t x_dest_calc, y_dest_calc;
     121//    do{
     122//      x_dest_calc = (rand()%m_xmesh);
     123//      y_dest_calc = (rand()%m_ymesh);
     124//    } while((x_dest_calc = m_x) && (y_dest_calc == m_y));
     125//  }
    110126
    111127  //////////////////////////////////
     
    113129    //////////////////////////////////
    114130  {
    115     //using soclib::common::uint32_log2;
    116131    //  RESET         
    117132    if ( ! p_resetn.read() ) {
    118       //srand(time(NULL));
    119       //     Initializing FSMs
    120       r_tgt_cmd_fsm     = TGT_CMD_IDLE;
    121 
    122       // initializing FIFOs and communication Buffers
    123 
     133      // Initializing seed for random numbers generation
     134      srand(time(NULL));
     135
     136      // Initializing FSMs
     137      r_vci_fsm = VCI_IDLE;
     138
     139      // Initializing FIFOs
    124140      m_date_fifo.init();
    125141
     
    139155      case VCI_IDLE:
    140156        {
     157          if (m_date_fifo.rok()){
     158            if (r_broadcast_req.read()){
     159              r_vci_fsm = VCI_BC_SEND ;
     160            } else {
     161              r_vci_fsm = VCI_SINGLE_SEND ;
     162              destAdress();
     163              m_count = 0;
     164            }
     165          }
    141166          break;
    142167        }
     
    144169      case VCI_SINGLE_SEND:
    145170        {
     171          if (p_vci.cmdack.read()){
     172            m_count++;
     173            if (m_count == m_length-1) {
     174              m_start_latency1 = m_date_fifo.read();
     175              m_start_latency2 = m_cpt_cycles;
     176              r_vci_fsm = VCI_SINGLE_RECEIVE ;
     177            } else {
     178              r_vci_fsm = VCI_SINGLE_SEND ;
     179            }
     180          }
    146181          break;
    147182        }
     
    149184      case VCI_SINGLE_RECEIVE:
    150185        {
    151           if (p_vci.cmdack.read()) {
    152             // LATENCY
     186          if (p_vci.rspval.read()) {
     187            m_start_latency1 = m_date_fifo.read();
     188            m_start_latency2 = m_cpt_cycles;
     189            m_npackets++;
     190            date_fifo_get = true;
    153191            r_vci_fsm = VCI_IDLE ;
    154192          }
     
    158196      case VCI_BC_SEND:
    159197        {
     198          m_address_to_send.broadcast_address.xmin = m_xmin;
     199          m_address_to_send.broadcast_address.xmax = m_xmax;
     200          m_address_to_send.broadcast_address.ymin = m_ymin;
     201          m_address_to_send.broadcast_address.ymax = m_ymax;
     202          m_address_to_send.broadcast_address.bc   = 0x3;
     203          m_bc_nrsp = (m_xmax - m_xmin) * (m_ymax - m_ymin);
     204          r_vci_fsm = VCI_BC_SEND;
    160205          break;
    161206        }
     
    163208      case VCI_BC_RECEIVE:
    164209        {
    165           r_broadcast_req = false;
     210          if (p_vci.rspval.read()){
     211            if (m_bc_nrsp == 0) {
     212              r_broadcast_req = false;
     213              r_vci_fsm = VCI_IDLE ;
     214            } else {
     215              m_bc_nrsp--;
     216              r_vci_fsm = VCI_BC_RECEIVE ;
     217            }
     218          }
    166219          break;
    167220        }
     
    170223
    171224/////////////////// Filling fifo
    172     if(){
     225    if( (rhos < m_rho) && (rand()/RAND_MAX) ){
    173226      if (m_date_fifo.wok()){
    174227        date_fifo_put = true ;
     
    190243      }
    191244    }
    192 
     245   
     246    m_rhos = (float) ((m_npackets * m_length) / m_cpt_cycles) ;
    193247
    194248    m_cpt_cycles++;
     
    203257  {
    204258    ////////////////////////////////////////////////////////////
    205     // Command signals on the p_vci_ixr port
     259    // Command signals on the p_vci port
    206260    ////////////////////////////////////////////////////////////
    207      p_vci.cmd        = vci_param::CMD_READ;   
     261     p_vci.cmd        = vci_param::CMD_WRITE;   
    208262     p_vci.be         = 0xF;                             
    209263     p_vci.pktid      = 0;     
    210      p_vci.srcid      = m_srcid_ixr;   
     264     p_vci.srcid      = m_srcid;   
    211265     p_vci.cons       = false;       
    212266     p_vci.wrap       = false;       
     
    227281          p_vci.trdid   = 0;                 
    228282          p_vci.eop     = false;                                   
     283          p_vci.rspack  = false;
    229284          break;
    230285        }
     
    232287      case VCI_SINGLE_SEND:
    233288        {
    234           p_vci.cmdval = true ;
     289          p_vci.cmdval  = true;                 
     290          p_vci.address = (typename vci_param::addr_t)(m_address_to_send+(m_count*4));
     291          p_vci.plen    = m_length*4;                                         
     292          p_vci.wdata   = 0;                                       
     293          p_vci.trdid   = 0;                 
     294          if (m_count == m_length - 1 ) {
     295            p_vci.eop     = true;                                   
     296          } else {
     297            p_vci.eop     = false;                                   
     298          }
     299          p_vci.rspack  = false;
    235300          break;
    236301        }
     
    238303      case VCI_SINGLE_RECEIVE:
    239304        {
    240           break;
     305          p_vci.cmdval  = false;                 
     306          p_vci.address = 0;
     307          p_vci.plen    = 0;                                         
     308          p_vci.wdata   = 0;                                       
     309          p_vci.trdid   = 0;                 
     310          p_vci.eop     = false;                                   
     311          p_vci.rspack  = true;
     312          break;
    241313        }
    242314        ///////////////////
    243315      case VCI_BC_SEND:
    244316        {
     317          p_vci.cmdval  = true;                 
     318          p_vci.address = (typename vci_param::addr_t) m_address_to_send;
     319          p_vci.plen    = 4;                                         
     320          p_vci.wdata   = 0;                                       
     321          p_vci.trdid   = 0;                 
     322          p_vci.eop     = true;                                   
     323          p_vci.rspack  = false;
    245324          break;
    246325        }
     
    248327      case VCI_BC_RECEIVE:
    249328        {
     329          p_vci.cmdval  = false;                 
     330          p_vci.address = 0;
     331          p_vci.plen    = 0;                                         
     332          p_vci.wdata   = 0;                                       
     333          p_vci.trdid   = 0;                 
     334          p_vci.eop     = false;                                   
     335          p_vci.rspack  = true;
    250336          break;
    251337        }
Note: See TracChangeset for help on using the changeset viewer.