source: trunk/modules/vci_io_bridge/caba/source/include/vci_io_bridge.h @ 712

Last change on this file since 712 was 712, checked in by alain, 10 years ago

Introducing support for read and write WTI transactions.
The WTI read transaction is used for IRQ reset.

File size: 20.3 KB
Line 
1/* -*- c++ -*-
2 * File : vci_io_bridge.h
3 * Copyright (c) UPMC, Lip6, SoC
4 * Date : 16/04/2012
5 * Authors: Cassio Fraga, Alain Greiner
6 *
7 * SOCLIB_LGPL_HEADER_BEGIN
8 *
9 * This file is part of SoCLib, GNU LGPLv2.1.
10 *
11 * SoCLib is free software; you can redistribute it and/or modify it
12 * under the terms of the GNU Lesser General Public License as published
13 * by the Free Software Foundation; version 2.1 of the License.
14 *
15 * SoCLib is distributed in the hope that it will be useful, but
16 * WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
18 * Lesser General Public License for more details.
19 *
20 * You should have received a copy of the GNU Lesser General Public
21 * License along with SoCLib; if not, write to the Free Software
22 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
23 * 02110-1301 USA
24 *
25 * SOCLIB_LGPL_HEADER_END
26 */
27/////////////////////////////////////////////////////////////////////////////////
28// This TSAR component is a bridge to access external peripherals
29// connected to an external I/O bus (such as Hypertransport or PCIe).
30// It connects three VCI networks:
31//
32// - INT network : to receive both configuration requests from processors
33//                 or software driven data access to peripherals.
34// - RAM network : to send DMA transactions initiated by peripherals
35//                 directly to the RAM (or L3 caches).
36// - IOX network : to receive DMA transactions from peripherals, or to send
37//                 configuration or data transactions to peripherals.
38//
39// It supports two types of transactions from peripherals:
40//   - DMA transactions to the RAM network,
41//   - WTI transactions to the INT network.
42// Regarding transactions initiated by external peripherals, it provides
43// an - optional - IOMMU service : the 32 bits virtual address is translated
44// to a (up to) 40 bits physical address by a standard SoCLib generic TLB.
45// In case of TLB MISS, the DMA transaction is stalled until the TLB is updated.
46// In case of page fault or read_only violation (illegal access), a VCI error
47// is returned to the faulty peripheral, and a IOMMU WTI is sent.
48/////////////////////////////////////////////////////////////////////////////////
49//   General Constraints:
50//
51// - All VCI fields have the same widths on the RAM and IOX networks,
52//   and the VCI DATA field is 64 bits.
53// - Only the VCI DATA field differ between INT and IOX/RAM networks,
54//   as the VCI DATA field is 32 bits.
55// - The common VCI ADDRESS width cannot be larger than 64 bits.
56// - All VCI transactions must be included in a single cache line.
57// - Page Tables must have the format required by the SoCLib generic_tlb.
58// - IO's segments must be the same in INT and IOX networks
59// - Write operations on IOMMU configuration registers (PTPR, ACTIVE) are
60//   delayed until DMA_TLB FSM is IDLE. It should, preferably, be done before
61//   starting any transfers. Pseudo register INVAL may be modified any time.
62////////////////////////////////////////////////////////////////////////////////
63
64 
65///////TODO List///////////////////////////////////////////////////////////////
66// - Ne pas garder tous les champs WRITE CMD dans les FIFO a chaque flit
67//   (seulement 'data' et 'be')
68///////////////////////////////////////////////////////////////////////////////
69
70#ifndef SOCLIB_CABA_VCI_IO_BRIDGE_H
71#define SOCLIB_CABA_VCI_IO_BRIDGE_H
72
73#include <inttypes.h>
74#include <systemc>
75#include "caba_base_module.h"
76#include "generic_fifo.h"
77#include "generic_tlb.h"
78#include "mapping_table.h"
79#include "address_decoding_table.h"
80#include "static_assert.h"
81#include "vci_initiator.h"
82#include "vci_target.h"
83#include "../../../include/soclib/io_bridge.h"
84
85namespace soclib {
86namespace caba {
87
88using namespace soclib::common;
89
90///////////////////////////////////////////////////////////////////////////////////
91template<typename vci_param_int,
92         typename vci_param_ext>
93class VciIoBridge
94///////////////////////////////////////////////////////////////////////////////////
95    : public soclib::caba::BaseModule
96{
97    // Data and be fields have different widths on INT and EXT/IOC networks
98    typedef typename vci_param_ext::data_t          ext_data_t;
99    typedef typename vci_param_int::data_t          int_data_t;
100    typedef typename vci_param_ext::be_t            ext_be_t;
101    typedef typename vci_param_int::be_t            int_be_t;
102
103    // Other fields must be equal   
104    typedef typename vci_param_int::fast_addr_t     vci_addr_t; 
105    typedef typename vci_param_int::srcid_t         vci_srcid_t; 
106    typedef typename vci_param_int::trdid_t         vci_trdid_t;
107    typedef typename vci_param_int::pktid_t         vci_pktid_t;
108    typedef typename vci_param_int::plen_t          vci_plen_t;
109    typedef typename vci_param_int::cmd_t           vci_cmd_t;
110    typedef typename vci_param_int::contig_t        vci_contig_t;
111    typedef typename vci_param_int::eop_t           vci_eop_t;
112    typedef typename vci_param_int::const_t         vci_cons_t;
113    typedef typename vci_param_int::wrap_t          vci_wrap_t;
114    typedef typename vci_param_int::clen_t          vci_clen_t;
115    typedef typename vci_param_int::cfixed_t        vci_cfixed_t;
116    typedef typename vci_param_int::rerror_t        vci_rerror_t;
117
118    enum 
119    {
120        CACHE_LINE_MASK    = 0xFFFFFFFFC0LL, 
121        PPN1_MASK          = 0x0007FFFF, 
122        PPN2_MASK          = 0x0FFFFFFF, 
123        K_PAGE_OFFSET_MASK = 0x00000FFF, 
124        M_PAGE_OFFSET_MASK = 0x001FFFFF,
125        PTE2_LINE_OFFSET   = 0x00007000, // bits 12,13,14.
126        PTE1_LINE_OFFSET   = 0x01E00000, // bits 21,22,23,24
127    };
128 
129    // States for DMA_CMD FSM (from IOX to RAM)
130    enum dma_cmd_fsm_state
131    { 
132        DMA_CMD_IDLE,
133        DMA_CMD_DMA_REQ,
134        DMA_CMD_WTI_IOX_REQ,
135        DMA_CMD_ERR_WAIT_EOP,
136        DMA_CMD_ERR_WTI_REQ,
137        DMA_CMD_ERR_RSP_REQ,
138        DMA_CMD_TLB_MISS_WAIT,
139    };
140   
141    // States for DMA_RSP FSM
142    enum dma_rsp_fsm_state
143    { 
144        DMA_RSP_IDLE_DMA,
145        DMA_RSP_IDLE_WTI,
146        DMA_RSP_IDLE_ERR,
147        DMA_RSP_PUT_DMA,
148        DMA_RSP_PUT_WTI,
149        DMA_RSP_PUT_ERR,
150    };
151   
152    // States for TLB_MISS FSM
153    enum dma_tlb_fsm_state
154    {   
155        TLB_IDLE,
156        TLB_MISS,
157        TLB_PTE1_GET,
158        TLB_PTE1_SELECT,
159        TLB_PTE1_UPDT,
160        TLB_PTE2_GET,                                                 
161        TLB_PTE2_SELECT,
162        TLB_PTE2_UPDT,
163        TLB_WAIT,
164        TLB_RETURN,
165        TLB_INVAL_CHECK,
166        };
167   
168    // States for CONFIG_CMD FSM
169    enum config_cmd_fsm_state
170    { 
171        CONFIG_CMD_IDLE,
172        CONFIG_CMD_NEXT,
173        CONFIG_CMD_PUT,
174        CONFIG_CMD_RSP,
175        };
176   
177    // states for CONFIG_RSP FSM
178    enum config_rsp_fsm_state
179    { 
180        CONFIG_RSP_IDLE_IOX,
181        CONFIG_RSP_IDLE_LOC,
182        CONFIG_RSP_PUT_LOW,
183        CONFIG_RSP_PUT_HI,
184        CONFIG_RSP_PUT_UNC,
185        CONFIG_RSP_PUT_LOC,
186
187    };
188   
189    // States for MISS_WTI_RSP FSM 
190    enum miss_wti_rsp_state
191    { 
192        MISS_WTI_RSP_IDLE,
193        MISS_WTI_RSP_WTI_IOX,
194        MISS_WTI_RSP_WTI_MMU,
195        MISS_WTI_RSP_MISS,
196        };
197
198    // PKTID values for TLB MISS and WTI transactions
199    enum pktid_values_e
200    {
201        PKTID_MISS    = 0x0,  // TSAR code for read data uncached
202        PKTID_WTI_IOX = 0x4,  // TSAR code for write
203        PKTID_WTI_MMU = 0xC,  // TSAR code for write
204    };
205   
206    // Miss types for iotlb
207    enum tlb_miss_type_e
208    {
209        PTE1_MISS, 
210        PTE2_MISS,
211        };
212   
213public:
214    sc_in<bool>                               p_clk;
215    sc_in<bool>                               p_resetn;
216   
217    soclib::caba::VciInitiator<vci_param_ext> p_vci_ini_ram; 
218
219    soclib::caba::VciTarget<vci_param_ext>    p_vci_tgt_iox;
220    soclib::caba::VciInitiator<vci_param_ext> p_vci_ini_iox;
221
222    soclib::caba::VciTarget<vci_param_int>    p_vci_tgt_int;
223    soclib::caba::VciInitiator<vci_param_int> p_vci_ini_int;
224
225private:
226    const size_t                                  m_words;
227
228    // INT & IOX Networks
229    std::list<soclib::common::Segment>        m_int_seglist;
230    const vci_srcid_t                             m_int_srcid;      // SRCID on INT network
231    std::list<soclib::common::Segment>        m_iox_seglist;
232
233    // TLB parameters
234    const size_t                                                  m_iotlb_ways;
235    const size_t                                                  m_iotlb_sets;
236
237    // debug variables
238    uint32_t                                  m_debug_start_cycle;
239    bool                                      m_debug_ok;
240    bool                                      m_debug_activated;
241
242    ///////////////////////////////
243    // MEMORY MAPPED REGISTERS
244    ///////////////////////////////
245    sc_signal<uint32_t>         r_iommu_ptpr;           // page table pointer
246    sc_signal<bool>             r_iommu_active;         // iotlb mode
247    sc_signal<uint32_t>         r_iommu_bvar;           // bad vaddr
248    sc_signal<uint32_t>         r_iommu_etr;            // error type
249    sc_signal<uint32_t>         r_iommu_bad_id;         // faulty srcid
250    sc_signal<bool>             r_iommu_wti_enable;     // enable IOB WTI 
251    sc_signal<uint32_t>         r_iommu_wti_addr_lo;    // IOMMU WTI paddr (32 lsb)
252    sc_signal<uint32_t>         r_iommu_wti_addr_hi;    // IOMMU WTI paddr (32 msb)
253
254    sc_signal<uint32_t>         r_xicu_base;            // XICU paddr base (cluster 0)
255    sc_signal<uint32_t>         r_xicu_size;            // XIXU paddr size (cluster 0)
256 
257        ///////////////////////////////////
258    // DMA_CMD FSM REGISTERS
259    ///////////////////////////////////
260    sc_signal<int>              r_dma_cmd_fsm;         
261    sc_signal<vci_addr_t>       r_dma_cmd_paddr;                // output paddr
262
263    sc_signal<bool>             r_dma_cmd_to_miss_wti_cmd_req;
264    sc_signal<vci_addr_t>       r_dma_cmd_to_miss_wti_cmd_addr;
265    sc_signal<vci_cmd_t>        r_dma_cmd_to_miss_wti_cmd_cmd;
266    sc_signal<vci_srcid_t>      r_dma_cmd_to_miss_wti_cmd_srcid;
267    sc_signal<vci_trdid_t>      r_dma_cmd_to_miss_wti_cmd_trdid;
268    sc_signal<vci_trdid_t>      r_dma_cmd_to_miss_wti_cmd_pktid;
269    sc_signal<int_data_t>       r_dma_cmd_to_miss_wti_cmd_wdata;
270
271    sc_signal<bool>             r_dma_cmd_to_dma_rsp_req;
272    sc_signal<vci_srcid_t>      r_dma_cmd_to_dma_rsp_rsrcid;
273    sc_signal<vci_trdid_t>      r_dma_cmd_to_dma_rsp_rtrdid;
274    sc_signal<vci_pktid_t>      r_dma_cmd_to_dma_rsp_rpktid;
275    sc_signal<vci_rerror_t>     r_dma_cmd_to_dma_rsp_rerror;
276    sc_signal<ext_data_t>       r_dma_cmd_to_dma_rsp_rdata;
277     
278    sc_signal<bool>             r_dma_cmd_to_tlb_req;
279    sc_signal<uint32_t>         r_dma_cmd_to_tlb_vaddr;         // input vaddr
280
281    ///////////////////////////////////
282    // DMA_RSP FSM REGISTERS
283    ///////////////////////////////////
284    sc_signal<int>              r_dma_rsp_fsm;
285   
286    ///////////////////////////////////
287    // CONFIG_CMD FSM REGISTERS
288    ///////////////////////////////////
289    sc_signal<int>              r_config_cmd_fsm;
290
291    sc_signal<bool>             r_config_cmd_to_tlb_req;
292    sc_signal<uint32_t>         r_config_cmd_to_tlb_vaddr;
293
294    sc_signal<bool>             r_config_cmd_to_config_rsp_req;
295    sc_signal<bool>             r_config_cmd_to_config_rsp_rerror;
296    sc_signal<uint32_t>         r_config_cmd_to_config_rsp_rdata;
297
298    sc_signal<ext_data_t>       r_config_cmd_wdata;
299    sc_signal<ext_be_t>         r_config_cmd_be;
300    sc_signal<vci_plen_t>       r_config_cmd_cmd;
301    sc_signal<vci_addr_t>       r_config_cmd_address;
302    sc_signal<vci_srcid_t>      r_config_cmd_srcid;
303    sc_signal<vci_pktid_t>      r_config_cmd_pktid;
304    sc_signal<vci_trdid_t>      r_config_cmd_trdid;
305    sc_signal<vci_plen_t>       r_config_cmd_plen;
306    sc_signal<vci_clen_t>       r_config_cmd_clen;
307    sc_signal<vci_cons_t>       r_config_cmd_cons;
308    sc_signal<vci_contig_t>     r_config_cmd_contig;
309    sc_signal<vci_cfixed_t>     r_config_cmd_cfixed;
310    sc_signal<vci_wrap_t>       r_config_cmd_wrap;
311    sc_signal<vci_eop_t>        r_config_cmd_eop;
312
313    ///////////////////////////////////
314    // CONFIG_RSP FSM REGISTERS
315    ///////////////////////////////////
316    sc_signal<int>              r_config_rsp_fsm;
317
318    ///////////////////////////////////
319    // TLB FSM REGISTERS
320    ///////////////////////////////////
321    sc_signal<int>              r_tlb_fsm;                          // state register
322    sc_signal<bool>             r_waiting_transaction;      // Flag for returning from
323    sc_signal<int>              r_tlb_miss_type;
324        sc_signal<bool>             r_tlb_miss_error; 
325
326    sc_signal<vci_addr_t>       r_tlb_paddr;                    // physical address of pte
327    sc_signal<uint32_t>         r_tlb_pte_flags;                // pte1 or first word of pte2
328    sc_signal<uint32_t>         r_tlb_pte_ppn;              // second word of pte2
329    sc_signal<size_t>           r_tlb_way;                          // selected way in tlb   
330    sc_signal<size_t>           r_tlb_set;                          // selected set in tlb   
331
332    uint32_t*                   r_tlb_buf_data;             // prefetch buffer for PTEs
333    sc_signal<bool>             r_tlb_buf_valid;            // one valit flag for all PTEs
334    sc_signal<vci_addr_t>       r_tlb_buf_tag;              // cache line number 
335    sc_signal<vci_addr_t>       r_tlb_buf_vaddr;            // vaddr for first PTE 
336    sc_signal<bool>             r_tlb_buf_big_page;         // ???
337
338    sc_signal<bool>             r_tlb_to_miss_wti_cmd_req;
339
340    ///////////////////////////////////
341    // MISS_WTI_RSP FSM REGISTERS
342    ///////////////////////////////////
343    sc_signal<int>              r_miss_wti_rsp_fsm;
344    sc_signal<bool>             r_miss_wti_rsp_error_wti;   // VCI error on WTI
345    sc_signal<bool>             r_miss_wti_rsp_error_miss;  // VCI error on MISS
346    sc_signal<size_t>           r_miss_wti_rsp_count;       // flits counter
347
348    sc_signal<bool>             r_miss_wti_rsp_to_dma_rsp_req;
349    sc_signal<vci_rerror_t>     r_miss_wti_rsp_to_dma_rsp_rerror;
350    sc_signal<vci_srcid_t>      r_miss_wti_rsp_to_dma_rsp_rsrcid;
351    sc_signal<vci_trdid_t>      r_miss_wti_rsp_to_dma_rsp_rtrdid;
352    sc_signal<vci_pktid_t>      r_miss_wti_rsp_to_dma_rsp_rpktid;
353
354   
355    /////////////////////////////////////////////////////
356    //  ALLOCATORS for CONFIG_RSP fifo & DMA_RSP fifo
357    /////////////////////////////////////////////////////
358    sc_signal<bool>             r_alloc_fifo_config_rsp_local; 
359
360   
361    //////////////////////////////////////////////////////////////////
362    // IOTLB 
363    //////////////////////////////////////////////////////////////////
364    GenericTlb<vci_addr_t>      r_iotlb;
365       
366   
367    /////////////////////////
368    // FIFOs
369    /////////////////////////
370
371    // ouput FIFO to VCI INI port on RAM network (VCI command)
372    GenericFifo<vci_addr_t>     m_dma_cmd_addr_fifo;
373    GenericFifo<vci_srcid_t>    m_dma_cmd_srcid_fifo;
374    GenericFifo<vci_trdid_t>    m_dma_cmd_trdid_fifo;
375    GenericFifo<vci_pktid_t>    m_dma_cmd_pktid_fifo;
376    GenericFifo<ext_be_t>       m_dma_cmd_be_fifo;
377    GenericFifo<vci_cmd_t>      m_dma_cmd_cmd_fifo;
378    GenericFifo<vci_contig_t>   m_dma_cmd_contig_fifo;
379    GenericFifo<ext_data_t>     m_dma_cmd_data_fifo;
380    GenericFifo<vci_eop_t>      m_dma_cmd_eop_fifo;
381    GenericFifo<vci_cons_t>     m_dma_cmd_cons_fifo;
382    GenericFifo<vci_plen_t>     m_dma_cmd_plen_fifo;
383    GenericFifo<vci_wrap_t>     m_dma_cmd_wrap_fifo;
384    GenericFifo<vci_cfixed_t>   m_dma_cmd_cfixed_fifo;
385    GenericFifo<vci_clen_t>     m_dma_cmd_clen_fifo;
386
387    // output FIFO to VCI TGT port on IOX network (VCI response)
388    GenericFifo<ext_data_t>     m_dma_rsp_data_fifo;
389    GenericFifo<vci_srcid_t>    m_dma_rsp_rsrcid_fifo;
390    GenericFifo<vci_trdid_t>    m_dma_rsp_rtrdid_fifo;
391    GenericFifo<vci_pktid_t>    m_dma_rsp_rpktid_fifo;
392    GenericFifo<vci_eop_t>      m_dma_rsp_reop_fifo;
393    GenericFifo<vci_rerror_t>   m_dma_rsp_rerror_fifo;
394       
395    // output FIFO to VCI INI port on IOX network (VCI command)
396    GenericFifo<vci_addr_t>     m_config_cmd_addr_fifo;
397    GenericFifo<vci_srcid_t>    m_config_cmd_srcid_fifo;
398    GenericFifo<vci_trdid_t>    m_config_cmd_trdid_fifo;
399    GenericFifo<vci_pktid_t>    m_config_cmd_pktid_fifo;
400    GenericFifo<ext_be_t>       m_config_cmd_be_fifo;
401    GenericFifo<vci_cmd_t>      m_config_cmd_cmd_fifo;
402    GenericFifo<vci_contig_t>   m_config_cmd_contig_fifo;
403    GenericFifo<ext_data_t>     m_config_cmd_data_fifo;
404    GenericFifo<vci_eop_t>      m_config_cmd_eop_fifo;
405    GenericFifo<vci_cons_t>     m_config_cmd_cons_fifo;
406    GenericFifo<vci_plen_t>     m_config_cmd_plen_fifo;
407    GenericFifo<vci_wrap_t>     m_config_cmd_wrap_fifo;
408    GenericFifo<vci_cfixed_t>   m_config_cmd_cfixed_fifo;
409    GenericFifo<vci_clen_t>     m_config_cmd_clen_fifo;
410   
411    // output FIFO to VCI TGT port on INT network (VCI response) 
412    GenericFifo<int_data_t>     m_config_rsp_data_fifo;
413    GenericFifo<vci_srcid_t>    m_config_rsp_rsrcid_fifo;
414    GenericFifo<vci_trdid_t>    m_config_rsp_rtrdid_fifo;
415    GenericFifo<vci_pktid_t>    m_config_rsp_rpktid_fifo;
416    GenericFifo<vci_eop_t>      m_config_rsp_reop_fifo;
417    GenericFifo<vci_rerror_t>   m_config_rsp_rerror_fifo;
418       
419    // output FIFO to VCI_INI port on INT network (VCI command)
420    GenericFifo<vci_addr_t>     m_miss_wti_cmd_addr_fifo;
421    GenericFifo<vci_srcid_t>    m_miss_wti_cmd_srcid_fifo;
422    GenericFifo<vci_trdid_t>    m_miss_wti_cmd_trdid_fifo;
423    GenericFifo<vci_pktid_t>    m_miss_wti_cmd_pktid_fifo;
424    GenericFifo<int_be_t>       m_miss_wti_cmd_be_fifo;
425    GenericFifo<vci_cmd_t>      m_miss_wti_cmd_cmd_fifo;
426    GenericFifo<vci_contig_t>   m_miss_wti_cmd_contig_fifo;
427    GenericFifo<int_data_t>     m_miss_wti_cmd_data_fifo;
428    GenericFifo<vci_eop_t>      m_miss_wti_cmd_eop_fifo;
429    GenericFifo<vci_cons_t>     m_miss_wti_cmd_cons_fifo;
430    GenericFifo<vci_plen_t>     m_miss_wti_cmd_plen_fifo;
431    GenericFifo<vci_wrap_t>     m_miss_wti_cmd_wrap_fifo;
432    GenericFifo<vci_cfixed_t>   m_miss_wti_cmd_cfixed_fifo;
433    GenericFifo<vci_clen_t>     m_miss_wti_cmd_clen_fifo;
434   
435    ////////////////////////////////
436    // Activity counters
437    ////////////////////////////////
438   
439    uint32_t m_cpt_total_cycles;            // total number of cycles
440   
441    // TLB activity counters
442    uint32_t m_cpt_iotlb_read;              // number of iotlb read
443    uint32_t m_cpt_iotlb_miss;              // number of iotlb miss
444    uint32_t m_cost_iotlb_miss;             // number of wait cycles (not treatment itself)
445    uint32_t m_cpt_iotlbmiss_transaction;   // number of tlb miss transactions
446    uint32_t m_cost_iotlbmiss_transaction;  // cumulated duration tlb miss transactions
447
448    //Transaction Tabs (TRTs) activity counters
449    uint32_t m_cpt_trt_dma_full;            // DMA TRT full when a new command arrives
450    uint32_t m_cpt_trt_dma_full_cost;       // total number of cycles blocked
451    uint32_t m_cpt_trt_config_full;         // Config TRT full when a new command arrives
452    uint32_t m_cpt_trt_config_full_cost;    // total number of cycles blocked
453
454    // FSM activity counters
455    // unused on print_stats
456    uint32_t m_cpt_fsm_dma_cmd          [32]; 
457    uint32_t m_cpt_fsm_dma_rsp          [32]; 
458    uint32_t m_cpt_fsm_tlb              [32]; 
459    uint32_t m_cpt_fsm_config_cmd       [32]; 
460    uint32_t m_cpt_fsm_config_rsp       [32]; 
461    uint32_t m_cpt_fsm_miss_wti_rsp     [32];
462 
463protected:
464
465    SC_HAS_PROCESS(VciIoBridge);
466
467public:
468
469    VciIoBridge(
470        sc_module_name insname,
471        const    soclib::common::MappingTable  &mt_ext,      // external network
472        const    soclib::common::MappingTable  &mt_int,      // internal network
473        const    soclib::common::MappingTable  &mt_iox,      // iox network
474        const    soclib::common::IntTab        &int_tgtid,   // INT network TGTID
475        const    soclib::common::IntTab        &int_srcid,   // INT network SRCID
476        const    soclib::common::IntTab        &iox_tgtid,   // IOX network TGTID
477        const    size_t                        dcache_words,
478        const    size_t                        iotlb_ways,
479        const    size_t                        iotlb_sets,
480        const    uint32_t                      debug_start_cycle,
481        const    bool                          debug_ok );
482
483    ~VciIoBridge();
484
485    void print_stats();
486    void clear_stats();
487    void print_trace(size_t mode = 0);
488   
489
490private:
491
492    bool is_wti( vci_addr_t paddr );
493    void transition();
494    void genMoore();
495};
496
497}}
498
499#endif /* SOCLIB_CABA_VCI_CC_VCACHE_WRAPPER_V4_H */
500
501// Local Variables:
502// tab-width: 4
503// c-basic-offset: 4
504// c-file-offsets:((innamespace . 0)(inline-open . 0))
505// indent-tabs-mode: nil
506// End:
507
508// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=4:softtabstop=4
509
510
511
512
Note: See TracBrowser for help on using the repository browser.