Ignore:
Timestamp:
Jul 29, 2013, 11:31:38 AM (11 years ago)
Author:
devigne
Message:

Merge with the lastest version of Trunk
Modification in vci_mem_cache : Using TRT's wdata field for
put request to ixr_cmd (just for INCLUSIVE mode)

Location:
branches/ODCCP/modules/vci_mem_cache
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/ODCCP/modules/vci_mem_cache

  • branches/ODCCP/modules/vci_mem_cache/caba/source/include/vci_mem_cache.h

    r460 r479  
    5454#define TRT_ENTRIES      4      // Number of entries in TRT
    5555#define UPT_ENTRIES      4      // Number of entries in UPT
     56#define IVT_ENTRIES      4      // Number of entries in IVT
    5657#define HEAP_ENTRIES     1024   // Number of entries in HEAP
    5758
     
    122123        CC_SEND_WRITE_IDLE,
    123124        CC_SEND_CAS_IDLE,
    124         CC_SEND_CLEANUP_IDLE,
    125125        CC_SEND_CONFIG_INVAL_HEADER,
    126126        CC_SEND_CONFIG_INVAL_NLINE,
    127127        CC_SEND_CONFIG_BRDCAST_HEADER,
    128128        CC_SEND_CONFIG_BRDCAST_NLINE,
    129         CC_SEND_CLEANUP_ACK,
    130129        CC_SEND_XRAM_RSP_BRDCAST_HEADER,
    131130        CC_SEND_XRAM_RSP_BRDCAST_NLINE,
     
    163162        CONFIG_DIR_REQ,
    164163        CONFIG_DIR_ACCESS,
    165         CONFIG_DIR_UPT_LOCK,
     164        CONFIG_DIR_IVT_LOCK,
    166165        CONFIG_BC_SEND,
    167166        CONFIG_BC_WAIT,
     
    211210        WRITE_MISS_XRAM_REQ,
    212211        WRITE_BC_TRT_LOCK,
    213         WRITE_BC_UPT_LOCK,
     212        WRITE_BC_IVT_LOCK,
    214213        WRITE_BC_DIR_INVAL,
    215214        WRITE_BC_CC_SEND,
     
    255254        IXR_CMD_XRAM_IDLE,
    256255        IXR_CMD_CLEANUP_IDLE,
     256        IXR_CMD_TRT_LOCK,
    257257        IXR_CMD_READ,
    258258        IXR_CMD_WRITE,
     
    276276        CAS_UPT_NEXT,
    277277        CAS_BC_TRT_LOCK,
    278         CAS_BC_UPT_LOCK,
     278        CAS_BC_IVT_LOCK,
    279279        CAS_BC_DIR_INVAL,
    280280        CAS_BC_CC_SEND,
     
    302302        CLEANUP_HEAP_CLEAN,
    303303        CLEANUP_HEAP_FREE,
    304         CLEANUP_UPT_LOCK,
    305         CLEANUP_UPT_DECREMENT,
    306         CLEANUP_UPT_CLEAR,
     304        CLEANUP_IVT_LOCK,
     305        CLEANUP_IVT_DECREMENT,
     306        CLEANUP_IVT_CLEAR,
    307307        CLEANUP_WRITE_RSP,
    308308        CLEANUP_CONFIG_ACK,
     
    332332        ALLOC_TRT_XRAM_RSP,
    333333        ALLOC_TRT_IXR_RSP,
    334         ALLOC_TRT_CLEANUP
     334        ALLOC_TRT_CLEANUP,
     335        ALLOC_TRT_IXR_CMD
    335336      };
    336337
     
    338339      enum alloc_upt_fsm_state_e
    339340      {
    340         ALLOC_UPT_CONFIG,
    341341        ALLOC_UPT_WRITE,
    342         ALLOC_UPT_XRAM_RSP,
    343         ALLOC_UPT_MULTI_ACK,
    344         ALLOC_UPT_CLEANUP,
    345         ALLOC_UPT_CAS
     342        ALLOC_UPT_CAS,
     343        ALLOC_UPT_MULTI_ACK
     344      };
     345
     346      /* States of the ALLOC_IVT fsm */
     347      enum alloc_ivt_fsm_state_e
     348      {
     349        ALLOC_IVT_WRITE,
     350        ALLOC_IVT_XRAM_RSP,
     351        ALLOC_IVT_CLEANUP,
     352        ALLOC_IVT_CAS,
     353        ALLOC_IVT_CONFIG
    346354      };
    347355
     
    492500      uint32_t     m_cpt_cas_fsm_upt_used;       // NB cycles UPT LOCK used
    493501     
    494       uint32_t     m_cpt_upt_unused;            // NB cycles UPT LOCK unused
     502      uint32_t     m_cpt_ivt_unused;            // NB cycles UPT LOCK unused
    495503
    496504      uint32_t     m_cpt_read_fsm_heap_lock;     // wait HEAP LOCK
     
    536544      soclib::caba::VciTarget<vci_param_int>      p_vci_tgt;
    537545      soclib::caba::VciInitiator<vci_param_ext>   p_vci_ixr;
    538       soclib::caba::DspinInput<dspin_in_width>    p_dspin_in;
    539       soclib::caba::DspinOutput<dspin_out_width>  p_dspin_out;
     546      soclib::caba::DspinInput<dspin_in_width>    p_dspin_p2m;
     547      soclib::caba::DspinOutput<dspin_out_width>  p_dspin_m2p;
     548      soclib::caba::DspinOutput<dspin_out_width>  p_dspin_clack;
    540549
    541550      VciMemCache(
     
    553562          const size_t                       trt_lines=TRT_ENTRIES,
    554563          const size_t                       upt_lines=UPT_ENTRIES,     
     564          const size_t                       ivt_lines=IVT_ENTRIES,     
    555565          const size_t                       debug_start_cycle=0,
    556566          const bool                         debug_ok=false );
     
    588598      TransactionTab                     m_trt;              // xram transaction table
    589599      uint32_t                           m_upt_lines;
    590       UpdateTab                          m_upt;              // pending update & invalidate
     600      UpdateTab                          m_upt;              // pending update
     601      UpdateTab                          m_ivt;              // pending invalidate
    591602      CacheDirectory                     m_cache_directory;  // data cache directory
    592603      CacheData                          m_cache_data;       // data array[set][way][word]
     
    677688      sc_signal<size_t>   r_config_heap_next;      // current pointer to scan HEAP
    678689
    679       sc_signal<size_t>   r_config_upt_index;  // UPT index
     690      sc_signal<size_t>   r_config_ivt_index;      // IVT index
    680691
    681692      // Buffer between CONFIG fsm and TGT_RSP fsm (send a done response to L1 cache)
     
    866877      sc_signal<size_t>   r_cleanup_to_tgt_rsp_pktid; // transaction pktid
    867878
    868       // Buffer between CLEANUP fsm and CC_SEND fsm (acknowledge a cleanup command from L1)
    869       sc_signal<bool>     r_cleanup_to_cc_send_req;       // valid request
    870       sc_signal<size_t>   r_cleanup_to_cc_send_srcid;     // L1 srcid
    871       sc_signal<size_t>   r_cleanup_to_cc_send_set_index; // L1 set index
    872       sc_signal<size_t>   r_cleanup_to_cc_send_way_index; // L1 way index
    873       sc_signal<bool>     r_cleanup_to_cc_send_inst;      // Instruction Cleanup Ack
    874 
    875879      ///////////////////////////////////////////////////////
    876880      // Registers controlled by CAS fsm
     
    960964      sc_signal<size_t>   r_xram_rsp_victim_ptr;        // victim line pointer to the heap
    961965      sc_signal<data_t> * r_xram_rsp_victim_data;       // victim line data
    962       sc_signal<size_t>   r_xram_rsp_upt_index;         // UPT entry index
     966      sc_signal<size_t>   r_xram_rsp_ivt_index;         // IVT entry index
    963967      sc_signal<size_t>   r_xram_rsp_next_ptr;          // Next pointer to the heap
    964968
     
    10411045
    10421046      ////////////////////////////////////////////////////
     1047      // Registers controlled by ALLOC_IVT fsm
     1048      ////////////////////////////////////////////////////
     1049
     1050      sc_signal<int>      r_alloc_ivt_fsm;
     1051
     1052      ////////////////////////////////////////////////////
    10431053      // Registers controlled by ALLOC_HEAP fsm
    10441054      ////////////////////////////////////////////////////
     
    10561066      sc_signal<uint32_t>  r_cleanup_pktid;
    10571067      sc_signal<data_t>    *r_cleanup_data;          // buffer for saving data from cleanup
     1068      sc_signal<data_t>    *r_ixr_cmd_data;          // buffer for saving data from cleanup
    10581069      sc_signal<bool>      r_cleanup_contains_data;
    10591070      sc_signal<bool>      r_cleanup_ncc;
Note: See TracChangeset for help on using the changeset viewer.