source: branches/v5/platforms/tsarv5_dspin_array/simple_cluster/caba/source/include/simple_cluster.h @ 350

Last change on this file since 350 was 350, checked in by alain, 11 years ago

Introducing Platform tsarv5_dspin_array,
that can be used for TSAR communication
infrastructure characterization.

File size: 4.7 KB
Line 
1//////////////////////////////////////////////////////////////////////////////
2// File: simple_cluster.h
3// Author: Alain Greiner
4// Copyright: UPMC/LIP6
5// Date : march 2013
6// This program is released under the GNU public license
7//////////////////////////////////////////////////////////////////////////////
8
9#ifndef TSARV5_SIMPLE_CLUSTER_H
10#define TSARV5_SIMPLE_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 "dspin_packet_generator.h"
20#include "dspin_local_crossbar.h"
21#include "vci_dspin_initiator_wrapper.h"
22#include "vci_dspin_target_wrapper.h"
23#include "virtual_dspin_router.h"
24#include "vci_synthetic_target.h"
25#include "vci_synthetic_initiator.h"
26
27namespace soclib { namespace caba       {
28
29///////////////////////////////////////////////////////////////////////////
30template<typename vci_param, int cmd_width, int rsp_width>
31class SimpleCluster
32///////////////////////////////////////////////////////////////////////////
33    : public soclib::caba::BaseModule
34{
35
36  public:
37
38        // Ports
39    sc_in<bool>                                         p_clk;
40    sc_in<bool>                                         p_resetn;
41        soclib::caba::DspinOutput<cmd_width>                    **p_cmd_out;
42        soclib::caba::DspinInput<cmd_width>                     **p_cmd_in;
43    soclib::caba::DspinOutput<rsp_width>                **p_rsp_out;
44    soclib::caba::DspinInput<rsp_width>                 **p_rsp_in;
45
46        // DSPIN signals between DSPIN routers and local_crossbars
47        DspinSignals<cmd_width>                             signal_dspin_cmd_l2g_d; 
48        DspinSignals<cmd_width>                             signal_dspin_cmd_g2l_d; 
49        DspinSignals<cmd_width>                             signal_dspin_cmd_l2g_c;
50        DspinSignals<cmd_width>                             signal_dspin_cmd_g2l_c; 
51        DspinSignals<rsp_width>                             signal_dspin_rsp_l2g_d; 
52        DspinSignals<rsp_width>                             signal_dspin_rsp_g2l_d; 
53        DspinSignals<rsp_width>                             signal_dspin_rsp_l2g_c;
54        DspinSignals<rsp_width>                             signal_dspin_rsp_g2l_c;
55
56        // signals between VCI components and VCI/DSPIN wrappers
57        VciSignals<vci_param>                               signal_vci_ini; 
58        VciSignals<vci_param>                               signal_vci_tgt; 
59
60        // DSPIN signals between DSPIN component and local crossbars
61        DspinSignals<cmd_width>                         signal_dspin_ini_cmd_d;
62        DspinSignals<cmd_width>                         signal_dspin_tgt_cmd_d;
63        DspinSignals<rsp_width>                         signal_dspin_ini_rsp_d;
64        DspinSignals<rsp_width>                         signal_dspin_tgt_rsp_d;
65
66        DspinSignals<cmd_width>                         signal_dspin_ini_cmd_c;
67        DspinSignals<cmd_width>                         signal_dspin_tgt_cmd_c;
68        DspinSignals<rsp_width>                         signal_dspin_ini_rsp_c;
69        DspinSignals<rsp_width>                         signal_dspin_tgt_rsp_c;
70
71    // pointers on hardware components
72
73    VciSyntheticInitiator<vci_param>*                           ini_d;
74    VciSyntheticTarget<vci_param>*                              tgt_d;
75    VciDspinInitiatorWrapper<vci_param,cmd_width,rsp_width>*    w_ini_d;
76    VciDspinTargetWrapper<vci_param,cmd_width,rsp_width>*       w_tgt_d;
77    DspinPacketGenerator<cmd_width,rsp_width>*                  ini_c;
78    DspinPacketGenerator<rsp_width,cmd_width>*                  tgt_c;
79
80    DspinLocalCrossbar<cmd_width>*                              xbar_cmd_d;
81    DspinLocalCrossbar<rsp_width>*                              xbar_rsp_d;
82    DspinLocalCrossbar<cmd_width>*                              xbar_cmd_c;
83    DspinLocalCrossbar<rsp_width>*                              xbar_rsp_c;
84
85    VirtualDspinRouter<cmd_width>*                                      router_cmd;
86    VirtualDspinRouter<rsp_width>*                              router_rsp;
87
88    // constructor
89
90        SimpleCluster(sc_module_name  name,
91                  size_t          x,           // x coordinate
92                  size_t          y,           // y coordinate
93                  size_t          x_width,     // x field number of bits
94                  size_t          y_width,     // y field number of bits
95                  size_t          load_d,      // load (* 1000) on direct network
96                  size_t          plen_d,      // packet length on direct network
97                  size_t          load_ini_c,  // load (* 1000) on cc network 40
98                  size_t          plen_ini_c,  // packet length on cc network 40
99                  size_t          load_tgt_c,  // load (* 1000) on cc network 33
100                  size_t          plen_tgt_c,  // packet length on cc network 33
101                  size_t          bcp_ini,     // broadcast period on cc network 40
102                  size_t          bcp_tgt );   // broadcast period on cc network 33
103
104};
105
106}}      // end namespaces
107
108#endif
Note: See TracBrowser for help on using the repository browser.