source: trunk/platforms/tsar_generic_xbar/tsar_xbar_cluster/caba/source/include/tsar_xbar_cluster.h @ 378

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

Introducing tsar_generic_xbar platform

File size: 9.8 KB
Line 
1//////////////////////////////////////////////////////////////////////////////
2// File: tsar_xbar_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_XBAR_CLUSTER_H
10#define SOCLIB_CABA_TSAR_XBAR_CLUSTER_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 "dspin_local_crossbar.h"
25#include "vci_dspin_initiator_wrapper.h"
26#include "vci_dspin_target_wrapper.h"
27#include "virtual_dspin_router.h"
28#include "vci_multi_tty.h"
29#include "vci_multi_nic.h"
30#include "vci_block_device_tsar.h"
31#include "vci_framebuffer.h"
32#include "vci_multi_dma.h"
33#include "vci_mem_cache.h"
34#include "vci_cc_vcache_wrapper.h"
35
36namespace soclib { namespace caba       {
37
38///////////////////////////////////////////////////////////////////////////
39template<typename vci_param, typename iss_t, int cmd_width, int rsp_width>
40class TsarXbarCluster
41///////////////////////////////////////////////////////////////////////////
42    : public soclib::caba::BaseModule
43{
44
45  public:
46
47        // Ports
48    sc_in<bool>                                         p_clk;
49    sc_in<bool>                                         p_resetn;
50        soclib::caba::DspinOutput<cmd_width>                    **p_cmd_out;
51        soclib::caba::DspinInput<cmd_width>                     **p_cmd_in;
52    soclib::caba::DspinOutput<rsp_width>                **p_rsp_out;
53    soclib::caba::DspinInput<rsp_width>                 **p_rsp_in;
54
55    // interrupt signals
56        sc_signal<bool>         signal_false;
57        sc_signal<bool>                 signal_proc_it[8];
58        sc_signal<bool>                 signal_irq_mdma[8];
59        sc_signal<bool>                 signal_irq_mtty[23];
60        sc_signal<bool>                 signal_irq_mnic_rx[8];  // unused
61        sc_signal<bool>                 signal_irq_mnic_tx[8];  // unused
62        sc_signal<bool>                 signal_irq_bdev;
63       
64        // DSPIN signals between DSPIN routers and local_crossbars
65        DspinSignals<cmd_width>         signal_dspin_cmd_l2g_d; 
66        DspinSignals<cmd_width>         signal_dspin_cmd_g2l_d; 
67        DspinSignals<cmd_width>         signal_dspin_m2p_l2g_c;
68        DspinSignals<cmd_width>         signal_dspin_m2p_g2l_c; 
69        DspinSignals<rsp_width>         signal_dspin_rsp_l2g_d; 
70        DspinSignals<rsp_width>         signal_dspin_rsp_g2l_d; 
71        DspinSignals<rsp_width>         signal_dspin_p2m_l2g_c;
72        DspinSignals<rsp_width>         signal_dspin_p2m_g2l_c;
73
74        // Direct VCI signals to VCI/DSPIN wrappers
75        VciSignals<vci_param>           signal_vci_ini_proc[8]; 
76        VciSignals<vci_param>           signal_vci_ini_mdma; 
77        VciSignals<vci_param>           signal_vci_ini_bdev; 
78
79        VciSignals<vci_param>           signal_vci_tgt_memc;
80        VciSignals<vci_param>           signal_vci_tgt_xicu;
81        VciSignals<vci_param>           signal_vci_tgt_mdma;
82        VciSignals<vci_param>           signal_vci_tgt_mtty;
83        VciSignals<vci_param>           signal_vci_tgt_bdev;
84        VciSignals<vci_param>           signal_vci_tgt_brom;
85        VciSignals<vci_param>           signal_vci_tgt_fbuf;
86        VciSignals<vci_param>           signal_vci_tgt_mnic;
87
88        // Direct DSPIN signals to local crossbars
89        DspinSignals<cmd_width>     signal_dspin_cmd_proc_i[8];
90        DspinSignals<rsp_width>     signal_dspin_rsp_proc_i[8];
91        DspinSignals<cmd_width>     signal_dspin_cmd_mdma_i;
92        DspinSignals<rsp_width>     signal_dspin_rsp_mdma_i;
93        DspinSignals<cmd_width>     signal_dspin_cmd_bdev_i;
94        DspinSignals<rsp_width>     signal_dspin_rsp_bdev_i;
95
96        DspinSignals<cmd_width>     signal_dspin_cmd_memc_t;
97        DspinSignals<rsp_width>     signal_dspin_rsp_memc_t;
98        DspinSignals<cmd_width>     signal_dspin_cmd_xicu_t;
99        DspinSignals<rsp_width>     signal_dspin_rsp_xicu_t;
100        DspinSignals<cmd_width>     signal_dspin_cmd_mdma_t;
101        DspinSignals<rsp_width>     signal_dspin_rsp_mdma_t;
102        DspinSignals<cmd_width>     signal_dspin_cmd_mtty_t;
103        DspinSignals<rsp_width>     signal_dspin_rsp_mtty_t;
104        DspinSignals<cmd_width>     signal_dspin_cmd_bdev_t;
105        DspinSignals<rsp_width>     signal_dspin_rsp_bdev_t;
106        DspinSignals<cmd_width>     signal_dspin_cmd_brom_t;
107        DspinSignals<rsp_width>     signal_dspin_rsp_brom_t;
108        DspinSignals<cmd_width>     signal_dspin_cmd_fbuf_t;
109        DspinSignals<rsp_width>     signal_dspin_rsp_fbuf_t;
110        DspinSignals<cmd_width>     signal_dspin_cmd_mnic_t;
111        DspinSignals<rsp_width>     signal_dspin_rsp_mnic_t;
112
113        // Coherence DSPIN signals to local crossbar
114        DspinSignals<cmd_width>     signal_dspin_m2p_memc;
115        DspinSignals<rsp_width>     signal_dspin_p2m_memc;
116        DspinSignals<cmd_width>     signal_dspin_m2p_proc[8];
117        DspinSignals<rsp_width>     signal_dspin_p2m_proc[8];
118
119        // external RAM VCI signal
120        VciSignals<vci_param>           signal_vci_xram;
121       
122    // Components
123
124    VciCcVCacheWrapper<vci_param, iss_t>*                           proc[8];
125    VciDspinInitiatorWrapper<vci_param,cmd_width,rsp_width>*    wi_proc[4];
126
127    VciMemCache<vci_param>*                                         memc;
128    VciDspinTargetWrapper<vci_param,cmd_width,rsp_width>*       wt_memc;
129
130    VciXicu<vci_param>*                                         xicu;
131    VciDspinTargetWrapper<vci_param,cmd_width,rsp_width>*       wt_xicu;
132
133    VciMultiDma<vci_param>*                                     mdma;
134    VciDspinInitiatorWrapper<vci_param,cmd_width,rsp_width>*    wi_mdma;
135    VciDspinTargetWrapper<vci_param,cmd_width,rsp_width>*       wt_mdma;
136
137    VciSimpleRam<vci_param>*                                    xram;
138    VciDspinTargetWrapper<vci_param,cmd_width,rsp_width>*       wt_xram;
139
140    VciSimpleRam<vci_param>*                                    brom;
141    VciDspinTargetWrapper<vci_param,cmd_width,rsp_width>*       wt_brom;
142
143    VciMultiTty<vci_param>*                                     mtty;
144    VciDspinTargetWrapper<vci_param,cmd_width,rsp_width>*       wt_mtty;
145
146    VciFrameBuffer<vci_param>*                                  fbuf;
147    VciDspinTargetWrapper<vci_param,cmd_width,rsp_width>*       wt_fbuf;
148
149    VciMultiNic<vci_param>*                                     mnic;
150    VciDspinTargetWrapper<vci_param,cmd_width,rsp_width>*       wt_mnic;
151
152    VciBlockDeviceTsar<vci_param>*                              bdev;
153    VciDspinInitiatorWrapper<vci_param,cmd_width,rsp_width>*    wi_bdev;
154    VciDspinTargetWrapper<vci_param,cmd_width,rsp_width>*       wt_bdev;
155
156    DspinLocalCrossbar<cmd_width>*                              xbar_cmd_d;
157    DspinLocalCrossbar<rsp_width>*                              xbar_rsp_d;
158    DspinLocalCrossbar<cmd_width>*                              xbar_m2p_c;
159    DspinLocalCrossbar<rsp_width>*                              xbar_p2m_c;
160
161    VirtualDspinRouter<cmd_width>*                                      router_cmd;
162    VirtualDspinRouter<rsp_width>*                              router_rsp;
163
164        TsarXbarCluster( sc_module_name                     insname,
165                     size_t                             nb_procs,      // number of processors
166                     size_t                             nb_ttys,       // number of TTY terminals
167                     size_t                             nb_dmas,       // number of DMA channels
168                     size_t                             x,             // x coordinate
169                     size_t                             y,             // y coordinate
170                     size_t                             cluster,       // y + ymax*x
171                     const soclib::common::MappingTable &mtd,          // direct mapping table
172                     const soclib::common::MappingTable &mtx,          // xram mapping table
173                     size_t                                 x_width,       // x field number of bits
174                     size_t                                 y_width,       // y field number of bits
175                     size_t                                 l_width,       // l field number of bits
176                     size_t                                 tgtid_memc,
177                     size_t                                 tgtid_xicu,
178                     size_t                             tgtid_mdma,
179                     size_t                                 tgtid_fbuf,
180                     size_t                             tgtid_mtty,
181                     size_t                             tgtid_brom,
182                     size_t                             tgtid_mnic,
183                     size_t                             tgtid_bdev,
184                     size_t                             memc_ways,
185                     size_t                             memc_sets,
186                     size_t                             l1_i_ways,
187                     size_t                             l1_i_sets, 
188                     size_t                             l1_d_ways,
189                     size_t                             l1_d_sets,     
190                     size_t                             xram_latency,  // external ram latency
191                     bool                               io,                // I/O cluster if true
192                     size_t                             xfb,           // frame buffer pixels
193                     size_t                             yfb,           // frame buffer lines
194                     char*                              disk_name,     // virtual disk for BDEV
195                     size_t                             block_size,    // block size for BDEV
196                     size_t                             nic_channels,  // number of channels
197                     char*                              nic_rx_name,   // file name rx packets
198                     char*                              nic_tx_name,   // file name tx packets
199                     uint32_t                                                   nic_timeout,   // number of cycles
200                                 const Loader                       &loader,       // loader for BROM
201                     uint32_t                           frozen_cycles, // max frozen cycles
202                     uint32_t                           start_debug_cycle,
203                     bool                               memc_debug_ok, 
204                     bool                               proc_debug_ok); 
205
206        ~TsarXbarCluster();
207};
208}}
209
210#endif
Note: See TracBrowser for help on using the repository browser.