Ignore:
Timestamp:
Aug 2, 2013, 2:38:51 PM (11 years ago)
Author:
devigne
Message:

Fixing deadlock with MULTI_ACK FSM and TGT_RSP FSM, and CLEANUP_FSM and TGT_FSM
TGT_RSP FSM is now a client of UPT and IVT.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/modules/vci_mem_cache/caba/source/include/vci_mem_cache.h

    r468 r481  
    104104        TGT_RSP_XRAM,
    105105        TGT_RSP_MULTI_ACK,
    106         TGT_RSP_CLEANUP
     106        TGT_RSP_CLEANUP,
     107        TGT_RSP_UPT_LOCK,
     108        TGT_RSP_IVT_LOCK
    107109      };
    108110
     
    333335        ALLOC_UPT_WRITE,
    334336        ALLOC_UPT_CAS,
    335         ALLOC_UPT_MULTI_ACK
     337        ALLOC_UPT_MULTI_ACK,
     338        ALLOC_UPT_TGT_RSP
    336339      };
    337340
     
    343346        ALLOC_IVT_CLEANUP,
    344347        ALLOC_IVT_CAS,
    345         ALLOC_IVT_CONFIG
     348        ALLOC_IVT_CONFIG,
     349        ALLOC_IVT_TGT_RSP
    346350      };
    347351
     
    492496      void genMoore();
    493497      void check_monitor(addr_t addr, data_t data, bool read);
     498      bool hit_cleanup_req(size_t *index);
     499      bool hit_multi_ack_req(size_t *index);
    494500
    495501      // Component attributes
     
    510516      TransactionTab                     m_trt;              // xram transaction table
    511517      uint32_t                           m_upt_lines;
     518      uint32_t                           m_ivt_lines;
    512519      UpdateTab                          m_upt;              // pending update
    513520      UpdateTab                          m_ivt;              // pending invalidate
     
    736743
    737744      // Buffer between MULTI_ACK fsm and TGT_RSP fsm (complete write/update transaction)
    738       sc_signal<bool>     r_multi_ack_to_tgt_rsp_req;   // valid request
     745      sc_signal<bool>     *r_multi_ack_to_tgt_rsp_req;  // valid request
    739746      sc_signal<size_t>   r_multi_ack_to_tgt_rsp_srcid; // Transaction srcid
    740747      sc_signal<size_t>   r_multi_ack_to_tgt_rsp_trdid; // Transaction trdid
     
    784791       
    785792      // Buffer between CLEANUP fsm and TGT_RSP fsm (acknowledge a write command from L1)
    786       sc_signal<bool>     r_cleanup_to_tgt_rsp_req;   // valid request
     793      sc_signal<bool>     *r_cleanup_to_tgt_rsp_req;   // valid request
    787794      sc_signal<size_t>   r_cleanup_to_tgt_rsp_srcid; // transaction srcid
    788795      sc_signal<size_t>   r_cleanup_to_tgt_rsp_trdid; // transaction trdid
     
    919926      sc_signal<int>      r_tgt_rsp_fsm;
    920927      sc_signal<size_t>   r_tgt_rsp_cpt;
     928      sc_signal<size_t>   r_tgt_rsp_prio_multi_ack;
     929      sc_signal<size_t>   r_tgt_rsp_prio_cleanup;
    921930      sc_signal<bool>     r_tgt_rsp_key_sent;
    922931
Note: See TracChangeset for help on using the changeset viewer.