source: branches/v5/platforms/tsar_generic_mmu_dspin_coherence/tsar_cluster_mmu/caba/source/include/tsar_cluster_mmu.h @ 342

Last change on this file since 342 was 342, checked in by joannou, 11 years ago

Introducing tsar_generic_mmu_dspin_coherence platform (ring dspin for coherence network)

File size: 7.9 KB
Line 
1//////////////////////////////////////////////////////////////////////////////
2// File: tsar_cluster_mmu.h
3// Author: Alain Greiner
4// Copyright: UPMC/LIP6
5// Date : march 2011
6// This program is released under the GNU public license
7//////////////////////////////////////////////////////////////////////////////
8
9#ifndef SOCLIB_CABA_TSAR_CLUSTER_MMU_H
10#define SOCLIB_CABA_TSAR_CLUSTER_MMU_H
11
12#include <systemc>
13#include <sys/time.h>
14#include <iostream>
15#include <sstream>
16#include <cstdlib>
17#include <cstdarg>
18
19#include "gdbserver.h"
20#include "mapping_table.h"
21#include "mips32.h"
22#include "vci_simple_ram.h"
23#include "vci_xicu.h"
24#include "vci_local_crossbar.h"
25#include "dspin_local_ring_fast_c.h"
26#include "virtual_dspin_router.h"
27#include "vci_vdspin_target_wrapper.h"
28#include "vci_vdspin_initiator_wrapper.h"
29#include "vci_multi_tty.h"
30#include "vci_multi_nic.h"
31#include "vci_block_device_tsar_v4.h"
32#include "vci_framebuffer.h"
33#include "vci_multi_dma.h"
34#include "vci_mem_cache_dspin_coherence.h"
35#include "vci_cc_vcache_wrapper_dspin_coherence.h"
36
37namespace soclib {
38namespace caba  {
39
40///////////////////////////////////////////////////////////////////////////
41template<typename vci_param, typename iss_t, int cmd_width, int rsp_width>
42class TsarClusterMmu
43///////////////////////////////////////////////////////////////////////////
44    : public soclib::caba::BaseModule
45{
46
47  public:
48
49        // Ports
50    sc_in<bool>                                         p_clk;
51    sc_in<bool>                                         p_resetn;
52        soclib::caba::DspinOutput<cmd_width>                    **p_cmd_out;
53        soclib::caba::DspinInput<cmd_width>                     **p_cmd_in;
54    soclib::caba::DspinOutput<rsp_width>                **p_rsp_out;
55    soclib::caba::DspinInput<rsp_width>                 **p_rsp_in;
56
57    // interrupt signals
58        sc_signal<bool>         signal_false;
59        sc_signal<bool>                 signal_proc_it[8];
60        sc_signal<bool>                 signal_irq_mdma[8];
61        sc_signal<bool>                 signal_irq_mtty[23];
62        sc_signal<bool>                 signal_irq_mnic_rx[8];  // unused
63        sc_signal<bool>                 signal_irq_mnic_tx[8];  // unused
64        sc_signal<bool>                 signal_irq_bdev;
65       
66        // DSPIN signals between DSPIN routers and VCI/DSPIN wrappers / DSPIN coherence
67        DspinSignals<cmd_width>         signal_dspin_cmd_l2g_d; 
68        DspinSignals<cmd_width>         signal_dspin_cmd_g2l_d; 
69        DspinSignals<cmd_width>         signal_dspin_cmd_l2g_c;
70        DspinSignals<cmd_width>         signal_dspin_cmd_g2l_c; 
71        DspinSignals<rsp_width>         signal_dspin_rsp_l2g_d; 
72        DspinSignals<rsp_width>         signal_dspin_rsp_g2l_d; 
73        DspinSignals<rsp_width>         signal_dspin_rsp_l2g_c;
74        DspinSignals<rsp_width>         signal_dspin_rsp_g2l_c;
75
76        // VCI signals between VCI/DSPIN wrappers and local crossbars
77        VciSignals<vci_param>           signal_vci_l2g_d; 
78        VciSignals<vci_param>           signal_vci_g2l_d; 
79
80        // Direct VCI signals
81        VciSignals<vci_param>           signal_vci_ini_d_proc[4]; 
82        VciSignals<vci_param>           signal_vci_ini_d_bdev; 
83        VciSignals<vci_param>           signal_vci_ini_d_mdma; 
84
85        VciSignals<vci_param>           signal_vci_tgt_d_memc;
86        VciSignals<vci_param>           signal_vci_tgt_d_mtty;
87        VciSignals<vci_param>           signal_vci_tgt_d_xicu;
88        VciSignals<vci_param>           signal_vci_tgt_d_bdev;
89        VciSignals<vci_param>           signal_vci_tgt_d_mdma;
90        VciSignals<vci_param>           signal_vci_tgt_d_brom;
91        VciSignals<vci_param>           signal_vci_tgt_d_fbuf;
92        VciSignals<vci_param>           signal_vci_tgt_d_mnic;
93
94        // Coherence DSPIN signals
95        DspinSignals<cmd_width>         signal_dspin_c_to_proc[4]; 
96        DspinSignals<rsp_width>         signal_dspin_c_from_proc[4]; 
97        DspinSignals<cmd_width>         signal_dspin_c_from_memc; 
98        DspinSignals<rsp_width>         signal_dspin_c_to_memc; 
99
100        // external RAM VCI signal
101        VciSignals<vci_param>           signal_vci_xram;
102       
103    // Components
104
105    VciCcVCacheWrapper<vci_param, iss_t>*                       proc[8];
106    VciMemCache<vci_param>*                                     memc;
107    VciXicu<vci_param>*                                         xicu;
108    VciLocalCrossbar<vci_param>*                                xbard;
109        soclib::caba::DspinLocalRingFastC<vci_param, 40, 33> *      ringc;
110    VciVdspinTargetWrapper<vci_param,cmd_width,rsp_width>*      tgtwrapperd;
111    VciVdspinInitiatorWrapper<vci_param,cmd_width,rsp_width>*   iniwrapperd;
112    VirtualDspinRouter<cmd_width>*                              cmdrouter;
113    VirtualDspinRouter<rsp_width>*                                      rsprouter;
114    VciSimpleRam<vci_param>*                                    brom;
115    VciMultiTty<vci_param>*                                     mtty;
116    VciFrameBuffer<vci_param>*                                  fbuf;
117    VciMultiNic<vci_param>*                                     mnic;
118    VciBlockDeviceTsarV4<vci_param>*                            bdev;
119    VciMultiDma<vci_param>*                                     mdma;
120    VciSimpleRam<vci_param>*                                    xram;
121
122        TsarClusterMmu(sc_module_name                     insname,
123                     size_t                             nb_procs,      // number of processors
124                     size_t                             nb_ttys,       // number of TTY terminals
125                     size_t                             nb_dmas,       // number of DMA channels
126                     size_t                             x,             // x coordinate
127                     size_t                             y,             // y coordinate
128                     size_t                             cluster,       // y + ymax*x
129                     const soclib::common::MappingTable &mtd,          // direct mapping table
130                     const soclib::common::MappingTable &mtc,          // coherence mapping table
131                     const soclib::common::MappingTable &mtx,          // xram mapping table
132                     size_t                                 x_width,       // x field number of bits
133                     size_t                                 y_width,       // y field number of bits
134                     size_t                                 tgtid_memc,
135                     size_t                                 tgtid_xicu,
136                     size_t                             tgtid_mdma,
137                     size_t                                 tgtid_fbuf,
138                     size_t                             tgtid_mtty,
139                     size_t                             tgtid_brom,
140                     size_t                             tgtid_mnic,
141                     size_t                             tgtid_bdev,
142                     size_t                             memc_ways,
143                     size_t                             memc_sets,
144                     size_t                             l1_i_ways,
145                     size_t                             l1_i_sets, 
146                     size_t                             l1_d_ways,
147                     size_t                             l1_d_sets,     
148                     size_t                             xram_latency,  // external ram latency
149                     bool                               io,                // I/O cluster if true
150                     size_t                             xfb,           // frame buffer pixels
151                     size_t                             yfb,           // frame buffer lines
152                     char*                              disk_name,     // virtual disk name for BDEV
153                     size_t                             block_size,    // block size for BDEV
154                     size_t                             nic_channels,  // number of channels
155                     char*                              nic_rx_name,   // file name rx packets
156                     char*                              nic_tx_name,   // file name tx packets
157                     uint32_t                                                   nic_timeout,   // number of cycles
158                                 const Loader                       &loader,       // loader for BROM
159                     uint32_t                           frozen_cycles, // max frozen cycles
160                     uint32_t                           start_debug_cycle,
161                     bool                               memc_debug_ok, 
162                     bool                               proc_debug_ok); 
163
164        ~TsarClusterMmu();
165};
166}}
167
168#endif
Note: See TracBrowser for help on using the repository browser.