source: trunk/platforms/almos-tsarv3-platforms/common/vci_vdspin_target_wrapper/caba/source/include/vci_vdspin_target_wrapper.h @ 259

Last change on this file since 259 was 259, checked in by almaless, 12 years ago

Introduce ALMOS used platforms for TSAR.
See the package's README file for more information.

File size: 3.9 KB
Line 
1/* -*- c++ -*-
2  * File : vci_vdspin_target_wrapper.h
3  * Copyright (c) UPMC, Lip6
4  * Author : Alain Greiner
5  *
6  * SOCLIB_LGPL_HEADER_BEGIN
7  *
8  * This file is part of SoCLib, GNU LGPLv2.1.
9  *
10  * SoCLib is free software; you can redistribute it and/or modify it
11  * under the terms of the GNU Lesser General Public License as published
12  * by the Free Software Foundation; version 2.1 of the License.
13  *
14  * SoCLib is distributed in the hope that it will be useful, but
15  * WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17  * Lesser General Public License for more details.
18  *
19  * You should have received a copy of the GNU Lesser General Public
20  * License along with SoCLib; if not, write to the Free Software
21  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
22  * 02110-1301 USA
23  *
24  * SOCLIB_LGPL_HEADER_END
25  */
26
27/////////////////////////////////////////////////////////////////////////
28// This component performs the protocol translation between VCI & DSPIN,
29// and can be used to connect a VCI target to a DSPIN netnork.
30// It is implemented as two fully independant sub-components:
31// - translation from a DSPIN CMD to a VCI CMD
32// - translation from a VCI RSP to a DSPIN RSP
33// Each subcomponent contains a FIFO containing DSPIN flits.
34// For the DSPIN interfaces, the widths of the CMD & RSP flits
35// are defined as template parameters for future evolutions,
36// but the VCI to DSPIN translation makes the following assumptions:
37// - DSPIN CMD flit width == 40 bits
38// - DSPIN RSP flit width == 33 bits
39// - VCI address width    <= 40 bits
40// - VCI data             == 32 bits
41// - VCI plen             == 8  bits
42// - VCI srcid            <= 14 bits
43// - VCI trdid            <= 8  bits
44// - VCI pktid field not transmitted
45// - VCI rerror           == 2 bits
46////////////////////////////////////////////////////////////////////////
47
48#ifndef VCI_VDSPIN_TARGET_WRAPPER_H_
49#define VCI_VDSPIN_TARGET_WRAPPER_H_
50
51#include <systemc>
52#include <assert.h>
53#include "caba_base_module.h"
54#include "vci_initiator.h"
55#include "generic_fifo.h"
56#include "dspin_interface.h"
57
58namespace soclib { namespace caba {
59
60
61template<typename vci_param, int dspin_cmd_width, int dspin_rsp_width>
62class VciVdspinTargetWrapper
63        : public soclib::caba::BaseModule
64{
65
66    // Command FSM
67    enum fsm_state_cmd{
68    CMD_IDLE,
69    CMD_BROADCAST,
70    CMD_RW,
71    CMD_READ,
72    CMD_WDATA,
73    };
74
75    // Response FSM
76    enum fsm_state_rsp{
77    RSP_IDLE,
78    RSP_READ,
79    RSP_WRITE,
80    };
81
82protected:
83    SC_HAS_PROCESS(VciVdspinTargetWrapper);
84
85public:
86    // ports
87    sc_core::sc_in<bool>                                        p_clk;
88    sc_core::sc_in<bool>                                        p_resetn;
89    soclib::caba::DspinOutput<dspin_rsp_width>                  p_dspin_out;
90    soclib::caba::DspinInput<dspin_cmd_width>                   p_dspin_in;
91    soclib::caba::VciInitiator<vci_param>                       p_vci;
92
93    // constructor / destructor
94    VciVdspinTargetWrapper(     sc_module_name                  name, 
95                                size_t                          cmd_fifo_depth,
96                                size_t                          rsp_fifo_depth);
97private:
98    // internal registers
99    sc_core::sc_signal<int>                                     r_cmd_fsm;
100    sc_core::sc_signal<sc_uint<dspin_cmd_width> >               r_cmd_buf0;
101    sc_core::sc_signal<sc_uint<dspin_cmd_width> >               r_cmd_buf1;
102    sc_core::sc_signal<int>                                     r_rsp_fsm;
103    sc_core::sc_signal<size_t>                                  r_flit_count;
104
105    // fifos cmd and rsp
106    soclib::caba::GenericFifo<sc_uint<dspin_cmd_width> >        r_fifo_cmd;
107    soclib::caba::GenericFifo<sc_uint<dspin_rsp_width> >        r_fifo_rsp;
108
109    // methods systemc
110    void transition();
111    void genMoore();
112
113public:
114    void print_trace();
115
116};
117
118}} // end namespace
119               
120#endif // VCI_VDSPIN_TARGET_WRAPPER_H_
121
122// Local Variables:
123// tab-width: 4
124// c-basic-offset: 4
125// c-file-offsets:((innamespace . 0)(inline-open . 0))
126// indent-tabs-mode: nil
127// End:
128
129// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=4:softtabstop=4
Note: See TracBrowser for help on using the repository browser.