summaryrefslogtreecommitdiff
path: root/src/mem/ruby/network/orion/SIM_port.hh
blob: 96d26daad26cc9a9b8961d9f42c9392055008e5e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
/*
 * Copyright (c) 1999-2008 Mark D. Hill and David A. Wood
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are
 * met: redistributions of source code must retain the above copyright
 * notice, this list of conditions and the following disclaimer;
 * redistributions in binary form must reproduce the above copyright
 * notice, this list of conditions and the following disclaimer in the
 * documentation and/or other materials provided with the distribution;
 * neither the name of the copyright holders nor the names of its
 * contributors may be used to endorse or promote products derived from
 * this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

#ifndef _SIM_PORT_H
#define _SIM_PORT_H

#define PARM_POWER_STATS        1

/* RF module parameters */
#define PARM_read_port  1
#define PARM_write_port 1
#define PARM_n_regs     64
#define PARM_reg_width  32

#define PARM_ndwl       1
#define PARM_ndbl       1
#define PARM_nspd       1

//Niket

#define PARM_vc_in_arb_model QUEUE_ARBITER
#define PARM_vc_out_arb_model QUEUE_ARBITER
#define PARM_vc_in_arb_ff_model NEG_DFF
#define PARM_vc_out_arb_ff_model NEG_DFF
#define PARM_sw_in_arb_model QUEUE_ARBITER
#define PARM_sw_out_arb_model QUEUE_ARBITER
#define PARM_sw_in_arb_ff_model NEG_DFF
#define PARM_sw_out_arb_ff_model NEG_DFF
#define PARM_VC_per_MC 4

//Niket

//#define PARM_wordline_model   CACHE_RW_WORDLINE
//#define PARM_bitline_model    RW_BITLINE
//#define PARM_mem_model                NORMAL_MEM
//#define PARM_row_dec_model    SIM_NO_MODEL
//#define PARM_row_dec_pre_model        SIM_NO_MODEL
//#define PARM_col_dec_model    SIM_NO_MODEL
//#define PARM_col_dec_pre_model        SIM_NO_MODEL
//#define PARM_mux_model                SIM_NO_MODEL
//#define PARM_outdrv_model     SIM_NO_MODEL

/* these 3 should be changed together */
//#define PARM_data_end         2
//#define PARM_amp_model                GENERIC_AMP
//#define PARM_bitline_pre_model        EQU_BITLINE
//#define PARM_data_end         1
//#define PARM_amp_model                SIM_NO_MODEL
//#define PARM_bitline_pre_model        SINGLE_OTHER


/* router module parameters */
/* general parameters */
#define PARM_in_port 9
#define PARM_cache_in_port      0       /* # of cache input ports */
#define PARM_mc_in_port         0       /* # of memory controller input ports */
#define PARM_io_in_port         0       /* # of I/O device input ports */
#define PARM_out_port 9
#define PARM_cache_out_port     0       /* # of cache output ports */
#define PARM_mc_out_port        0       /* # of memory controller output ports */
#define PARM_io_out_port        0       /* # of I/O device output ports */
#define PARM_flit_width         128     /* flit width in bits */

/* virtual channel parameters */
#define PARM_v_channel          1       /* # of network port virtual channels */
#define PARM_v_class            0       /* # of total virtual classes */
#define PARM_cache_class        0       /* # of cache port virtual classes */
#define PARM_mc_class           0       /* # of memory controller port virtual classes */
#define PARM_io_class           0       /* # of I/O device port virtual classes */
/* ?? */
#define PARM_in_share_buf       0       /* do input virtual channels physically share buffers? */
#define PARM_out_share_buf      0       /* do output virtual channels physically share buffers? */
/* ?? */
#define PARM_in_share_switch    1       /* do input virtual channels share crossbar input ports? */
#define PARM_out_share_switch   1       /* do output virtual channels share crossbar output ports? */

/* crossbar parameters */
#define PARM_crossbar_model     MATRIX_CROSSBAR /* crossbar model type */
#define PARM_crsbar_degree      4               /* crossbar mux degree */
#define PARM_connect_type       TRISTATE_GATE   /* crossbar connector type */
#define PARM_trans_type         NP_GATE         /* crossbar transmission gate type */
#define PARM_crossbar_in_len    0               /* crossbar input line length, if known */
#define PARM_crossbar_out_len   0               /* crossbar output line length, if known */
#define PARM_xb_in_seg          0
#define PARM_xb_out_seg         0
/* HACK HACK HACK */
#define PARM_exp_xb_model       MATRIX_CROSSBAR
#define PARM_exp_in_seg         2
#define PARM_exp_out_seg        2

/* input buffer parameters */
#define PARM_in_buf             1       /* have input buffer? */
#define PARM_in_buf_set         4
#define PARM_in_buf_rport       1       /* # of read ports */

#define PARM_cache_in_buf       0
#define PARM_cache_in_buf_set   0
#define PARM_cache_in_buf_rport 0

#define PARM_mc_in_buf          0
#define PARM_mc_in_buf_set      0
#define PARM_mc_in_buf_rport    0

#define PARM_io_in_buf          0
#define PARM_io_in_buf_set      0
#define PARM_io_in_buf_rport    0

/* output buffer parameters */
#define PARM_out_buf            0
#define PARM_out_buf_set        4
#define PARM_out_buf_wport      1

/* central buffer parameters */
#define PARM_central_buf        0       /* have central buffer? */
#define PARM_cbuf_set           2560    /* # of rows */
#define PARM_cbuf_rport         2       /* # of read ports */
#define PARM_cbuf_wport         2       /* # of write ports */
#define PARM_cbuf_width         4       /* # of flits in one row */
#define PARM_pipe_depth         4       /* # of banks */

/* array parameters shared by various buffers */
#define PARM_wordline_model     CACHE_RW_WORDLINE
#define PARM_bitline_model      RW_BITLINE
#define PARM_mem_model          NORMAL_MEM
#define PARM_row_dec_model      GENERIC_DEC
#define PARM_row_dec_pre_model  SINGLE_OTHER
#define PARM_col_dec_model      SIM_NO_MODEL
#define PARM_col_dec_pre_model  SIM_NO_MODEL
#define PARM_mux_model          SIM_NO_MODEL
#define PARM_outdrv_model       REG_OUTDRV

/* these 3 should be changed together */
/* use double-ended bitline because the array is too large */
#define PARM_data_end           2
#define PARM_amp_model          GENERIC_AMP
#define PARM_bitline_pre_model  EQU_BITLINE
//#define PARM_data_end         1
//#define PARM_amp_model                SIM_NO_MODEL
//#define PARM_bitline_pre_model        SINGLE_OTHER

/* arbiter parameters */
#define PARM_in_arb_model       MATRIX_ARBITER  /* input side arbiter model type */
#define PARM_in_arb_ff_model    NEG_DFF         /* input side arbiter flip-flop model type */
#define PARM_out_arb_model      MATRIX_ARBITER  /* output side arbiter model type */
#define PARM_out_arb_ff_model   NEG_DFF         /* output side arbiter flip-flop model type */

#endif  /* _SIM_PORT_H */