Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / libs / clk / n2_clk_clhdr_cust_l / n2_clk_clhdr_cust / rtl / n2_clk_clhdr_cust.v
CommitLineData
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 ============================================
35module 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 );
39output so ;
40output clk_stop ;
41output pce_ov ;
42output wmr_reset ;
43output cclk ;
44output dbg_init ;
45input cpu_divider_bypass ;
46input tcu_pce_ov ;
47input tcu_clk_stop ;
48input clk_ext ;
49input div_r ;
50input div_f ;
51input se ;
52input tcu_dbg_init ;
53input soclk ;
54input siclk ;
55input si ;
56input gclk ;
57input rst_wmr_reset ;
58input l2clk ;
59
60wire [1:0] scan ;
61wire gclk_local ;
62wire scanout ;
63wire div_r_local ;
64wire gclk_div ;
65wire aclk ;
66wire wmr ;
67wire net38 ;
68wire stop ;
69wire bclk ;
70wire dbg ;
71wire div_f_local ;
72wire pceov ;
73
74
75n2_clk_clhdr_blatch xdivr_blatch (
76 .sd (div_r_local ),
77 .so (net38 ),
78 .ck (gclk_local ),
79 .se(se) );
80cl_u1_buf_20x xdrvso (
81 .out (so ),
82 .in (scanout ) );
83cl_u1_buf_20x xdrvwmr (
84 .out (wmr_reset ),
85 .in (wmr ) );
86cl_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 ) );
93cl_u1_buf_20x xdrvdbg (
94 .out (dbg_init ),
95 .in (dbg ) );
96cl_u1_buf_8x xaclk (
97 .out (aclk ),
98 .in (siclk ) );
99cl_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 ) );
107n2_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 ) );
123cl_u1_buf_20x xdrvstop (
124 .out (clk_stop ),
125 .in (stop ) );
126cl_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 ) );
134cl_u1_buf_8x xbclk (
135 .out (bclk ),
136 .in (soclk ) );
137cl_u1_buf_20x xdrvpce (
138 .out (pce_ov ),
139 .in (pceov ) );
140n2_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 ) );
147endmodule
148
149
150
151
152module n2_clk_clhdr_blatch (so, sd, ck, se);
153output so;
154input sd, ck, se;
155
156reg so_l;
157
158 assign so = ~so_l;
159 always @ ( ck or sd )
160 if (~ck) so_l <= ~(sd & se) ;
161
162endmodule
163
164
165
166
167
168module 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 );
171output wmr_reset ;
172output dbg_init ;
173output so ;
174output pce_ov ;
175output clk_stop ;
176input se ;
177input g_clk_stop ;
178input g_pce_ov ;
179input g_dbg_init ;
180input g_wmr_reset ;
181input si ;
182input siclk ;
183input soclk ;
184input gclk ;
185input l2clk ;
186
187wire net70 ;
188wire scan_wmr ;
189wire scan_pceov ;
190wire scan_stop_l ;
191wire net91 ;
192wire scan_pceov_l ;
193wire scan_dbg ;
194wire net42 ;
195wire l1clk ;
196wire net56 ;
197wire scan_wmr_l ;
198wire scan_stop ;
199
200
201cl_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 ) );
208cl_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 ) );
216cl_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 ) );
224cl_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 ) );
232cl_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 ) );
240cl_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 ) );
248cl_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 ) );
256cl_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 ) );
264cl_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 ) );
272endmodule
273
274
275
276
277module n2_clk_clhdr_divmux(div_ck ,r ,f ,clk_ext ,ck ,bypass );
278output div_ck ;
279input r ;
280input f ;
281input clk_ext ;
282input ck ;
283input bypass ;
284
285
286assign div_ck = ck ;
287
288endmodule
289
290