Commit | Line | Data |
---|---|---|
86530b38 AT |
1 | // ========== Copyright Header Begin ========================================== |
2 | // | |
3 | // OpenSPARC T2 Processor File: n2_clk_clhdr_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 ============================================ | |
35 | module n2_clk_clhdr_cust(cpu_divider_bypass ,tcu_pce_ov ,tcu_clk_stop , | |
36 | clk_ext ,div_r ,div_f ,se ,so ,clk_stop ,pce_ov ,wmr_reset ,cclk , | |
37 | tcu_dbg_init ,soclk ,siclk ,si ,gclk ,rst_wmr_reset ,l2clk , | |
38 | dbg_init ); | |
39 | output so ; | |
40 | output clk_stop ; | |
41 | output pce_ov ; | |
42 | output wmr_reset ; | |
43 | output cclk ; | |
44 | output dbg_init ; | |
45 | input cpu_divider_bypass ; | |
46 | input tcu_pce_ov ; | |
47 | input tcu_clk_stop ; | |
48 | input clk_ext ; | |
49 | input div_r ; | |
50 | input div_f ; | |
51 | input se ; | |
52 | input tcu_dbg_init ; | |
53 | input soclk ; | |
54 | input siclk ; | |
55 | input si ; | |
56 | input gclk ; | |
57 | input rst_wmr_reset ; | |
58 | input l2clk ; | |
59 | ||
60 | wire [1:0] scan ; | |
61 | wire gclk_local ; | |
62 | wire scanout ; | |
63 | wire div_r_local ; | |
64 | wire gclk_div ; | |
65 | wire aclk ; | |
66 | wire wmr ; | |
67 | wire net38 ; | |
68 | wire stop ; | |
69 | wire bclk ; | |
70 | wire dbg ; | |
71 | wire div_f_local ; | |
72 | wire pceov ; | |
73 | ||
74 | ||
75 | n2_clk_clhdr_blatch xdivr_blatch ( | |
76 | .sd (div_r_local ), | |
77 | .so (net38 ), | |
78 | .ck (gclk_local ), | |
79 | .se(se) ); | |
80 | cl_u1_buf_20x xdrvso ( | |
81 | .out (so ), | |
82 | .in (scanout ) ); | |
83 | cl_u1_buf_20x xdrvwmr ( | |
84 | .out (wmr_reset ), | |
85 | .in (wmr ) ); | |
86 | cl_sc1_l1hdr_4x xgclkhdr ( | |
87 | .se (se ), | |
88 | .pce (1'b1 ), | |
89 | .pce_ov (1'b1 ), | |
90 | .stop (stop ), | |
91 | .l2clk (l2clk ), | |
92 | .l1clk (gclk_local ) ); | |
93 | cl_u1_buf_20x xdrvdbg ( | |
94 | .out (dbg_init ), | |
95 | .in (dbg ) ); | |
96 | cl_u1_buf_8x xaclk ( | |
97 | .out (aclk ), | |
98 | .in (siclk ) ); | |
99 | cl_dp1_msff_4x xdivf ( | |
100 | .q (div_f_local ), | |
101 | .so (scan[1] ), | |
102 | .soclk (bclk ), | |
103 | .siclk (aclk ), | |
104 | .si (scan[0] ), | |
105 | .l1clk (gclk_local ), | |
106 | .d (div_f ) ); | |
107 | n2_clk_clhdr_sync xsync ( | |
108 | .se (se ), | |
109 | .g_clk_stop (tcu_clk_stop ), | |
110 | .g_pce_ov (tcu_pce_ov ), | |
111 | .g_dbg_init (tcu_dbg_init ), | |
112 | .g_wmr_reset (rst_wmr_reset ), | |
113 | .wmr_reset (wmr ), | |
114 | .dbg_init (dbg ), | |
115 | .so (scanout ), | |
116 | .si (scan[1] ), | |
117 | .siclk (aclk ), | |
118 | .soclk (bclk ), | |
119 | .gclk (gclk_local ), | |
120 | .pce_ov (pceov ), | |
121 | .clk_stop (stop ), | |
122 | .l2clk (l2clk ) ); | |
123 | cl_u1_buf_20x xdrvstop ( | |
124 | .out (clk_stop ), | |
125 | .in (stop ) ); | |
126 | cl_dp1_msff_4x xdivr ( | |
127 | .q (div_r_local ), | |
128 | .so (scan[0] ), | |
129 | .soclk (bclk ), | |
130 | .siclk (aclk ), | |
131 | .si (si ), | |
132 | .l1clk (gclk_local ), | |
133 | .d (div_r ) ); | |
134 | cl_u1_buf_8x xbclk ( | |
135 | .out (bclk ), | |
136 | .in (soclk ) ); | |
137 | cl_u1_buf_20x xdrvpce ( | |
138 | .out (pce_ov ), | |
139 | .in (pceov ) ); | |
140 | n2_clk_clhdr_divmux x1 ( | |
141 | .bypass (cpu_divider_bypass ), | |
142 | .f (div_f_local ), | |
143 | .r (net38 ), | |
144 | .ck (gclk ), | |
145 | .div_ck (cclk ), | |
146 | .clk_ext (clk_ext ) ); | |
147 | endmodule | |
148 | ||
149 | ||
150 | ||
151 | ||
152 | module n2_clk_clhdr_blatch (so, sd, ck, se); | |
153 | output so; | |
154 | input sd, ck, se; | |
155 | ||
156 | reg so_l; | |
157 | ||
158 | assign so = ~so_l; | |
159 | always @ ( ck or sd ) | |
160 | if (~ck) so_l <= ~(sd & se) ; | |
161 | ||
162 | endmodule | |
163 | ||
164 | ||
165 | ||
166 | ||
167 | ||
168 | module n2_clk_clhdr_sync(se ,g_clk_stop ,g_pce_ov ,g_dbg_init , | |
169 | g_wmr_reset ,wmr_reset ,dbg_init ,so ,si ,siclk ,soclk ,gclk , | |
170 | pce_ov ,clk_stop ,l2clk ); | |
171 | output wmr_reset ; | |
172 | output dbg_init ; | |
173 | output so ; | |
174 | output pce_ov ; | |
175 | output clk_stop ; | |
176 | input se ; | |
177 | input g_clk_stop ; | |
178 | input g_pce_ov ; | |
179 | input g_dbg_init ; | |
180 | input g_wmr_reset ; | |
181 | input si ; | |
182 | input siclk ; | |
183 | input soclk ; | |
184 | input gclk ; | |
185 | input l2clk ; | |
186 | ||
187 | wire net70 ; | |
188 | wire scan_wmr ; | |
189 | wire scan_pceov ; | |
190 | wire scan_stop_l ; | |
191 | wire net91 ; | |
192 | wire scan_pceov_l ; | |
193 | wire scan_dbg ; | |
194 | wire net42 ; | |
195 | wire l1clk ; | |
196 | wire net56 ; | |
197 | wire scan_wmr_l ; | |
198 | wire scan_stop ; | |
199 | ||
200 | ||
201 | cl_sc1_l1hdr_8x x5 ( | |
202 | .se (se ), | |
203 | .l1clk (l1clk ), | |
204 | .l2clk (l2clk ), | |
205 | .stop (clk_stop ), | |
206 | .pce_ov (1'b1 ), | |
207 | .pce (1'b1 ) ); | |
208 | cl_dp1_msff_4x xstop_g ( | |
209 | .q (net42 ), | |
210 | .so (scan_stop ), | |
211 | .soclk (soclk ), | |
212 | .siclk (siclk ), | |
213 | .si (si ), | |
214 | .l1clk (gclk ), | |
215 | .d (g_clk_stop ) ); | |
216 | cl_dp1_msff_4x xstop_l ( | |
217 | .q (clk_stop ), | |
218 | .so (scan_stop_l ), | |
219 | .soclk (soclk ), | |
220 | .siclk (siclk ), | |
221 | .si (scan_stop ), | |
222 | .l1clk (l1clk ), | |
223 | .d (net42 ) ); | |
224 | cl_dp1_msff_4x xdbg_g ( | |
225 | .q (net70 ), | |
226 | .so (scan_dbg ), | |
227 | .soclk (soclk ), | |
228 | .siclk (siclk ), | |
229 | .si (scan_wmr_l ), | |
230 | .l1clk (gclk ), | |
231 | .d (g_dbg_init ) ); | |
232 | cl_dp1_msff_4x xdbg_l ( | |
233 | .q (dbg_init ), | |
234 | .so (so ), | |
235 | .soclk (soclk ), | |
236 | .siclk (siclk ), | |
237 | .si (scan_dbg ), | |
238 | .l1clk (l1clk ), | |
239 | .d (net70 ) ); | |
240 | cl_dp1_msff_4x xpceov_g ( | |
241 | .q (net91 ), | |
242 | .so (scan_pceov ), | |
243 | .soclk (soclk ), | |
244 | .siclk (siclk ), | |
245 | .si (scan_stop_l ), | |
246 | .l1clk (gclk ), | |
247 | .d (g_pce_ov ) ); | |
248 | cl_dp1_msff_4x xpceov_l ( | |
249 | .q (pce_ov ), | |
250 | .so (scan_pceov_l ), | |
251 | .soclk (soclk ), | |
252 | .siclk (siclk ), | |
253 | .si (scan_pceov ), | |
254 | .l1clk (l1clk ), | |
255 | .d (net91 ) ); | |
256 | cl_dp1_msff_4x xwmr_g ( | |
257 | .q (net56 ), | |
258 | .so (scan_wmr ), | |
259 | .soclk (soclk ), | |
260 | .siclk (siclk ), | |
261 | .si (scan_pceov_l ), | |
262 | .l1clk (gclk ), | |
263 | .d (g_wmr_reset ) ); | |
264 | cl_dp1_msff_4x xwmr_l ( | |
265 | .q (wmr_reset ), | |
266 | .so (scan_wmr_l ), | |
267 | .soclk (soclk ), | |
268 | .siclk (siclk ), | |
269 | .si (scan_wmr ), | |
270 | .l1clk (l1clk ), | |
271 | .d (net56 ) ); | |
272 | endmodule | |
273 | ||
274 | ||
275 | ||
276 | ||
277 | module n2_clk_clhdr_divmux(div_ck ,r ,f ,clk_ext ,ck ,bypass ); | |
278 | output div_ck ; | |
279 | input r ; | |
280 | input f ; | |
281 | input clk_ext ; | |
282 | input ck ; | |
283 | input bypass ; | |
284 | ||
285 | ||
286 | assign div_ck = ck ; | |
287 | ||
288 | endmodule | |
289 | ||
290 |