Ignore:
Timestamp:
Nov 28, 2012, 11:51:48 AM (12 years ago)
Author:
cfuguet
Message:

Modificating the VCI Memory Cache to align the VHDL and the SOCLIB models.
The primary modification consists to add a state DIR_REQ or HEAP_REQ, in all
FSMs using these two structures.

In these states a FSM take the lock of the DIRECTORY or HEAP, respectively,
and at the end of the cycle sends the READ request. Is in the next cycle,
when the response of the READ is obtained.

With this modifications, the behavior of a Synchonous RAM is emulated.

File:
1 edited

Legend:

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

    r245 r273  
    2626 *
    2727 * Maintainers: alain eric.guthmuller@polytechnique.edu
    28  */
    29 /*
     28 *              cesar.fuguet-tortolero@lip6.fr
    3029 *
    3130 * Modifications done by Christophe Choichillon on the 7/04/2009:
     
    3332 * - Adding a new VCI target port for the CLEANUP network
    3433 * - Adding new state in the ALLOC_UPT_FSM : ALLOC_UPT_CLEANUP
    35  * 
     34 *
    3635 * Modifications to do :
    3736 * - Adding new variables used by the CLEANUP FSM
     
    5857#include "update_tab_v4.h"
    5958
    60 #define TRANSACTION_TAB_LINES   4               // Number of lines in the transaction tab
    61 #define UPDATE_TAB_LINES        4               // Number of lines in the update tab
     59#define TRANSACTION_TAB_LINES 4 // Number of lines in the transaction tab
     60#define UPDATE_TAB_LINES      4 // Number of lines in the update tab
    6261
    6362namespace soclib {  namespace caba {
     
    8180        TGT_CMD_READ,
    8281        TGT_CMD_WRITE,
    83         TGT_CMD_ATOMIC,
     82        TGT_CMD_ATOMIC
    8483      };
    8584
     
    9796        TGT_RSP_XRAM,
    9897        TGT_RSP_INIT,
    99         TGT_RSP_CLEANUP,
     98        TGT_RSP_CLEANUP
    10099      };
    101100
     
    115114        INIT_CMD_SC_UPDT_INDEX,
    116115        INIT_CMD_SC_UPDT_DATA,
    117         INIT_CMD_SC_UPDT_DATA_HIGH,
     116        INIT_CMD_SC_UPDT_DATA_HIGH
    118117      };
    119118
     
    123122        INIT_RSP_UPT_LOCK,
    124123        INIT_RSP_UPT_CLEAR,
    125         INIT_RSP_END,
     124        INIT_RSP_END
    126125      };
    127126
     
    129128      enum read_fsm_state_e{
    130129        READ_IDLE,
     130        READ_DIR_REQ,
    131131        READ_DIR_LOCK,
    132132        READ_DIR_HIT,
     133        READ_HEAP_REQ,
    133134        READ_HEAP_LOCK,
    134135        READ_HEAP_WRITE,
     
    138139        READ_TRT_LOCK,
    139140        READ_TRT_SET,
    140         READ_TRT_REQ,
     141        READ_TRT_REQ
    141142      };
    142143
     
    145146        WRITE_IDLE,
    146147        WRITE_NEXT,
     148        WRITE_DIR_REQ,
    147149        WRITE_DIR_LOCK,
    148150        WRITE_DIR_READ,
     
    163165        WRITE_BC_CC_SEND,
    164166        WRITE_BC_XRAM_REQ,
    165         WRITE_WAIT,
     167        WRITE_WAIT
    166168      };
    167169
     
    171173        IXR_RSP_ACK,
    172174        IXR_RSP_TRT_ERASE,
    173         IXR_RSP_TRT_READ,
     175        IXR_RSP_TRT_READ
    174176      };
    175177
     
    186188        XRAM_RSP_INVAL,
    187189        XRAM_RSP_WRITE_DIRTY,
     190        XRAM_RSP_HEAP_REQ,
    188191        XRAM_RSP_HEAP_ERASE,
    189192        XRAM_RSP_HEAP_LAST,
    190193        XRAM_RSP_ERROR_ERASE,
    191         XRAM_RSP_ERROR_RSP,
     194        XRAM_RSP_ERROR_RSP
    192195      };
    193196
     
    201204        IXR_CMD_WRITE_NLINE,
    202205        IXR_CMD_SC_NLINE,
    203         IXR_CMD_XRAM_DATA,
     206        IXR_CMD_XRAM_DATA
    204207      };
    205208
     
    207210      enum sc_fsm_state_e{
    208211        SC_IDLE,
     212        SC_DIR_REQ,
    209213        SC_DIR_LOCK,
    210214        SC_DIR_HIT_READ,
     
    224228        SC_MISS_TRT_SET,
    225229        SC_MISS_XRAM_REQ,
    226         SC_WAIT,
     230        SC_WAIT
    227231      };
    228232
     
    230234      enum cleanup_fsm_state_e{
    231235        CLEANUP_IDLE,
     236        CLEANUP_DIR_REQ,
    232237        CLEANUP_DIR_LOCK,
    233238        CLEANUP_DIR_WRITE,
     239        CLEANUP_HEAP_REQ,
    234240        CLEANUP_HEAP_LOCK,
    235241        CLEANUP_HEAP_SEARCH,
     
    239245        CLEANUP_UPT_WRITE,
    240246        CLEANUP_WRITE_RSP,
    241         CLEANUP_RSP,
     247        CLEANUP_RSP
    242248      };
    243249
    244250      /* States of the ALLOC_DIR fsm */
    245251      enum alloc_dir_fsm_state_e{
     252        ALLOC_DIR_RESET,
    246253        ALLOC_DIR_READ,
    247254        ALLOC_DIR_WRITE,
    248255        ALLOC_DIR_SC,
    249256        ALLOC_DIR_CLEANUP,
    250         ALLOC_DIR_XRAM_RSP,
     257        ALLOC_DIR_XRAM_RSP
    251258      };
    252259
     
    257264        ALLOC_TRT_SC,
    258265        ALLOC_TRT_XRAM_RSP,
    259         ALLOC_TRT_IXR_RSP,
     266        ALLOC_TRT_IXR_RSP
    260267      };
    261268
     
    266273        ALLOC_UPT_INIT_RSP,
    267274        ALLOC_UPT_CLEANUP,
    268         ALLOC_UPT_SC,
     275        ALLOC_UPT_SC
    269276      };
    270277
    271278      /* States of the ALLOC_HEAP fsm */
    272279      enum alloc_heap_fsm_state_e{
     280        ALLOC_HEAP_RESET,
    273281        ALLOC_HEAP_READ,
    274282        ALLOC_HEAP_WRITE,
    275283        ALLOC_HEAP_SC,
    276284        ALLOC_HEAP_CLEANUP,
    277         ALLOC_HEAP_XRAM_RSP,
     285        ALLOC_HEAP_XRAM_RSP
    278286      };
    279287
     
    301309
    302310      // instrumentation counters
    303       uint32_t     m_cpt_cycles;            // Counter of cycles
    304       uint32_t     m_cpt_read;              // Number of READ transactions
    305       uint32_t     m_cpt_read_miss;         // Number of MISS READ
    306       uint32_t     m_cpt_write;             // Number of WRITE transactions
    307       uint32_t     m_cpt_write_miss;        // Number of MISS WRITE
    308       uint32_t     m_cpt_write_cells;       // Cumulated length for WRITE transactions
    309       uint32_t     m_cpt_write_dirty;       // Cumulated length for WRITE transactions
    310       uint32_t     m_cpt_update;            // Number of UPDATE transactions
    311       uint32_t     m_cpt_trt_rb;            // Read blocked by a hit in trt
    312       uint32_t     m_cpt_trt_full;          // Transaction blocked due to a full trt
    313       uint32_t     m_cpt_update_mult;       // Number of targets for UPDATE
    314       uint32_t     m_cpt_inval;             // Number of INVAL  transactions
    315       uint32_t     m_cpt_inval_mult;        // Number of targets for INVAL 
    316       uint32_t     m_cpt_inval_brdcast;     // Number of BROADCAST INVAL 
    317       uint32_t     m_cpt_cleanup;           // Number of CLEANUP transactions
    318       uint32_t     m_cpt_ll;                // Number of LL transactions
    319       uint32_t     m_cpt_sc;                // Number of SC transactions
     311      uint32_t     m_cpt_cycles;        // Counter of cycles
     312      uint32_t     m_cpt_read;          // Number of READ transactions
     313      uint32_t     m_cpt_read_miss;     // Number of MISS READ
     314      uint32_t     m_cpt_write;         // Number of WRITE transactions
     315      uint32_t     m_cpt_write_miss;    // Number of MISS WRITE
     316      uint32_t     m_cpt_write_cells;   // Cumulated length for WRITE transactions
     317      uint32_t     m_cpt_write_dirty;   // Cumulated length for WRITE transactions
     318      uint32_t     m_cpt_update;        // Number of UPDATE transactions
     319      uint32_t     m_cpt_trt_rb;        // Read blocked by a hit in trt
     320      uint32_t     m_cpt_trt_full;      // Transaction blocked due to a full trt
     321      uint32_t     m_cpt_update_mult;   // Number of targets for UPDATE
     322      uint32_t     m_cpt_inval;         // Number of INVAL  transactions
     323      uint32_t     m_cpt_inval_mult;    // Number of targets for INVAL
     324      uint32_t     m_cpt_inval_brdcast; // Number of BROADCAST INVAL
     325      uint32_t     m_cpt_cleanup;       // Number of CLEANUP transactions
     326      uint32_t     m_cpt_ll;            // Number of LL transactions
     327      uint32_t     m_cpt_sc;            // Number of SC transactions
    320328
    321329      size_t       m_prev_count;
     
    326334
    327335      public:
    328       sc_in<bool>                                               p_clk;
    329       sc_in<bool>                                               p_resetn;
    330       soclib::caba::VciTarget<vci_param>        p_vci_tgt;
    331       soclib::caba::VciTarget<vci_param>        p_vci_tgt_cleanup;
    332       soclib::caba::VciInitiator<vci_param>     p_vci_ini;     
    333       soclib::caba::VciInitiator<vci_param>     p_vci_ixr;
     336      sc_in<bool>                           p_clk;
     337      sc_in<bool>                           p_resetn;
     338      soclib::caba::VciTarget<vci_param>    p_vci_tgt;
     339      soclib::caba::VciTarget<vci_param>    p_vci_tgt_cleanup;
     340      soclib::caba::VciInitiator<vci_param> p_vci_ini;
     341      soclib::caba::VciInitiator<vci_param> p_vci_ixr;
    334342
    335343      VciMemCacheV4(
    336           sc_module_name name,                                // Instance Name 
     344          sc_module_name name,                                // Instance Name
    337345          const soclib::common::MappingTable &mtp,            // Mapping table for primary requets
    338346          const soclib::common::MappingTable &mtc,            // Mapping table for coherence requets
     
    342350          const soclib::common::IntTab &vci_tgt_index,        // VCI port to PROC (target)
    343351          const soclib::common::IntTab &vci_tgt_index_cleanup,// VCI port to PROC (target) for cleanup
    344           size_t nways,                                       // Number of ways per set 
     352          size_t nways,                                       // Number of ways per set
    345353          size_t nsets,                                       // Number of sets
    346354          size_t nwords,                                      // Number of words per line
     
    348356          size_t transaction_tab_lines=TRANSACTION_TAB_LINES, // Size of the TRT
    349357          size_t update_tab_lines=UPDATE_TAB_LINES,           // Size of the UPT
    350           size_t debug_start_cycle=0,                       
     358          size_t debug_start_cycle=0,
    351359          bool   debug_ok=false);
    352360
     
    366374
    367375      // Component attributes
    368       const size_t                              m_initiators;           // Number of initiators
    369       const size_t                              m_heap_size;            // Size of the heap
    370       const size_t                              m_ways;                 // Number of ways in a set
    371       const size_t                              m_sets;                 // Number of cache sets
    372       const size_t                              m_words;                        // Number of words in a line
    373       const size_t                              m_srcid_ixr;                // Srcid for requests to XRAM
    374       const size_t                              m_srcid_ini;                // Srcid for requests to processors
    375       std::list<soclib::common::Segment>        m_seglist;              // memory cached into the cache
    376       std::list<soclib::common::Segment>        m_cseglist;             // coherence segment for the cache
    377       vci_addr_t                                *m_coherence_table;     // address(srcid)
    378       uint32_t                                  m_transaction_tab_lines;
    379       TransactionTab                            m_transaction_tab;          // xram transaction table
    380       uint32_t                                  m_update_tab_lines;
    381       UpdateTab                                 m_update_tab;               // pending update & invalidate
    382       CacheDirectory                            m_cache_directory;          // data cache directory
    383       HeapDirectory                             m_heap;                 // heap for copies
    384 
    385       data_t                                    ***m_cache_data;            // data array[set][way][word]
     376      std::list<soclib::common::Segment> m_seglist;  // memory cached into the cache
     377      std::list<soclib::common::Segment> m_cseglist; // coherence segment for the cache
     378
     379      const size_t    m_initiators; // Number of initiators
     380      const size_t    m_heap_size;  // Size of the heap
     381      const size_t    m_ways;       // Number of ways in a set
     382      const size_t    m_sets;       // Number of cache sets
     383      const size_t    m_words;      // Number of words in a line
     384      const size_t    m_srcid_ixr;  // Srcid for requests to XRAM
     385      const size_t    m_srcid_ini;  // Srcid for requests to processors
     386
     387      uint32_t        m_transaction_tab_lines;
     388      TransactionTab  m_transaction_tab;  // xram transaction table
     389      uint32_t        m_update_tab_lines;
     390      UpdateTab       m_update_tab;       // pending update & invalidate
     391      CacheDirectory  m_cache_directory;  // data cache directory
     392      HeapDirectory   m_heap;             // heap for copies
     393
     394      data_t      *** m_cache_data;       // data array[set][way][word]
    386395
    387396      // adress masks
    388       const soclib::common::AddressMaskingTable<vci_addr_t>   m_x;
    389       const soclib::common::AddressMaskingTable<vci_addr_t>   m_y;
    390       const soclib::common::AddressMaskingTable<vci_addr_t>   m_z;
    391       const soclib::common::AddressMaskingTable<vci_addr_t>   m_nline;
     397      const soclib::common::AddressMaskingTable<vci_addr_t> m_x;
     398      const soclib::common::AddressMaskingTable<vci_addr_t> m_y;
     399      const soclib::common::AddressMaskingTable<vci_addr_t> m_z;
     400      const soclib::common::AddressMaskingTable<vci_addr_t> m_nline;
    392401
    393402      // broadcast address
    394       vci_addr_t                        m_broadcast_address;
     403      vci_addr_t m_broadcast_address;
    395404
    396405      //////////////////////////////////////////////////
    397406      // Others registers
    398407      //////////////////////////////////////////////////
    399       sc_signal<size_t>   r_copies_limit; // Limit of the number of copies for one line
    400       sc_signal<size_t>   xxx_count;
     408      sc_signal<size_t> r_copies_limit; // Limit of the number of copies for one line
     409      sc_signal<size_t> xxx_count;
    401410
    402411      //////////////////////////////////////////////////
     
    411420      GenericFifo<size_t>    m_cmd_read_pktid_fifo;
    412421
    413       // Fifo between TGT_CMD fsm and WRITE fsm   
     422      // Fifo between TGT_CMD fsm and WRITE fsm
    414423      GenericFifo<uint64_t>  m_cmd_write_addr_fifo;
    415424      GenericFifo<bool>      m_cmd_write_eop_fifo;
     
    418427      GenericFifo<size_t>    m_cmd_write_pktid_fifo;
    419428      GenericFifo<data_t>    m_cmd_write_data_fifo;
    420       GenericFifo<be_t>      m_cmd_write_be_fifo;
     429      GenericFifo<be_t>      m_cmd_write_be_fifo;
    421430
    422431      // Fifo between TGT_CMD fsm and SC fsm
     
    434443      soclib::common::Segment  **m_seg;
    435444      soclib::common::Segment  **m_cseg;
    436 
    437445      ///////////////////////////////////////////////////////
    438446      // Registers controlled by the READ fsm
    439447      ///////////////////////////////////////////////////////
    440448
    441       sc_signal<int>         r_read_fsm;        // FSM state
    442       sc_signal<size_t>      r_read_copy;       // Srcid of the first copy
    443       sc_signal<size_t>      r_read_copy_cache; // Srcid of the first copy
    444       sc_signal<bool>        r_read_copy_inst;  // Type of the first copy
    445       sc_signal<tag_t>       r_read_tag;            // cache line tag (in directory)
    446       sc_signal<bool>        r_read_is_cnt;         // is_cnt bit (in directory)
    447       sc_signal<bool>        r_read_lock;           // lock bit (in directory)
    448       sc_signal<bool>        r_read_dirty;          // dirty bit (in directory)
    449       sc_signal<size_t>      r_read_count;      // number of copies
    450       sc_signal<size_t>      r_read_ptr;        // pointer to the heap
    451       sc_signal<data_t>     *r_read_data;       // data (one cache line)
    452       sc_signal<size_t>      r_read_way;        // associative way (in cache)
    453       sc_signal<size_t>      r_read_trt_index;  // Transaction Table index
    454       sc_signal<size_t>      r_read_next_ptr;   // Next entry to point to
    455       sc_signal<bool>        r_read_last_free;  // Last free entry
    456 
    457       // Buffer between READ fsm and IXR_CMD fsm (ask a missing cache line to XRAM)   
    458       sc_signal<bool>        r_read_to_ixr_cmd_req;     // valid request
    459       sc_signal<addr_t>      r_read_to_ixr_cmd_nline;   // cache line index
    460       sc_signal<size_t>      r_read_to_ixr_cmd_trdid;   // index in Transaction Table
     449      sc_signal<int>      r_read_fsm;        // FSM state
     450      sc_signal<size_t>   r_read_copy;       // Srcid of the first copy
     451      sc_signal<size_t>   r_read_copy_cache; // Srcid of the first copy
     452      sc_signal<bool>     r_read_copy_inst;  // Type of the first copy
     453      sc_signal<tag_t>    r_read_tag;        // cache line tag (in directory)
     454      sc_signal<bool>     r_read_is_cnt;     // is_cnt bit (in directory)
     455      sc_signal<bool>     r_read_lock;       // lock bit (in directory)
     456      sc_signal<bool>     r_read_dirty;      // dirty bit (in directory)
     457      sc_signal<size_t>   r_read_count;      // number of copies
     458      sc_signal<size_t>   r_read_ptr;        // pointer to the heap
     459      sc_signal<data_t> * r_read_data;       // data (one cache line)
     460      sc_signal<size_t>   r_read_way;        // associative way (in cache)
     461      sc_signal<size_t>   r_read_trt_index;  // Transaction Table index
     462      sc_signal<size_t>   r_read_next_ptr;   // Next entry to point to
     463      sc_signal<bool>     r_read_last_free;  // Last free entry
     464
     465      // Buffer between READ fsm and IXR_CMD fsm (ask a missing cache line to XRAM)
     466      sc_signal<bool>     r_read_to_ixr_cmd_req;    // valid request
     467      sc_signal<addr_t>   r_read_to_ixr_cmd_nline;  // cache line index
     468      sc_signal<size_t>   r_read_to_ixr_cmd_trdid;  // index in Transaction Table
    461469
    462470      // Buffer between READ fsm and TGT_RSP fsm (send a hit read response to L1 cache)
    463       sc_signal<bool>      r_read_to_tgt_rsp_req;       // valid request
    464       sc_signal<size_t>    r_read_to_tgt_rsp_srcid;         // Transaction srcid
    465       sc_signal<size_t>    r_read_to_tgt_rsp_trdid;         // Transaction trdid
    466       sc_signal<size_t>    r_read_to_tgt_rsp_pktid;         // Transaction pktid
    467       sc_signal<data_t>   *r_read_to_tgt_rsp_data;          // data (one cache line)
    468       sc_signal<size_t>    r_read_to_tgt_rsp_word;      // first word of the response
    469       sc_signal<size_t>    r_read_to_tgt_rsp_length;    // length of the response
     471      sc_signal<bool>     r_read_to_tgt_rsp_req;    // valid request
     472      sc_signal<size_t>   r_read_to_tgt_rsp_srcid;  // Transaction srcid
     473      sc_signal<size_t>   r_read_to_tgt_rsp_trdid;  // Transaction trdid
     474      sc_signal<size_t>   r_read_to_tgt_rsp_pktid;  // Transaction pktid
     475      sc_signal<data_t> * r_read_to_tgt_rsp_data;   // data (one cache line)
     476      sc_signal<size_t>   r_read_to_tgt_rsp_word;   // first word of the response
     477      sc_signal<size_t>   r_read_to_tgt_rsp_length; // length of the response
    470478
    471479      ///////////////////////////////////////////////////////////////
     
    473481      ///////////////////////////////////////////////////////////////
    474482
    475       sc_signal<int>       r_write_fsm;             // FSM state
    476       sc_signal<addr_t>    r_write_address;         // first word address
    477       sc_signal<size_t>    r_write_word_index;      // first word index in line
    478       sc_signal<size_t>    r_write_word_count;      // number of words in line
    479       sc_signal<size_t>    r_write_srcid;           // transaction srcid
    480       sc_signal<size_t>    r_write_trdid;           // transaction trdid
    481       sc_signal<size_t>    r_write_pktid;           // transaction pktid
    482       sc_signal<data_t>   *r_write_data;            // data (one cache line)   
    483       sc_signal<be_t>     *r_write_be;              // one byte enable per word
    484       sc_signal<bool>      r_write_byte;            // (BE != 0X0) and (BE != 0xF)
    485       sc_signal<bool>      r_write_is_cnt;          // is_cnt bit (in directory)
    486       sc_signal<bool>      r_write_lock;            // lock bit (in directory)
    487       sc_signal<tag_t>     r_write_tag;             // cache line tag (in directory)
    488       sc_signal<size_t>    r_write_copy;            // first owner of the line
    489       sc_signal<size_t>    r_write_copy_cache;      // first owner of the line
    490       sc_signal<bool>      r_write_copy_inst;       // is this owner a ICache ?
    491       sc_signal<size_t>    r_write_count;           // number of copies
    492       sc_signal<size_t>    r_write_ptr;             // pointer to the heap
    493       sc_signal<size_t>    r_write_next_ptr;        // next pointer to the heap
    494       sc_signal<bool>      r_write_to_dec;          // need to decrement update counter
    495       sc_signal<size_t>    r_write_way;                 // way of the line
    496       sc_signal<size_t>    r_write_trt_index;       // index in Transaction Table
    497       sc_signal<size_t>    r_write_upt_index;       // index in Update Table
     483      sc_signal<int>      r_write_fsm;        // FSM state
     484      sc_signal<addr_t>   r_write_address;    // first word address
     485      sc_signal<size_t>   r_write_word_index; // first word index in line
     486      sc_signal<size_t>   r_write_word_count; // number of words in line
     487      sc_signal<size_t>   r_write_srcid;      // transaction srcid
     488      sc_signal<size_t>   r_write_trdid;      // transaction trdid
     489      sc_signal<size_t>   r_write_pktid;      // transaction pktid
     490      sc_signal<data_t> * r_write_data;       // data (one cache line)
     491      sc_signal<be_t>   * r_write_be;         // one byte enable per word
     492      sc_signal<bool>     r_write_byte;       // (BE != 0X0) and (BE != 0xF)
     493      sc_signal<bool>     r_write_is_cnt;     // is_cnt bit (in directory)
     494      sc_signal<bool>     r_write_lock;       // lock bit (in directory)
     495      sc_signal<tag_t>    r_write_tag;        // cache line tag (in directory)
     496      sc_signal<size_t>   r_write_copy;       // first owner of the line
     497      sc_signal<size_t>   r_write_copy_cache; // first owner of the line
     498      sc_signal<bool>     r_write_copy_inst;  // is this owner a ICache ?
     499      sc_signal<size_t>   r_write_count;      // number of copies
     500      sc_signal<size_t>   r_write_ptr;        // pointer to the heap
     501      sc_signal<size_t>   r_write_next_ptr;   // next pointer to the heap
     502      sc_signal<bool>     r_write_to_dec;     // need to decrement update counter
     503      sc_signal<size_t>   r_write_way;        // way of the line
     504      sc_signal<size_t>   r_write_trt_index;  // index in Transaction Table
     505      sc_signal<size_t>   r_write_upt_index;  // index in Update Table
    498506
    499507      // Buffer between WRITE fsm and TGT_RSP fsm (acknowledge a write command from L1)
    500       sc_signal<bool>      r_write_to_tgt_rsp_req;              // valid request
    501       sc_signal<size_t>    r_write_to_tgt_rsp_srcid;    // transaction srcid
    502       sc_signal<size_t>    r_write_to_tgt_rsp_trdid;    // transaction trdid
    503       sc_signal<size_t>    r_write_to_tgt_rsp_pktid;    // transaction pktid
    504 
    505       // Buffer between WRITE fsm and IXR_CMD fsm (ask a missing cache line to XRAM) 
    506       sc_signal<bool>      r_write_to_ixr_cmd_req;      // valid request
    507       sc_signal<bool>      r_write_to_ixr_cmd_write;    // write request
    508       sc_signal<addr_t>    r_write_to_ixr_cmd_nline;    // cache line index
    509       sc_signal<data_t>   *r_write_to_ixr_cmd_data;         // cache line data
    510       sc_signal<size_t>    r_write_to_ixr_cmd_trdid;    // index in Transaction Table
     508      sc_signal<bool>     r_write_to_tgt_rsp_req;   // valid request
     509      sc_signal<size_t>   r_write_to_tgt_rsp_srcid; // transaction srcid
     510      sc_signal<size_t>   r_write_to_tgt_rsp_trdid; // transaction trdid
     511      sc_signal<size_t>   r_write_to_tgt_rsp_pktid; // transaction pktid
     512
     513      // Buffer between WRITE fsm and IXR_CMD fsm (ask a missing cache line to XRAM)
     514      sc_signal<bool>     r_write_to_ixr_cmd_req;   // valid request
     515      sc_signal<bool>     r_write_to_ixr_cmd_write; // write request
     516      sc_signal<addr_t>   r_write_to_ixr_cmd_nline; // cache line index
     517      sc_signal<data_t> * r_write_to_ixr_cmd_data;  // cache line data
     518      sc_signal<size_t>   r_write_to_ixr_cmd_trdid; // index in Transaction Table
    511519
    512520      // Buffer between WRITE fsm and INIT_CMD fsm (Update/Invalidate L1 caches)
    513       sc_signal<bool>      r_write_to_init_cmd_multi_req;   // valid multicast request
    514       sc_signal<bool>      r_write_to_init_cmd_brdcast_req; // valid brdcast request
    515       sc_signal<addr_t>    r_write_to_init_cmd_nline;       // cache line index
    516       sc_signal<size_t>    r_write_to_init_cmd_trdid;       // index in Update Table
    517       sc_signal<data_t>   *r_write_to_init_cmd_data;        // data (one cache line)
    518       sc_signal<be_t>     *r_write_to_init_cmd_be;              // word enable
    519       sc_signal<size_t>    r_write_to_init_cmd_count;       // number of words in line
    520       sc_signal<size_t>    r_write_to_init_cmd_index;       // index of first word in line
    521       GenericFifo<bool>    m_write_to_init_cmd_inst_fifo;   // fifo for the L1 type
    522       GenericFifo<size_t>  m_write_to_init_cmd_srcid_fifo;  // fifo for srcids
    523       GenericFifo<size_t>  m_write_to_init_cmd_cache_id_fifo; // fifo for srcids
     521      sc_signal<bool>     r_write_to_init_cmd_multi_req;     // valid multicast request
     522      sc_signal<bool>     r_write_to_init_cmd_brdcast_req;  // valid brdcast request
     523      sc_signal<addr_t>   r_write_to_init_cmd_nline;         // cache line index
     524      sc_signal<size_t>   r_write_to_init_cmd_trdid;         // index in Update Table
     525      sc_signal<data_t> * r_write_to_init_cmd_data;          // data (one cache line)
     526      sc_signal<be_t>   * r_write_to_init_cmd_be;            // word enable
     527      sc_signal<size_t>   r_write_to_init_cmd_count;         // number of words in line
     528      sc_signal<size_t>   r_write_to_init_cmd_index;         // index of first word in line
     529      GenericFifo<bool>   m_write_to_init_cmd_inst_fifo;     // fifo for the L1 type
     530      GenericFifo<size_t> m_write_to_init_cmd_srcid_fifo;    // fifo for srcids
     531      GenericFifo<size_t> m_write_to_init_cmd_cache_id_fifo; // fifo for srcids
    524532
    525533      // Buffer between WRITE fsm and INIT_RSP fsm (Decrement UPT entry)
    526       sc_signal<bool>      r_write_to_init_rsp_req;         // valid request
    527       sc_signal<size_t>    r_write_to_init_rsp_upt_index;  // index in update table
     534      sc_signal<bool>     r_write_to_init_rsp_req;       // valid request
     535      sc_signal<size_t>   r_write_to_init_rsp_upt_index; // index in update table
    528536
    529537      /////////////////////////////////////////////////////////
     
    531539      //////////////////////////////////////////////////////////
    532540
    533       sc_signal<int>       r_init_rsp_fsm;        // FSM state
    534       sc_signal<size_t>    r_init_rsp_upt_index; // index in the Update Table
    535       sc_signal<size_t>    r_init_rsp_srcid;      // pending write srcid     
    536       sc_signal<size_t>    r_init_rsp_trdid;      // pending write trdid     
    537       sc_signal<size_t>    r_init_rsp_pktid;      // pending write pktid     
    538       sc_signal<addr_t>    r_init_rsp_nline;      // pending write nline     
     541      sc_signal<int>      r_init_rsp_fsm;       // FSM state
     542      sc_signal<size_t>   r_init_rsp_upt_index; // index in the Update Table
     543      sc_signal<size_t>   r_init_rsp_srcid;     // pending write srcid
     544      sc_signal<size_t>   r_init_rsp_trdid;     // pending write trdid
     545      sc_signal<size_t>   r_init_rsp_pktid;     // pending write pktid
     546      sc_signal<addr_t>   r_init_rsp_nline;     // pending write nline
    539547
    540548      // Buffer between INIT_RSP fsm and TGT_RSP fsm (complete write/update transaction)
    541       sc_signal<bool>      r_init_rsp_to_tgt_rsp_req;           // valid request
    542       sc_signal<size_t>    r_init_rsp_to_tgt_rsp_srcid;         // Transaction srcid
    543       sc_signal<size_t>    r_init_rsp_to_tgt_rsp_trdid;         // Transaction trdid
    544       sc_signal<size_t>    r_init_rsp_to_tgt_rsp_pktid;         // Transaction pktid
     549      sc_signal<bool>     r_init_rsp_to_tgt_rsp_req;   // valid request
     550      sc_signal<size_t>   r_init_rsp_to_tgt_rsp_srcid; // Transaction srcid
     551      sc_signal<size_t>   r_init_rsp_to_tgt_rsp_trdid; // Transaction trdid
     552      sc_signal<size_t>   r_init_rsp_to_tgt_rsp_pktid; // Transaction pktid
    545553
    546554      ///////////////////////////////////////////////////////
     
    548556      ///////////////////////////////////////////////////////
    549557
    550       sc_signal<int>         r_cleanup_fsm;         // FSM state
    551       sc_signal<size_t>      r_cleanup_srcid;       // transaction srcid
    552       sc_signal<size_t>      r_cleanup_trdid;       // transaction trdid
    553       sc_signal<size_t>      r_cleanup_pktid;       // transaction pktid
    554       sc_signal<addr_t>      r_cleanup_nline;       // cache line index
    555 
    556       sc_signal<copy_t>      r_cleanup_copy;        // first copy
    557       sc_signal<copy_t>      r_cleanup_copy_cache;  // first copy
    558       sc_signal<size_t>      r_cleanup_copy_inst;   // type of the first copy
    559       sc_signal<copy_t>      r_cleanup_count;       // number of copies
    560       sc_signal<size_t>      r_cleanup_ptr;         // pointer to the heap
    561       sc_signal<size_t>      r_cleanup_prev_ptr;    // previous pointer to the heap
    562       sc_signal<size_t>      r_cleanup_prev_srcid;  // srcid of previous heap entry
    563       sc_signal<size_t>      r_cleanup_prev_cache_id; // srcid of previous heap entry
    564       sc_signal<bool>        r_cleanup_prev_inst;   // inst bit of previous heap entry
    565       sc_signal<size_t>      r_cleanup_next_ptr;    // next pointer to the heap
    566       sc_signal<tag_t>       r_cleanup_tag;             // cache line tag (in directory)
    567       sc_signal<bool>        r_cleanup_is_cnt;      // inst bit (in directory)
    568       sc_signal<bool>        r_cleanup_lock;        // lock bit (in directory)
    569       sc_signal<bool>        r_cleanup_dirty;       // dirty bit (in directory)
    570       sc_signal<size_t>      r_cleanup_way;             // associative way (in cache)
    571 
    572       sc_signal<size_t>      r_cleanup_write_srcid; // srcid of write response
    573       sc_signal<size_t>      r_cleanup_write_trdid; // trdid of write rsp
    574       sc_signal<size_t>      r_cleanup_write_pktid; // pktid of write rsp
    575       sc_signal<bool>        r_cleanup_need_rsp;    // needs a write rsp
    576 
    577       sc_signal<size_t>      r_cleanup_index;       // index of the INVAL line (in the UPT)
     558      sc_signal<int>      r_cleanup_fsm;           // FSM state
     559      sc_signal<size_t>   r_cleanup_srcid;         // transaction srcid
     560      sc_signal<size_t>   r_cleanup_trdid;         // transaction trdid
     561      sc_signal<size_t>   r_cleanup_pktid;         // transaction pktid
     562      sc_signal<addr_t>   r_cleanup_nline;         // cache line index
     563
     564      sc_signal<copy_t>   r_cleanup_copy;          // first copy
     565      sc_signal<copy_t>   r_cleanup_copy_cache;    // first copy
     566      sc_signal<size_t>   r_cleanup_copy_inst;     // type of the first copy
     567      sc_signal<copy_t>   r_cleanup_count;         // number of copies
     568      sc_signal<size_t>   r_cleanup_ptr;           // pointer to the heap
     569      sc_signal<size_t>   r_cleanup_prev_ptr;      // previous pointer to the heap
     570      sc_signal<size_t>   r_cleanup_prev_srcid;    // srcid of previous heap entry
     571      sc_signal<size_t>   r_cleanup_prev_cache_id; // srcid of previous heap entry
     572      sc_signal<bool>     r_cleanup_prev_inst;     // inst bit of previous heap entry
     573      sc_signal<size_t>   r_cleanup_next_ptr;      // next pointer to the heap
     574      sc_signal<tag_t>    r_cleanup_tag;           // cache line tag (in directory)
     575      sc_signal<bool>     r_cleanup_is_cnt;        // inst bit (in directory)
     576      sc_signal<bool>     r_cleanup_lock;          // lock bit (in directory)
     577      sc_signal<bool>     r_cleanup_dirty;         // dirty bit (in directory)
     578      sc_signal<size_t>   r_cleanup_way;           // associative way (in cache)
     579
     580      sc_signal<size_t>   r_cleanup_write_srcid;  // srcid of write response
     581      sc_signal<size_t>   r_cleanup_write_trdid;  // trdid of write rsp
     582      sc_signal<size_t>   r_cleanup_write_pktid;  // pktid of write rsp
     583      sc_signal<bool>     r_cleanup_need_rsp;      // needs a write rsp
     584
     585      sc_signal<size_t>   r_cleanup_index;         // index of the INVAL line (in the UPT)
    578586
    579587      // Buffer between CLEANUP fsm and TGT_RSP fsm (acknowledge a write command from L1)
    580       sc_signal<bool>      r_cleanup_to_tgt_rsp_req;    // valid request
    581       sc_signal<size_t>    r_cleanup_to_tgt_rsp_srcid; // transaction srcid
    582       sc_signal<size_t>    r_cleanup_to_tgt_rsp_trdid;  // transaction trdid
    583       sc_signal<size_t>    r_cleanup_to_tgt_rsp_pktid;  // transaction pktid
     588      sc_signal<bool>     r_cleanup_to_tgt_rsp_req;   // valid request
     589      sc_signal<size_t>   r_cleanup_to_tgt_rsp_srcid; // transaction srcid
     590      sc_signal<size_t>   r_cleanup_to_tgt_rsp_trdid; // transaction trdid
     591      sc_signal<size_t>   r_cleanup_to_tgt_rsp_pktid; // transaction pktid
    584592
    585593      ///////////////////////////////////////////////////////
     
    587595      ///////////////////////////////////////////////////////
    588596
    589       sc_signal<int>       r_sc_fsm;                        // FSM state
    590       sc_signal<data_t>    r_sc_wdata;                      // write data word
    591       sc_signal<data_t>    *r_sc_rdata;                     // read data word
    592       sc_signal<uint32_t>  r_sc_lfsr;                       // lfsr for random introducing
    593       sc_signal<size_t>    r_sc_cpt;                        // size of command
    594       sc_signal<copy_t>    r_sc_copy;                       // Srcid of the first copy
    595       sc_signal<copy_t>    r_sc_copy_cache;                // Srcid of the first copy
    596       sc_signal<bool>      r_sc_copy_inst;                      // Type of the first copy
    597       sc_signal<size_t>    r_sc_count;                      // number of copies
    598       sc_signal<size_t>    r_sc_ptr;                        // pointer to the heap
    599       sc_signal<size_t>    r_sc_next_ptr;                       // next pointer to the heap
    600       sc_signal<bool>      r_sc_is_cnt;                     // is_cnt bit (in directory)
    601       sc_signal<bool>      r_sc_dirty;                      // dirty bit (in directory)
    602       sc_signal<size_t>    r_sc_way;                            // way in directory
    603       sc_signal<size_t>    r_sc_set;                            // set in directory
    604       sc_signal<data_t>    r_sc_tag;                            // cache line tag (in directory)
    605       sc_signal<size_t>    r_sc_trt_index;                  // Transaction Table index
    606       sc_signal<size_t>    r_sc_upt_index;                  // Update Table index
    607 
    608       // Buffer between SC fsm and INIT_CMD fsm (XRAM read)     
    609       sc_signal<bool>      r_sc_to_ixr_cmd_req;             // valid request
    610       sc_signal<addr_t>    r_sc_to_ixr_cmd_nline;          // cache line index
    611       sc_signal<size_t>    r_sc_to_ixr_cmd_trdid;          // index in Transaction Table
    612       sc_signal<bool>      r_sc_to_ixr_cmd_write;          // write request
    613       sc_signal<data_t>   *r_sc_to_ixr_cmd_data;            // cache line data
     597      sc_signal<int>      r_sc_fsm;        // FSM state
     598      sc_signal<data_t>   r_sc_wdata;      // write data word
     599      sc_signal<data_t> * r_sc_rdata;      // read data word
     600      sc_signal<uint32_t> r_sc_lfsr;       // lfsr for random introducing
     601      sc_signal<size_t>   r_sc_cpt;        // size of command
     602      sc_signal<copy_t>   r_sc_copy;       // Srcid of the first copy
     603      sc_signal<copy_t>   r_sc_copy_cache; // Srcid of the first copy
     604      sc_signal<bool>     r_sc_copy_inst;  // Type of the first copy
     605      sc_signal<size_t>   r_sc_count;      // number of copies
     606      sc_signal<size_t>   r_sc_ptr;        // pointer to the heap
     607      sc_signal<size_t>   r_sc_next_ptr;   // next pointer to the heap
     608      sc_signal<bool>     r_sc_is_cnt;     // is_cnt bit (in directory)
     609      sc_signal<bool>     r_sc_dirty;      // dirty bit (in directory)
     610      sc_signal<size_t>   r_sc_way;        // way in directory
     611      sc_signal<size_t>   r_sc_set;        // set in directory
     612      sc_signal<data_t>   r_sc_tag;        // cache line tag (in directory)
     613      sc_signal<size_t>   r_sc_trt_index;  // Transaction Table index
     614      sc_signal<size_t>   r_sc_upt_index;  // Update Table index
     615
     616      // Buffer between SC fsm and INIT_CMD fsm (XRAM read)
     617      sc_signal<bool>     r_sc_to_ixr_cmd_req;   // valid request
     618      sc_signal<addr_t>   r_sc_to_ixr_cmd_nline; // cache line index
     619      sc_signal<size_t>   r_sc_to_ixr_cmd_trdid; // index in Transaction Table
     620      sc_signal<bool>     r_sc_to_ixr_cmd_write; // write request
     621      sc_signal<data_t> * r_sc_to_ixr_cmd_data;  // cache line data
    614622
    615623
    616624      // Buffer between SC fsm and TGT_RSP fsm
    617       sc_signal<bool>      r_sc_to_tgt_rsp_req;             // valid request
    618       sc_signal<data_t>    r_sc_to_tgt_rsp_data;            // read data word
    619       sc_signal<size_t>    r_sc_to_tgt_rsp_srcid;          // Transaction srcid
    620       sc_signal<size_t>    r_sc_to_tgt_rsp_trdid;          // Transaction trdid
    621       sc_signal<size_t>    r_sc_to_tgt_rsp_pktid;          // Transaction pktid
     625      sc_signal<bool>     r_sc_to_tgt_rsp_req;   // valid request
     626      sc_signal<data_t>   r_sc_to_tgt_rsp_data;  // read data word
     627      sc_signal<size_t>   r_sc_to_tgt_rsp_srcid; // Transaction srcid
     628      sc_signal<size_t>   r_sc_to_tgt_rsp_trdid; // Transaction trdid
     629      sc_signal<size_t>   r_sc_to_tgt_rsp_pktid; // Transaction pktid
    622630
    623631      // Buffer between SC fsm and INIT_CMD fsm (Update/Invalidate L1 caches)
    624       sc_signal<bool>      r_sc_to_init_cmd_multi_req;      // valid request
    625       sc_signal<bool>      r_sc_to_init_cmd_brdcast_req;    // brdcast request
    626       sc_signal<addr_t>    r_sc_to_init_cmd_nline;              // cache line index
    627       sc_signal<size_t>    r_sc_to_init_cmd_trdid;              // index in Update Table
    628       sc_signal<data_t>    r_sc_to_init_cmd_wdata;          // data (one word)
    629       sc_signal<bool>      r_sc_to_init_cmd_is_long;        // it is a 64 bits SC
    630       sc_signal<data_t>    r_sc_to_init_cmd_wdata_high;     // data high (one word)
    631       sc_signal<size_t>    r_sc_to_init_cmd_index;              // index of the word in line
    632       GenericFifo<bool>    m_sc_to_init_cmd_inst_fifo;      // fifo for the L1 type
    633       GenericFifo<size_t>  m_sc_to_init_cmd_srcid_fifo;     // fifo for srcids
    634       GenericFifo<size_t>  m_sc_to_init_cmd_cache_id_fifo; // fifo for srcids
     632      sc_signal<bool>     r_sc_to_init_cmd_multi_req;     // valid request
     633      sc_signal<bool>     r_sc_to_init_cmd_brdcast_req;   // brdcast request
     634      sc_signal<addr_t>   r_sc_to_init_cmd_nline;         // cache line index
     635      sc_signal<size_t>   r_sc_to_init_cmd_trdid;         // index in Update Table
     636      sc_signal<data_t>   r_sc_to_init_cmd_wdata;         // data (one word)
     637      sc_signal<bool>     r_sc_to_init_cmd_is_long;       // it is a 64 bits SC
     638      sc_signal<data_t>   r_sc_to_init_cmd_wdata_high;    // data high (one word)
     639      sc_signal<size_t>   r_sc_to_init_cmd_index;         // index of the word in line
     640      GenericFifo<bool>   m_sc_to_init_cmd_inst_fifo;     // fifo for the L1 type
     641      GenericFifo<size_t> m_sc_to_init_cmd_srcid_fifo;    // fifo for srcids
     642      GenericFifo<size_t> m_sc_to_init_cmd_cache_id_fifo; // fifo for srcids
    635643
    636644      // Buffer between SC fsm and INIT_RSP fsm (Decrement UPT entry)
    637       sc_signal<bool>      r_sc_to_init_rsp_req;            // valid request
    638       sc_signal<size_t>    r_sc_to_init_rsp_upt_index;      // index in update table
     645      sc_signal<bool>     r_sc_to_init_rsp_req;       // valid request
     646      sc_signal<size_t>   r_sc_to_init_rsp_upt_index; // index in update table
    639647
    640648      ////////////////////////////////////////////////////
     
    642650      ////////////////////////////////////////////////////
    643651
    644       sc_signal<int>       r_ixr_rsp_fsm;       // FSM state
    645       sc_signal<size_t>    r_ixr_rsp_trt_index; // TRT entry index
    646       sc_signal<size_t>    r_ixr_rsp_cpt;           // word counter
     652      sc_signal<int>      r_ixr_rsp_fsm;       // FSM state
     653      sc_signal<size_t>   r_ixr_rsp_trt_index; // TRT entry index
     654      sc_signal<size_t>   r_ixr_rsp_cpt;       // word counter
    647655
    648656      // Buffer between IXR_RSP fsm and XRAM_RSP fsm  (response from the XRAM)
    649       sc_signal<bool>     *r_ixr_rsp_to_xram_rsp_rok;   // A xram response is ready
     657      sc_signal<bool>   * r_ixr_rsp_to_xram_rsp_rok; // A xram response is ready
    650658
    651659      ////////////////////////////////////////////////////
     
    653661      ////////////////////////////////////////////////////
    654662
    655       sc_signal<int>       r_xram_rsp_fsm;                      // FSM state
    656       sc_signal<size_t>    r_xram_rsp_trt_index;            // TRT entry index
    657       TransactionTabEntry  r_xram_rsp_trt_buf;              // TRT entry local buffer
    658       sc_signal<bool>      r_xram_rsp_victim_inval;         // victim line invalidate
    659       sc_signal<bool>      r_xram_rsp_victim_is_cnt;    // victim line inst bit
    660       sc_signal<bool>      r_xram_rsp_victim_dirty;         // victim line dirty bit
    661       sc_signal<size_t>    r_xram_rsp_victim_way;           // victim line way
    662       sc_signal<size_t>    r_xram_rsp_victim_set;           // victim line set
    663       sc_signal<addr_t>    r_xram_rsp_victim_nline;     // victim line index
    664       sc_signal<copy_t>    r_xram_rsp_victim_copy;      // victim line first copy
    665       sc_signal<copy_t>    r_xram_rsp_victim_copy_cache;// victim line first copy
    666       sc_signal<bool>      r_xram_rsp_victim_copy_inst; // victim line type of first copy
    667       sc_signal<size_t>    r_xram_rsp_victim_count;         // victim line number of copies
    668       sc_signal<size_t>    r_xram_rsp_victim_ptr;       // victim line pointer to the heap
    669       sc_signal<data_t>   *r_xram_rsp_victim_data;          // victim line data
    670       sc_signal<size_t>    r_xram_rsp_upt_index;            // UPT entry index
    671       sc_signal<size_t>    r_xram_rsp_next_ptr;         // Next pointer to the heap
     663      sc_signal<int>      r_xram_rsp_fsm;               // FSM state
     664      sc_signal<size_t>   r_xram_rsp_trt_index;         // TRT entry index
     665      TransactionTabEntry r_xram_rsp_trt_buf;           // TRT entry local buffer
     666      sc_signal<bool>     r_xram_rsp_victim_inval;      // victim line invalidate
     667      sc_signal<bool>     r_xram_rsp_victim_is_cnt;     // victim line inst bit
     668      sc_signal<bool>     r_xram_rsp_victim_dirty;      // victim line dirty bit
     669      sc_signal<size_t>   r_xram_rsp_victim_way;        // victim line way
     670      sc_signal<size_t>   r_xram_rsp_victim_set;        // victim line set
     671      sc_signal<addr_t>   r_xram_rsp_victim_nline;      // victim line index
     672      sc_signal<copy_t>   r_xram_rsp_victim_copy;       // victim line first copy
     673      sc_signal<copy_t>   r_xram_rsp_victim_copy_cache; // victim line first copy
     674      sc_signal<bool>     r_xram_rsp_victim_copy_inst;  // victim line type of first copy
     675      sc_signal<size_t>   r_xram_rsp_victim_count;      // victim line number of copies
     676      sc_signal<size_t>   r_xram_rsp_victim_ptr;        // victim line pointer to the heap
     677      sc_signal<data_t> * r_xram_rsp_victim_data;       // victim line data
     678      sc_signal<size_t>   r_xram_rsp_upt_index;         // UPT entry index
     679      sc_signal<size_t>   r_xram_rsp_next_ptr;          // Next pointer to the heap
    672680
    673681      // Buffer between XRAM_RSP fsm and TGT_RSP fsm  (response to L1 cache)
    674       sc_signal<bool>      r_xram_rsp_to_tgt_rsp_req;   // Valid request
    675       sc_signal<size_t>    r_xram_rsp_to_tgt_rsp_srcid; // Transaction srcid
    676       sc_signal<size_t>    r_xram_rsp_to_tgt_rsp_trdid; // Transaction trdid
    677       sc_signal<size_t>    r_xram_rsp_to_tgt_rsp_pktid; // Transaction pktid
    678       sc_signal<data_t>   *r_xram_rsp_to_tgt_rsp_data;  // data (one cache line)
    679       sc_signal<size_t>    r_xram_rsp_to_tgt_rsp_word;  // first word index
    680       sc_signal<size_t>    r_xram_rsp_to_tgt_rsp_length;// length of the response
    681       sc_signal<bool>      r_xram_rsp_to_tgt_rsp_rerror;// send error to requester
    682 
    683       // Buffer between XRAM_RSP fsm and INIT_CMD fsm (Inval L1 Caches) 
    684       sc_signal<bool>       r_xram_rsp_to_init_cmd_multi_req;       // Valid request
    685       sc_signal<bool>       r_xram_rsp_to_init_cmd_brdcast_req;     // Broadcast request
    686       sc_signal<addr_t>     r_xram_rsp_to_init_cmd_nline;           // cache line index;
    687       sc_signal<size_t>     r_xram_rsp_to_init_cmd_trdid;           // index of UPT entry
    688       GenericFifo<bool>     m_xram_rsp_to_init_cmd_inst_fifo;       // fifo for the L1 type
    689       GenericFifo<size_t>   m_xram_rsp_to_init_cmd_srcid_fifo;      // fifo for srcids
    690       GenericFifo<size_t>   m_xram_rsp_to_init_cmd_cache_id_fifo;      // fifo for srcids
     682      sc_signal<bool>     r_xram_rsp_to_tgt_rsp_req;    // Valid request
     683      sc_signal<size_t>   r_xram_rsp_to_tgt_rsp_srcid;  // Transaction srcid
     684      sc_signal<size_t>   r_xram_rsp_to_tgt_rsp_trdid;  // Transaction trdid
     685      sc_signal<size_t>   r_xram_rsp_to_tgt_rsp_pktid;  // Transaction pktid
     686      sc_signal<data_t> * r_xram_rsp_to_tgt_rsp_data;   // data (one cache line)
     687      sc_signal<size_t>   r_xram_rsp_to_tgt_rsp_word;   // first word index
     688      sc_signal<size_t>   r_xram_rsp_to_tgt_rsp_length; // length of the response
     689      sc_signal<bool>     r_xram_rsp_to_tgt_rsp_rerror; // send error to requester
     690
     691      // Buffer between XRAM_RSP fsm and INIT_CMD fsm (Inval L1 Caches)
     692      sc_signal<bool>     r_xram_rsp_to_init_cmd_multi_req;     // Valid request
     693      sc_signal<bool>     r_xram_rsp_to_init_cmd_brdcast_req;   // Broadcast request
     694      sc_signal<addr_t>   r_xram_rsp_to_init_cmd_nline;         // cache line index;
     695      sc_signal<size_t>   r_xram_rsp_to_init_cmd_trdid;         // index of UPT entry
     696      GenericFifo<bool>   m_xram_rsp_to_init_cmd_inst_fifo;     // fifo for the L1 type
     697      GenericFifo<size_t> m_xram_rsp_to_init_cmd_srcid_fifo;    // fifo for srcids
     698      GenericFifo<size_t> m_xram_rsp_to_init_cmd_cache_id_fifo; // fifo for srcids
    691699
    692700      // Buffer between XRAM_RSP fsm and IXR_CMD fsm (XRAM write)
    693       sc_signal<bool>      r_xram_rsp_to_ixr_cmd_req;   // Valid request
    694       sc_signal<addr_t>    r_xram_rsp_to_ixr_cmd_nline; // cache line index
    695       sc_signal<data_t>   *r_xram_rsp_to_ixr_cmd_data;  // cache line data
    696       sc_signal<size_t>    r_xram_rsp_to_ixr_cmd_trdid; // index in transaction table
     701      sc_signal<bool>     r_xram_rsp_to_ixr_cmd_req;   // Valid request
     702      sc_signal<addr_t>   r_xram_rsp_to_ixr_cmd_nline; // cache line index
     703      sc_signal<data_t> * r_xram_rsp_to_ixr_cmd_data;  // cache line data
     704      sc_signal<size_t>   r_xram_rsp_to_ixr_cmd_trdid; // index in transaction table
    697705
    698706      ////////////////////////////////////////////////////
     
    700708      ////////////////////////////////////////////////////
    701709
    702       sc_signal<int>       r_ixr_cmd_fsm;
    703       sc_signal<size_t>    r_ixr_cmd_cpt;
     710      sc_signal<int>      r_ixr_cmd_fsm;
     711      sc_signal<size_t>   r_ixr_cmd_cpt;
    704712
    705713      ////////////////////////////////////////////////////
     
    707715      ////////////////////////////////////////////////////
    708716
    709       sc_signal<int>       r_tgt_rsp_fsm;
    710       sc_signal<size_t>    r_tgt_rsp_cpt;
     717      sc_signal<int>      r_tgt_rsp_fsm;
     718      sc_signal<size_t>   r_tgt_rsp_cpt;
    711719
    712720      ////////////////////////////////////////////////////
     
    714722      ////////////////////////////////////////////////////
    715723
    716       sc_signal<int>      r_init_cmd_fsm;
     724      sc_signal<int>      r_init_cmd_fsm;
    717725      sc_signal<size_t>   r_init_cmd_cpt;
    718726      sc_signal<bool>     r_init_cmd_inst;
     
    722730      ////////////////////////////////////////////////////
    723731
    724       sc_signal<int>            r_alloc_dir_fsm;
     732      sc_signal<int>      r_alloc_dir_fsm;
     733      sc_signal<unsigned> r_alloc_dir_reset_cpt;
    725734
    726735      ////////////////////////////////////////////////////
     
    728737      ////////////////////////////////////////////////////
    729738
    730       sc_signal<int>            r_alloc_trt_fsm;
     739      sc_signal<int>      r_alloc_trt_fsm;
    731740
    732741      ////////////////////////////////////////////////////
     
    734743      ////////////////////////////////////////////////////
    735744
    736       sc_signal<int>            r_alloc_upt_fsm;
     745      sc_signal<int>      r_alloc_upt_fsm;
    737746
    738747      ////////////////////////////////////////////////////
     
    740749      ////////////////////////////////////////////////////
    741750
    742       sc_signal<int>            r_alloc_heap_fsm;
    743 
     751      sc_signal<int>      r_alloc_heap_fsm;
     752      sc_signal<unsigned> r_alloc_heap_reset_cpt;
    744753    }; // end class VciMemCacheV4
    745754
     
    755764// End:
    756765
    757 // vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=4:softtabstop=4
    758 
     766// vim: filetype=cpp:expandtab:shiftwidth=2:tabstop=2:softtabstop=2
     767
Note: See TracChangeset for help on using the changeset viewer.