-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathctu.h
More file actions
284 lines (244 loc) · 9.44 KB
/
ctu.h
File metadata and controls
284 lines (244 loc) · 9.44 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
/*
* ========== Copyright Header Begin ==========================================
*
* OpenSPARC T1 Processor File: ctu.h
* Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES.
*
* The above named program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public
* License version 2 as published by the Free Software Foundation.
*
* The above named program is distributed in the hope that it will be
* useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this work; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
*
* ========== Copyright Header End ============================================
*/
//*****************************
//Instruction Opcodes
//*****************************
`define TAP_EXTEST 6'h00
`define TAP_BYPASS 6'h3f
`define TAP_IDCODE 6'h01
`define TAP_SAMPLE_PRELOAD 6'h02
`define TAP_HIGHZ 6'h03
`define TAP_CLAMP 6'h04
`define TAP_CREG_ADDR 6'h08
`define TAP_CREG_WDATA 6'h09
`define TAP_CREG_RDATA 6'h0a
`define TAP_CREG_SCRATCH 6'h0b
`define TAP_IOB_WR 6'h0c
`define TAP_IOB_RD 6'h0d
`define TAP_IOB_WADDR 6'h0e
`define TAP_IOB_WDATA 6'h0f
`define TAP_IOB_RADDR 6'h10
`define TAP_MBIST_SERIAL 6'h14
`define TAP_MBIST_PARALLEL 6'h15
`define TAP_MBIST_RESULT 6'h16
`define TAP_MBIST_ABORT 6'h17
`define TAP_PLL_BYPASS 6'h18
`define TAP_CLK_STOP_ID 6'h1a
`define TAP_CLK_SEL 6'h1b //mask ff00 for ck src
`define TAP_SSCAN_T0 6'h1c
`define TAP_SSCAN_T1 6'h1d
`define TAP_SSCAN_T2 6'h1e
`define TAP_SSCAN_T3 6'h1f
`define TAP_SCAN_PARALLEL 6'h20
`define TAP_SCAN_SERIAL 6'h21
`define TAP_SCAN_MTEST_LONG 6'h22
`define TAP_SCAN_MTEST_SHORT 6'h23
`define TAP_SCAN_BYPASS_EN 6'h24
`define TAP_SCAN_NSTEP 6'h25
`define TAP_SCAN_DUMP 6'h26
`define TAP_EFC_READ 6'h28
`define TAP_EFC_BYPASS_DATA 6'h29
`define TAP_EFC_BYPASS 6'h2a
`define TAP_EFC_READ_MODE 6'h2b
`define TAP_EFC_COL_ADDR 6'h2c
`define TAP_EFC_ROW_ADDR 6'h2d
`define TAP_EFC_DEST_SAMPLE 6'h2e
`define TAP_CMD_WIDTH 6
`define CTU_BIST_CNT 12
`define TAP_INSTR_WIDTH 18 // `TAP_CMD_WIDTH + `CTU_BIST_CNT
//*****************************
// CLK block
//*****************************
`define CMP_GLOBAL_LATENCY 14'd7
`define JBUS_GLOBAL_LATENCY 10'd3
`define DRAM_GLOBAL_LATENCY 10'd2
`define COIN_EDGE_LATENCY 14'd2
// Clock Unit Register Addresses (0x96_0000_00xx)
// 00 CLK_DIV
// 08 CLK_CTL
// 10 CLK_DBG_INT
// 18 CLK_DLL_CTRL
// 20 CLK_SCRATCH
// 28 CLK_JSYNC
// 2C CLK_DSYNC
`define CLK_UPPER_ADDR 33'h 1_2C00_0000
`define CLK_ADDR_HI 6
`define CLK_DIV_ADDR 7'h00
`define CLK_CTRL_ADDR 7'h08
`define CLK_DBG_INIT_ADDR 7'h10
`define CLK_DLL_CTRL_ADDR 7'h18
`define CLK_SCRATCHPAD_ADDR 7'h20
`define CLK_JSYNC_ADDR 7'h28
`define CLK_DSYNC_ADDR 7'h30
`define CLK_DLL_BYP_ADDR 7'h38
`define CLK_VERSION_ADDR 7'h40
`define CLK_MAN_ID 16'h003E
`define CLK_IMPL_CODE 16'h0023
`define CLK_MAX_GLB_REG 3'b011
`define CLK_MAX_TRAP_LEVEL 8'h06
`define CLK_MAX_CWP 5'b00111
// CTRLSM
`define ST_RSTSM_WAIT_POR 5'b00001
`define ST_RSTSM_RST_PLL 5'b00010
`define ST_RSTSM_WAIT_PLL_LCK 5'b00100
`define ST_RSTSM_PLL_LCK 5'b01000
`define ST_RSTSM_FREQ_CHG 5'b10000
`define RSTSM_WAIT_POR 0
`define RSTSM_RST_PLL 1
`define RSTSM_WAIT_PLL_LCK 2
`define RSTSM_PLL_LCK 3
`define RSTSM_FREQ_CHG 4
`define ST_CTRLSM_WAIT_LCK 14'b00000000000001
`define ST_CTRLSM_STR_CLK 14'b00000000000010
`define ST_CTRLSM_EN_CLK 14'b00000000000100
`define ST_CTRLSM_WAIT_J_RST 14'b00000000001000
`define ST_CTRLSM_DE_DLLRST 14'b00000000010000
`define ST_CTRLSM_DE_GRST 14'b00000000100000
`define ST_CTRLSM_EFC_RD 14'b00000001000000
`define ST_CTRLSM_WAIT_BISTDN 14'b00000010000000
`define ST_CTRLSM_IDLE 14'b00000100000000
`define ST_CTRLSM_A_GRST 14'b00001000000000
`define ST_CTRLSM_A_DGRST 14'b00010000000000
`define ST_CTRLSM_DIS_CLK 14'b00100000000000
`define ST_CTRLSM_CHNG_FRQ 14'b01000000000000
`define ST_CTRLSM_WAIT_RST 14'b10000000000000
`define CTRLSM_WAIT_LCK 0
`define CTRLSM_STR_CLK 1
`define CTRLSM_EN_CLK 2
`define CTRLSM_WAIT_J_RST 3
`define CTRLSM_DE_DLLRST 4
`define CTRLSM_DE_GRST 5
`define CTRLSM_EFC_RD 6
`define CTRLSM_WAIT_BISTDN 7
`define CTRLSM_IDLE 8
`define CTRLSM_A_GRST 9
`define CTRLSM_A_DGRST 10
`define CTRLSM_DIS_CLK 11
`define CTRLSM_CHNG_FRQ 12
`define CTRLSM_WAIT_RST 13
// CLK CTRLSM
`define CCTRLSM_MAX_ST 31
`define CTU_SPARC0_ID 6'd0
`define CTU_SPARC1_ID 6'd1
`define CTU_SPARC2_ID 6'd2
`define CTU_SPARC3_ID 6'd3
`define CTU_SPARC4_ID 6'd4
`define CTU_SPARC5_ID 6'd5
`define CTU_SPARC6_ID 6'd6
`define CTU_SPARC7_ID 6'd7
`define CTU_SCDATA0_ID 6'd8
`define CTU_SCDATA1_ID 6'd9
`define CTU_SCDATA2_ID 6'd10
`define CTU_SCDATA3_ID 6'd11
`define CTU_SCTAG0_ID 6'd12
`define CTU_SCTAG1_ID 6'd13
`define CTU_SCTAG2_ID 6'd14
`define CTU_SCTAG3_ID 6'd15
`define CTU_DRAM02_ID 6'd16
`define CTU_DRAM13_ID 6'd17
`define CTU_CCX_ID 6'd18
`define CTU_FPU_ID 6'd19
`define CTU_DDR0_ID 6'd20
`define CTU_DDR1_ID 6'd21
`define CTU_DDR2_ID 6'd22
`define CTU_DDR3_ID 6'd23
`define CTU_JBI_ID 6'd27
`define CTU_JBUSL_ID 6'd29
`define CTU_JBUSR_ID 6'd30
`define CTU_IOB_ID 6'd31
`define CTU_EFC_ID 6'd32
`define CTU_DBG_ID 6'd33
`define CTU_MISC_ID 6'd34
`define CTU_SPARC0_IDD 31'b0000000000000000000000000000001
`define CTU_SPARC1_IDD 31'b0000000000000000000000000000010
`define CTU_SPARC2_IDD 31'b0000000000000000000000000000100
`define CTU_SPARC3_IDD 31'b0000000000000000000000000001000
`define CTU_SPARC4_IDD 31'b0000000000000000000000000010000
`define CTU_SPARC5_IDD 31'b0000000000000000000000000100000
`define CTU_SPARC6_IDD 31'b0000000000000000000000001000000
`define CTU_SPARC7_IDD 31'b0000000000000000000000010000000
`define CTU_SCDATA0_IDD 31'b0000000000000000000000100000000
`define CTU_SCDATA1_IDD 31'b0000000000000000000001000000000
`define CTU_SCDATA2_IDD 31'b0000000000000000000010000000000
`define CTU_SCDATA3_IDD 31'b0000000000000000000100000000000
`define CTU_SCTAG0_IDD 31'b0000000000000000001000000000000
`define CTU_SCTAG1_IDD 31'b0000000000000000010000000000000
`define CTU_SCTAG2_IDD 31'b0000000000000000100000000000000
`define CTU_SCTAG3_IDD 31'b0000000000000001000000000000000
`define CTU_DRAM02_IDD 31'b0000000000000010000000000000000
`define CTU_DRAM13_IDD 31'b0000000000000100000000000000000
`define CTU_CCX_IDD 31'b0000000000001000000000000000000
`define CTU_FPU_IDD 31'b0000000000010000000000000000000
`define CTU_DDR0_IDD 31'b0000000000100000000000000000000
`define CTU_DDR1_IDD 31'b0000000001000000000000000000000
`define CTU_DDR2_IDD 31'b0000000010000000000000000000000
`define CTU_DDR3_IDD 31'b0000000100000000000000000000000
`define CTU_JBI_IDD 31'b0000001000000000000000000000000
`define CTU_JBUSL_IDD 31'b0000010000000000000000000000000
`define CTU_JBUSR_IDD 31'b0000100000000000000000000000000
`define CTU_IOB_IDD 31'b0001000000000000000000000000000
`define CTU_EFC_IDD 31'b0010000000000000000000000000000
`define CTU_DBG_IDD 31'b0100000000000000000000000000000
`define CTU_MISC_IDD 31'b1000000000000000000000000000000
`define CCTRL_SPARC0_POS 0
`define CCTRL_SPARC1_POS 1
`define CCTRL_SPARC2_POS 2
`define CCTRL_SPARC3_POS 3
`define CCTRL_SPARC4_POS 4
`define CCTRL_SPARC5_POS 5
`define CCTRL_SPARC6_POS 6
`define CCTRL_SPARC7_POS 7
`define CCTRL_SCDATA0_POS 8
`define CCTRL_SCDATA1_POS 9
`define CCTRL_SCDATA2_POS 10
`define CCTRL_SCDATA3_POS 11
`define CCTRL_SCTAG0_POS 12
`define CCTRL_SCTAG1_POS 13
`define CCTRL_SCTAG2_POS 14
`define CCTRL_SCTAG3_POS 15
`define CCTRL_DRAM02_POS 16
`define CCTRL_DRAM13_POS 17
`define CCTRL_CCX_POS 18
`define CCTRL_FPU_POS 19
`define CCTRL_DDR0_POS 20
`define CCTRL_DDR1_POS 21
`define CCTRL_DDR2_POS 22
`define CCTRL_DDR3_POS 23
`define CCTRL_JBI_POS 24
`define CCTRL_JBUSL_POS 25
`define CCTRL_JBUSR_POS 26
`define CCTRL_IOB_POS 27
`define CCTRL_EFC_POS 28
`define CCTRL_DBG_POS 29
`define CCTRL_MISC_POS 30
//*****************************
// Mask Codes
//*****************************
// Mask set code
`define MASK_MAJOR 4'h2
// 9-layer, 4-bit mask programmable codes
`define JTAGID (9'b0, 9'b0, 9'b0, 9'b1)
`define MASK_MINOR (9'b0, 9'b0, 9'b0, 9'b0)
// Part Id and Manufacture Id for DW
`define CTU_PART_ID 16'h1AAA
`define CTU_MANUFACTURE_ID 11'h03E