Ignore:
Timestamp:
May 1, 2013, 4:13:23 PM (11 years ago)
Author:
alain
Message:

VCI port to XRAM switched to DATA == 64 bits
=> two template parameters vci_param_int & vci_param_ext
This has been validated in tsar_generic_xbar platform...

Location:
trunk/modules/vci_mem_cache/caba/source/include
Files:
4 edited

Legend:

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

    r307 r385  
    4040  ////////////////////////////////////////////////////////////////////////
    4141  class Owner{
    42     typedef uint32_t size_t;
    4342   
    4443    public:
     
    9291
    9392    typedef uint32_t tag_t;
    94     typedef uint32_t size_t;
    9593
    9694    public:
     
    165163    void print()
    166164    {
    167       std::cout << "Valid = " << valid << " ; IS COUNT = " << is_cnt << " ; Dirty = " << dirty << " ; Lock = "
    168                 << lock
     165      std::cout << "Valid = " << valid
     166                << " ; IS COUNT = " << is_cnt
     167                << " ; Dirty = " << dirty
     168                << " ; Lock = " << lock
    169169                << " ; Tag = " << std::hex << tag << std::dec
    170170                << " ; Count = " << count
     
    187187    typedef uint32_t data_t;
    188188    typedef uint32_t tag_t;
    189     typedef uint32_t size_t;
    190189
    191190    private:
     
    408407  ///////////////////////////////////////////////////////////////////////
    409408  class HeapEntry{
    410     typedef uint32_t size_t;
    411409
    412410    public:
     
    472470  ////////////////////////////////////////////////////////////////////////
    473471  class HeapDirectory{
    474     typedef uint32_t size_t;
    475472   
    476473    private:
  • trunk/modules/vci_mem_cache/caba/source/include/update_tab.h

    r307 r385  
    126126class UpdateTab{
    127127
    128   typedef uint32_t size_t;
    129128  typedef sc_dt::sc_uint<40> addr_t;
    130129
  • trunk/modules/vci_mem_cache/caba/source/include/vci_mem_cache.h

    r362 r385  
    5858  using namespace sc_core;
    5959
    60   template<typename vci_param>
     60  template<typename vci_param_int,
     61           typename vci_param_ext,
     62           size_t   dspin_in_width,
     63           size_t   dspin_out_width>
    6164    class VciMemCache
    6265    : public soclib::caba::BaseModule
    6366    {
    64       typedef sc_dt::sc_uint<40> addr_t;
    65       typedef typename vci_param::fast_addr_t vci_addr_t;
     67      typedef typename vci_param_int::fast_addr_t  addr_t;
     68
     69      typedef typename sc_dt::sc_uint<64>          wide_data_t;
     70
    6671      typedef uint32_t data_t;
    6772      typedef uint32_t tag_t;
    68       typedef uint32_t size_t;
    6973      typedef uint32_t be_t;
    7074      typedef uint32_t copy_t;
     
    343347
    344348      bool         m_monitor_ok;
    345       vci_addr_t   m_monitor_base;
    346       vci_addr_t   m_monitor_length;
     349      addr_t       m_monitor_base;
     350      addr_t       m_monitor_length;
    347351
    348352      // instrumentation counters
     
    373377
    374378      public:
    375       sc_in<bool>                           p_clk;
    376       sc_in<bool>                           p_resetn;
    377       soclib::caba::VciTarget<vci_param>    p_vci_tgt;
    378       soclib::caba::VciInitiator<vci_param> p_vci_ixr;
    379       soclib::caba::DspinInput<33>          p_dspin_in;
    380       soclib::caba::DspinOutput<40>         p_dspin_out;
     379      sc_in<bool>                                 p_clk;
     380      sc_in<bool>                                 p_resetn;
     381      soclib::caba::VciTarget<vci_param_int>      p_vci_tgt;
     382      soclib::caba::VciInitiator<vci_param_ext>  p_vci_ixr;
     383      soclib::caba::DspinInput<dspin_in_width>    p_dspin_in;
     384      soclib::caba::DspinOutput<dspin_out_width>  p_dspin_out;
    381385
    382386      VciMemCache(
     
    401405      void print_stats();
    402406      void print_trace();
    403       void copies_monitor(vci_addr_t addr);
    404       void start_monitor(vci_addr_t addr, vci_addr_t length);
     407      void copies_monitor(addr_t addr);
     408      void start_monitor(addr_t addr, addr_t length);
    405409      void stop_monitor();
    406410
     
    409413      void transition();
    410414      void genMoore();
    411       void check_monitor( const char *buf, vci_addr_t addr, data_t data);
    412       void check_monitor_read( const char *buf, vci_addr_t addr);
     415      void check_monitor( const char *buf, addr_t addr, data_t data, bool read);
    413416
    414417      // Component attributes
     
    436439      < 32  ,                              // number of slots
    437440        4096,                              // number of processors in the system
    438         8000,                              // registratioçn life span (in # of LL operations)
    439         typename vci_param::fast_addr_t >  // address type
    440                                          m_llsc_table;       // ll/sc global registration table
     441        8000,                              // registration life (# of LL operations)
     442        addr_t >  m_llsc_table;            // ll/sc global registration table
    441443
    442444      // adress masks
    443       const soclib::common::AddressMaskingTable<vci_addr_t>   m_x;
    444       const soclib::common::AddressMaskingTable<vci_addr_t>   m_y;
    445       const soclib::common::AddressMaskingTable<vci_addr_t>   m_z;
    446       const soclib::common::AddressMaskingTable<vci_addr_t>   m_nline;
     445      const soclib::common::AddressMaskingTable<addr_t>   m_x;
     446      const soclib::common::AddressMaskingTable<addr_t>   m_y;
     447      const soclib::common::AddressMaskingTable<addr_t>   m_z;
     448      const soclib::common::AddressMaskingTable<addr_t>   m_nline;
    447449
    448450      // broadcast address
     
    454456
    455457      // Fifo between TGT_CMD fsm and READ fsm
    456       GenericFifo<uint64_t>  m_cmd_read_addr_fifo;
     458      GenericFifo<addr_t>    m_cmd_read_addr_fifo;
    457459      GenericFifo<size_t>    m_cmd_read_length_fifo;
    458460      GenericFifo<size_t>    m_cmd_read_srcid_fifo;
     
    461463
    462464      // Fifo between TGT_CMD fsm and WRITE fsm
    463       GenericFifo<uint64_t>  m_cmd_write_addr_fifo;
     465      GenericFifo<addr_t>    m_cmd_write_addr_fifo;
    464466      GenericFifo<bool>      m_cmd_write_eop_fifo;
    465467      GenericFifo<size_t>    m_cmd_write_srcid_fifo;
     
    470472
    471473      // Fifo between TGT_CMD fsm and CAS fsm
    472       GenericFifo<uint64_t>  m_cmd_cas_addr_fifo;
     474      GenericFifo<addr_t>    m_cmd_cas_addr_fifo;
    473475      GenericFifo<bool>      m_cmd_cas_eop_fifo;
    474476      GenericFifo<size_t>    m_cmd_cas_srcid_fifo;
     
    504506      sc_signal<size_t>   r_read_next_ptr;   // Next entry to point to
    505507      sc_signal<bool>     r_read_last_free;  // Last free entry
    506       sc_signal<typename vci_param::fast_addr_t>
    507                           r_read_ll_key;     // LL key returned by the llsc_global_table
     508      sc_signal<addr_t>   r_read_ll_key;     // LL key from the llsc_global_table
    508509
    509510      // Buffer between READ fsm and IXR_CMD fsm (ask a missing cache line to XRAM)
     
    520521      sc_signal<size_t>   r_read_to_tgt_rsp_word;   // first word of the response
    521522      sc_signal<size_t>   r_read_to_tgt_rsp_length; // length of the response
    522       sc_signal<typename vci_param::fast_addr_t>
    523                           r_read_to_tgt_rsp_ll_key; // LL key returned by the llsc_global_table
     523      sc_signal<addr_t>   r_read_to_tgt_rsp_ll_key; // LL key from the llsc_global_table
    524524
    525525      ///////////////////////////////////////////////////////////////
     
    578578      GenericFifo<bool>   m_write_to_cc_send_inst_fifo;     // fifo for the L1 type
    579579      GenericFifo<size_t> m_write_to_cc_send_srcid_fifo;    // fifo for srcids
     580
    580581#if L1_MULTI_CACHE
    581582      GenericFifo<size_t> m_write_to_cc_send_cache_id_fifo; // fifo for srcids
     
    703704      GenericFifo<bool>   m_cas_to_cc_send_inst_fifo;     // fifo for the L1 type
    704705      GenericFifo<size_t> m_cas_to_cc_send_srcid_fifo;    // fifo for srcids
     706
    705707#if L1_MULTI_CACHE
    706708      GenericFifo<size_t> m_cas_to_cc_send_cache_id_fifo; // fifo for srcids
     
    749751      sc_signal<size_t>   r_xram_rsp_to_tgt_rsp_length; // length of the response
    750752      sc_signal<bool>     r_xram_rsp_to_tgt_rsp_rerror; // send error to requester
    751       sc_signal<typename vci_param::fast_addr_t>
    752                           r_xram_rsp_to_tgt_rsp_ll_key; // LL key returned by the llsc_global_table
     753      sc_signal<addr_t>   r_xram_rsp_to_tgt_rsp_ll_key; // LL key from llsc_global_table
    753754
    754755      // Buffer between XRAM_RSP fsm and CC_SEND fsm (Inval L1 Caches)
     
    759760      GenericFifo<bool>   m_xram_rsp_to_cc_send_inst_fifo;     // fifo for the L1 type
    760761      GenericFifo<size_t> m_xram_rsp_to_cc_send_srcid_fifo;    // fifo for srcids
     762
    761763#if L1_MULTI_CACHE
    762764      GenericFifo<size_t> m_xram_rsp_to_cc_send_cache_id_fifo; // fifo for srcids
  • trunk/modules/vci_mem_cache/caba/source/include/xram_transaction.h

    r362 r385  
    1414
    1515class TransactionTabEntry {
    16     typedef uint32_t              size_t;
     16    typedef sc_dt::sc_uint<64>    wide_data_t;
     17    typedef sc_dt::sc_uint<40>    addr_t;
    1718    typedef uint32_t              data_t;
    18     typedef sc_dt::sc_uint<40>    addr_t;
    1919    typedef uint32_t              be_t;
    2020
     
    138138////////////////////////////////////////////////////////////////////////
    139139class TransactionTab{
    140     typedef uint32_t size_t;
    141     typedef uint32_t data_t;
    142     typedef sc_dt::sc_uint<40> addr_t;
    143     typedef uint32_t be_t;
     140    typedef sc_dt::sc_uint<64>    wide_data_t;
     141    typedef sc_dt::sc_uint<40>    addr_t;
     142    typedef uint32_t              data_t;
     143    typedef uint32_t              be_t;
    144144
    145145    private:
     
    368368
    369369    /////////////////////////////////////////////////////////////////////
    370     // The write_rsp() function writes a word of the response to an
    371     // XRAM read transaction.
     370    // The write_rsp() function writes two 32 bits words of the response
     371    // to a XRAM read transaction.
    372372    // The BE field in TRT is taken into account.
    373373    // Arguments :
    374374    // - index : the index of the transaction in the transaction tab
    375375    // - word_index : the index of the data in the line
    376     // - data : the data to write
     376    // - data : a 64 bits value
    377377    // - error : invalid data
    378378    /////////////////////////////////////////////////////////////////////
    379     void write_rsp(const size_t index,
    380             const size_t word,
    381             const data_t data,
    382             const bool   rerror)
    383     {
     379    void write_rsp(const size_t      index,
     380                   const size_t      word,
     381                   const wide_data_t data,
     382                   const bool        rerror)
     383    {
     384        data_t  value;
     385        data_t  mask;
     386
    384387        assert( (index < size_tab)
    385388                && "Selected entry  out of range in write_rsp() Transaction Tab");
     
    391394                && "Selected entry is not an XRAM read transaction in write_rsp()");
    392395
    393         data_t mask = be_to_mask(tab[index].wdata_be[word]);
    394         tab[index].wdata[word] = (tab[index].wdata[word] & mask) | (data & ~mask);
     396        // first 32 bits word
     397        value = (data_t)data;
     398        mask  = be_to_mask(tab[index].wdata_be[word]);
     399        tab[index].wdata[word] = (tab[index].wdata[word] & mask) | (value & ~mask);
     400
     401        // second 32 bits word
     402        value = (data_t)(data>>32);
     403        mask  = be_to_mask(tab[index].wdata_be[word+1]);
     404        tab[index].wdata[word+1] = (tab[index].wdata[word+1] & mask) | (value & ~mask);
     405
     406        // error update
    395407        tab[index].rerror |= rerror;
    396408    }
Note: See TracChangeset for help on using the changeset viewer.