Commit | Line | Data |
---|---|---|
86530b38 AT |
1 | // ========== Copyright Header Begin ========================================== |
2 | // | |
3 | // OpenSPARC T2 Processor File: l2t_dirout_dp.v | |
4 | // Copyright (C) 1995-2007 Sun Microsystems, Inc. All Rights Reserved | |
5 | // 4150 Network Circle, Santa Clara, California 95054, U.S.A. | |
6 | // | |
7 | // * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | |
8 | // | |
9 | // This program is free software; you can redistribute it and/or modify | |
10 | // it under the terms of the GNU General Public License as published by | |
11 | // the Free Software Foundation; version 2 of the License. | |
12 | // | |
13 | // This program is distributed in the hope that it will be useful, | |
14 | // but WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
16 | // GNU General Public License for more details. | |
17 | // | |
18 | // You should have received a copy of the GNU General Public License | |
19 | // along with this program; if not, write to the Free Software | |
20 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
21 | // | |
22 | // For the avoidance of doubt, and except that if any non-GPL license | |
23 | // choice is available it will apply instead, Sun elects to use only | |
24 | // the General Public License version 2 (GPLv2) at this time for any | |
25 | // software where a choice of GPL license versions is made | |
26 | // available with the language indicating that GPLv2 or any later version | |
27 | // may be used, or where a choice of which version of the GPL is applied is | |
28 | // otherwise unspecified. | |
29 | // | |
30 | // Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, | |
31 | // CA 95054 USA or visit www.sun.com if you need additional information or | |
32 | // have any questions. | |
33 | // | |
34 | // ========== Copyright Header End ============================================ | |
35 | module l2t_dirout_dp ( | |
36 | tcu_pce_ov, | |
37 | tcu_aclk, | |
38 | tcu_bclk, | |
39 | tcu_scan_en, | |
40 | tcu_clk_stop, | |
41 | rddata_out_c52_top, | |
42 | rddata_out_c52_bottom, | |
43 | rd_data_sel_c52_top, | |
44 | rd_data_sel_c52_bottom, | |
45 | parity_vld_in, | |
46 | dirout_parity_vld_out, | |
47 | mbist_read_data_pick_top, | |
48 | mbist_read_data_pick_bottom, | |
49 | mbist_lkup_wrdata, | |
50 | l2t_mb0_run, | |
51 | mbist_dc_ic_read_en, | |
52 | cam_read_fail, | |
53 | scan_out, | |
54 | l2clk, | |
55 | scan_in, | |
56 | dirout_parity_vld); | |
57 | wire stop; | |
58 | wire pce_ov; | |
59 | wire siclk; | |
60 | wire soclk; | |
61 | wire se; | |
62 | wire rd_data_sel_c52_top_final; | |
63 | wire rd_data_sel_c52_bottom_final; | |
64 | wire mbist_read_data_pick_top_r2; | |
65 | wire mbist_read_data_pick_bottom_r2; | |
66 | wire l2t_mb0_run_r1; | |
67 | wire l2t_mb0_run_r1_n; | |
68 | wire ff_rddata_out_c52_top_scanin; | |
69 | wire ff_rddata_out_c52_top_scanout; | |
70 | wire [15:0] rddata_out_c52_top_reg; | |
71 | wire ff_rddata_out_c52_bottom_scanin; | |
72 | wire ff_rddata_out_c52_bottom_scanout; | |
73 | wire mbist_read_data_pick_top_r1; | |
74 | wire [15:0] rddata_out_c52_bottom_reg; | |
75 | wire ff_mbist_dirin_rddata_out_c52_scanin; | |
76 | wire ff_mbist_dirin_rddata_out_c52_scanout; | |
77 | wire mbist_read_data_pick_bottom_r1; | |
78 | wire [15:0] dirin_rddata_out_c6; | |
79 | wire row_parity; | |
80 | wire rd_data_sel_top_or_bot; | |
81 | wire dir_rddata_and_rd_data_sel_top_or_bot; | |
82 | wire ff_parity_vld_scanin; | |
83 | wire ff_parity_vld_scanout; | |
84 | wire read_enable; | |
85 | wire ff_lookup_cmp_data_scanin; | |
86 | wire ff_lookup_cmp_data_scanout; | |
87 | wire mbist_dc_ic_read_en_r1; | |
88 | wire mbist_dc_ic_read_en_r2; | |
89 | wire cam_read_fail_unbuff_w; | |
90 | wire mbist_dc_ic_read_en_r3; | |
91 | wire [15:0] mbist_lkup_wrdata_r1; | |
92 | wire ff_mbist_wdata_r2_r3_split1_scanin; | |
93 | wire ff_mbist_wdata_r2_r3_split1_scanout; | |
94 | wire [15:0] mbist_lkup_wrdata_r2; | |
95 | wire ff_mbist_wdata_r2_r3_split2_scanin; | |
96 | wire ff_mbist_wdata_r2_r3_split2_scanout; | |
97 | wire [15:0] mbist_lkup_wrdata_r3; | |
98 | wire mbist_dc_ic_read_en_r3_n; | |
99 | wire cam_read_fail_unbuff; | |
100 | ||
101 | ||
102 | input tcu_pce_ov; | |
103 | input tcu_aclk; | |
104 | input tcu_bclk; | |
105 | input tcu_scan_en; | |
106 | input tcu_clk_stop; | |
107 | ||
108 | ||
109 | input [15:0] rddata_out_c52_top; // Top , BS and SR 11/18/03 Reverse Directory change | |
110 | // BS and SR 11/18/03 Reverse Directory change | |
111 | input [15:0] rddata_out_c52_bottom; // Bottom , BS and SR 11/18/03 Reverse Directory change | |
112 | // BS and SR 11/18/03 Reverse Directory change | |
113 | ||
114 | input rd_data_sel_c52_top; // Top | |
115 | // BS and SR 11/18/03 Reverse Directory change | |
116 | input rd_data_sel_c52_bottom; // Bottom | |
117 | // BS and SR 11/18/03 Reverse Directory change | |
118 | input [2:0] parity_vld_in; // Right | |
119 | output [2:0] dirout_parity_vld_out; // Left | |
120 | ||
121 | input mbist_read_data_pick_top; | |
122 | input mbist_read_data_pick_bottom; | |
123 | input [15:0] mbist_lkup_wrdata; | |
124 | input l2t_mb0_run; | |
125 | ||
126 | input [1:0] mbist_dc_ic_read_en; | |
127 | ||
128 | ||
129 | ||
130 | output cam_read_fail; | |
131 | output scan_out; | |
132 | input l2clk; | |
133 | input scan_in; | |
134 | output dirout_parity_vld; | |
135 | ||
136 | assign stop = tcu_clk_stop; | |
137 | assign pce_ov = tcu_pce_ov; | |
138 | assign siclk = tcu_aclk; | |
139 | assign soclk = tcu_bclk; | |
140 | assign se = tcu_scan_en; | |
141 | ||
142 | ||
143 | //assign scan_out = 1'b0; | |
144 | ||
145 | ||
146 | ||
147 | wire [15:0] dirin_rddata_out_c52; | |
148 | wire row1_parity; | |
149 | wire row2_parity; | |
150 | wire parity; | |
151 | wire parity_vld_prev; | |
152 | wire rd_data_sel_c52_top_n; | |
153 | ||
154 | // This is a 16 wide dp | |
155 | // bits {0,1} {2,3} occupy the same bit pitches. | |
156 | ||
157 | l2t_dirout_dp_mux_macro__mux_aonpe__width_2 mux_rd_data_sel | |
158 | ( | |
159 | .dout ({rd_data_sel_c52_top_final,rd_data_sel_c52_bottom_final}), | |
160 | .din0 ({mbist_read_data_pick_top_r2,mbist_read_data_pick_bottom_r2}), | |
161 | .din1 ({rd_data_sel_c52_top,rd_data_sel_c52_bottom}), | |
162 | .sel0 (l2t_mb0_run_r1), | |
163 | .sel1 (l2t_mb0_run_r1_n) | |
164 | ); | |
165 | l2t_dirout_dp_inv_macro__width_2 inv_added | |
166 | ( | |
167 | .dout ({rd_data_sel_c52_top_n,l2t_mb0_run_r1_n}), | |
168 | .din ({rd_data_sel_c52_top_final,l2t_mb0_run_r1}) | |
169 | ); | |
170 | ||
171 | ||
172 | l2t_dirout_dp_msff_macro__stack_18c__width_17 ff_rddata_out_c52_top | |
173 | ( | |
174 | .scan_in(ff_rddata_out_c52_top_scanin), | |
175 | .scan_out(ff_rddata_out_c52_top_scanout), | |
176 | .dout ({l2t_mb0_run_r1,rddata_out_c52_top_reg[15:0]}), | |
177 | .din ({l2t_mb0_run,rddata_out_c52_top[15:0]}), | |
178 | .clk (l2clk), | |
179 | .en(1'b1), | |
180 | .se(se), | |
181 | .siclk(siclk), | |
182 | .soclk(soclk), | |
183 | .pce_ov(pce_ov), | |
184 | .stop(stop) | |
185 | ); | |
186 | ||
187 | l2t_dirout_dp_msff_macro__stack_18c__width_18 ff_rddata_out_c52_bottom | |
188 | ( | |
189 | .scan_in(ff_rddata_out_c52_bottom_scanin), | |
190 | .scan_out(ff_rddata_out_c52_bottom_scanout), | |
191 | .dout ({mbist_read_data_pick_top_r1,mbist_read_data_pick_top_r2,rddata_out_c52_bottom_reg[15:0]}), | |
192 | .din ({mbist_read_data_pick_top,mbist_read_data_pick_top_r1,rddata_out_c52_bottom[15:0]}), | |
193 | .clk (l2clk), | |
194 | .en(1'b1), | |
195 | .se(se), | |
196 | .siclk(siclk), | |
197 | .soclk(soclk), | |
198 | .pce_ov(pce_ov), | |
199 | .stop(stop) | |
200 | ); | |
201 | ||
202 | ||
203 | l2t_dirout_dp_msff_macro__stack_18c__width_18 ff_mbist_dirin_rddata_out_c52 | |
204 | ( | |
205 | .scan_in(ff_mbist_dirin_rddata_out_c52_scanin), | |
206 | .scan_out(ff_mbist_dirin_rddata_out_c52_scanout), | |
207 | .dout ({mbist_read_data_pick_bottom_r1,mbist_read_data_pick_bottom_r2, | |
208 | dirin_rddata_out_c6[15:0]}), | |
209 | .din ({mbist_read_data_pick_bottom,mbist_read_data_pick_bottom_r1, | |
210 | dirin_rddata_out_c52[15:0]}), | |
211 | .clk (l2clk), | |
212 | .en (1'b1), | |
213 | .se(se), | |
214 | .siclk(siclk), | |
215 | .soclk(soclk), | |
216 | .pce_ov(pce_ov), | |
217 | .stop(stop) | |
218 | ); | |
219 | ||
220 | ||
221 | ||
222 | l2t_dirout_dp_mux_macro__mux_aonpe__ports_2__stack_16c__width_16 mux_rddata_out_c52 // BS and SR 11/18/03 Reverse Directory change | |
223 | ( | |
224 | .dout (dirin_rddata_out_c52[15:0]) , | |
225 | .din0 (rddata_out_c52_top_reg[15:0]), | |
226 | .din1 (rddata_out_c52_bottom_reg[15:0]), | |
227 | .sel0 (rd_data_sel_c52_top_final), | |
228 | .sel1 (rd_data_sel_c52_top_n) | |
229 | ); | |
230 | ||
231 | //zzpar16 par_row1_parity ( .z(row1_parity), | |
232 | // .d({dirin_rddata_out_c52[30],dirin_rddata_out_c52[28],dirin_rddata_out_c52[26], | |
233 | // dirin_rddata_out_c52[24],dirin_rddata_out_c52[22],dirin_rddata_out_c52[20], | |
234 | // dirin_rddata_out_c52[18],dirin_rddata_out_c52[16],dirin_rddata_out_c52[14], | |
235 | // dirin_rddata_out_c52[12],dirin_rddata_out_c52[10],dirin_rddata_out_c52[8], | |
236 | // dirin_rddata_out_c52[6],dirin_rddata_out_c52[4],dirin_rddata_out_c52[2], | |
237 | // dirin_rddata_out_c52[0]})); | |
238 | // | |
239 | //zzpar16 par_row2_parity ( .z(row2_parity), | |
240 | // .d({ 1'b0,dirin_rddata_out_c52[29],dirin_rddata_out_c52[27], | |
241 | // dirin_rddata_out_c52[25],dirin_rddata_out_c52[23],dirin_rddata_out_c52[21], | |
242 | // dirin_rddata_out_c52[19],dirin_rddata_out_c52[17],dirin_rddata_out_c52[15], | |
243 | // dirin_rddata_out_c52[13],dirin_rddata_out_c52[11],dirin_rddata_out_c52[9], | |
244 | // dirin_rddata_out_c52[7],dirin_rddata_out_c52[5],dirin_rddata_out_c52[3], | |
245 | // dirin_rddata_out_c52[1]})); | |
246 | //assign parity_vld_prev = (row1_parity ^ row2_parity) | |
247 | // & dirin_rddata_out_c52[31] & | |
248 | // ( rd_data_sel_c52_top | rd_data_sel_c52_bottom); | |
249 | ||
250 | l2t_dirout_dp_prty_macro__width_16 par_row_parity // BS and SR 11/18/03 Reverse Directory change | |
251 | ( | |
252 | .din ({1'b0,dirin_rddata_out_c52[14:0]}), | |
253 | .dout (row_parity) | |
254 | ); | |
255 | ||
256 | l2t_dirout_dp_or_macro__width_1 or_sel_top_bot | |
257 | ( | |
258 | .dout (rd_data_sel_top_or_bot), | |
259 | .din0 (rd_data_sel_c52_top_final), | |
260 | .din1 (rd_data_sel_c52_bottom_final) | |
261 | ); | |
262 | ||
263 | l2t_dirout_dp_and_macro__width_1 andor_sel_top_bot_dir_data ( | |
264 | .dout (dir_rddata_and_rd_data_sel_top_or_bot), | |
265 | .din0 (rd_data_sel_top_or_bot), | |
266 | .din1 (dirin_rddata_out_c52[15]) | |
267 | ); | |
268 | ||
269 | l2t_dirout_dp_and_macro__width_1 and_xorprty_andor_sel_top_bot_dir ( // BS and SR 11/18/03 Reverse Directory change | |
270 | .dout (parity_vld_prev), | |
271 | .din0 (dir_rddata_and_rd_data_sel_top_or_bot), | |
272 | .din1 (row_parity) | |
273 | ); | |
274 | ||
275 | l2t_dirout_dp_msff_macro__stack_1c__width_1 ff_parity_vld | |
276 | ( | |
277 | .scan_in(ff_parity_vld_scanin), | |
278 | .scan_out(ff_parity_vld_scanout), | |
279 | .din (parity_vld_prev), | |
280 | .clk (l2clk), | |
281 | .dout (dirout_parity_vld), | |
282 | .en (1'b1), | |
283 | .se(se), | |
284 | .siclk(siclk), | |
285 | .soclk(soclk), | |
286 | .pce_ov(pce_ov), | |
287 | .stop(stop) | |
288 | ); | |
289 | ||
290 | ||
291 | l2t_dirout_dp_or_macro__width_1 or_read_enable | |
292 | ( | |
293 | .dout (read_enable), | |
294 | .din0 (mbist_dc_ic_read_en[1]), | |
295 | .din1 (mbist_dc_ic_read_en[0]) | |
296 | ); | |
297 | ||
298 | l2t_dirout_dp_msff_macro__stack_20c__width_20 ff_lookup_cmp_data | |
299 | ( | |
300 | .scan_in(ff_lookup_cmp_data_scanin), | |
301 | .scan_out(ff_lookup_cmp_data_scanout), | |
302 | .din ({read_enable,mbist_dc_ic_read_en_r1,mbist_dc_ic_read_en_r2, | |
303 | cam_read_fail_unbuff_w,mbist_lkup_wrdata[15:0]}), | |
304 | .clk (l2clk), | |
305 | .dout ({mbist_dc_ic_read_en_r1,mbist_dc_ic_read_en_r2,mbist_dc_ic_read_en_r3, | |
306 | cam_read_fail,mbist_lkup_wrdata_r1[15:0]}), | |
307 | .en (1'b1), | |
308 | .se(se), | |
309 | .siclk(siclk), | |
310 | .soclk(soclk), | |
311 | .pce_ov(pce_ov), | |
312 | .stop(stop) | |
313 | ); | |
314 | ||
315 | ||
316 | ||
317 | l2t_dirout_dp_msff_macro__stack_16c__width_16 ff_mbist_wdata_r2_r3_split1 | |
318 | ( | |
319 | .scan_in(ff_mbist_wdata_r2_r3_split1_scanin), | |
320 | .scan_out(ff_mbist_wdata_r2_r3_split1_scanout), | |
321 | .dout (mbist_lkup_wrdata_r2[15:0]), | |
322 | .din (mbist_lkup_wrdata_r1[15:0]), | |
323 | .clk (l2clk), | |
324 | .en(1'b1), | |
325 | .se(se), | |
326 | .siclk(siclk), | |
327 | .soclk(soclk), | |
328 | .pce_ov(pce_ov), | |
329 | .stop(stop) | |
330 | ); | |
331 | ||
332 | l2t_dirout_dp_msff_macro__stack_16c__width_16 ff_mbist_wdata_r2_r3_split2 | |
333 | ( | |
334 | .scan_in(ff_mbist_wdata_r2_r3_split2_scanin), | |
335 | .scan_out(ff_mbist_wdata_r2_r3_split2_scanout), | |
336 | .dout (mbist_lkup_wrdata_r3[15:0]), | |
337 | .din (mbist_lkup_wrdata_r2[15:0]), | |
338 | .clk (l2clk), | |
339 | .en(1'b1), | |
340 | .se(se), | |
341 | .siclk(siclk), | |
342 | .soclk(soclk), | |
343 | .pce_ov(pce_ov), | |
344 | .stop(stop) | |
345 | ); | |
346 | ||
347 | ||
348 | l2t_dirout_dp_inv_macro__width_1 inv_mbist_dc_ic_read_en_r2 | |
349 | ( | |
350 | .dout (mbist_dc_ic_read_en_r3_n), | |
351 | .din (mbist_dc_ic_read_en_r3) | |
352 | ); | |
353 | ||
354 | //assign mbist_dc_ic_read_en_r2_n = mbist_dc_ic_read_en_r2; | |
355 | ||
356 | l2t_dirout_dp_cmp_macro__width_16 cmp_mbist_data | |
357 | ( | |
358 | .dout (cam_read_fail_unbuff), | |
359 | .din0 (mbist_lkup_wrdata_r3[15:0]), | |
360 | .din1 (dirin_rddata_out_c6[15:0]) | |
361 | ); | |
362 | ||
363 | ||
364 | l2t_dirout_dp_mux_macro__mux_aonpe__ports_2__width_1 mux_cam_fail | |
365 | ( | |
366 | .dout (cam_read_fail_unbuff_w), | |
367 | .din0 (cam_read_fail_unbuff), | |
368 | .din1 (1'b1), | |
369 | .sel0 (mbist_dc_ic_read_en_r3), | |
370 | .sel1 (mbist_dc_ic_read_en_r3_n) | |
371 | ); | |
372 | ||
373 | //assign dirout_parity_vld_out = parity_vld_in ; // use a 30X buffer. | |
374 | ||
375 | l2t_dirout_dp_buff_macro__width_3 buff_dirout_parity_vld_out | |
376 | ( | |
377 | .dout (dirout_parity_vld_out[2:0]), | |
378 | .din (parity_vld_in) | |
379 | ); | |
380 | ||
381 | ||
382 | // fixscan start: | |
383 | assign ff_rddata_out_c52_top_scanin = scan_in ; | |
384 | assign ff_rddata_out_c52_bottom_scanin = ff_rddata_out_c52_top_scanout; | |
385 | assign ff_mbist_dirin_rddata_out_c52_scanin = ff_rddata_out_c52_bottom_scanout; | |
386 | assign ff_parity_vld_scanin = ff_mbist_dirin_rddata_out_c52_scanout; | |
387 | assign ff_lookup_cmp_data_scanin = ff_parity_vld_scanout ; | |
388 | assign ff_mbist_wdata_r2_r3_split1_scanin = ff_lookup_cmp_data_scanout; | |
389 | assign ff_mbist_wdata_r2_r3_split2_scanin = ff_mbist_wdata_r2_r3_split1_scanout; | |
390 | assign scan_out = ff_mbist_wdata_r2_r3_split2_scanout; | |
391 | // fixscan end: | |
392 | endmodule | |
393 | ||
394 | ||
395 | ||
396 | // general mux macro for pass-gate and and-or muxes with/wout priority encoders | |
397 | // also for pass-gate with decoder | |
398 | ||
399 | ||
400 | ||
401 | ||
402 | ||
403 | // any PARAMS parms go into naming of macro | |
404 | ||
405 | module l2t_dirout_dp_mux_macro__mux_aonpe__width_2 ( | |
406 | din0, | |
407 | sel0, | |
408 | din1, | |
409 | sel1, | |
410 | dout); | |
411 | wire buffout0; | |
412 | wire buffout1; | |
413 | ||
414 | input [1:0] din0; | |
415 | input sel0; | |
416 | input [1:0] din1; | |
417 | input sel1; | |
418 | output [1:0] dout; | |
419 | ||
420 | ||
421 | ||
422 | ||
423 | ||
424 | cl_dp1_muxbuff2_8x c0_0 ( | |
425 | .in0(sel0), | |
426 | .in1(sel1), | |
427 | .out0(buffout0), | |
428 | .out1(buffout1) | |
429 | ); | |
430 | mux2s #(2) d0_0 ( | |
431 | .sel0(buffout0), | |
432 | .sel1(buffout1), | |
433 | .in0(din0[1:0]), | |
434 | .in1(din1[1:0]), | |
435 | .dout(dout[1:0]) | |
436 | ); | |
437 | ||
438 | ||
439 | ||
440 | ||
441 | ||
442 | ||
443 | ||
444 | ||
445 | ||
446 | ||
447 | ||
448 | ||
449 | ||
450 | endmodule | |
451 | ||
452 | ||
453 | // | |
454 | // invert macro | |
455 | // | |
456 | // | |
457 | ||
458 | ||
459 | ||
460 | ||
461 | ||
462 | module l2t_dirout_dp_inv_macro__width_2 ( | |
463 | din, | |
464 | dout); | |
465 | input [1:0] din; | |
466 | output [1:0] dout; | |
467 | ||
468 | ||
469 | ||
470 | ||
471 | ||
472 | ||
473 | inv #(2) d0_0 ( | |
474 | .in(din[1:0]), | |
475 | .out(dout[1:0]) | |
476 | ); | |
477 | ||
478 | ||
479 | ||
480 | ||
481 | ||
482 | ||
483 | ||
484 | ||
485 | ||
486 | endmodule | |
487 | ||
488 | ||
489 | ||
490 | ||
491 | ||
492 | ||
493 | ||
494 | ||
495 | ||
496 | // any PARAMS parms go into naming of macro | |
497 | ||
498 | module l2t_dirout_dp_msff_macro__stack_18c__width_17 ( | |
499 | din, | |
500 | clk, | |
501 | en, | |
502 | se, | |
503 | scan_in, | |
504 | siclk, | |
505 | soclk, | |
506 | pce_ov, | |
507 | stop, | |
508 | dout, | |
509 | scan_out); | |
510 | wire l1clk; | |
511 | wire siclk_out; | |
512 | wire soclk_out; | |
513 | wire [15:0] so; | |
514 | ||
515 | input [16:0] din; | |
516 | ||
517 | ||
518 | input clk; | |
519 | input en; | |
520 | input se; | |
521 | input scan_in; | |
522 | input siclk; | |
523 | input soclk; | |
524 | input pce_ov; | |
525 | input stop; | |
526 | ||
527 | ||
528 | ||
529 | output [16:0] dout; | |
530 | ||
531 | ||
532 | output scan_out; | |
533 | ||
534 | ||
535 | ||
536 | ||
537 | cl_dp1_l1hdr_8x c0_0 ( | |
538 | .l2clk(clk), | |
539 | .pce(en), | |
540 | .aclk(siclk), | |
541 | .bclk(soclk), | |
542 | .l1clk(l1clk), | |
543 | .se(se), | |
544 | .pce_ov(pce_ov), | |
545 | .stop(stop), | |
546 | .siclk_out(siclk_out), | |
547 | .soclk_out(soclk_out) | |
548 | ); | |
549 | dff #(17) d0_0 ( | |
550 | .l1clk(l1clk), | |
551 | .siclk(siclk_out), | |
552 | .soclk(soclk_out), | |
553 | .d(din[16:0]), | |
554 | .si({scan_in,so[15:0]}), | |
555 | .so({so[15:0],scan_out}), | |
556 | .q(dout[16:0]) | |
557 | ); | |
558 | ||
559 | ||
560 | ||
561 | ||
562 | ||
563 | ||
564 | ||
565 | ||
566 | ||
567 | ||
568 | ||
569 | ||
570 | ||
571 | ||
572 | ||
573 | ||
574 | ||
575 | ||
576 | ||
577 | ||
578 | endmodule | |
579 | ||
580 | ||
581 | ||
582 | ||
583 | ||
584 | ||
585 | ||
586 | ||
587 | ||
588 | ||
589 | ||
590 | ||
591 | ||
592 | // any PARAMS parms go into naming of macro | |
593 | ||
594 | module l2t_dirout_dp_msff_macro__stack_18c__width_18 ( | |
595 | din, | |
596 | clk, | |
597 | en, | |
598 | se, | |
599 | scan_in, | |
600 | siclk, | |
601 | soclk, | |
602 | pce_ov, | |
603 | stop, | |
604 | dout, | |
605 | scan_out); | |
606 | wire l1clk; | |
607 | wire siclk_out; | |
608 | wire soclk_out; | |
609 | wire [16:0] so; | |
610 | ||
611 | input [17:0] din; | |
612 | ||
613 | ||
614 | input clk; | |
615 | input en; | |
616 | input se; | |
617 | input scan_in; | |
618 | input siclk; | |
619 | input soclk; | |
620 | input pce_ov; | |
621 | input stop; | |
622 | ||
623 | ||
624 | ||
625 | output [17:0] dout; | |
626 | ||
627 | ||
628 | output scan_out; | |
629 | ||
630 | ||
631 | ||
632 | ||
633 | cl_dp1_l1hdr_8x c0_0 ( | |
634 | .l2clk(clk), | |
635 | .pce(en), | |
636 | .aclk(siclk), | |
637 | .bclk(soclk), | |
638 | .l1clk(l1clk), | |
639 | .se(se), | |
640 | .pce_ov(pce_ov), | |
641 | .stop(stop), | |
642 | .siclk_out(siclk_out), | |
643 | .soclk_out(soclk_out) | |
644 | ); | |
645 | dff #(18) d0_0 ( | |
646 | .l1clk(l1clk), | |
647 | .siclk(siclk_out), | |
648 | .soclk(soclk_out), | |
649 | .d(din[17:0]), | |
650 | .si({scan_in,so[16:0]}), | |
651 | .so({so[16:0],scan_out}), | |
652 | .q(dout[17:0]) | |
653 | ); | |
654 | ||
655 | ||
656 | ||
657 | ||
658 | ||
659 | ||
660 | ||
661 | ||
662 | ||
663 | ||
664 | ||
665 | ||
666 | ||
667 | ||
668 | ||
669 | ||
670 | ||
671 | ||
672 | ||
673 | ||
674 | endmodule | |
675 | ||
676 | ||
677 | ||
678 | ||
679 | ||
680 | ||
681 | ||
682 | ||
683 | ||
684 | // general mux macro for pass-gate and and-or muxes with/wout priority encoders | |
685 | // also for pass-gate with decoder | |
686 | ||
687 | ||
688 | ||
689 | ||
690 | ||
691 | // any PARAMS parms go into naming of macro | |
692 | ||
693 | module l2t_dirout_dp_mux_macro__mux_aonpe__ports_2__stack_16c__width_16 ( | |
694 | din0, | |
695 | sel0, | |
696 | din1, | |
697 | sel1, | |
698 | dout); | |
699 | wire buffout0; | |
700 | wire buffout1; | |
701 | ||
702 | input [15:0] din0; | |
703 | input sel0; | |
704 | input [15:0] din1; | |
705 | input sel1; | |
706 | output [15:0] dout; | |
707 | ||
708 | ||
709 | ||
710 | ||
711 | ||
712 | cl_dp1_muxbuff2_8x c0_0 ( | |
713 | .in0(sel0), | |
714 | .in1(sel1), | |
715 | .out0(buffout0), | |
716 | .out1(buffout1) | |
717 | ); | |
718 | mux2s #(16) d0_0 ( | |
719 | .sel0(buffout0), | |
720 | .sel1(buffout1), | |
721 | .in0(din0[15:0]), | |
722 | .in1(din1[15:0]), | |
723 | .dout(dout[15:0]) | |
724 | ); | |
725 | ||
726 | ||
727 | ||
728 | ||
729 | ||
730 | ||
731 | ||
732 | ||
733 | ||
734 | ||
735 | ||
736 | ||
737 | ||
738 | endmodule | |
739 | ||
740 | ||
741 | // | |
742 | // parity macro (even parity) | |
743 | // | |
744 | // | |
745 | ||
746 | ||
747 | ||
748 | ||
749 | ||
750 | module l2t_dirout_dp_prty_macro__width_16 ( | |
751 | din, | |
752 | dout); | |
753 | input [15:0] din; | |
754 | output dout; | |
755 | ||
756 | ||
757 | ||
758 | ||
759 | ||
760 | ||
761 | ||
762 | prty #(16) m0_0 ( | |
763 | .in(din[15:0]), | |
764 | .out(dout) | |
765 | ); | |
766 | ||
767 | ||
768 | ||
769 | ||
770 | ||
771 | ||
772 | ||
773 | ||
774 | ||
775 | ||
776 | endmodule | |
777 | ||
778 | ||
779 | ||
780 | ||
781 | ||
782 | // | |
783 | // or macro for ports = 2,3 | |
784 | // | |
785 | // | |
786 | ||
787 | ||
788 | ||
789 | ||
790 | ||
791 | module l2t_dirout_dp_or_macro__width_1 ( | |
792 | din0, | |
793 | din1, | |
794 | dout); | |
795 | input [0:0] din0; | |
796 | input [0:0] din1; | |
797 | output [0:0] dout; | |
798 | ||
799 | ||
800 | ||
801 | ||
802 | ||
803 | ||
804 | or2 #(1) d0_0 ( | |
805 | .in0(din0[0:0]), | |
806 | .in1(din1[0:0]), | |
807 | .out(dout[0:0]) | |
808 | ); | |
809 | ||
810 | ||
811 | ||
812 | ||
813 | ||
814 | ||
815 | ||
816 | ||
817 | ||
818 | endmodule | |
819 | ||
820 | ||
821 | ||
822 | ||
823 | ||
824 | // | |
825 | // and macro for ports = 2,3,4 | |
826 | // | |
827 | // | |
828 | ||
829 | ||
830 | ||
831 | ||
832 | ||
833 | module l2t_dirout_dp_and_macro__width_1 ( | |
834 | din0, | |
835 | din1, | |
836 | dout); | |
837 | input [0:0] din0; | |
838 | input [0:0] din1; | |
839 | output [0:0] dout; | |
840 | ||
841 | ||
842 | ||
843 | ||
844 | ||
845 | ||
846 | and2 #(1) d0_0 ( | |
847 | .in0(din0[0:0]), | |
848 | .in1(din1[0:0]), | |
849 | .out(dout[0:0]) | |
850 | ); | |
851 | ||
852 | ||
853 | ||
854 | ||
855 | ||
856 | ||
857 | ||
858 | ||
859 | ||
860 | endmodule | |
861 | ||
862 | ||
863 | ||
864 | ||
865 | ||
866 | ||
867 | ||
868 | ||
869 | ||
870 | // any PARAMS parms go into naming of macro | |
871 | ||
872 | module l2t_dirout_dp_msff_macro__stack_1c__width_1 ( | |
873 | din, | |
874 | clk, | |
875 | en, | |
876 | se, | |
877 | scan_in, | |
878 | siclk, | |
879 | soclk, | |
880 | pce_ov, | |
881 | stop, | |
882 | dout, | |
883 | scan_out); | |
884 | wire l1clk; | |
885 | wire siclk_out; | |
886 | wire soclk_out; | |
887 | ||
888 | input [0:0] din; | |
889 | ||
890 | ||
891 | input clk; | |
892 | input en; | |
893 | input se; | |
894 | input scan_in; | |
895 | input siclk; | |
896 | input soclk; | |
897 | input pce_ov; | |
898 | input stop; | |
899 | ||
900 | ||
901 | ||
902 | output [0:0] dout; | |
903 | ||
904 | ||
905 | output scan_out; | |
906 | ||
907 | ||
908 | ||
909 | ||
910 | cl_dp1_l1hdr_8x c0_0 ( | |
911 | .l2clk(clk), | |
912 | .pce(en), | |
913 | .aclk(siclk), | |
914 | .bclk(soclk), | |
915 | .l1clk(l1clk), | |
916 | .se(se), | |
917 | .pce_ov(pce_ov), | |
918 | .stop(stop), | |
919 | .siclk_out(siclk_out), | |
920 | .soclk_out(soclk_out) | |
921 | ); | |
922 | dff #(1) d0_0 ( | |
923 | .l1clk(l1clk), | |
924 | .siclk(siclk_out), | |
925 | .soclk(soclk_out), | |
926 | .d(din[0:0]), | |
927 | .si(scan_in), | |
928 | .so(scan_out), | |
929 | .q(dout[0:0]) | |
930 | ); | |
931 | ||
932 | ||
933 | ||
934 | ||
935 | ||
936 | ||
937 | ||
938 | ||
939 | ||
940 | ||
941 | ||
942 | ||
943 | ||
944 | ||
945 | ||
946 | ||
947 | ||
948 | ||
949 | ||
950 | ||
951 | endmodule | |
952 | ||
953 | ||
954 | ||
955 | ||
956 | ||
957 | ||
958 | ||
959 | ||
960 | ||
961 | ||
962 | ||
963 | ||
964 | ||
965 | // any PARAMS parms go into naming of macro | |
966 | ||
967 | module l2t_dirout_dp_msff_macro__stack_20c__width_20 ( | |
968 | din, | |
969 | clk, | |
970 | en, | |
971 | se, | |
972 | scan_in, | |
973 | siclk, | |
974 | soclk, | |
975 | pce_ov, | |
976 | stop, | |
977 | dout, | |
978 | scan_out); | |
979 | wire l1clk; | |
980 | wire siclk_out; | |
981 | wire soclk_out; | |
982 | wire [18:0] so; | |
983 | ||
984 | input [19:0] din; | |
985 | ||
986 | ||
987 | input clk; | |
988 | input en; | |
989 | input se; | |
990 | input scan_in; | |
991 | input siclk; | |
992 | input soclk; | |
993 | input pce_ov; | |
994 | input stop; | |
995 | ||
996 | ||
997 | ||
998 | output [19:0] dout; | |
999 | ||
1000 | ||
1001 | output scan_out; | |
1002 | ||
1003 | ||
1004 | ||
1005 | ||
1006 | cl_dp1_l1hdr_8x c0_0 ( | |
1007 | .l2clk(clk), | |
1008 | .pce(en), | |
1009 | .aclk(siclk), | |
1010 | .bclk(soclk), | |
1011 | .l1clk(l1clk), | |
1012 | .se(se), | |
1013 | .pce_ov(pce_ov), | |
1014 | .stop(stop), | |
1015 | .siclk_out(siclk_out), | |
1016 | .soclk_out(soclk_out) | |
1017 | ); | |
1018 | dff #(20) d0_0 ( | |
1019 | .l1clk(l1clk), | |
1020 | .siclk(siclk_out), | |
1021 | .soclk(soclk_out), | |
1022 | .d(din[19:0]), | |
1023 | .si({scan_in,so[18:0]}), | |
1024 | .so({so[18:0],scan_out}), | |
1025 | .q(dout[19:0]) | |
1026 | ); | |
1027 | ||
1028 | ||
1029 | ||
1030 | ||
1031 | ||
1032 | ||
1033 | ||
1034 | ||
1035 | ||
1036 | ||
1037 | ||
1038 | ||
1039 | ||
1040 | ||
1041 | ||
1042 | ||
1043 | ||
1044 | ||
1045 | ||
1046 | ||
1047 | endmodule | |
1048 | ||
1049 | ||
1050 | ||
1051 | ||
1052 | ||
1053 | ||
1054 | ||
1055 | ||
1056 | ||
1057 | ||
1058 | ||
1059 | ||
1060 | ||
1061 | // any PARAMS parms go into naming of macro | |
1062 | ||
1063 | module l2t_dirout_dp_msff_macro__stack_16c__width_16 ( | |
1064 | din, | |
1065 | clk, | |
1066 | en, | |
1067 | se, | |
1068 | scan_in, | |
1069 | siclk, | |
1070 | soclk, | |
1071 | pce_ov, | |
1072 | stop, | |
1073 | dout, | |
1074 | scan_out); | |
1075 | wire l1clk; | |
1076 | wire siclk_out; | |
1077 | wire soclk_out; | |
1078 | wire [14:0] so; | |
1079 | ||
1080 | input [15:0] din; | |
1081 | ||
1082 | ||
1083 | input clk; | |
1084 | input en; | |
1085 | input se; | |
1086 | input scan_in; | |
1087 | input siclk; | |
1088 | input soclk; | |
1089 | input pce_ov; | |
1090 | input stop; | |
1091 | ||
1092 | ||
1093 | ||
1094 | output [15:0] dout; | |
1095 | ||
1096 | ||
1097 | output scan_out; | |
1098 | ||
1099 | ||
1100 | ||
1101 | ||
1102 | cl_dp1_l1hdr_8x c0_0 ( | |
1103 | .l2clk(clk), | |
1104 | .pce(en), | |
1105 | .aclk(siclk), | |
1106 | .bclk(soclk), | |
1107 | .l1clk(l1clk), | |
1108 | .se(se), | |
1109 | .pce_ov(pce_ov), | |
1110 | .stop(stop), | |
1111 | .siclk_out(siclk_out), | |
1112 | .soclk_out(soclk_out) | |
1113 | ); | |
1114 | dff #(16) d0_0 ( | |
1115 | .l1clk(l1clk), | |
1116 | .siclk(siclk_out), | |
1117 | .soclk(soclk_out), | |
1118 | .d(din[15:0]), | |
1119 | .si({scan_in,so[14:0]}), | |
1120 | .so({so[14:0],scan_out}), | |
1121 | .q(dout[15:0]) | |
1122 | ); | |
1123 | ||
1124 | ||
1125 | ||
1126 | ||
1127 | ||
1128 | ||
1129 | ||
1130 | ||
1131 | ||
1132 | ||
1133 | ||
1134 | ||
1135 | ||
1136 | ||
1137 | ||
1138 | ||
1139 | ||
1140 | ||
1141 | ||
1142 | ||
1143 | endmodule | |
1144 | ||
1145 | ||
1146 | ||
1147 | ||
1148 | ||
1149 | ||
1150 | ||
1151 | ||
1152 | ||
1153 | // | |
1154 | // invert macro | |
1155 | // | |
1156 | // | |
1157 | ||
1158 | ||
1159 | ||
1160 | ||
1161 | ||
1162 | module l2t_dirout_dp_inv_macro__width_1 ( | |
1163 | din, | |
1164 | dout); | |
1165 | input [0:0] din; | |
1166 | output [0:0] dout; | |
1167 | ||
1168 | ||
1169 | ||
1170 | ||
1171 | ||
1172 | ||
1173 | inv #(1) d0_0 ( | |
1174 | .in(din[0:0]), | |
1175 | .out(dout[0:0]) | |
1176 | ); | |
1177 | ||
1178 | ||
1179 | ||
1180 | ||
1181 | ||
1182 | ||
1183 | ||
1184 | ||
1185 | ||
1186 | endmodule | |
1187 | ||
1188 | ||
1189 | ||
1190 | ||
1191 | ||
1192 | // | |
1193 | // comparator macro (output is 1 if both inputs are equal; 0 otherwise) | |
1194 | // | |
1195 | // | |
1196 | ||
1197 | ||
1198 | ||
1199 | ||
1200 | ||
1201 | module l2t_dirout_dp_cmp_macro__width_16 ( | |
1202 | din0, | |
1203 | din1, | |
1204 | dout); | |
1205 | input [15:0] din0; | |
1206 | input [15:0] din1; | |
1207 | output dout; | |
1208 | ||
1209 | ||
1210 | ||
1211 | ||
1212 | ||
1213 | ||
1214 | cmp #(16) m0_0 ( | |
1215 | .in0(din0[15:0]), | |
1216 | .in1(din1[15:0]), | |
1217 | .out(dout) | |
1218 | ); | |
1219 | ||
1220 | ||
1221 | ||
1222 | ||
1223 | ||
1224 | ||
1225 | ||
1226 | ||
1227 | ||
1228 | ||
1229 | endmodule | |
1230 | ||
1231 | ||
1232 | ||
1233 | ||
1234 | ||
1235 | // general mux macro for pass-gate and and-or muxes with/wout priority encoders | |
1236 | // also for pass-gate with decoder | |
1237 | ||
1238 | ||
1239 | ||
1240 | ||
1241 | ||
1242 | // any PARAMS parms go into naming of macro | |
1243 | ||
1244 | module l2t_dirout_dp_mux_macro__mux_aonpe__ports_2__width_1 ( | |
1245 | din0, | |
1246 | sel0, | |
1247 | din1, | |
1248 | sel1, | |
1249 | dout); | |
1250 | wire buffout0; | |
1251 | wire buffout1; | |
1252 | ||
1253 | input [0:0] din0; | |
1254 | input sel0; | |
1255 | input [0:0] din1; | |
1256 | input sel1; | |
1257 | output [0:0] dout; | |
1258 | ||
1259 | ||
1260 | ||
1261 | ||
1262 | ||
1263 | cl_dp1_muxbuff2_8x c0_0 ( | |
1264 | .in0(sel0), | |
1265 | .in1(sel1), | |
1266 | .out0(buffout0), | |
1267 | .out1(buffout1) | |
1268 | ); | |
1269 | mux2s #(1) d0_0 ( | |
1270 | .sel0(buffout0), | |
1271 | .sel1(buffout1), | |
1272 | .in0(din0[0:0]), | |
1273 | .in1(din1[0:0]), | |
1274 | .dout(dout[0:0]) | |
1275 | ); | |
1276 | ||
1277 | ||
1278 | ||
1279 | ||
1280 | ||
1281 | ||
1282 | ||
1283 | ||
1284 | ||
1285 | ||
1286 | ||
1287 | ||
1288 | ||
1289 | endmodule | |
1290 | ||
1291 | ||
1292 | // | |
1293 | // buff macro | |
1294 | // | |
1295 | // | |
1296 | ||
1297 | ||
1298 | ||
1299 | ||
1300 | ||
1301 | module l2t_dirout_dp_buff_macro__width_3 ( | |
1302 | din, | |
1303 | dout); | |
1304 | input [2:0] din; | |
1305 | output [2:0] dout; | |
1306 | ||
1307 | ||
1308 | ||
1309 | ||
1310 | ||
1311 | ||
1312 | buff #(3) d0_0 ( | |
1313 | .in(din[2:0]), | |
1314 | .out(dout[2:0]) | |
1315 | ); | |
1316 | ||
1317 | ||
1318 | ||
1319 | ||
1320 | ||
1321 | ||
1322 | ||
1323 | ||
1324 | endmodule | |
1325 | ||
1326 | ||
1327 | ||
1328 |