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

Subversion Repositories srdydrdy_lib

[/] [srdydrdy_lib/] [trunk/] [examples/] [bridge/] [rtl/] [bridge_ex1.v] - Blame information for rev 12

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 8 ghutchis
// Top level for bridge example
2
//
3
// 4-port bridge has 4 GMII interfaces, each one of which has its own RX clock
4
// Port macros contain all packet buffering, and ring interface to communicate
5
// with other port macros.
6
// FIB block receives requests from all ports and sends results back to the
7
// same port containing forwarding information.
8
 
9
module bridge_ex1
10
  (input  clk,
11
   input  reset,
12
   /*AUTOINPUT*/
13
   // Beginning of automatic inputs (from unused autoinst inputs)
14 11 ghutchis
   input                gmii_rx_clk_0,          // To p0 of port_macro.v
15
   input                gmii_rx_clk_1,          // To p1 of port_macro.v
16
   input                gmii_rx_clk_2,          // To p2 of port_macro.v
17
   input                gmii_rx_clk_3,          // To p3 of port_macro.v
18
   input                gmii_rx_dv_0,           // To p0 of port_macro.v
19
   input                gmii_rx_dv_1,           // To p1 of port_macro.v
20
   input                gmii_rx_dv_2,           // To p2 of port_macro.v
21
   input                gmii_rx_dv_3,           // To p3 of port_macro.v
22
   input [7:0]          gmii_rxd_0,             // To p0 of port_macro.v
23
   input [7:0]          gmii_rxd_1,             // To p1 of port_macro.v
24
   input [7:0]          gmii_rxd_2,             // To p2 of port_macro.v
25
   input [7:0]          gmii_rxd_3,             // To p3 of port_macro.v
26 8 ghutchis
   // End of automatics
27
   /*AUTOOUTPUT*/
28
   // Beginning of automatic outputs (from unused autoinst outputs)
29 11 ghutchis
   output               gmii_tx_en_0,           // From p0 of port_macro.v
30
   output               gmii_tx_en_1,           // From p1 of port_macro.v
31
   output               gmii_tx_en_2,           // From p2 of port_macro.v
32
   output               gmii_tx_en_3,           // From p3 of port_macro.v
33
   output [7:0]         gmii_txd_0,             // From p0 of port_macro.v
34
   output [7:0]         gmii_txd_1,             // From p1 of port_macro.v
35
   output [7:0]         gmii_txd_2,             // From p2 of port_macro.v
36
   output [7:0]         gmii_txd_3             // From p3 of port_macro.v
37 8 ghutchis
   // End of automatics
38
   );
39
 
40
  wire [`PRW_SZ-1:0]     ri_data_0;
41
  wire [`PRW_SZ-1:0]     ri_data_1;
42
  wire [`PRW_SZ-1:0]     ri_data_2;
43
  wire [`PRW_SZ-1:0]     ri_data_3;
44
  /*AUTOWIRE*/
45
  // Beginning of automatic wires (for undeclared instantiated-module outputs)
46 11 ghutchis
  wire [`NUM_PORTS-1:0] flo_data;               // From fib_lookup of fib_lookup.v
47
  wire [3:0]            flo_drdy;               // From p0 of port_macro.v, ...
48
  wire [`NUM_PORTS-1:0] flo_srdy;               // From fib_lookup of fib_lookup.v
49
  wire [`PAR_DATA_SZ-1:0] p2f_data_0;           // From p0 of port_macro.v
50
  wire [`PAR_DATA_SZ-1:0] p2f_data_1;           // From p1 of port_macro.v
51
  wire [`PAR_DATA_SZ-1:0] p2f_data_2;           // From p2 of port_macro.v
52
  wire [`PAR_DATA_SZ-1:0] p2f_data_3;           // From p3 of port_macro.v
53
  wire [`NUM_PORTS-1:0] p2f_drdy;               // From fib_arb of sd_rrslow.v
54
  wire [3:0]            p2f_srdy;               // From p0 of port_macro.v, ...
55
  wire [`PAR_DATA_SZ-1:0] ppi_data;             // From fib_arb of sd_rrslow.v
56
  wire                  ppi_drdy;               // From fib_lookup of fib_lookup.v
57
  wire                  ppi_srdy;               // From fib_arb of sd_rrslow.v
58 12 ghutchis
  wire [`NUM_PORTS-1:0] rarb_ack;               // From ring_arb of ring_arb.v
59
  wire [3:0]            rarb_req;               // From p0 of port_macro.v, ...
60 11 ghutchis
  wire                  ri_drdy_0;              // From p0 of port_macro.v
61
  wire                  ri_drdy_1;              // From p1 of port_macro.v
62
  wire                  ri_drdy_2;              // From p2 of port_macro.v
63
  wire                  ri_drdy_3;              // From p3 of port_macro.v
64
  wire                  ri_srdy_0;              // From p3 of port_macro.v
65
  wire                  ri_srdy_1;              // From p0 of port_macro.v
66
  wire                  ri_srdy_2;              // From p1 of port_macro.v
67
  wire                  ri_srdy_3;              // From p2 of port_macro.v
68 8 ghutchis
  // End of automatics
69
 
70
  /* port_macro AUTO_TEMPLATE
71
   (
72
   .clk                         (clk),
73
   .reset                       (reset),
74
   .ri_data                     (ri_data_@),
75 12 ghutchis
   .rarb_\(.*\)                 (rarb_\1[@]),
76 8 ghutchis
   .ro_\(.*\)        (ri_\1_@"(% (+ 1 @) 4)"),
77
   .p2f_srdy                            (p2f_srdy[@]),
78
   .p2f_drdy                            (p2f_drdy[@]),
79
   .fli_srdy                            (flo_srdy[@]),
80
   .fli_drdy                            (flo_drdy[@]),
81
   .fli_data                            (flo_data),
82
   .\(.*\)     (\1_@[]),
83
   );
84
   */
85 11 ghutchis
  port_macro #(0) p0
86 8 ghutchis
    (/*AUTOINST*/
87
     // Outputs
88 11 ghutchis
     .ro_data                           (ri_data_1),             // Templated
89 12 ghutchis
     .rarb_req                          (rarb_req[0]),           // Templated
90 11 ghutchis
     .fli_drdy                          (flo_drdy[0]),           // Templated
91
     .gmii_tx_en                        (gmii_tx_en_0),          // Templated
92
     .gmii_txd                          (gmii_txd_0[7:0]),       // Templated
93
     .p2f_data                          (p2f_data_0[`PAR_DATA_SZ-1:0]), // Templated
94
     .p2f_srdy                          (p2f_srdy[0]),           // Templated
95
     .ri_drdy                           (ri_drdy_0),             // Templated
96
     .ro_srdy                           (ri_srdy_1),             // Templated
97 8 ghutchis
     // Inputs
98 11 ghutchis
     .clk                               (clk),                   // Templated
99
     .reset                             (reset),                 // Templated
100
     .ri_data                           (ri_data_0),             // Templated
101
     .fli_data                          (flo_data),              // Templated
102
     .fli_srdy                          (flo_srdy[0]),           // Templated
103
     .gmii_rx_clk                       (gmii_rx_clk_0),         // Templated
104
     .gmii_rx_dv                        (gmii_rx_dv_0),          // Templated
105
     .gmii_rxd                          (gmii_rxd_0[7:0]),       // Templated
106
     .p2f_drdy                          (p2f_drdy[0]),           // Templated
107 12 ghutchis
     .rarb_ack                          (rarb_ack[0]),           // Templated
108 11 ghutchis
     .ri_srdy                           (ri_srdy_0),             // Templated
109
     .ro_drdy                           (ri_drdy_1));             // Templated
110 8 ghutchis
 
111 11 ghutchis
  port_macro #(1) p1
112 8 ghutchis
    (/*AUTOINST*/
113
     // Outputs
114 11 ghutchis
     .ro_data                           (ri_data_2),             // Templated
115 12 ghutchis
     .rarb_req                          (rarb_req[1]),           // Templated
116 11 ghutchis
     .fli_drdy                          (flo_drdy[1]),           // Templated
117
     .gmii_tx_en                        (gmii_tx_en_1),          // Templated
118
     .gmii_txd                          (gmii_txd_1[7:0]),       // Templated
119
     .p2f_data                          (p2f_data_1[`PAR_DATA_SZ-1:0]), // Templated
120
     .p2f_srdy                          (p2f_srdy[1]),           // Templated
121
     .ri_drdy                           (ri_drdy_1),             // Templated
122
     .ro_srdy                           (ri_srdy_2),             // Templated
123 8 ghutchis
     // Inputs
124 11 ghutchis
     .clk                               (clk),                   // Templated
125
     .reset                             (reset),                 // Templated
126
     .ri_data                           (ri_data_1),             // Templated
127
     .fli_data                          (flo_data),              // Templated
128
     .fli_srdy                          (flo_srdy[1]),           // Templated
129
     .gmii_rx_clk                       (gmii_rx_clk_1),         // Templated
130
     .gmii_rx_dv                        (gmii_rx_dv_1),          // Templated
131
     .gmii_rxd                          (gmii_rxd_1[7:0]),       // Templated
132
     .p2f_drdy                          (p2f_drdy[1]),           // Templated
133 12 ghutchis
     .rarb_ack                          (rarb_ack[1]),           // Templated
134 11 ghutchis
     .ri_srdy                           (ri_srdy_1),             // Templated
135
     .ro_drdy                           (ri_drdy_2));             // Templated
136 8 ghutchis
 
137 11 ghutchis
  port_macro #(2) p2
138 8 ghutchis
    (/*AUTOINST*/
139
     // Outputs
140 11 ghutchis
     .ro_data                           (ri_data_3),             // Templated
141 12 ghutchis
     .rarb_req                          (rarb_req[2]),           // Templated
142 11 ghutchis
     .fli_drdy                          (flo_drdy[2]),           // Templated
143
     .gmii_tx_en                        (gmii_tx_en_2),          // Templated
144
     .gmii_txd                          (gmii_txd_2[7:0]),       // Templated
145
     .p2f_data                          (p2f_data_2[`PAR_DATA_SZ-1:0]), // Templated
146
     .p2f_srdy                          (p2f_srdy[2]),           // Templated
147
     .ri_drdy                           (ri_drdy_2),             // Templated
148
     .ro_srdy                           (ri_srdy_3),             // Templated
149 8 ghutchis
     // Inputs
150 11 ghutchis
     .clk                               (clk),                   // Templated
151
     .reset                             (reset),                 // Templated
152
     .ri_data                           (ri_data_2),             // Templated
153
     .fli_data                          (flo_data),              // Templated
154
     .fli_srdy                          (flo_srdy[2]),           // Templated
155
     .gmii_rx_clk                       (gmii_rx_clk_2),         // Templated
156
     .gmii_rx_dv                        (gmii_rx_dv_2),          // Templated
157
     .gmii_rxd                          (gmii_rxd_2[7:0]),       // Templated
158
     .p2f_drdy                          (p2f_drdy[2]),           // Templated
159 12 ghutchis
     .rarb_ack                          (rarb_ack[2]),           // Templated
160 11 ghutchis
     .ri_srdy                           (ri_srdy_2),             // Templated
161
     .ro_drdy                           (ri_drdy_3));             // Templated
162 8 ghutchis
 
163 11 ghutchis
  port_macro #(3) p3
164 8 ghutchis
    (/*AUTOINST*/
165
     // Outputs
166 11 ghutchis
     .ro_data                           (ri_data_0),             // Templated
167 12 ghutchis
     .rarb_req                          (rarb_req[3]),           // Templated
168 11 ghutchis
     .fli_drdy                          (flo_drdy[3]),           // Templated
169
     .gmii_tx_en                        (gmii_tx_en_3),          // Templated
170
     .gmii_txd                          (gmii_txd_3[7:0]),       // Templated
171
     .p2f_data                          (p2f_data_3[`PAR_DATA_SZ-1:0]), // Templated
172
     .p2f_srdy                          (p2f_srdy[3]),           // Templated
173
     .ri_drdy                           (ri_drdy_3),             // Templated
174
     .ro_srdy                           (ri_srdy_0),             // Templated
175 8 ghutchis
     // Inputs
176 11 ghutchis
     .clk                               (clk),                   // Templated
177
     .reset                             (reset),                 // Templated
178
     .ri_data                           (ri_data_3),             // Templated
179
     .fli_data                          (flo_data),              // Templated
180
     .fli_srdy                          (flo_srdy[3]),           // Templated
181
     .gmii_rx_clk                       (gmii_rx_clk_3),         // Templated
182
     .gmii_rx_dv                        (gmii_rx_dv_3),          // Templated
183
     .gmii_rxd                          (gmii_rxd_3[7:0]),       // Templated
184
     .p2f_drdy                          (p2f_drdy[3]),           // Templated
185 12 ghutchis
     .rarb_ack                          (rarb_ack[3]),           // Templated
186 11 ghutchis
     .ri_srdy                           (ri_srdy_3),             // Templated
187
     .ro_drdy                           (ri_drdy_0));             // Templated
188 8 ghutchis
 
189
/*  sd_rrslow AUTO_TEMPLATE
190
 (
191
 .p_data  (ppi_data[`PAR_DATA_SZ-1:0]),
192
 .c_data  ({p2f_data_3,p2f_data_2,p2f_data_1,p2f_data_0}),
193
 .c_srdy  (p2f_srdy[`NUM_PORTS-1:0]),
194
 .c_drdy  (p2f_drdy[`NUM_PORTS-1:0]),
195
 .c_\(.*\)   (p2f_\1[]),
196
 .p_\(.*\)   (ppi_\1[]),
197
 );
198
 */
199
  sd_rrslow #(`PAR_DATA_SZ,`NUM_PORTS,0) fib_arb
200
    (/*AUTOINST*/
201
     // Outputs
202 11 ghutchis
     .c_drdy                            (p2f_drdy[`NUM_PORTS-1:0]), // Templated
203
     .p_data                            (ppi_data[`PAR_DATA_SZ-1:0]), // Templated
204
     .p_srdy                            (ppi_srdy),              // Templated
205 8 ghutchis
     // Inputs
206 11 ghutchis
     .clk                               (clk),
207
     .reset                             (reset),
208
     .c_data                            ({p2f_data_3,p2f_data_2,p2f_data_1,p2f_data_0}), // Templated
209
     .c_srdy                            (p2f_srdy[`NUM_PORTS-1:0]), // Templated
210
     .p_drdy                            (ppi_drdy));              // Templated
211 8 ghutchis
 
212
  fib_lookup fib_lookup
213
    (/*AUTOINST*/
214
     // Outputs
215 11 ghutchis
     .flo_data                          (flo_data[`NUM_PORTS-1:0]),
216
     .flo_srdy                          (flo_srdy[`NUM_PORTS-1:0]),
217
     .ppi_drdy                          (ppi_drdy),
218 8 ghutchis
     // Inputs
219 11 ghutchis
     .clk                               (clk),
220
     .reset                             (reset),
221
     .ppi_data                          (ppi_data[`PAR_DATA_SZ-1:0]),
222
     .flo_drdy                          (flo_drdy[`NUM_PORTS-1:0]),
223
     .ppi_srdy                          (ppi_srdy));
224 8 ghutchis
 
225 12 ghutchis
  ring_arb ring_arb
226
    (/*AUTOINST*/
227
     // Outputs
228
     .rarb_ack                          (rarb_ack[`NUM_PORTS-1:0]),
229
     // Inputs
230
     .clk                               (clk),
231
     .reset                             (reset),
232
     .rarb_req                          (rarb_req[`NUM_PORTS-1:0]));
233
 
234 8 ghutchis
endmodule // bridge_ex1
235
// Local Variables:
236
// verilog-library-directories:("." "../../../rtl/verilog/closure" "../../../rtl/verilog/buffers" "../../../rtl/verilog/forks")
237
// End:  

powered by: WebSVN 2.1.0

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