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_crossbar/] [1.0/] [vhd/] [crossbar_network_max16ag.vhd] - Blame information for rev 145

Details | Compare with Previous | View Log

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

powered by: WebSVN 2.1.0

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