Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / design / sys / iop / spc / lsu / rtl / lsu_dcd_dp.v
CommitLineData
86530b38
AT
1// ========== Copyright Header Begin ==========================================
2//
3// OpenSPARC T2 Processor File: lsu_dcd_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 ============================================
35module lsu_dcd_dp (
36 l2clk,
37 scan_in,
38 tcu_pce_ov,
39 tcu_scan_en,
40 spc_aclk,
41 spc_bclk,
42 scan_out,
43 dca_ld_data_b,
44 dac_byte_one_extend,
45 dac_byte_sel_data,
46 dac_swap7_byte0_l,
47 dac_swap7_byte3_l,
48 dac_swap7_byte4_l,
49 dac_swap7_byte7_l,
50 dac_swap6_byte1_l,
51 dac_swap6_byte2_l,
52 dac_swap6_byte5_l,
53 dac_swap6_byte6_l,
54 dac_swap5_byte1_l,
55 dac_swap5_byte2_l,
56 dac_swap5_byte5_l,
57 dac_swap5_byte6_l,
58 dac_swap4_byte0_l,
59 dac_swap4_byte3_l,
60 dac_swap4_byte4_l,
61 dac_swap4_byte7_l,
62 dac_swap3_byte0_r,
63 dac_swap3_byte3_r,
64 dac_swap3_byte4_r,
65 dac_swap3_byte7_r,
66 dac_swap2_byte1_r,
67 dac_swap2_byte2_r,
68 dac_swap2_byte5_r,
69 dac_swap2_byte6_r,
70 dac_swap1_byte0_r,
71 dac_swap1_byte1_r,
72 dac_swap1_byte2_r,
73 dac_swap1_byte3_r,
74 dac_swap1_byte4_r,
75 dac_swap1_byte5_r,
76 dac_swap1_byte6_r,
77 dac_swap1_byte7_r,
78 dac_swap0_byte0_r,
79 dac_swap0_byte1_r,
80 dac_swap0_byte2_r,
81 dac_swap0_byte3_r,
82 dac_swap0_byte4_r,
83 dac_swap0_byte5_r,
84 dac_swap0_byte6_r,
85 dac_swap0_byte7_r,
86 lsu_exu_ld_data_b,
87 lsu_fgu_fld_data_b,
88 bist_cmp_data,
89 dcd_dca_data_compare,
90 dcs_memref_m,
91 lsu_mmu_va_m,
92 lsu_mmu_va_b);
93wire se;
94wire pce_ov;
95wire stop;
96wire siclk;
97wire soclk;
98wire clk;
99wire [63:0] prealign_load_data;
100wire [7:0] byte7;
101wire [7:0] byte6;
102wire [7:0] byte5;
103wire [7:0] byte4;
104wire [7:0] byte3;
105wire [7:0] byte2;
106wire [7:0] byte1;
107wire [7:0] byte0;
108wire [7:0] align_byte0;
109wire [63:0] final_data;
110wire [7:0] align_byte1;
111wire [7:0] align_byte2;
112wire [7:0] align_byte3;
113wire [7:0] align_byte4;
114wire [7:0] align_byte5;
115wire [7:0] align_byte6;
116wire [7:0] align_byte7;
117wire [1:0] data_compare;
118wire [7:0] bist_cmp_data_local;
119wire mmu_va_b_lat_scanin;
120wire mmu_va_b_lat_scanout;
121wire [47:0] va_b;
122
123
124// globals
125input l2clk;
126input scan_in;
127input tcu_pce_ov; // scan signals
128input tcu_scan_en;
129input spc_aclk;
130input spc_bclk;
131output scan_out;
132
133// Data sources
134input [63:0] dca_ld_data_b; // data from dcache array
135
136// Sign/zero extend controls
137input [7:1] dac_byte_one_extend;
138input [7:1] dac_byte_sel_data;
139
140// Byte alignment controls
141input dac_swap7_byte0_l;
142input dac_swap7_byte3_l;
143input dac_swap7_byte4_l;
144input dac_swap7_byte7_l;
145input dac_swap6_byte1_l;
146input dac_swap6_byte2_l;
147input dac_swap6_byte5_l;
148input dac_swap6_byte6_l;
149input dac_swap5_byte1_l;
150input dac_swap5_byte2_l;
151input dac_swap5_byte5_l;
152input dac_swap5_byte6_l;
153input dac_swap4_byte0_l;
154input dac_swap4_byte3_l;
155input dac_swap4_byte4_l;
156input dac_swap4_byte7_l;
157
158input dac_swap3_byte0_r;
159input dac_swap3_byte3_r;
160input dac_swap3_byte4_r;
161input dac_swap3_byte7_r;
162input dac_swap2_byte1_r;
163input dac_swap2_byte2_r;
164input dac_swap2_byte5_r;
165input dac_swap2_byte6_r;
166input dac_swap1_byte0_r;
167input dac_swap1_byte1_r;
168input dac_swap1_byte2_r;
169input dac_swap1_byte3_r;
170input dac_swap1_byte4_r;
171input dac_swap1_byte5_r;
172input dac_swap1_byte6_r;
173input dac_swap1_byte7_r;
174input dac_swap0_byte0_r;
175input dac_swap0_byte1_r;
176input dac_swap0_byte2_r;
177input dac_swap0_byte3_r;
178input dac_swap0_byte4_r;
179input dac_swap0_byte5_r;
180input dac_swap0_byte6_r;
181input dac_swap0_byte7_r;
182
183// Outputs to exu and fgu
184output [63:0] lsu_exu_ld_data_b;
185output [63:0] lsu_fgu_fld_data_b;
186
187input [7:0] bist_cmp_data;
188output [1:0] dcd_dca_data_compare;
189
190input dcs_memref_m;
191input [47:0] lsu_mmu_va_m;
192output [47:0] lsu_mmu_va_b;
193
194assign se = tcu_scan_en;
195assign pce_ov = tcu_pce_ov;
196assign stop = 1'b0;
197assign siclk = spc_aclk;
198assign soclk = spc_bclk;
199assign clk = l2clk;
200
201
202assign prealign_load_data[63:0] = dca_ld_data_b[63:0];
203
204//=========================================================================================
205// Alignment of Load Return Data
206//=========================================================================================
207
208// All data returning to the register files must be aligned
209// and sign extended here. Formatting occurs in two steps.
210// 1st: Swizzle the bytes based on endianess, size, and address.
211// 2nd: Pass the data or replace with zero/one extention.
212// In the layout, bits should be interleaved to (1) minmize wire
213// usage and (2) keep msb's close to the dac block.
214
215// Because the fgu is flipped in the spc floorplan, it's alignment muxes are separate
216// so that the mux ordering matches the fgu bit ordering.
217
218assign byte7[7:0] = prealign_load_data[63:56];
219assign byte6[7:0] = prealign_load_data[55:48];
220assign byte5[7:0] = prealign_load_data[47:40];
221assign byte4[7:0] = prealign_load_data[39:32];
222assign byte3[7:0] = prealign_load_data[31:24];
223assign byte2[7:0] = prealign_load_data[23:16];
224assign byte1[7:0] = prealign_load_data[15:8];
225assign byte0[7:0] = prealign_load_data[7:0];
226
227// INT muxes
228
229// Byte 0.
230lsu_dcd_dp_mux_macro__buffsel_none__mux_aonpe__ports_8__stack_8c__width_8 i_swap_byte0 (
231 .din0 (byte0[7:0]),
232 .din1 (byte1[7:0]),
233 .din2 (byte2[7:0]),
234 .din3 (byte3[7:0]),
235 .din4 (byte4[7:0]),
236 .din5 (byte5[7:0]),
237 .din6 (byte6[7:0]),
238 .din7 (byte7[7:0]),
239 .sel0 (dac_swap0_byte0_r),
240 .sel1 (dac_swap0_byte1_r),
241 .sel2 (dac_swap0_byte2_r),
242 .sel3 (dac_swap0_byte3_r),
243 .sel4 (dac_swap0_byte4_r),
244 .sel5 (dac_swap0_byte5_r),
245 .sel6 (dac_swap0_byte6_r),
246 .sel7 (dac_swap0_byte7_r),
247 .dout (align_byte0[7:0])
248);
249
250// No sign-extension for byte0. It always has "real" data.
251assign final_data[7:0] = align_byte0[7:0];
252
253
254// Byte 1.
255lsu_dcd_dp_mux_macro__buffsel_none__mux_aonpe__ports_8__stack_8c__width_8 i_swap_byte1 (
256 .din0 (byte0[7:0]),
257 .din1 (byte1[7:0]),
258 .din2 (byte2[7:0]),
259 .din3 (byte3[7:0]),
260 .din4 (byte4[7:0]),
261 .din5 (byte5[7:0]),
262 .din6 (byte6[7:0]),
263 .din7 (byte7[7:0]),
264 .sel0 (dac_swap1_byte0_r),
265 .sel1 (dac_swap1_byte1_r),
266 .sel2 (dac_swap1_byte2_r),
267 .sel3 (dac_swap1_byte3_r),
268 .sel4 (dac_swap1_byte4_r),
269 .sel5 (dac_swap1_byte5_r),
270 .sel6 (dac_swap1_byte6_r),
271 .sel7 (dac_swap1_byte7_r),
272 .dout (align_byte1[7:0])
273);
274
275lsu_dcd_dp_mux_macro__buffsel_none__mux_aonpe__ports_2__stack_8c__width_8 sext_byte1 (
276 .din0 (align_byte1[7:0]),
277 .din1 (8'hff),
278 .sel0 (dac_byte_sel_data[1]),
279 .sel1 (dac_byte_one_extend[1]),
280 .dout (final_data[15:8])
281);
282
283
284// Byte 2.
285lsu_dcd_dp_mux_macro__buffsel_none__mux_aonpe__ports_4__stack_8c__width_8 i_swap_byte2 (
286 .din0 (byte1[7:0]),
287 .din1 (byte2[7:0]),
288 .din2 (byte5[7:0]),
289 .din3 (byte6[7:0]),
290 .sel0 (dac_swap2_byte1_r),
291 .sel1 (dac_swap2_byte2_r),
292 .sel2 (dac_swap2_byte5_r),
293 .sel3 (dac_swap2_byte6_r),
294 .dout (align_byte2[7:0])
295);
296
297lsu_dcd_dp_mux_macro__buffsel_none__mux_aonpe__ports_2__stack_8c__width_8 sext_byte2 (
298 .din0 (align_byte2[7:0]),
299 .din1 (8'hff),
300 .sel0 (dac_byte_sel_data[2]),
301 .sel1 (dac_byte_one_extend[2]),
302 .dout (final_data[23:16])
303);
304
305
306// Byte 3.
307lsu_dcd_dp_mux_macro__buffsel_none__mux_aonpe__ports_4__stack_8c__width_8 i_swap_byte3 (
308 .din0 (byte0[7:0]),
309 .din1 (byte3[7:0]),
310 .din2 (byte4[7:0]),
311 .din3 (byte7[7:0]),
312 .sel0 (dac_swap3_byte0_r),
313 .sel1 (dac_swap3_byte3_r),
314 .sel2 (dac_swap3_byte4_r),
315 .sel3 (dac_swap3_byte7_r),
316 .dout (align_byte3[7:0])
317);
318
319lsu_dcd_dp_mux_macro__buffsel_none__mux_aonpe__ports_2__stack_8c__width_8 sext_byte3 (
320 .din0 (align_byte3[7:0]),
321 .din1 (8'hff),
322 .sel0 (dac_byte_sel_data[3]),
323 .sel1 (dac_byte_one_extend[3]),
324 .dout (final_data[31:24])
325);
326
327
328// Byte 4.
329lsu_dcd_dp_mux_macro__buffsel_none__mux_aonpe__ports_4__stack_8c__width_8 i_swap_byte4 (
330 .din0 (byte0[7:0]),
331 .din1 (byte3[7:0]),
332 .din2 (byte4[7:0]),
333 .din3 (byte7[7:0]),
334 .sel0 (dac_swap4_byte0_l),
335 .sel1 (dac_swap4_byte3_l),
336 .sel2 (dac_swap4_byte4_l),
337 .sel3 (dac_swap4_byte7_l),
338 .dout (align_byte4[7:0])
339);
340
341lsu_dcd_dp_mux_macro__buffsel_none__mux_aonpe__ports_2__stack_8c__width_8 sext_byte4 (
342 .din0 (align_byte4[7:0]),
343 .din1 (8'hff),
344 .sel0 (dac_byte_sel_data[4]),
345 .sel1 (dac_byte_one_extend[4]),
346 .dout (final_data[39:32])
347);
348
349
350// Byte 5.
351lsu_dcd_dp_mux_macro__buffsel_none__mux_aonpe__ports_4__stack_8c__width_8 i_swap_byte5 (
352 .din0 (byte1[7:0]),
353 .din1 (byte2[7:0]),
354 .din2 (byte5[7:0]),
355 .din3 (byte6[7:0]),
356 .sel0 (dac_swap5_byte1_l),
357 .sel1 (dac_swap5_byte2_l),
358 .sel2 (dac_swap5_byte5_l),
359 .sel3 (dac_swap5_byte6_l),
360 .dout (align_byte5[7:0])
361);
362
363lsu_dcd_dp_mux_macro__buffsel_none__mux_aonpe__ports_2__stack_8c__width_8 sext_byte5 (
364 .din0 (align_byte5[7:0]),
365 .din1 (8'hff),
366 .sel0 (dac_byte_sel_data[5]),
367 .sel1 (dac_byte_one_extend[5]),
368 .dout (final_data[47:40])
369);
370
371
372// Byte 6.
373lsu_dcd_dp_mux_macro__buffsel_none__mux_aonpe__ports_4__stack_8c__width_8 i_swap_byte6 (
374 .din0 (byte1[7:0]),
375 .din1 (byte2[7:0]),
376 .din2 (byte5[7:0]),
377 .din3 (byte6[7:0]),
378 .sel0 (dac_swap6_byte1_l),
379 .sel1 (dac_swap6_byte2_l),
380 .sel2 (dac_swap6_byte5_l),
381 .sel3 (dac_swap6_byte6_l),
382 .dout (align_byte6[7:0])
383);
384
385lsu_dcd_dp_mux_macro__buffsel_none__mux_aonpe__ports_2__stack_8c__width_8 sext_byte6 (
386 .din0 (align_byte6[7:0]),
387 .din1 (8'hff),
388 .sel0 (dac_byte_sel_data[6]),
389 .sel1 (dac_byte_one_extend[6]),
390 .dout (final_data[55:48])
391);
392
393
394// Byte 7.
395lsu_dcd_dp_mux_macro__buffsel_none__mux_aonpe__ports_4__stack_8c__width_8 i_swap_byte7 (
396 .din0 (byte0[7:0]),
397 .din1 (byte3[7:0]),
398 .din2 (byte4[7:0]),
399 .din3 (byte7[7:0]),
400 .sel0 (dac_swap7_byte0_l),
401 .sel1 (dac_swap7_byte3_l),
402 .sel2 (dac_swap7_byte4_l),
403 .sel3 (dac_swap7_byte7_l),
404 .dout (align_byte7[7:0])
405);
406
407lsu_dcd_dp_mux_macro__buffsel_none__mux_aonpe__ports_2__stack_8c__width_8 sext_byte7 (
408 .din0 (align_byte7[7:0]),
409 .din1 (8'hff),
410 .sel0 (dac_byte_sel_data[7]),
411 .sel1 (dac_byte_one_extend[7]),
412 .dout (final_data[63:56])
413);
414
415
416lsu_dcd_dp_buff_macro__dbuff_32x__rep_1__width_64 exu_data (
417 .din (final_data[63:0]),
418 .dout (lsu_exu_ld_data_b[63:0])
419);
420
421lsu_dcd_dp_buff_macro__dbuff_32x__rep_1__width_64 fgu_data (
422 .din ({align_byte7[7:0],align_byte6[7:0],align_byte5[7:0],align_byte4[7:0],
423 align_byte3[7:0],align_byte2[7:0],align_byte1[7:0],align_byte0[7:0]}),
424 .dout (lsu_fgu_fld_data_b[63:0])
425);
426
427///////////
428// BIST
429
430lsu_dcd_dp_buff_macro__width_10 cmp_buff (
431 .din ({ data_compare[1:0],bist_cmp_data[7:0]}),
432 .dout ({dcd_dca_data_compare[1:0],bist_cmp_data_local[7:0]})
433);
434
435lsu_dcd_dp_cmp_macro__width_32 bist_cmp0 (
436 .din0 ({4{bist_cmp_data_local[7:0]}}),
437 .din1 (dca_ld_data_b[63:32]),
438 .dout (data_compare[0])
439);
440
441lsu_dcd_dp_cmp_macro__width_32 bist_cmp1 (
442 .din0 ({4{bist_cmp_data_local[7:0]}}),
443 .din1 (dca_ld_data_b[31:0]),
444 .dout (data_compare[1])
445);
446
447//////////////////////////////
448// Flop for VA to send to MMU
449lsu_dcd_dp_msff_macro__minbuff_1__stack_48c__width_48 mmu_va_b_lat (
450 .scan_in(mmu_va_b_lat_scanin),
451 .scan_out(mmu_va_b_lat_scanout),
452 .en (dcs_memref_m),
453 .din (lsu_mmu_va_m[47:0]),
454 .dout (va_b[47:0]),
455 .clk(clk),
456 .se(se),
457 .siclk(siclk),
458 .soclk(soclk),
459 .pce_ov(pce_ov),
460 .stop(stop)
461);
462lsu_dcd_dp_buff_macro__dbuff_32x__stack_48c__width_48 mmu_va_b_buf (
463 .din (va_b[47:0]),
464 .dout (lsu_mmu_va_b[47:0])
465);
466
467
468// fixscan start:
469assign mmu_va_b_lat_scanin = scan_in ;
470assign scan_out = mmu_va_b_lat_scanout ;
471// fixscan end:
472endmodule
473
474
475// general mux macro for pass-gate and and-or muxes with/wout priority encoders
476// also for pass-gate with decoder
477
478
479
480
481
482// any PARAMS parms go into naming of macro
483
484module lsu_dcd_dp_mux_macro__buffsel_none__mux_aonpe__ports_8__stack_8c__width_8 (
485 din0,
486 sel0,
487 din1,
488 sel1,
489 din2,
490 sel2,
491 din3,
492 sel3,
493 din4,
494 sel4,
495 din5,
496 sel5,
497 din6,
498 sel6,
499 din7,
500 sel7,
501 dout);
502 input [7:0] din0;
503 input sel0;
504 input [7:0] din1;
505 input sel1;
506 input [7:0] din2;
507 input sel2;
508 input [7:0] din3;
509 input sel3;
510 input [7:0] din4;
511 input sel4;
512 input [7:0] din5;
513 input sel5;
514 input [7:0] din6;
515 input sel6;
516 input [7:0] din7;
517 input sel7;
518 output [7:0] dout;
519
520
521
522
523
524mux8s #(8) d0_0 (
525 .sel0(sel0),
526 .sel1(sel1),
527 .sel2(sel2),
528 .sel3(sel3),
529 .sel4(sel4),
530 .sel5(sel5),
531 .sel6(sel6),
532 .sel7(sel7),
533 .in0(din0[7:0]),
534 .in1(din1[7:0]),
535 .in2(din2[7:0]),
536 .in3(din3[7:0]),
537 .in4(din4[7:0]),
538 .in5(din5[7:0]),
539 .in6(din6[7:0]),
540 .in7(din7[7:0]),
541.dout(dout[7:0])
542);
543
544
545
546
547
548
549
550
551
552
553
554
555
556endmodule
557
558
559// general mux macro for pass-gate and and-or muxes with/wout priority encoders
560// also for pass-gate with decoder
561
562
563
564
565
566// any PARAMS parms go into naming of macro
567
568module lsu_dcd_dp_mux_macro__buffsel_none__mux_aonpe__ports_2__stack_8c__width_8 (
569 din0,
570 sel0,
571 din1,
572 sel1,
573 dout);
574 input [7:0] din0;
575 input sel0;
576 input [7:0] din1;
577 input sel1;
578 output [7:0] dout;
579
580
581
582
583
584mux2s #(8) d0_0 (
585 .sel0(sel0),
586 .sel1(sel1),
587 .in0(din0[7:0]),
588 .in1(din1[7:0]),
589.dout(dout[7:0])
590);
591
592
593
594
595
596
597
598
599
600
601
602
603
604endmodule
605
606
607// general mux macro for pass-gate and and-or muxes with/wout priority encoders
608// also for pass-gate with decoder
609
610
611
612
613
614// any PARAMS parms go into naming of macro
615
616module lsu_dcd_dp_mux_macro__buffsel_none__mux_aonpe__ports_4__stack_8c__width_8 (
617 din0,
618 sel0,
619 din1,
620 sel1,
621 din2,
622 sel2,
623 din3,
624 sel3,
625 dout);
626 input [7:0] din0;
627 input sel0;
628 input [7:0] din1;
629 input sel1;
630 input [7:0] din2;
631 input sel2;
632 input [7:0] din3;
633 input sel3;
634 output [7:0] dout;
635
636
637
638
639
640mux4s #(8) d0_0 (
641 .sel0(sel0),
642 .sel1(sel1),
643 .sel2(sel2),
644 .sel3(sel3),
645 .in0(din0[7:0]),
646 .in1(din1[7:0]),
647 .in2(din2[7:0]),
648 .in3(din3[7:0]),
649.dout(dout[7:0])
650);
651
652
653
654
655
656
657
658
659
660
661
662
663
664endmodule
665
666
667//
668// buff macro
669//
670//
671
672
673
674
675
676module lsu_dcd_dp_buff_macro__dbuff_32x__rep_1__width_64 (
677 din,
678 dout);
679 input [63:0] din;
680 output [63:0] dout;
681
682
683
684
685
686
687buff #(64) d0_0 (
688.in(din[63:0]),
689.out(dout[63:0])
690);
691
692
693
694
695
696
697
698
699endmodule
700
701
702
703
704
705//
706// buff macro
707//
708//
709
710
711
712
713
714module lsu_dcd_dp_buff_macro__width_10 (
715 din,
716 dout);
717 input [9:0] din;
718 output [9:0] dout;
719
720
721
722
723
724
725buff #(10) d0_0 (
726.in(din[9:0]),
727.out(dout[9:0])
728);
729
730
731
732
733
734
735
736
737endmodule
738
739
740
741
742
743//
744// comparator macro (output is 1 if both inputs are equal; 0 otherwise)
745//
746//
747
748
749
750
751
752module lsu_dcd_dp_cmp_macro__width_32 (
753 din0,
754 din1,
755 dout);
756 input [31:0] din0;
757 input [31:0] din1;
758 output dout;
759
760
761
762
763
764
765cmp #(32) m0_0 (
766.in0(din0[31:0]),
767.in1(din1[31:0]),
768.out(dout)
769);
770
771
772
773
774
775
776
777
778
779
780endmodule
781
782
783
784
785
786
787
788
789
790// any PARAMS parms go into naming of macro
791
792module lsu_dcd_dp_msff_macro__minbuff_1__stack_48c__width_48 (
793 din,
794 clk,
795 en,
796 se,
797 scan_in,
798 siclk,
799 soclk,
800 pce_ov,
801 stop,
802 dout,
803 scan_out);
804wire l1clk;
805wire siclk_out;
806wire soclk_out;
807wire [46:0] so;
808
809 input [47:0] din;
810
811
812 input clk;
813 input en;
814 input se;
815 input scan_in;
816 input siclk;
817 input soclk;
818 input pce_ov;
819 input stop;
820
821
822
823 output [47:0] dout;
824
825
826 output scan_out;
827
828
829
830
831cl_dp1_l1hdr_8x c0_0 (
832.l2clk(clk),
833.pce(en),
834.aclk(siclk),
835.bclk(soclk),
836.l1clk(l1clk),
837 .se(se),
838 .pce_ov(pce_ov),
839 .stop(stop),
840 .siclk_out(siclk_out),
841 .soclk_out(soclk_out)
842);
843dff #(48) d0_0 (
844.l1clk(l1clk),
845.siclk(siclk_out),
846.soclk(soclk_out),
847.d(din[47:0]),
848.si({scan_in,so[46:0]}),
849.so({so[46:0],scan_out}),
850.q(dout[47:0])
851);
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872endmodule
873
874
875
876
877
878
879
880
881
882//
883// buff macro
884//
885//
886
887
888
889
890
891module lsu_dcd_dp_buff_macro__dbuff_32x__stack_48c__width_48 (
892 din,
893 dout);
894 input [47:0] din;
895 output [47:0] dout;
896
897
898
899
900
901
902buff #(48) d0_0 (
903.in(din[47:0]),
904.out(dout[47:0])
905);
906
907
908
909
910
911
912
913
914endmodule
915
916
917
918