Changeset 401 for trunk


Ignore:
Timestamp:
Jun 3, 2013, 2:56:03 PM (11 years ago)
Author:
alain
Message:

Bug fix : VCI BE when DATA = 64 bits

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/modules/vci_block_device_tsar/caba/source/src/vci_block_device_tsar.cpp

    r400 r401  
    577577
    578578    switch (r_initiator_fsm) {
    579     case M_WRITE_CMD:           // It is actually a single word VCI read command
     579    case M_WRITE_CMD:           // It is actually a single flit VCI read command
    580580        p_vci_initiator.rspack  = false;
    581581        p_vci_initiator.cmdval  = true;
    582582        p_vci_initiator.address = (sc_dt::sc_uint<vci_param::N>)r_buf_address.read();
    583583        p_vci_initiator.cmd     = vci_param::CMD_READ;
    584         p_vci_initiator.pktid   = TYPE_READ_DATA_UNC; // or _MISS ?
     584        p_vci_initiator.pktid   = TYPE_READ_DATA_UNC;
    585585        p_vci_initiator.wdata   = 0;
    586         p_vci_initiator.be      = (uint32_t)0xF;
     586        p_vci_initiator.be      = 0;
    587587        p_vci_initiator.plen    = (sc_dt::sc_uint<vci_param::K>)(r_burst_nwords.read()<<2);
    588588        p_vci_initiator.eop     = true;
     
    594594        p_vci_initiator.cmd     = vci_param::CMD_WRITE;
    595595        p_vci_initiator.pktid   = TYPE_WRITE;
    596         p_vci_initiator.be      = 0xF;
    597596        p_vci_initiator.plen    = (sc_dt::sc_uint<vci_param::K>)(r_burst_nwords.read()<<2);
    598597        p_vci_initiator.eop     = ( r_words_count.read() == (r_burst_nwords.read() - 1) );
    599         if (vci_param::B == 4)  p_vci_initiator.wdata = r_local_buffer[r_index.read()];
    600         else                    p_vci_initiator.wdata = (uint64_t)r_local_buffer[r_index.read()] +
    601                                    ((uint64_t)r_local_buffer[r_index.read()+1])<<32;
     598        if ( (vci_param::B == 8) and ((r_burst_nwords.read() - r_words_count.read()) > 1) ) 
     599        {
     600            p_vci_initiator.wdata = (uint64_t)r_local_buffer[r_index.read()] +
     601                                    ((uint64_t)r_local_buffer[r_index.read()+1])<<32;
     602            p_vci_initiator.be    = 0xFF;
     603        }
     604        else
     605        {
     606            p_vci_initiator.wdata = r_local_buffer[r_index.read()];
     607            p_vci_initiator.be    = 0xF;
     608        }
    602609        break;
    603610    case M_READ_RSP:
Note: See TracChangeset for help on using the changeset viewer.