Changeset 523 for trunk/modules


Ignore:
Timestamp:
Sep 14, 2013, 1:06:56 PM (11 years ago)
Author:
cfuguet
Message:

Bugfix in GenericLLSCGlobal table and vci_mem_cache:

  • Two bugs have been fixed in this commit:

The first one is in the Generic LLSC global table. The method SW
does not shift the NLINE during the concatenation with the word
index.

The second one is during the call of this function (SW) in the WRITE
FSM. The max word index passed as argument was incorrectly always over

incremented by one.

To solve this problem, the SW function has been changed. It does not

accept anymore the nline, min and max arguments but two complete
addresses (address min and address max). This way, it is avoided the
add of a new NWORDS argument to the table which would be needed to
shift the NLINE.

File:
1 edited

Legend:

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

    r512 r523  
    27572757                        {
    27582758                            // We enter here if it is a SW command or an already tested SC command
    2759 
    2760                             m_llsc_table.sw( m_nline[(addr_t)r_write_address.read()],
    2761                                     r_write_word_index.read(),
    2762                                     r_write_word_index.read() + r_write_word_count.read());
     2759                            addr_t min = r_write_address.read();
     2760                            addr_t max = r_write_address.read() + r_write_word_count.read() - 1;
     2761
     2762                            m_llsc_table.sw(min, max);
    27632763
    27642764                            r_write_fsm = WRITE_DIR_LOCK;
     
    52785278
    52795279                    // The CAS is a success => sw access to the llsc_global_table
    5280                     m_llsc_table.sw( m_nline[(addr_t)m_cmd_cas_addr_fifo.read()],
    5281                             m_x[(addr_t)(m_cmd_cas_addr_fifo.read())],
    5282                             m_x[(addr_t)(m_cmd_cas_addr_fifo.read())] );
     5280                    m_llsc_table.sw(m_cmd_cas_addr_fifo.read(), m_cmd_cas_addr_fifo.read());
    52835281
    52845282                    // test coherence request
Note: See TracChangeset for help on using the changeset viewer.