OpenCores
URL https://opencores.org/ocsvn/funbase_ip_library/funbase_ip_library/trunk

Subversion Repositories funbase_ip_library

[/] [funbase_ip_library/] [trunk/] [TUT/] [ip.hwp.communication/] [fh_mesh_2d/] [1.0/] [vhd/] [mesh_network_max16ag.vhd] - Blame information for rev 145

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 145 lanttu
-------------------------------------------------------------------------------
2
-- Title      : Mesh 2D network, max 16 agents. Number of busses determined by
3
--              n_ag_g will be used, starting from port0. 
4
-- Project    : 
5
-------------------------------------------------------------------------------
6
-- File       : mesh_network_max16ag.vhd
7
-- Author     : Lasse Lehtonen
8
-- Company    : 
9
-- Last update: 2011-12-02
10
-- Platform   : 
11
-------------------------------------------------------------------------------
12
-- Description: 
13
-------------------------------------------------------------------------------
14
-- Revisions  :
15
-- Date        Version  Author  Description
16
-- 
17
-------------------------------------------------------------------------------
18
-------------------------------------------------------------------------------
19
-- Copyright (c) 2011 Tampere University of Technology
20
-------------------------------------------------------------------------------
21
--  This file is part of Transaction Generator.
22
--
23
--  Transaction Generator is free software: you can redistribute it and/or
24
--  modify it under the terms of the Lesser GNU General Public License as
25
--  published by the Free Software Foundation, either version 3 of the License,
26
--  or (at your option) any later version.
27
--
28
--  Transaction Generator is distributed in the hope that it will be useful,
29
--  but WITHOUT ANY WARRANTY; without even the implied warranty of
30
--  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
31
--  Lesser GNU General Public License for more details.
32
--
33
--  You should have received a copy of the Lesser GNU General Public License
34
--  along with Transaction Generator.  If not, see
35
--  <http://www.gnu.org/licenses/>.
36
-------------------------------------------------------------------------------
37
 
38
library ieee;
39
use ieee.std_logic_1164.all;
40
 
41
entity mesh_network_max16ag is
42
  generic (
43
    n_ag_g          : integer;
44
    stfwd_en_g      : integer;
45
    data_width_g    : integer := 32;
46
    addr_width_g    : integer := 32;
47
    packet_length_g : integer;
48
    tx_len_width_g  : integer := 16;
49
    timeout_g       : integer;
50
    fill_packet_g   : integer;
51
    lut_en_g        : integer;
52
    len_flit_en_g   : integer;
53
    oaddr_flit_en_g : integer;
54
    status_en_g     : integer;
55
    net_freq_g      : integer;
56
    ip_freq_g       : integer;
57
    fifo_depth_g    : integer);
58
 
59
  port (
60
    clk_net : in std_logic;
61
    clk_ip  : in std_logic;
62
    rst_n   : in std_logic;
63
 
64
    port0_tx_av_in     : in  std_logic;
65
    port0_tx_data_in   : in  std_logic_vector (data_width_g -1 downto 0);
66
    port0_tx_we_in     : in  std_logic;
67
    port0_tx_txlen_in  : in  std_logic_vector (tx_len_width_g -1 downto 0);
68
    port0_tx_full_out  : out std_logic;
69
    port0_rx_av_out    : out std_logic;
70
    port0_rx_data_out  : out std_logic_vector (data_width_g -1 downto 0);
71
    port0_rx_re_in     : in  std_logic;
72
    port0_rx_empty_out : out std_logic;
73
 
74
    port1_tx_av_in     : in  std_logic;
75
    port1_tx_data_in   : in  std_logic_vector (data_width_g -1 downto 0);
76
    port1_tx_we_in     : in  std_logic;
77
    port1_tx_txlen_in  : in  std_logic_vector (tx_len_width_g -1 downto 0);
78
    port1_tx_full_out  : out std_logic;
79
    port1_rx_av_out    : out std_logic;
80
    port1_rx_data_out  : out std_logic_vector (data_width_g -1 downto 0);
81
    port1_rx_re_in     : in  std_logic;
82
    port1_rx_empty_out : out std_logic;
83
 
84
    port2_tx_av_in     : in  std_logic;
85
    port2_tx_data_in   : in  std_logic_vector (data_width_g -1 downto 0);
86
    port2_tx_we_in     : in  std_logic;
87
    port2_tx_txlen_in  : in  std_logic_vector (tx_len_width_g -1 downto 0);
88
    port2_tx_full_out  : out std_logic;
89
    port2_rx_av_out    : out std_logic;
90
    port2_rx_data_out  : out std_logic_vector (data_width_g -1 downto 0);
91
    port2_rx_re_in     : in  std_logic;
92
    port2_rx_empty_out : out std_logic;
93
 
94
    port3_tx_av_in     : in  std_logic;
95
    port3_tx_data_in   : in  std_logic_vector (data_width_g -1 downto 0);
96
    port3_tx_we_in     : in  std_logic;
97
    port3_tx_txlen_in  : in  std_logic_vector (tx_len_width_g -1 downto 0);
98
    port3_tx_full_out  : out std_logic;
99
    port3_rx_av_out    : out std_logic;
100
    port3_rx_data_out  : out std_logic_vector (data_width_g -1 downto 0);
101
    port3_rx_re_in     : in  std_logic;
102
    port3_rx_empty_out : out std_logic;
103
 
104
    port4_tx_av_in     : in  std_logic;
105
    port4_tx_data_in   : in  std_logic_vector (data_width_g -1 downto 0);
106
    port4_tx_we_in     : in  std_logic;
107
    port4_tx_txlen_in  : in  std_logic_vector (tx_len_width_g -1 downto 0);
108
    port4_tx_full_out  : out std_logic;
109
    port4_rx_av_out    : out std_logic;
110
    port4_rx_data_out  : out std_logic_vector (data_width_g -1 downto 0);
111
    port4_rx_re_in     : in  std_logic;
112
    port4_rx_empty_out : out std_logic;
113
 
114
    port5_tx_av_in     : in  std_logic;
115
    port5_tx_data_in   : in  std_logic_vector (data_width_g -1 downto 0);
116
    port5_tx_we_in     : in  std_logic;
117
    port5_tx_txlen_in  : in  std_logic_vector (tx_len_width_g -1 downto 0);
118
    port5_tx_full_out  : out std_logic;
119
    port5_rx_av_out    : out std_logic;
120
    port5_rx_data_out  : out std_logic_vector (data_width_g -1 downto 0);
121
    port5_rx_re_in     : in  std_logic;
122
    port5_rx_empty_out : out std_logic;
123
 
124
    port6_tx_av_in     : in  std_logic;
125
    port6_tx_data_in   : in  std_logic_vector (data_width_g -1 downto 0);
126
    port6_tx_we_in     : in  std_logic;
127
    port6_tx_txlen_in  : in  std_logic_vector (tx_len_width_g -1 downto 0);
128
    port6_tx_full_out  : out std_logic;
129
    port6_rx_av_out    : out std_logic;
130
    port6_rx_data_out  : out std_logic_vector (data_width_g -1 downto 0);
131
    port6_rx_re_in     : in  std_logic;
132
    port6_rx_empty_out : out std_logic;
133
 
134
    port7_tx_av_in     : in  std_logic;
135
    port7_tx_data_in   : in  std_logic_vector (data_width_g -1 downto 0);
136
    port7_tx_we_in     : in  std_logic;
137
    port7_tx_txlen_in  : in  std_logic_vector (tx_len_width_g -1 downto 0);
138
    port7_tx_full_out  : out std_logic;
139
    port7_rx_av_out    : out std_logic;
140
    port7_rx_data_out  : out std_logic_vector (data_width_g -1 downto 0);
141
    port7_rx_re_in     : in  std_logic;
142
    port7_rx_empty_out : out std_logic;
143
 
144
    port8_tx_av_in     : in  std_logic;
145
    port8_tx_data_in   : in  std_logic_vector (data_width_g -1 downto 0);
146
    port8_tx_we_in     : in  std_logic;
147
    port8_tx_txlen_in  : in  std_logic_vector (tx_len_width_g -1 downto 0);
148
    port8_tx_full_out  : out std_logic;
149
    port8_rx_av_out    : out std_logic;
150
    port8_rx_data_out  : out std_logic_vector (data_width_g -1 downto 0);
151
    port8_rx_re_in     : in  std_logic;
152
    port8_rx_empty_out : out std_logic;
153
 
154
    port9_tx_av_in     : in  std_logic;
155
    port9_tx_data_in   : in  std_logic_vector (data_width_g -1 downto 0);
156
    port9_tx_we_in     : in  std_logic;
157
    port9_tx_txlen_in  : in  std_logic_vector (tx_len_width_g -1 downto 0);
158
    port9_tx_full_out  : out std_logic;
159
    port9_rx_av_out    : out std_logic;
160
    port9_rx_data_out  : out std_logic_vector (data_width_g -1 downto 0);
161
    port9_rx_re_in     : in  std_logic;
162
    port9_rx_empty_out : out std_logic;
163
 
164
    port10_tx_av_in     : in  std_logic;
165
    port10_tx_data_in   : in  std_logic_vector (data_width_g -1 downto 0);
166
    port10_tx_we_in     : in  std_logic;
167
    port10_tx_txlen_in  : in  std_logic_vector (tx_len_width_g -1 downto 0);
168
    port10_tx_full_out  : out std_logic;
169
    port10_rx_av_out    : out std_logic;
170
    port10_rx_data_out  : out std_logic_vector (data_width_g -1 downto 0);
171
    port10_rx_re_in     : in  std_logic;
172
    port10_rx_empty_out : out std_logic;
173
 
174
    port11_tx_av_in     : in  std_logic;
175
    port11_tx_data_in   : in  std_logic_vector (data_width_g -1 downto 0);
176
    port11_tx_we_in     : in  std_logic;
177
    port11_tx_txlen_in  : in  std_logic_vector (tx_len_width_g -1 downto 0);
178
    port11_tx_full_out  : out std_logic;
179
    port11_rx_av_out    : out std_logic;
180
    port11_rx_data_out  : out std_logic_vector (data_width_g -1 downto 0);
181
    port11_rx_re_in     : in  std_logic;
182
    port11_rx_empty_out : out std_logic;
183
 
184
    port12_tx_av_in     : in  std_logic;
185
    port12_tx_data_in   : in  std_logic_vector (data_width_g -1 downto 0);
186
    port12_tx_we_in     : in  std_logic;
187
    port12_tx_txlen_in  : in  std_logic_vector (tx_len_width_g -1 downto 0);
188
    port12_tx_full_out  : out std_logic;
189
    port12_rx_av_out    : out std_logic;
190
    port12_rx_data_out  : out std_logic_vector (data_width_g -1 downto 0);
191
    port12_rx_re_in     : in  std_logic;
192
    port12_rx_empty_out : out std_logic;
193
 
194
    port13_tx_av_in     : in  std_logic;
195
    port13_tx_data_in   : in  std_logic_vector (data_width_g -1 downto 0);
196
    port13_tx_we_in     : in  std_logic;
197
    port13_tx_txlen_in  : in  std_logic_vector (tx_len_width_g -1 downto 0);
198
    port13_tx_full_out  : out std_logic;
199
    port13_rx_av_out    : out std_logic;
200
    port13_rx_data_out  : out std_logic_vector (data_width_g -1 downto 0);
201
    port13_rx_re_in     : in  std_logic;
202
    port13_rx_empty_out : out std_logic;
203
 
204
    port14_tx_av_in     : in  std_logic;
205
    port14_tx_data_in   : in  std_logic_vector (data_width_g -1 downto 0);
206
    port14_tx_we_in     : in  std_logic;
207
    port14_tx_txlen_in  : in  std_logic_vector (tx_len_width_g -1 downto 0);
208
    port14_tx_full_out  : out std_logic;
209
    port14_rx_av_out    : out std_logic;
210
    port14_rx_data_out  : out std_logic_vector (data_width_g -1 downto 0);
211
    port14_rx_re_in     : in  std_logic;
212
    port14_rx_empty_out : out std_logic;
213
 
214
    port15_tx_av_in     : in  std_logic;
215
    port15_tx_data_in   : in  std_logic_vector (data_width_g -1 downto 0);
216
    port15_tx_we_in     : in  std_logic;
217
    port15_tx_txlen_in  : in  std_logic_vector (tx_len_width_g -1 downto 0);
218
    port15_tx_full_out  : out std_logic;
219
    port15_rx_av_out    : out std_logic;
220
    port15_rx_data_out  : out std_logic_vector (data_width_g -1 downto 0);
221
    port15_rx_re_in     : in  std_logic;
222
    port15_rx_empty_out : out std_logic
223
    );
224
end mesh_network_max16ag;
225
 
226
architecture structural of mesh_network_max16ag is
227
 
228
 
229
  signal tx_av_in_comp     : std_logic_vector (n_ag_g-1 downto 0);
230
  signal tx_data_in_comp   : std_logic_vector (n_ag_g * data_width_g -1 downto 0);
231
  signal tx_we_in_comp     : std_logic_vector (n_ag_g-1 downto 0);
232
  signal tx_txlen_in_comp  : std_logic_vector (n_ag_g * tx_len_width_g -1 downto 0);
233
  signal tx_full_out_comp  : std_logic_vector (n_ag_g-1 downto 0);
234
  signal rx_av_out_comp    : std_logic_vector (n_ag_g-1 downto 0);
235
  signal rx_data_out_comp  : std_logic_vector (n_ag_g * data_width_g -1 downto 0);
236
  signal rx_re_in_comp     : std_logic_vector (n_ag_g-1 downto 0);
237
  signal rx_empty_out_comp : std_logic_vector (n_ag_g-1 downto 0);
238
 
239
begin  -- structural
240
 
241
  assert n_ag_g mod 2 = 0 report "Only even-sized rings currently supported." severity failure;
242
  assert n_ag_g < 17 report "This ring network supports up to 16 agents." severity failure;
243
 
244
  ag0 : if n_ag_g > 0 generate
245
    tx_av_in_comp(0)                            <= port0_tx_av_in;
246
    tx_data_in_comp(data_width_g-1 downto 0)    <= port0_tx_data_in;
247
    tx_we_in_comp(0)                            <= port0_tx_we_in;
248
    tx_txlen_in_comp(tx_len_width_g-1 downto 0) <= port0_tx_txlen_in;
249
    rx_re_in_comp(0)                            <= port0_rx_re_in;
250
 
251
    port0_tx_full_out  <= tx_full_out_comp(0);
252
    port0_rx_av_out    <= rx_av_out_comp(0);
253
    port0_rx_data_out  <= rx_data_out_comp(data_width_g-1 downto 0);
254
    port0_rx_empty_out <= rx_empty_out_comp(0);
255
  end generate ag0;
256
 
257
  ag1 : if n_ag_g > 1 generate
258
    tx_av_in_comp(1)                                           <= port1_tx_av_in;
259
    tx_data_in_comp(2*data_width_g-1 downto data_width_g)      <= port1_tx_data_in;
260
    tx_we_in_comp(1)                                           <= port1_tx_we_in;
261
    tx_txlen_in_comp(2*tx_len_width_g-1 downto tx_len_width_g) <= port1_tx_txlen_in;
262
    rx_re_in_comp(1)                                           <= port1_rx_re_in;
263
 
264
    port1_tx_full_out  <= tx_full_out_comp(1);
265
    port1_rx_av_out    <= rx_av_out_comp(1);
266
    port1_rx_data_out  <= rx_data_out_comp(2*data_width_g-1 downto data_width_g);
267
    port1_rx_empty_out <= rx_empty_out_comp(1);
268
  end generate ag1;
269
 
270
  ag2 : if n_ag_g > 2 generate
271
    tx_av_in_comp(2)                                             <= port2_tx_av_in;
272
    tx_data_in_comp(3*data_width_g-1 downto 2*data_width_g)      <= port2_tx_data_in;
273
    tx_we_in_comp(2)                                             <= port2_tx_we_in;
274
    tx_txlen_in_comp(3*tx_len_width_g-1 downto 2*tx_len_width_g) <= port2_tx_txlen_in;
275
    rx_re_in_comp(2)                                             <= port2_rx_re_in;
276
 
277
    port2_tx_full_out  <= tx_full_out_comp(2);
278
    port2_rx_av_out    <= rx_av_out_comp(2);
279
    port2_rx_data_out  <= rx_data_out_comp(3*data_width_g-1 downto 2*data_width_g);
280
    port2_rx_empty_out <= rx_empty_out_comp(2);
281
  end generate ag2;
282
 
283
  ag3 : if n_ag_g > 3 generate
284
    tx_av_in_comp(3)                                             <= port3_tx_av_in;
285
    tx_data_in_comp(4*data_width_g-1 downto 3*data_width_g)      <= port3_tx_data_in;
286
    tx_we_in_comp(3)                                             <= port3_tx_we_in;
287
    tx_txlen_in_comp(4*tx_len_width_g-1 downto 3*tx_len_width_g) <= port3_tx_txlen_in;
288
    rx_re_in_comp(3)                                             <= port3_rx_re_in;
289
 
290
    port3_tx_full_out  <= tx_full_out_comp(3);
291
    port3_rx_av_out    <= rx_av_out_comp(3);
292
    port3_rx_data_out  <= rx_data_out_comp(4*data_width_g-1 downto 3*data_width_g);
293
    port3_rx_empty_out <= rx_empty_out_comp(3);
294
  end generate ag3;
295
 
296
 
297
 
298
  ag4 : if n_ag_g > 4 generate
299
    tx_av_in_comp(4)                                             <= port4_tx_av_in;
300
    tx_data_in_comp(5*data_width_g-1 downto 4*data_width_g)      <= port4_tx_data_in;
301
    tx_we_in_comp(4)                                             <= port4_tx_we_in;
302
    tx_txlen_in_comp(5*tx_len_width_g-1 downto 4*tx_len_width_g) <= port4_tx_txlen_in;
303
    rx_re_in_comp(4)                                             <= port4_rx_re_in;
304
 
305
    port4_tx_full_out  <= tx_full_out_comp(4);
306
    port4_rx_av_out    <= rx_av_out_comp(4);
307
    port4_rx_data_out  <= rx_data_out_comp(5*data_width_g-1 downto 4*data_width_g);
308
    port4_rx_empty_out <= rx_empty_out_comp(4);
309
  end generate ag4;
310
 
311
  ag5 : if n_ag_g > 5 generate
312
    tx_av_in_comp(5)                                             <= port5_tx_av_in;
313
    tx_data_in_comp(6*data_width_g-1 downto 5*data_width_g)      <= port5_tx_data_in;
314
    tx_we_in_comp(5)                                             <= port5_tx_we_in;
315
    tx_txlen_in_comp(6*tx_len_width_g-1 downto 5*tx_len_width_g) <= port5_tx_txlen_in;
316
    rx_re_in_comp(5)                                             <= port5_rx_re_in;
317
 
318
    port5_tx_full_out  <= tx_full_out_comp(5);
319
    port5_rx_av_out    <= rx_av_out_comp(5);
320
    port5_rx_data_out  <= rx_data_out_comp(6*data_width_g-1 downto 5*data_width_g);
321
    port5_rx_empty_out <= rx_empty_out_comp(5);
322
  end generate ag5;
323
 
324
  ag6 : if n_ag_g > 6 generate
325
    tx_av_in_comp(6)                                             <= port6_tx_av_in;
326
    tx_data_in_comp(7*data_width_g-1 downto 6*data_width_g)      <= port6_tx_data_in;
327
    tx_we_in_comp(6)                                             <= port6_tx_we_in;
328
    tx_txlen_in_comp(7*tx_len_width_g-1 downto 6*tx_len_width_g) <= port6_tx_txlen_in;
329
    rx_re_in_comp(6)                                             <= port6_rx_re_in;
330
 
331
    port6_tx_full_out  <= tx_full_out_comp(6);
332
    port6_rx_av_out    <= rx_av_out_comp(6);
333
    port6_rx_data_out  <= rx_data_out_comp(7*data_width_g-1 downto 6*data_width_g);
334
    port6_rx_empty_out <= rx_empty_out_comp(6);
335
  end generate ag6;
336
 
337
  ag7 : if n_ag_g > 7 generate
338
    tx_av_in_comp(7)                                             <= port7_tx_av_in;
339
    tx_data_in_comp(8*data_width_g-1 downto 7*data_width_g)      <= port7_tx_data_in;
340
    tx_we_in_comp(7)                                             <= port7_tx_we_in;
341
    tx_txlen_in_comp(8*tx_len_width_g-1 downto 7*tx_len_width_g) <= port7_tx_txlen_in;
342
    rx_re_in_comp(7)                                             <= port7_rx_re_in;
343
 
344
    port7_tx_full_out  <= tx_full_out_comp(7);
345
    port7_rx_av_out    <= rx_av_out_comp(7);
346
    port7_rx_data_out  <= rx_data_out_comp(8*data_width_g-1 downto 7*data_width_g);
347
    port7_rx_empty_out <= rx_empty_out_comp(7);
348
  end generate ag7;
349
 
350
  ag8 : if n_ag_g > 8 generate
351
    tx_av_in_comp(8)                                             <= port8_tx_av_in;
352
    tx_data_in_comp(9*data_width_g-1 downto 8*data_width_g)      <= port8_tx_data_in;
353
    tx_we_in_comp(8)                                             <= port8_tx_we_in;
354
    tx_txlen_in_comp(9*tx_len_width_g-1 downto 8*tx_len_width_g) <= port8_tx_txlen_in;
355
    rx_re_in_comp(8)                                             <= port8_rx_re_in;
356
 
357
    port8_tx_full_out  <= tx_full_out_comp(8);
358
    port8_rx_av_out    <= rx_av_out_comp(8);
359
    port8_rx_data_out  <= rx_data_out_comp(9*data_width_g-1 downto 8*data_width_g);
360
    port8_rx_empty_out <= rx_empty_out_comp(8);
361
  end generate ag8;
362
 
363
  ag9 : if n_ag_g > 9 generate
364
    tx_av_in_comp(9)                                              <= port9_tx_av_in;
365
    tx_data_in_comp(10*data_width_g-1 downto 9*data_width_g)      <= port9_tx_data_in;
366
    tx_we_in_comp(9)                                              <= port9_tx_we_in;
367
    tx_txlen_in_comp(10*tx_len_width_g-1 downto 9*tx_len_width_g) <= port9_tx_txlen_in;
368
    rx_re_in_comp(9)                                              <= port9_rx_re_in;
369
 
370
    port9_tx_full_out  <= tx_full_out_comp(9);
371
    port9_rx_av_out    <= rx_av_out_comp(9);
372
    port9_rx_data_out  <= rx_data_out_comp(10*data_width_g-1 downto 9*data_width_g);
373
    port9_rx_empty_out <= rx_empty_out_comp(9);
374
  end generate ag9;
375
 
376
  ag10 : if n_ag_g > 10 generate
377
    tx_av_in_comp(10)                                              <= port10_tx_av_in;
378
    tx_data_in_comp(11*data_width_g-1 downto 10*data_width_g)      <= port10_tx_data_in;
379
    tx_we_in_comp(10)                                              <= port10_tx_we_in;
380
    tx_txlen_in_comp(11*tx_len_width_g-1 downto 10*tx_len_width_g) <= port10_tx_txlen_in;
381
    rx_re_in_comp(10)                                              <= port10_rx_re_in;
382
 
383
    port10_tx_full_out  <= tx_full_out_comp(10);
384
    port10_rx_av_out    <= rx_av_out_comp(10);
385
    port10_rx_data_out  <= rx_data_out_comp(11*data_width_g-1 downto 10*data_width_g);
386
    port10_rx_empty_out <= rx_empty_out_comp(10);
387
  end generate ag10;
388
 
389
  ag11 : if n_ag_g > 11 generate
390
    tx_av_in_comp(11)                                              <= port11_tx_av_in;
391
    tx_data_in_comp(12*data_width_g-1 downto 11*data_width_g)      <= port11_tx_data_in;
392
    tx_we_in_comp(11)                                              <= port11_tx_we_in;
393
    tx_txlen_in_comp(12*tx_len_width_g-1 downto 11*tx_len_width_g) <= port11_tx_txlen_in;
394
    rx_re_in_comp(11)                                              <= port11_rx_re_in;
395
 
396
    port11_tx_full_out  <= tx_full_out_comp(11);
397
    port11_rx_av_out    <= rx_av_out_comp(11);
398
    port11_rx_data_out  <= rx_data_out_comp(12*data_width_g-1 downto 11*data_width_g);
399
    port11_rx_empty_out <= rx_empty_out_comp(11);
400
  end generate ag11;
401
 
402
  ag12 : if n_ag_g > 12 generate
403
    tx_av_in_comp(12)                                              <= port12_tx_av_in;
404
    tx_data_in_comp(13*data_width_g-1 downto 12*data_width_g)      <= port12_tx_data_in;
405
    tx_we_in_comp(12)                                              <= port12_tx_we_in;
406
    tx_txlen_in_comp(13*tx_len_width_g-1 downto 12*tx_len_width_g) <= port12_tx_txlen_in;
407
    rx_re_in_comp(12)                                              <= port12_rx_re_in;
408
 
409
    port12_tx_full_out  <= tx_full_out_comp(12);
410
    port12_rx_av_out    <= rx_av_out_comp(12);
411
    port12_rx_data_out  <= rx_data_out_comp(13*data_width_g-1 downto 12*data_width_g);
412
    port12_rx_empty_out <= rx_empty_out_comp(12);
413
  end generate ag12;
414
 
415
  ag13 : if n_ag_g > 13 generate
416
    tx_av_in_comp(13)                                              <= port13_tx_av_in;
417
    tx_data_in_comp(14*data_width_g-1 downto 13*data_width_g)      <= port13_tx_data_in;
418
    tx_we_in_comp(13)                                              <= port13_tx_we_in;
419
    tx_txlen_in_comp(14*tx_len_width_g-1 downto 13*tx_len_width_g) <= port13_tx_txlen_in;
420
    rx_re_in_comp(13)                                              <= port13_rx_re_in;
421
 
422
    port13_tx_full_out  <= tx_full_out_comp(13);
423
    port13_rx_av_out    <= rx_av_out_comp(13);
424
    port13_rx_data_out  <= rx_data_out_comp(14*data_width_g-1 downto 13*data_width_g);
425
    port13_rx_empty_out <= rx_empty_out_comp(13);
426
  end generate ag13;
427
 
428
  ag14 : if n_ag_g > 14 generate
429
    tx_av_in_comp(14)                                              <= port14_tx_av_in;
430
    tx_data_in_comp(15*data_width_g-1 downto 14*data_width_g)      <= port14_tx_data_in;
431
    tx_we_in_comp(14)                                              <= port14_tx_we_in;
432
    tx_txlen_in_comp(15*tx_len_width_g-1 downto 14*tx_len_width_g) <= port14_tx_txlen_in;
433
    rx_re_in_comp(14)                                              <= port14_rx_re_in;
434
 
435
    port14_tx_full_out  <= tx_full_out_comp(14);
436
    port14_rx_av_out    <= rx_av_out_comp(14);
437
    port14_rx_data_out  <= rx_data_out_comp(15*data_width_g-1 downto 14*data_width_g);
438
    port14_rx_empty_out <= rx_empty_out_comp(14);
439
  end generate ag14;
440
 
441
  ag15 : if n_ag_g > 15 generate
442
    tx_av_in_comp(15)                                              <= port15_tx_av_in;
443
    tx_data_in_comp(16*data_width_g-1 downto 15*data_width_g)      <= port15_tx_data_in;
444
    tx_we_in_comp(15)                                              <= port15_tx_we_in;
445
    tx_txlen_in_comp(16*tx_len_width_g-1 downto 15*tx_len_width_g) <= port15_tx_txlen_in;
446
    rx_re_in_comp(15)                                              <= port15_rx_re_in;
447
 
448
    port15_tx_full_out  <= tx_full_out_comp(15);
449
    port15_rx_av_out    <= rx_av_out_comp(15);
450
    port15_rx_data_out  <= rx_data_out_comp(16*data_width_g-1 downto 15*data_width_g);
451
    port15_rx_empty_out <= rx_empty_out_comp(15);
452
  end generate ag15;
453
 
454
 
455
  the_network : entity work.mesh_2d_with_pkt_codec_top
456
    generic map (
457
      n_ag_g          => n_ag_g,
458
      stfwd_en_g      => stfwd_en_g,
459
      data_width_g    => data_width_g,
460
      addr_width_g    => addr_width_g,
461
      packet_length_g => packet_length_g,
462
      tx_len_width_g  => tx_len_width_g,
463
      timeout_g       => timeout_g,
464
      fill_packet_g   => fill_packet_g,
465
      lut_en_g        => lut_en_g,
466
      len_flit_en_g   => len_flit_en_g,
467
      oaddr_flit_en_g => oaddr_flit_en_g,
468
      status_en_g     => status_en_g,
469
      mesh_freq_g     => net_freq_g,
470
      ip_freq_g       => ip_freq_g,
471
      net_type_g      => 0,
472
      fifo_depth_g    => fifo_depth_g,
473
      rows_g          => 4,
474
      cols_g          => 4)
475
    port map (
476
      clk_net      => clk_net,
477
      clk_ip       => clk_ip,
478
      rst_n        => rst_n,
479
      av_in        => tx_av_in_comp,
480
      data_in      => tx_data_in_comp,
481
      we_in        => tx_we_in_comp,
482
      txlen_in     => tx_txlen_in_comp,
483
      full_out     => tx_full_out_comp,
484
      tx_empty_out => open,
485
      av_out       => rx_av_out_comp,
486
      data_out     => rx_data_out_comp,
487
      re_in        => rx_re_in_comp,
488
      rx_empty_out => rx_empty_out_comp);
489
 
490
end structural;

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.