Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / libs / n2sram / cams / n2_com_cm_64x64_cust_l / n2_com_cm_64x64_cust / rtl / n2_com_cm_64x64_cust.v
CommitLineData
86530b38
AT
1// ========== Copyright Header Begin ==========================================
2//
3// OpenSPARC T2 Processor File: n2_com_cm_64x64_cust.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 n2_com_cm_64x64_cust (
36 row_hit,
37 rd_data0,
38 rd_data1,
39 rd_data2,
40 rd_data3,
41 cam_en,
42 force_hit,
43 inv_mask0,
44 inv_mask1,
45 inv_mask2,
46 inv_mask3,
47 scan_in,
48 scan_out,
49 tcu_se_scancollar_in,
50 l2clk,
51 rd_en,
52 rw_addr0,
53 rw_addr1,
54 rw_addr2,
55 rw_addr3,
56 rst_warm_0,
57 rst_warm_1,
58 wr_en,
59 tcu_array_wr_inhibit,
60 wr_data0,
61 wr_data1,
62 wr_data2,
63 wr_data3,
64 tcu_pce_ov,
65 pce,
66 tcu_aclk,
67 tcu_bclk,
68 tcu_scan_en,
69 tcu_array_bypass);
70wire se;
71
72
73output [63:0] row_hit;
74
75output [15:0] rd_data0; // From panel0 of dcm_panel.v, BS and SR 11/18/03 Reverse Directory change
76output [15:0] rd_data1; // From panel1 of dcm_panel.v, BS and SR 11/18/03 Reverse Directory change
77output [15:0] rd_data2; // From panel2 of dcm_panel.v, BS and SR 11/18/03 Reverse Directory change
78output [15:0] rd_data3; // From panel3 of dcm_panel.v, BS and SR 11/18/03 Reverse Directory change
79
80input [3:0] cam_en;
81input [3:0] force_hit;
82
83input [7:0] inv_mask0; // To panel0 of dcm_panel.v
84input [7:0] inv_mask1; // To panel1 of dcm_panel.v
85input [7:0] inv_mask2; // To panel2 of dcm_panel.v
86input [7:0] inv_mask3; // To panel3 of dcm_panel.v
87
88input scan_in;
89output scan_out;
90input tcu_se_scancollar_in;
91
92input l2clk; // To panel0 of dcm_panel.v, ...
93
94input [3:0] rd_en ; // To panel0 of dcm_panel.v
95
96input [5:0] rw_addr0; // To panel0 of dcm_panel.v, BS and SR 11/18/03 Reverse Directory change
97input [5:0] rw_addr1; // To panel1 of dcm_panel.v, BS and SR 11/18/03 Reverse Directory change
98input [5:0] rw_addr2; // To panel2 of dcm_panel.v, BS and SR 11/18/03 Reverse Directory change
99input [5:0] rw_addr3; // To panel3 of dcm_panel.v, BS and SR 11/18/03 Reverse Directory change
100
101input rst_warm_0;
102input rst_warm_1;
103
104input [3:0] wr_en; // To panel0 of dcm_panel.v
105input tcu_array_wr_inhibit; // used to disable writes during SCAN.
106
107input [15:0] wr_data0; // To panel0 of dcm_panel.v, BS and SR 11/18/03 Reverse Directory change
108input [15:0] wr_data1; // To panel1 of dcm_panel.v, BS and SR 11/18/03 Reverse Directory change
109input [15:0] wr_data2; // To panel2 of dcm_panel.v, BS and SR 11/18/03 Reverse Directory change
110input [15:0] wr_data3; // To panel3 of dcm_panel.v, BS and SR 11/18/03 Reverse Directory change
111
112input tcu_pce_ov;
113input pce;
114input tcu_aclk;
115input tcu_bclk;
116input tcu_scan_en;
117input tcu_array_bypass; // array bypass for DFT
118
119// JDL 05/17/07
120// synopsys translate_off
121
122
123wire [63:0] lkup_hit0, lkup_hit1, lkup_hit2, lkup_hit3;
124wire [63:0] bank1_hit;
125wire [63:0] bank0_hit;
126
127
128
129// scan chain connections ////
130wire stop;
131wire [2:0] siclk;
132wire [2:0] soclk;
133//assign siclk[0] = tcu_aclk;
134//assign soclk[0] = tcu_bclk;
135//assign siclk[1] = tcu_aclk;
136//assign soclk[1] = tcu_bclk;
137//assign siclk[2] = tcu_aclk;
138//assign soclk[2] = tcu_bclk;
139wire pce_ov = tcu_pce_ov;
140assign stop = 1'b0;
141//assign pce_ov = tcu_pce_ov;
142
143 //------------------------------------------------------------------------
144 // instantiate clock headers
145 //------------------------------------------------------------------------
146wire [1:0] collar_clk;
147wire in_clk;
148wire aclk = tcu_aclk;
149wire bclk = tcu_bclk;
150assign se = tcu_se_scancollar_in; // TEMP
151
152//0in fire -message "cam_en and wr_en active at the same time" -active (cam_en[0] & wr_en[0]) -group mbist_mode
153//0in fire -message "cam_en and wr_en active at the same time" -active (cam_en[1] & wr_en[1]) -group mbist_mode
154//0in fire -message "cam_en and wr_en active at the same time" -active (cam_en[2] & wr_en[2]) -group mbist_mode
155//0in fire -message "cam_en and wr_en active at the same time" -active (cam_en[3] & wr_en[3]) -group mbist_mode
156
157
158//0in fire -message "rd_en and wr_en active at the same time" -active (rd_en[3] & wr_en[3]) -group mbist_mode
159//0in fire -message "rd_en and wr_en active at the same time" -active (rd_en[2] & wr_en[2]) -group mbist_mode
160//0in fire -message "rd_en and wr_en active at the same time" -active (rd_en[1] & wr_en[1]) -group mbist_mode
161//0in fire -message "rd_en and wr_en active at the same time" -active (rd_en[0] & wr_en[0]) -group mbist_mode
162
163cl_dp1_l1hdr_8x clk_hdr_ctrl (
164 .l2clk(l2clk),
165 .pce (pce),
166 .l1clk(collar_clk[0]),
167 .siclk_out(siclk[0]),
168 .soclk_out(soclk[0]),
169 .se(se),
170 .pce_ov(pce_ov),
171 .stop(stop),
172 .aclk(aclk),
173 .bclk(bclk)
174 );
175
176cl_dp1_l1hdr_8x clk_hdr_data (
177 .l2clk(l2clk),
178 .pce (pce),
179 .l1clk(collar_clk[1]),
180 .siclk_out(siclk[1]),
181 .soclk_out(soclk[1]),
182 .se(se),
183 .pce_ov(pce_ov),
184 .stop(stop),
185 .aclk(aclk),
186 .bclk(bclk)
187);
188
189cl_dp1_l1hdr_8x clk_hdr_inputs (
190 .l2clk(l2clk),
191 .pce (pce),
192 .l1clk(in_clk),
193 .siclk_out(siclk[2]),
194 .soclk_out(soclk[2]),
195 .se(tcu_scan_en),
196 .pce_ov(pce_ov),
197 .stop(stop),
198 .aclk(aclk),
199 .bclk(bclk)
200);
201
202//// Input Flops /////
203
204wire [15:0] wr_data0_array,wr_data0_so;
205wire [15:0] wr_data1_array,wr_data1_so;
206wire [15:0] wr_data2_array,wr_data2_so;
207wire [15:0] wr_data3_array,wr_data3_so;
208wire nc;
209wire [3:0] wr_en_array,rd_en_array,cam_en_array;
210wire [3:0] cam_en_so,wr_en_so,rd_en_so;
211wire [7:0] inv_mask0_array,inv_mask0_so;
212wire [7:0] inv_mask1_array,inv_mask1_so;
213wire [7:0] inv_mask2_array,inv_mask2_so;
214wire [7:0] inv_mask3_array,inv_mask3_so;
215wire [1:0] rst_warm_0_array,rst_warm_0_so;
216wire [1:0] rst_warm_1_array,rst_warm_1_so;
217wire [5:0] rw_addr0_array,rw_addr0_so;
218wire [5:0] rw_addr1_array,rw_addr1_so;
219wire [5:0] rw_addr2_array,rw_addr2_so;
220wire [5:0] rw_addr3_array,rw_addr3_so;
221wire [3:0] force_hit_array,force_hit_so;
222wire [140:1] q, q_l;
223
224cl_sc1_msff_8x wr_data0_so_15 ( .si(scan_in), .so(wr_data0_so[15]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data0[15]), .q(wr_data0_array[15]) );
225cl_sc1_msff_8x wr_data0_so_13 ( .si(wr_data0_so[15]), .so(wr_data0_so[13]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data0[13]), .q(wr_data0_array[13]) );
226cl_sc1_msff_8x wr_data0_so_0 ( .si(wr_data0_so[13]), .so(wr_data0_so[0]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data0[0]), .q(wr_data0_array[0]) );
227cl_sc1_msff_8x wr_data0_so_1 ( .si(wr_data0_so[0]), .so(wr_data0_so[1]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data0[1]), .q(wr_data0_array[1]) );
228cl_sc1_msff_8x wr_data0_so_2 ( .si(wr_data0_so[1]), .so(wr_data0_so[2]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data0[2]), .q(wr_data0_array[2]) );
229cl_sc1_msff_8x wr_data0_so_3 ( .si(wr_data0_so[2]), .so(wr_data0_so[3]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data0[3]), .q(wr_data0_array[3]) );
230cl_sc1_msff_8x wr_data0_so_4 ( .si(wr_data0_so[3]), .so(wr_data0_so[4]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data0[4]), .q(wr_data0_array[4]) );
231
232cl_mc1_scm_msff_lat_4x ff_cam_en_0 ( .si(wr_data0_so[4]), .so(cam_en_so[0]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(cam_en[0]), .latout(cam_en_array[0]), .q(q[1]), .q_l(q_l[1]) );
233
234cl_sc1_msff_8x wr_data0_so_5 ( .si(cam_en_so[0]), .so(wr_data0_so[5]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data0[5]), .q(wr_data0_array[5]) );
235cl_sc1_msff_8x wr_data0_so_6 ( .si(wr_data0_so[5]), .so(wr_data0_so[6]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data0[6]), .q(wr_data0_array[6]) );
236cl_sc1_msff_8x wr_data0_so_7 ( .si(wr_data0_so[6]), .so(wr_data0_so[7]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data0[7]), .q(wr_data0_array[7]) );
237cl_sc1_msff_8x wr_data0_so_8 ( .si(wr_data0_so[7]), .so(wr_data0_so[8]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data0[8]), .q(wr_data0_array[8]) );
238cl_sc1_msff_8x wr_data0_so_9 ( .si(wr_data0_so[8]), .so(wr_data0_so[9]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data0[9]), .q(wr_data0_array[9]) );
239cl_sc1_msff_8x wr_data0_so_10 ( .si(wr_data0_so[9]), .so(wr_data0_so[10]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data0[10]), .q(wr_data0_array[10]) );
240cl_sc1_msff_8x wr_data0_so_11 ( .si(wr_data0_so[10]), .so(wr_data0_so[11]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data0[11]), .q(wr_data0_array[11]) );
241cl_sc1_msff_8x wr_data0_so_12 ( .si(wr_data0_so[11]), .so(wr_data0_so[12]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data0[12]), .q(wr_data0_array[12]) );
242cl_sc1_msff_8x wr_data0_so_14 ( .si(wr_data0_so[12]), .so(wr_data0_so[14]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data0[14]), .q(wr_data0_array[14]) );
243
244cl_mc1_scm_msff_lat_4x ff_rd_en_0 ( .si(wr_data0_so[14]), .so(rd_en_so[0]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(rd_en[0]), .latout(rd_en_array[0]), .q(q[2]), .q_l(q_l[2]) );
245cl_mc1_scm_msff_lat_4x ff_wr_en_0 ( .si(rd_en_so[0]), .so(wr_en_so[0]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(wr_en[0]), .latout(wr_en_array[0]), .q(q[3]), .q_l(q_l[3]) );
246
247cl_mc1_scm_msff_lat_4x inv_mask0_so_0 ( .si(wr_en_so[0]), .so(inv_mask0_so[0]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(inv_mask0[0]), .latout(inv_mask0_array[0]), .q(q[4]), .q_l(q_l[4]) );
248cl_mc1_scm_msff_lat_4x inv_mask0_so_1 ( .si(inv_mask0_so[0]), .so(inv_mask0_so[1]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(inv_mask0[1]), .latout(inv_mask0_array[1]), .q(q[5]), .q_l(q_l[5]) );
249cl_mc1_scm_msff_lat_4x inv_mask0_so_2 ( .si(inv_mask0_so[1]), .so(inv_mask0_so[2]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(inv_mask0[2]), .latout(inv_mask0_array[2]), .q(q[6]), .q_l(q_l[6]) );
250cl_mc1_scm_msff_lat_4x inv_mask0_so_3 ( .si(inv_mask0_so[2]), .so(inv_mask0_so[3]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(inv_mask0[3]), .latout(inv_mask0_array[3]), .q(q[7]), .q_l(q_l[7]) );
251cl_mc1_scm_msff_lat_4x inv_mask0_so_4 ( .si(inv_mask0_so[3]), .so(inv_mask0_so[4]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(inv_mask0[4]), .latout(inv_mask0_array[4]), .q(q[8]), .q_l(q_l[8]) );
252cl_mc1_scm_msff_lat_4x inv_mask0_so_5 ( .si(inv_mask0_so[4]), .so(inv_mask0_so[5]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(inv_mask0[5]), .latout(inv_mask0_array[5]), .q(q[9]), .q_l(q_l[9]) );
253cl_mc1_scm_msff_lat_4x inv_mask0_so_6 ( .si(inv_mask0_so[5]), .so(inv_mask0_so[6]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(inv_mask0[6]), .latout(inv_mask0_array[6]), .q(q[10]), .q_l(q_l[10]) );
254cl_mc1_scm_msff_lat_4x inv_mask0_so_7 ( .si(inv_mask0_so[6]), .so(inv_mask0_so[7]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(inv_mask0[7]), .latout(inv_mask0_array[7]), .q(q[11]), .q_l(q_l[11]) );
255
256cl_mc1_scm_msff_lat_4x rw_addr0_so_0 ( .si(inv_mask0_so[7]), .so(rw_addr0_so[0]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(rw_addr0[0]), .latout(rw_addr0_array[0]), .q(q[12]), .q_l(q_l[12]) );
257cl_mc1_scm_msff_lat_4x rw_addr0_so_1 ( .si(rw_addr0_so[0]), .so(rw_addr0_so[1]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(rw_addr0[1]), .latout(rw_addr0_array[1]), .q(q[13]), .q_l(q_l[13]) );
258cl_mc1_scm_msff_lat_4x rw_addr0_so_2 ( .si(rw_addr0_so[1]), .so(rw_addr0_so[2]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(rw_addr0[2]), .latout(rw_addr0_array[2]), .q(q[14]), .q_l(q_l[14]) );
259cl_mc1_scm_msff_lat_4x rw_addr0_so_3 ( .si(rw_addr0_so[2]), .so(rw_addr0_so[3]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(rw_addr0[3]), .latout(rw_addr0_array[3]), .q(q[15]), .q_l(q_l[15]) );
260cl_mc1_scm_msff_lat_4x rw_addr0_so_4 ( .si(rw_addr0_so[3]), .so(rw_addr0_so[4]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(rw_addr0[4]), .latout(rw_addr0_array[4]), .q(q[16]), .q_l(q_l[16]) );
261cl_mc1_scm_msff_lat_4x rw_addr0_so_5 ( .si(rw_addr0_so[4]), .so(rw_addr0_so[5]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(rw_addr0[5]), .latout(rw_addr0_array[5]), .q(q[17]), .q_l(q_l[17]) );
262
263cl_mc1_scm_msff_lat_4x rst_warm0_0 ( .si(rw_addr0_so[5]), .so(rst_warm_0_so[0]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(rst_warm_0), .latout(rst_warm_0_array[0]), .q(q[18]), .q_l(q_l[18]) );
264cl_mc1_scm_msff_lat_4x ff_force_hit_0 ( .si(rst_warm_0_so[0]), .so(force_hit_so[0]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(force_hit[0]), .latout(force_hit_array[0]), .q(q[19]), .q_l(q_l[19]) );
265
266
267cl_sc1_msff_8x wr_data1_so_15 ( .si(force_hit_so[0]), .so(wr_data1_so[15]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data1[15]), .q(wr_data1_array[15]) );
268cl_sc1_msff_8x wr_data1_so_13 ( .si(wr_data1_so[15]), .so(wr_data1_so[13]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data1[13]), .q(wr_data1_array[13]) );
269cl_sc1_msff_8x wr_data1_so_0 ( .si(wr_data1_so[13]), .so(wr_data1_so[0]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data1[0]), .q(wr_data1_array[0]) );
270cl_sc1_msff_8x wr_data1_so_1 ( .si(wr_data1_so[0]), .so(wr_data1_so[1]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data1[1]), .q(wr_data1_array[1]) );
271cl_sc1_msff_8x wr_data1_so_2 ( .si(wr_data1_so[1]), .so(wr_data1_so[2]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data1[2]), .q(wr_data1_array[2]) );
272cl_sc1_msff_8x wr_data1_so_3 ( .si(wr_data1_so[2]), .so(wr_data1_so[3]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data1[3]), .q(wr_data1_array[3]) );
273cl_sc1_msff_8x wr_data1_so_4 ( .si(wr_data1_so[3]), .so(wr_data1_so[4]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data1[4]), .q(wr_data1_array[4]) );
274
275cl_mc1_scm_msff_lat_4x ff_cam_en_1 ( .si(wr_data1_so[4]), .so(cam_en_so[1]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(cam_en[1]), .latout(cam_en_array[1]), .q(q[20]), .q_l(q_l[20]) );
276
277cl_sc1_msff_8x wr_data1_so_5 ( .si(cam_en_so[1]), .so(wr_data1_so[5]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data1[5]), .q(wr_data1_array[5]) );
278cl_sc1_msff_8x wr_data1_so_6 ( .si(wr_data1_so[5]), .so(wr_data1_so[6]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data1[6]), .q(wr_data1_array[6]) );
279cl_sc1_msff_8x wr_data1_so_7 ( .si(wr_data1_so[6]), .so(wr_data1_so[7]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data1[7]), .q(wr_data1_array[7]) );
280cl_sc1_msff_8x wr_data1_so_8 ( .si(wr_data1_so[7]), .so(wr_data1_so[8]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data1[8]), .q(wr_data1_array[8]) );
281cl_sc1_msff_8x wr_data1_so_9 ( .si(wr_data1_so[8]), .so(wr_data1_so[9]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data1[9]), .q(wr_data1_array[9]) );
282cl_sc1_msff_8x wr_data1_so_10 ( .si(wr_data1_so[9]), .so(wr_data1_so[10]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data1[10]), .q(wr_data1_array[10]) );
283cl_sc1_msff_8x wr_data1_so_11 ( .si(wr_data1_so[10]), .so(wr_data1_so[11]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data1[11]), .q(wr_data1_array[11]) );
284cl_sc1_msff_8x wr_data1_so_12 ( .si(wr_data1_so[11]), .so(wr_data1_so[12]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data1[12]), .q(wr_data1_array[12]) );
285cl_sc1_msff_8x wr_data1_so_14 ( .si(wr_data1_so[12]), .so(wr_data1_so[14]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data1[14]), .q(wr_data1_array[14]) );
286
287cl_mc1_scm_msff_lat_4x ff_rd_en_1 ( .si(wr_data1_so[14]), .so(rd_en_so[1]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(rd_en[1]), .latout(rd_en_array[1]), .q(q[21]), .q_l(q_l[21]) );
288cl_mc1_scm_msff_lat_4x ff_wr_en_1 ( .si(rd_en_so[1]), .so(wr_en_so[1]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(wr_en[1]), .latout(wr_en_array[1]), .q(q[22]), .q_l(q_l[22]) );
289
290cl_mc1_scm_msff_lat_4x inv_mask1_so_0 ( .si(wr_en_so[1]), .so(inv_mask1_so[0]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(inv_mask1[0]), .latout(inv_mask1_array[0]), .q(q[23]), .q_l(q_l[23]) );
291cl_mc1_scm_msff_lat_4x inv_mask1_so_1 ( .si(inv_mask1_so[0]), .so(inv_mask1_so[1]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(inv_mask1[1]), .latout(inv_mask1_array[1]), .q(q[24]), .q_l(q_l[24]) );
292cl_mc1_scm_msff_lat_4x inv_mask1_so_2 ( .si(inv_mask1_so[1]), .so(inv_mask1_so[2]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(inv_mask1[2]), .latout(inv_mask1_array[2]), .q(q[25]), .q_l(q_l[25]) );
293cl_mc1_scm_msff_lat_4x inv_mask1_so_3 ( .si(inv_mask1_so[2]), .so(inv_mask1_so[3]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(inv_mask1[3]), .latout(inv_mask1_array[3]), .q(q[26]), .q_l(q_l[26]) );
294cl_mc1_scm_msff_lat_4x inv_mask1_so_4 ( .si(inv_mask1_so[3]), .so(inv_mask1_so[4]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(inv_mask1[4]), .latout(inv_mask1_array[4]), .q(q[27]), .q_l(q_l[27]) );
295cl_mc1_scm_msff_lat_4x inv_mask1_so_5 ( .si(inv_mask1_so[4]), .so(inv_mask1_so[5]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(inv_mask1[5]), .latout(inv_mask1_array[5]), .q(q[28]), .q_l(q_l[28]) );
296cl_mc1_scm_msff_lat_4x inv_mask1_so_6 ( .si(inv_mask1_so[5]), .so(inv_mask1_so[6]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(inv_mask1[6]), .latout(inv_mask1_array[6]), .q(q[29]), .q_l(q_l[29]) );
297cl_mc1_scm_msff_lat_4x inv_mask1_so_7 ( .si(inv_mask1_so[6]), .so(inv_mask1_so[7]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(inv_mask1[7]), .latout(inv_mask1_array[7]), .q(q[30]), .q_l(q_l[30]) );
298
299cl_mc1_scm_msff_lat_4x rw_addr1_so_0 ( .si(inv_mask1_so[7]), .so(rw_addr1_so[0]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(rw_addr1[0]), .latout(rw_addr1_array[0]), .q(q[31]), .q_l(q_l[31]) );
300cl_mc1_scm_msff_lat_4x rw_addr1_so_1 ( .si(rw_addr1_so[0]), .so(rw_addr1_so[1]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(rw_addr1[1]), .latout(rw_addr1_array[1]), .q(q[32]), .q_l(q_l[32]) );
301cl_mc1_scm_msff_lat_4x rw_addr1_so_2 ( .si(rw_addr1_so[1]), .so(rw_addr1_so[2]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(rw_addr1[2]), .latout(rw_addr1_array[2]), .q(q[33]), .q_l(q_l[33]) );
302cl_mc1_scm_msff_lat_4x rw_addr1_so_3 ( .si(rw_addr1_so[2]), .so(rw_addr1_so[3]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(rw_addr1[3]), .latout(rw_addr1_array[3]), .q(q[34]), .q_l(q_l[34]) );
303cl_mc1_scm_msff_lat_4x rw_addr1_so_4 ( .si(rw_addr1_so[3]), .so(rw_addr1_so[4]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(rw_addr1[4]), .latout(rw_addr1_array[4]), .q(q[35]), .q_l(q_l[35]) );
304cl_mc1_scm_msff_lat_4x rw_addr1_so_5 ( .si(rw_addr1_so[4]), .so(rw_addr1_so[5]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(rw_addr1[5]), .latout(rw_addr1_array[5]), .q(q[36]), .q_l(q_l[36]) );
305
306cl_mc1_scm_msff_lat_4x rst_warm0_1 ( .si(rw_addr1_so[5]), .so(rst_warm_0_so[1]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(rst_warm_0), .latout(rst_warm_0_array[1]), .q(q[37]), .q_l(q_l[37]) );
307cl_mc1_scm_msff_lat_4x ff_force_hit_1 ( .si(rst_warm_0_so[1]), .so(force_hit_so[1]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(force_hit[1]), .latout(force_hit_array[1]), .q(q[38]), .q_l(q_l[38]) );
308
309
310cl_sc1_msff_8x wr_data2_so_15 ( .si(force_hit_so[1]), .so(wr_data2_so[15]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data2[15]), .q(wr_data2_array[15]) );
311cl_sc1_msff_8x wr_data2_so_13 ( .si(wr_data2_so[15]), .so(wr_data2_so[13]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data2[13]), .q(wr_data2_array[13]) );
312cl_sc1_msff_8x wr_data2_so_0 ( .si(wr_data2_so[13]), .so(wr_data2_so[0]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data2[0]), .q(wr_data2_array[0]) );
313cl_sc1_msff_8x wr_data2_so_1 ( .si(wr_data2_so[0]), .so(wr_data2_so[1]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data2[1]), .q(wr_data2_array[1]) );
314cl_sc1_msff_8x wr_data2_so_2 ( .si(wr_data2_so[1]), .so(wr_data2_so[2]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data2[2]), .q(wr_data2_array[2]) );
315cl_sc1_msff_8x wr_data2_so_3 ( .si(wr_data2_so[2]), .so(wr_data2_so[3]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data2[3]), .q(wr_data2_array[3]) );
316cl_sc1_msff_8x wr_data2_so_4 ( .si(wr_data2_so[3]), .so(wr_data2_so[4]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data2[4]), .q(wr_data2_array[4]) );
317
318cl_mc1_scm_msff_lat_4x ff_cam_en_2 ( .si(wr_data2_so[4]), .so(cam_en_so[2]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(cam_en[2]), .latout(cam_en_array[2]), .q(q[39]), .q_l(q_l[39]) );
319
320cl_sc1_msff_8x wr_data2_so_5 ( .si(cam_en_so[2]), .so(wr_data2_so[5]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data2[5]), .q(wr_data2_array[5]) );
321cl_sc1_msff_8x wr_data2_so_6 ( .si(wr_data2_so[5]), .so(wr_data2_so[6]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data2[6]), .q(wr_data2_array[6]) );
322cl_sc1_msff_8x wr_data2_so_7 ( .si(wr_data2_so[6]), .so(wr_data2_so[7]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data2[7]), .q(wr_data2_array[7]) );
323cl_sc1_msff_8x wr_data2_so_8 ( .si(wr_data2_so[7]), .so(wr_data2_so[8]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data2[8]), .q(wr_data2_array[8]) );
324cl_sc1_msff_8x wr_data2_so_9 ( .si(wr_data2_so[8]), .so(wr_data2_so[9]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data2[9]), .q(wr_data2_array[9]) );
325cl_sc1_msff_8x wr_data2_so_10 ( .si(wr_data2_so[9]), .so(wr_data2_so[10]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data2[10]), .q(wr_data2_array[10]) );
326cl_sc1_msff_8x wr_data2_so_11 ( .si(wr_data2_so[10]), .so(wr_data2_so[11]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data2[11]), .q(wr_data2_array[11]) );
327cl_sc1_msff_8x wr_data2_so_12 ( .si(wr_data2_so[11]), .so(wr_data2_so[12]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data2[12]), .q(wr_data2_array[12]) );
328cl_sc1_msff_8x wr_data2_so_14 ( .si(wr_data2_so[12]), .so(wr_data2_so[14]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data2[14]), .q(wr_data2_array[14]) );
329
330cl_mc1_scm_msff_lat_4x ff_rd_en_2 ( .si(wr_data2_so[14]), .so(rd_en_so[2]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(rd_en[2]), .latout(rd_en_array[2]), .q(q[40]), .q_l(q_l[40]) );
331cl_mc1_scm_msff_lat_4x ff_wr_en_2 ( .si(rd_en_so[2]), .so(wr_en_so[2]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(wr_en[2]), .latout(wr_en_array[2]), .q(q[41]), .q_l(q_l[41]) );
332
333cl_mc1_scm_msff_lat_4x inv_mask2_so_0 ( .si(wr_en_so[2]), .so(inv_mask2_so[0]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(inv_mask2[0]), .latout(inv_mask2_array[0]), .q(q[42]), .q_l(q_l[42]) );
334cl_mc1_scm_msff_lat_4x inv_mask2_so_1 ( .si(inv_mask2_so[0]), .so(inv_mask2_so[1]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(inv_mask2[1]), .latout(inv_mask2_array[1]), .q(q[43]), .q_l(q_l[43]) );
335cl_mc1_scm_msff_lat_4x inv_mask2_so_2 ( .si(inv_mask2_so[1]), .so(inv_mask2_so[2]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(inv_mask2[2]), .latout(inv_mask2_array[2]), .q(q[44]), .q_l(q_l[44]) );
336cl_mc1_scm_msff_lat_4x inv_mask2_so_3 ( .si(inv_mask2_so[2]), .so(inv_mask2_so[3]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(inv_mask2[3]), .latout(inv_mask2_array[3]), .q(q[45]), .q_l(q_l[45]) );
337cl_mc1_scm_msff_lat_4x inv_mask2_so_4 ( .si(inv_mask2_so[3]), .so(inv_mask2_so[4]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(inv_mask2[4]), .latout(inv_mask2_array[4]), .q(q[46]), .q_l(q_l[46]) );
338cl_mc1_scm_msff_lat_4x inv_mask2_so_5 ( .si(inv_mask2_so[4]), .so(inv_mask2_so[5]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(inv_mask2[5]), .latout(inv_mask2_array[5]), .q(q[47]), .q_l(q_l[47]) );
339cl_mc1_scm_msff_lat_4x inv_mask2_so_6 ( .si(inv_mask2_so[5]), .so(inv_mask2_so[6]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(inv_mask2[6]), .latout(inv_mask2_array[6]), .q(q[48]), .q_l(q_l[48]) );
340cl_mc1_scm_msff_lat_4x inv_mask2_so_7 ( .si(inv_mask2_so[6]), .so(inv_mask2_so[7]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(inv_mask2[7]), .latout(inv_mask2_array[7]), .q(q[49]), .q_l(q_l[49]) );
341
342cl_mc1_scm_msff_lat_4x rw_addr2_so_0 ( .si(inv_mask2_so[7]), .so(rw_addr2_so[0]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(rw_addr2[0]), .latout(rw_addr2_array[0]), .q(q[50]), .q_l(q_l[50]) );
343cl_mc1_scm_msff_lat_4x rw_addr2_so_1 ( .si(rw_addr2_so[0]), .so(rw_addr2_so[1]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(rw_addr2[1]), .latout(rw_addr2_array[1]), .q(q[51]), .q_l(q_l[51]) );
344cl_mc1_scm_msff_lat_4x rw_addr2_so_2 ( .si(rw_addr2_so[1]), .so(rw_addr2_so[2]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(rw_addr2[2]), .latout(rw_addr2_array[2]), .q(q[52]), .q_l(q_l[52]) );
345cl_mc1_scm_msff_lat_4x rw_addr2_so_3 ( .si(rw_addr2_so[2]), .so(rw_addr2_so[3]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(rw_addr2[3]), .latout(rw_addr2_array[3]), .q(q[53]), .q_l(q_l[53]) );
346cl_mc1_scm_msff_lat_4x rw_addr2_so_4 ( .si(rw_addr2_so[3]), .so(rw_addr2_so[4]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(rw_addr2[4]), .latout(rw_addr2_array[4]), .q(q[54]), .q_l(q_l[54]) );
347cl_mc1_scm_msff_lat_4x rw_addr2_so_5 ( .si(rw_addr2_so[4]), .so(rw_addr2_so[5]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(rw_addr2[5]), .latout(rw_addr2_array[5]), .q(q[55]), .q_l(q_l[55]) );
348
349cl_mc1_scm_msff_lat_4x rst_warm1_0 ( .si(rw_addr2_so[5]), .so(rst_warm_1_so[0]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(rst_warm_1), .latout(rst_warm_1_array[0]), .q(q[56]), .q_l(q_l[56]) );
350cl_mc1_scm_msff_lat_4x ff_force_hit_2 ( .si(rst_warm_1_so[0]), .so(force_hit_so[2]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(force_hit[2]), .latout(force_hit_array[2]), .q(q[57]), .q_l(q_l[57]) );
351
352
353cl_sc1_msff_8x wr_data3_so_15 ( .si(force_hit_so[2]), .so(wr_data3_so[15]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data3[15]), .q(wr_data3_array[15]) );
354cl_sc1_msff_8x wr_data3_so_13 ( .si(wr_data3_so[15]), .so(wr_data3_so[13]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data3[13]), .q(wr_data3_array[13]) );
355cl_sc1_msff_8x wr_data3_so_0 ( .si(wr_data3_so[13]), .so(wr_data3_so[0]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data3[0]), .q(wr_data3_array[0]) );
356cl_sc1_msff_8x wr_data3_so_1 ( .si(wr_data3_so[0]), .so(wr_data3_so[1]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data3[1]), .q(wr_data3_array[1]) );
357cl_sc1_msff_8x wr_data3_so_2 ( .si(wr_data3_so[1]), .so(wr_data3_so[2]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data3[2]), .q(wr_data3_array[2]) );
358cl_sc1_msff_8x wr_data3_so_3 ( .si(wr_data3_so[2]), .so(wr_data3_so[3]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data3[3]), .q(wr_data3_array[3]) );
359cl_sc1_msff_8x wr_data3_so_4 ( .si(wr_data3_so[3]), .so(wr_data3_so[4]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data3[4]), .q(wr_data3_array[4]) );
360
361cl_mc1_scm_msff_lat_4x ff_cam_en_3 ( .si(wr_data3_so[4]), .so(cam_en_so[3]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(cam_en[3]), .latout(cam_en_array[3]), .q(q[58]), .q_l(q_l[58]) );
362
363cl_sc1_msff_8x wr_data3_so_5 ( .si(cam_en_so[3]), .so(wr_data3_so[5]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data3[5]), .q(wr_data3_array[5]) );
364cl_sc1_msff_8x wr_data3_so_6 ( .si(wr_data3_so[5]), .so(wr_data3_so[6]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data3[6]), .q(wr_data3_array[6]) );
365cl_sc1_msff_8x wr_data3_so_7 ( .si(wr_data3_so[6]), .so(wr_data3_so[7]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data3[7]), .q(wr_data3_array[7]) );
366cl_sc1_msff_8x wr_data3_so_8 ( .si(wr_data3_so[7]), .so(wr_data3_so[8]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data3[8]), .q(wr_data3_array[8]) );
367cl_sc1_msff_8x wr_data3_so_9 ( .si(wr_data3_so[8]), .so(wr_data3_so[9]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data3[9]), .q(wr_data3_array[9]) );
368cl_sc1_msff_8x wr_data3_so_10 ( .si(wr_data3_so[9]), .so(wr_data3_so[10]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data3[10]), .q(wr_data3_array[10]) );
369cl_sc1_msff_8x wr_data3_so_11 ( .si(wr_data3_so[10]), .so(wr_data3_so[11]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data3[11]), .q(wr_data3_array[11]) );
370cl_sc1_msff_8x wr_data3_so_12 ( .si(wr_data3_so[11]), .so(wr_data3_so[12]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data3[12]), .q(wr_data3_array[12]) );
371cl_sc1_msff_8x wr_data3_so_14 ( .si(wr_data3_so[12]), .so(wr_data3_so[14]), .l1clk(collar_clk[1]), .siclk(siclk[1]), .soclk(soclk[1]), .d(wr_data3[14]), .q(wr_data3_array[14]) );
372
373cl_mc1_scm_msff_lat_4x ff_rd_en_3 ( .si(wr_data3_so[14]), .so(rd_en_so[3]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(rd_en[3]), .latout(rd_en_array[3]), .q(q[59]), .q_l(q_l[59]) );
374cl_mc1_scm_msff_lat_4x ff_wr_en_3 ( .si(rd_en_so[3]), .so(wr_en_so[3]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(wr_en[3]), .latout(wr_en_array[3]), .q(q[60]), .q_l(q_l[60]) );
375
376cl_mc1_scm_msff_lat_4x inv_mask3_so_0 ( .si(wr_en_so[3]), .so(inv_mask3_so[0]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(inv_mask3[0]), .latout(inv_mask3_array[0]), .q(q[61]), .q_l(q_l[61]) );
377cl_mc1_scm_msff_lat_4x inv_mask3_so_1 ( .si(inv_mask3_so[0]), .so(inv_mask3_so[1]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(inv_mask3[1]), .latout(inv_mask3_array[1]), .q(q[62]), .q_l(q_l[62]) );
378cl_mc1_scm_msff_lat_4x inv_mask3_so_2 ( .si(inv_mask3_so[1]), .so(inv_mask3_so[2]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(inv_mask3[2]), .latout(inv_mask3_array[2]), .q(q[63]), .q_l(q_l[63]) );
379cl_mc1_scm_msff_lat_4x inv_mask3_so_3 ( .si(inv_mask3_so[2]), .so(inv_mask3_so[3]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(inv_mask3[3]), .latout(inv_mask3_array[3]), .q(q[64]), .q_l(q_l[64]) );
380cl_mc1_scm_msff_lat_4x inv_mask3_so_4 ( .si(inv_mask3_so[3]), .so(inv_mask3_so[4]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(inv_mask3[4]), .latout(inv_mask3_array[4]), .q(q[65]), .q_l(q_l[65]) );
381cl_mc1_scm_msff_lat_4x inv_mask3_so_5 ( .si(inv_mask3_so[4]), .so(inv_mask3_so[5]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(inv_mask3[5]), .latout(inv_mask3_array[5]), .q(q[66]), .q_l(q_l[66]) );
382cl_mc1_scm_msff_lat_4x inv_mask3_so_6 ( .si(inv_mask3_so[5]), .so(inv_mask3_so[6]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(inv_mask3[6]), .latout(inv_mask3_array[6]), .q(q[67]), .q_l(q_l[67]) );
383cl_mc1_scm_msff_lat_4x inv_mask3_so_7 ( .si(inv_mask3_so[6]), .so(inv_mask3_so[7]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(inv_mask3[7]), .latout(inv_mask3_array[7]), .q(q[68]), .q_l(q_l[68]) );
384
385cl_mc1_scm_msff_lat_4x rw_addr3_so_0 ( .si(inv_mask3_so[7]), .so(rw_addr3_so[0]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(rw_addr3[0]), .latout(rw_addr3_array[0]), .q(q[69]), .q_l(q_l[69]) );
386cl_mc1_scm_msff_lat_4x rw_addr3_so_1 ( .si(rw_addr3_so[0]), .so(rw_addr3_so[1]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(rw_addr3[1]), .latout(rw_addr3_array[1]), .q(q[70]), .q_l(q_l[70]) );
387cl_mc1_scm_msff_lat_4x rw_addr3_so_2 ( .si(rw_addr3_so[1]), .so(rw_addr3_so[2]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(rw_addr3[2]), .latout(rw_addr3_array[2]), .q(q[71]), .q_l(q_l[71]) );
388cl_mc1_scm_msff_lat_4x rw_addr3_so_3 ( .si(rw_addr3_so[2]), .so(rw_addr3_so[3]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(rw_addr3[3]), .latout(rw_addr3_array[3]), .q(q[72]), .q_l(q_l[72]) );
389cl_mc1_scm_msff_lat_4x rw_addr3_so_4 ( .si(rw_addr3_so[3]), .so(rw_addr3_so[4]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(rw_addr3[4]), .latout(rw_addr3_array[4]), .q(q[73]), .q_l(q_l[73]) );
390cl_mc1_scm_msff_lat_4x rw_addr3_so_5 ( .si(rw_addr3_so[4]), .so(rw_addr3_so[5]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(rw_addr3[5]), .latout(rw_addr3_array[5]), .q(q[74]), .q_l(q_l[74]) );
391
392cl_mc1_scm_msff_lat_4x rst_warm1_1 ( .si(rw_addr3_so[5]), .so(rst_warm_1_so[1]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(rst_warm_1), .latout(rst_warm_1_array[1]), .q(q[75]), .q_l(q_l[75]) );
393cl_mc1_scm_msff_lat_4x ff_force_hit_3 ( .si(rst_warm_1_so[1]), .so(force_hit_so[3]), .l1clk(collar_clk[0]), .siclk(siclk[0]), .soclk(soclk[0]), .d(force_hit[3]), .latout(force_hit_array[3]), .q(q[76]), .q_l(q_l[76]) );
394
395assign scan_out = force_hit_so[3];
396
397dcm_panel_cust panel0(
398 // Outputs
399 .lkup_hit (lkup_hit0[63:0]),
400 .rd_data (rd_data0[15:0]), // BS and SR 11/18/03 Reverse Directory change
401 // Inputs
402 .tcu_aclk (1'b0),
403 .tcu_bclk (1'b0),
404 .tcu_pce_ov (tcu_pce_ov),
405 .pce (pce),
406 .tcu_array_bypass (tcu_array_bypass),
407 .rd_en (rd_en_array[0]),
408 .wr_en (wr_en_array[0]),
409 .tcu_array_wr_inhibit (tcu_array_wr_inhibit),
410 .force_hit (force_hit_array[0]),
411 .cam_en (cam_en_array[0]),
412 .wr_data (wr_data0_array[15:0]), // BS and SR 11/18/03 Reverse Directory change
413 .rw_addr (rw_addr0_array[5:0]), // BS and SR 11/18/03 Reverse Directory change
414 .inv_mask (inv_mask0_array[7:0]),
415 .l2clk (in_clk),
416 .rst_warm (rst_warm_0_array[0]),
417 .tcu_se_scancollar_in (tcu_se_scancollar_in));
418
419 assign bank0_hit = lkup_hit0 | lkup_hit1 ;
420
421dcm_panel_cust panel1(
422 // Outputs
423 .lkup_hit (lkup_hit1[63:0]),
424 .rd_data (rd_data1[15:0]), // BS and SR 11/18/03 Reverse Directory change
425 // Inputs
426 .tcu_aclk (1'b0),
427 .tcu_bclk (1'b0),
428 .tcu_pce_ov (tcu_pce_ov),
429 .pce (pce),
430 .tcu_array_bypass (tcu_array_bypass),
431 .rd_en (rd_en_array[1]),
432 .wr_en (wr_en_array[1]),
433 .tcu_array_wr_inhibit (tcu_array_wr_inhibit),
434 .force_hit (force_hit_array[1]),
435 .cam_en (cam_en_array[1]),
436 .wr_data (wr_data1_array[15:0]), // BS and SR 11/18/03 Reverse Directory change
437 .rw_addr (rw_addr1_array[5:0]), // BS and SR 11/18/03 Reverse Directory change
438 .inv_mask (inv_mask1_array[7:0]),
439 .l2clk (in_clk),
440 .rst_warm (rst_warm_0_array[1]),
441 .tcu_se_scancollar_in (tcu_se_scancollar_in));
442
443
444 assign row_hit = bank1_hit | bank0_hit ;
445
446
447dcm_panel_cust panel2(
448 // Outputs
449 .lkup_hit (lkup_hit2[63:0]),
450 .rd_data (rd_data2[15:0]), // BS and SR 11/18/03 Reverse Directory change
451 // Inputs
452 .tcu_aclk (1'b0),
453 .tcu_bclk (1'b0),
454 .tcu_pce_ov (tcu_pce_ov),
455 .pce (pce),
456 .tcu_array_bypass (tcu_array_bypass),
457 .rd_en (rd_en_array[2]),
458 .wr_en (wr_en_array[2]),
459 .tcu_array_wr_inhibit (tcu_array_wr_inhibit),
460 .force_hit (force_hit_array[2]),
461 .cam_en (cam_en_array[2]),
462 .wr_data (wr_data2_array[15:0]), // BS and SR 11/18/03 Reverse Directory change
463 .rw_addr (rw_addr2_array[5:0]), // BS and SR 11/18/03 Reverse Directory change
464 .inv_mask (inv_mask2_array[7:0]),
465 .l2clk (in_clk),
466 .rst_warm (rst_warm_1_array[0]),
467 .tcu_se_scancollar_in(tcu_se_scancollar_in));
468
469 assign bank1_hit = lkup_hit2 | lkup_hit3 ;
470
471dcm_panel_cust panel3(
472 // Outputs
473 .lkup_hit (lkup_hit3[63:0]),
474 .rd_data (rd_data3[15:0]), // BS and SR 11/18/03 Reverse Directory change
475 // Inputs
476 .tcu_aclk (1'b0),
477 .tcu_bclk (1'b0),
478 .tcu_pce_ov (tcu_pce_ov),
479 .pce (pce),
480 .tcu_array_bypass (tcu_array_bypass),
481 .rd_en (rd_en_array[3]),
482 .wr_en (wr_en_array[3]),
483 .tcu_array_wr_inhibit (tcu_array_wr_inhibit),
484 .force_hit (force_hit_array[3]),
485 .cam_en (cam_en_array[3]),
486 .wr_data (wr_data3_array[15:0]), // BS and SR 11/18/03 Reverse Directory change
487 .rw_addr (rw_addr3_array[5:0]), // BS and SR 11/18/03 Reverse Directory change
488 .inv_mask (inv_mask3_array[7:0]),
489 .l2clk (in_clk),
490 .rst_warm (rst_warm_1_array[1]),
491 .tcu_se_scancollar_in (tcu_se_scancollar_in));
492
493// synopsys translate_on
494
495endmodule
496
497
498////////////////////////////////////////////////////////////////////////
499// Local header file includes / local defines
500// A directory panel is 32 bits wide and 64 entries deep.
501// The lkup_hit combines the match lines for an even and odd entry pair
502// and hence is only 32 bits wide.
503////////////////////////////////////////////////////////////////////////
504
505module dcm_panel_cust (
506 rd_en,
507 wr_en,
508 tcu_array_wr_inhibit,
509 cam_en,
510 force_hit,
511 wr_data,
512 rw_addr,
513 inv_mask,
514 l2clk,
515 rst_warm,
516 tcu_se_scancollar_in,
517 tcu_pce_ov,
518 pce,
519 tcu_aclk,
520 tcu_bclk,
521 tcu_array_bypass,
522 lkup_hit,
523 rd_data);
524wire ff_valid_scanin;
525wire tcu_se_scancollar_in_unused;
526wire tcu_pce_ov_unused;
527wire pce_unused;
528wire ff_valid_scanout_unused;
529
530
531
532wire tcu_array_bypass_n;
533wire [62:0] ff_valid__so;
534
535
536// Read inputs
537input rd_en;
538input wr_en;
539input tcu_array_wr_inhibit;
540input cam_en;
541input force_hit;
542
543input [15:0] wr_data; // { parity, valid, addr<4>,addr<17:9>, L2 way[3:0]} , BS and SR 11/18/03 Reverse Directory change
544
545// shared inputs
546input [5:0] rw_addr; // BS and SR 11/18/03 Reverse Directory change
547input [7:0] inv_mask;
548
549input l2clk;
550input rst_warm;
551input tcu_se_scancollar_in;
552input tcu_pce_ov;
553input pce;
554input tcu_aclk;
555input tcu_bclk;
556input tcu_array_bypass; // array bypass for DFT
557
558output [63:0] lkup_hit;
559output [15:0] rd_data; // { valid,parity, addr<17:9>, L2 way<3:0> } , BS and SR 11/18/03 Reverse Directory change
560
561wire [63:0] inval_mask_d;
562wire [31:0] inval_mask_d1;
563wire [15:0] rd_data_array;
564wire [63:0] lkup_hit_array;
565wire [63:0] valid_bit;
566wire [63:0] valid;
567wire [140:1] mq_l, q, q_l;
568
569assign ff_valid_scanin = 1'b0;
570
571assign tcu_se_scancollar_in_unused = tcu_se_scancollar_in;
572assign tcu_pce_ov_unused = tcu_pce_ov;
573assign pce_unused = pce;
574
575cl_mc1_scm_msff_lat_4x ff_valid_0 ( .si(ff_valid_scanin), .so(ff_valid__so[0]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[0]), .latout(valid_bit[0]), .q(q[77]), .q_l(q_l[77]) );
576cl_mc1_scm_msff_lat_4x ff_valid_1 ( .si(ff_valid__so[0]), .so(ff_valid__so[1]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[1]), .latout(valid_bit[1]), .q(q[78]), .q_l(q_l[78]) );
577cl_mc1_scm_msff_lat_4x ff_valid_2 ( .si(ff_valid__so[1]), .so(ff_valid__so[2]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[2]), .latout(valid_bit[2]), .q(q[79]), .q_l(q_l[79]) );
578cl_mc1_scm_msff_lat_4x ff_valid_3 ( .si(ff_valid__so[2]), .so(ff_valid__so[3]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[3]), .latout(valid_bit[3]), .q(q[80]), .q_l(q_l[80]) );
579cl_mc1_scm_msff_lat_4x ff_valid_4 ( .si(ff_valid__so[3]), .so(ff_valid__so[4]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[4]), .latout(valid_bit[4]), .q(q[81]), .q_l(q_l[81]) );
580cl_mc1_scm_msff_lat_4x ff_valid_5 ( .si(ff_valid__so[4]), .so(ff_valid__so[5]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[5]), .latout(valid_bit[5]), .q(q[82]), .q_l(q_l[82]) );
581cl_mc1_scm_msff_lat_4x ff_valid_6 ( .si(ff_valid__so[5]), .so(ff_valid__so[6]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[6]), .latout(valid_bit[6]), .q(q[83]), .q_l(q_l[83]) );
582cl_mc1_scm_msff_lat_4x ff_valid_7 ( .si(ff_valid__so[6]), .so(ff_valid__so[7]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[7]), .latout(valid_bit[7]), .q(q[84]), .q_l(q_l[84]) );
583cl_mc1_scm_msff_lat_4x ff_valid_8 ( .si(ff_valid__so[7]), .so(ff_valid__so[8]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[8]), .latout(valid_bit[8]), .q(q[85]), .q_l(q_l[85]) );
584cl_mc1_scm_msff_lat_4x ff_valid_9 ( .si(ff_valid__so[8]), .so(ff_valid__so[9]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[9]), .latout(valid_bit[9]), .q(q[86]), .q_l(q_l[86]) );
585cl_mc1_scm_msff_lat_4x ff_valid_10 ( .si(ff_valid__so[9]), .so(ff_valid__so[10]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[10]), .latout(valid_bit[10]), .q(q[87]), .q_l(q_l[87]) );
586cl_mc1_scm_msff_lat_4x ff_valid_11 ( .si(ff_valid__so[10]), .so(ff_valid__so[11]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[11]), .latout(valid_bit[11]), .q(q[88]), .q_l(q_l[88]) );
587cl_mc1_scm_msff_lat_4x ff_valid_12 ( .si(ff_valid__so[11]), .so(ff_valid__so[12]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[12]), .latout(valid_bit[12]), .q(q[89]), .q_l(q_l[89]) );
588cl_mc1_scm_msff_lat_4x ff_valid_13 ( .si(ff_valid__so[12]), .so(ff_valid__so[13]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[13]), .latout(valid_bit[13]), .q(q[90]), .q_l(q_l[90]) );
589cl_mc1_scm_msff_lat_4x ff_valid_14 ( .si(ff_valid__so[13]), .so(ff_valid__so[14]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[14]), .latout(valid_bit[14]), .q(q[91]), .q_l(q_l[91]) );
590cl_mc1_scm_msff_lat_4x ff_valid_15 ( .si(ff_valid__so[14]), .so(ff_valid__so[15]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[15]), .latout(valid_bit[15]), .q(q[92]), .q_l(q_l[92]) );
591cl_mc1_scm_msff_lat_4x ff_valid_16 ( .si(ff_valid__so[15]), .so(ff_valid__so[16]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[16]), .latout(valid_bit[16]), .q(q[93]), .q_l(q_l[93]) );
592cl_mc1_scm_msff_lat_4x ff_valid_17 ( .si(ff_valid__so[16]), .so(ff_valid__so[17]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[17]), .latout(valid_bit[17]), .q(q[94]), .q_l(q_l[94]) );
593cl_mc1_scm_msff_lat_4x ff_valid_18 ( .si(ff_valid__so[17]), .so(ff_valid__so[18]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[18]), .latout(valid_bit[18]), .q(q[95]), .q_l(q_l[95]) );
594cl_mc1_scm_msff_lat_4x ff_valid_19 ( .si(ff_valid__so[18]), .so(ff_valid__so[19]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[19]), .latout(valid_bit[19]), .q(q[96]), .q_l(q_l[96]) );
595cl_mc1_scm_msff_lat_4x ff_valid_20 ( .si(ff_valid__so[19]), .so(ff_valid__so[20]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[20]), .latout(valid_bit[20]), .q(q[97]), .q_l(q_l[97]) );
596cl_mc1_scm_msff_lat_4x ff_valid_21 ( .si(ff_valid__so[20]), .so(ff_valid__so[21]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[21]), .latout(valid_bit[21]), .q(q[98]), .q_l(q_l[98]) );
597cl_mc1_scm_msff_lat_4x ff_valid_22 ( .si(ff_valid__so[21]), .so(ff_valid__so[22]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[22]), .latout(valid_bit[22]), .q(q[99]), .q_l(q_l[99]) );
598cl_mc1_scm_msff_lat_4x ff_valid_23 ( .si(ff_valid__so[22]), .so(ff_valid__so[23]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[23]), .latout(valid_bit[23]), .q(q[100]), .q_l(q_l[100]) );
599cl_mc1_scm_msff_lat_4x ff_valid_24 ( .si(ff_valid__so[23]), .so(ff_valid__so[24]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[24]), .latout(valid_bit[24]), .q(q[101]), .q_l(q_l[101]) );
600cl_mc1_scm_msff_lat_4x ff_valid_25 ( .si(ff_valid__so[24]), .so(ff_valid__so[25]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[25]), .latout(valid_bit[25]), .q(q[102]), .q_l(q_l[102]) );
601cl_mc1_scm_msff_lat_4x ff_valid_26 ( .si(ff_valid__so[25]), .so(ff_valid__so[26]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[26]), .latout(valid_bit[26]), .q(q[103]), .q_l(q_l[103]) );
602cl_mc1_scm_msff_lat_4x ff_valid_27 ( .si(ff_valid__so[26]), .so(ff_valid__so[27]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[27]), .latout(valid_bit[27]), .q(q[104]), .q_l(q_l[104]) );
603cl_mc1_scm_msff_lat_4x ff_valid_28 ( .si(ff_valid__so[27]), .so(ff_valid__so[28]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[28]), .latout(valid_bit[28]), .q(q[105]), .q_l(q_l[105]) );
604cl_mc1_scm_msff_lat_4x ff_valid_29 ( .si(ff_valid__so[28]), .so(ff_valid__so[29]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[29]), .latout(valid_bit[29]), .q(q[106]), .q_l(q_l[106]) );
605cl_mc1_scm_msff_lat_4x ff_valid_30 ( .si(ff_valid__so[29]), .so(ff_valid__so[30]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[30]), .latout(valid_bit[30]), .q(q[107]), .q_l(q_l[107]) );
606cl_mc1_scm_msff_lat_4x ff_valid_31 ( .si(ff_valid__so[30]), .so(ff_valid__so[31]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[31]), .latout(valid_bit[31]), .q(q[108]), .q_l(q_l[108]) );
607cl_mc1_scm_msff_lat_4x ff_valid_32 ( .si(ff_valid__so[31]), .so(ff_valid__so[32]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[32]), .latout(valid_bit[32]), .q(q[109]), .q_l(q_l[109]) );
608cl_mc1_scm_msff_lat_4x ff_valid_33 ( .si(ff_valid__so[32]), .so(ff_valid__so[33]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[33]), .latout(valid_bit[33]), .q(q[110]), .q_l(q_l[110]) );
609cl_mc1_scm_msff_lat_4x ff_valid_34 ( .si(ff_valid__so[33]), .so(ff_valid__so[34]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[34]), .latout(valid_bit[34]), .q(q[111]), .q_l(q_l[111]) );
610cl_mc1_scm_msff_lat_4x ff_valid_35 ( .si(ff_valid__so[34]), .so(ff_valid__so[35]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[35]), .latout(valid_bit[35]), .q(q[112]), .q_l(q_l[112]) );
611cl_mc1_scm_msff_lat_4x ff_valid_36 ( .si(ff_valid__so[35]), .so(ff_valid__so[36]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[36]), .latout(valid_bit[36]), .q(q[113]), .q_l(q_l[113]) );
612cl_mc1_scm_msff_lat_4x ff_valid_37 ( .si(ff_valid__so[36]), .so(ff_valid__so[37]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[37]), .latout(valid_bit[37]), .q(q[114]), .q_l(q_l[114]) );
613cl_mc1_scm_msff_lat_4x ff_valid_38 ( .si(ff_valid__so[37]), .so(ff_valid__so[38]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[38]), .latout(valid_bit[38]), .q(q[115]), .q_l(q_l[115]) );
614cl_mc1_scm_msff_lat_4x ff_valid_39 ( .si(ff_valid__so[38]), .so(ff_valid__so[39]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[39]), .latout(valid_bit[39]), .q(q[116]), .q_l(q_l[116]) );
615cl_mc1_scm_msff_lat_4x ff_valid_40 ( .si(ff_valid__so[39]), .so(ff_valid__so[40]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[40]), .latout(valid_bit[40]), .q(q[117]), .q_l(q_l[117]) );
616cl_mc1_scm_msff_lat_4x ff_valid_41 ( .si(ff_valid__so[40]), .so(ff_valid__so[41]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[41]), .latout(valid_bit[41]), .q(q[118]), .q_l(q_l[118]) );
617cl_mc1_scm_msff_lat_4x ff_valid_42 ( .si(ff_valid__so[41]), .so(ff_valid__so[42]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[42]), .latout(valid_bit[42]), .q(q[119]), .q_l(q_l[119]) );
618cl_mc1_scm_msff_lat_4x ff_valid_43 ( .si(ff_valid__so[42]), .so(ff_valid__so[43]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[43]), .latout(valid_bit[43]), .q(q[120]), .q_l(q_l[120]) );
619cl_mc1_scm_msff_lat_4x ff_valid_44 ( .si(ff_valid__so[43]), .so(ff_valid__so[44]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[44]), .latout(valid_bit[44]), .q(q[121]), .q_l(q_l[121]) );
620cl_mc1_scm_msff_lat_4x ff_valid_45 ( .si(ff_valid__so[44]), .so(ff_valid__so[45]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[45]), .latout(valid_bit[45]), .q(q[122]), .q_l(q_l[122]) );
621cl_mc1_scm_msff_lat_4x ff_valid_46 ( .si(ff_valid__so[45]), .so(ff_valid__so[46]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[46]), .latout(valid_bit[46]), .q(q[123]), .q_l(q_l[123]) );
622cl_mc1_scm_msff_lat_4x ff_valid_47 ( .si(ff_valid__so[46]), .so(ff_valid__so[47]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[47]), .latout(valid_bit[47]), .q(q[124]), .q_l(q_l[124]) );
623cl_mc1_scm_msff_lat_4x ff_valid_48 ( .si(ff_valid__so[47]), .so(ff_valid__so[48]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[48]), .latout(valid_bit[48]), .q(q[125]), .q_l(q_l[125]) );
624cl_mc1_scm_msff_lat_4x ff_valid_49 ( .si(ff_valid__so[48]), .so(ff_valid__so[49]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[49]), .latout(valid_bit[49]), .q(q[126]), .q_l(q_l[126]) );
625cl_mc1_scm_msff_lat_4x ff_valid_50 ( .si(ff_valid__so[49]), .so(ff_valid__so[50]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[50]), .latout(valid_bit[50]), .q(q[127]), .q_l(q_l[127]) );
626cl_mc1_scm_msff_lat_4x ff_valid_51 ( .si(ff_valid__so[50]), .so(ff_valid__so[51]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[51]), .latout(valid_bit[51]), .q(q[128]), .q_l(q_l[128]) );
627cl_mc1_scm_msff_lat_4x ff_valid_52 ( .si(ff_valid__so[51]), .so(ff_valid__so[52]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[52]), .latout(valid_bit[52]), .q(q[129]), .q_l(q_l[129]) );
628cl_mc1_scm_msff_lat_4x ff_valid_53 ( .si(ff_valid__so[52]), .so(ff_valid__so[53]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[53]), .latout(valid_bit[53]), .q(q[130]), .q_l(q_l[130]) );
629cl_mc1_scm_msff_lat_4x ff_valid_54 ( .si(ff_valid__so[53]), .so(ff_valid__so[54]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[54]), .latout(valid_bit[54]), .q(q[131]), .q_l(q_l[131]) );
630cl_mc1_scm_msff_lat_4x ff_valid_55 ( .si(ff_valid__so[54]), .so(ff_valid__so[55]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[55]), .latout(valid_bit[55]), .q(q[132]), .q_l(q_l[132]) );
631cl_mc1_scm_msff_lat_4x ff_valid_56 ( .si(ff_valid__so[55]), .so(ff_valid__so[56]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[56]), .latout(valid_bit[56]), .q(q[133]), .q_l(q_l[133]) );
632cl_mc1_scm_msff_lat_4x ff_valid_57 ( .si(ff_valid__so[56]), .so(ff_valid__so[57]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[57]), .latout(valid_bit[57]), .q(q[134]), .q_l(q_l[134]) );
633cl_mc1_scm_msff_lat_4x ff_valid_58 ( .si(ff_valid__so[57]), .so(ff_valid__so[58]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[58]), .latout(valid_bit[58]), .q(q[135]), .q_l(q_l[135]) );
634cl_mc1_scm_msff_lat_4x ff_valid_59 ( .si(ff_valid__so[58]), .so(ff_valid__so[59]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[59]), .latout(valid_bit[59]), .q(q[136]), .q_l(q_l[136]) );
635cl_mc1_scm_msff_lat_4x ff_valid_60 ( .si(ff_valid__so[59]), .so(ff_valid__so[60]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[60]), .latout(valid_bit[60]), .q(q[137]), .q_l(q_l[137]) );
636cl_mc1_scm_msff_lat_4x ff_valid_61 ( .si(ff_valid__so[60]), .so(ff_valid__so[61]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[61]), .latout(valid_bit[61]), .q(q[138]), .q_l(q_l[138]) );
637cl_mc1_scm_msff_lat_4x ff_valid_62 ( .si(ff_valid__so[61]), .so(ff_valid__so[62]), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[62]), .latout(valid_bit[62]), .q(q[139]), .q_l(q_l[139]) );
638cl_mc1_scm_msff_lat_4x ff_valid_63 ( .si(ff_valid__so[62]), .so(ff_valid_scanout_unused), .l1clk(l2clk), .siclk(tcu_aclk), .soclk(tcu_bclk), .d(valid[63]), .latout(valid_bit[63]), .q(q[140]), .q_l(q_l[140]) );
639
640
641// Inval mask is generated on a per cpu basis.
642
643assign inval_mask_d1[3:0] = {4{inv_mask[0]}} ; // BS and SR 11/18/03 Reverse Directory change
644assign inval_mask_d1[7:4] = {4{inv_mask[1]}} ; // BS and SR 11/18/03 Reverse Directory change
645assign inval_mask_d1[11:8] = {4{inv_mask[2]}} ; // BS and SR 11/18/03 Reverse Directory change
646assign inval_mask_d1[15:12] = {4{inv_mask[3]}} ; // BS and SR 11/18/03 Reverse Directory change
647assign inval_mask_d1[19:16] = {4{inv_mask[4]}} ; // BS and SR 11/18/03 Reverse Directory change
648assign inval_mask_d1[23:20] = {4{inv_mask[5]}} ; // BS and SR 11/18/03 Reverse Directory change
649assign inval_mask_d1[27:24] = {4{inv_mask[6]}} ; // BS and SR 11/18/03 Reverse Directory change
650assign inval_mask_d1[31:28] = {4{inv_mask[7]}} ; // BS and SR 11/18/03 Reverse Directory change
651
652assign inval_mask_d[63:0] = {inval_mask_d1,inval_mask_d1};
653
654
655// MEM Array //
656
657
658dc_panel_array array (
659 .l2clk(l2clk),
660// .rst_l(rst_l),
661 .wr_en(wr_en),
662 .rd_en(rd_en),
663 .cam_en(cam_en),
664 .rw_addr(rw_addr[5:0]),
665 .wr_data(wr_data[15:0]),
666 .rst_warm(rst_warm),
667 .force_hit(force_hit),
668 .write_disable(tcu_array_wr_inhibit),
669 .inval_mask(inval_mask_d[63:0]),
670 .valid_bit(valid_bit[63:0]),
671 .lkup_hit(lkup_hit[63:0]),
672 .rd_data(rd_data[15:0]),
673 .valid(valid[63:0]),
674 .bypass(tcu_array_bypass)
675 );
676
677endmodule
678
679
680
681//
682// ADDRESS BIT 4 as REGISTER ARRAY
683///
684
685
686module dc_panel_array (
687 l2clk,
688 wr_en,
689 rd_en,
690 cam_en,
691 rst_warm,
692 write_disable,
693 force_hit,
694 rw_addr,
695 inval_mask,
696 wr_data,
697 valid_bit,
698 bypass,
699 valid,
700 rd_data,
701 lkup_hit);
702wire [12:0] addr_array_0;
703wire [12:0] addr_array_1;
704wire [12:0] addr_array_2;
705wire [12:0] addr_array_3;
706wire [12:0] addr_array_4;
707wire [12:0] addr_array_5;
708wire [12:0] addr_array_6;
709wire [12:0] addr_array_7;
710wire [12:0] addr_array_8;
711wire [12:0] addr_array_9;
712wire [12:0] addr_array_10;
713wire [12:0] addr_array_11;
714wire [12:0] addr_array_12;
715wire [12:0] addr_array_13;
716wire [12:0] addr_array_14;
717wire [12:0] addr_array_15;
718wire [12:0] addr_array_16;
719wire [12:0] addr_array_17;
720wire [12:0] addr_array_18;
721wire [12:0] addr_array_19;
722wire [12:0] addr_array_20;
723wire [12:0] addr_array_21;
724wire [12:0] addr_array_22;
725wire [12:0] addr_array_23;
726wire [12:0] addr_array_24;
727wire [12:0] addr_array_25;
728wire [12:0] addr_array_26;
729wire [12:0] addr_array_27;
730wire [12:0] addr_array_28;
731wire [12:0] addr_array_29;
732wire [12:0] addr_array_30;
733wire [12:0] addr_array_31;
734wire [12:0] addr_array_32;
735wire [12:0] addr_array_33;
736wire [12:0] addr_array_34;
737wire [12:0] addr_array_35;
738wire [12:0] addr_array_36;
739wire [12:0] addr_array_37;
740wire [12:0] addr_array_38;
741wire [12:0] addr_array_39;
742wire [12:0] addr_array_40;
743wire [12:0] addr_array_41;
744wire [12:0] addr_array_42;
745wire [12:0] addr_array_43;
746wire [12:0] addr_array_44;
747wire [12:0] addr_array_45;
748wire [12:0] addr_array_46;
749wire [12:0] addr_array_47;
750wire [12:0] addr_array_48;
751wire [12:0] addr_array_49;
752wire [12:0] addr_array_50;
753wire [12:0] addr_array_51;
754wire [12:0] addr_array_52;
755wire [12:0] addr_array_53;
756wire [12:0] addr_array_54;
757wire [12:0] addr_array_55;
758wire [12:0] addr_array_56;
759wire [12:0] addr_array_57;
760wire [12:0] addr_array_58;
761wire [12:0] addr_array_59;
762wire [12:0] addr_array_60;
763wire [12:0] addr_array_61;
764wire [12:0] addr_array_62;
765wire [12:0] addr_array_63;
766
767input l2clk;
768input wr_en;
769input rd_en;
770input cam_en;
771input rst_warm;
772input write_disable;
773input force_hit;
774input [5:0] rw_addr;
775input [63:0] inval_mask;
776input [15:0] wr_data;
777input [63:0] valid_bit;
778input bypass;
779output [63:0] valid;
780output [15:0] rd_data;
781output [63:0] lkup_hit;
782
783
784//
785// Registers and wires
786//
787
788integer i,j;
789
790reg [12:0] addr_array[63:0] ; // BS and SR 11/18/03 Reverse Directory change
791reg [63:0] addr_bit4; // Restructuring directories
792reg [63:0] valid ;
793reg [63:0] parity ;
794reg [15:0] rd_data; // BS and SR 11/18/03 Reverse Directory change
795reg [63:0] lkup_hit;
796reg [63:0] cam_hit;
797reg [63:0] cam_hit0;
798reg [63:0] cam_hit1;
799reg [63:0] new_valid;
800
801`ifndef NOINITMEM
802///////////////////////////////////////
803// Initialize the cam/arrays. //
804///////////////////////////////////////
805integer n;
806initial begin
807 for (n = 0; n < 64; n = n + 1) begin
808 addr_array[n] = {13{1'b0}};
809 addr_bit4[n] = 1'b0;
810 valid[n] = 1'b0;
811 parity[n] = 1'b0;
812 end
813end
814`endif
815
816assign addr_array_0 = addr_array[0];
817assign addr_array_1 = addr_array[1];
818assign addr_array_2 = addr_array[2];
819assign addr_array_3 = addr_array[3];
820assign addr_array_4 = addr_array[4];
821assign addr_array_5 = addr_array[5];
822assign addr_array_6 = addr_array[6];
823assign addr_array_7 = addr_array[7];
824assign addr_array_8 = addr_array[8];
825assign addr_array_9 = addr_array[9];
826assign addr_array_10 = addr_array[10];
827assign addr_array_11 = addr_array[11];
828assign addr_array_12 = addr_array[12];
829assign addr_array_13 = addr_array[13];
830assign addr_array_14 = addr_array[14];
831assign addr_array_15 = addr_array[15];
832assign addr_array_16 = addr_array[16];
833assign addr_array_17 = addr_array[17];
834assign addr_array_18 = addr_array[18];
835assign addr_array_19 = addr_array[19];
836assign addr_array_20 = addr_array[20];
837assign addr_array_21 = addr_array[21];
838assign addr_array_22 = addr_array[22];
839assign addr_array_23 = addr_array[23];
840assign addr_array_24 = addr_array[24];
841assign addr_array_25 = addr_array[25];
842assign addr_array_26 = addr_array[26];
843assign addr_array_27 = addr_array[27];
844assign addr_array_28 = addr_array[28];
845assign addr_array_29 = addr_array[29];
846assign addr_array_30 = addr_array[30];
847assign addr_array_31 = addr_array[31];
848
849assign addr_array_32 = addr_array[32];
850assign addr_array_33 = addr_array[33];
851assign addr_array_34 = addr_array[34];
852assign addr_array_35 = addr_array[35];
853assign addr_array_36 = addr_array[36];
854assign addr_array_37 = addr_array[37];
855assign addr_array_38 = addr_array[38];
856assign addr_array_39 = addr_array[39];
857assign addr_array_40 = addr_array[40];
858assign addr_array_41 = addr_array[41];
859assign addr_array_42 = addr_array[42];
860assign addr_array_43 = addr_array[43];
861assign addr_array_44 = addr_array[44];
862assign addr_array_45 = addr_array[45];
863assign addr_array_46 = addr_array[46];
864assign addr_array_47 = addr_array[47];
865assign addr_array_48 = addr_array[48];
866assign addr_array_49 = addr_array[49];
867assign addr_array_50 = addr_array[50];
868assign addr_array_51 = addr_array[51];
869assign addr_array_52 = addr_array[52];
870assign addr_array_53 = addr_array[53];
871assign addr_array_54 = addr_array[54];
872assign addr_array_55 = addr_array[55];
873assign addr_array_56 = addr_array[56];
874assign addr_array_57 = addr_array[57];
875assign addr_array_58 = addr_array[58];
876assign addr_array_59 = addr_array[59];
877assign addr_array_60 = addr_array[60];
878assign addr_array_61 = addr_array[61];
879assign addr_array_62 = addr_array[62];
880assign addr_array_63 = addr_array[63];
881
882
883// CAM OPERATION
884// PH 1 CAM
885
886always @( cam_en or inval_mask or wr_data or valid_bit or force_hit or addr_bit4
887or l2clk or bypass or write_disable or rst_warm or
888addr_array_0 or addr_array_1 or addr_array_2 or addr_array_3 or addr_array_4 or
889addr_array_5 or addr_array_6 or addr_array_7 or addr_array_8 or addr_array_9 or
890addr_array_10 or addr_array_11 or addr_array_12 or addr_array_13 or addr_array_14 or
891addr_array_15 or addr_array_16 or addr_array_17 or addr_array_18 or addr_array_19 or
892addr_array_20 or addr_array_21 or addr_array_22 or addr_array_23 or addr_array_24 or
893addr_array_25 or addr_array_26 or addr_array_27 or addr_array_28 or addr_array_29 or
894addr_array_30 or addr_array_31 or addr_array_32 or addr_array_33 or addr_array_34 or
895addr_array_35 or addr_array_36 or addr_array_37 or addr_array_38 or addr_array_39 or
896addr_array_40 or addr_array_41 or addr_array_42 or addr_array_43 or addr_array_44 or
897addr_array_45 or addr_array_46 or addr_array_47 or addr_array_48 or addr_array_49 or
898addr_array_50 or addr_array_51 or addr_array_52 or addr_array_53 or addr_array_54 or
899addr_array_55 or addr_array_56 or addr_array_57 or addr_array_58 or addr_array_59 or
900addr_array_60 or addr_array_61 or addr_array_62 or addr_array_63 )
901
902 begin
903 // CAM
904
905 if (bypass)
906 begin
907 lkup_hit <= 64'b0; // RACE FIX
908 end
909 else if(l2clk & rst_warm)
910 begin
911 lkup_hit <= 64'b0; // RAACE FIX
912 end
913
914 else
915 if(l2clk & cam_en & ~write_disable)
916 begin
917
918
919
920 cam_hit0[0] = ( wr_data[12:0] == addr_array_0[12:0] );
921 cam_hit1[0] = (( wr_data[13] == addr_bit4[0] ) | force_hit);
922 cam_hit[0] = (cam_hit0[0] & cam_hit1[0]) & valid_bit[0];
923 new_valid[0] = valid_bit[0] & ~( cam_hit[0] & inval_mask[0]);
924
925
926 cam_hit0[1] = ( wr_data[12:0] == addr_array_1[12:0] );
927 cam_hit1[1] = (( wr_data[13] == addr_bit4[1] ) | force_hit);
928 cam_hit[1] = (cam_hit0[1] & cam_hit1[1]) & valid_bit[1];
929 new_valid[1] = valid_bit[1] & ~( cam_hit[1] & inval_mask[1]);
930
931
932 cam_hit0[2] = ( wr_data[12:0] == addr_array_2[12:0] );
933 cam_hit1[2] = (( wr_data[13] == addr_bit4[2] ) | force_hit);
934 cam_hit[2] = (cam_hit0[2] & cam_hit1[2]) & valid_bit[2];
935 new_valid[2] = valid_bit[2] & ~( cam_hit[2] & inval_mask[2]);
936
937
938 cam_hit0[3] = ( wr_data[12:0] == addr_array_3[12:0] );
939 cam_hit1[3] = (( wr_data[13] == addr_bit4[3] ) | force_hit);
940 cam_hit[3] = (cam_hit0[3] & cam_hit1[3]) & valid_bit[3];
941 new_valid[3] = valid_bit[3] & ~( cam_hit[3] & inval_mask[3]);
942
943
944 cam_hit0[4] = ( wr_data[12:0] == addr_array_4[12:0] );
945 cam_hit1[4] = (( wr_data[13] == addr_bit4[4] ) | force_hit);
946 cam_hit[4] = (cam_hit0[4] & cam_hit1[4]) & valid_bit[4];
947 new_valid[4] = valid_bit[4] & ~( cam_hit[4] & inval_mask[4]);
948
949
950 cam_hit0[5] = ( wr_data[12:0] == addr_array_5[12:0] );
951 cam_hit1[5] = (( wr_data[13] == addr_bit4[5] ) | force_hit);
952 cam_hit[5] = (cam_hit0[5] & cam_hit1[5]) & valid_bit[5];
953 new_valid[5] = valid_bit[5] & ~( cam_hit[5] & inval_mask[5]);
954
955
956 cam_hit0[6] = ( wr_data[12:0] == addr_array_6[12:0] );
957 cam_hit1[6] = (( wr_data[13] == addr_bit4[6] ) | force_hit);
958 cam_hit[6] = (cam_hit0[6] & cam_hit1[6]) & valid_bit[6];
959 new_valid[6] = valid_bit[6] & ~( cam_hit[6] & inval_mask[6]);
960
961
962 cam_hit0[7] = ( wr_data[12:0] == addr_array_7[12:0] );
963 cam_hit1[7] = (( wr_data[13] == addr_bit4[7] ) | force_hit);
964 cam_hit[7] = (cam_hit0[7] & cam_hit1[7]) & valid_bit[7];
965 new_valid[7] = valid_bit[7] & ~( cam_hit[7] & inval_mask[7]);
966
967
968 cam_hit0[8] = ( wr_data[12:0] == addr_array_8[12:0] );
969 cam_hit1[8] = (( wr_data[13] == addr_bit4[8] ) | force_hit);
970 cam_hit[8] = (cam_hit0[8] & cam_hit1[8]) & valid_bit[8];
971 new_valid[8] = valid_bit[8] & ~( cam_hit[8] & inval_mask[8]);
972
973
974 cam_hit0[9] = ( wr_data[12:0] == addr_array_9[12:0] );
975 cam_hit1[9] = (( wr_data[13] == addr_bit4[9] ) | force_hit);
976 cam_hit[9] = (cam_hit0[9] & cam_hit1[9]) & valid_bit[9];
977 new_valid[9] = valid_bit[9] & ~( cam_hit[9] & inval_mask[9]);
978
979
980 cam_hit0[10] = ( wr_data[12:0] == addr_array_10[12:0] );
981 cam_hit1[10] = (( wr_data[13] == addr_bit4[10] ) | force_hit);
982 cam_hit[10] = (cam_hit0[10] & cam_hit1[10]) & valid_bit[10];
983 new_valid[10] = valid_bit[10] & ~( cam_hit[10] & inval_mask[10]);
984
985
986 cam_hit0[11] = ( wr_data[12:0] == addr_array_11[12:0] );
987 cam_hit1[11] = (( wr_data[13] == addr_bit4[11] ) | force_hit);
988 cam_hit[11] = (cam_hit0[11] & cam_hit1[11]) & valid_bit[11];
989 new_valid[11] = valid_bit[11] & ~( cam_hit[11] & inval_mask[11]);
990
991
992 cam_hit0[12] = ( wr_data[12:0] == addr_array_12[12:0] );
993 cam_hit1[12] = (( wr_data[13] == addr_bit4[12] ) | force_hit);
994 cam_hit[12] = (cam_hit0[12] & cam_hit1[12]) & valid_bit[12];
995 new_valid[12] = valid_bit[12] & ~( cam_hit[12] & inval_mask[12]);
996
997
998 cam_hit0[13] = ( wr_data[12:0] == addr_array_13[12:0] );
999 cam_hit1[13] = (( wr_data[13] == addr_bit4[13] ) | force_hit);
1000 cam_hit[13] = (cam_hit0[13] & cam_hit1[13]) & valid_bit[13];
1001 new_valid[13] = valid_bit[13] & ~( cam_hit[13] & inval_mask[13]);
1002
1003
1004 cam_hit0[14] = ( wr_data[12:0] == addr_array_14[12:0] );
1005 cam_hit1[14] = (( wr_data[13] == addr_bit4[14] ) | force_hit);
1006 cam_hit[14] = (cam_hit0[14] & cam_hit1[14]) & valid_bit[14];
1007 new_valid[14] = valid_bit[14] & ~( cam_hit[14] & inval_mask[14]);
1008
1009
1010 cam_hit0[15] = ( wr_data[12:0] == addr_array_15[12:0] );
1011 cam_hit1[15] = (( wr_data[13] == addr_bit4[15] ) | force_hit);
1012 cam_hit[15] = (cam_hit0[15] & cam_hit1[15]) & valid_bit[15];
1013 new_valid[15] = valid_bit[15] & ~( cam_hit[15] & inval_mask[15]);
1014
1015
1016 cam_hit0[16] = ( wr_data[12:0] == addr_array_16[12:0] );
1017 cam_hit1[16] = (( wr_data[13] == addr_bit4[16] ) | force_hit);
1018 cam_hit[16] = (cam_hit0[16] & cam_hit1[16]) & valid_bit[16];
1019 new_valid[16] = valid_bit[16] & ~( cam_hit[16] & inval_mask[16]);
1020
1021
1022 cam_hit0[17] = ( wr_data[12:0] == addr_array_17[12:0] );
1023 cam_hit1[17] = (( wr_data[13] == addr_bit4[17] ) | force_hit);
1024 cam_hit[17] = (cam_hit0[17] & cam_hit1[17]) & valid_bit[17];
1025 new_valid[17] = valid_bit[17] & ~( cam_hit[17] & inval_mask[17]);
1026
1027
1028 cam_hit0[18] = ( wr_data[12:0] == addr_array_18[12:0] );
1029 cam_hit1[18] = (( wr_data[13] == addr_bit4[18] ) | force_hit);
1030 cam_hit[18] = (cam_hit0[18] & cam_hit1[18]) & valid_bit[18];
1031 new_valid[18] = valid_bit[18] & ~( cam_hit[18] & inval_mask[18]);
1032
1033
1034 cam_hit0[19] = ( wr_data[12:0] == addr_array_19[12:0] );
1035 cam_hit1[19] = (( wr_data[13] == addr_bit4[19] ) | force_hit);
1036 cam_hit[19] = (cam_hit0[19] & cam_hit1[19]) & valid_bit[19];
1037 new_valid[19] = valid_bit[19] & ~( cam_hit[19] & inval_mask[19]);
1038
1039
1040 cam_hit0[20] = ( wr_data[12:0] == addr_array_20[12:0] );
1041 cam_hit1[20] = (( wr_data[13] == addr_bit4[20] ) | force_hit);
1042 cam_hit[20] = (cam_hit0[20] & cam_hit1[20]) & valid_bit[20];
1043 new_valid[20] = valid_bit[20] & ~( cam_hit[20] & inval_mask[20]);
1044
1045
1046 cam_hit0[21] = ( wr_data[12:0] == addr_array_21[12:0] );
1047 cam_hit1[21] = (( wr_data[13] == addr_bit4[21] ) | force_hit);
1048 cam_hit[21] = (cam_hit0[21] & cam_hit1[21]) & valid_bit[21];
1049 new_valid[21] = valid_bit[21] & ~( cam_hit[21] & inval_mask[21]);
1050
1051
1052 cam_hit0[22] = ( wr_data[12:0] == addr_array_22[12:0] );
1053 cam_hit1[22] = (( wr_data[13] == addr_bit4[22] ) | force_hit);
1054 cam_hit[22] = (cam_hit0[22] & cam_hit1[22]) & valid_bit[22];
1055 new_valid[22] = valid_bit[22] & ~( cam_hit[22] & inval_mask[22]);
1056
1057
1058 cam_hit0[23] = ( wr_data[12:0] == addr_array_23[12:0] );
1059 cam_hit1[23] = (( wr_data[13] == addr_bit4[23] ) | force_hit);
1060 cam_hit[23] = (cam_hit0[23] & cam_hit1[23]) & valid_bit[23];
1061 new_valid[23] = valid_bit[23] & ~( cam_hit[23] & inval_mask[23]);
1062
1063
1064 cam_hit0[24] = ( wr_data[12:0] == addr_array_24[12:0] );
1065 cam_hit1[24] = (( wr_data[13] == addr_bit4[24] ) | force_hit);
1066 cam_hit[24] = (cam_hit0[24] & cam_hit1[24]) & valid_bit[24];
1067 new_valid[24] = valid_bit[24] & ~( cam_hit[24] & inval_mask[24]);
1068
1069
1070 cam_hit0[25] = ( wr_data[12:0] == addr_array_25[12:0] );
1071 cam_hit1[25] = (( wr_data[13] == addr_bit4[25] ) | force_hit);
1072 cam_hit[25] = (cam_hit0[25] & cam_hit1[25]) & valid_bit[25];
1073 new_valid[25] = valid_bit[25] & ~( cam_hit[25] & inval_mask[25]);
1074
1075
1076 cam_hit0[26] = ( wr_data[12:0] == addr_array_26[12:0] );
1077 cam_hit1[26] = (( wr_data[13] == addr_bit4[26] ) | force_hit);
1078 cam_hit[26] = (cam_hit0[26] & cam_hit1[26]) & valid_bit[26];
1079 new_valid[26] = valid_bit[26] & ~( cam_hit[26] & inval_mask[26]);
1080
1081
1082 cam_hit0[27] = ( wr_data[12:0] == addr_array_27[12:0] );
1083 cam_hit1[27] = (( wr_data[13] == addr_bit4[27] ) | force_hit);
1084 cam_hit[27] = (cam_hit0[27] & cam_hit1[27]) & valid_bit[27];
1085 new_valid[27] = valid_bit[27] & ~( cam_hit[27] & inval_mask[27]);
1086
1087
1088 cam_hit0[28] = ( wr_data[12:0] == addr_array_28[12:0] );
1089 cam_hit1[28] = (( wr_data[13] == addr_bit4[28] ) | force_hit);
1090 cam_hit[28] = (cam_hit0[28] & cam_hit1[28]) & valid_bit[28];
1091 new_valid[28] = valid_bit[28] & ~( cam_hit[28] & inval_mask[28]);
1092
1093
1094 cam_hit0[29] = ( wr_data[12:0] == addr_array_29[12:0] );
1095 cam_hit1[29] = (( wr_data[13] == addr_bit4[29] ) | force_hit);
1096 cam_hit[29] = (cam_hit0[29] & cam_hit1[29]) & valid_bit[29];
1097 new_valid[29] = valid_bit[29] & ~( cam_hit[29] & inval_mask[29]);
1098
1099
1100 cam_hit0[30] = ( wr_data[12:0] == addr_array_30[12:0] );
1101 cam_hit1[30] = (( wr_data[13] == addr_bit4[30] ) | force_hit);
1102 cam_hit[30] = (cam_hit0[30] & cam_hit1[30]) & valid_bit[30];
1103 new_valid[30] = valid_bit[30] & ~( cam_hit[30] & inval_mask[30]);
1104
1105
1106 cam_hit0[31] = ( wr_data[12:0] == addr_array_31[12:0] );
1107 cam_hit1[31] = (( wr_data[13] == addr_bit4[31] ) | force_hit);
1108 cam_hit[31] = (cam_hit0[31] & cam_hit1[31]) & valid_bit[31];
1109 new_valid[31] = valid_bit[31] & ~( cam_hit[31] & inval_mask[31]);
1110
1111
1112 cam_hit0[32] = ( wr_data[12:0] == addr_array_32[12:0] );
1113 cam_hit1[32] = (( wr_data[13] == addr_bit4[32] ) | force_hit);
1114 cam_hit[32] = (cam_hit0[32] & cam_hit1[32]) & valid_bit[32];
1115 new_valid[32] = valid_bit[32] & ~( cam_hit[32] & inval_mask[32]);
1116
1117
1118 cam_hit0[33] = ( wr_data[12:0] == addr_array_33[12:0] );
1119 cam_hit1[33] = (( wr_data[13] == addr_bit4[33] ) | force_hit);
1120 cam_hit[33] = (cam_hit0[33] & cam_hit1[33]) & valid_bit[33];
1121 new_valid[33] = valid_bit[33] & ~( cam_hit[33] & inval_mask[33]);
1122
1123
1124 cam_hit0[34] = ( wr_data[12:0] == addr_array_34[12:0] );
1125 cam_hit1[34] = (( wr_data[13] == addr_bit4[34] ) | force_hit);
1126 cam_hit[34] = (cam_hit0[34] & cam_hit1[34]) & valid_bit[34];
1127 new_valid[34] = valid_bit[34] & ~( cam_hit[34] & inval_mask[34]);
1128
1129
1130 cam_hit0[35] = ( wr_data[12:0] == addr_array_35[12:0] );
1131 cam_hit1[35] = (( wr_data[13] == addr_bit4[35] ) | force_hit);
1132 cam_hit[35] = (cam_hit0[35] & cam_hit1[35]) & valid_bit[35];
1133 new_valid[35] = valid_bit[35] & ~( cam_hit[35] & inval_mask[35]);
1134
1135
1136 cam_hit0[36] = ( wr_data[12:0] == addr_array_36[12:0] );
1137 cam_hit1[36] = (( wr_data[13] == addr_bit4[36] ) | force_hit);
1138 cam_hit[36] = (cam_hit0[36] & cam_hit1[36]) & valid_bit[36];
1139 new_valid[36] = valid_bit[36] & ~( cam_hit[36] & inval_mask[36]);
1140
1141
1142 cam_hit0[37] = ( wr_data[12:0] == addr_array_37[12:0] );
1143 cam_hit1[37] = (( wr_data[13] == addr_bit4[37] ) | force_hit);
1144 cam_hit[37] = (cam_hit0[37] & cam_hit1[37]) & valid_bit[37];
1145 new_valid[37] = valid_bit[37] & ~( cam_hit[37] & inval_mask[37]);
1146
1147
1148 cam_hit0[38] = ( wr_data[12:0] == addr_array_38[12:0] );
1149 cam_hit1[38] = (( wr_data[13] == addr_bit4[38] ) | force_hit);
1150 cam_hit[38] = (cam_hit0[38] & cam_hit1[38]) & valid_bit[38];
1151 new_valid[38] = valid_bit[38] & ~( cam_hit[38] & inval_mask[38]);
1152
1153
1154 cam_hit0[39] = ( wr_data[12:0] == addr_array_39[12:0] );
1155 cam_hit1[39] = (( wr_data[13] == addr_bit4[39] ) | force_hit);
1156 cam_hit[39] = (cam_hit0[39] & cam_hit1[39]) & valid_bit[39];
1157 new_valid[39] = valid_bit[39] & ~( cam_hit[39] & inval_mask[39]);
1158
1159
1160 cam_hit0[40] = ( wr_data[12:0] == addr_array_40[12:0] );
1161 cam_hit1[40] = (( wr_data[13] == addr_bit4[40] ) | force_hit);
1162 cam_hit[40] = (cam_hit0[40] & cam_hit1[40]) & valid_bit[40];
1163 new_valid[40] = valid_bit[40] & ~( cam_hit[40] & inval_mask[40]);
1164
1165
1166 cam_hit0[41] = ( wr_data[12:0] == addr_array_41[12:0] );
1167 cam_hit1[41] = (( wr_data[13] == addr_bit4[41] ) | force_hit);
1168 cam_hit[41] = (cam_hit0[41] & cam_hit1[41]) & valid_bit[41];
1169 new_valid[41] = valid_bit[41] & ~( cam_hit[41] & inval_mask[41]);
1170
1171
1172 cam_hit0[42] = ( wr_data[12:0] == addr_array_42[12:0] );
1173 cam_hit1[42] = (( wr_data[13] == addr_bit4[42] ) | force_hit);
1174 cam_hit[42] = (cam_hit0[42] & cam_hit1[42]) & valid_bit[42];
1175 new_valid[42] = valid_bit[42] & ~( cam_hit[42] & inval_mask[42]);
1176
1177
1178 cam_hit0[43] = ( wr_data[12:0] == addr_array_43[12:0] );
1179 cam_hit1[43] = (( wr_data[13] == addr_bit4[43] ) | force_hit);
1180 cam_hit[43] = (cam_hit0[43] & cam_hit1[43]) & valid_bit[43];
1181 new_valid[43] = valid_bit[43] & ~( cam_hit[43] & inval_mask[43]);
1182
1183
1184 cam_hit0[44] = ( wr_data[12:0] == addr_array_44[12:0] );
1185 cam_hit1[44] = (( wr_data[13] == addr_bit4[44] ) | force_hit);
1186 cam_hit[44] = (cam_hit0[44] & cam_hit1[44]) & valid_bit[44];
1187 new_valid[44] = valid_bit[44] & ~( cam_hit[44] & inval_mask[44]);
1188
1189
1190 cam_hit0[45] = ( wr_data[12:0] == addr_array_45[12:0] );
1191 cam_hit1[45] = (( wr_data[13] == addr_bit4[45] ) | force_hit);
1192 cam_hit[45] = (cam_hit0[45] & cam_hit1[45]) & valid_bit[45];
1193 new_valid[45] = valid_bit[45] & ~( cam_hit[45] & inval_mask[45]);
1194
1195
1196 cam_hit0[46] = ( wr_data[12:0] == addr_array_46[12:0] );
1197 cam_hit1[46] = (( wr_data[13] == addr_bit4[46] ) | force_hit);
1198 cam_hit[46] = (cam_hit0[46] & cam_hit1[46]) & valid_bit[46];
1199 new_valid[46] = valid_bit[46] & ~( cam_hit[46] & inval_mask[46]);
1200
1201
1202 cam_hit0[47] = ( wr_data[12:0] == addr_array_47[12:0] );
1203 cam_hit1[47] = (( wr_data[13] == addr_bit4[47] ) | force_hit);
1204 cam_hit[47] = (cam_hit0[47] & cam_hit1[47]) & valid_bit[47];
1205 new_valid[47] = valid_bit[47] & ~( cam_hit[47] & inval_mask[47]);
1206
1207
1208 cam_hit0[48] = ( wr_data[12:0] == addr_array_48[12:0] );
1209 cam_hit1[48] = (( wr_data[13] == addr_bit4[48] ) | force_hit);
1210 cam_hit[48] = (cam_hit0[48] & cam_hit1[48]) & valid_bit[48];
1211 new_valid[48] = valid_bit[48] & ~( cam_hit[48] & inval_mask[48]);
1212
1213
1214 cam_hit0[49] = ( wr_data[12:0] == addr_array_49[12:0] );
1215 cam_hit1[49] = (( wr_data[13] == addr_bit4[49] ) | force_hit);
1216 cam_hit[49] = (cam_hit0[49] & cam_hit1[49]) & valid_bit[49];
1217 new_valid[49] = valid_bit[49] & ~( cam_hit[49] & inval_mask[49]);
1218
1219
1220 cam_hit0[50] = ( wr_data[12:0] == addr_array_50[12:0] );
1221 cam_hit1[50] = (( wr_data[13] == addr_bit4[50] ) | force_hit);
1222 cam_hit[50] = (cam_hit0[50] & cam_hit1[50]) & valid_bit[50];
1223 new_valid[50] = valid_bit[50] & ~( cam_hit[50] & inval_mask[50]);
1224
1225
1226 cam_hit0[51] = ( wr_data[12:0] == addr_array_51[12:0] );
1227 cam_hit1[51] = (( wr_data[13] == addr_bit4[51] ) | force_hit);
1228 cam_hit[51] = (cam_hit0[51] & cam_hit1[51]) & valid_bit[51];
1229 new_valid[51] = valid_bit[51] & ~( cam_hit[51] & inval_mask[51]);
1230
1231
1232 cam_hit0[52] = ( wr_data[12:0] == addr_array_52[12:0] );
1233 cam_hit1[52] = (( wr_data[13] == addr_bit4[52] ) | force_hit);
1234 cam_hit[52] = (cam_hit0[52] & cam_hit1[52]) & valid_bit[52];
1235 new_valid[52] = valid_bit[52] & ~( cam_hit[52] & inval_mask[52]);
1236
1237
1238 cam_hit0[53] = ( wr_data[12:0] == addr_array_53[12:0] );
1239 cam_hit1[53] = (( wr_data[13] == addr_bit4[53] ) | force_hit);
1240 cam_hit[53] = (cam_hit0[53] & cam_hit1[53]) & valid_bit[53];
1241 new_valid[53] = valid_bit[53] & ~( cam_hit[53] & inval_mask[53]);
1242
1243
1244 cam_hit0[54] = ( wr_data[12:0] == addr_array_54[12:0] );
1245 cam_hit1[54] = (( wr_data[13] == addr_bit4[54] ) | force_hit);
1246 cam_hit[54] = (cam_hit0[54] & cam_hit1[54]) & valid_bit[54];
1247 new_valid[54] = valid_bit[54] & ~( cam_hit[54] & inval_mask[54]);
1248
1249
1250 cam_hit0[55] = ( wr_data[12:0] == addr_array_55[12:0] );
1251 cam_hit1[55] = (( wr_data[13] == addr_bit4[55] ) | force_hit);
1252 cam_hit[55] = (cam_hit0[55] & cam_hit1[55]) & valid_bit[55];
1253 new_valid[55] = valid_bit[55] & ~( cam_hit[55] & inval_mask[55]);
1254
1255
1256 cam_hit0[56] = ( wr_data[12:0] == addr_array_56[12:0] );
1257 cam_hit1[56] = (( wr_data[13] == addr_bit4[56] ) | force_hit);
1258 cam_hit[56] = (cam_hit0[56] & cam_hit1[56]) & valid_bit[56];
1259 new_valid[56] = valid_bit[56] & ~( cam_hit[56] & inval_mask[56]);
1260
1261
1262 cam_hit0[57] = ( wr_data[12:0] == addr_array_57[12:0] );
1263 cam_hit1[57] = (( wr_data[13] == addr_bit4[57] ) | force_hit);
1264 cam_hit[57] = (cam_hit0[57] & cam_hit1[57]) & valid_bit[57];
1265 new_valid[57] = valid_bit[57] & ~( cam_hit[57] & inval_mask[57]);
1266
1267
1268 cam_hit0[58] = ( wr_data[12:0] == addr_array_58[12:0] );
1269 cam_hit1[58] = (( wr_data[13] == addr_bit4[58] ) | force_hit);
1270 cam_hit[58] = (cam_hit0[58] & cam_hit1[58]) & valid_bit[58];
1271 new_valid[58] = valid_bit[58] & ~( cam_hit[58] & inval_mask[58]);
1272
1273
1274 cam_hit0[59] = ( wr_data[12:0] == addr_array_59[12:0] );
1275 cam_hit1[59] = (( wr_data[13] == addr_bit4[59] ) | force_hit);
1276 cam_hit[59] = (cam_hit0[59] & cam_hit1[59]) & valid_bit[59];
1277 new_valid[59] = valid_bit[59] & ~( cam_hit[59] & inval_mask[59]);
1278
1279
1280 cam_hit0[60] = ( wr_data[12:0] == addr_array_60[12:0] );
1281 cam_hit1[60] = (( wr_data[13] == addr_bit4[60] ) | force_hit);
1282 cam_hit[60] = (cam_hit0[60] & cam_hit1[60]) & valid_bit[60];
1283 new_valid[60] = valid_bit[60] & ~( cam_hit[60] & inval_mask[60]);
1284
1285
1286 cam_hit0[61] = ( wr_data[12:0] == addr_array_61[12:0] );
1287 cam_hit1[61] = (( wr_data[13] == addr_bit4[61] ) | force_hit);
1288 cam_hit[61] = (cam_hit0[61] & cam_hit1[61]) & valid_bit[61];
1289 new_valid[61] = valid_bit[61] & ~( cam_hit[61] & inval_mask[61]);
1290
1291
1292 cam_hit0[62] = ( wr_data[12:0] == addr_array_62[12:0] );
1293 cam_hit1[62] = (( wr_data[13] == addr_bit4[62] ) | force_hit);
1294 cam_hit[62] = (cam_hit0[62] & cam_hit1[62]) & valid_bit[62];
1295 new_valid[62] = valid_bit[62] & ~( cam_hit[62] & inval_mask[62]);
1296
1297
1298 cam_hit0[63] = ( wr_data[12:0] == addr_array_63[12:0] );
1299 cam_hit1[63] = (( wr_data[13] == addr_bit4[63] ) | force_hit);
1300 cam_hit[63] = (cam_hit0[63] & cam_hit1[63]) & valid_bit[63];
1301 new_valid[63] = valid_bit[63] & ~( cam_hit[63] & inval_mask[63]);
1302
1303
1304
1305 lkup_hit <= cam_hit; // RACE FIX
1306
1307
1308 end
1309
1310 else if(l2clk)
1311 begin
1312 lkup_hit <= 64'b0; // RACE FIX
1313 new_valid <= valid_bit;
1314 end
1315
1316end
1317
1318
1319////////////////////////////////////////////////////////////
1320// READ/WRITE OPERATION
1321// Phase 1 RD
1322////////////////////////////////////////////////////////////
1323
1324//initial
1325//begin
1326// addr_bit4 = 64'b0;
1327//end
1328
1329always @(l2clk or write_disable or rd_en or wr_en or cam_en or bypass or valid or rst_warm or wr_data )
1330begin
1331 if (bypass)
1332 rd_data[15:0] <= wr_data[15:0];
1333 else if ((rst_warm & ~write_disable))
1334 begin
1335 rd_data[15:0] <= 16'b0;
1336 valid[63:0] <= 64'b0;
1337 end
1338 else if ((rst_warm & write_disable))
1339 begin
1340 rd_data[15:0] <= 16'b0;
1341 end
1342 if(l2clk & rd_en & ~write_disable & ~bypass & ~rst_warm) // RD
1343 begin
1344 if(wr_en)
1345 begin
1346 rd_data <= 16'bx;
1347// should put in <fire -active wr_en -message "L2_DIR_ERR: read and write conflict"
1348 end
1349 else
1350 begin
1351 rd_data <= { valid[rw_addr], parity[rw_addr], addr_bit4[rw_addr], addr_array[rw_addr] };
1352 end
1353 end // of if rd_en
1354
1355 if(l2clk & wr_en & ~write_disable & ~bypass & ~rst_warm & ~cam_en) // WR
1356 begin
1357 if(rd_en) // RESET
1358 begin
1359 rd_data <= 16'bx;
1360 addr_array[rw_addr] <= 13'bx;
1361 addr_bit4[rw_addr] <= 1'bx;
1362 parity[rw_addr] <= 1'bx;
1363 valid[rw_addr] <= 1'bx;
1364 end
1365 else
1366 begin
1367 addr_array[rw_addr] <= wr_data[12:0] ; // BS and SR 11/18/03 Reverse Directory change
1368 addr_bit4[rw_addr] <= wr_data[13] ; // BS and SR 11/18/03 Reverse Directory change
1369 parity[rw_addr] <= wr_data[14] ; // BS and SR 11/18/03 Reverse Directory change
1370 valid[rw_addr] <= wr_data[15] ; // BS and SR 11/18/03 Reverse Directory change
1371// should put in <fire -active cam_en -message "L2_DIR_ERR : cam/wr conflict"
1372 end
1373 end
1374// if(~l2clk & cam_en & ~write_disable) // CAM
1375 if(~l2clk & ~write_disable) // CAM
1376 begin
1377 if (lkup_hit[0]) valid[0] <= new_valid[0];
1378 if (lkup_hit[1]) valid[1] <= new_valid[1];
1379 if (lkup_hit[2]) valid[2] <= new_valid[2];
1380 if (lkup_hit[3]) valid[3] <= new_valid[3];
1381 if (lkup_hit[4]) valid[4] <= new_valid[4];
1382 if (lkup_hit[5]) valid[5] <= new_valid[5];
1383 if (lkup_hit[6]) valid[6] <= new_valid[6];
1384 if (lkup_hit[7]) valid[7] <= new_valid[7];
1385 if (lkup_hit[8]) valid[8] <= new_valid[8];
1386 if (lkup_hit[9]) valid[9] <= new_valid[9];
1387 if (lkup_hit[10]) valid[10] <= new_valid[10];
1388 if (lkup_hit[11]) valid[11] <= new_valid[11];
1389 if (lkup_hit[12]) valid[12] <= new_valid[12];
1390 if (lkup_hit[13]) valid[13] <= new_valid[13];
1391 if (lkup_hit[14]) valid[14] <= new_valid[14];
1392 if (lkup_hit[15]) valid[15] <= new_valid[15];
1393 if (lkup_hit[16]) valid[16] <= new_valid[16];
1394 if (lkup_hit[17]) valid[17] <= new_valid[17];
1395 if (lkup_hit[18]) valid[18] <= new_valid[18];
1396 if (lkup_hit[19]) valid[19] <= new_valid[19];
1397 if (lkup_hit[20]) valid[20] <= new_valid[20];
1398 if (lkup_hit[21]) valid[21] <= new_valid[21];
1399 if (lkup_hit[22]) valid[22] <= new_valid[22];
1400 if (lkup_hit[23]) valid[23] <= new_valid[23];
1401 if (lkup_hit[24]) valid[24] <= new_valid[24];
1402 if (lkup_hit[25]) valid[25] <= new_valid[25];
1403 if (lkup_hit[26]) valid[26] <= new_valid[26];
1404 if (lkup_hit[27]) valid[27] <= new_valid[27];
1405 if (lkup_hit[28]) valid[28] <= new_valid[28];
1406 if (lkup_hit[29]) valid[29] <= new_valid[29];
1407 if (lkup_hit[30]) valid[30] <= new_valid[30];
1408 if (lkup_hit[31]) valid[31] <= new_valid[31];
1409 if (lkup_hit[32]) valid[32] <= new_valid[32];
1410 if (lkup_hit[33]) valid[33] <= new_valid[33];
1411 if (lkup_hit[34]) valid[34] <= new_valid[34];
1412 if (lkup_hit[35]) valid[35] <= new_valid[35];
1413 if (lkup_hit[36]) valid[36] <= new_valid[36];
1414 if (lkup_hit[37]) valid[37] <= new_valid[37];
1415 if (lkup_hit[38]) valid[38] <= new_valid[38];
1416 if (lkup_hit[39]) valid[39] <= new_valid[39];
1417 if (lkup_hit[40]) valid[40] <= new_valid[40];
1418 if (lkup_hit[41]) valid[41] <= new_valid[41];
1419 if (lkup_hit[42]) valid[42] <= new_valid[42];
1420 if (lkup_hit[43]) valid[43] <= new_valid[43];
1421 if (lkup_hit[44]) valid[44] <= new_valid[44];
1422 if (lkup_hit[45]) valid[45] <= new_valid[45];
1423 if (lkup_hit[46]) valid[46] <= new_valid[46];
1424 if (lkup_hit[47]) valid[47] <= new_valid[47];
1425 if (lkup_hit[48]) valid[48] <= new_valid[48];
1426 if (lkup_hit[49]) valid[49] <= new_valid[49];
1427 if (lkup_hit[50]) valid[50] <= new_valid[50];
1428 if (lkup_hit[51]) valid[51] <= new_valid[51];
1429 if (lkup_hit[52]) valid[52] <= new_valid[52];
1430 if (lkup_hit[53]) valid[53] <= new_valid[53];
1431 if (lkup_hit[54]) valid[54] <= new_valid[54];
1432 if (lkup_hit[55]) valid[55] <= new_valid[55];
1433 if (lkup_hit[56]) valid[56] <= new_valid[56];
1434 if (lkup_hit[57]) valid[57] <= new_valid[57];
1435 if (lkup_hit[58]) valid[58] <= new_valid[58];
1436 if (lkup_hit[59]) valid[59] <= new_valid[59];
1437 if (lkup_hit[60]) valid[60] <= new_valid[60];
1438 if (lkup_hit[61]) valid[61] <= new_valid[61];
1439 if (lkup_hit[62]) valid[62] <= new_valid[62];
1440 if (lkup_hit[63]) valid[63] <= new_valid[63];
1441 end
1442end
1443
1444endmodule
1445