Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / libs / n2sram / cams / n2_com_cm_32x40_cust_l / n2_com_cm_32x40_cust / rtl / n2_com_cm_32x40_cust.v
CommitLineData
86530b38
AT
1// ========== Copyright Header Begin ==========================================
2//
3// OpenSPARC T2 Processor File: n2_com_cm_32x40_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_32x40_cust (
36 adr_w,
37 din,
38 write_en,
39 tcu_array_wr_inhibit,
40 adr_r,
41 read_en,
42 lookup_en,
43 key,
44 l2clk,
45 tcu_se_scancollar_in,
46 scan_in,
47 tcu_pce_ov,
48 pce,
49 tcu_aclk,
50 tcu_bclk,
51 tcu_scan_en,
52 tcu_clk_stop,
53 tcu_array_bypass,
54 scan_out,
55 match,
56 match_idx,
57 dout);
58wire siclk;
59wire soclk;
60wire pce_ov;
61wire l1clk_in;
62wire l1clk_en;
63wire [142:0] so;
64wire [152:0] xx_unused;
65wire [152:0] xx0_unused;
66wire [41:0] din_d1;
67wire [41:7] key_d1;
68wire lkup_so;
69wire lookup_en_d1;
70wire mb_ren_d1;
71wire mb_wen_d1;
72wire [31:0] adr_r_d1;
73wire [31:0] adr_w_d1;
74
75
76input [31:0] adr_w ; // set up to +ve edge, BS & SR 11/04/03, MB grows to 32
77input [41:0] din; // set up to +ve edge
78input write_en; // +ve edge clk; write enable
79input tcu_array_wr_inhibit; // used to gate off writes during SCAN.
80input [31:0] adr_r; // set up to +ve edge, BS & SR 11/04/03, MB grows to 32
81input read_en;
82input lookup_en; // set up to -ve edge
83input [41:7] key; // set up to -ve edge
84input l2clk ;
85input tcu_se_scancollar_in;
86input scan_in;
87input tcu_pce_ov;
88input pce;
89input tcu_aclk;
90input tcu_bclk;
91input tcu_scan_en;
92input tcu_clk_stop;
93input tcu_array_bypass; // array bypass for DFT
94
95output scan_out;
96output [31:0] match ;
97output [31:0] match_idx ;
98output [41:0] dout;
99
100// JDL 05/17/07
101// synopsys translate_off
102
103wire [41:0] dout_array;
104wire [31:0] match_array;
105wire [31:0] match_idx_array;
106
107// scan chain connections ////
108wire stop;
109assign siclk = tcu_aclk;
110assign soclk = tcu_bclk;
111//assign se = tcu_scan_en;
112assign stop = tcu_clk_stop;
113assign pce_ov = tcu_pce_ov;
114
115assign dout = dout_array;
116
117//// Input Flops /////
118
119
120///////////
121n2_com_cm_32x40_cust_l1clkhdr_ctl_macro collar_in
122 (
123 .l2clk (l2clk ),
124 .l1en (pce ),
125 .pce_ov (pce_ov ),
126 .stop (stop ),
127 .se (tcu_se_scancollar_in),
128 .l1clk (l1clk_in )
129 );
130
131n2_com_cm_32x40_cust_l1clkhdr_ctl_macro scan_en
132 (
133 .l2clk (l2clk ),
134 .l1en (pce ),
135 .pce_ov (pce_ov ),
136 .stop (stop ),
137 .se (tcu_scan_en),
138 .l1clk (l1clk_en )
139 );
140
141
142
143n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx0 (.scan_in(scan_in), .scan_out(so[0]), .l1clk(l1clk_in), .d(din[0]), .latout(xx_unused[0]), .q_l(xx0_unused[0]), .q(din_d1[0]),
144 .siclk(siclk),
145 .soclk(soclk));
146n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx1 (.scan_in(so[0]), .scan_out(so[1]), .l1clk(l1clk_in), .d(din[1]), .latout(xx_unused[1]), .q_l(xx0_unused[1]), .q(din_d1[1]),
147 .siclk(siclk),
148 .soclk(soclk));
149n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx2 (.scan_in(so[1]), .scan_out(so[2]), .l1clk(l1clk_in), .d(din[2]), .latout(xx_unused[2]), .q_l(xx0_unused[2]), .q(din_d1[2]),
150 .siclk(siclk),
151 .soclk(soclk));
152n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx3 (.scan_in(so[2]), .scan_out(so[3]), .l1clk(l1clk_in), .d(din[3]), .latout(xx_unused[3]), .q_l(xx0_unused[3]), .q(din_d1[3]),
153 .siclk(siclk),
154 .soclk(soclk));
155n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx4 (.scan_in(so[3]), .scan_out(so[4]), .l1clk(l1clk_in), .d(din[4]), .latout(xx_unused[4]), .q_l(xx0_unused[4]), .q(din_d1[4]),
156 .siclk(siclk),
157 .soclk(soclk));
158n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx5 (.scan_in(so[4]), .scan_out(so[5]), .l1clk(l1clk_in), .d(din[5]), .latout(xx_unused[5]), .q_l(xx0_unused[5]), .q(din_d1[5]),
159 .siclk(siclk),
160 .soclk(soclk));
161n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx6 (.scan_in(so[5]), .scan_out(so[6]), .l1clk(l1clk_in), .d(din[6]), .latout(xx_unused[6]), .q_l(xx0_unused[6]), .q(din_d1[6]),
162 .siclk(siclk),
163 .soclk(soclk));
164n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx7 (.scan_in(so[6]), .scan_out(so[7]), .l1clk(l1clk_in), .d(din[9]), .latout(xx_unused[7]), .q_l(xx0_unused[7]), .q(din_d1[9]),
165 .siclk(siclk),
166 .soclk(soclk));
167n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx8 (.scan_in(so[7]), .scan_out(so[8]), .l1clk(l1clk_in), .d(din[10]), .latout(xx_unused[8]), .q_l(xx0_unused[8]), .q(din_d1[10]),
168 .siclk(siclk),
169 .soclk(soclk));
170n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx9 (.scan_in(so[8]), .scan_out(so[9]), .l1clk(l1clk_in), .d(din[11]), .latout(xx_unused[9]), .q_l(xx0_unused[9]), .q(din_d1[11]),
171 .siclk(siclk),
172 .soclk(soclk));
173n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx10 (.scan_in(so[9]), .scan_out(so[10]), .l1clk(l1clk_in), .d(din[12]), .latout(xx_unused[10]), .q_l(xx0_unused[10]), .q(din_d1[12]),
174 .siclk(siclk),
175 .soclk(soclk));
176n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx11 (.scan_in(so[10]), .scan_out(so[11]), .l1clk(l1clk_in), .d(din[13]), .latout(xx_unused[11]), .q_l(xx0_unused[11]), .q(din_d1[13]),
177 .siclk(siclk),
178 .soclk(soclk));
179n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx12 (.scan_in(so[11]), .scan_out(so[12]), .l1clk(l1clk_in), .d(din[14]), .latout(xx_unused[12]), .q_l(xx0_unused[12]), .q(din_d1[14]),
180 .siclk(siclk),
181 .soclk(soclk));
182n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx13 (.scan_in(so[12]), .scan_out(so[13]), .l1clk(l1clk_in), .d(din[15]), .latout(xx_unused[13]), .q_l(xx0_unused[13]), .q(din_d1[15]),
183 .siclk(siclk),
184 .soclk(soclk));
185n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx14 (.scan_in(so[13]), .scan_out(so[14]), .l1clk(l1clk_in), .d(din[16]), .latout(xx_unused[14]), .q_l(xx0_unused[14]), .q(din_d1[16]),
186 .siclk(siclk),
187 .soclk(soclk));
188n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx15 (.scan_in(so[14]), .scan_out(so[15]), .l1clk(l1clk_in), .d(din[17]), .latout(xx_unused[15]), .q_l(xx0_unused[15]), .q(din_d1[17]),
189 .siclk(siclk),
190 .soclk(soclk));
191n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx16 (.scan_in(so[15]), .scan_out(so[16]), .l1clk(l1clk_in), .d(din[7]), .latout(xx_unused[16]), .q_l(xx0_unused[16]), .q(din_d1[7]),
192 .siclk(siclk),
193 .soclk(soclk));
194n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx17 (.scan_in(so[16]), .scan_out(so[17]), .l1clk(l1clk_in), .d(din[8]), .latout(xx_unused[17]), .q_l(xx0_unused[17]), .q(din_d1[8]),
195 .siclk(siclk),
196 .soclk(soclk));
197n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx18 (.scan_in(so[17]), .scan_out(so[18]), .l1clk(l1clk_in), .d(din[18]), .latout(xx_unused[18]), .q_l(xx0_unused[18]), .q(din_d1[18]),
198 .siclk(siclk),
199 .soclk(soclk));
200n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx19 (.scan_in(so[18]), .scan_out(so[19]), .l1clk(l1clk_in), .d(din[19]), .latout(xx_unused[19]), .q_l(xx0_unused[19]), .q(din_d1[19]),
201 .siclk(siclk),
202 .soclk(soclk));
203n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx20 (.scan_in(so[19]), .scan_out(so[20]), .l1clk(l1clk_in), .d(din[20]), .latout(xx_unused[20]), .q_l(xx0_unused[20]), .q(din_d1[20]),
204 .siclk(siclk),
205 .soclk(soclk));
206n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx21 (.scan_in(so[20]), .scan_out(so[21]), .l1clk(l1clk_in), .d(din[21]), .latout(xx_unused[21]), .q_l(xx0_unused[21]), .q(din_d1[21]),
207 .siclk(siclk),
208 .soclk(soclk));
209n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx22 (.scan_in(so[21]), .scan_out(so[22]), .l1clk(l1clk_in), .d(din[22]), .latout(xx_unused[22]), .q_l(xx0_unused[22]), .q(din_d1[22]),
210 .siclk(siclk),
211 .soclk(soclk));
212n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx23 (.scan_in(so[22]), .scan_out(so[23]), .l1clk(l1clk_in), .d(din[23]), .latout(xx_unused[23]), .q_l(xx0_unused[23]), .q(din_d1[23]),
213 .siclk(siclk),
214 .soclk(soclk));
215n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx24 (.scan_in(so[23]), .scan_out(so[24]), .l1clk(l1clk_in), .d(din[24]), .latout(xx_unused[24]), .q_l(xx0_unused[24]), .q(din_d1[24]),
216 .siclk(siclk),
217 .soclk(soclk));
218n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx25 (.scan_in(so[24]), .scan_out(so[25]), .l1clk(l1clk_in), .d(din[25]), .latout(xx_unused[25]), .q_l(xx0_unused[25]), .q(din_d1[25]),
219 .siclk(siclk),
220 .soclk(soclk));
221n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx26 (.scan_in(so[25]), .scan_out(so[26]), .l1clk(l1clk_in), .d(din[26]), .latout(xx_unused[26]), .q_l(xx0_unused[26]), .q(din_d1[26]),
222 .siclk(siclk),
223 .soclk(soclk));
224n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx27 (.scan_in(so[26]), .scan_out(so[27]), .l1clk(l1clk_in), .d(din[27]), .latout(xx_unused[27]), .q_l(xx0_unused[27]), .q(din_d1[27]),
225 .siclk(siclk),
226 .soclk(soclk));
227n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx28 (.scan_in(so[27]), .scan_out(so[28]), .l1clk(l1clk_in), .d(din[28]), .latout(xx_unused[28]), .q_l(xx0_unused[28]), .q(din_d1[28]),
228 .siclk(siclk),
229 .soclk(soclk));
230n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx29 (.scan_in(so[28]), .scan_out(so[29]), .l1clk(l1clk_in), .d(din[29]), .latout(xx_unused[29]), .q_l(xx0_unused[29]), .q(din_d1[29]),
231 .siclk(siclk),
232 .soclk(soclk));
233n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx30 (.scan_in(so[29]), .scan_out(so[30]), .l1clk(l1clk_in), .d(din[30]), .latout(xx_unused[30]), .q_l(xx0_unused[30]), .q(din_d1[30]),
234 .siclk(siclk),
235 .soclk(soclk));
236n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx31 (.scan_in(so[30]), .scan_out(so[31]), .l1clk(l1clk_in), .d(din[31]), .latout(xx_unused[31]), .q_l(xx0_unused[31]), .q(din_d1[31]),
237 .siclk(siclk),
238 .soclk(soclk));
239n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx32 (.scan_in(so[31]), .scan_out(so[32]), .l1clk(l1clk_in), .d(din[32]), .latout(xx_unused[32]), .q_l(xx0_unused[32]), .q(din_d1[32]),
240 .siclk(siclk),
241 .soclk(soclk));
242n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx33 (.scan_in(so[32]), .scan_out(so[33]), .l1clk(l1clk_in), .d(din[33]), .latout(xx_unused[33]), .q_l(xx0_unused[33]), .q(din_d1[33]),
243 .siclk(siclk),
244 .soclk(soclk));
245n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx34 (.scan_in(so[33]), .scan_out(so[34]), .l1clk(l1clk_in), .d(din[34]), .latout(xx_unused[34]), .q_l(xx0_unused[34]), .q(din_d1[34]),
246 .siclk(siclk),
247 .soclk(soclk));
248n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx35 (.scan_in(so[34]), .scan_out(so[35]), .l1clk(l1clk_in), .d(din[35]), .latout(xx_unused[35]), .q_l(xx0_unused[35]), .q(din_d1[35]),
249 .siclk(siclk),
250 .soclk(soclk));
251n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx36 (.scan_in(so[35]), .scan_out(so[36]), .l1clk(l1clk_in), .d(din[36]), .latout(xx_unused[36]), .q_l(xx0_unused[36]), .q(din_d1[36]),
252 .siclk(siclk),
253 .soclk(soclk));
254n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx37 (.scan_in(so[36]), .scan_out(so[37]), .l1clk(l1clk_in), .d(din[37]), .latout(xx_unused[37]), .q_l(xx0_unused[37]), .q(din_d1[37]),
255 .siclk(siclk),
256 .soclk(soclk));
257n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx38 (.scan_in(so[37]), .scan_out(so[38]), .l1clk(l1clk_in), .d(din[38]), .latout(xx_unused[38]), .q_l(xx0_unused[38]), .q(din_d1[38]),
258 .siclk(siclk),
259 .soclk(soclk));
260n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx39 (.scan_in(so[38]), .scan_out(so[39]), .l1clk(l1clk_in), .d(din[39]), .latout(xx_unused[39]), .q_l(xx0_unused[39]), .q(din_d1[39]),
261 .siclk(siclk),
262 .soclk(soclk));
263n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx40 (.scan_in(so[39]), .scan_out(so[40]), .l1clk(l1clk_in), .d(din[40]), .latout(xx_unused[40]), .q_l(xx0_unused[40]), .q(din_d1[40]),
264 .siclk(siclk),
265 .soclk(soclk));
266n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx41 (.scan_in(so[40]), .scan_out(so[41]), .l1clk(l1clk_in), .d(din[41]), .latout(xx_unused[41]), .q_l(xx0_unused[41]), .q(din_d1[41]),
267 .siclk(siclk),
268 .soclk(soclk));
269n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx42 (.scan_in(so[41]), .scan_out(so[42]), .l1clk(l1clk_in), .d(key[41]), .latout(key_d1[41]), .q_l(xx0_unused[42]), .q(xx_unused[42]),
270 .siclk(siclk),
271 .soclk(soclk));
272n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx43 (.scan_in(so[42]), .scan_out(so[43]), .l1clk(l1clk_in), .d(key[40]), .latout(key_d1[40]), .q_l(xx0_unused[43]), .q(xx_unused[43]),
273 .siclk(siclk),
274 .soclk(soclk));
275n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx44 (.scan_in(so[43]), .scan_out(so[44]), .l1clk(l1clk_in), .d(key[39]), .latout(key_d1[39]), .q_l(xx0_unused[44]), .q(xx_unused[44]),
276 .siclk(siclk),
277 .soclk(soclk));
278n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx45 (.scan_in(so[44]), .scan_out(so[45]), .l1clk(l1clk_in), .d(key[38]), .latout(key_d1[38]), .q_l(xx0_unused[45]), .q(xx_unused[45]),
279 .siclk(siclk),
280 .soclk(soclk));
281
282
283
284
285
286n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx46 (.scan_in(so[45]), .scan_out(lkup_so), .l1clk(l1clk_in), .d(lookup_en), .latout(lookup_en_d1), .q_l(xx0_unused[46]), .q(xx_unused[46]),
287 .siclk(siclk),
288 .soclk(soclk));
289n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx47 (.scan_in(lkup_so), .scan_out(so[46]), .l1clk(l1clk_in), .d(key[37]), .latout(key_d1[37]), .q_l(xx0_unused[47]), .q(xx_unused[47]),
290 .siclk(siclk),
291 .soclk(soclk));
292n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx48 (.scan_in(so[46]), .scan_out(so[47]), .l1clk(l1clk_in), .d(key[36]), .latout(key_d1[36]), .q_l(xx0_unused[48]), .q(xx_unused[48]),
293 .siclk(siclk),
294 .soclk(soclk));
295n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx49 (.scan_in(so[47]), .scan_out(so[48]), .l1clk(l1clk_in), .d(key[35]), .latout(key_d1[35]), .q_l(xx0_unused[49]), .q(xx_unused[49]),
296 .siclk(siclk),
297 .soclk(soclk));
298n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx50 (.scan_in(so[48]), .scan_out(so[49]), .l1clk(l1clk_in), .d(key[34]), .latout(key_d1[34]), .q_l(xx0_unused[50]), .q(xx_unused[50]),
299 .siclk(siclk),
300 .soclk(soclk));
301n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx51 (.scan_in(so[49]), .scan_out(so[50]), .l1clk(l1clk_in), .d(key[33]), .latout(key_d1[33]), .q_l(xx0_unused[51]), .q(xx_unused[51]),
302 .siclk(siclk),
303 .soclk(soclk));
304n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx52 (.scan_in(so[50]), .scan_out(so[51]), .l1clk(l1clk_in), .d(key[32]), .latout(key_d1[32]), .q_l(xx0_unused[52]), .q(xx_unused[52]),
305 .siclk(siclk),
306 .soclk(soclk));
307n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx53 (.scan_in(so[51]), .scan_out(so[52]), .l1clk(l1clk_in), .d(key[31]), .latout(key_d1[31]), .q_l(xx0_unused[53]), .q(xx_unused[53]),
308 .siclk(siclk),
309 .soclk(soclk));
310n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx54 (.scan_in(so[52]), .scan_out(so[53]), .l1clk(l1clk_in), .d(key[30]), .latout(key_d1[30]), .q_l(xx0_unused[54]), .q(xx_unused[54]),
311 .siclk(siclk),
312 .soclk(soclk));
313n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx55 (.scan_in(so[53]), .scan_out(so[54]), .l1clk(l1clk_in), .d(key[29]), .latout(key_d1[29]), .q_l(xx0_unused[55]), .q(xx_unused[55]),
314 .siclk(siclk),
315 .soclk(soclk));
316n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx56 (.scan_in(so[54]), .scan_out(so[55]), .l1clk(l1clk_in), .d(key[28]), .latout(key_d1[28]), .q_l(xx0_unused[56]), .q(xx_unused[56]),
317 .siclk(siclk),
318 .soclk(soclk));
319n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx57 (.scan_in(so[55]), .scan_out(so[56]), .l1clk(l1clk_in), .d(key[27]), .latout(key_d1[27]), .q_l(xx0_unused[57]), .q(xx_unused[57]),
320 .siclk(siclk),
321 .soclk(soclk));
322n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx58 (.scan_in(so[56]), .scan_out(so[57]), .l1clk(l1clk_in), .d(key[26]), .latout(key_d1[26]), .q_l(xx0_unused[58]), .q(xx_unused[58]),
323 .siclk(siclk),
324 .soclk(soclk));
325n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx59 (.scan_in(so[57]), .scan_out(so[58]), .l1clk(l1clk_in), .d(key[25]), .latout(key_d1[25]), .q_l(xx0_unused[59]), .q(xx_unused[59]),
326 .siclk(siclk),
327 .soclk(soclk));
328n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx60 (.scan_in(so[58]), .scan_out(so[59]), .l1clk(l1clk_in), .d(key[24]), .latout(key_d1[24]), .q_l(xx0_unused[60]), .q(xx_unused[60]),
329 .siclk(siclk),
330 .soclk(soclk));
331n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx61 (.scan_in(so[59]), .scan_out(so[60]), .l1clk(l1clk_in), .d(key[23]), .latout(key_d1[23]), .q_l(xx0_unused[70]), .q(xx_unused[70]),
332 .siclk(siclk),
333 .soclk(soclk));
334n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx62 (.scan_in(so[60]), .scan_out(so[61]), .l1clk(l1clk_in), .d(key[22]), .latout(key_d1[22]), .q_l(xx0_unused[71]), .q(xx_unused[71]),
335 .siclk(siclk),
336 .soclk(soclk));
337n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx63 (.scan_in(so[61]), .scan_out(so[62]), .l1clk(l1clk_in), .d(key[21]), .latout(key_d1[21]), .q_l(xx0_unused[72]), .q(xx_unused[72]),
338 .siclk(siclk),
339 .soclk(soclk));
340n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx64 (.scan_in(so[62]), .scan_out(so[63]), .l1clk(l1clk_in), .d(key[20]), .latout(key_d1[20]), .q_l(xx0_unused[73]), .q(xx_unused[73]),
341 .siclk(siclk),
342 .soclk(soclk));
343n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx65 (.scan_in(so[63]), .scan_out(so[64]), .l1clk(l1clk_in), .d(key[19]), .latout(key_d1[19]), .q_l(xx0_unused[74]), .q(xx_unused[74]),
344 .siclk(siclk),
345 .soclk(soclk));
346n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx66 (.scan_in(so[64]), .scan_out(so[65]), .l1clk(l1clk_in), .d(key[18]), .latout(key_d1[18]), .q_l(xx0_unused[75]), .q(xx_unused[75]),
347 .siclk(siclk),
348 .soclk(soclk));
349n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx67 (.scan_in(so[65]), .scan_out(so[66]), .l1clk(l1clk_in), .d(key[8]), .latout(key_d1[8]), .q_l(xx0_unused[76]), .q(xx_unused[76]),
350 .siclk(siclk),
351 .soclk(soclk));
352n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx68 (.scan_in(so[66]), .scan_out(so[67]), .l1clk(l1clk_in), .d(key[7]), .latout(key_d1[7]), .q_l(xx0_unused[77]), .q(xx_unused[77]),
353 .siclk(siclk),
354 .soclk(soclk));
355n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx69 (.scan_in(so[67]), .scan_out(so[68]), .l1clk(l1clk_in), .d(key[17]), .latout(key_d1[17]), .q_l(xx0_unused[78]), .q(xx_unused[78]),
356 .siclk(siclk),
357 .soclk(soclk));
358n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx70 (.scan_in(so[68]), .scan_out(so[69]), .l1clk(l1clk_in), .d(key[16]), .latout(key_d1[16]), .q_l(xx0_unused[79]), .q(xx_unused[79]),
359 .siclk(siclk),
360 .soclk(soclk));
361n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx71 (.scan_in(so[69]), .scan_out(so[70]), .l1clk(l1clk_in), .d(key[15]), .latout(key_d1[15]), .q_l(xx0_unused[80]), .q(xx_unused[80]),
362 .siclk(siclk),
363 .soclk(soclk));
364n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx72 (.scan_in(so[70]), .scan_out(so[71]), .l1clk(l1clk_in), .d(key[14]), .latout(key_d1[14]), .q_l(xx0_unused[81]), .q(xx_unused[81]),
365 .siclk(siclk),
366 .soclk(soclk));
367n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx73 (.scan_in(so[71]), .scan_out(so[72]), .l1clk(l1clk_in), .d(key[13]), .latout(key_d1[13]), .q_l(xx0_unused[82]), .q(xx_unused[82]),
368 .siclk(siclk),
369 .soclk(soclk));
370n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx74 (.scan_in(so[72]), .scan_out(so[73]), .l1clk(l1clk_in), .d(key[12]), .latout(key_d1[12]), .q_l(xx0_unused[83]), .q(xx_unused[83]),
371 .siclk(siclk),
372 .soclk(soclk));
373n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx75 (.scan_in(so[73]), .scan_out(so[74]), .l1clk(l1clk_in), .d(key[11]), .latout(key_d1[11]), .q_l(xx0_unused[84]), .q(xx_unused[84]),
374 .siclk(siclk),
375 .soclk(soclk));
376n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx76 (.scan_in(so[74]), .scan_out(so[75]), .l1clk(l1clk_in), .d(key[10]), .latout(key_d1[10]), .q_l(xx0_unused[85]), .q(xx_unused[85]),
377 .siclk(siclk),
378 .soclk(soclk));
379n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx77 (.scan_in(so[75]), .scan_out(so[76]), .l1clk(l1clk_in), .d(key[9]), .latout(key_d1[9]), .q_l(xx0_unused[86]), .q(xx_unused[86]),
380 .siclk(siclk),
381 .soclk(soclk));
382n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx78 (.scan_in(so[76]), .scan_out(so[77]), .l1clk(l1clk_in), .d(read_en), .latout(mb_ren_d1), .q_l(xx0_unused[87]), .q(xx_unused[87]),
383 .siclk(siclk),
384 .soclk(soclk));
385n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx79 (.scan_in(so[77]), .scan_out(so[78]), .l1clk(l1clk_in), .d(write_en), .latout(mb_wen_d1), .q_l(xx0_unused[88]), .q(xx_unused[88]),
386 .siclk(siclk),
387 .soclk(soclk));
388n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx80 (.scan_in(so[78]), .scan_out(so[79]), .l1clk(l1clk_in), .d(adr_r[0]), .latout(adr_r_d1[0]), .q_l(xx0_unused[89]), .q(xx_unused[89]),
389 .siclk(siclk),
390 .soclk(soclk));
391n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx81 (.scan_in(so[79]), .scan_out(so[80]), .l1clk(l1clk_in), .d(adr_r[1]), .latout(adr_r_d1[1]), .q_l(xx0_unused[90]), .q(xx_unused[90]),
392 .siclk(siclk),
393 .soclk(soclk));
394n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx82 (.scan_in(so[80]), .scan_out(so[81]), .l1clk(l1clk_in), .d(adr_r[2]), .latout(adr_r_d1[2]), .q_l(xx0_unused[91]), .q(xx_unused[91]),
395 .siclk(siclk),
396 .soclk(soclk));
397n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx83 (.scan_in(so[81]), .scan_out(so[82]), .l1clk(l1clk_in), .d(adr_r[3]), .latout(adr_r_d1[3]), .q_l(xx0_unused[92]), .q(xx_unused[92]),
398 .siclk(siclk),
399 .soclk(soclk));
400n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx84 (.scan_in(so[82]), .scan_out(so[83]), .l1clk(l1clk_in), .d(adr_w[0]), .latout(adr_w_d1[0]), .q_l(xx0_unused[93]), .q(xx_unused[93]),
401 .siclk(siclk),
402 .soclk(soclk));
403n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx85 (.scan_in(so[83]), .scan_out(so[84]), .l1clk(l1clk_in), .d(adr_w[1]), .latout(adr_w_d1[1]), .q_l(xx0_unused[94]), .q(xx_unused[94]),
404 .siclk(siclk),
405 .soclk(soclk));
406n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx86 (.scan_in(so[84]), .scan_out(so[85]), .l1clk(l1clk_in), .d(adr_w[2]), .latout(adr_w_d1[2]), .q_l(xx0_unused[95]), .q(xx_unused[95]),
407 .siclk(siclk),
408 .soclk(soclk));
409n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx87 (.scan_in(so[85]), .scan_out(so[86]), .l1clk(l1clk_in), .d(adr_w[3]), .latout(adr_w_d1[3]), .q_l(xx0_unused[96]), .q(xx_unused[96]),
410 .siclk(siclk),
411 .soclk(soclk));
412n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx88 (.scan_in(so[86]), .scan_out(so[87]), .l1clk(l1clk_in), .d(adr_r[4]), .latout(adr_r_d1[4]), .q_l(xx0_unused[97]), .q(xx_unused[97]),
413 .siclk(siclk),
414 .soclk(soclk));
415n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx89 (.scan_in(so[87]), .scan_out(so[88]), .l1clk(l1clk_in), .d(adr_r[5]), .latout(adr_r_d1[5]), .q_l(xx0_unused[98]), .q(xx_unused[98]),
416 .siclk(siclk),
417 .soclk(soclk));
418n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx90 (.scan_in(so[88]), .scan_out(so[89]), .l1clk(l1clk_in), .d(adr_r[6]), .latout(adr_r_d1[6]), .q_l(xx0_unused[99]), .q(xx_unused[99]),
419 .siclk(siclk),
420 .soclk(soclk));
421n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx91 (.scan_in(so[89]), .scan_out(so[90]), .l1clk(l1clk_in), .d(adr_r[7]), .latout(adr_r_d1[7]), .q_l(xx0_unused[100]), .q(xx_unused[100]),
422 .siclk(siclk),
423 .soclk(soclk));
424n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx92 (.scan_in(so[90]), .scan_out(so[91]), .l1clk(l1clk_in), .d(adr_w[4]), .latout(adr_w_d1[4]), .q_l(xx0_unused[101]), .q(xx_unused[101]),
425 .siclk(siclk),
426 .soclk(soclk));
427n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx93 (.scan_in(so[91]), .scan_out(so[92]), .l1clk(l1clk_in), .d(adr_w[5]), .latout(adr_w_d1[5]), .q_l(xx0_unused[102]), .q(xx_unused[102]),
428 .siclk(siclk),
429 .soclk(soclk));
430n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx94 (.scan_in(so[92]), .scan_out(so[93]), .l1clk(l1clk_in), .d(adr_w[6]), .latout(adr_w_d1[6]), .q_l(xx0_unused[103]), .q(xx_unused[103]),
431 .siclk(siclk),
432 .soclk(soclk));
433n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx95 (.scan_in(so[93]), .scan_out(so[94]), .l1clk(l1clk_in), .d(adr_w[7]), .latout(adr_w_d1[7]), .q_l(xx0_unused[104]), .q(xx_unused[104]),
434 .siclk(siclk),
435 .soclk(soclk));
436n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx96 (.scan_in(so[94]), .scan_out(so[95]), .l1clk(l1clk_in), .d(adr_r[11]), .latout(adr_r_d1[11]), .q_l(xx0_unused[105]), .q(xx_unused[105]),
437 .siclk(siclk),
438 .soclk(soclk));
439n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx97 (.scan_in(so[95]), .scan_out(so[96]), .l1clk(l1clk_in), .d(adr_r[10]), .latout(adr_r_d1[10]), .q_l(xx0_unused[106]), .q(xx_unused[106]),
440 .siclk(siclk),
441 .soclk(soclk));
442n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx98 (.scan_in(so[96]), .scan_out(so[97]), .l1clk(l1clk_in), .d(adr_r[9]), .latout(adr_r_d1[9]), .q_l(xx0_unused[107]), .q(xx_unused[107]),
443 .siclk(siclk),
444 .soclk(soclk));
445n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx99 (.scan_in(so[97]), .scan_out(so[98]), .l1clk(l1clk_in), .d(adr_r[8]), .latout(adr_r_d1[8]), .q_l(xx0_unused[108]), .q(xx_unused[108]),
446 .siclk(siclk),
447 .soclk(soclk));
448n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx100 (.scan_in(so[98]), .scan_out(so[99]), .l1clk(l1clk_in), .d(adr_w[11]), .latout(adr_w_d1[11]), .q_l(xx0_unused[109]), .q(xx_unused[109]),
449 .siclk(siclk),
450 .soclk(soclk));
451n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx101 (.scan_in(so[99]), .scan_out(so[100]), .l1clk(l1clk_in), .d(adr_w[10]), .latout(adr_w_d1[10]), .q_l(xx0_unused[110]), .q(xx_unused[110]),
452 .siclk(siclk),
453 .soclk(soclk));
454n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx102 (.scan_in(so[100]), .scan_out(so[101]), .l1clk(l1clk_in), .d(adr_w[9]), .latout(adr_w_d1[9]), .q_l(xx0_unused[111]), .q(xx_unused[111]),
455 .siclk(siclk),
456 .soclk(soclk));
457n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx103 (.scan_in(so[101]), .scan_out(so[102]), .l1clk(l1clk_in), .d(adr_w[8]), .latout(adr_w_d1[8]), .q_l(xx0_unused[112]), .q(xx_unused[112]),
458 .siclk(siclk),
459 .soclk(soclk));
460n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx104 (.scan_in(so[102]), .scan_out(so[103]), .l1clk(l1clk_in), .d(adr_r[15]), .latout(adr_r_d1[15]),.q_l(xx0_unused[113]), .q(xx_unused[113]),
461 .siclk(siclk),
462 .soclk(soclk));
463n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx105 (.scan_in(so[103]), .scan_out(so[104]), .l1clk(l1clk_in), .d(adr_r[14]), .latout(adr_r_d1[14]),.q_l(xx0_unused[114]), .q(xx_unused[114]),
464 .siclk(siclk),
465 .soclk(soclk));
466n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx106 (.scan_in(so[104]), .scan_out(so[105]), .l1clk(l1clk_in), .d(adr_r[13]), .latout(adr_r_d1[13]),.q_l(xx0_unused[115]), .q(xx_unused[115]),
467 .siclk(siclk),
468 .soclk(soclk));
469n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx107 (.scan_in(so[105]), .scan_out(so[106]), .l1clk(l1clk_in), .d(adr_r[12]), .latout(adr_r_d1[12]),.q_l(xx0_unused[116]), .q(xx_unused[116]),
470 .siclk(siclk),
471 .soclk(soclk));
472n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx108 (.scan_in(so[106]), .scan_out(so[107]), .l1clk(l1clk_in), .d(adr_w[15]), .latout(adr_w_d1[15]),.q_l(xx0_unused[117]), .q(xx_unused[117]),
473 .siclk(siclk),
474 .soclk(soclk));
475n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx109 (.scan_in(so[107]), .scan_out(so[108]), .l1clk(l1clk_in), .d(adr_w[14]), .latout(adr_w_d1[14]),.q_l(xx0_unused[118]), .q(xx_unused[118]),
476 .siclk(siclk),
477 .soclk(soclk));
478n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx110 (.scan_in(so[108]), .scan_out(so[109]), .l1clk(l1clk_in), .d(adr_w[13]), .latout(adr_w_d1[13]),.q_l(xx0_unused[119]), .q(xx_unused[119]),
479 .siclk(siclk),
480 .soclk(soclk));
481n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx111 (.scan_in(so[109]), .scan_out(so[110]), .l1clk(l1clk_in), .d(adr_w[12]), .latout(adr_w_d1[12]),.q_l(xx0_unused[120]), .q(xx_unused[120]),
482 .siclk(siclk),
483 .soclk(soclk));
484n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx112 (.scan_in(so[110]), .scan_out(so[111]), .l1clk(l1clk_in), .d(adr_r[16]), .latout(adr_r_d1[16]),.q_l(xx0_unused[121]), .q(xx_unused[121]),
485 .siclk(siclk),
486 .soclk(soclk));
487n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx113 (.scan_in(so[111]), .scan_out(so[112]), .l1clk(l1clk_in), .d(adr_r[17]), .latout(adr_r_d1[17]),.q_l(xx0_unused[122]), .q(xx_unused[122]),
488 .siclk(siclk),
489 .soclk(soclk));
490n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx114 (.scan_in(so[112]), .scan_out(so[113]), .l1clk(l1clk_in), .d(adr_r[18]), .latout(adr_r_d1[18]),.q_l(xx0_unused[123]), .q(xx_unused[123]),
491 .siclk(siclk),
492 .soclk(soclk));
493n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx115 (.scan_in(so[113]), .scan_out(so[114]), .l1clk(l1clk_in), .d(adr_r[19]), .latout(adr_r_d1[19]),.q_l(xx0_unused[124]), .q(xx_unused[124]),
494 .siclk(siclk),
495 .soclk(soclk));
496n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx116 (.scan_in(so[114]), .scan_out(so[115]), .l1clk(l1clk_in), .d(adr_w[16]), .latout(adr_w_d1[16]),.q_l(xx0_unused[125]), .q(xx_unused[125]),
497 .siclk(siclk),
498 .soclk(soclk));
499n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx117 (.scan_in(so[115]), .scan_out(so[116]), .l1clk(l1clk_in), .d(adr_w[17]), .latout(adr_w_d1[17]),.q_l(xx0_unused[126]), .q(xx_unused[126]),
500 .siclk(siclk),
501 .soclk(soclk));
502n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx118 (.scan_in(so[116]), .scan_out(so[117]), .l1clk(l1clk_in), .d(adr_w[18]), .latout(adr_w_d1[18]),.q_l(xx0_unused[127]), .q(xx_unused[127]),
503 .siclk(siclk),
504 .soclk(soclk));
505n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx119 (.scan_in(so[117]), .scan_out(so[118]), .l1clk(l1clk_in), .d(adr_w[19]), .latout(adr_w_d1[19]),.q_l(xx0_unused[128]), .q(xx_unused[128]),
506 .siclk(siclk),
507 .soclk(soclk));
508n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx120 (.scan_in(so[118]), .scan_out(so[119]), .l1clk(l1clk_in), .d(adr_r[20]), .latout(adr_r_d1[20]),.q_l(xx0_unused[129]), .q(xx_unused[129]),
509 .siclk(siclk),
510 .soclk(soclk));
511n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx121 (.scan_in(so[119]), .scan_out(so[120]), .l1clk(l1clk_in), .d(adr_r[21]), .latout(adr_r_d1[21]),.q_l(xx0_unused[130]), .q(xx_unused[130]),
512 .siclk(siclk),
513 .soclk(soclk));
514n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx122 (.scan_in(so[120]), .scan_out(so[121]), .l1clk(l1clk_in), .d(adr_r[22]), .latout(adr_r_d1[22]),.q_l(xx0_unused[131]), .q(xx_unused[131]),
515 .siclk(siclk),
516 .soclk(soclk));
517n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx123 (.scan_in(so[121]), .scan_out(so[122]), .l1clk(l1clk_in), .d(adr_r[23]), .latout(adr_r_d1[23]),.q_l(xx0_unused[132]), .q(xx_unused[132]),
518 .siclk(siclk),
519 .soclk(soclk));
520n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx124 (.scan_in(so[122]), .scan_out(so[123]), .l1clk(l1clk_in), .d(adr_w[20]), .latout(adr_w_d1[20]),.q_l(xx0_unused[133]), .q(xx_unused[133]),
521 .siclk(siclk),
522 .soclk(soclk));
523n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx125 (.scan_in(so[123]), .scan_out(so[124]), .l1clk(l1clk_in), .d(adr_w[21]), .latout(adr_w_d1[21]),.q_l(xx0_unused[134]), .q(xx_unused[134]),
524 .siclk(siclk),
525 .soclk(soclk));
526n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx126 (.scan_in(so[124]), .scan_out(so[125]), .l1clk(l1clk_in), .d(adr_w[22]), .latout(adr_w_d1[22]),.q_l(xx0_unused[135]), .q(xx_unused[135]),
527 .siclk(siclk),
528 .soclk(soclk));
529n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx127 (.scan_in(so[125]), .scan_out(so[126]), .l1clk(l1clk_in), .d(adr_w[23]), .latout(adr_w_d1[23]),.q_l(xx0_unused[136]), .q(xx_unused[136]),
530 .siclk(siclk),
531 .soclk(soclk));
532n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx128 (.scan_in(so[126]), .scan_out(so[127]), .l1clk(l1clk_in), .d(adr_r[27]), .latout(adr_r_d1[27]),.q_l(xx0_unused[137]), .q(xx_unused[137]),
533 .siclk(siclk),
534 .soclk(soclk));
535n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx129 (.scan_in(so[127]), .scan_out(so[128]), .l1clk(l1clk_in), .d(adr_r[26]), .latout(adr_r_d1[26]),.q_l(xx0_unused[138]), .q(xx_unused[138]),
536 .siclk(siclk),
537 .soclk(soclk));
538n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx130 (.scan_in(so[128]), .scan_out(so[129]), .l1clk(l1clk_in), .d(adr_r[25]), .latout(adr_r_d1[25]),.q_l(xx0_unused[139]), .q(xx_unused[139]),
539 .siclk(siclk),
540 .soclk(soclk));
541n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx131 (.scan_in(so[129]), .scan_out(so[130]), .l1clk(l1clk_in), .d(adr_r[24]), .latout(adr_r_d1[24]),.q_l(xx0_unused[140]), .q(xx_unused[140]),
542 .siclk(siclk),
543 .soclk(soclk));
544n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx132 (.scan_in(so[130]), .scan_out(so[131]), .l1clk(l1clk_in), .d(adr_w[27]), .latout(adr_w_d1[27]),.q_l(xx0_unused[141]), .q(xx_unused[141]),
545 .siclk(siclk),
546 .soclk(soclk));
547n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx133 (.scan_in(so[131]), .scan_out(so[132]), .l1clk(l1clk_in), .d(adr_w[26]), .latout(adr_w_d1[26]),.q_l(xx0_unused[142]), .q(xx_unused[142]),
548 .siclk(siclk),
549 .soclk(soclk));
550n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx134 (.scan_in(so[132]), .scan_out(so[133]), .l1clk(l1clk_in), .d(adr_w[25]), .latout(adr_w_d1[25]),.q_l(xx0_unused[143]), .q(xx_unused[143]),
551 .siclk(siclk),
552 .soclk(soclk));
553n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx135 (.scan_in(so[133]), .scan_out(so[134]), .l1clk(l1clk_in), .d(adr_w[24]), .latout(adr_w_d1[24]),.q_l(xx0_unused[144]), .q(xx_unused[144]),
554 .siclk(siclk),
555 .soclk(soclk));
556n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx136 (.scan_in(so[134]), .scan_out(so[135]), .l1clk(l1clk_in), .d(adr_r[31]), .latout(adr_r_d1[31]),.q_l(xx0_unused[145]), .q(xx_unused[145]),
557 .siclk(siclk),
558 .soclk(soclk));
559n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx137 (.scan_in(so[135]), .scan_out(so[136]), .l1clk(l1clk_in), .d(adr_r[30]), .latout(adr_r_d1[30]),.q_l(xx0_unused[146]), .q(xx_unused[146]),
560 .siclk(siclk),
561 .soclk(soclk));
562n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx138 (.scan_in(so[136]), .scan_out(so[137]), .l1clk(l1clk_in), .d(adr_r[29]), .latout(adr_r_d1[29]),.q_l(xx0_unused[147]), .q(xx_unused[147]),
563 .siclk(siclk),
564 .soclk(soclk));
565n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx139 (.scan_in(so[137]), .scan_out(so[138]), .l1clk(l1clk_in), .d(adr_r[28]), .latout(adr_r_d1[28]),.q_l(xx0_unused[148]), .q(xx_unused[148]),
566 .siclk(siclk),
567 .soclk(soclk));
568n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx140 (.scan_in(so[138]), .scan_out(so[139]), .l1clk(l1clk_in), .d(adr_w[31]), .latout(adr_w_d1[31]),.q_l(xx0_unused[149]), .q(xx_unused[149]),
569 .siclk(siclk),
570 .soclk(soclk));
571n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx141 (.scan_in(so[139]), .scan_out(so[140]), .l1clk(l1clk_in), .d(adr_w[30]), .latout(adr_w_d1[30]),.q_l(xx0_unused[150]), .q(xx_unused[150]),
572 .siclk(siclk),
573 .soclk(soclk));
574n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx142 (.scan_in(so[140]), .scan_out(so[141]), .l1clk(l1clk_in), .d(adr_w[29]), .latout(adr_w_d1[29]),.q_l(xx0_unused[151]), .q(xx_unused[151]),
575 .siclk(siclk),
576 .soclk(soclk));
577n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 xx143 (.scan_in(so[141]), .scan_out(so[142]), .l1clk(l1clk_in), .d(adr_w[28]), .latout(adr_w_d1[28]),.q_l(xx0_unused[152]), .q(xx_unused[152]),
578 .siclk(siclk),
579 .soclk(soclk));
580
581
582///////////////////
583 /// Memory array ////
584
585n2_com_cm_32x40_cust_array array (
586 .l1clk(l1clk_en),
587 .wr_en (mb_wen_d1),
588 .rd_en (mb_ren_d1),
589 .wr_addr(adr_w_d1[31:0]),
590 .rd_addr(adr_r_d1[31:0]),
591 .din(din_d1[41:0]),
592 .dout(dout_array[41:0]),
593 .tcu_array_wr_inhibit(tcu_array_wr_inhibit),
594 .lookup_en(lookup_en_d1),
595 .key(key_d1[41:7]),
596 .match(match[31:0]),
597 .match_idx(match_idx[31:0]),
598 .bypass(tcu_array_bypass)
599 );
600
601// fixscan start:
602//assign ff_din_scanin = scan_in ;
603//assign ff_wr_en_scanin = ff_din_scanout ;
604//assign ff_wr_adr_scanin = ff_wr_en_scanout ;
605//assign ff_rd_adr_scanin = ff_wr_adr_scanout ;
606//assign ff_ren_scanin = ff_rd_adr_scanout ;
607//assign ff_lookup_en_scanin = ff_ren_scanout ;
608//assign ff_key_scanin = ff_lookup_en_scanout ;
609assign scan_out = so[142]; //ff_key_scanout ;
610// fixscan end:
611
612// synopsys translate_on
613
614endmodule
615
616
617module n2_com_cm_32x40_cust_array (
618 l1clk,
619 wr_en,
620 rd_en,
621 tcu_array_wr_inhibit,
622 key,
623 wr_addr,
624 rd_addr,
625 din,
626 lookup_en,
627 bypass,
628 dout,
629 match,
630 match_idx);
631
632input l1clk;
633input wr_en;
634input rd_en;
635
636input tcu_array_wr_inhibit;
637input [41:7] key;
638input [31:0] wr_addr;
639input [31:0] rd_addr;
640input [41:0] din;
641input lookup_en;
642input bypass;
643
644output [41:0] dout;
645output [31:0] match;
646output [31:0] match_idx;
647
648
649
650
651
652reg [41:0] mb_cam_data[31:0] ;
653reg [41:0] dout;
654reg [41:0] tmp_addr ;
655reg [41:0] tmp_addr0 ;
656reg [41:0] tmp_addr1 ;
657reg [41:0] tmp_addr2 ;
658reg [41:0] tmp_addr3 ;
659reg [41:0] tmp_addr4 ;
660reg [41:0] tmp_addr5 ;
661reg [41:0] tmp_addr6 ;
662reg [41:0] tmp_addr7 ;
663reg [41:0] tmp_addr8 ;
664reg [41:0] tmp_addr9 ;
665reg [41:0] tmp_addr10 ;
666reg [41:0] tmp_addr11 ;
667reg [41:0] tmp_addr12 ;
668reg [41:0] tmp_addr13 ;
669reg [41:0] tmp_addr14 ;
670reg [41:0] tmp_addr15 ;
671reg [41:0] tmp_addr16;
672reg [41:0] tmp_addr17;
673reg [41:0] tmp_addr18;
674reg [41:0] tmp_addr19;
675reg [41:0] tmp_addr20;
676reg [41:0] tmp_addr21;
677reg [41:0] tmp_addr22;
678reg [41:0] tmp_addr23;
679reg [41:0] tmp_addr24;
680reg [41:0] tmp_addr25;
681reg [41:0] tmp_addr26;
682reg [41:0] tmp_addr27;
683reg [41:0] tmp_addr28;
684reg [41:0] tmp_addr29;
685reg [41:0] tmp_addr30;
686reg [41:0] tmp_addr31;
687
688wire [31:0] match ;
689wire [31:0] match_idx ;
690reg [31:0] match_p ;
691reg [31:0] match_idx_p ;
692
693 wire [41:0] tmp_data0;
694 wire [41:0] tmp_data1;
695 wire [41:0] tmp_data2;
696 wire [41:0] tmp_data3;
697 wire [41:0] tmp_data4;
698 wire [41:0] tmp_data5;
699 wire [41:0] tmp_data6;
700 wire [41:0] tmp_data7;
701 wire [41:0] tmp_data8;
702 wire [41:0] tmp_data9;
703 wire [41:0] tmp_data10;
704 wire [41:0] tmp_data11;
705 wire [41:0] tmp_data12;
706 wire [41:0] tmp_data13;
707 wire [41:0] tmp_data14;
708 wire [41:0] tmp_data15;
709 wire [41:0] tmp_data16;
710 wire [41:0] tmp_data17;
711 wire [41:0] tmp_data18;
712 wire [41:0] tmp_data19;
713 wire [41:0] tmp_data20;
714 wire [41:0] tmp_data21;
715 wire [41:0] tmp_data22;
716 wire [41:0] tmp_data23;
717 wire [41:0] tmp_data24;
718 wire [41:0] tmp_data25;
719 wire [41:0] tmp_data26;
720 wire [41:0] tmp_data27;
721 wire [41:0] tmp_data28;
722 wire [41:0] tmp_data29;
723 wire [41:0] tmp_data30;
724 wire [41:0] tmp_data31;
725// bamick, added wires above to allow us to view array contents in SSF
726
727`ifndef NOINITMEM
728///////////////////////////////////////
729// Initialize the arrays. //
730///////////////////////////////////////
731integer n;
732initial begin
733 for (n = 0; n < 32; n = n + 1) begin
734 mb_cam_data[n] = {42 {1'b0}};
735 end
736end
737`endif
738
739assign tmp_data0 = mb_cam_data[0];
740assign tmp_data1 = mb_cam_data[1];
741assign tmp_data2 = mb_cam_data[2];
742assign tmp_data3 = mb_cam_data[3];
743assign tmp_data4 = mb_cam_data[4];
744assign tmp_data5 = mb_cam_data[5];
745assign tmp_data6 = mb_cam_data[6];
746assign tmp_data7 = mb_cam_data[7];
747assign tmp_data8 = mb_cam_data[8];
748assign tmp_data9 = mb_cam_data[9];
749assign tmp_data10 = mb_cam_data[10];
750assign tmp_data11 = mb_cam_data[11];
751assign tmp_data12 = mb_cam_data[12];
752assign tmp_data13 = mb_cam_data[13];
753assign tmp_data14 = mb_cam_data[14];
754assign tmp_data15 = mb_cam_data[15];
755assign tmp_data16 = mb_cam_data[16];
756assign tmp_data17 = mb_cam_data[17];
757assign tmp_data18 = mb_cam_data[18];
758assign tmp_data19 = mb_cam_data[19];
759assign tmp_data20 = mb_cam_data[20];
760assign tmp_data21 = mb_cam_data[21];
761assign tmp_data22 = mb_cam_data[22];
762assign tmp_data23 = mb_cam_data[23];
763assign tmp_data24 = mb_cam_data[24];
764assign tmp_data25 = mb_cam_data[25];
765assign tmp_data26 = mb_cam_data[26];
766assign tmp_data27 = mb_cam_data[27];
767assign tmp_data28 = mb_cam_data[28];
768assign tmp_data29 = mb_cam_data[29];
769assign tmp_data30 = mb_cam_data[30];
770assign tmp_data31 = mb_cam_data[31];
771// bamick, added assign statements to allow use to view array contents in SSF
772
773integer i;
774
775assign match = match_p ;
776assign match_idx = match_idx_p ;
777
778//0in kndr -var wr_addr[31:0] -active wr_en
779//0in kndr -var rd_addr[31:0] -active rd_en
780//0in one_hot -var rd_addr[31:0] -active (|rd_addr & rd_en) -group mbist_mode
781//0in one_hot -var wr_addr[31:0] -active (|wr_addr & wr_en) -group mbist_mode
782
783// CAM OPERATION
784always @( /*AUTOSENSE*/ /*memory or*/ wr_addr or key or
785 tmp_data0 or tmp_data1 or tmp_data2 or tmp_data3 or tmp_data4 or tmp_data5 or
786 tmp_data6 or tmp_data7 or tmp_data8 or tmp_data9 or tmp_data10 or tmp_data11 or
787 tmp_data12 or tmp_data13 or tmp_data14 or tmp_data15 or tmp_data16 or tmp_data17 or
788 tmp_data18 or tmp_data19 or tmp_data20 or tmp_data21 or tmp_data22 or tmp_data23 or
789 tmp_data24 or tmp_data25 or tmp_data26 or tmp_data27 or tmp_data28 or tmp_data29 or
790 tmp_data30 or tmp_data31 or
791 lookup_en or wr_en or bypass or tcu_array_wr_inhibit or l1clk) begin
792
793
794
795 #0
796
797
798
799 if (bypass) begin
800 match_p = 32'b0 ;
801 match_idx_p = 32'hffffffff;
802 end
803 else if ( l1clk & lookup_en & ~tcu_array_wr_inhibit) begin
804
805
806 tmp_addr0 = tmp_data0;
807 match_p[0] = ( wr_en & wr_addr[0] ) ? 1'bx :
808 ( tmp_addr0[41:7] == key[41:7] ) ;
809 match_idx_p[0] = ( wr_en & wr_addr[0] ) ? 1'bx :
810 ( tmp_addr0[17:9] == key[17:9] ) ;
811
812 tmp_addr1 = tmp_data1;
813 match_p[1] = ( wr_en & wr_addr[1] ) ? 1'bx :
814 ( tmp_addr1[41:7] == key[41:7] ) ;
815 match_idx_p[1] = ( wr_en & wr_addr[1] ) ? 1'bx :
816 ( tmp_addr1[17:9] == key[17:9] ) ;
817
818 tmp_addr2 = tmp_data2;
819 match_p[2] = ( wr_en & wr_addr[2] ) ? 1'bx :
820 ( tmp_addr2[41:7] == key[41:7] ) ;
821 match_idx_p[2] = ( wr_en & wr_addr[2] ) ? 1'bx :
822 ( tmp_addr2[17:9] == key[17:9] ) ;
823
824 tmp_addr3 = tmp_data3;
825 match_p[3] = ( wr_en & wr_addr[3] ) ? 1'bx :
826 ( tmp_addr3[41:7] == key[41:7] ) ;
827 match_idx_p[3] = ( wr_en & wr_addr[3] ) ? 1'bx :
828 ( tmp_addr3[17:9] == key[17:9] ) ;
829
830 tmp_addr4 = tmp_data4;
831 match_p[4] = ( wr_en & wr_addr[4] ) ? 1'bx :
832 ( tmp_addr4[41:7] == key[41:7] ) ;
833 match_idx_p[4] = ( wr_en & wr_addr[4] ) ? 1'bx :
834 ( tmp_addr4[17:9] == key[17:9] ) ;
835
836 tmp_addr5 = tmp_data5;
837 match_p[5] = ( wr_en & wr_addr[5] ) ? 1'bx :
838 ( tmp_addr5[41:7] == key[41:7] ) ;
839 match_idx_p[5] = ( wr_en & wr_addr[5] ) ? 1'bx :
840 ( tmp_addr5[17:9] == key[17:9] ) ;
841
842 tmp_addr6 = tmp_data6;
843 match_p[6] = ( wr_en & wr_addr[6] ) ? 1'bx :
844 ( tmp_addr6[41:7] == key[41:7] ) ;
845 match_idx_p[6] = ( wr_en & wr_addr[6] ) ? 1'bx :
846 ( tmp_addr6[17:9] == key[17:9] ) ;
847
848 tmp_addr7 = tmp_data7;
849 match_p[7] = ( wr_en & wr_addr[7] ) ? 1'bx :
850 ( tmp_addr7[41:7] == key[41:7] ) ;
851 match_idx_p[7] = ( wr_en & wr_addr[7] ) ? 1'bx :
852 ( tmp_addr7[17:9] == key[17:9] ) ;
853
854 tmp_addr8 = tmp_data8;
855 match_p[8] = ( wr_en & wr_addr[8] ) ? 1'bx :
856 ( tmp_addr8[41:7] == key[41:7] ) ;
857 match_idx_p[8] = ( wr_en & wr_addr[8] ) ? 1'bx :
858 ( tmp_addr8[17:9] == key[17:9] ) ;
859
860 tmp_addr9 = tmp_data9;
861 match_p[9] = ( wr_en & wr_addr[9] ) ? 1'bx :
862 ( tmp_addr9[41:7] == key[41:7] ) ;
863 match_idx_p[9] = ( wr_en & wr_addr[9] ) ? 1'bx :
864 ( tmp_addr9[17:9] == key[17:9] ) ;
865
866 tmp_addr10 = tmp_data10;
867 match_p[10] = ( wr_en & wr_addr[10] ) ? 1'bx :
868 ( tmp_addr10[41:7] == key[41:7] ) ;
869 match_idx_p[10] = ( wr_en & wr_addr[10] ) ? 1'bx :
870 ( tmp_addr10[17:9] == key[17:9] ) ;
871
872 tmp_addr11 = tmp_data11;
873 match_p[11] = ( wr_en & wr_addr[11] ) ? 1'bx :
874 ( tmp_addr11[41:7] == key[41:7] ) ;
875 match_idx_p[11] = ( wr_en & wr_addr[11] ) ? 1'bx :
876 ( tmp_addr11[17:9] == key[17:9] ) ;
877
878 tmp_addr12 = tmp_data12;
879 match_p[12] = ( wr_en & wr_addr[12] ) ? 1'bx :
880 ( tmp_addr12[41:7] == key[41:7] ) ;
881 match_idx_p[12] = ( wr_en & wr_addr[12] ) ? 1'bx :
882 ( tmp_addr12[17:9] == key[17:9] ) ;
883
884 tmp_addr13 = tmp_data13;
885 match_p[13] = ( wr_en & wr_addr[13] ) ? 1'bx :
886 ( tmp_addr13[41:7] == key[41:7] ) ;
887 match_idx_p[13] = ( wr_en & wr_addr[13] ) ? 1'bx :
888 ( tmp_addr13[17:9] == key[17:9] ) ;
889
890 tmp_addr14 = tmp_data14;
891 match_p[14] = ( wr_en & wr_addr[14] ) ? 1'bx :
892 ( tmp_addr14[41:7] == key[41:7] ) ;
893 match_idx_p[14] = ( wr_en & wr_addr[14] ) ? 1'bx :
894 ( tmp_addr14[17:9] == key[17:9] ) ;
895
896 tmp_addr15 = tmp_data15;
897 match_p[15] = ( wr_en & wr_addr[15] ) ? 1'bx :
898 ( tmp_addr15[41:7] == key[41:7] ) ;
899 match_idx_p[15] = ( wr_en & wr_addr[15] ) ? 1'bx :
900 ( tmp_addr15[17:9] == key[17:9] ) ;
901
902// BS & SR 11/04/03, MB grows to 32
903
904 tmp_addr16 = tmp_data16;
905 match_p[16] = ( wr_en & wr_addr[16] ) ? 1'bx : ( tmp_addr16[41:7] == key[41:7] ) ;
906 match_idx_p[16] = ( wr_en & wr_addr[16] ) ? 1'bx : ( tmp_addr16[17:9] == key[17:9] ) ;
907
908 tmp_addr17 = tmp_data17;
909 match_p[17] = ( wr_en & wr_addr[17] ) ? 1'bx : ( tmp_addr17[41:7] == key[41:7] ) ;
910 match_idx_p[17] = ( wr_en & wr_addr[17] ) ? 1'bx : ( tmp_addr17[17:9] == key[17:9] ) ;
911
912 tmp_addr18 = tmp_data18;
913 match_p[18] = ( wr_en & wr_addr[18] ) ? 1'bx : ( tmp_addr18[41:7] == key[41:7] ) ;
914 match_idx_p[18] = ( wr_en & wr_addr[18] ) ? 1'bx : ( tmp_addr18[17:9] == key[17:9] ) ;
915
916 tmp_addr19 = tmp_data19;
917 match_p[19] = ( wr_en & wr_addr[19] ) ? 1'bx : ( tmp_addr19[41:7] == key[41:7] ) ;
918 match_idx_p[19] = ( wr_en & wr_addr[19] ) ? 1'bx : ( tmp_addr19[17:9] == key[17:9] ) ;
919
920 tmp_addr20 = tmp_data20;
921 match_p[20] = ( wr_en & wr_addr[20] ) ? 1'bx : ( tmp_addr20[41:7] == key[41:7] ) ;
922 match_idx_p[20] = ( wr_en & wr_addr[20] ) ? 1'bx : ( tmp_addr20[17:9] == key[17:9] ) ;
923
924 tmp_addr21 = tmp_data21;
925 match_p[21] = ( wr_en & wr_addr[21] ) ? 1'bx : ( tmp_addr21[41:7] == key[41:7] ) ;
926 match_idx_p[21] = ( wr_en & wr_addr[21] ) ? 1'bx : ( tmp_addr21[17:9] == key[17:9] ) ;
927
928 tmp_addr22 = tmp_data22;
929 match_p[22] = ( wr_en & wr_addr[22] ) ? 1'bx : ( tmp_addr22[41:7] == key[41:7] ) ;
930 match_idx_p[22] = ( wr_en & wr_addr[22] ) ? 1'bx : ( tmp_addr22[17:9] == key[17:9] ) ;
931
932 tmp_addr23 = tmp_data23;
933 match_p[23] = ( wr_en & wr_addr[23] ) ? 1'bx : ( tmp_addr23[41:7] == key[41:7] ) ;
934 match_idx_p[23] = ( wr_en & wr_addr[23] ) ? 1'bx : ( tmp_addr23[17:9] == key[17:9] ) ;
935
936 tmp_addr24 = tmp_data24;
937 match_p[24] = ( wr_en & wr_addr[24] ) ? 1'bx : ( tmp_addr24[41:7] == key[41:7] ) ;
938 match_idx_p[24] = ( wr_en & wr_addr[24] ) ? 1'bx : ( tmp_addr24[17:9] == key[17:9] ) ;
939
940 tmp_addr25 = tmp_data25;
941 match_p[25] = ( wr_en & wr_addr[25] ) ? 1'bx : ( tmp_addr25[41:7] == key[41:7] ) ;
942 match_idx_p[25] = ( wr_en & wr_addr[25] ) ? 1'bx : ( tmp_addr25[17:9] == key[17:9] ) ;
943
944 tmp_addr26 = tmp_data26;
945 match_p[26] = ( wr_en & wr_addr[26] ) ? 1'bx : ( tmp_addr26[41:7] == key[41:7] ) ;
946 match_idx_p[26] = ( wr_en & wr_addr[26] ) ? 1'bx : ( tmp_addr26[17:9] == key[17:9] ) ;
947
948 tmp_addr27 = tmp_data27;
949 match_p[27] = ( wr_en & wr_addr[27] ) ? 1'bx : ( tmp_addr27[41:7] == key[41:7] ) ;
950 match_idx_p[27] = ( wr_en & wr_addr[27] ) ? 1'bx : ( tmp_addr27[17:9] == key[17:9] ) ;
951
952
953 tmp_addr28 = tmp_data28;
954 match_p[28] = ( wr_en & wr_addr[28] ) ? 1'bx : ( tmp_addr28[41:7] == key[41:7] ) ;
955 match_idx_p[28] = ( wr_en & wr_addr[28] ) ? 1'bx : ( tmp_addr28[17:9] == key[17:9] ) ;
956
957 tmp_addr29 = tmp_data29;
958 match_p[29] = ( wr_en & wr_addr[29] ) ? 1'bx : ( tmp_addr29[41:7] == key[41:7] ) ;
959 match_idx_p[29] = ( wr_en & wr_addr[29] ) ? 1'bx : ( tmp_addr29[17:9] == key[17:9] ) ;
960
961 tmp_addr30 = tmp_data30;
962 match_p[30] = ( wr_en & wr_addr[30] ) ? 1'bx : ( tmp_addr30[41:7] == key[41:7] ) ;
963 match_idx_p[30] = ( wr_en & wr_addr[30] ) ? 1'bx : ( tmp_addr30[17:9] == key[17:9] ) ;
964
965
966 tmp_addr31 = tmp_data31;
967 match_p[31] = ( wr_en & wr_addr[31] ) ? 1'bx : ( tmp_addr31[41:7] == key[41:7] ) ;
968 match_idx_p[31] = ( wr_en & wr_addr[31] ) ? 1'bx : ( tmp_addr31[17:9] == key[17:9] ) ;
969
970
971 end
972
973 else if ( l1clk & ~lookup_en & ~tcu_array_wr_inhibit )
974 begin
975 match_p = 32'b0;
976 match_idx_p = 32'b0;
977 end
978
979 else
980 begin
981 end // do nothing, hold output latched during l1clk low
982
983end
984
985
986// READ AND WRITE HAPPEN in Phase 1.
987
988//bamick: convert write_disable to se; add bypass
989always @(l1clk or wr_addr or din or wr_en or tcu_array_wr_inhibit or bypass or rd_addr or rd_en)
990 begin
991 if (l1clk & wr_en & ~tcu_array_wr_inhibit & ~bypass)
992 begin
993 case(wr_addr )
994 32'b0000_0000_0000_0000_0000_0000_0000_0000: ; // do nothing
995 32'b0000_0000_0000_0000_0000_0000_0000_0001: mb_cam_data[0] = din ;
996 32'b0000_0000_0000_0000_0000_0000_0000_0010: mb_cam_data[1] = din ;
997 32'b0000_0000_0000_0000_0000_0000_0000_0100: mb_cam_data[2] = din ;
998 32'b0000_0000_0000_0000_0000_0000_0000_1000: mb_cam_data[3] = din ;
999 32'b0000_0000_0000_0000_0000_0000_0001_0000: mb_cam_data[4] = din;
1000 32'b0000_0000_0000_0000_0000_0000_0010_0000: mb_cam_data[5] = din ;
1001 32'b0000_0000_0000_0000_0000_0000_0100_0000: mb_cam_data[6] = din ;
1002 32'b0000_0000_0000_0000_0000_0000_1000_0000: mb_cam_data[7] = din ;
1003 32'b0000_0000_0000_0000_0000_0001_0000_0000: mb_cam_data[8] = din ;
1004 32'b0000_0000_0000_0000_0000_0010_0000_0000: mb_cam_data[9] = din ;
1005 32'b0000_0000_0000_0000_0000_0100_0000_0000: mb_cam_data[10] = din ;
1006 32'b0000_0000_0000_0000_0000_1000_0000_0000: mb_cam_data[11] = din ;
1007 32'b0000_0000_0000_0000_0001_0000_0000_0000: mb_cam_data[12] = din ;
1008 32'b0000_0000_0000_0000_0010_0000_0000_0000: mb_cam_data[13] = din ;
1009 32'b0000_0000_0000_0000_0100_0000_0000_0000: mb_cam_data[14] = din ;
1010 32'b0000_0000_0000_0000_1000_0000_0000_0000: mb_cam_data[15] = din ;
1011 32'b0000_0000_0000_0001_0000_0000_0000_0000: mb_cam_data[16] = din ;
1012 32'b0000_0000_0000_0010_0000_0000_0000_0000: mb_cam_data[17] = din ;
1013 32'b0000_0000_0000_0100_0000_0000_0000_0000: mb_cam_data[18] = din ;
1014 32'b0000_0000_0000_1000_0000_0000_0000_0000: mb_cam_data[19] = din ;
1015 32'b0000_0000_0001_0000_0000_0000_0000_0000: mb_cam_data[20] = din;
1016 32'b0000_0000_0010_0000_0000_0000_0000_0000: mb_cam_data[21] = din ;
1017 32'b0000_0000_0100_0000_0000_0000_0000_0000: mb_cam_data[22] = din ;
1018 32'b0000_0000_1000_0000_0000_0000_0000_0000: mb_cam_data[23] = din ;
1019 32'b0000_0001_0000_0000_0000_0000_0000_0000: mb_cam_data[24] = din ;
1020 32'b0000_0010_0000_0000_0000_0000_0000_0000: mb_cam_data[25] = din ;
1021 32'b0000_0100_0000_0000_0000_0000_0000_0000: mb_cam_data[26] = din ;
1022 32'b0000_1000_0000_0000_0000_0000_0000_0000: mb_cam_data[27] = din ;
1023 32'b0001_0000_0000_0000_0000_0000_0000_0000: mb_cam_data[28] = din ;
1024 32'b0010_0000_0000_0000_0000_0000_0000_0000: mb_cam_data[29] = din ;
1025 32'b0100_0000_0000_0000_0000_0000_0000_0000: mb_cam_data[30] = din ;
1026 32'b1000_0000_0000_0000_0000_0000_0000_0000: mb_cam_data[31] = din ;
1027 default: begin
1028 // 0in <fire -message "FATAL ERROR: incorrect write wordline" -group mbist_mode
1029 end
1030 endcase
1031 if(rd_en & (wr_addr==rd_addr))
1032 begin
1033 // 0in <fire -message "ERROR : reading and writing to same location " -group mbist_mode
1034 end
1035 end
1036 end
1037
1038// Notice that the renable is qualified with l1clk to take
1039// care that we do not read from the array if reset_l goes high
1040// during the negative phase of l1clk.
1041//
1042
1043// bamick, add bypass
1044always @( rd_addr or wr_addr or rd_en or wr_en or tcu_array_wr_inhibit or bypass or l1clk or
1045 tmp_data0 or tmp_data1 or tmp_data2 or tmp_data3 or tmp_data4 or tmp_data5 or
1046 tmp_data6 or tmp_data7 or tmp_data8 or tmp_data9 or tmp_data10 or tmp_data11 or
1047 tmp_data12 or tmp_data13 or tmp_data14 or tmp_data15 or tmp_data16 or tmp_data17 or
1048 tmp_data18 or tmp_data19 or tmp_data20 or tmp_data21 or tmp_data22 or tmp_data23 or
1049 tmp_data24 or tmp_data25 or tmp_data26 or tmp_data27 or tmp_data28 or tmp_data29 or
1050 tmp_data30 or tmp_data31 or
1051 din) begin
1052 if (bypass) begin
1053 dout <= din;
1054 end
1055
1056// bamick, IMPORTANT: not sure the below if matches circuit case, can't confirm yet
1057// as don't yet know how to run SSF to verify scan...
1058// I do think the value should be 42'b0 or hold the current value
1059
1060 else if (rd_en & l1clk & tcu_array_wr_inhibit ) begin
1061// dout <= 42'h000_0000_0000 ;
1062 end
1063
1064 else if (rd_en & l1clk & ~tcu_array_wr_inhibit )
1065 begin
1066 if ((wr_en) && (rd_addr == wr_addr))
1067 begin
1068 dout <= 42'bx ;
1069 // 0in <fire -message "ERROR : reading and writing to same location " -group mbist_mode
1070 end
1071 else
1072 begin
1073 case(rd_addr)
1074 // match sense amp ckt behavior when no read wl is selected
1075 //32'b0000_0000_0000_0000_0000_0000_0000_0000: dout <= 42'hff_ffff_ffff;
1076 32'b0000_0000_0000_0000_0000_0000_0000_0000: dout <= 42'b0;
1077 32'b0000_0000_0000_0000_0000_0000_0000_0001: dout <= tmp_data0 ;
1078 32'b0000_0000_0000_0000_0000_0000_0000_0010: dout <= tmp_data1 ;
1079 32'b0000_0000_0000_0000_0000_0000_0000_0100: dout <= tmp_data2 ;
1080 32'b0000_0000_0000_0000_0000_0000_0000_1000: dout <= tmp_data3 ;
1081 32'b0000_0000_0000_0000_0000_0000_0001_0000: dout <= tmp_data4 ;
1082 32'b0000_0000_0000_0000_0000_0000_0010_0000: dout <= tmp_data5 ;
1083 32'b0000_0000_0000_0000_0000_0000_0100_0000: dout <= tmp_data6 ;
1084 32'b0000_0000_0000_0000_0000_0000_1000_0000: dout <= tmp_data7 ;
1085 32'b0000_0000_0000_0000_0000_0001_0000_0000: dout <= tmp_data8 ;
1086 32'b0000_0000_0000_0000_0000_0010_0000_0000: dout <= tmp_data9 ;
1087 32'b0000_0000_0000_0000_0000_0100_0000_0000: dout <= tmp_data10 ;
1088 32'b0000_0000_0000_0000_0000_1000_0000_0000: dout <= tmp_data11 ;
1089 32'b0000_0000_0000_0000_0001_0000_0000_0000: dout <= tmp_data12 ;
1090 32'b0000_0000_0000_0000_0010_0000_0000_0000: dout <= tmp_data13 ;
1091 32'b0000_0000_0000_0000_0100_0000_0000_0000: dout <= tmp_data14 ;
1092 32'b0000_0000_0000_0000_1000_0000_0000_0000: dout <= tmp_data15 ;
1093 32'b0000_0000_0000_0001_0000_0000_0000_0000: dout <= tmp_data16 ;
1094 32'b0000_0000_0000_0010_0000_0000_0000_0000: dout <= tmp_data17 ;
1095 32'b0000_0000_0000_0100_0000_0000_0000_0000: dout <= tmp_data18 ;
1096 32'b0000_0000_0000_1000_0000_0000_0000_0000: dout <= tmp_data19 ;
1097 32'b0000_0000_0001_0000_0000_0000_0000_0000: dout <= tmp_data20 ;
1098 32'b0000_0000_0010_0000_0000_0000_0000_0000: dout <= tmp_data21 ;
1099 32'b0000_0000_0100_0000_0000_0000_0000_0000: dout <= tmp_data22 ;
1100 32'b0000_0000_1000_0000_0000_0000_0000_0000: dout <= tmp_data23 ;
1101 32'b0000_0001_0000_0000_0000_0000_0000_0000: dout <= tmp_data24 ;
1102 32'b0000_0010_0000_0000_0000_0000_0000_0000: dout <= tmp_data25 ;
1103 32'b0000_0100_0000_0000_0000_0000_0000_0000: dout <= tmp_data26 ;
1104 32'b0000_1000_0000_0000_0000_0000_0000_0000: dout <= tmp_data27 ;
1105 32'b0001_0000_0000_0000_0000_0000_0000_0000: dout <= tmp_data28 ;
1106 32'b0010_0000_0000_0000_0000_0000_0000_0000: dout <= tmp_data29 ;
1107 32'b0100_0000_0000_0000_0000_0000_0000_0000: dout <= tmp_data30 ;
1108 32'b1000_0000_0000_0000_0000_0000_0000_0000: dout <= tmp_data31 ;
1109 default:
1110 begin
1111 dout <= 42'bx;
1112 // 0in <fire -message "FATAL ERROR: incorrect read wordline" -group mbist_mode
1113 end
1114 endcase
1115 end
1116 end // of else if
1117end
1118endmodule
1119
1120
1121
1122
1123
1124
1125// any PARAMS parms go into naming of macro
1126
1127module n2_com_cm_32x40_cust_l1clkhdr_ctl_macro (
1128 l2clk,
1129 l1en,
1130 pce_ov,
1131 stop,
1132 se,
1133 l1clk);
1134
1135
1136 input l2clk;
1137 input l1en;
1138 input pce_ov;
1139 input stop;
1140 input se;
1141 output l1clk;
1142
1143
1144
1145
1146
1147cl_sc1_l1hdr_8x c_0 (
1148
1149
1150 .l2clk(l2clk),
1151 .pce(l1en),
1152 .l1clk(l1clk),
1153 .se(se),
1154 .pce_ov(pce_ov),
1155 .stop(stop)
1156);
1157
1158
1159
1160endmodule
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170//
1171// macro for cl_mc1_scm_msff_lat_{4}x flops
1172//
1173//
1174
1175
1176
1177
1178
1179module n2_com_cm_32x40_cust_scm_msff_lat_macro__width_1 (
1180 d,
1181 scan_in,
1182 l1clk,
1183 siclk,
1184 soclk,
1185 latout,
1186 scan_out,
1187 q,
1188 q_l);
1189input [0:0] d;
1190 input scan_in;
1191input l1clk;
1192input siclk;
1193input soclk;
1194output [0:0] latout;
1195 output scan_out;
1196output [0:0] q;
1197output [0:0] q_l;
1198
1199
1200
1201
1202
1203
1204scm_msff_lat #(1) d0_0 (
1205.d(d[0:0]),
1206.si(scan_in),
1207.so(scan_out),
1208.l1clk(l1clk),
1209.siclk(siclk),
1210.soclk(soclk),
1211.q(q[0:0]),
1212.q_l(q_l[0:0]),
1213.latout(latout[0:0])
1214);
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225//place::generic_place($width,$stack,$left);
1226
1227endmodule
1228
1229
1230
1231