Ignore:
Timestamp:
Jul 17, 2013, 9:24:48 AM (11 years ago)
Author:
cfuguet
Message:

Merging branch/v5/vci_mem_cache with trunk modifications to
start the development of new coherence protocol modifications
in this component

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

Legend:

Unmodified
Added
Removed
  • branches/v5/modules/vci_mem_cache

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

    r362 r440  
    5252#include "dspin_dhccp_param.h"
    5353
    54 #define TRANSACTION_TAB_LINES 4 // Number of lines in the transaction tab
    55 #define UPDATE_TAB_LINES      4 // Number of lines in the update tab
     54#define TRT_ENTRIES      4      // Number of entries in TRT
     55#define UPT_ENTRIES      4      // Number of entries in UPT
     56#define HEAP_ENTRIES     1024   // Number of entries in HEAP
    5657
    5758namespace soclib {  namespace caba {
     59
    5860  using namespace sc_core;
    5961
    60   template<typename vci_param>
     62  template<typename vci_param_int,
     63           typename vci_param_ext,
     64           size_t   dspin_in_width,
     65           size_t   dspin_out_width>
    6166    class VciMemCache
    6267    : public soclib::caba::BaseModule
    6368    {
    64       typedef sc_dt::sc_uint<40> addr_t;
    65       typedef typename vci_param::fast_addr_t vci_addr_t;
     69      typedef typename vci_param_int::fast_addr_t  addr_t;
     70
     71      typedef typename sc_dt::sc_uint<64>          wide_data_t;
     72
    6673      typedef uint32_t data_t;
    6774      typedef uint32_t tag_t;
    68       typedef uint32_t size_t;
    6975      typedef uint32_t be_t;
    7076      typedef uint32_t copy_t;
    7177
    7278      /* States of the TGT_CMD fsm */
    73       enum tgt_cmd_fsm_state_e{
     79      enum tgt_cmd_fsm_state_e
     80      {
    7481        TGT_CMD_IDLE,
     82        TGT_CMD_ERROR,
    7583        TGT_CMD_READ,
    7684        TGT_CMD_WRITE,
    77         TGT_CMD_CAS
     85        TGT_CMD_CAS,
     86        TGT_CMD_CONFIG
    7887      };
    7988
    8089      /* States of the TGT_RSP fsm */
    81       enum tgt_rsp_fsm_state_e{
     90      enum tgt_rsp_fsm_state_e
     91      {
     92        TGT_RSP_CONFIG_IDLE,
     93        TGT_RSP_TGT_CMD_IDLE,
    8294        TGT_RSP_READ_IDLE,
    8395        TGT_RSP_WRITE_IDLE,
    8496        TGT_RSP_CAS_IDLE,
    8597        TGT_RSP_XRAM_IDLE,
    86         TGT_RSP_INIT_IDLE,
     98        TGT_RSP_MULTI_ACK_IDLE,
    8799        TGT_RSP_CLEANUP_IDLE,
     100        TGT_RSP_CONFIG,
     101        TGT_RSP_TGT_CMD,
    88102        TGT_RSP_READ,
    89103        TGT_RSP_WRITE,
    90104        TGT_RSP_CAS,
    91105        TGT_RSP_XRAM,
    92         TGT_RSP_INIT,
     106        TGT_RSP_MULTI_ACK,
    93107        TGT_RSP_CLEANUP
    94108      };
    95109
    96110      /* States of the DSPIN_TGT fsm */
    97       enum cc_receive_fsm_state_e{
     111      enum cc_receive_fsm_state_e
     112      {
    98113        CC_RECEIVE_IDLE,
    99114        CC_RECEIVE_CLEANUP,
     115        CC_RECEIVE_CLEANUP_EOP,
    100116        CC_RECEIVE_MULTI_ACK
    101117      };
    102118
    103119      /* States of the CC_SEND fsm */
    104       enum cc_send_fsm_state_e{
     120      enum cc_send_fsm_state_e
     121      {
     122        CC_SEND_CONFIG_IDLE,
    105123        CC_SEND_XRAM_RSP_IDLE,
    106124        CC_SEND_WRITE_IDLE,
    107125        CC_SEND_CAS_IDLE,
    108126        CC_SEND_CLEANUP_IDLE,
     127        CC_SEND_CONFIG_INVAL_HEADER,
     128        CC_SEND_CONFIG_INVAL_NLINE,
     129        CC_SEND_CONFIG_BRDCAST_HEADER,
     130        CC_SEND_CONFIG_BRDCAST_NLINE,
    109131        CC_SEND_CLEANUP_ACK,
    110132        CC_SEND_XRAM_RSP_BRDCAST_HEADER,
     
    126148
    127149      /* States of the MULTI_ACK fsm */
    128       enum multi_ack_fsm_state_e{
     150      enum multi_ack_fsm_state_e
     151      {
    129152        MULTI_ACK_IDLE,
    130153        MULTI_ACK_UPT_LOCK,
    131154        MULTI_ACK_UPT_CLEAR,
    132         MULTI_ACK_WRITE_RSP
     155        MULTI_ACK_WRITE_RSP,
     156        MULTI_ACK_CONFIG_ACK
     157      };
     158
     159      /* States of the CONFIG fsm */
     160      enum config_fsm_state_e
     161      {
     162        CONFIG_IDLE,
     163        CONFIG_LOOP,
     164        CONFIG_RSP,
     165        CONFIG_DIR_REQ,
     166        CONFIG_DIR_ACCESS,
     167        CONFIG_DIR_UPT_LOCK,
     168        CONFIG_BC_SEND,
     169        CONFIG_BC_WAIT,
     170        CONFIG_INV_SEND,
     171        CONFIG_HEAP_REQ,
     172        CONFIG_HEAP_SCAN,
     173        CONFIG_HEAP_LAST,
     174        CONFIG_INV_WAIT
    133175      };
    134176
    135177      /* States of the READ fsm */
    136       enum read_fsm_state_e{
     178      enum read_fsm_state_e
     179      {
    137180        READ_IDLE,
    138181        READ_DIR_REQ,
     
    151194
    152195      /* States of the WRITE fsm */
    153       enum write_fsm_state_e{
     196      enum write_fsm_state_e
     197      {
    154198        WRITE_IDLE,
    155199        WRITE_NEXT,
     
    177221
    178222      /* States of the IXR_RSP fsm */
    179       enum ixr_rsp_fsm_state_e{
     223      enum ixr_rsp_fsm_state_e
     224      {
    180225        IXR_RSP_IDLE,
    181226        IXR_RSP_ACK,
     
    185230
    186231      /* States of the XRAM_RSP fsm */
    187       enum xram_rsp_fsm_state_e{
     232      enum xram_rsp_fsm_state_e
     233      {
    188234        XRAM_RSP_IDLE,
    189235        XRAM_RSP_TRT_COPY,
     
    204250
    205251      /* States of the IXR_CMD fsm */
    206       enum ixr_cmd_fsm_state_e{
     252      enum ixr_cmd_fsm_state_e
     253      {
    207254        IXR_CMD_READ_IDLE,
    208255        IXR_CMD_WRITE_IDLE,
    209256        IXR_CMD_CAS_IDLE,
    210257        IXR_CMD_XRAM_IDLE,
    211         IXR_CMD_READ_NLINE,
    212         IXR_CMD_WRITE_NLINE,
    213         IXR_CMD_CAS_NLINE,
    214         IXR_CMD_XRAM_DATA
     258        IXR_CMD_READ,
     259        IXR_CMD_WRITE,
     260        IXR_CMD_CAS,
     261        IXR_CMD_XRAM
    215262      };
    216263
    217264      /* States of the CAS fsm */
    218       enum cas_fsm_state_e{
     265      enum cas_fsm_state_e
     266      {
    219267        CAS_IDLE,
    220268        CAS_DIR_REQ,
     
    241289
    242290      /* States of the CLEANUP fsm */
    243       enum cleanup_fsm_state_e{
     291      enum cleanup_fsm_state_e
     292      {
    244293        CLEANUP_IDLE,
    245294        CLEANUP_GET_NLINE,
     
    256305        CLEANUP_UPT_CLEAR,
    257306        CLEANUP_WRITE_RSP,
    258         CLEANUP_SEND_ACK
     307        CLEANUP_CONFIG_ACK,
     308        CLEANUP_SEND_CLACK
    259309      };
    260310
    261311      /* States of the ALLOC_DIR fsm */
    262       enum alloc_dir_fsm_state_e{
     312      enum alloc_dir_fsm_state_e
     313      {
    263314        ALLOC_DIR_RESET,
     315        ALLOC_DIR_CONFIG,
    264316        ALLOC_DIR_READ,
    265317        ALLOC_DIR_WRITE,
     
    270322
    271323      /* States of the ALLOC_TRT fsm */
    272       enum alloc_trt_fsm_state_e{
     324      enum alloc_trt_fsm_state_e
     325      {
    273326        ALLOC_TRT_READ,
    274327        ALLOC_TRT_WRITE,
     
    279332
    280333      /* States of the ALLOC_UPT fsm */
    281       enum alloc_upt_fsm_state_e{
     334      enum alloc_upt_fsm_state_e
     335      {
     336        ALLOC_UPT_CONFIG,
    282337        ALLOC_UPT_WRITE,
    283338        ALLOC_UPT_XRAM_RSP,
     
    288343
    289344      /* States of the ALLOC_HEAP fsm */
    290       enum alloc_heap_fsm_state_e{
     345      enum alloc_heap_fsm_state_e
     346      {
    291347        ALLOC_HEAP_RESET,
    292348        ALLOC_HEAP_READ,
     
    294350        ALLOC_HEAP_CAS,
    295351        ALLOC_HEAP_CLEANUP,
    296         ALLOC_HEAP_XRAM_RSP
     352        ALLOC_HEAP_XRAM_RSP,
     353        ALLOC_HEAP_CONFIG
    297354      };
    298355
     
    325382      };
    326383
     384      /* Configuration commands */
     385      enum cmd_config_type_e
     386      {
     387          CMD_CONFIG_INVAL = 0,
     388          CMD_CONFIG_SYNC  = 1
     389      };
     390
    327391      // debug variables (for each FSM)
    328       bool         m_debug_global;
    329       bool         m_debug_tgt_cmd_fsm;
    330       bool         m_debug_tgt_rsp_fsm;
    331       bool         m_debug_cc_send_fsm;
    332       bool         m_debug_cc_receive_fsm;
    333       bool         m_debug_multi_ack_fsm;
    334       bool         m_debug_read_fsm;
    335       bool         m_debug_write_fsm;
    336       bool         m_debug_cas_fsm;
    337       bool         m_debug_cleanup_fsm;
    338       bool         m_debug_ixr_cmd_fsm;
    339       bool         m_debug_ixr_rsp_fsm;
    340       bool         m_debug_xram_rsp_fsm;
     392      bool         m_debug;
    341393      bool         m_debug_previous_hit;
    342394      size_t       m_debug_previous_count;
    343395
    344396      bool         m_monitor_ok;
    345       vci_addr_t   m_monitor_base;
    346       vci_addr_t   m_monitor_length;
     397      addr_t       m_monitor_base;
     398      addr_t       m_monitor_length;
    347399
    348400      // instrumentation counters
    349401      uint32_t     m_cpt_cycles;        // Counter of cycles
     402
    350403      uint32_t     m_cpt_read;          // Number of READ transactions
     404      uint32_t     m_cpt_read_remote;   // number of remote READ transactions
     405      uint32_t     m_cpt_read_flits;    // number of flits for READs
     406      uint32_t     m_cpt_read_cost;     // Number of (flits * distance) for READs
     407
    351408      uint32_t     m_cpt_read_miss;     // Number of MISS READ
     409
    352410      uint32_t     m_cpt_write;         // Number of WRITE transactions
     411      uint32_t     m_cpt_write_remote;  // number of remote WRITE transactions
     412      uint32_t     m_cpt_write_flits;   // number of flits for WRITEs
     413      uint32_t     m_cpt_write_cost;    // Number of (flits * distance) for WRITEs
     414
    353415      uint32_t     m_cpt_write_miss;    // Number of MISS WRITE
    354416      uint32_t     m_cpt_write_cells;   // Cumulated length for WRITE transactions
     
    366428      uint32_t     m_cpt_cas;           // Number of CAS transactions
    367429
     430      uint32_t     m_cpt_cleanup_cost;  // Number of (flits * distance) for CLEANUPs
     431
     432      uint32_t     m_cpt_update_flits;  // Number of flits for UPDATEs
     433      uint32_t     m_cpt_update_cost;   // Number of (flits * distance) for UPDATEs
     434
     435      uint32_t     m_cpt_inval_cost;    // Number of (flits * distance) for INVALs
     436
     437      uint32_t     m_cpt_get;
     438
     439      uint32_t     m_cpt_put;
     440
    368441      size_t       m_prev_count;
    369442
     
    373446
    374447      public:
    375       sc_in<bool>                           p_clk;
    376       sc_in<bool>                           p_resetn;
    377       soclib::caba::VciTarget<vci_param>    p_vci_tgt;
    378       soclib::caba::VciInitiator<vci_param> p_vci_ixr;
    379       soclib::caba::DspinInput<33>          p_dspin_in;
    380       soclib::caba::DspinOutput<40>         p_dspin_out;
     448      sc_in<bool>                                 p_clk;
     449      sc_in<bool>                                 p_resetn;
     450      soclib::caba::VciTarget<vci_param_int>      p_vci_tgt;
     451      soclib::caba::VciInitiator<vci_param_ext>  p_vci_ixr;
     452      soclib::caba::DspinInput<dspin_in_width>    p_dspin_in;
     453      soclib::caba::DspinOutput<dspin_out_width>  p_dspin_out;
    381454
    382455      VciMemCache(
    383456          sc_module_name name,                                // Instance Name
    384           const soclib::common::MappingTable &mtp,            // Mapping table for direct network
    385           const soclib::common::MappingTable &mtx,            // Mapping table for external network
    386           const soclib::common::IntTab       &srcid_x,        // global index on external network
    387           const soclib::common::IntTab       &tgtid_d,        // global index on direct network
    388           const size_t                       cc_global_id,    // global index on cc network
     457          const soclib::common::MappingTable &mtp,            // Mapping table INT network
     458          const soclib::common::MappingTable &mtx,            // Mapping table RAM network
     459          const soclib::common::IntTab       &srcid_x,        // global index RAM network
     460          const soclib::common::IntTab       &tgtid_d,        // global index INT network
     461          const size_t                       cc_global_id,    // global index CC network
    389462          const size_t                       nways,           // Number of ways per set
    390463          const size_t                       nsets,           // Number of sets
    391464          const size_t                       nwords,          // Number of words per line
    392           const size_t                       max_copies,      // max number of copies in heap
    393           const size_t                       heap_size=1024,  // number of heap entries
    394           const size_t                       trt_lines=TRANSACTION_TAB_LINES,
    395           const size_t                       upt_lines=UPDATE_TAB_LINES,       
     465          const size_t                       max_copies,      // max number of copies
     466          const size_t                       heap_size=HEAP_ENTRIES,
     467          const size_t                       trt_lines=TRT_ENTRIES,
     468          const size_t                       upt_lines=UPT_ENTRIES,     
    396469          const size_t                       debug_start_cycle=0,
    397470          const bool                         debug_ok=false );
     
    401474      void print_stats();
    402475      void print_trace();
    403       void copies_monitor(vci_addr_t addr);
    404       void start_monitor(vci_addr_t addr, vci_addr_t length);
     476      void copies_monitor(addr_t addr);
     477      void start_monitor(addr_t addr, addr_t length);
    405478      void stop_monitor();
    406479
     
    409482      void transition();
    410483      void genMoore();
    411       void check_monitor( const char *buf, vci_addr_t addr, data_t data);
    412       void check_monitor_read( const char *buf, vci_addr_t addr);
     484      void check_monitor( const char *buf, addr_t addr, data_t data, bool read);
    413485
    414486      // Component attributes
    415       std::list<soclib::common::Segment> m_seglist;          // segments allocated to memcache
     487      std::list<soclib::common::Segment> m_seglist;          // segments allocated
    416488      size_t                             m_nseg;             // number of segments
    417489      soclib::common::Segment            **m_seg;            // array of segments pointers
    418       const size_t                       m_srcid_x;          // global index on external network
     490      size_t                             m_seg_config;       // config segment index
     491      const size_t                       m_srcid_x;          // global index on RAM network
    419492      const size_t                       m_initiators;       // Number of initiators
    420493      const size_t                       m_heap_size;        // Size of the heap
     
    434507      size_t                             m_max_copies;       // max number of copies in heap
    435508      GenericLLSCGlobalTable
    436       < 32  ,                              // number of slots
    437         4096,                              // number of processors in the system
    438         8000,                              // registratioçn life span (in # of LL operations)
    439         typename vci_param::fast_addr_t >  // address type
    440                                          m_llsc_table;       // ll/sc global registration table
     509      < 32  ,    // number of slots
     510        4096,    // number of processors in the system
     511        8000,    // registration life (# of LL operations)
     512        addr_t >                         m_llsc_table;       // ll/sc registration table
    441513
    442514      // adress masks
    443       const soclib::common::AddressMaskingTable<vci_addr_t>   m_x;
    444       const soclib::common::AddressMaskingTable<vci_addr_t>   m_y;
    445       const soclib::common::AddressMaskingTable<vci_addr_t>   m_z;
    446       const soclib::common::AddressMaskingTable<vci_addr_t>   m_nline;
     515      const soclib::common::AddressMaskingTable<addr_t>   m_x;
     516      const soclib::common::AddressMaskingTable<addr_t>   m_y;
     517      const soclib::common::AddressMaskingTable<addr_t>   m_z;
     518      const soclib::common::AddressMaskingTable<addr_t>   m_nline;
    447519
    448520      // broadcast address
    449       uint32_t                                                m_broadcast_address;
     521      uint32_t                           m_broadcast_boundaries;
    450522
    451523      //////////////////////////////////////////////////
     
    453525      //////////////////////////////////////////////////
    454526
     527      sc_signal<int>         r_tgt_cmd_fsm;
     528
    455529      // Fifo between TGT_CMD fsm and READ fsm
    456       GenericFifo<uint64_t>  m_cmd_read_addr_fifo;
     530      GenericFifo<addr_t>    m_cmd_read_addr_fifo;
    457531      GenericFifo<size_t>    m_cmd_read_length_fifo;
    458532      GenericFifo<size_t>    m_cmd_read_srcid_fifo;
     
    461535
    462536      // Fifo between TGT_CMD fsm and WRITE fsm
    463       GenericFifo<uint64_t>  m_cmd_write_addr_fifo;
     537      GenericFifo<addr_t>    m_cmd_write_addr_fifo;
    464538      GenericFifo<bool>      m_cmd_write_eop_fifo;
    465539      GenericFifo<size_t>    m_cmd_write_srcid_fifo;
     
    470544
    471545      // Fifo between TGT_CMD fsm and CAS fsm
    472       GenericFifo<uint64_t>  m_cmd_cas_addr_fifo;
     546      GenericFifo<addr_t>    m_cmd_cas_addr_fifo;
    473547      GenericFifo<bool>      m_cmd_cas_eop_fifo;
    474548      GenericFifo<size_t>    m_cmd_cas_srcid_fifo;
     
    477551      GenericFifo<data_t>    m_cmd_cas_wdata_fifo;
    478552
    479       // Fifo between INIT_RSP fsm and CLEANUP fsm
     553      // Fifo between CC_RECEIVE fsm and CLEANUP fsm
    480554      GenericFifo<uint64_t>  m_cc_receive_to_cleanup_fifo;
    481555     
    482       // Fifo between INIT_RSP fsm and MULTI_ACK fsm
     556      // Fifo between CC_RECEIVE fsm and MULTI_ACK fsm
    483557      GenericFifo<uint64_t>  m_cc_receive_to_multi_ack_fifo;
    484558
    485       sc_signal<int>         r_tgt_cmd_fsm;
     559      // Buffer between TGT_CMD fsm and TGT_RSP fsm
     560      // (segmentation violation response request)
     561      sc_signal<bool>     r_tgt_cmd_to_tgt_rsp_req;
     562
     563      sc_signal<uint32_t> r_tgt_cmd_to_tgt_rsp_rdata;
     564      sc_signal<size_t>   r_tgt_cmd_to_tgt_rsp_error;
     565      sc_signal<size_t>   r_tgt_cmd_to_tgt_rsp_srcid;
     566      sc_signal<size_t>   r_tgt_cmd_to_tgt_rsp_trdid;
     567      sc_signal<size_t>   r_tgt_cmd_to_tgt_rsp_pktid;
     568
     569      sc_signal<addr_t>   r_tgt_cmd_config_addr;
     570      sc_signal<size_t>   r_tgt_cmd_config_cmd;
     571
     572      ///////////////////////////////////////////////////////
     573      // Registers controlled by the CONFIG fsm
     574      ///////////////////////////////////////////////////////
     575
     576      sc_signal<int>      r_config_fsm;            // FSM state
     577      sc_signal<bool>     r_config_lock;           // lock protecting exclusive access
     578      sc_signal<int>      r_config_cmd;            // config request status
     579      sc_signal<addr_t>   r_config_address;        // target buffer physical address
     580      sc_signal<size_t>   r_config_srcid;          // config request srcid
     581      sc_signal<size_t>   r_config_trdid;          // config request trdid
     582      sc_signal<size_t>   r_config_pktid;          // config request pktid
     583      sc_signal<size_t>   r_config_nlines;         // number of lines covering the buffer
     584      sc_signal<size_t>   r_config_dir_way;        // DIR: selected way
     585      sc_signal<size_t>   r_config_dir_count;      // DIR: number of copies
     586      sc_signal<bool>     r_config_dir_is_cnt;     // DIR: counter mode (broadcast required)
     587      sc_signal<size_t>   r_config_dir_copy_srcid; // DIR: first copy SRCID
     588      sc_signal<bool>     r_config_dir_copy_inst;  // DIR: first copy L1 type
     589      sc_signal<size_t>   r_config_dir_next_ptr;   // DIR: index of next copy in HEAP
     590      sc_signal<size_t>   r_config_heap_next;      // current pointer to scan HEAP
     591
     592      sc_signal<size_t>   r_config_upt_index;  // UPT index
     593
     594      // Buffer between CONFIG fsm and TGT_RSP fsm (send a done response to L1 cache)
     595      sc_signal<bool>     r_config_to_tgt_rsp_req;    // valid request
     596      sc_signal<bool>     r_config_to_tgt_rsp_error;  // error response
     597      sc_signal<size_t>   r_config_to_tgt_rsp_srcid;  // Transaction srcid
     598      sc_signal<size_t>   r_config_to_tgt_rsp_trdid;  // Transaction trdid
     599      sc_signal<size_t>   r_config_to_tgt_rsp_pktid;  // Transaction pktid
     600
     601      // Buffer between CONFIG fsm and CC_SEND fsm (multi-inval / broadcast-inval)
     602      sc_signal<bool>     r_config_to_cc_send_multi_req;    // multi-inval request
     603      sc_signal<bool>     r_config_to_cc_send_brdcast_req;  // broadcast-inval request
     604      sc_signal<addr_t>   r_config_to_cc_send_nline;        // line index
     605      sc_signal<size_t>   r_config_to_cc_send_trdid;        // UPT index
     606      GenericFifo<bool>   m_config_to_cc_send_inst_fifo;    // fifo for the L1 type
     607      GenericFifo<size_t> m_config_to_cc_send_srcid_fifo;   // fifo for owners srcid
     608
     609#if L1_MULTI_CACHE
     610      GenericFifo<size_t> m_config_to_cc_send_cache_id_fifo; // fifo for cache_id
     611#endif
    486612
    487613      ///////////////////////////////////////////////////////
     
    489615      ///////////////////////////////////////////////////////
    490616
    491       sc_signal<int>      r_read_fsm;        // FSM state
    492       sc_signal<size_t>   r_read_copy;       // Srcid of the first copy
    493       sc_signal<size_t>   r_read_copy_cache; // Srcid of the first copy
    494       sc_signal<bool>     r_read_copy_inst;  // Type of the first copy
    495       sc_signal<tag_t>    r_read_tag;        // cache line tag (in directory)
    496       sc_signal<bool>     r_read_is_cnt;     // is_cnt bit (in directory)
    497       sc_signal<bool>     r_read_lock;       // lock bit (in directory)
    498       sc_signal<bool>     r_read_dirty;      // dirty bit (in directory)
    499       sc_signal<size_t>   r_read_count;      // number of copies
    500       sc_signal<size_t>   r_read_ptr;        // pointer to the heap
    501       sc_signal<data_t> * r_read_data;       // data (one cache line)
    502       sc_signal<size_t>   r_read_way;        // associative way (in cache)
    503       sc_signal<size_t>   r_read_trt_index;  // Transaction Table index
    504       sc_signal<size_t>   r_read_next_ptr;   // Next entry to point to
    505       sc_signal<bool>     r_read_last_free;  // Last free entry
    506       sc_signal<typename vci_param::fast_addr_t>
    507                           r_read_ll_key;     // LL key returned by the llsc_global_table
     617      sc_signal<int>      r_read_fsm;          // FSM state
     618      sc_signal<size_t>   r_read_copy;         // Srcid of the first copy
     619      sc_signal<size_t>   r_read_copy_cache;   // Srcid of the first copy
     620      sc_signal<bool>     r_read_copy_inst;    // Type of the first copy
     621      sc_signal<tag_t>    r_read_tag;          // cache line tag (in directory)
     622      sc_signal<bool>     r_read_is_cnt;       // is_cnt bit (in directory)
     623      sc_signal<bool>     r_read_lock;         // lock bit (in directory)
     624      sc_signal<bool>     r_read_dirty;        // dirty bit (in directory)
     625      sc_signal<size_t>   r_read_count;        // number of copies
     626      sc_signal<size_t>   r_read_ptr;          // pointer to the heap
     627      sc_signal<data_t> * r_read_data;         // data (one cache line)
     628      sc_signal<size_t>   r_read_way;          // associative way (in cache)
     629      sc_signal<size_t>   r_read_trt_index;    // Transaction Table index
     630      sc_signal<size_t>   r_read_next_ptr;     // Next entry to point to
     631      sc_signal<bool>     r_read_last_free;    // Last free entry
     632      sc_signal<addr_t>   r_read_ll_key;       // LL key from the llsc_global_table
    508633
    509634      // Buffer between READ fsm and IXR_CMD fsm (ask a missing cache line to XRAM)
     
    520645      sc_signal<size_t>   r_read_to_tgt_rsp_word;   // first word of the response
    521646      sc_signal<size_t>   r_read_to_tgt_rsp_length; // length of the response
    522       sc_signal<typename vci_param::fast_addr_t>
    523                           r_read_to_tgt_rsp_ll_key; // LL key returned by the llsc_global_table
     647      sc_signal<addr_t>   r_read_to_tgt_rsp_ll_key; // LL key from the llsc_global_table
    524648
    525649      ///////////////////////////////////////////////////////////////
     
    578702      GenericFifo<bool>   m_write_to_cc_send_inst_fifo;     // fifo for the L1 type
    579703      GenericFifo<size_t> m_write_to_cc_send_srcid_fifo;    // fifo for srcids
     704
    580705#if L1_MULTI_CACHE
    581706      GenericFifo<size_t> m_write_to_cc_send_cache_id_fifo; // fifo for srcids
     
    596721      sc_signal<size_t>   r_multi_ack_pktid;     // pending write pktid
    597722      sc_signal<addr_t>   r_multi_ack_nline;     // pending write nline
     723
     724      // signaling completion of multi-inval to CONFIG fsm
     725      sc_signal<bool>     r_multi_ack_to_config_ack;
    598726
    599727      // Buffer between MULTI_ACK fsm and TGT_RSP fsm (complete write/update transaction)
     
    633761      sc_signal<size_t>   r_cleanup_way;           // associative way (in cache)
    634762
    635       sc_signal<size_t>   r_cleanup_write_srcid;   // srcid of write response
     763      sc_signal<size_t>   r_cleanup_write_srcid;   // srcid of write rsp
    636764      sc_signal<size_t>   r_cleanup_write_trdid;   // trdid of write rsp
    637765      sc_signal<size_t>   r_cleanup_write_pktid;   // pktid of write rsp
    638       sc_signal<bool>     r_cleanup_write_need_rsp;// needs a write rsp
     766
     767      sc_signal<bool>     r_cleanup_need_rsp;      // write response required
     768      sc_signal<bool>     r_cleanup_need_ack;      // config acknowledge required
    639769
    640770      sc_signal<size_t>   r_cleanup_index;         // index of the INVAL line (in the UPT)
    641771
     772      // signaling completion of broadcast-inval to CONFIG fsm
     773      sc_signal<bool>     r_cleanup_to_config_ack; 
     774       
    642775      // Buffer between CLEANUP fsm and TGT_RSP fsm (acknowledge a write command from L1)
    643776      sc_signal<bool>     r_cleanup_to_tgt_rsp_req;   // valid request
     
    703836      GenericFifo<bool>   m_cas_to_cc_send_inst_fifo;     // fifo for the L1 type
    704837      GenericFifo<size_t> m_cas_to_cc_send_srcid_fifo;    // fifo for srcids
     838
    705839#if L1_MULTI_CACHE
    706840      GenericFifo<size_t> m_cas_to_cc_send_cache_id_fifo; // fifo for srcids
     
    749883      sc_signal<size_t>   r_xram_rsp_to_tgt_rsp_length; // length of the response
    750884      sc_signal<bool>     r_xram_rsp_to_tgt_rsp_rerror; // send error to requester
    751       sc_signal<typename vci_param::fast_addr_t>
    752                           r_xram_rsp_to_tgt_rsp_ll_key; // LL key returned by the llsc_global_table
     885      sc_signal<addr_t>   r_xram_rsp_to_tgt_rsp_ll_key; // LL key from llsc_global_table
    753886
    754887      // Buffer between XRAM_RSP fsm and CC_SEND fsm (Inval L1 Caches)
     
    759892      GenericFifo<bool>   m_xram_rsp_to_cc_send_inst_fifo;     // fifo for the L1 type
    760893      GenericFifo<size_t> m_xram_rsp_to_cc_send_srcid_fifo;    // fifo for srcids
     894
    761895#if L1_MULTI_CACHE
    762896      GenericFifo<size_t> m_xram_rsp_to_cc_send_cache_id_fifo; // fifo for srcids
Note: See TracChangeset for help on using the changeset viewer.