1 |
31 |
ghutchis |
module control_pipe
|
2 |
|
|
(
|
3 |
|
|
input [`PM2F_SZ-1:0] pm2f_data_0, // To fib_arb of sd_rrmux.v
|
4 |
|
|
input [`PM2F_SZ-1:0] pm2f_data_1, // To fib_arb of sd_rrmux.v
|
5 |
|
|
input [`PM2F_SZ-1:0] pm2f_data_2, // To fib_arb of sd_rrmux.v
|
6 |
|
|
input [`PM2F_SZ-1:0] pm2f_data_3, // To fib_arb of sd_rrmux.v
|
7 |
|
|
/*AUTOINPUT*/
|
8 |
|
|
// Beginning of automatic inputs (from unused autoinst inputs)
|
9 |
|
|
input clk, // To fib_arb of sd_rrmux.v, ...
|
10 |
|
|
input [`NUM_PORTS*`LL_PG_ASZ*2-1:0] drf_page_list,// To lm of llmanager.v
|
11 |
|
|
input [(`NUM_PORTS)-1:0] drf_srdy, // To lm of llmanager.v
|
12 |
|
|
input [3:0] f2d_drdy, // To cq0 of sd_fifo_s.v, ...
|
13 |
|
|
input [`LL_LNP_SZ*4-1:0] lnp_pnp, // To lm of llmanager.v
|
14 |
|
|
input [(`NUM_PORTS)-1:0] lnp_srdy, // To lm of llmanager.v
|
15 |
|
|
input [(`NUM_PORTS)-1:0] par_srdy, // To lm of llmanager.v
|
16 |
|
|
input [(`NUM_PORTS)-1:0] parr_drdy, // To lm of llmanager.v
|
17 |
|
|
input [`NUM_PORTS-1:0] pm2f_srdy, // To fib_arb of sd_rrmux.v
|
18 |
|
|
input reset, // To fib_arb of sd_rrmux.v, ...
|
19 |
|
|
input [(`NUM_PORTS)*(`LL_PG_ASZ)-1:0] rlp_rd_page,// To lm of llmanager.v
|
20 |
|
|
input [(`NUM_PORTS)-1:0] rlp_srdy, // To lm of llmanager.v
|
21 |
|
|
input [(`NUM_PORTS)-1:0] rlpr_drdy, // To lm of llmanager.v
|
22 |
|
|
// End of automatics
|
23 |
|
|
/*AUTOOUTPUT*/
|
24 |
|
|
// Beginning of automatic outputs (from unused autoinst outputs)
|
25 |
|
|
output [(`NUM_PORTS)-1:0] drf_drdy, // From lm of llmanager.v
|
26 |
|
|
output [`LL_PG_ASZ-1:0] f2d_data_0, // From cq0 of sd_fifo_s.v
|
27 |
|
|
output [`LL_PG_ASZ-1:0] f2d_data_1, // From cq1 of sd_fifo_s.v
|
28 |
|
|
output [`LL_PG_ASZ-1:0] f2d_data_2, // From cq2 of sd_fifo_s.v
|
29 |
|
|
output [`LL_PG_ASZ-1:0] f2d_data_3, // From cq3 of sd_fifo_s.v
|
30 |
|
|
output [3:0] f2d_srdy, // From cq0 of sd_fifo_s.v, ...
|
31 |
|
|
output [(`NUM_PORTS)-1:0] lnp_drdy, // From lm of llmanager.v
|
32 |
|
|
output [(`NUM_PORTS)-1:0] par_drdy, // From lm of llmanager.v
|
33 |
|
|
output [(`LL_PG_ASZ)-1:0] parr_page, // From lm of llmanager.v
|
34 |
|
|
output [(`NUM_PORTS)-1:0] parr_srdy, // From lm of llmanager.v
|
35 |
|
|
output [`NUM_PORTS-1:0] pm2f_drdy, // From fib_arb of sd_rrmux.v
|
36 |
|
|
output [(`NUM_PORTS)-1:0] rlp_drdy, // From lm of llmanager.v
|
37 |
|
|
output [(`LL_PG_ASZ+1)-1:0] rlpr_data, // From lm of llmanager.v
|
38 |
|
|
output [(`NUM_PORTS)-1:0] rlpr_srdy // From lm of llmanager.v
|
39 |
|
|
// End of automatics
|
40 |
|
|
);
|
41 |
|
|
|
42 |
|
|
/*AUTOWIRE*/
|
43 |
|
|
// Beginning of automatic wires (for undeclared instantiated-module outputs)
|
44 |
|
|
wire [`LL_PG_ASZ-1:0] flo_data; // From fib_lookup of fib_lookup.v
|
45 |
|
|
wire [3:0] flo_drdy; // From cq0 of sd_fifo_s.v, ...
|
46 |
|
|
wire [`NUM_PORTS-1:0] flo_srdy; // From fib_lookup of fib_lookup.v
|
47 |
|
|
wire [(`LL_PG_ASZ)-1:0] pgmem_rd_addr; // From lm of llmanager.v
|
48 |
|
|
wire [(`LL_PG_ASZ+1)-1:0] pgmem_rd_data; // From pglist_mem of behave2p_mem.v
|
49 |
|
|
wire pgmem_rd_en; // From lm of llmanager.v
|
50 |
|
|
wire [(`LL_PG_ASZ)-1:0] pgmem_wr_addr; // From lm of llmanager.v
|
51 |
|
|
wire [(`LL_PG_ASZ+1)-1:0] pgmem_wr_data; // From lm of llmanager.v
|
52 |
|
|
wire pgmem_wr_en; // From lm of llmanager.v
|
53 |
|
|
wire [`PM2F_SZ-1:0] ppi_data; // From fib_arb of sd_rrmux.v
|
54 |
|
|
wire ppi_drdy; // From fib_lookup of fib_lookup.v
|
55 |
|
|
wire ppi_srdy; // From fib_arb of sd_rrmux.v
|
56 |
|
|
wire [(`LL_PG_ASZ)-1:0] ref_rd_addr; // From lm of llmanager.v
|
57 |
|
|
wire [(`LL_REFSZ)-1:0] ref_rd_data; // From ref_mem of behave2p_mem.v
|
58 |
|
|
wire ref_rd_en; // From lm of llmanager.v
|
59 |
|
|
wire [(`LL_PG_ASZ)-1:0] ref_wr_addr; // From lm of llmanager.v
|
60 |
|
|
wire [(`LL_REFSZ)-1:0] ref_wr_data; // From lm of llmanager.v
|
61 |
|
|
wire ref_wr_en; // From lm of llmanager.v
|
62 |
|
|
wire [`LL_REFSZ-1:0] refup_count; // From fib_lookup of fib_lookup.v
|
63 |
|
|
wire refup_drdy; // From lm of llmanager.v
|
64 |
|
|
wire [`LL_PG_ASZ-1:0] refup_page; // From fib_lookup of fib_lookup.v
|
65 |
|
|
wire refup_srdy; // From fib_lookup of fib_lookup.v
|
66 |
|
|
// End of automatics
|
67 |
|
|
|
68 |
|
|
/* sd_rrmux AUTO_TEMPLATE
|
69 |
|
|
(
|
70 |
|
|
.p_grant (),
|
71 |
|
|
.p_data (ppi_data[`PM2F_SZ-1:0]),
|
72 |
|
|
.c_data ({pm2f_data_3,pm2f_data_2,pm2f_data_1,pm2f_data_0}),
|
73 |
|
|
.c_srdy (pm2f_srdy[`NUM_PORTS-1:0]),
|
74 |
|
|
.c_drdy (pm2f_drdy[`NUM_PORTS-1:0]),
|
75 |
|
|
.c_rearb (1'b1),
|
76 |
|
|
.c_\(.*\) (pm2f_\1[]),
|
77 |
|
|
.p_\(.*\) (ppi_\1[]),
|
78 |
|
|
);
|
79 |
|
|
*/
|
80 |
|
|
sd_rrmux #(
|
81 |
|
|
// Parameters
|
82 |
|
|
.width (`PM2F_SZ),
|
83 |
|
|
.inputs (`NUM_PORTS),
|
84 |
|
|
.mode (0),
|
85 |
|
|
.fast_arb (1)) fib_arb
|
86 |
|
|
(/*AUTOINST*/
|
87 |
|
|
// Outputs
|
88 |
|
|
.c_drdy (pm2f_drdy[`NUM_PORTS-1:0]), // Templated
|
89 |
|
|
.p_data (ppi_data[`PM2F_SZ-1:0]), // Templated
|
90 |
|
|
.p_grant (), // Templated
|
91 |
|
|
.p_srdy (ppi_srdy), // Templated
|
92 |
|
|
// Inputs
|
93 |
|
|
.clk (clk),
|
94 |
|
|
.reset (reset),
|
95 |
|
|
.c_data ({pm2f_data_3,pm2f_data_2,pm2f_data_1,pm2f_data_0}), // Templated
|
96 |
|
|
.c_srdy (pm2f_srdy[`NUM_PORTS-1:0]), // Templated
|
97 |
|
|
.c_rearb (1'b1), // Templated
|
98 |
|
|
.p_drdy (ppi_drdy)); // Templated
|
99 |
|
|
|
100 |
|
|
fib_lookup fib_lookup
|
101 |
|
|
(/*AUTOINST*/
|
102 |
|
|
// Outputs
|
103 |
|
|
.flo_data (flo_data[`LL_PG_ASZ-1:0]),
|
104 |
|
|
.flo_srdy (flo_srdy[`NUM_PORTS-1:0]),
|
105 |
|
|
.ppi_drdy (ppi_drdy),
|
106 |
|
|
.refup_count (refup_count[`LL_REFSZ-1:0]),
|
107 |
|
|
.refup_page (refup_page[`LL_PG_ASZ-1:0]),
|
108 |
|
|
.refup_srdy (refup_srdy),
|
109 |
|
|
// Inputs
|
110 |
|
|
.clk (clk),
|
111 |
|
|
.reset (reset),
|
112 |
|
|
.ppi_data (ppi_data[`PM2F_SZ-1:0]),
|
113 |
|
|
.flo_drdy (flo_drdy[`NUM_PORTS-1:0]),
|
114 |
|
|
.ppi_srdy (ppi_srdy),
|
115 |
|
|
.refup_drdy (refup_drdy));
|
116 |
|
|
|
117 |
|
|
/* llmanager AUTO_TEMPLATE
|
118 |
|
|
(
|
119 |
|
|
.lnp_pnp (lnp_pnp[`LL_LNP_SZ*4-1:0]),
|
120 |
|
|
.drf_page_list (drf_page_list[`NUM_PORTS*`LL_PG_ASZ*2-1:0]),
|
121 |
|
|
.free_count (),
|
122 |
|
|
);
|
123 |
|
|
*/
|
124 |
|
|
llmanager #(
|
125 |
|
|
// Parameters
|
126 |
|
|
.lpsz (`LL_PG_ASZ),
|
127 |
|
|
.lpdsz (`LL_PG_ASZ+1),
|
128 |
|
|
.pages (`LL_PAGES),
|
129 |
|
|
.sources (`NUM_PORTS),
|
130 |
|
|
.maxref (`LL_MAX_REF),
|
131 |
|
|
.refsz (`LL_REFSZ),
|
132 |
|
|
.sinks (`NUM_PORTS),
|
133 |
|
|
.sksz (2)) lm
|
134 |
|
|
(/*AUTOINST*/
|
135 |
|
|
// Outputs
|
136 |
|
|
.par_drdy (par_drdy[(`NUM_PORTS)-1:0]),
|
137 |
|
|
.parr_srdy (parr_srdy[(`NUM_PORTS)-1:0]),
|
138 |
|
|
.parr_page (parr_page[(`LL_PG_ASZ)-1:0]),
|
139 |
|
|
.lnp_drdy (lnp_drdy[(`NUM_PORTS)-1:0]),
|
140 |
|
|
.rlp_drdy (rlp_drdy[(`NUM_PORTS)-1:0]),
|
141 |
|
|
.rlpr_srdy (rlpr_srdy[(`NUM_PORTS)-1:0]),
|
142 |
|
|
.rlpr_data (rlpr_data[(`LL_PG_ASZ+1)-1:0]),
|
143 |
|
|
.drf_drdy (drf_drdy[(`NUM_PORTS)-1:0]),
|
144 |
|
|
.refup_drdy (refup_drdy),
|
145 |
|
|
.pgmem_wr_en (pgmem_wr_en),
|
146 |
|
|
.pgmem_wr_addr (pgmem_wr_addr[(`LL_PG_ASZ)-1:0]),
|
147 |
|
|
.pgmem_wr_data (pgmem_wr_data[(`LL_PG_ASZ+1)-1:0]),
|
148 |
|
|
.pgmem_rd_addr (pgmem_rd_addr[(`LL_PG_ASZ)-1:0]),
|
149 |
|
|
.pgmem_rd_en (pgmem_rd_en),
|
150 |
|
|
.ref_wr_en (ref_wr_en),
|
151 |
|
|
.ref_wr_addr (ref_wr_addr[(`LL_PG_ASZ)-1:0]),
|
152 |
|
|
.ref_wr_data (ref_wr_data[(`LL_REFSZ)-1:0]),
|
153 |
|
|
.ref_rd_addr (ref_rd_addr[(`LL_PG_ASZ)-1:0]),
|
154 |
|
|
.ref_rd_en (ref_rd_en),
|
155 |
|
|
.free_count (), // Templated
|
156 |
|
|
// Inputs
|
157 |
|
|
.clk (clk),
|
158 |
|
|
.reset (reset),
|
159 |
|
|
.par_srdy (par_srdy[(`NUM_PORTS)-1:0]),
|
160 |
|
|
.parr_drdy (parr_drdy[(`NUM_PORTS)-1:0]),
|
161 |
|
|
.lnp_srdy (lnp_srdy[(`NUM_PORTS)-1:0]),
|
162 |
|
|
.lnp_pnp (lnp_pnp[`LL_LNP_SZ*4-1:0]), // Templated
|
163 |
|
|
.rlp_srdy (rlp_srdy[(`NUM_PORTS)-1:0]),
|
164 |
|
|
.rlp_rd_page (rlp_rd_page[(`NUM_PORTS)*(`LL_PG_ASZ)-1:0]),
|
165 |
|
|
.rlpr_drdy (rlpr_drdy[(`NUM_PORTS)-1:0]),
|
166 |
|
|
.drf_srdy (drf_srdy[(`NUM_PORTS)-1:0]),
|
167 |
|
|
.drf_page_list (drf_page_list[`NUM_PORTS*`LL_PG_ASZ*2-1:0]), // Templated
|
168 |
|
|
.refup_srdy (refup_srdy),
|
169 |
|
|
.refup_page (refup_page[(`LL_PG_ASZ)-1:0]),
|
170 |
|
|
.refup_count (refup_count[(`LL_REFSZ)-1:0]),
|
171 |
|
|
.pgmem_rd_data (pgmem_rd_data[(`LL_PG_ASZ+1)-1:0]),
|
172 |
|
|
.ref_rd_data (ref_rd_data[(`LL_REFSZ)-1:0]));
|
173 |
|
|
|
174 |
|
|
/* behave2p_mem AUTO_TEMPLATE
|
175 |
|
|
(
|
176 |
|
|
|
177 |
|
|
.wr_clk (clk),
|
178 |
|
|
.rd_clk (clk),
|
179 |
|
|
|
180 |
|
|
.wr_en (pgmem_wr_en),
|
181 |
|
|
.d_in (pgmem_wr_data[]),
|
182 |
|
|
.wr_addr (pgmem_wr_addr[]),
|
183 |
|
|
|
184 |
|
|
.rd_en (pgmem_rd_en),
|
185 |
|
|
.rd_addr (pgmem_rd_addr[]),
|
186 |
|
|
.d_out (pgmem_rd_data[]),
|
187 |
|
|
);
|
188 |
|
|
*/
|
189 |
|
|
behave2p_mem #(.depth (`LL_PAGES),
|
190 |
|
|
.addr_sz (`LL_PG_ASZ),
|
191 |
|
|
.width (`LL_PG_ASZ+1)) pglist_mem
|
192 |
|
|
(/*AUTOINST*/
|
193 |
|
|
// Outputs
|
194 |
|
|
.d_out (pgmem_rd_data[(`LL_PG_ASZ+1)-1:0]), // Templated
|
195 |
|
|
// Inputs
|
196 |
|
|
.wr_en (pgmem_wr_en), // Templated
|
197 |
|
|
.rd_en (pgmem_rd_en), // Templated
|
198 |
|
|
.wr_clk (clk), // Templated
|
199 |
|
|
.rd_clk (clk), // Templated
|
200 |
|
|
.d_in (pgmem_wr_data[(`LL_PG_ASZ+1)-1:0]), // Templated
|
201 |
|
|
.rd_addr (pgmem_rd_addr[(`LL_PG_ASZ)-1:0]), // Templated
|
202 |
|
|
.wr_addr (pgmem_wr_addr[(`LL_PG_ASZ)-1:0])); // Templated
|
203 |
|
|
|
204 |
|
|
/* behave2p_mem AUTO_TEMPLATE
|
205 |
|
|
(
|
206 |
|
|
|
207 |
|
|
.wr_clk (clk),
|
208 |
|
|
.rd_clk (clk),
|
209 |
|
|
|
210 |
|
|
.wr_en (ref_wr_en),
|
211 |
|
|
.d_in (ref_wr_data[]),
|
212 |
|
|
.wr_addr (ref_wr_addr[]),
|
213 |
|
|
|
214 |
|
|
.rd_en (ref_rd_en),
|
215 |
|
|
.rd_addr (ref_rd_addr[]),
|
216 |
|
|
.d_out (ref_rd_data[]),
|
217 |
|
|
);
|
218 |
|
|
*/
|
219 |
|
|
behave2p_mem #(.depth (`LL_PAGES),
|
220 |
|
|
.addr_sz (`LL_PG_ASZ),
|
221 |
|
|
.width (`LL_REFSZ)) ref_mem
|
222 |
|
|
(/*AUTOINST*/
|
223 |
|
|
// Outputs
|
224 |
|
|
.d_out (ref_rd_data[(`LL_REFSZ)-1:0]), // Templated
|
225 |
|
|
// Inputs
|
226 |
|
|
.wr_en (ref_wr_en), // Templated
|
227 |
|
|
.rd_en (ref_rd_en), // Templated
|
228 |
|
|
.wr_clk (clk), // Templated
|
229 |
|
|
.rd_clk (clk), // Templated
|
230 |
|
|
.d_in (ref_wr_data[(`LL_REFSZ)-1:0]), // Templated
|
231 |
|
|
.rd_addr (ref_rd_addr[(`LL_PG_ASZ)-1:0]), // Templated
|
232 |
|
|
.wr_addr (ref_wr_addr[(`LL_PG_ASZ)-1:0])); // Templated
|
233 |
|
|
|
234 |
|
|
/* sd_fifo_s AUTO_TEMPLATE
|
235 |
|
|
(
|
236 |
|
|
.c_clk (clk),
|
237 |
|
|
.c_reset (reset),
|
238 |
|
|
.p_clk (clk),
|
239 |
|
|
.p_reset (reset),
|
240 |
|
|
.c_data (flo_data[`LL_PG_ASZ-1:0]),
|
241 |
|
|
.c_\(.*\) (flo_\1[@]),
|
242 |
|
|
.p_\(.*\) (f2d_\1[@]),
|
243 |
|
|
.p_data (f2d_data_@[`LL_PG_ASZ-1:0]),
|
244 |
|
|
);
|
245 |
|
|
*/
|
246 |
|
|
sd_fifo_s #(.width(`LL_PG_ASZ), .depth(8)) cq0
|
247 |
|
|
(/*AUTOINST*/
|
248 |
|
|
// Outputs
|
249 |
|
|
.c_drdy (flo_drdy[0]), // Templated
|
250 |
|
|
.p_srdy (f2d_srdy[0]), // Templated
|
251 |
|
|
.p_data (f2d_data_0[`LL_PG_ASZ-1:0]), // Templated
|
252 |
|
|
// Inputs
|
253 |
|
|
.c_clk (clk), // Templated
|
254 |
|
|
.c_reset (reset), // Templated
|
255 |
|
|
.c_srdy (flo_srdy[0]), // Templated
|
256 |
|
|
.c_data (flo_data[`LL_PG_ASZ-1:0]), // Templated
|
257 |
|
|
.p_clk (clk), // Templated
|
258 |
|
|
.p_reset (reset), // Templated
|
259 |
|
|
.p_drdy (f2d_drdy[0])); // Templated
|
260 |
|
|
|
261 |
|
|
sd_fifo_s #(.width(`LL_PG_ASZ), .depth(8)) cq1
|
262 |
|
|
(/*AUTOINST*/
|
263 |
|
|
// Outputs
|
264 |
|
|
.c_drdy (flo_drdy[1]), // Templated
|
265 |
|
|
.p_srdy (f2d_srdy[1]), // Templated
|
266 |
|
|
.p_data (f2d_data_1[`LL_PG_ASZ-1:0]), // Templated
|
267 |
|
|
// Inputs
|
268 |
|
|
.c_clk (clk), // Templated
|
269 |
|
|
.c_reset (reset), // Templated
|
270 |
|
|
.c_srdy (flo_srdy[1]), // Templated
|
271 |
|
|
.c_data (flo_data[`LL_PG_ASZ-1:0]), // Templated
|
272 |
|
|
.p_clk (clk), // Templated
|
273 |
|
|
.p_reset (reset), // Templated
|
274 |
|
|
.p_drdy (f2d_drdy[1])); // Templated
|
275 |
|
|
|
276 |
|
|
sd_fifo_s #(.width(`LL_PG_ASZ), .depth(8)) cq2
|
277 |
|
|
(/*AUTOINST*/
|
278 |
|
|
// Outputs
|
279 |
|
|
.c_drdy (flo_drdy[2]), // Templated
|
280 |
|
|
.p_srdy (f2d_srdy[2]), // Templated
|
281 |
|
|
.p_data (f2d_data_2[`LL_PG_ASZ-1:0]), // Templated
|
282 |
|
|
// Inputs
|
283 |
|
|
.c_clk (clk), // Templated
|
284 |
|
|
.c_reset (reset), // Templated
|
285 |
|
|
.c_srdy (flo_srdy[2]), // Templated
|
286 |
|
|
.c_data (flo_data[`LL_PG_ASZ-1:0]), // Templated
|
287 |
|
|
.p_clk (clk), // Templated
|
288 |
|
|
.p_reset (reset), // Templated
|
289 |
|
|
.p_drdy (f2d_drdy[2])); // Templated
|
290 |
|
|
|
291 |
|
|
sd_fifo_s #(.width(`LL_PG_ASZ), .depth(8)) cq3
|
292 |
|
|
(/*AUTOINST*/
|
293 |
|
|
// Outputs
|
294 |
|
|
.c_drdy (flo_drdy[3]), // Templated
|
295 |
|
|
.p_srdy (f2d_srdy[3]), // Templated
|
296 |
|
|
.p_data (f2d_data_3[`LL_PG_ASZ-1:0]), // Templated
|
297 |
|
|
// Inputs
|
298 |
|
|
.c_clk (clk), // Templated
|
299 |
|
|
.c_reset (reset), // Templated
|
300 |
|
|
.c_srdy (flo_srdy[3]), // Templated
|
301 |
|
|
.c_data (flo_data[`LL_PG_ASZ-1:0]), // Templated
|
302 |
|
|
.p_clk (clk), // Templated
|
303 |
|
|
.p_reset (reset), // Templated
|
304 |
|
|
.p_drdy (f2d_drdy[3])); // Templated
|
305 |
|
|
|
306 |
|
|
|
307 |
|
|
endmodule // control_pipe
|
308 |
|
|
// Local Variables:
|
309 |
|
|
// verilog-library-directories:("." "../../../rtl/verilog/closure" "../../../rtl/verilog/buffers" "../../../rtl/verilog/forks" "../../../rtl/verilog/memory" "../../llmanager")
|
310 |
|
|
// End:
|