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

Details | Compare with Previous | View Log

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

powered by: WebSVN 2.1.0

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