Ignore:
Timestamp:
Oct 1, 2014, 5:44:55 PM (10 years ago)
Author:
devigne
Message:

RWT Commit : vci_cc_vcache_wrapper cosmetic

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/RWT/modules/vci_cc_vcache_wrapper/caba/source/include/vci_cc_vcache_wrapper.h

    r824 r827  
    3535#include <inttypes.h>
    3636#include <systemc>
    37 
    3837#include "caba_base_module.h"
    3938#include "multi_write_buffer.h"
     
    307306    soclib::common::AddressDecodingTable<uint64_t, bool> m_cacheability_table;
    308307
    309     const size_t                        m_srcid;
    310     const size_t                        m_cc_global_id;
    311     const size_t                        m_nline_width;
    312     const size_t                        m_itlb_ways;
    313     const size_t                        m_itlb_sets;
    314     const size_t                        m_dtlb_ways;
    315     const size_t                        m_dtlb_sets;
    316     const size_t                        m_icache_ways;
    317     const size_t                        m_icache_sets;
    318     const paddr_t                       m_icache_yzmask;
    319     const size_t                        m_icache_words;
    320     const size_t                        m_dcache_ways;
    321     const size_t                        m_dcache_sets;
    322     const paddr_t                       m_dcache_yzmask;
    323     const size_t                        m_dcache_words;
    324     const size_t                        m_x_width;
    325     const size_t                        m_y_width;
    326     const size_t                        m_proc_id;
    327     const uint32_t                      m_max_frozen_cycles;
    328     const size_t                        m_paddr_nbits;
    329     uint32_t                            m_debug_start_cycle;
    330     bool                                m_debug_ok;
    331 
    332     uint32_t                            m_dcache_paddr_ext_reset;
    333     uint32_t                            m_icache_paddr_ext_reset;
     308    const size_t   m_srcid;
     309    const size_t   m_cc_global_id;
     310    const size_t   m_nline_width;
     311    const size_t   m_itlb_ways;
     312    const size_t   m_itlb_sets;
     313    const size_t   m_dtlb_ways;
     314    const size_t   m_dtlb_sets;
     315    const size_t   m_icache_ways;
     316    const size_t   m_icache_sets;
     317    const paddr_t  m_icache_yzmask;
     318    const size_t   m_icache_words;
     319    const size_t   m_dcache_ways;
     320    const size_t   m_dcache_sets;
     321    const paddr_t  m_dcache_yzmask;
     322    const size_t   m_dcache_words;
     323    const size_t   m_x_width;
     324    const size_t   m_y_width;
     325    const size_t   m_proc_id;
     326    const uint32_t m_max_frozen_cycles;
     327    const size_t   m_paddr_nbits;
     328    uint32_t       m_debug_start_cycle;
     329    bool           m_debug_ok;
     330
     331    uint32_t       m_dcache_paddr_ext_reset;
     332    uint32_t       m_icache_paddr_ext_reset;
    334333
    335334    ////////////////////////////////////////
     
    344343    // debug variables
    345344    /////////////////////////////////////////////
    346     bool                                m_debug_previous_i_hit;
    347     bool                                m_debug_previous_d_hit;
    348     bool                                m_debug_activated;
     345    bool m_debug_previous_i_hit;
     346    bool m_debug_previous_d_hit;
     347    bool m_debug_activated;
    349348
    350349    ///////////////////////////////
    351350    // Software visible REGISTERS
    352351    ///////////////////////////////
    353     sc_signal<uint32_t>     r_mmu_ptpr;      // page table pointer register
    354     sc_signal<uint32_t>     r_mmu_mode;      // mmu mode register
    355     sc_signal<uint32_t>     r_mmu_word_lo;  // mmu misc data low
    356     sc_signal<uint32_t>     r_mmu_word_hi;  // mmu misc data hight
    357     sc_signal<uint32_t>     r_mmu_ibvar;     // mmu bad instruction address
    358     sc_signal<uint32_t>     r_mmu_dbvar;     // mmu bad data address
    359     sc_signal<uint32_t>     r_mmu_ietr;      // mmu instruction error type
    360     sc_signal<uint32_t>     r_mmu_detr;      // mmu data error type
    361     uint32_t                r_mmu_params;    // read-only
    362     uint32_t                r_mmu_release;  // read_only
     352    sc_signal<uint32_t> r_mmu_ptpr;    // page table pointer register
     353    sc_signal<uint32_t> r_mmu_mode;    // mmu mode register
     354    sc_signal<uint32_t> r_mmu_word_lo; // mmu misc data low
     355    sc_signal<uint32_t> r_mmu_word_hi; // mmu misc data hight
     356    sc_signal<uint32_t> r_mmu_ibvar;   // mmu bad instruction address
     357    sc_signal<uint32_t> r_mmu_dbvar;   // mmu bad data address
     358    sc_signal<uint32_t> r_mmu_ietr;    // mmu instruction error type
     359    sc_signal<uint32_t> r_mmu_detr;    // mmu data error type
     360    uint32_t            r_mmu_params;  // read-only
     361    uint32_t            r_mmu_release; // read_only
    363362
    364363
     
    366365    // ICACHE FSM REGISTERS
    367366    //////////////////////////////
    368     sc_signal<int>          r_icache_fsm;               // state register
    369     sc_signal<int>          r_icache_fsm_save;          // return state for coherence op
    370     sc_signal<paddr_t>      r_icache_vci_paddr;         // physical address
    371     sc_signal<uint32_t>     r_icache_vaddr_save;        // virtual address from processor
     367    sc_signal<int>      r_icache_fsm;        // state register
     368    sc_signal<int>      r_icache_fsm_save;   // return state for coherence op
     369    sc_signal<paddr_t>  r_icache_vci_paddr;  // physical address
     370    sc_signal<uint32_t> r_icache_vaddr_save; // virtual address from processor
    372371
    373372    // icache miss handling
    374     sc_signal<size_t>       r_icache_miss_way;          // selected way for cache update
    375     sc_signal<size_t>       r_icache_miss_set;          // selected set for cache update
    376     sc_signal<size_t>       r_icache_miss_word;         // word index ( cache update)
    377     sc_signal<bool>         r_icache_miss_inval;        // coherence request matching a miss
    378     sc_signal<bool>         r_icache_miss_clack;        // waiting for a cleanup acknowledge
     373    sc_signal<size_t>   r_icache_miss_way;   // selected way for cache update
     374    sc_signal<size_t>   r_icache_miss_set;   // selected set for cache update
     375    sc_signal<size_t>   r_icache_miss_word;  // word index ( cache update)
     376    sc_signal<bool>     r_icache_miss_inval; // coherence request matching a miss
     377    sc_signal<bool>     r_icache_miss_clack; // waiting for a cleanup acknowledge
    379378
    380379    // coherence request handling
    381     sc_signal<size_t>       r_icache_cc_way;            // selected way for cc update/inval
    382     sc_signal<size_t>       r_icache_cc_set;            // selected set for cc update/inval
    383     sc_signal<size_t>       r_icache_cc_word;           // word counter for cc update
    384     sc_signal<bool>         r_icache_cc_need_write;    // activate the cache for writing
     380    sc_signal<size_t>   r_icache_cc_way;        // selected way for cc update/inval
     381    sc_signal<size_t>   r_icache_cc_set;        // selected set for cc update/inval
     382    sc_signal<size_t>   r_icache_cc_word;       // word counter for cc update
     383    sc_signal<bool>     r_icache_cc_need_write; // activate the cache for writing
    385384
    386385    // coherence clack handling
    387     sc_signal<bool>         r_icache_clack_req;        // clack request
    388     sc_signal<size_t>       r_icache_clack_way;        // clack way
    389     sc_signal<size_t>       r_icache_clack_set;        // clack set
     386    sc_signal<bool>     r_icache_clack_req; // clack request
     387    sc_signal<size_t>   r_icache_clack_way; // clack way
     388    sc_signal<size_t>   r_icache_clack_set; // clack set
    390389
    391390    // icache flush handling
    392     sc_signal<size_t>       r_icache_flush_count;      // slot counter used for cache flush
     391    sc_signal<size_t>   r_icache_flush_count; // slot counter used for cache flush
    393392
    394393    // communication between ICACHE FSM and VCI_CMD FSM
    395     sc_signal<bool>         r_icache_miss_req;          // cached read miss
    396     sc_signal<bool>         r_icache_unc_req;            // uncached read miss
     394    sc_signal<bool>     r_icache_miss_req; // cached read miss
     395    sc_signal<bool>     r_icache_unc_req;  // uncached read miss
    397396
    398397    // communication between ICACHE FSM and DCACHE FSM
    399     sc_signal<bool>         r_icache_tlb_miss_req;       // (set icache/reset dcache)
    400     sc_signal<bool>         r_icache_tlb_rsp_error;      // tlb miss response error
     398    sc_signal<bool>     r_icache_tlb_miss_req;  // (set icache/reset dcache)
     399    sc_signal<bool>     r_icache_tlb_rsp_error; // tlb miss response error
    401400
    402401    // Flip-Flop in ICACHE FSM for saving the cleanup victim request
    403     sc_signal<bool>         r_icache_cleanup_victim_req;
    404     sc_signal<paddr_t>      r_icache_cleanup_victim_nline;
     402    sc_signal<bool>     r_icache_cleanup_victim_req;
     403    sc_signal<paddr_t>  r_icache_cleanup_victim_nline;
    405404
    406405    // communication between ICACHE FSM and CC_SEND FSM
    407     sc_signal<bool>         r_icache_cc_send_req;           // ICACHE cc_send request
    408     sc_signal<int>          r_icache_cc_send_type;          // ICACHE cc_send request type
    409     sc_signal<paddr_t>      r_icache_cc_send_nline;         // ICACHE cc_send nline
    410     sc_signal<size_t>       r_icache_cc_send_way;           // ICACHE cc_send way
    411     sc_signal<size_t>       r_icache_cc_send_updt_tab_idx; // ICACHE cc_send update table index
     406    sc_signal<bool>     r_icache_cc_send_req;          // ICACHE cc_send request
     407    sc_signal<int>      r_icache_cc_send_type;         // ICACHE cc_send request type
     408    sc_signal<paddr_t>  r_icache_cc_send_nline;        // ICACHE cc_send nline
     409    sc_signal<size_t>   r_icache_cc_send_way;          // ICACHE cc_send way
     410    sc_signal<size_t>   r_icache_cc_send_updt_tab_idx; // ICACHE cc_send update table index
    412411
    413412    // Physical address extension for data access
    414     sc_signal<uint32_t>     r_icache_paddr_ext;            // CP2 register (if vci_address > 32)
     413    sc_signal<uint32_t> r_icache_paddr_ext; // CP2 register (if vci_address > 32)
    415414
    416415    ///////////////////////////////
    417416    // DCACHE FSM REGISTERS
    418417    ///////////////////////////////
    419     sc_signal<int>          r_dcache_fsm;               // state register
    420     sc_signal<int>          r_dcache_fsm_cc_save;       // return state for coherence op
    421     sc_signal<int>          r_dcache_fsm_scan_save;     // return state for tlb scan op
     418    sc_signal<int>      r_dcache_fsm;             // state register
     419    sc_signal<int>      r_dcache_fsm_cc_save;     // return state for coherence op
     420    sc_signal<int>      r_dcache_fsm_scan_save;   // return state for tlb scan op
    422421    // registers written in P0 stage (used in P1 stage)
    423     sc_signal<bool>         r_dcache_wbuf_req;          // WBUF must be written in P1 stage
    424     sc_signal<bool>         r_dcache_updt_req;          // DCACHE must be updated in P1 stage
    425     sc_signal<uint32_t>     r_dcache_save_vaddr;        // virtual address (from proc)
    426     sc_signal<uint32_t>     r_dcache_save_wdata;        // write data (from proc)
    427     sc_signal<uint32_t>     r_dcache_save_be;           // byte enable (from proc)
    428     sc_signal<paddr_t>      r_dcache_save_paddr;        // physical address
    429     sc_signal<size_t>       r_dcache_save_cache_way;    // selected way (from dcache)
    430     sc_signal<size_t>       r_dcache_save_cache_set;    // selected set (from dcache)
    431     sc_signal<size_t>       r_dcache_save_cache_word;  // selected word (from dcache)
     422    sc_signal<bool>     r_dcache_wbuf_req;        // WBUF must be written in P1 stage
     423    sc_signal<bool>     r_dcache_updt_req;        // DCACHE must be updated in P1 stage
     424    sc_signal<uint32_t> r_dcache_save_vaddr;      // virtual address (from proc)
     425    sc_signal<uint32_t> r_dcache_save_wdata;      // write data (from proc)
     426    sc_signal<uint32_t> r_dcache_save_be;         // byte enable (from proc)
     427    sc_signal<paddr_t>  r_dcache_save_paddr;      // physical address
     428    sc_signal<size_t>   r_dcache_save_cache_way;  // selected way (from dcache)
     429    sc_signal<size_t>   r_dcache_save_cache_set;  // selected set (from dcache)
     430    sc_signal<size_t>   r_dcache_save_cache_word; // selected word (from dcache)
    432431    // registers used by the Dirty bit sub-fsm
    433     sc_signal<paddr_t>      r_dcache_dirty_paddr;      // PTE physical address
    434     sc_signal<size_t>       r_dcache_dirty_way;         // way to invalidate in dcache
    435     sc_signal<size_t>       r_dcache_dirty_set;         // set to invalidate in dcache
     432    sc_signal<paddr_t>  r_dcache_dirty_paddr; // PTE physical address
     433    sc_signal<size_t>   r_dcache_dirty_way;   // way to invalidate in dcache
     434    sc_signal<size_t>   r_dcache_dirty_set;   // set to invalidate in dcache
    436435
    437436    // communication between DCACHE FSM and VCI_CMD FSM
    438     sc_signal<paddr_t>      r_dcache_vci_paddr;         // physical address for VCI command
    439     sc_signal<uint32_t>     r_dcache_vci_wdata;         // write unc data for VCI command
    440     sc_signal<bool>         r_dcache_vci_miss_req;      // read miss request
    441     sc_signal<bool>         r_dcache_vci_unc_req;       // uncacheable request (read/write)
    442     sc_signal<uint32_t>     r_dcache_vci_unc_be;        // uncacheable byte enable
    443     sc_signal<uint32_t>     r_dcache_vci_unc_write;    // uncacheable data write request
    444     sc_signal<bool>         r_dcache_vci_cas_req;       // atomic write request CAS
    445     sc_signal<uint32_t>     r_dcache_vci_cas_old;       // previous data value for a CAS
    446     sc_signal<uint32_t>     r_dcache_vci_cas_new;       // new data value for a CAS
    447     sc_signal<bool>         r_dcache_vci_ll_req;        // atomic read request LL
    448     sc_signal<bool>         r_dcache_vci_sc_req;        // atomic write request SC
    449     sc_signal<uint32_t>     r_dcache_vci_sc_data;       // SC data (command)
     437    sc_signal<paddr_t>  r_dcache_vci_paddr;     // physical address for VCI command
     438    sc_signal<uint32_t> r_dcache_vci_wdata;     // write unc data for VCI command
     439    sc_signal<bool>     r_dcache_vci_miss_req;  // read miss request
     440    sc_signal<bool>     r_dcache_vci_unc_req;   // uncacheable request (read/write)
     441    sc_signal<uint32_t> r_dcache_vci_unc_be;    // uncacheable byte enable
     442    sc_signal<uint32_t> r_dcache_vci_unc_write; // uncacheable data write request
     443    sc_signal<bool>     r_dcache_vci_cas_req;   // atomic write request CAS
     444    sc_signal<uint32_t> r_dcache_vci_cas_old;   // previous data value for a CAS
     445    sc_signal<uint32_t> r_dcache_vci_cas_new;   // new data value for a CAS
     446    sc_signal<bool>     r_dcache_vci_ll_req;    // atomic read request LL
     447    sc_signal<bool>     r_dcache_vci_sc_req;    // atomic write request SC
     448    sc_signal<uint32_t> r_dcache_vci_sc_data;   // SC data (command)
    450449
    451450    //RWT: local cas
    452     sc_signal<bool>         r_cas_islocal;
    453     sc_signal<size_t>       r_cas_local_way;
    454     sc_signal<size_t>       r_cas_local_set;
    455     sc_signal<size_t>       r_cas_local_word;
     451    sc_signal<bool>     r_cas_islocal;
     452    sc_signal<size_t>   r_cas_local_way;
     453    sc_signal<size_t>   r_cas_local_set;
     454    sc_signal<size_t>   r_cas_local_word;
    456455
    457456    // register used for XTN inval
    458     sc_signal<size_t>       r_dcache_xtn_way;          // selected way (from dcache)
    459     sc_signal<size_t>       r_dcache_xtn_set;          // selected set (from dcache)
     457    sc_signal<size_t>   r_dcache_xtn_way; // selected way (from dcache)
     458    sc_signal<size_t>   r_dcache_xtn_set; // selected set (from dcache)
    460459
    461460    // handling dcache miss
    462     sc_signal<int>          r_dcache_miss_type;         // depending on the requester
    463     sc_signal<size_t>       r_dcache_miss_word;         // word index for cache update
    464     sc_signal<size_t>       r_dcache_miss_way;          // selected way for cache update
    465     sc_signal<size_t>       r_dcache_miss_set;          // selected set for cache update
    466     sc_signal<bool>         r_dcache_miss_inval;        // coherence request matching a miss
    467     sc_signal<bool>         r_dcache_miss_clack;        // waiting for a cleanup acknowledge
     461    sc_signal<int>      r_dcache_miss_type;  // depending on the requester
     462    sc_signal<size_t>   r_dcache_miss_word;  // word index for cache update
     463    sc_signal<size_t>   r_dcache_miss_way;   // selected way for cache update
     464    sc_signal<size_t>   r_dcache_miss_set;   // selected set for cache update
     465    sc_signal<bool>     r_dcache_miss_inval; // coherence request matching a miss
     466    sc_signal<bool>     r_dcache_miss_clack; // waiting for a cleanup acknowledge
    468467
    469468    // handling coherence requests
    470     sc_signal<size_t>       r_dcache_cc_way;            // selected way for cc update/inval
    471     sc_signal<size_t>       r_dcache_cc_set;            // selected set for cc update/inval
    472     sc_signal<int>          r_dcache_cc_state;          // state of selected cache slot
    473     sc_signal<size_t>       r_dcache_cc_word;           // word counter for cc update
    474     sc_signal<bool>         r_dcache_cc_need_write;    // activate the cache for writing
    475     sc_signal<paddr_t>      r_dcache_cc_inval_addr;    // address for a cleanup transaction
    476     sc_signal<uint32_t>     r_dcache_cc_inval_data_cpt;
     469    sc_signal<size_t>   r_dcache_cc_way;        // selected way for cc update/inval
     470    sc_signal<size_t>   r_dcache_cc_set;        // selected set for cc update/inval
     471    sc_signal<int>      r_dcache_cc_state;      // state of selected cache slot
     472    sc_signal<size_t>   r_dcache_cc_word;       // word counter for cc update
     473    sc_signal<bool>     r_dcache_cc_need_write; // activate the cache for writing
     474    sc_signal<paddr_t>  r_dcache_cc_inval_addr; // address for a cleanup transaction
     475    sc_signal<uint32_t> r_dcache_cc_inval_data_cpt;
    477476
    478477    // coherence clack handling
    479     sc_signal<bool>         r_dcache_clack_req;        // clack request
    480     sc_signal<size_t>       r_dcache_clack_way;        // clack way
    481     sc_signal<size_t>       r_dcache_clack_set;        // clack set
     478    sc_signal<bool>     r_dcache_clack_req; // clack request
     479    sc_signal<size_t>   r_dcache_clack_way; // clack way
     480    sc_signal<size_t>   r_dcache_clack_set; // clack set
    482481
    483482    // dcache flush handling
    484     sc_signal<size_t>       r_dcache_flush_count;      // slot counter used for cache flush
     483    sc_signal<size_t>   r_dcache_flush_count; // slot counter used for cache flush
    485484
    486485    // ll response handling
    487     sc_signal<size_t>       r_dcache_ll_rsp_count;      // flit counter used for ll rsp
     486    sc_signal<size_t>   r_dcache_ll_rsp_count; // flit counter used for ll rsp
    488487
    489488    // used by the TLB miss sub-fsm
    490     sc_signal<uint32_t>     r_dcache_tlb_vaddr;         // virtual address for a tlb miss
    491     sc_signal<bool>         r_dcache_tlb_ins;           // target tlb (itlb if true)
    492     sc_signal<paddr_t>      r_dcache_tlb_paddr;         // physical address of pte
    493     sc_signal<uint32_t>     r_dcache_tlb_pte_flags;     // pte1 or first word of pte2
    494     sc_signal<uint32_t>     r_dcache_tlb_pte_ppn;       // second word of pte2
    495     sc_signal<size_t>       r_dcache_tlb_cache_way;     // selected way in dcache
    496     sc_signal<size_t>       r_dcache_tlb_cache_set;     // selected set in dcache
    497     sc_signal<size_t>       r_dcache_tlb_cache_word;    // selected word in dcache
    498     sc_signal<size_t>       r_dcache_tlb_way;           // selected way in tlb
    499     sc_signal<size_t>       r_dcache_tlb_set;           // selected set in tlb
     489    sc_signal<uint32_t> r_dcache_tlb_vaddr;      // virtual address for a tlb miss
     490    sc_signal<bool>     r_dcache_tlb_ins;        // target tlb (itlb if true)
     491    sc_signal<paddr_t>  r_dcache_tlb_paddr;      // physical address of pte
     492    sc_signal<uint32_t> r_dcache_tlb_pte_flags;  // pte1 or first word of pte2
     493    sc_signal<uint32_t> r_dcache_tlb_pte_ppn;    // second word of pte2
     494    sc_signal<size_t>   r_dcache_tlb_cache_way;  // selected way in dcache
     495    sc_signal<size_t>   r_dcache_tlb_cache_set;  // selected set in dcache
     496    sc_signal<size_t>   r_dcache_tlb_cache_word; // selected word in dcache
     497    sc_signal<size_t>   r_dcache_tlb_way;        // selected way in tlb
     498    sc_signal<size_t>   r_dcache_tlb_set;        // selected set in tlb
    500499
    501500    // ITLB and DTLB invalidation
    502     sc_signal<paddr_t>      r_dcache_tlb_inval_line;    // line index
    503     sc_signal<size_t>       r_dcache_tlb_inval_set;     // tlb set counter
     501    sc_signal<paddr_t>  r_dcache_tlb_inval_line; // line index
     502    sc_signal<size_t>   r_dcache_tlb_inval_set;  // tlb set counter
    504503
    505504    // communication between DCACHE FSM and ICACHE FSM
    506     sc_signal<bool>         r_dcache_xtn_req;           // xtn request (caused by processor)
    507     sc_signal<int>          r_dcache_xtn_opcode;        // xtn request type
     505    sc_signal<bool>     r_dcache_xtn_req;    // xtn request (caused by processor)
     506    sc_signal<int>      r_dcache_xtn_opcode; // xtn request type
    508507
    509508    // Filp-Flop in DCACHE FSM for saving the cleanup victim request
    510     sc_signal<bool>         r_dcache_cleanup_victim_req;
    511     sc_signal<bool>         r_dcache_cleanup_victim_line_ncc;
    512     sc_signal<bool>         r_dcache_cleanup_victim_updt_data;
    513     sc_signal<paddr_t>      r_dcache_cleanup_victim_nline;
     509    sc_signal<bool>     r_dcache_cleanup_victim_req;
     510    sc_signal<bool>     r_dcache_cleanup_victim_line_ncc;
     511    sc_signal<bool>     r_dcache_cleanup_victim_updt_data;
     512    sc_signal<paddr_t>  r_dcache_cleanup_victim_nline;
    514513
    515514    // communication between DCACHE FSM and CC_SEND FSM
    516     sc_signal<bool>         r_dcache_cc_send_req;           // DCACHE cc_send request
    517     sc_signal<int>          r_dcache_cc_send_type;          // DCACHE cc_send request type
    518     sc_signal<paddr_t>      r_dcache_cc_send_nline;         // DCACHE cc_send nline
    519     sc_signal<size_t>       r_dcache_cc_send_way;           // DCACHE cc_send way
    520     sc_signal<size_t>       r_dcache_cc_send_updt_tab_idx; // DCACHE cc_send update table index
     515    sc_signal<bool>     r_dcache_cc_send_req;          // DCACHE cc_send request
     516    sc_signal<int>      r_dcache_cc_send_type;         // DCACHE cc_send request type
     517    sc_signal<paddr_t>  r_dcache_cc_send_nline;        // DCACHE cc_send nline
     518    sc_signal<size_t>   r_dcache_cc_send_way;          // DCACHE cc_send way
     519    sc_signal<size_t>   r_dcache_cc_send_updt_tab_idx; // DCACHE cc_send update table index
    521520
    522521    // special registers for RWT
    523     sc_signal<bool>         r_dcache_cc_cleanup_updt_data;     // Register for cleanup with data (wb updt)
    524     sc_signal<bool>         r_dcache_cc_cleanup_line_ncc;      // Register for cleanup with data (wb updt)
    525     sc_signal<bool>         r_dcache_miss_victim_no_coherence; // Register for victim in no coherence mode
    526     sc_signal<bool>         r_dcache_line_no_coherence;        // Register for line current in no coherence mode
    527     sc_signal<bool>         r_dcache_dirty_save;
    528     sc_signal<uint32_t>     r_cc_send_cpt_word;
    529     sc_signal<uint32_t>     r_dcache_miss_data_cpt;
    530     sc_signal<paddr_t>      r_dcache_miss_data_addr;
    531     sc_signal<uint32_t>     r_dcache_xtn_flush_data_cpt;
    532     sc_signal<paddr_t>      r_dcache_xtn_flush_addr_data;
    533     sc_signal<int>          r_dcache_xtn_state;
    534     sc_signal<paddr_t>      r_dcache_xtn_data_addr;
    535     sc_signal<uint32_t>     r_dcache_xtn_data_cpt;
    536     sc_signal<bool>         r_dcache_read_state;
     522    sc_signal<bool>     r_dcache_cc_cleanup_updt_data; // Register for cleanup with data (wb updt)
     523    sc_signal<bool>     r_dcache_cc_cleanup_line_ncc;  // Register for cleanup with data (wb updt)
     524    sc_signal<bool>     r_dcache_dirty_save;
     525    sc_signal<uint32_t> r_cc_send_cpt_word;
     526    sc_signal<uint32_t> r_dcache_miss_data_cpt;
     527    sc_signal<paddr_t>  r_dcache_miss_data_addr;
     528    sc_signal<uint32_t> r_dcache_xtn_flush_data_cpt;
     529    sc_signal<paddr_t>  r_dcache_xtn_flush_addr_data;
     530    sc_signal<int>      r_dcache_xtn_state;
     531    sc_signal<paddr_t>  r_dcache_xtn_data_addr;
     532    sc_signal<uint32_t> r_dcache_xtn_data_cpt;
     533    sc_signal<bool>     r_dcache_read_state;
    537534
    538535    // dcache directory extension
    539     int                     *r_dcache_content_state; // content state of one cache line
     536    int                 *r_dcache_content_state; // content state of one cache line
    540537    // Stats
    541     int                     *r_dcache_dirty_word;    // use for compute number of words dirty per cleanup_data
    542     bool                    *r_dcache_zombi_ncc;     // use for compute number of blocked write on ncc zombi line
     538    int                 *r_dcache_dirty_word;    // use for compute number of words dirty per cleanup_data
     539    bool                *r_dcache_zombi_ncc;     // use for compute number of blocked write on ncc zombi line
    543540    //////////////////////////////////////////////////////////////////////////////////////
    544541
    545542    ///////////////////////////////////
    546543    // Physical address extension for data access
    547     sc_signal<uint32_t>     r_dcache_paddr_ext;            // CP2 register (if vci_address > 32)
     544    sc_signal<uint32_t> r_dcache_paddr_ext; // CP2 register (if vci_address > 32)
    548545
    549546    ///////////////////////////////////
    550547    // VCI_CMD FSM REGISTERS
    551548    ///////////////////////////////////
    552     sc_signal<int>          r_vci_cmd_fsm;
    553     sc_signal<size_t>       r_vci_cmd_min;                  // used for write bursts
    554     sc_signal<size_t>       r_vci_cmd_max;                  // used for write bursts
    555     sc_signal<size_t>       r_vci_cmd_cpt;                  // used for write bursts
    556     sc_signal<bool>         r_vci_cmd_imiss_prio;          // round-robin between imiss & dmiss
     549    sc_signal<int>      r_vci_cmd_fsm;
     550    sc_signal<size_t>   r_vci_cmd_min;        // used for write bursts
     551    sc_signal<size_t>   r_vci_cmd_max;        // used for write bursts
     552    sc_signal<size_t>   r_vci_cmd_cpt;        // used for write bursts
     553    sc_signal<bool>     r_vci_cmd_imiss_prio; // round-robin between imiss & dmiss
    557554
    558555    ///////////////////////////////////
    559556    // VCI_RSP FSM REGISTERS
    560557    ///////////////////////////////////
    561     sc_signal<int>          r_vci_rsp_fsm;
    562     sc_signal<size_t>       r_vci_rsp_cpt;
    563     sc_signal<bool>         r_vci_rsp_ins_error;
    564     sc_signal<bool>         r_vci_rsp_data_error;
    565     GenericFifo<uint32_t>   r_vci_rsp_fifo_icache;          // response FIFO to ICACHE FSM
    566     GenericFifo<uint32_t>   r_vci_rsp_fifo_dcache;          // response FIFO to DCACHE FSM
     558    sc_signal<int>        r_vci_rsp_fsm;
     559    sc_signal<size_t>     r_vci_rsp_cpt;
     560    sc_signal<bool>       r_vci_rsp_ins_error;
     561    sc_signal<bool>       r_vci_rsp_data_error;
     562    GenericFifo<uint32_t> r_vci_rsp_fifo_icache; // response FIFO to ICACHE FSM
     563    GenericFifo<uint32_t> r_vci_rsp_fifo_dcache; // response FIFO to DCACHE FSM
    567564
    568565
    569566    //RWT
    570     GenericFifo<bool>       r_vci_rsp_fifo_rpktid;
    571     GenericFifo<uint32_t>   r_cc_send_data_fifo;
     567    GenericFifo<bool>     r_vci_rsp_fifo_rpktid;
     568    GenericFifo<uint32_t> r_cc_send_data_fifo;
    572569
    573570    ///////////////////////////////////
    574571    //  CC_SEND FSM REGISTER
    575572    ///////////////////////////////////
    576     sc_signal<int>          r_cc_send_fsm;                  // state register
    577     sc_signal<bool>         r_cc_send_last_client;          // 0 dcache / 1 icache
     573    sc_signal<int>        r_cc_send_fsm;         // state register
     574    sc_signal<bool>       r_cc_send_last_client; // 0 dcache / 1 icache
    578575
    579576    ///////////////////////////////////
    580577    //  CC_RECEIVE FSM REGISTER
    581578    ///////////////////////////////////
    582     sc_signal<int>          r_cc_receive_fsm;               // state register
    583     sc_signal<bool>         r_cc_receive_data_ins;          // request to : 0 dcache / 1 icache
     579    sc_signal<int>        r_cc_receive_fsm;      // state register
     580    sc_signal<bool>       r_cc_receive_data_ins; // request to : 0 dcache / 1 icache
    584581
    585582    // communication between CC_RECEIVE FSM and ICACHE/DCACHE FSM
    586     sc_signal<size_t>       r_cc_receive_word_idx;          // word index
    587     GenericFifo<uint32_t>   r_cc_receive_updt_fifo_be;
    588     GenericFifo<uint32_t>   r_cc_receive_updt_fifo_data;
    589     GenericFifo<bool>       r_cc_receive_updt_fifo_eop;
     583    sc_signal<size_t>     r_cc_receive_word_idx;       // word index
     584    GenericFifo<uint32_t> r_cc_receive_updt_fifo_be;
     585    GenericFifo<uint32_t> r_cc_receive_updt_fifo_data;
     586    GenericFifo<bool>     r_cc_receive_updt_fifo_eop;
    590587
    591588    // communication between CC_RECEIVE FSM and ICACHE FSM
    592     sc_signal<bool>         r_cc_receive_icache_req;        // cc_receive to icache request
    593     sc_signal<int>          r_cc_receive_icache_type;       // cc_receive type of request
    594     sc_signal<size_t>       r_cc_receive_icache_way;        // cc_receive to icache way
    595     sc_signal<size_t>       r_cc_receive_icache_set;        // cc_receive to icache set
    596     sc_signal<size_t>       r_cc_receive_icache_updt_tab_idx; // cc_receive update table index
    597     sc_signal<paddr_t>      r_cc_receive_icache_nline;      // cache line physical address
     589    sc_signal<bool>       r_cc_receive_icache_req;          // cc_receive to icache request
     590    sc_signal<int>        r_cc_receive_icache_type;         // cc_receive type of request
     591    sc_signal<size_t>     r_cc_receive_icache_way;          // cc_receive to icache way
     592    sc_signal<size_t>     r_cc_receive_icache_set;          // cc_receive to icache set
     593    sc_signal<size_t>     r_cc_receive_icache_updt_tab_idx; // cc_receive update table index
     594    sc_signal<paddr_t>    r_cc_receive_icache_nline;        // cache line physical address
    598595
    599596    // communication between CC_RECEIVE FSM and DCACHE FSM
    600     sc_signal<bool>         r_cc_receive_dcache_req;              // cc_receive to dcache request
    601     sc_signal<int>          r_cc_receive_dcache_type;             // cc_receive type of request
    602     sc_signal<size_t>       r_cc_receive_dcache_way;              // cc_receive to dcache way
    603     sc_signal<size_t>       r_cc_receive_dcache_set;              // cc_receive to dcache set
    604     sc_signal<size_t>       r_cc_receive_dcache_updt_tab_idx;     // cc_receive update table index
    605     sc_signal<paddr_t>      r_cc_receive_dcache_nline;            // cache line physical address
    606     sc_signal<bool>         r_cc_receive_dcache_inval_is_config; // inval from memcache is config
     597    sc_signal<bool>       r_cc_receive_dcache_req;             // cc_receive to dcache request
     598    sc_signal<int>        r_cc_receive_dcache_type;            // cc_receive type of request
     599    sc_signal<size_t>     r_cc_receive_dcache_way;             // cc_receive to dcache way
     600    sc_signal<size_t>     r_cc_receive_dcache_set;             // cc_receive to dcache set
     601    sc_signal<size_t>     r_cc_receive_dcache_updt_tab_idx;    // cc_receive update table index
     602    sc_signal<paddr_t>    r_cc_receive_dcache_nline;           // cache line physical address
     603    sc_signal<bool>       r_cc_receive_dcache_inval_is_config; // inval from memcache is config
    607604
    608605    ///////////////////////////////////
    609606    //  DSPIN CLACK INTERFACE REGISTER
    610607    ///////////////////////////////////
    611     sc_signal<bool>         r_dspin_clack_req;
    612     sc_signal<uint64_t>     r_dspin_clack_flit;
     608    sc_signal<bool>       r_dspin_clack_req;
     609    sc_signal<uint64_t>   r_dspin_clack_flit;
    613610
    614611    //////////////////////////////////////////////////////////////////
     
    616613    //////////////////////////////////////////////////////////////////
    617614
    618     iss_t                       r_iss;
    619     MultiWriteBuffer<paddr_t>   r_wbuf;
    620     GenericCache<paddr_t>       r_icache;
    621     GenericCache<paddr_t>       r_dcache;
    622     GenericTlb<paddr_t>         r_itlb;
    623     GenericTlb<paddr_t>         r_dtlb;
     615    iss_t                     r_iss;
     616    MultiWriteBuffer<paddr_t> r_wbuf;
     617    GenericCache<paddr_t>     r_icache;
     618    GenericCache<paddr_t>     r_dcache;
     619    GenericTlb<paddr_t>       r_itlb;
     620    GenericTlb<paddr_t>       r_dtlb;
    624621
    625622    //////////////////////////////////////////////////////////////////
     
    627624    //////////////////////////////////////////////////////////////////
    628625
    629     sc_signal<paddr_t>                     r_dcache_llsc_paddr;
    630     sc_signal<uint32_t>                    r_dcache_llsc_key;
    631     sc_signal<uint32_t>                    r_dcache_llsc_count;
    632     sc_signal<bool>                        r_dcache_llsc_valid;
    633 
    634 
    635     sc_signal<bool>                        r_cache_frozen;
     626    sc_signal<paddr_t>  r_dcache_llsc_paddr;
     627    sc_signal<uint32_t> r_dcache_llsc_key;
     628    sc_signal<uint32_t> r_dcache_llsc_count;
     629    sc_signal<bool>     r_dcache_llsc_valid;
    636630
    637631    ////////////////////////////////
    638632    // Activity counters
    639633    ////////////////////////////////
    640     uint32_t m_cpt_dcache_data_read;           // DCACHE DATA READ
    641     uint32_t m_cpt_dcache_data_write;          // DCACHE DATA WRITE
    642     uint32_t m_cpt_dcache_dir_read;            // DCACHE DIR READ
    643     uint32_t m_cpt_dcache_dir_write;           // DCACHE DIR WRITE
    644 
    645     uint32_t m_cpt_icache_data_read;           // ICACHE DATA READ
    646     uint32_t m_cpt_icache_data_write;          // ICACHE DATA WRITE
    647     uint32_t m_cpt_icache_dir_read;            // ICACHE DIR READ
    648     uint32_t m_cpt_icache_dir_write;           // ICACHE DIR WRITE
    649 
    650     uint32_t m_cpt_frz_cycles;                 // number of cycles where the cpu is frozen
    651     uint32_t m_cpt_total_cycles;               // total number of cycles
     634    uint32_t m_cpt_dcache_data_read;        // DCACHE DATA READ
     635    uint32_t m_cpt_dcache_data_write;       // DCACHE DATA WRITE
     636    uint32_t m_cpt_dcache_dir_read;         // DCACHE DIR READ
     637    uint32_t m_cpt_dcache_dir_write;        // DCACHE DIR WRITE
     638
     639    uint32_t m_cpt_icache_data_read;        // ICACHE DATA READ
     640    uint32_t m_cpt_icache_data_write;       // ICACHE DATA WRITE
     641    uint32_t m_cpt_icache_dir_read;         // ICACHE DIR READ
     642    uint32_t m_cpt_icache_dir_write;        // ICACHE DIR WRITE
     643
     644    uint32_t m_cpt_frz_cycles;              // number of cycles where the cpu is frozen
     645    uint32_t m_cpt_total_cycles;            // total number of cycles
    652646
    653647    // Cache activity counters
    654     uint32_t m_cpt_data_read;                  // total number of read data
    655     uint32_t m_cpt_data_write;                 // total number of write data
     648    uint32_t m_cpt_data_read;               // total number of read data
     649    uint32_t m_cpt_data_write;              // total number of write data
    656650    uint32_t m_cpt_data_write_back;
     651    uint32_t m_cpt_data_write_miss;         // number of total write miss
     652    uint32_t m_cpt_data_write_on_zombi;     // number of frozen cycles related to blocked write on ZOMBI line
     653    uint32_t m_cpt_data_write_on_zombi_ncc; // number of frozen cycles related to blocked write on NCC ZOMBI line
    657654    uint32_t m_cpt_data_cleanup;
    658655    uint32_t m_cpt_data_sc;
    659     uint32_t m_cpt_data_miss;                  // number of read miss
    660     uint32_t m_cpt_ins_miss;                   // number of instruction miss
    661     uint32_t m_cpt_unc_read;                   // number of read uncached
    662     uint32_t m_cpt_write_cached;               // number of cached write
    663     uint32_t m_cpt_ins_read;                   // number of instruction read
    664     uint32_t m_cpt_ins_spc_miss;               // number of speculative instruction miss
    665 
    666     uint32_t m_cost_write_frz;                 // number of frozen cycles related to write buffer
    667     uint32_t m_cost_data_miss_frz;             // number of frozen cycles related to data miss
    668     uint32_t m_cost_unc_read_frz;              // number of frozen cycles related to uncached read
    669     uint32_t m_cost_ins_miss_frz;              // number of frozen cycles related to ins miss
    670 
    671     uint32_t m_cpt_imiss_transaction;          // number of VCI instruction miss transactions
    672     uint32_t m_cpt_dmiss_transaction;          // number of VCI data miss transactions
    673     uint32_t m_cpt_unc_transaction;            // number of VCI uncached read transactions
    674     uint32_t m_cpt_dunc_transaction;           // number of VCI uncached read transactions
    675     uint32_t m_cpt_ll_transaction;             // number of VCI uncached read transactions
    676     uint32_t m_cpt_write_transaction;          // number of VCI write transactions
    677     uint32_t m_cpt_icache_unc_transaction;
    678 
    679     uint32_t m_cost_imiss_transaction;         // cumulated duration for VCI IMISS transactions
    680     uint32_t m_cost_dmiss_transaction;         // cumulated duration for VCI DMISS transactions
    681     uint32_t m_cost_unc_transaction;           // cumulated duration for VCI UNC transactions
    682     uint32_t m_cost_write_transaction;         // cumulated duration for VCI WRITE transactions
    683     uint32_t m_cost_icache_unc_transaction;    // cumulated duration for VCI IUNC transactions
    684     uint32_t m_length_write_transaction;       // cumulated length for VCI WRITE transactions
     656    uint32_t m_cpt_dcache_miss;             // number of read miss
     657    uint32_t m_cpt_icache_miss;             // number of instruction miss
     658    uint32_t m_cpt_ins_read;                // number of instruction read
     659
     660    uint32_t m_cost_data_miss_frz;          // number of frozen cycles related to data miss
     661    uint32_t m_cost_ins_miss_frz;           // number of frozen cycles related to ins miss
     662
     663    uint32_t m_cpt_write_transaction;       // number of VCI write transactions
     664    uint32_t m_length_write_transaction;    // cumulated length for VCI WRITE transactions
    685665
    686666    // TLB activity counters
    687     uint32_t m_cpt_ins_tlb_read;               // number of instruction tlb read
    688     uint32_t m_cpt_ins_tlb_miss;               // number of instruction tlb miss
    689     uint32_t m_cpt_ins_tlb_update_acc;         // number of instruction tlb update
    690     uint32_t m_cpt_ins_tlb_occup_cache;        // number of instruction tlb occupy data cache line
    691     uint32_t m_cpt_ins_tlb_hit_dcache;         // number of instruction tlb hit in data cache
    692 
    693     uint32_t m_cpt_data_tlb_read;              // number of data tlb read
    694     uint32_t m_cpt_data_tlb_miss;              // number of data tlb miss
    695     uint32_t m_cpt_data_tlb_update_acc;        // number of data tlb update
    696     uint32_t m_cpt_data_tlb_update_dirty;      // number of data tlb update dirty
    697     uint32_t m_cpt_data_tlb_hit_dcache;        // number of data tlb hit in data cache
    698     uint32_t m_cpt_data_tlb_occup_cache;       // number of data tlb occupy data cache line
     667    uint32_t m_cpt_itlb_read;               // number of instruction tlb read
     668    uint32_t m_cpt_itlb_miss;               // number of instruction tlb miss
     669    uint32_t m_cpt_itlb_write;              // number of instruction tlb update
     670
     671    uint32_t m_cpt_dtlb_read;               // number of data tlb read
     672    uint32_t m_cpt_dtlb_miss;               // number of data tlb miss
     673    uint32_t m_cpt_dtlb_write;              // number of data tlb update
     674
     675    uint32_t m_cost_ins_tlb_miss_frz;       // number of frozen cycles related to instruction tlb miss
     676
     677    // coherence activity counters
     678    uint32_t m_cpt_cleanup_data_not_dirty;  // number of total cleanup data without extra data flits
     679    uint32_t m_cpt_cleanup_data_dirty_word; // number of total words dirty in cleanup data
     680
     681
     682
     683    // counters NOT implemented
     684    uint32_t m_cost_write_frz; // number of frozen cycles related to write buffer
     685    uint32_t m_cost_unc_read_frz; // number of frozen cycles related to uncached read
     686    uint32_t m_cpt_imiss_transaction; // number of VCI instruction miss transactions
     687    uint32_t m_cpt_dmiss_transaction; // number of VCI data miss transactions
     688    uint32_t m_cpt_unc_transaction; // number of VCI uncached read transactions
     689    uint32_t m_cost_imiss_transaction; // cumulated duration for VCI IMISS transactions
     690    uint32_t m_cost_dmiss_transaction; // cumulated duration for VCI DMISS transactions
     691    uint32_t m_cost_unc_transaction; // cumulated duration for VCI UNC transactions
     692    uint32_t m_cost_write_transaction; // cumulated duration for VCI WRITE transactions
     693    uint32_t m_cpt_data_tlb_update_dirty; // number of data tlb update dirty
     694    uint32_t m_cpt_ins_tlb_hit_dcache; // number of instruction tlb hit in data cache
     695    uint32_t m_cpt_data_tlb_hit_dcache; // number of data tlb hit in data cache
     696    uint32_t m_cost_data_tlb_miss_frz; // number of frozen cycles related to data tlb miss
     697    uint32_t m_cost_ins_tlb_update_acc_frz; // number of frozen cycles related to instruction tlb update acc
     698    uint32_t m_cost_data_tlb_update_acc_frz; // number of frozen cycles related to data tlb update acc
     699    uint32_t m_cost_data_tlb_update_dirty_frz; // number of frozen cycles related to data tlb update dirty
     700    uint32_t m_cpt_itlbmiss_transaction; // number of itlb miss transactions
     701    uint32_t m_cpt_dtlbmiss_transaction; // number of dtlb miss transactions
     702    uint32_t m_cost_itlbmiss_transaction; // cumulated duration for VCI instruction TLB miss transactions
     703    uint32_t m_cost_dtlbmiss_transaction; // cumulated duration for VCI data TLB miss transactions
     704    uint32_t m_cpt_cc_broadcast; // number of coherence broadcast commands
     705    uint32_t m_cost_updt_data_frz; // number of frozen cycles related to coherence update data packets
     706    uint32_t m_cost_inval_ins_frz; // number of frozen cycles related to coherence inval instruction packets
     707    uint32_t m_cost_inval_data_frz; // number of frozen cycles related to coherence inval data packets
     708    uint32_t m_cost_broadcast_frz; // number of frozen cycles related to coherence broadcast packets
     709    uint32_t m_cpt_cc_cleanup_data; // number of coherence cleanup packets
     710    uint32_t m_cpt_cc_cleanup_ins; // number of coherence cleanup packets
     711    uint32_t m_cpt_dunc_transaction; // number of VCI uncached read transactions
     712    uint32_t m_cpt_ll_transaction; // number of VCI uncached read transactions
     713    uint32_t m_cpt_cc_update_dcache; // number of coherence update data commands
     714    uint32_t m_cpt_cc_inval_icache; // number of coherence inval instruction commands
     715    uint32_t m_cpt_cc_inval_dcache; // number of coherence inval data commands
     716    uint32_t m_cpt_unc_read; // number of read uncached
     717    uint32_t m_cpt_write_cached; // number of cached write
    699718    uint32_t m_cpt_tlb_occup_dcache;
    700719
    701     uint32_t m_cost_ins_tlb_miss_frz;          // number of frozen cycles related to instruction tlb miss
    702     uint32_t m_cost_data_tlb_miss_frz;         // number of frozen cycles related to data tlb miss
    703     uint32_t m_cost_ins_tlb_update_acc_frz;    // number of frozen cycles related to instruction tlb update acc
    704     uint32_t m_cost_data_tlb_update_acc_frz;   // number of frozen cycles related to data tlb update acc
    705     uint32_t m_cost_data_tlb_update_dirty_frz; // number of frozen cycles related to data tlb update dirty
    706     uint32_t m_cost_ins_tlb_occup_cache_frz;   // number of frozen cycles related to instruction tlb miss operate in dcache
    707     uint32_t m_cost_data_tlb_occup_cache_frz;  // number of frozen cycles related to data tlb miss operate in dcache
    708 
    709     uint32_t m_cpt_itlbmiss_transaction;       // number of itlb miss transactions
    710     uint32_t m_cpt_itlb_ll_transaction;        // number of itlb ll acc transactions
    711     uint32_t m_cpt_itlb_sc_transaction;        // number of itlb sc acc transactions
    712     uint32_t m_cpt_dtlbmiss_transaction;       // number of dtlb miss transactions
    713     uint32_t m_cpt_dtlb_ll_transaction;        // number of dtlb ll acc transactions
    714     uint32_t m_cpt_dtlb_sc_transaction;        // number of dtlb sc acc transactions
    715     uint32_t m_cpt_dtlb_ll_dirty_transaction;  // number of dtlb ll dirty transactions
    716     uint32_t m_cpt_dtlb_sc_dirty_transaction;  // number of dtlb sc dirty transactions
    717 
    718     uint32_t m_cost_itlbmiss_transaction;      // cumulated duration for VCI instruction TLB miss transactions
    719     uint32_t m_cost_itlb_ll_transaction;       // cumulated duration for VCI instruction TLB ll acc transactions
    720     uint32_t m_cost_itlb_sc_transaction;       // cumulated duration for VCI instruction TLB sc acc transactions
    721     uint32_t m_cost_dtlbmiss_transaction;      // cumulated duration for VCI data TLB miss transactions
    722     uint32_t m_cost_dtlb_ll_transaction;       // cumulated duration for VCI data TLB ll acc transactions
    723     uint32_t m_cost_dtlb_sc_transaction;       // cumulated duration for VCI data TLB sc acc transactions
    724     uint32_t m_cost_dtlb_ll_dirty_transaction; // cumulated duration for VCI data TLB ll dirty transactions
    725     uint32_t m_cost_dtlb_sc_dirty_transaction; // cumulated duration for VCI data TLB sc dirty transactions
    726 
    727     // coherence activity counters
    728     uint32_t m_cpt_cc_update_icache;           // number of coherence update instruction commands
    729     uint32_t m_cpt_cc_update_dcache;           // number of coherence update data commands
    730     uint32_t m_cpt_cc_inval_icache;            // number of coherence inval instruction commands
    731     uint32_t m_cpt_cc_inval_dcache;            // number of coherence inval data commands
    732     uint32_t m_cpt_cc_broadcast;               // number of coherence broadcast commands
    733 
    734     uint32_t m_cost_updt_data_frz;             // number of frozen cycles related to coherence update data packets
    735     uint32_t m_cost_inval_ins_frz;             // number of frozen cycles related to coherence inval instruction packets
    736     uint32_t m_cost_inval_data_frz;            // number of frozen cycles related to coherence inval data packets
    737     uint32_t m_cost_broadcast_frz;             // number of frozen cycles related to coherence broadcast packets
    738 
    739     uint32_t m_cpt_cc_cleanup_ins;             // number of coherence cleanup packets
    740     uint32_t m_cpt_cc_cleanup_data;            // number of coherence cleanup packets
    741     uint32_t m_cpt_cleanup_data_not_dirty;     // number of total cleanup data without extra data flits
    742     uint32_t m_cpt_cleanup_data_dirty_word;    // number of total words dirty in cleanup data
    743     uint32_t m_cpt_data_write_miss;            // number of total write miss
    744     uint32_t m_cpt_data_write_on_zombi;        // number of frozen cycles related to blocked write on line NCC/CC ZOMBI
    745     uint32_t m_cpt_data_write_on_zombi_ncc;    // number of frozen cycles related to blocked write on line NCC ZOMBI
    746 
    747     uint32_t m_cpt_icleanup_transaction;       // number of instruction cleanup transactions
    748     uint32_t m_cpt_dcleanup_transaction;       // number of instructinumber of data cleanup transactions
    749     uint32_t m_cost_icleanup_transaction;      // cumulated duration for VCI instruction cleanup transactions
    750     uint32_t m_cost_dcleanup_transaction;      // cumulated duration for VCI data cleanup transactions
    751 
    752     uint32_t m_cost_ins_tlb_inval_frz;         // number of frozen cycles related to checking ins tlb invalidate
    753     uint32_t m_cpt_ins_tlb_inval;              // number of ins tlb invalidate
    754 
    755     uint32_t m_cost_data_tlb_inval_frz;        // number of frozen cycles related to checking data tlb invalidate
    756     uint32_t m_cpt_data_tlb_inval;             // number of data tlb invalidate
    757720
    758721    // FSM activity counters
     
    764727    uint32_t m_cpt_fsm_cc_send    [64];
    765728
    766     uint32_t m_cpt_stop_simulation;     // used to stop simulation if frozen
    767     bool     m_monitor_ok;              // used to debug cache output
     729    uint32_t m_cpt_stop_simulation; // used to stop simulation if frozen
     730    bool     m_monitor_ok;          // used to debug cache output
    768731    uint32_t m_monitor_base;
    769732    uint32_t m_monitor_length;
     
    774737public:
    775738    VciCcVCacheWrapper(
    776         sc_module_name                      name,
    777         const int                           proc_id,
    778         const soclib::common::MappingTable  &mtd,
    779         const soclib::common::IntTab        &srcid,
    780         const size_t                        cc_global_id,
    781         const size_t                        itlb_ways,
    782         const size_t                        itlb_sets,
    783         const size_t                        dtlb_ways,
    784         const size_t                        dtlb_sets,
    785         const size_t                        icache_ways,
    786         const size_t                        icache_sets,
    787         const size_t                        icache_words,
    788         const size_t                        dcache_ways,
    789         const size_t                        dcache_sets,
    790         const size_t                        dcache_words,
    791         const size_t                        wbuf_nlines,
    792         const size_t                        wbuf_nwords,
    793         const size_t                        x_width,
    794         const size_t                        y_width,
    795         const uint32_t                      max_frozen_cycles,
    796         const uint32_t                      debug_start_cycle,
    797         const bool                          debug_ok );
     739        sc_module_name                     name,
     740        const int                          proc_id,
     741        const soclib::common::MappingTable &mtd,
     742        const soclib::common::IntTab       &srcid,
     743        const size_t                       cc_global_id,
     744        const size_t                       itlb_ways,
     745        const size_t                       itlb_sets,
     746        const size_t                       dtlb_ways,
     747        const size_t                       dtlb_sets,
     748        const size_t                       icache_ways,
     749        const size_t                       icache_sets,
     750        const size_t                       icache_words,
     751        const size_t                       dcache_ways,
     752        const size_t                       dcache_sets,
     753        const size_t                       dcache_words,
     754        const size_t                       wbuf_nlines,
     755        const size_t                       wbuf_nwords,
     756        const size_t                       x_width,
     757        const size_t                       y_width,
     758        const uint32_t                     max_frozen_cycles,
     759        const uint32_t                     debug_start_cycle,
     760        const bool                         debug_ok );
    798761
    799762    ~VciCcVCacheWrapper();
Note: See TracChangeset for help on using the changeset viewer.