Changeset 102 for trunk/modules


Ignore:
Timestamp:
Oct 4, 2010, 5:22:53 PM (14 years ago)
Author:
choichil
Message:

Synthetic initiator that compiles

Location:
trunk/modules/vci_synthetic_initator/caba/sources
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/modules/vci_synthetic_initator/caba/sources/include/vci_synthetic_initiator.h

    r98 r102  
    4747      : public soclib::caba::BaseModule
    4848    {
    49       //typedef sc_dt::sc_uint<40> addr_t;
     49      typedef sc_dt::sc_uint<40> addr_t;
    5050      typedef typename vci_param::fast_addr_t vci_addr_t;
    5151      typedef uint32_t data_t;
     
    5656
    5757      // Type of the addr_t and access of the fields
    58       typedef union{
    59         PACKED_BITFIELD(
    60           vci_addr_t srcid:vci_param::S,
    61           vci_addr_t null:(8*sizeof(vci_addr_t)-(2*vci_param::S)),
    62         ) normal_address;
    63         PACKED_BITFIELD(
    64           vci_addr_t xmin:vci_param::S,
    65           vci_addr_t xmax:vci_param::S,
    66           vci_addr_t ymin:vci_param::S,
    67           vci_addr_t ymax:vci_param::S,
    68           vci_addr_t null_:(8*sizeof(vci_addr_t)-(4*vci_param::S)),
    69           vci_addr_t bc:2,
    70         ) broadcast_address;
    71       } addr_t;
     58      //typedef union{
     59      //  PACKED_BITFIELD(
     60      //    vci_addr_t srcid:vci_param::S,
     61      //    vci_addr_t null:(8*sizeof(vci_addr_t)-(2*vci_param::S)),
     62      //  ) normal_address;
     63      //  PACKED_BITFIELD(
     64      //    vci_addr_t xmin:vci_param::S,
     65      //    vci_addr_t xmax:vci_param::S,
     66      //    vci_addr_t ymin:vci_param::S,
     67      //    vci_addr_t ymax:vci_param::S,
     68      //    vci_addr_t null_:(8*sizeof(vci_addr_t)-(4*vci_param::S)),
     69      //    vci_addr_t bc:2,
     70      //  ) broadcast_address;
     71      //} addr_t;
    7272
    7373
     
    9999      VciSyntheticInitiator(
    100100                sc_module_name name,
    101                 const  soclib::common::MappingTable &mt,
    102                 const  soclib::common::IntTab       &vci_index,
    103                 size_t length,    // Packet length (flit numbers)
    104                 float  rho,       // Packets ratio on the network
    105                 size_t depth,     // Fifo depth
    106                 size_t xmesh,   
    107                 size_t ymesh,
    108                 size_t bc_period = 0, // Broadcast period, if no broadcast => 0
    109                 size_t xmin = 0,
    110                 size_t xmax = 0,
    111                 size_t ymin = 0,
    112                 size_t ymax = 0,
     101                const soclib::common::MappingTable &mt,
     102                const soclib::common::IntTab       &vci_index,
     103                const uint32_t length,    // Packet length (flit numbers)
     104                const float  rho,       // Packets ratio on the network
     105                const uint32_t depth,     // Fifo depth
     106                const uint32_t xmesh,   
     107                const uint32_t ymesh,
     108                const uint32_t bc_period = 0, // Broadcast period, if no broadcast => 0
     109                const uint32_t xmin = 0,
     110                const uint32_t xmax = 0,
     111                const uint32_t ymin = 0,
     112                const uint32_t ymax = 0
    113113                );                                 
    114114
     
    119119      void genMoore();
    120120
    121       void destAdress(size_t X_local, size_t Y_local, size_t &X_dest, size_t &Y_dest);
     121      size_t destAdress();
    122122
    123123    private:
     
    125125      // Component attributes
    126126      const size_t                        m_length;             // Number of words to write
    127       const size_t                        m_rho;                // Rate of packets in the network wanted
     127      const float                         m_rho;                // Rate of packets in the network wanted
    128128      const size_t                        m_depth;              // Fifo depth
    129129      const size_t                        m_xmesh;     
     
    141141      uint64_t                            m_start_latency1;         // Start time of sending packet wanted
    142142      uint64_t                            m_start_latency2;         // Start time of sending packet
    143       addr_t                              m_address_to_send;        // Address to send the write command
    144143      float                               m_rhos;                   // Effective Rho during the simulation
    145144      size_t                              m_bc_nrsp;                // Expected number of responses for a broadcast command
     
    154153      sc_signal<bool>          r_broadcast_req;
    155154
     155      sc_signal<addr_t>        r_address_to_send;        // Address to send the write command
     156
    156157    }; // end class VciSyntheticInitiator
    157158 
  • trunk/modules/vci_synthetic_initator/caba/sources/src/vci_synthetic_initiator.cpp

    r98 r102  
    4545  tmpl(/**/)::VciSyntheticInitiator(
    4646      sc_module_name name,
    47       const  soclib::common::MappingTable &mt,
    48       const  soclib::common::IntTab       &vci_index,
    49       size_t length,    // Packet length (flit numbers)
    50       float  rho,       // Packets ratio on the network
    51       size_t depth,     // Fifo depth
    52       size_t xmesh,     
    53       size_t ymesh,
    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
     47      const soclib::common::MappingTable &mt,
     48      const soclib::common::IntTab       &vci_index,
     49      const uint32_t length,    // Packet length (flit numbers)
     50      const float  rho,       // Packets ratio on the network
     51      const uint32_t depth,     // Fifo depth
     52      const uint32_t xmesh,     
     53      const uint32_t ymesh,
     54      const uint32_t bc_period, // Broadcast period, if no broadcast => 0
     55      const uint32_t xmin,
     56      const uint32_t xmax,
     57      const uint32_t ymin,
     58      const uint32_t ymax
    5959      )
    6060
     
    7171    m_rho(rho),
    7272    m_depth(depth),
    73     m_x(x),
    74     m_y(y),
    7573    m_xmesh(xmesh),
    7674    m_ymesh(ymesh),
     
    8179    m_ymax(ymax),
    8280    m_date_fifo("m_date_fifo", depth),
    83     r_vci_fsm("r_vci_fsm"),
     81    r_vci_fsm("r_vci_fsm")
    8482    {
    8583
     
    160158            } else {
    161159              r_vci_fsm = VCI_SINGLE_SEND ;
    162               destAdress();
     160              r_address_to_send = destAdress();
    163161              m_count = 0;
    164162            }
     
    196194      case VCI_BC_SEND:
    197195        {
    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;
     196          r_address_to_send = (((((((((m_xmin << 5) & m_xmax ) << 5 ) & m_ymin ) << 5 ) & m_ymax ) << 5 ) << 17 ) & 0x3) | 0 ;
     197          //m_address_to_send.broadcast_address.xmin = m_xmin;
     198          //m_address_to_send.broadcast_address.xmax = m_xmax;
     199          //m_address_to_send.broadcast_address.ymin = m_ymin;
     200          //m_address_to_send.broadcast_address.ymax = m_ymax;
     201          //m_address_to_send.broadcast_address.bc   = 0x3;
    203202          m_bc_nrsp = (m_xmax - m_xmin) * (m_ymax - m_ymin);
    204203          r_vci_fsm = VCI_BC_SEND;
     
    223222
    224223/////////////////// Filling fifo
    225     if( (rhos < m_rho) && (rand()/RAND_MAX) ){
     224    if( (m_rhos < m_rho) && (rand()/RAND_MAX) ){
    226225      if (m_date_fifo.wok()){
    227226        date_fifo_put = true ;
    228227      }
    229       if (!r_broadcast_req.read() && (m_cpt_cycles % bc_period)){
     228      if (!r_broadcast_req.read() && (m_cpt_cycles % m_bc_period)){
    230229        r_broadcast_req = true;
    231230      }
     
    288287        {
    289288          p_vci.cmdval  = true;                 
    290           p_vci.address = (typename vci_param::addr_t)(m_address_to_send+(m_count*4));
     289          p_vci.address = (vci_addr_t)(r_address_to_send.read() + (m_count*4));
    291290          p_vci.plen    = m_length*4;                                         
    292291          p_vci.wdata   = 0;                                       
     
    316315        {
    317316          p_vci.cmdval  = true;                 
    318           p_vci.address = (typename vci_param::addr_t) m_address_to_send;
     317          p_vci.address = (vci_addr_t) r_address_to_send.read();
    319318          p_vci.plen    = 4;                                         
    320319          p_vci.wdata   = 0;                                       
Note: See TracChangeset for help on using the changeset viewer.