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

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

Introducing tsarv4_generic_mmu platform

File size: 7.5 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// This file define a TSAR cluster architecture with virtual memory:
9// - It uses the virtual_dspin_router  as distributed global interconnect
10// - It uses the vci_local_crossbar as local interconnect
11// - It uses the vci_cc_vcache_wrapper_v4
12// - It uses the vci_mem_cache_v4
13// - It contains a private RAM with a variable latency to emulate the L3 cache
14// - It can contains 1, 2 or 4 processors
15// - Each processor has a private dma channel (vci_multi_dma)
16// - It uses the vci_xicu interrupt controller
17// - The peripherals MTTY, BDEV, FBUF, and the boot BROM are in the cluster
18//   containing address 0xBFC00000.
19// - The Multi-TTY component controls 4 terminals.
20// - The nprocs dma irqs are connected to IRQ_IN[0]...IRQ_IN[3]
21// - The four tty irqs are connected to IRQ_IN[4]...IRQ_IN[7]
22// - The bdev irq is connected to IRQ_IN[8]
23//////////////////////////////////////////////////////////////////////////////////
24
25#ifndef SOCLIB_CABA_TSAR_CLUSTER_V4_MMU_H
26#define SOCLIB_CABA_TSAR_CLUSTER_V4_MMU_H
27
28#include <systemc>
29#include <sys/time.h>
30#include <iostream>
31#include <sstream>
32#include <cstdlib>
33#include <cstdarg>
34
35#include "gdbserver.h"
36#include "mapping_table.h"
37#include "mips32.h"
38#include "vci_simple_ram.h"
39#include "vci_xicu.h"
40#include "vci_local_crossbar.h"
41#include "virtual_dspin_router.h"
42#include "vci_vdspin_target_wrapper.h"
43#include "vci_vdspin_initiator_wrapper.h"
44#include "vci_multi_tty.h"
45#include "vci_block_device_tsar_v4.h"
46#include "vci_framebuffer.h"
47#include "vci_multi_dma.h"
48#include "vci_mem_cache_v4.h"
49#include "vci_cc_vcache_wrapper_v4.h"
50
51namespace soclib {
52namespace caba  {
53
54///////////////////////////////////////////////////////////////////////////
55template<typename vci_param, typename iss_t, int cmd_width, int rsp_width>
56class TsarV4ClusterMmu
57///////////////////////////////////////////////////////////////////////////
58    : public soclib::caba::BaseModule
59{
60
61  public:
62
63        // Ports
64        sc_in<bool>                                             p_clk;
65        sc_in<bool>                                             p_resetn;
66        soclib::caba::DspinOutput<cmd_width>                    **p_cmd_out;
67        soclib::caba::DspinInput<cmd_width>                     **p_cmd_in;
68        soclib::caba::DspinOutput<rsp_width>                    **p_rsp_out;
69        soclib::caba::DspinInput<rsp_width>                     **p_rsp_in;
70
71        // interrupt signals
72        sc_signal<bool>                 signal_false;
73        sc_signal<bool>                 signal_proc_it[4];
74        sc_signal<bool>                 signal_irq_mdma[4];
75        sc_signal<bool>                 signal_irq_tty0;
76        sc_signal<bool>                 signal_irq_tty1;
77        sc_signal<bool>                 signal_irq_tty2;
78        sc_signal<bool>                 signal_irq_tty3;
79        sc_signal<bool>                 signal_irq_bdev;
80       
81        // DSPIN signals between DSPIN routers and VCI/DSPIN wrappers
82        DspinSignals<cmd_width>         signal_dspin_cmd_l2g_d; 
83        DspinSignals<cmd_width>         signal_dspin_cmd_g2l_d; 
84        DspinSignals<cmd_width>         signal_dspin_cmd_l2g_c;
85        DspinSignals<cmd_width>         signal_dspin_cmd_g2l_c; 
86        DspinSignals<rsp_width>         signal_dspin_rsp_l2g_d; 
87        DspinSignals<rsp_width>         signal_dspin_rsp_g2l_d; 
88        DspinSignals<rsp_width>         signal_dspin_rsp_l2g_c;
89        DspinSignals<rsp_width>         signal_dspin_rsp_g2l_c;
90
91        // VCI signals between VCI/DSPIN wrappers and local crossbars
92        VciSignals<vci_param>           signal_vci_l2g_d; 
93        VciSignals<vci_param>           signal_vci_g2l_d; 
94        VciSignals<vci_param>           signal_vci_l2g_c; 
95        VciSignals<vci_param>           signal_vci_g2l_c; 
96
97        // Direct VCI signals
98        VciSignals<vci_param>           signal_vci_ini_d_proc[4]; 
99        VciSignals<vci_param>           signal_vci_ini_d_bdev; 
100        VciSignals<vci_param>           signal_vci_ini_d_mdma; 
101
102        VciSignals<vci_param>           signal_vci_tgt_d_memc;
103        VciSignals<vci_param>           signal_vci_tgt_d_mtty;
104        VciSignals<vci_param>           signal_vci_tgt_d_xicu;
105        VciSignals<vci_param>           signal_vci_tgt_d_bdev;
106        VciSignals<vci_param>           signal_vci_tgt_d_mdma;
107        VciSignals<vci_param>           signal_vci_tgt_d_brom;
108        VciSignals<vci_param>           signal_vci_tgt_d_fbuf;
109
110        // Coherence VCi signals
111        VciSignals<vci_param>           signal_vci_ini_c_proc[4];
112        VciSignals<vci_param>           signal_vci_tgt_c_proc[4];
113        VciSignals<vci_param>           signal_vci_ini_c_memc;
114        VciSignals<vci_param>           signal_vci_tgt_c_memc;
115
116        // external RAM VCI signal
117        VciSignals<vci_param>           signal_vci_xram;
118       
119        // Components
120
121        VciCcVCacheWrapperV4<vci_param, iss_t>*                         proc[4];
122        VciMemCacheV4<vci_param>*                                       memc;
123        VciXicu<vci_param>*                                             xicu;
124        VciLocalCrossbar<vci_param>*                                    xbard;
125        VciLocalCrossbar<vci_param>*                                    xbarc;
126        VciVdspinTargetWrapper<vci_param,cmd_width,rsp_width>*          tgtwrapperd;
127        VciVdspinInitiatorWrapper<vci_param,cmd_width,rsp_width>*       iniwrapperd;
128        VciVdspinTargetWrapper<vci_param,cmd_width,rsp_width>*          tgtwrapperc;
129        VciVdspinInitiatorWrapper<vci_param,cmd_width,rsp_width>*       iniwrapperc;
130        VirtualDspinRouter<cmd_width>*                                  cmdrouter;
131        VirtualDspinRouter<rsp_width>*                                  rsprouter;
132        VciSimpleRam<vci_param>*                                        brom;
133        VciMultiTty<vci_param>*                                         mtty;
134        VciFrameBuffer<vci_param>*                                      fbuf;
135        VciBlockDeviceTsarV4<vci_param>*                                bdev;
136        VciMultiDma<vci_param>*                                         mdma;
137        VciSimpleRam<vci_param>*                                        xram;
138
139        TsarV4ClusterMmu(sc_module_name  insname,
140                        size_t   nprocs,                            // number of processors
141                        size_t   n_x,                               // x coordinate
142                        size_t   n_y,                               // y coordinate
143                        size_t   n_cluster,                         // y + ymax*x
144                        const    soclib::common::MappingTable &mtd, // direct mapping table
145                        const    soclib::common::MappingTable &mtc, // coherence mapping table
146                        const    soclib::common::MappingTable &mtx, // xram mapping table
147                        size_t   x_width,                           // x field number of bits
148                        size_t   y_width,                           // y field number of bits
149                        size_t   tgtid_memc,
150                        size_t   tgtid_xicu,
151                        size_t   tgtid_fbuf,
152                        size_t   tgtid_mtty,
153                        size_t   tgtid_brom,
154                        size_t   tgtid_bdev,
155                        size_t   tgtid_mdma,
156                        size_t   memc_ways,                         // number of ways for MEMC
157                        size_t   memc_sets,                         // number of sets for MEMC
158                        size_t   l1_i_ways,                         // number of ways for L1 ICACHE
159                        size_t   l1_i_sets,                         // number of sets for L1 ICACHE
160                        size_t   l1_d_ways,                         // number of ways for L1 DCACHE
161                        size_t   l1_d_sets,                         // number of sets for L1 DCACHE
162                        size_t   xram_latency,                      // external ram latency
163                        bool     io,                                // I/O cluster if true
164                        size_t   xfb,                               // frame buffer pixels
165                        size_t   yfb,                               // frame buffer lines
166                        char*    disk_name,                         // virtual disk name for BDEV
167                        size_t   block_size,                        // block size for BDEV
168                        Loader   loader,                            // loader for BROM
169                        uint32_t frozen_cycles,                     // max frozen cycles
170                        uint32_t start_debug_cycle,
171                        bool     debug_ok); 
172
173        ~TsarV4ClusterMmu();
174};
175}}
176
177#endif
Note: See TracBrowser for help on using the repository browser.