source: trunk/platforms/tsarv1_mono_ring/tsar_cluster_v1/caba/source/include/tsar_cluster_v1.h @ 226

Last change on this file since 226 was 226, checked in by cfuguet, 12 years ago

New tsar v1 monocluster platform

File size: 3.1 KB
Line 
1#ifndef TSAR_CLUSTER_V1_H
2#define TSAR_CLUSTER_V1_H
3
4#include <systemc.h>
5#include <iostream>
6
7#include "mapping_table.h"
8#include "mips32.h"
9#include "vci_multi_tty.h"
10#include "vci_mem_cache_v1.h"
11#include "vci_cc_xcache_wrapper_v1.h"
12#include "vci_xicu.h"
13#include "vci_simple_ring_fast.h"
14#include "gdbserver.h"
15#include "vci_initiator.h"
16
17///////////////////////////////////////////////////////////
18//     TGTID & SRCID definition in direct space
19// For all components:  global TGTID = global SRCID = cluster_index
20// For processors, the local SRCID is between 0 & nprocs-1
21
22#define MEMC_TGTID        0
23#define XICU_TGTID        1
24#define MTTY_TGTID        2
25
26#define PROC_SRCID    0
27
28namespace soclib { 
29  namespace caba {
30
31    template <typename vci_param, size_t cmd_width, size_t rsp_width>
32    class TsarClusterV1 : public soclib::caba::BaseModule {
33      public:
34        TsarClusterV1(
35          sc_module_name nm,
36
37          // Cluster Index
38          int cluster_idx,
39
40          // Dspin Routers parameters
41          int infifo_depth,
42          int outfifo_depth,
43          int x_local,
44          int y_local,
45
46          // Bits for global routing
47          size_t x_width,
48          size_t y_width,
49
50          // Mapping tables
51          const MappingTable & md,
52          const MappingTable & mc,
53          const MappingTable & mx,
54
55          // Processor Number
56          size_t nprocs,
57          size_t max_nprocs,
58         
59          // Cache L1 sizes
60          size_t iways,
61          size_t isets,
62          size_t iwords,
63          size_t dways,
64          size_t dsets,
65          size_t dwords,
66
67          // MemCache sizes
68          size_t mcways,
69          size_t mcsets,
70          size_t mcwords,
71
72          int    is_io,
73
74          Loader & loader
75        );
76
77        void print_trace();
78
79        ~TsarClusterV1();
80
81      private:
82        typedef soclib::common::GdbServer<soclib::common::Mips32ElIss> proc_iss;
83
84        ///////////////////////////////////////////////////////////
85        // Components
86
87        VciSimpleRingFast<vci_param,cmd_width,rsp_width> * ringd;
88        VciSimpleRingFast<vci_param,cmd_width,rsp_width> * ringc;
89
90        VciCcXCacheWrapperV1<vci_param, proc_iss> ** procs;
91        VciMemCacheV1<vci_param>                  *  memc;
92        VciXicu<vci_param>                        *  xicu;
93        VciMultiTty<vci_param>                    *  mtty;
94
95        ////////////////////////////////////////////////////////////
96        // Signals
97
98        // Direct VCI Signals
99        VciSignals<vci_param> * signal_vci_ini_d;
100        VciSignals<vci_param> * signal_vci_tgt_d;
101
102        // Coherence VCI Signals
103        VciSignals<vci_param> * signal_vci_ini_c;
104        VciSignals<vci_param> * signal_vci_tgt_c;
105
106        // Interruptions
107        sc_signal<bool> * signal_proc_irq;
108        sc_signal<bool>   signal_mtty_irq;
109
110        sc_signal<bool>   signal_false;
111
112        size_t m_nprocs;
113
114      public:
115
116        ////////////////////////////////////////////////////////////
117        // Ports
118
119        sc_in<bool> p_clk;
120        sc_in<bool> p_resetn;
121
122        soclib::caba::VciInitiator<vci_param>   p_vci_ixr;
123    };
124  }
125}
126
127#endif
128
129// vim: tabstop=2 : shiftwidth=2 : expandtab
Note: See TracBrowser for help on using the repository browser.