Commit | Line | Data |
---|---|---|
86530b38 AT |
1 | // ========== Copyright Header Begin ========================================== |
2 | // | |
3 | // OpenSPARC T2 Processor File: lsu_sec_ctl.v | |
4 | // Copyright (C) 1995-2007 Sun Microsystems, Inc. All Rights Reserved | |
5 | // 4150 Network Circle, Santa Clara, California 95054, U.S.A. | |
6 | // | |
7 | // * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | |
8 | // | |
9 | // This program is free software; you can redistribute it and/or modify | |
10 | // it under the terms of the GNU General Public License as published by | |
11 | // the Free Software Foundation; version 2 of the License. | |
12 | // | |
13 | // This program is distributed in the hope that it will be useful, | |
14 | // but WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
16 | // GNU General Public License for more details. | |
17 | // | |
18 | // You should have received a copy of the GNU General Public License | |
19 | // along with this program; if not, write to the Free Software | |
20 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
21 | // | |
22 | // For the avoidance of doubt, and except that if any non-GPL license | |
23 | // choice is available it will apply instead, Sun elects to use only | |
24 | // the General Public License version 2 (GPLv2) at this time for any | |
25 | // software where a choice of GPL license versions is made | |
26 | // available with the language indicating that GPLv2 or any later version | |
27 | // may be used, or where a choice of which version of the GPL is applied is | |
28 | // otherwise unspecified. | |
29 | // | |
30 | // Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, | |
31 | // CA 95054 USA or visit www.sun.com if you need additional information or | |
32 | // have any questions. | |
33 | // | |
34 | // ========== Copyright Header End ============================================ | |
35 | module lsu_sec_ctl ( | |
36 | sed_c1_lo, | |
37 | sed_c1_hi, | |
38 | sed_c2_lo, | |
39 | sed_c2_hi, | |
40 | sed_c4_lo, | |
41 | sed_c4_hi, | |
42 | sed_c8_lo, | |
43 | sed_c8_hi, | |
44 | sed_c16_lo, | |
45 | sed_c16_hi, | |
46 | sed_cf_lo, | |
47 | sed_cf_hi, | |
48 | sed_c32_hi, | |
49 | sed_c32_lo, | |
50 | sbc_twocycle_inst_w, | |
51 | stb_cparity_calc, | |
52 | sbc_st_sz_m, | |
53 | sbc_std_le_m, | |
54 | sbc_st_le_if_ie_m, | |
55 | sbc_st_le_not_ie_m, | |
56 | sbc_spd_clken, | |
57 | mbi_run, | |
58 | mbi_wdata_b3, | |
59 | cecc_err, | |
60 | uecc_err, | |
61 | corr_bit, | |
62 | stb_cparity, | |
63 | sec_st_sz_dw_std_le_b, | |
64 | sec_st_sz_dw_le_not_ie_b, | |
65 | sec_st_sz_dw_be_not_ie_b, | |
66 | sec_st_sz_word_le_not_ie_b, | |
67 | sec_st_sz_word_be_not_ie_b, | |
68 | sec_st_sz_hw_le_not_ie_b, | |
69 | sec_st_sz_hw_be_not_ie_b, | |
70 | sec_st_sz_dw_le_if_ie_b, | |
71 | sec_st_sz_dw_be_if_ie_b, | |
72 | sec_st_sz_word_le_if_ie_b, | |
73 | sec_st_sz_word_be_if_ie_b, | |
74 | sec_st_sz_hw_le_if_ie_b, | |
75 | sec_st_sz_hw_be_if_ie_b, | |
76 | sec_st_sz_byte_b, | |
77 | l2clk, | |
78 | scan_in, | |
79 | tcu_pce_ov, | |
80 | tcu_scan_en, | |
81 | spc_aclk, | |
82 | spc_bclk, | |
83 | scan_out); | |
84 | wire se; | |
85 | wire pce_ov; | |
86 | wire stop; | |
87 | wire siclk; | |
88 | wire soclk; | |
89 | wire [31:0] err_bith; | |
90 | wire [31:0] err_bitl; | |
91 | wire l1clk_pm1; | |
92 | wire parityl; | |
93 | wire c32l; | |
94 | wire c16l; | |
95 | wire c8l; | |
96 | wire c4l; | |
97 | wire c2l; | |
98 | wire c1l; | |
99 | wire cecc_errl; | |
100 | wire uecc_errl; | |
101 | wire parityh; | |
102 | wire c32h; | |
103 | wire c16h; | |
104 | wire c8h; | |
105 | wire c4h; | |
106 | wire c2h; | |
107 | wire c1h; | |
108 | wire cecc_errh; | |
109 | wire uecc_errh; | |
110 | wire stb_cparity_w; | |
111 | wire dff_cparity_scanin; | |
112 | wire dff_cparity_scanout; | |
113 | wire st_sz_dw_m; | |
114 | wire st_sz_word_m; | |
115 | wire st_sz_hw_m; | |
116 | wire st_sz_byte_m; | |
117 | wire st_sz_dw_std_le_m; | |
118 | wire st_sz_dw_le_not_ie_m; | |
119 | wire st_sz_dw_be_not_ie_m; | |
120 | wire st_sz_word_le_not_ie_m; | |
121 | wire st_sz_word_be_not_ie_m; | |
122 | wire st_sz_hw_le_not_ie_m; | |
123 | wire st_sz_hw_be_not_ie_m; | |
124 | wire st_sz_dw_le_if_ie_m; | |
125 | wire st_sz_dw_be_if_ie_m; | |
126 | wire st_sz_word_le_if_ie_m; | |
127 | wire st_sz_word_be_if_ie_m; | |
128 | wire st_sz_hw_le_if_ie_m; | |
129 | wire st_sz_hw_be_if_ie_m; | |
130 | wire dff_st_sz_scanin; | |
131 | wire dff_st_sz_scanout; | |
132 | wire spares_scanin; | |
133 | wire spares_scanout; | |
134 | ||
135 | ||
136 | input [1:0] sed_c1_lo; | |
137 | input [1:0] sed_c1_hi; | |
138 | input [1:0] sed_c2_lo; | |
139 | input [1:0] sed_c2_hi; | |
140 | input [1:0] sed_c4_lo; | |
141 | input [1:0] sed_c4_hi; | |
142 | input [1:0] sed_c8_lo; | |
143 | input [1:0] sed_c8_hi; | |
144 | input [1:0] sed_c16_lo; | |
145 | input [1:0] sed_c16_hi; | |
146 | input [2:0] sed_cf_lo; | |
147 | input [2:0] sed_cf_hi; | |
148 | input sed_c32_hi; | |
149 | input sed_c32_lo; | |
150 | ||
151 | input sbc_twocycle_inst_w; | |
152 | input stb_cparity_calc; | |
153 | input [1:0] sbc_st_sz_m; | |
154 | input sbc_std_le_m; | |
155 | input sbc_st_le_if_ie_m; | |
156 | input sbc_st_le_not_ie_m; | |
157 | input sbc_spd_clken; | |
158 | ||
159 | input mbi_run; | |
160 | input mbi_wdata_b3; | |
161 | ||
162 | output cecc_err; | |
163 | output uecc_err; | |
164 | output [63:0] corr_bit; | |
165 | output stb_cparity; | |
166 | ||
167 | output sec_st_sz_dw_std_le_b; | |
168 | output sec_st_sz_dw_le_not_ie_b; | |
169 | output sec_st_sz_dw_be_not_ie_b; | |
170 | output sec_st_sz_word_le_not_ie_b; | |
171 | output sec_st_sz_word_be_not_ie_b; | |
172 | output sec_st_sz_hw_le_not_ie_b; | |
173 | output sec_st_sz_hw_be_not_ie_b; | |
174 | output sec_st_sz_dw_le_if_ie_b; | |
175 | output sec_st_sz_dw_be_if_ie_b; | |
176 | output sec_st_sz_word_le_if_ie_b; | |
177 | output sec_st_sz_word_be_if_ie_b; | |
178 | output sec_st_sz_hw_le_if_ie_b; | |
179 | output sec_st_sz_hw_be_if_ie_b; | |
180 | output sec_st_sz_byte_b; | |
181 | ||
182 | input l2clk; | |
183 | input scan_in; | |
184 | input tcu_pce_ov; // scan signals | |
185 | input tcu_scan_en; | |
186 | input spc_aclk; | |
187 | input spc_bclk; | |
188 | output scan_out; | |
189 | ||
190 | // scan renames | |
191 | assign se = tcu_scan_en; | |
192 | assign pce_ov = tcu_pce_ov; | |
193 | assign stop = 1'b0; | |
194 | assign siclk = spc_aclk; | |
195 | assign soclk = spc_bclk; | |
196 | // end scan | |
197 | ||
198 | assign corr_bit[63:0] = {err_bith[31:0],err_bitl[31:0]}; | |
199 | ||
200 | ////////////////////////////// | |
201 | // Clock header | |
202 | ////////////////////////////// | |
203 | lsu_sec_ctl_l1clkhdr_ctl_macro clkgen ( | |
204 | .l2clk (l2clk ), | |
205 | .l1en (sbc_spd_clken ), | |
206 | .l1clk (l1clk_pm1 ), | |
207 | .pce_ov(pce_ov), | |
208 | .stop(stop), | |
209 | .se(se) | |
210 | ); | |
211 | ||
212 | /////////////////////////////////////////////////////////////////////// | |
213 | // Flop check bits, determine error, and generate correction vector | |
214 | ||
215 | assign parityl = sed_cf_lo[2] ^ sed_cf_lo[1] ^ sed_cf_lo[0]; | |
216 | assign c32l = sed_c32_lo; | |
217 | assign c16l = sed_c16_lo[1] ^ sed_c16_lo[0]; | |
218 | assign c8l = sed_c8_lo[1] ^ sed_c8_lo[0]; | |
219 | assign c4l = sed_c4_lo[1] ^ sed_c4_lo[0]; | |
220 | assign c2l = sed_c2_lo[1] ^ sed_c2_lo[0]; | |
221 | assign c1l = sed_c1_lo[1] ^ sed_c1_lo[0]; | |
222 | ||
223 | assign cecc_errl = |({c1l,c2l,c4l,c8l,c16l,c32l}) & parityl; | |
224 | assign uecc_errl = |({c1l,c2l,c4l,c8l,c16l,c32l}) & ~parityl; | |
225 | ||
226 | assign err_bitl[0] = ~c32l & ~c16l & ~c8l & ~c4l & c2l & c1l; | |
227 | assign err_bitl[1] = ~c32l & ~c16l & ~c8l & c4l & ~c2l & c1l; | |
228 | assign err_bitl[2] = ~c32l & ~c16l & ~c8l & c4l & c2l & ~c1l; | |
229 | assign err_bitl[3] = ~c32l & ~c16l & ~c8l & c4l & c2l & c1l; | |
230 | assign err_bitl[4] = ~c32l & ~c16l & c8l & ~c4l & ~c2l & c1l; | |
231 | assign err_bitl[5] = ~c32l & ~c16l & c8l & ~c4l & c2l & ~c1l; | |
232 | assign err_bitl[6] = ~c32l & ~c16l & c8l & ~c4l & c2l & c1l; | |
233 | assign err_bitl[7] = ~c32l & ~c16l & c8l & c4l & ~c2l & ~c1l; | |
234 | assign err_bitl[8] = ~c32l & ~c16l & c8l & c4l & ~c2l & c1l; | |
235 | assign err_bitl[9] = ~c32l & ~c16l & c8l & c4l & c2l & ~c1l; | |
236 | assign err_bitl[10] = ~c32l & ~c16l & c8l & c4l & c2l & c1l; | |
237 | assign err_bitl[11] = ~c32l & c16l & ~c8l & ~c4l & ~c2l & c1l; | |
238 | assign err_bitl[12] = ~c32l & c16l & ~c8l & ~c4l & c2l & ~c1l; | |
239 | assign err_bitl[13] = ~c32l & c16l & ~c8l & ~c4l & c2l & c1l; | |
240 | assign err_bitl[14] = ~c32l & c16l & ~c8l & c4l & ~c2l & ~c1l; | |
241 | assign err_bitl[15] = ~c32l & c16l & ~c8l & c4l & ~c2l & c1l; | |
242 | assign err_bitl[16] = ~c32l & c16l & ~c8l & c4l & c2l & ~c1l; | |
243 | assign err_bitl[17] = ~c32l & c16l & ~c8l & c4l & c2l & c1l; | |
244 | assign err_bitl[18] = ~c32l & c16l & c8l & ~c4l & ~c2l & ~c1l; | |
245 | assign err_bitl[19] = ~c32l & c16l & c8l & ~c4l & ~c2l & c1l; | |
246 | assign err_bitl[20] = ~c32l & c16l & c8l & ~c4l & c2l & ~c1l; | |
247 | assign err_bitl[21] = ~c32l & c16l & c8l & ~c4l & c2l & c1l; | |
248 | assign err_bitl[22] = ~c32l & c16l & c8l & c4l & ~c2l & ~c1l; | |
249 | assign err_bitl[23] = ~c32l & c16l & c8l & c4l & ~c2l & c1l; | |
250 | assign err_bitl[24] = ~c32l & c16l & c8l & c4l & c2l & ~c1l; | |
251 | assign err_bitl[25] = ~c32l & c16l & c8l & c4l & c2l & c1l; | |
252 | assign err_bitl[26] = c32l & ~c16l & ~c8l & ~c4l & ~c2l & c1l; | |
253 | assign err_bitl[27] = c32l & ~c16l & ~c8l & ~c4l & c2l & ~c1l; | |
254 | assign err_bitl[28] = c32l & ~c16l & ~c8l & ~c4l & c2l & c1l; | |
255 | assign err_bitl[29] = c32l & ~c16l & ~c8l & c4l & ~c2l & ~c1l; | |
256 | assign err_bitl[30] = c32l & ~c16l & ~c8l & c4l & ~c2l & c1l; | |
257 | assign err_bitl[31] = c32l & ~c16l & ~c8l & c4l & c2l & ~c1l; | |
258 | ||
259 | assign parityh = sed_cf_hi[2] ^ sed_cf_hi[1] ^ sed_cf_hi[0]; | |
260 | assign c32h = sed_c32_hi; | |
261 | assign c16h = sed_c16_hi[1] ^ sed_c16_hi[0]; | |
262 | assign c8h = sed_c8_hi[1] ^ sed_c8_hi[0]; | |
263 | assign c4h = sed_c4_hi[1] ^ sed_c4_hi[0]; | |
264 | assign c2h = sed_c2_hi[1] ^ sed_c2_hi[0]; | |
265 | assign c1h = sed_c1_hi[1] ^ sed_c1_hi[0]; | |
266 | ||
267 | assign cecc_errh = |({c1h,c2h,c4h,c8h,c16h,c32h}) & parityh; | |
268 | assign uecc_errh = |({c1h,c2h,c4h,c8h,c16h,c32h}) & ~parityh; | |
269 | ||
270 | assign err_bith[0] = ~c32h & ~c16h & ~c8h & ~c4h & c2h & c1h; | |
271 | assign err_bith[1] = ~c32h & ~c16h & ~c8h & c4h & ~c2h & c1h; | |
272 | assign err_bith[2] = ~c32h & ~c16h & ~c8h & c4h & c2h & ~c1h; | |
273 | assign err_bith[3] = ~c32h & ~c16h & ~c8h & c4h & c2h & c1h; | |
274 | assign err_bith[4] = ~c32h & ~c16h & c8h & ~c4h & ~c2h & c1h; | |
275 | assign err_bith[5] = ~c32h & ~c16h & c8h & ~c4h & c2h & ~c1h; | |
276 | assign err_bith[6] = ~c32h & ~c16h & c8h & ~c4h & c2h & c1h; | |
277 | assign err_bith[7] = ~c32h & ~c16h & c8h & c4h & ~c2h & ~c1h; | |
278 | assign err_bith[8] = ~c32h & ~c16h & c8h & c4h & ~c2h & c1h; | |
279 | assign err_bith[9] = ~c32h & ~c16h & c8h & c4h & c2h & ~c1h; | |
280 | assign err_bith[10] = ~c32h & ~c16h & c8h & c4h & c2h & c1h; | |
281 | assign err_bith[11] = ~c32h & c16h & ~c8h & ~c4h & ~c2h & c1h; | |
282 | assign err_bith[12] = ~c32h & c16h & ~c8h & ~c4h & c2h & ~c1h; | |
283 | assign err_bith[13] = ~c32h & c16h & ~c8h & ~c4h & c2h & c1h; | |
284 | assign err_bith[14] = ~c32h & c16h & ~c8h & c4h & ~c2h & ~c1h; | |
285 | assign err_bith[15] = ~c32h & c16h & ~c8h & c4h & ~c2h & c1h; | |
286 | assign err_bith[16] = ~c32h & c16h & ~c8h & c4h & c2h & ~c1h; | |
287 | assign err_bith[17] = ~c32h & c16h & ~c8h & c4h & c2h & c1h; | |
288 | assign err_bith[18] = ~c32h & c16h & c8h & ~c4h & ~c2h & ~c1h; | |
289 | assign err_bith[19] = ~c32h & c16h & c8h & ~c4h & ~c2h & c1h; | |
290 | assign err_bith[20] = ~c32h & c16h & c8h & ~c4h & c2h & ~c1h; | |
291 | assign err_bith[21] = ~c32h & c16h & c8h & ~c4h & c2h & c1h; | |
292 | assign err_bith[22] = ~c32h & c16h & c8h & c4h & ~c2h & ~c1h; | |
293 | assign err_bith[23] = ~c32h & c16h & c8h & c4h & ~c2h & c1h; | |
294 | assign err_bith[24] = ~c32h & c16h & c8h & c4h & c2h & ~c1h; | |
295 | assign err_bith[25] = ~c32h & c16h & c8h & c4h & c2h & c1h; | |
296 | assign err_bith[26] = c32h & ~c16h & ~c8h & ~c4h & ~c2h & c1h; | |
297 | assign err_bith[27] = c32h & ~c16h & ~c8h & ~c4h & c2h & ~c1h; | |
298 | assign err_bith[28] = c32h & ~c16h & ~c8h & ~c4h & c2h & c1h; | |
299 | assign err_bith[29] = c32h & ~c16h & ~c8h & c4h & ~c2h & ~c1h; | |
300 | assign err_bith[30] = c32h & ~c16h & ~c8h & c4h & ~c2h & c1h; | |
301 | assign err_bith[31] = c32h & ~c16h & ~c8h & c4h & c2h & ~c1h; | |
302 | ||
303 | assign cecc_err = cecc_errl | cecc_errh; | |
304 | assign uecc_err = uecc_errl | uecc_errh; | |
305 | ||
306 | assign stb_cparity = mbi_run ? mbi_wdata_b3 : (sbc_twocycle_inst_w ? stb_cparity_w : stb_cparity_calc); | |
307 | ||
308 | // Store cam parity for a cycle for the STD case | |
309 | lsu_sec_ctl_msff_ctl_macro__width_1 dff_cparity ( | |
310 | .scan_in(dff_cparity_scanin), | |
311 | .scan_out(dff_cparity_scanout), | |
312 | .l1clk (l1clk_pm1), | |
313 | .din (stb_cparity_calc), | |
314 | .dout (stb_cparity_w), | |
315 | .siclk(siclk), | |
316 | .soclk(soclk) | |
317 | ); | |
318 | ||
319 | assign st_sz_dw_m = sbc_st_sz_m[1] & sbc_st_sz_m[0]; | |
320 | assign st_sz_word_m = sbc_st_sz_m[1] & ~sbc_st_sz_m[0]; | |
321 | assign st_sz_hw_m = ~sbc_st_sz_m[1] & sbc_st_sz_m[0]; | |
322 | assign st_sz_byte_m = ~sbc_st_sz_m[1] & ~sbc_st_sz_m[0]; | |
323 | ||
324 | assign st_sz_dw_std_le_m = st_sz_dw_m & sbc_std_le_m; | |
325 | assign st_sz_dw_le_not_ie_m = st_sz_dw_m & ~sbc_std_le_m & sbc_st_le_not_ie_m; | |
326 | assign st_sz_dw_be_not_ie_m = st_sz_dw_m & ~sbc_std_le_m & ~sbc_st_le_not_ie_m; | |
327 | assign st_sz_word_le_not_ie_m = st_sz_word_m & sbc_st_le_not_ie_m; | |
328 | assign st_sz_word_be_not_ie_m = st_sz_word_m & ~sbc_st_le_not_ie_m; | |
329 | assign st_sz_hw_le_not_ie_m = st_sz_hw_m & sbc_st_le_not_ie_m; | |
330 | assign st_sz_hw_be_not_ie_m = st_sz_hw_m & ~sbc_st_le_not_ie_m; | |
331 | assign st_sz_dw_le_if_ie_m = st_sz_dw_m & ~sbc_std_le_m & sbc_st_le_if_ie_m; | |
332 | assign st_sz_dw_be_if_ie_m = st_sz_dw_m & ~sbc_std_le_m & ~sbc_st_le_if_ie_m; | |
333 | assign st_sz_word_le_if_ie_m = st_sz_word_m & sbc_st_le_if_ie_m; | |
334 | assign st_sz_word_be_if_ie_m = st_sz_word_m & ~sbc_st_le_if_ie_m; | |
335 | assign st_sz_hw_le_if_ie_m = st_sz_hw_m & sbc_st_le_if_ie_m; | |
336 | assign st_sz_hw_be_if_ie_m = st_sz_hw_m & ~sbc_st_le_if_ie_m; | |
337 | ||
338 | lsu_sec_ctl_msff_ctl_macro__width_14 dff_st_sz ( | |
339 | .scan_in(dff_st_sz_scanin), | |
340 | .scan_out(dff_st_sz_scanout), | |
341 | .l1clk (l1clk_pm1), | |
342 | .din ({ st_sz_dw_std_le_m, st_sz_dw_le_not_ie_m, st_sz_dw_be_not_ie_m, | |
343 | st_sz_word_le_not_ie_m, st_sz_word_be_not_ie_m, st_sz_hw_le_not_ie_m, | |
344 | st_sz_hw_be_not_ie_m, st_sz_dw_le_if_ie_m, st_sz_dw_be_if_ie_m, | |
345 | st_sz_word_le_if_ie_m, st_sz_word_be_if_ie_m, st_sz_hw_le_if_ie_m, | |
346 | st_sz_hw_be_if_ie_m, st_sz_byte_m}), | |
347 | .dout ({sec_st_sz_dw_std_le_b, sec_st_sz_dw_le_not_ie_b, sec_st_sz_dw_be_not_ie_b, | |
348 | sec_st_sz_word_le_not_ie_b,sec_st_sz_word_be_not_ie_b,sec_st_sz_hw_le_not_ie_b, | |
349 | sec_st_sz_hw_be_not_ie_b, sec_st_sz_dw_le_if_ie_b, sec_st_sz_dw_be_if_ie_b, | |
350 | sec_st_sz_word_le_if_ie_b, sec_st_sz_word_be_if_ie_b, sec_st_sz_hw_le_if_ie_b, | |
351 | sec_st_sz_hw_be_if_ie_b, sec_st_sz_byte_b}), | |
352 | .siclk(siclk), | |
353 | .soclk(soclk) | |
354 | ); | |
355 | ||
356 | ||
357 | lsu_sec_ctl_spare_ctl_macro__num_1 spares ( | |
358 | .scan_in(spares_scanin), | |
359 | .scan_out(spares_scanout), | |
360 | .l1clk (l1clk_pm1), | |
361 | .siclk(siclk), | |
362 | .soclk(soclk) | |
363 | ); | |
364 | ||
365 | // fixscan start: | |
366 | assign dff_cparity_scanin = scan_in ; | |
367 | assign dff_st_sz_scanin = dff_cparity_scanout ; | |
368 | assign spares_scanin = dff_st_sz_scanout ; | |
369 | assign scan_out = spares_scanout ; | |
370 | // fixscan end: | |
371 | endmodule | |
372 | ||
373 | ||
374 | ||
375 | ||
376 | ||
377 | ||
378 | ||
379 | // any PARAMS parms go into naming of macro | |
380 | ||
381 | module lsu_sec_ctl_l1clkhdr_ctl_macro ( | |
382 | l2clk, | |
383 | l1en, | |
384 | pce_ov, | |
385 | stop, | |
386 | se, | |
387 | l1clk); | |
388 | ||
389 | ||
390 | input l2clk; | |
391 | input l1en; | |
392 | input pce_ov; | |
393 | input stop; | |
394 | input se; | |
395 | output l1clk; | |
396 | ||
397 | ||
398 | ||
399 | ||
400 | ||
401 | cl_sc1_l1hdr_8x c_0 ( | |
402 | ||
403 | ||
404 | .l2clk(l2clk), | |
405 | .pce(l1en), | |
406 | .l1clk(l1clk), | |
407 | .se(se), | |
408 | .pce_ov(pce_ov), | |
409 | .stop(stop) | |
410 | ); | |
411 | ||
412 | ||
413 | ||
414 | endmodule | |
415 | ||
416 | ||
417 | ||
418 | ||
419 | ||
420 | ||
421 | ||
422 | ||
423 | ||
424 | ||
425 | ||
426 | ||
427 | ||
428 | // any PARAMS parms go into naming of macro | |
429 | ||
430 | module lsu_sec_ctl_msff_ctl_macro__width_1 ( | |
431 | din, | |
432 | l1clk, | |
433 | scan_in, | |
434 | siclk, | |
435 | soclk, | |
436 | dout, | |
437 | scan_out); | |
438 | wire [0:0] fdin; | |
439 | ||
440 | input [0:0] din; | |
441 | input l1clk; | |
442 | input scan_in; | |
443 | ||
444 | ||
445 | input siclk; | |
446 | input soclk; | |
447 | ||
448 | output [0:0] dout; | |
449 | output scan_out; | |
450 | assign fdin[0:0] = din[0:0]; | |
451 | ||
452 | ||
453 | ||
454 | ||
455 | ||
456 | ||
457 | dff #(1) d0_0 ( | |
458 | .l1clk(l1clk), | |
459 | .siclk(siclk), | |
460 | .soclk(soclk), | |
461 | .d(fdin[0:0]), | |
462 | .si(scan_in), | |
463 | .so(scan_out), | |
464 | .q(dout[0:0]) | |
465 | ); | |
466 | ||
467 | ||
468 | ||
469 | ||
470 | ||
471 | ||
472 | ||
473 | ||
474 | ||
475 | ||
476 | ||
477 | ||
478 | endmodule | |
479 | ||
480 | ||
481 | ||
482 | ||
483 | ||
484 | ||
485 | ||
486 | ||
487 | ||
488 | ||
489 | ||
490 | ||
491 | ||
492 | // any PARAMS parms go into naming of macro | |
493 | ||
494 | module lsu_sec_ctl_msff_ctl_macro__width_14 ( | |
495 | din, | |
496 | l1clk, | |
497 | scan_in, | |
498 | siclk, | |
499 | soclk, | |
500 | dout, | |
501 | scan_out); | |
502 | wire [13:0] fdin; | |
503 | wire [12:0] so; | |
504 | ||
505 | input [13:0] din; | |
506 | input l1clk; | |
507 | input scan_in; | |
508 | ||
509 | ||
510 | input siclk; | |
511 | input soclk; | |
512 | ||
513 | output [13:0] dout; | |
514 | output scan_out; | |
515 | assign fdin[13:0] = din[13:0]; | |
516 | ||
517 | ||
518 | ||
519 | ||
520 | ||
521 | ||
522 | dff #(14) d0_0 ( | |
523 | .l1clk(l1clk), | |
524 | .siclk(siclk), | |
525 | .soclk(soclk), | |
526 | .d(fdin[13:0]), | |
527 | .si({scan_in,so[12:0]}), | |
528 | .so({so[12:0],scan_out}), | |
529 | .q(dout[13:0]) | |
530 | ); | |
531 | ||
532 | ||
533 | ||
534 | ||
535 | ||
536 | ||
537 | ||
538 | ||
539 | ||
540 | ||
541 | ||
542 | ||
543 | endmodule | |
544 | ||
545 | ||
546 | ||
547 | ||
548 | ||
549 | ||
550 | ||
551 | ||
552 | ||
553 | // Description: Spare gate macro for control blocks | |
554 | // | |
555 | // Param num controls the number of times the macro is added | |
556 | // flops=0 can be used to use only combination spare logic | |
557 | ||
558 | ||
559 | module lsu_sec_ctl_spare_ctl_macro__num_1 ( | |
560 | l1clk, | |
561 | scan_in, | |
562 | siclk, | |
563 | soclk, | |
564 | scan_out); | |
565 | wire si_0; | |
566 | wire so_0; | |
567 | wire spare0_flop_unused; | |
568 | wire spare0_buf_32x_unused; | |
569 | wire spare0_nand3_8x_unused; | |
570 | wire spare0_inv_8x_unused; | |
571 | wire spare0_aoi22_4x_unused; | |
572 | wire spare0_buf_8x_unused; | |
573 | wire spare0_oai22_4x_unused; | |
574 | wire spare0_inv_16x_unused; | |
575 | wire spare0_nand2_16x_unused; | |
576 | wire spare0_nor3_4x_unused; | |
577 | wire spare0_nand2_8x_unused; | |
578 | wire spare0_buf_16x_unused; | |
579 | wire spare0_nor2_16x_unused; | |
580 | wire spare0_inv_32x_unused; | |
581 | ||
582 | ||
583 | input l1clk; | |
584 | input scan_in; | |
585 | input siclk; | |
586 | input soclk; | |
587 | output scan_out; | |
588 | ||
589 | cl_sc1_msff_8x spare0_flop (.l1clk(l1clk), | |
590 | .siclk(siclk), | |
591 | .soclk(soclk), | |
592 | .si(si_0), | |
593 | .so(so_0), | |
594 | .d(1'b0), | |
595 | .q(spare0_flop_unused)); | |
596 | assign si_0 = scan_in; | |
597 | ||
598 | cl_u1_buf_32x spare0_buf_32x (.in(1'b1), | |
599 | .out(spare0_buf_32x_unused)); | |
600 | cl_u1_nand3_8x spare0_nand3_8x (.in0(1'b1), | |
601 | .in1(1'b1), | |
602 | .in2(1'b1), | |
603 | .out(spare0_nand3_8x_unused)); | |
604 | cl_u1_inv_8x spare0_inv_8x (.in(1'b1), | |
605 | .out(spare0_inv_8x_unused)); | |
606 | cl_u1_aoi22_4x spare0_aoi22_4x (.in00(1'b1), | |
607 | .in01(1'b1), | |
608 | .in10(1'b1), | |
609 | .in11(1'b1), | |
610 | .out(spare0_aoi22_4x_unused)); | |
611 | cl_u1_buf_8x spare0_buf_8x (.in(1'b1), | |
612 | .out(spare0_buf_8x_unused)); | |
613 | cl_u1_oai22_4x spare0_oai22_4x (.in00(1'b1), | |
614 | .in01(1'b1), | |
615 | .in10(1'b1), | |
616 | .in11(1'b1), | |
617 | .out(spare0_oai22_4x_unused)); | |
618 | cl_u1_inv_16x spare0_inv_16x (.in(1'b1), | |
619 | .out(spare0_inv_16x_unused)); | |
620 | cl_u1_nand2_16x spare0_nand2_16x (.in0(1'b1), | |
621 | .in1(1'b1), | |
622 | .out(spare0_nand2_16x_unused)); | |
623 | cl_u1_nor3_4x spare0_nor3_4x (.in0(1'b0), | |
624 | .in1(1'b0), | |
625 | .in2(1'b0), | |
626 | .out(spare0_nor3_4x_unused)); | |
627 | cl_u1_nand2_8x spare0_nand2_8x (.in0(1'b1), | |
628 | .in1(1'b1), | |
629 | .out(spare0_nand2_8x_unused)); | |
630 | cl_u1_buf_16x spare0_buf_16x (.in(1'b1), | |
631 | .out(spare0_buf_16x_unused)); | |
632 | cl_u1_nor2_16x spare0_nor2_16x (.in0(1'b0), | |
633 | .in1(1'b0), | |
634 | .out(spare0_nor2_16x_unused)); | |
635 | cl_u1_inv_32x spare0_inv_32x (.in(1'b1), | |
636 | .out(spare0_inv_32x_unused)); | |
637 | assign scan_out = so_0; | |
638 | ||
639 | ||
640 | ||
641 | endmodule | |
642 |