source: trunk/platforms/tsarv4_generic_mmu/tsarv4_cluster_mmu/caba/source/include/tsarv4_cluster_mmu.h @ 263

Last change on this file since 263 was 263, checked in by alain, 12 years ago

Introducing a network controller (vci_multi_nic) in the I0 cluster.

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