Commit | Line | Data |
---|---|---|
86530b38 AT |
1 | /* |
2 | * ========== Copyright Header Begin ========================================== | |
3 | * | |
4 | * OpenSPARC T2 Processor File: pcie.h | |
5 | * Copyright (C) 1995-2007 Sun Microsystems, Inc. All Rights Reserved | |
6 | * 4150 Network Circle, Santa Clara, California 95054, U.S.A. | |
7 | * | |
8 | * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | |
9 | * | |
10 | * This program is free software; you can redistribute it and/or modify | |
11 | * it under the terms of the GNU General Public License as published by | |
12 | * the Free Software Foundation; version 2 of the License. | |
13 | * | |
14 | * This program is distributed in the hope that it will be useful, | |
15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
17 | * GNU General Public License for more details. | |
18 | * | |
19 | * You should have received a copy of the GNU General Public License | |
20 | * along with this program; if not, write to the Free Software | |
21 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
22 | * | |
23 | * For the avoidance of doubt, and except that if any non-GPL license | |
24 | * choice is available it will apply instead, Sun elects to use only | |
25 | * the General Public License version 2 (GPLv2) at this time for any | |
26 | * software where a choice of GPL license versions is made | |
27 | * available with the language indicating that GPLv2 or any later version | |
28 | * may be used, or where a choice of which version of the GPL is applied is | |
29 | * otherwise unspecified. | |
30 | * | |
31 | * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, | |
32 | * CA 95054 USA or visit www.sun.com if you need additional information or | |
33 | * have any questions. | |
34 | * | |
35 | * | |
36 | * ========== Copyright Header End ============================================ | |
37 | */ | |
38 | // ========== Copyright Header Begin ========================================== | |
39 | // | |
40 | // OpenSPARC T2 Processor File: pcie.h | |
41 | // Copyright (C) 1995-2007 Sun Microsystems, Inc. All Rights Reserved | |
42 | // 4150 Network Circle, Santa Clara, California 95054, U.S.A. | |
43 | // | |
44 | // * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | |
45 | // | |
46 | // This program is free software; you can redistribute it and/or modify | |
47 | // it under the terms of the GNU General Public License as published by | |
48 | // the Free Software Foundation; version 2 of the License. | |
49 | // | |
50 | // This program is distributed in the hope that it will be useful, | |
51 | // but WITHOUT ANY WARRANTY; without even the implied warranty of | |
52 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
53 | // GNU General Public License for more details. | |
54 | // | |
55 | // You should have received a copy of the GNU General Public License | |
56 | // along with this program; if not, write to the Free Software | |
57 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
58 | // | |
59 | // For the avoidance of doubt, and except that if any non-GPL license | |
60 | // choice is available it will apply instead, Sun elects to use only | |
61 | // the General Public License version 2 (GPLv2) at this time for any | |
62 | // software where a choice of GPL license versions is made | |
63 | // available with the language indicating that GPLv2 or any later version | |
64 | // may be used, or where a choice of which version of the GPL is applied is | |
65 | // otherwise unspecified. | |
66 | // | |
67 | // Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, | |
68 | // CA 95054 USA or visit www.sun.com if you need additional information or | |
69 | // have any questions. | |
70 | // | |
71 | // ========== Copyright Header End ============================================ | |
72 | // **************************************************************************** | |
73 | // | |
74 | // fire.vh | |
75 | // | |
76 | // | |
77 | // Copyright 2002 Sun Microsystems, Inc. All rights reserved. | |
78 | // | |
79 | // Sun Microsystems, Inc. may have one or more patents relating | |
80 | // to technology embodied in this design. In particular, and without | |
81 | // limitation, these intellectual property rights may include one or | |
82 | // more of the U.S. patents listed at http://www.sun.com/patents | |
83 | // and one or more additional patents or pending patent applications | |
84 | // in the U.S. and other countries. This design is distributed under | |
85 | // licenses restricting its use, copying, and distribution. No part of | |
86 | // this design may be reproduced in any form by any means without prior | |
87 | // written authorization of Sun and its licensors, if any. | |
88 | // Sun, Sun Microsystems, and the Sun logo are trademarks or registered | |
89 | // trademarks of Sun Microsystems, Inc. in the U.S. and other countries. | |
90 | // | |
91 | // Sun Proprietary/Confidential: Need-To-Know | |
92 | // | |
93 | // Description: | |
94 | // This is the FIRE chip level Include file where all of the | |
95 | // 'defines which are shared among FIRE cores will be defined | |
96 | // | |
97 | // | |
98 | // | |
99 | // Design : FIRE | |
100 | // | |
101 | // **************************************************************************** | |
102 | ||
103 | ||
104 | //----------------------------------------------------------------------------- | |
105 | //****************************** GLOBAL CONSTANTS ***************************** | |
106 | //----------------------------------------------------------------------------- | |
107 | ||
108 | `define FIRE_PA_MSB 42 // Physical address MSB | |
109 | ||
110 | `define FIRE_DEBUG_WDTH 8 // Width of the Debug Ports | |
111 | `define FIRE_DBG_DATA_BITS 7:0 // Debug data bits | |
112 | ||
113 | `define FIRE_PRF_ADDR_BITS 7:0 | |
114 | `define FIRE_PRF_DATA_BITS 63:0 | |
115 | ||
116 | //----------------------------------------------------------------------------- | |
117 | //******************************** CSR INTERFACE ****************************** | |
118 | //----------------------------------------------------------------------------- | |
119 | ||
120 | `define FIRE_CSR_ADDR_BITS 26:0 | |
121 | `define FIRE_CSR_DATA_BITS 63:0 | |
122 | `define FIRE_CSR_RDMS_BITS 63:32 | |
123 | `define FIRE_CSR_RDLS_BITS 31:0 | |
124 | ||
125 | `define FIRE_CSR_CMND_BITS 2:0 | |
126 | `define FIRE_CSR_SRCB_BITS 1:0 | |
127 | `define FIRE_CSR_STTS_BITS 2:0 | |
128 | `define FIRE_CSR_TOUT_BITS 7:0 | |
129 | ||
130 | `define FIRE_CSR_RING_WDTH 32 | |
131 | `define FIRE_CSR_RING_BITS `FIRE_CSR_RING_WDTH-1:0 | |
132 | ||
133 | `define FIRE_CSR_PCKT_WDTH 96 | |
134 | `define FIRE_CSR_PCKT_BITS `FIRE_CSR_PCKT_WDTH-1:0 | |
135 | ||
136 | `define FIRE_CSR_CMND_IDLE 3'b000 | |
137 | `define FIRE_CSR_CMND_RSET 3'b001 | |
138 | `define FIRE_CSR_CMND_RREQ 3'b010 | |
139 | `define FIRE_CSR_CMND_WREQ 3'b011 | |
140 | `define FIRE_CSR_CMND_RRSP 3'b100 | |
141 | `define FIRE_CSR_CMND_WRSP 3'b101 | |
142 | `define FIRE_CSR_CMND_RERR 3'b110 | |
143 | `define FIRE_CSR_CMND_WERR 3'b111 | |
144 | ||
145 | `define FIRE_CSR_PCKT_CMND_BITS 95:93 | |
146 | `define FIRE_CSR_PCKT_ADDR_BITS 95:64 | |
147 | `define FIRE_CSR_PCKT_RDMS_BITS 63:32 | |
148 | `define FIRE_CSR_PCKT_RDLS_BITS 31:0 | |
149 | ||
150 | `define FIRE_CSR_RING_CMND_BITS 31:29 | |
151 | `define FIRE_CSR_RING_WRIT_BITS 29 | |
152 | `define FIRE_CSR_RING_SRCB_BITS 28:27 | |
153 | `define FIRE_CSR_RING_ADDR_BITS `FIRE_CSR_ADDR_BITS | |
154 | ||
155 | `define FIRE_CSR_SRCB_JTAG 2'b00 | |
156 | `define FIRE_CSR_SRCB_SLOW 2'b01 | |
157 | `define FIRE_CSR_SRCB_MEDM 2'b10 | |
158 | `define FIRE_CSR_SRCB_FAST 2'b11 | |
159 | ||
160 | //####################################################### | |
161 | // FIRE Defines Used in DCM, Modules | |
162 | //####################################################### | |
163 | `define FIRE_CSR_ADDR_MAX_WIDTH 27 // Maximum width of supplied address | |
164 | `define FIRE_CSR_CHECK_ADDR_BIT_RANGE 4:0 // Bit fields of the supplied address port | |
165 | `define FIRE_CSR_CHECK_ADDR_WIDTH 5 // Width of the supplied address port | |
166 | `define FIRE_CSR_DATA_14_WIDTH 14 // Width of data in P1 | |
167 | `define FIRE_CSR_DATA_50_WIDTH 50 // Width of data in P2 | |
168 | `define FIRE_CSR_DATA_WIDTH 64 // Width of data in a register | |
169 | `define FIRE_CSR_HOST_DONE_STATUS_ACCESS_VIO 3'b100 // Access violation occured | |
170 | `define FIRE_CSR_HOST_DONE_STATUS_MAP_DONE_TIMEOUT 3'b101 // Timeout values exceeded | |
171 | `define FIRE_CSR_HOST_DONE_STATUS_RING_TRANS_ERROR 3'b111 // Error on CSR Ring | |
172 | `define FIRE_CSR_HOST_DONE_STATUS_SUCCESS 3'b0 // Transaction completed successfully | |
173 | `define FIRE_CSR_HOST_DONE_STATUS_WIDTH 3 // Width of Done status to Host devices | |
174 | `define FIRE_CSR_NON_MUTEABLE_BITS 31:0 // Non-muteable bits in P1 | |
175 | `define FIRE_CSR_NON_MUTEABLE_WIDTH 32 // Width of non-muteable data in P1 | |
176 | `define FIRE_CSR_PKT_ACC_VIO_BIT 33 // Bit position of the access violation bit | |
177 | `define FIRE_CSR_PKT_ADDR_BITS 28:0 // Bit position of the address bits in first CSR packet | |
178 | `define FIRE_CSR_PKT_ADDR_WIDTH 29 // Width of the address bits in the packet format | |
179 | `define FIRE_CSR_PKT_DATA_14_BIT 49:36 // Bit position of the 14 bits of data | |
180 | `define FIRE_CSR_PKT_DATA_50_BIT 49:0 // Bit positions of the 50 bits of data | |
181 | `define FIRE_CSR_PKT_DONE_BIT 35 // Bit position of the done bit | |
182 | `define FIRE_CSR_PKT_MAPPED_BIT 34 // Bit position of the mapped bit | |
183 | `define FIRE_CSR_PKT_RESERVED_BIT 32 // Bit position of the reserved bit | |
184 | `define FIRE_CSR_PKT_SRC_BUS_BITS 30:29 // Bit position of the source bus id bits | |
185 | `define FIRE_CSR_PKT_SRC_BUS_ID_WIDTH 2 // Width of the src bus id in packet format | |
186 | `define FIRE_CSR_PKT_VALID_BIT 50 // Bit position of the valid bit in each CSR packet | |
187 | `define FIRE_CSR_PKT_WR_BIT 31 // Bit position of the write command | |
188 | `define FIRE_CSR_RING_WIDTH 32 // Width of CSR ring | |
189 | `define FIRE_CSR_SRC_BUS_ID_WIDTH 2 // Width of the src bus id ports | |
190 | `define FIRE_CSR_TIMEOUT_WIDTH 8 // Width of timeout counter | |
191 | ||
192 | ||
193 | //####################################################### | |
194 | // EGL Defines Used in Leveraged DCC and CCC Modules | |
195 | // | |
196 | // Based on Fire version of `defines | |
197 | //####################################################### | |
198 | ||
199 | ||
200 | //`define EGL_CSR_ADDR_MAX_WIDTH `FIRE_CSR_ADDR_MAX_WIDTH | |
201 | `define EGL_CSR_CHECK_ADDR_BIT_RANGE `FIRE_CSR_CHECK_ADDR_BIT_RANGE | |
202 | `define EGL_CSR_CHECK_ADDR_WIDTH `FIRE_CSR_CHECK_ADDR_WIDTH | |
203 | `define EGL_CSR_DATA_14_WIDTH `FIRE_CSR_DATA_14_WIDTH | |
204 | `define EGL_CSR_DATA_50_WIDTH `FIRE_CSR_DATA_50_WIDTH | |
205 | `define EGL_CSR_DATA_WIDTH `FIRE_CSR_DATA_WIDTH | |
206 | `define EGL_CSR_HOST_DONE_STATUS_ACCESS_VIO `FIRE_CSR_HOST_DONE_STATUS_ACCESS_VIO | |
207 | `define EGL_CSR_HOST_DONE_STATUS_MAP_DONE_TIMEOUT `FIRE_CSR_HOST_DONE_STATUS_MAP_DONE_TIMEOUT | |
208 | `define EGL_CSR_HOST_DONE_STATUS_RING_TRANS_ERROR `FIRE_CSR_HOST_DONE_STATUS_RING_TRANS_ERROR | |
209 | `define EGL_CSR_HOST_DONE_STATUS_SUCCESS `FIRE_CSR_HOST_DONE_STATUS_SUCCESS | |
210 | `define EGL_CSR_HOST_DONE_STATUS_WIDTH `FIRE_CSR_HOST_DONE_STATUS_WIDTH | |
211 | `define EGL_CSR_NON_MUTEABLE_BITS `FIRE_CSR_NON_MUTEABLE_BITS | |
212 | `define EGL_CSR_NON_MUTEABLE_WIDTH `FIRE_CSR_NON_MUTEABLE_WIDTH | |
213 | `define EGL_CSR_PKT_ACC_VIO_BIT `FIRE_CSR_PKT_ACC_VIO_BIT | |
214 | `define EGL_CSR_PKT_ADDR_BITS `FIRE_CSR_PKT_ADDR_BITS | |
215 | `define EGL_CSR_PKT_ADDR_WIDTH `FIRE_CSR_PKT_ADDR_WIDTH | |
216 | `define EGL_CSR_PKT_DATA_14_BIT `FIRE_CSR_PKT_DATA_14_BIT | |
217 | `define EGL_CSR_PKT_DATA_50_BIT `FIRE_CSR_PKT_DATA_50_BIT | |
218 | `define EGL_CSR_PKT_DONE_BIT `FIRE_CSR_PKT_DONE_BIT | |
219 | `define EGL_CSR_PKT_MAPPED_BIT `FIRE_CSR_PKT_MAPPED_BIT | |
220 | `define EGL_CSR_PKT_RESERVED_BIT `FIRE_CSR_PKT_RESERVED_BIT | |
221 | `define EGL_CSR_PKT_SRC_BUS_BITS `FIRE_CSR_PKT_SRC_BUS_BITS | |
222 | `define EGL_CSR_PKT_SRC_BUS_ID_WIDTH `FIRE_CSR_PKT_SRC_BUS_ID_WIDTH | |
223 | `define EGL_CSR_PKT_VALID_BIT `FIRE_CSR_PKT_VALID_BIT | |
224 | `define EGL_CSR_PKT_WR_BIT `FIRE_CSR_PKT_WR_BIT | |
225 | `define EGL_CSR_RING_WIDTH `FIRE_CSR_RING_WIDTH | |
226 | `define EGL_CSR_SRC_BUS_ID_WIDTH `FIRE_CSR_SRC_BUS_ID_WIDTH | |
227 | `define EGL_CSR_TIMEOUT_WIDTH `FIRE_CSR_TIMEOUT_WIDTH | |
228 | ||
229 | //----------------------------------------------------------------------------- | |
230 | //************************ DTL-JBC INTERFACE ************************ | |
231 | //----------------------------------------------------------------------------- | |
232 | `define FIRE_DTL_PDQ_WDTH 2 | |
233 | `define FIRE_DTL_LPDQ_WDTH 9 | |
234 | `define FIRE_DTL_OVERIDE_WDTH 7 | |
235 | ||
236 | //----------------------------------------------------------------------------- | |
237 | //************************ EXT Interrupt-JBC INTERFACE ************************ | |
238 | //----------------------------------------------------------------------------- | |
239 | `define FIRE_EXT_INT_WDTH 40 | |
240 | ||
241 | ||
242 | //----------------------------------------------------------------------------- | |
243 | //****************************** EBUS-JBC INTERFACE **************************** | |
244 | //----------------------------------------------------------------------------- | |
245 | `define FIRE_EBUS_AD_WDTH 8 | |
246 | `define FIRE_EBUS_A_WDTH 8 | |
247 | ||
248 | //----------------------------------------------------------------------------- | |
249 | //****************************** GPIO-JBC INTERFACE **************************** | |
250 | //----------------------------------------------------------------------------- | |
251 | `define FIRE_GPIO_WDTH 4 | |
252 | ||
253 | //----------------------------------------------------------------------------- | |
254 | //****************************** JTAG-JBC INTERFACE **************************** | |
255 | //----------------------------------------------------------------------------- | |
256 | `define FIRE_DEVID_WDTH 16 | |
257 | ||
258 | //----------------------------------------------------------------------------- | |
259 | //****************************** JBC-PLLC INTERFACE **************************** | |
260 | //----------------------------------------------------------------------------- | |
261 | `define FIRE_PLL_JIT_WDTH 2 | |
262 | `define FIRE_PLL_CNT_WDTH 2 | |
263 | ||
264 | //----------------------------------------------------------------------------- | |
265 | //****************************** DMC-JBC INTERFACE **************************** | |
266 | //----------------------------------------------------------------------------- | |
267 | ||
268 | //####################################################### | |
269 | // DMC-to-JBC Interface (D2J) | |
270 | //####################################################### | |
271 | ||
272 | // ~~~~~~~~~~ Ingress Command Interface ~~~~~~~~~~~~~~~~~ | |
273 | ||
274 | `define FIRE_D2J_CMD_WDTH 4 // d2j_cmd[3:0] | |
275 | `define FIRE_D2J_ADDR_WDTH `FIRE_PA_MSB - 5 // d2j_addr[42:6] | |
276 | `define FIRE_D2J_CTAG_WDTH 16 // d2j_ctag[15:0] | |
277 | ||
278 | // ~~~~~~~~~~ Ingress Data Interface ~~~~~~~~~~~~~~~~~~~~ | |
279 | ||
280 | `define FIRE_D2J_DATA_WDTH 128 // d2j_data[127:0] | |
281 | `define FIRE_D2J_BMSK_WDTH 16 // d2j_bmsk[15:0] | |
282 | `define FIRE_D2J_DPAR_WDTH 5 // d2j_data_par[4:0] | |
283 | ||
284 | // ~~~~~~~~~~ PIO Wrack Interface ~~~~~~~~~~~~~~~~~~~~~~~ | |
285 | ||
286 | `define FIRE_D2J_P_WRACK_WDTH 4 // d2j_p_wrack_tag[3:0] | |
287 | ||
288 | // ~~~~~~~~~~ MMU Interface ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
289 | ||
290 | `define FIRE_D2J_TSB_BASE_WDTH `FIRE_PA_MSB - 12 // d2j_tsb_base[42:13] | |
291 | `define FIRE_D2J_TSB_BASE_BITS `FIRE_PA_MSB:13 | |
292 | `define FIRE_D2J_TSB_SIZE_WDTH 4 // d2j_tsb_size[3:0] | |
293 | `define FIRE_D2J_TSB_SIZE_BITS 3:0 | |
294 | ||
295 | // ~~~~~~~~~~ To JBC Spares ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
296 | ||
297 | `define FIRE_D2J_SPARE_WDTH 5 // d2j_spare[4:0] | |
298 | ||
299 | //####################################################### | |
300 | // JBC-to-DMC Interface (J2D) | |
301 | //####################################################### | |
302 | ||
303 | // ~~~~~~~~~~ CSR Interface~~~~~~~~~~~~~~~~ ~~~~~~~~~~ | |
304 | `define FIRE_J2D_INSTANCE_ID_WDTH 1 // j2d_instance_id | |
305 | `define FIRE_J2D_INSTANCE_ID_BITS 0:0 | |
306 | ||
307 | // ~~~~~~~~~~ Egress DMA/INT Command Interface ~~~~~~~~~~ | |
308 | ||
309 | `define FIRE_J2D_DI_CMD_WDTH 2 // j2d_di_cmd[1:0] | |
310 | `define FIRE_J2D_DI_CTAG_WDTH 16 // j2d_di_ctag[15:0] | |
311 | ||
312 | // ~~~~~~~~~~ Egress PIO Command Interface ~~~~~~~~~~~~~~ | |
313 | ||
314 | `define FIRE_J2D_P_CMD_WDTH 4 // j2d_p_cmd[3:0] | |
315 | `define FIRE_J2D_P_ADDR_WDTH 36 // j2d_p_addr[35:0] | |
316 | `define FIRE_J2D_P_BMSK_WDTH 16 // j2d_p_bmsk[15:0] | |
317 | //BP n2 6-01-04 keep bits packed, even though on d2j_ctag there is a 0 inbetween fields | |
318 | `define FIRE_J2D_P_CTAG_WDTH 11 // j2d_p_ctag[10:0] | |
319 | ||
320 | // ~~~~~~~~~~ Egress DMA Data Interface ~~~~~~~~~~~~~~~~~ | |
321 | ||
322 | `define FIRE_J2D_D_DATA_WDTH 128 // j2d_d_data[127:0] | |
323 | `define FIRE_J2D_D_DPAR_WDTH 4 // j2d_d_data_par[3:0] | |
324 | ||
325 | // ~~~~~~~~~~ Egress PIO Data Interface ~~~~~~~~~~~~~~~~~ | |
326 | ||
327 | `define FIRE_J2D_P_DATA_WDTH 128 // j2d_p_data[127:0] | |
328 | `define FIRE_J2D_P_DPAR_WDTH 4 // j2d_p_data_par[3:0] | |
329 | ||
330 | // ~~~~~~~~~~ DMA Wrack Interface ~~~~~~~~~~~~~~~~~~~~~~~ | |
331 | ||
332 | `define FIRE_J2D_D_WRACK_WDTH 4 // j2d_d_wrack_tag[3:0] | |
333 | ||
334 | // ~~~~~~~~~~ MMU Interface ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
335 | ||
336 | `define FIRE_J2D_MMU_ADDR_WDTH `FIRE_PA_MSB - 5 // j2d_mmu_addr[42:6] | |
337 | `define FIRE_J2D_MMU_ADDR_BITS `FIRE_PA_MSB:6 | |
338 | ||
339 | // ~~~~~~~~~~ IMU Interface ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
340 | ||
341 | `define FIRE_J2D_EXT_INT_WDTH 20 // j2d_ext_int_l[19:0] | |
342 | `define FIRE_J2D_JID_WDTH 1 // j2d_jid | |
343 | ||
344 | // ~~~~~~~~~~ To DMC Spares ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
345 | ||
346 | `define FIRE_J2D_SPARE_WDTH 5 // j2d_spare[4:0] | |
347 | ||
348 | ||
349 | //----------------------------------------------------------------------------- | |
350 | //****************************** DMC-PEC INTERFACE **************************** | |
351 | //----------------------------------------------------------------------------- | |
352 | ||
353 | //####################################################### | |
354 | // Ingress Interface | |
355 | //####################################################### | |
356 | ||
357 | // ~~~~~~~~~~ Ingress IHB Interface ~~~~~~~~~~~~~~~~~ | |
358 | ||
359 | `define FIRE_D2P_IHB_PTR_WDTH 7 | |
360 | `define FIRE_D2P_IHB_PTR_BITS `FIRE_D2P_IHB_PTR_WDTH-1:0 | |
361 | ||
362 | `define FIRE_P2D_IHB_WPTR_WDTH 7 | |
363 | `define FIRE_P2D_IHB_WPTR_BITS `FIRE_P2D_IHB_WPTR_WDTH-1:0 | |
364 | ||
365 | `define FIRE_D2P_IHB_ADDR_WDTH 6 | |
366 | `define FIRE_D2P_IHB_ADDR_BITS `FIRE_D2P_IHB_ADDR_WDTH-1:0 | |
367 | ||
368 | `define FIRE_P2D_IHB_DATA_WDTH 128 | |
369 | `define FIRE_P2D_IHB_DATA_BITS `FIRE_P2D_IHB_DATA_WDTH-1:0 | |
370 | ||
371 | `define FIRE_P2D_IHB_DPAR_WDTH 4 | |
372 | `define FIRE_P2D_IHB_DPAR_BITS `FIRE_P2D_IHB_DPAR_WDTH-1:0 | |
373 | ||
374 | // ~~~~~~~~~~ Ingress IDB Interface ~~~~~~~~~~~~~~~~~ | |
375 | ||
376 | `define FIRE_D2P_IDB_ADDR_WDTH 8 // d2p_idb_addr | |
377 | `define FIRE_D2P_IDB_ADDR_BITS `FIRE_D2P_IDB_ADDR_WDTH-1:0 | |
378 | ||
379 | `define FIRE_P2D_IDB_DATA_WDTH 128 // p2d_idb_data | |
380 | `define FIRE_P2D_IDB_DATA_BITS `FIRE_P2D_IDB_DATA_WDTH-1:0 | |
381 | ||
382 | `define FIRE_P2D_IDB_DPAR_WDTH 4 // p2d_idb_dpar | |
383 | `define FIRE_P2D_IDB_DPAR_BITS `FIRE_P2D_IDB_DPAR_WDTH-1:0 | |
384 | ||
385 | // ~~~~~~~~~~ Ingress IBC Interface ~~~~~~~~~~~~~~~~~ | |
386 | ||
387 | `define FIRE_D2P_IBC_DC_WDTH 12 | |
388 | `define FIRE_D2P_IBC_DC_BITS `FIRE_D2P_IBC_DC_WDTH-1:0 | |
389 | ||
390 | `define FIRE_D2P_IBC_HC_WDTH 8 | |
391 | `define FIRE_D2P_IBC_HC_BITS `FIRE_D2P_IBC_HC_WDTH-1:0 | |
392 | ||
393 | `define FIRE_D2P_IBC_NHC_WDTH 8 // d2p_ibc_nhc | |
394 | `define FIRE_D2P_IBC_NHC_BITS `FIRE_D2P_IBC_NHC_WDTH-1:0 | |
395 | ||
396 | `define FIRE_D2P_IBC_PHC_WDTH 8 // d2p_ibc_phc | |
397 | `define FIRE_D2P_IBC_PHC_BITS `FIRE_D2P_IBC_PHC_WDTH-1:0 | |
398 | ||
399 | `define FIRE_D2P_IBC_PDC_WDTH 12 // d2p_ibc_pdc | |
400 | `define FIRE_D2P_IBC_PDC_BITS `FIRE_D2P_IBC_PDC_WDTH-1:0 | |
401 | ||
402 | // ~~~~~~~~~~ Ingress CTO Interface ~~~~~~~~~~~~~~~~~ | |
403 | ||
404 | `define FIRE_P2D_CTO_TAG_WDTH 5 // p2d_cto_tag | |
405 | `define FIRE_P2D_CTO_TAG_BITS `FIRE_P2D_CTO_TAG_WDTH-1:0 | |
406 | ||
407 | //####################################################### | |
408 | // Egress Interface | |
409 | //####################################################### | |
410 | ||
411 | // ~~~~~~~~~~ Egress EHB Interface ~~~~~~~~~~~~~~~~~ | |
412 | ||
413 | `define FIRE_D2P_EHB_ADDR_WDTH 6 // d2p_ehb_addr[5:0] | |
414 | `define FIRE_D2P_EHB_ADDR_BITS `FIRE_D2P_EHB_ADDR_WDTH-1:0 | |
415 | ||
416 | `define FIRE_D2P_EHB_DATA_WDTH 128 // d2p_ehb_data[127:0] | |
417 | `define FIRE_D2P_EHB_DATA_BITS `FIRE_D2P_EHB_DATA_WDTH-1:0 | |
418 | ||
419 | `define FIRE_D2P_EHB_DPAR_WDTH 4 // d2p_ehb_dpar[3:0] | |
420 | `define FIRE_D2P_EHB_DPAR_BITS `FIRE_D2P_EHB_DPAR_WDTH-1:0 | |
421 | ||
422 | // ~~~~~~~~~~ Egress EDB Interface ~~~~~~~~~~~~~~~~~ | |
423 | ||
424 | `define FIRE_D2P_EDB_ADDR_WDTH 8 // d2p_edb_addr[7:0] | |
425 | `define FIRE_D2P_EDB_ADDR_BITS `FIRE_D2P_EDB_ADDR_WDTH-1:0 | |
426 | ||
427 | `define FIRE_D2P_EDB_DATA_DW4_LSB 0 | |
428 | `define FIRE_D2P_EDB_DATA_DW4_WDTH 32 | |
429 | `define FIRE_D2P_EDB_DATA_DW4_MSB `FIRE_D2P_EDB_DATA_DW4_LSB + `FIRE_D2P_EDB_DATA_DW4_WDTH - 1 | |
430 | ||
431 | `define FIRE_D2P_EDB_DATA_DW3_LSB `FIRE_D2P_EDB_DATA_DW4_LSB + `FIRE_D2P_EDB_DATA_DW4_WDTH | |
432 | `define FIRE_D2P_EDB_DATA_DW3_WDTH 32 | |
433 | `define FIRE_D2P_EDB_DATA_DW3_MSB `FIRE_D2P_EDB_DATA_DW3_LSB + `FIRE_D2P_EDB_DATA_DW3_WDTH - 1 | |
434 | ||
435 | `define FIRE_D2P_EDB_DATA_DW2_LSB `FIRE_D2P_EDB_DATA_DW3_LSB + `FIRE_D2P_EDB_DATA_DW3_WDTH | |
436 | `define FIRE_D2P_EDB_DATA_DW2_WDTH 32 | |
437 | `define FIRE_D2P_EDB_DATA_DW2_MSB `FIRE_D2P_EDB_DATA_DW2_LSB + `FIRE_D2P_EDB_DATA_DW2_WDTH - 1 | |
438 | ||
439 | `define FIRE_D2P_EDB_DATA_DW1_LSB `FIRE_D2P_EDB_DATA_DW2_LSB + `FIRE_D2P_EDB_DATA_DW2_WDTH | |
440 | `define FIRE_D2P_EDB_DATA_DW1_WDTH 32 | |
441 | `define FIRE_D2P_EDB_DATA_DW1_MSB `FIRE_D2P_EDB_DATA_DW1_LSB + `FIRE_D2P_EDB_DATA_DW1_WDTH - 1 | |
442 | ||
443 | `define FIRE_D2P_EDB_DATA_WDTH `FIRE_D2P_EDB_DATA_DW1_LSB + `FIRE_D2P_EDB_DATA_DW1_WDTH | |
444 | `define FIRE_D2P_EDB_DATA_BITS `FIRE_D2P_EDB_DATA_WDTH-1:0 | |
445 | // d2p_edb_data[127:0] | |
446 | `define FIRE_D2P_EDB_DPAR_WDTH 4 // d2p_edb_dpar[3:0] | |
447 | `define FIRE_D2P_EDB_DPAR_BITS `FIRE_D2P_EDB_DPAR_WDTH-1:0 | |
448 | ||
449 | // ~~~~~~~~~~ Egress CREDIT Interface ~~~~~~~~~~~~~~~~~ | |
450 | ||
451 | `define FIRE_P2D_ECH_RPTR_WDTH 6 // p2d_ech_rptr[5:0] | |
452 | `define FIRE_P2D_ECH_RPTR_BITS `FIRE_P2D_ECH_RPTR_WDTH-1:0 | |
453 | ||
454 | `define FIRE_P2D_ERH_RPTR_WDTH 6 // p2d_erh_rptr[5:0] | |
455 | `define FIRE_P2D_ERH_RPTR_BITS `FIRE_P2D_ERH_RPTR_WDTH-1:0 | |
456 | ||
457 | `define FIRE_D2P_ECH_WPTR_WDTH 6 // d2p_ech_wptr[5:0] | |
458 | `define FIRE_D2P_ECH_WPTR_BITS `FIRE_D2P_ECH_WPTR_WDTH-1:0 | |
459 | ||
460 | `define FIRE_D2P_ERH_WPTR_WDTH 6 // d2p_erh_wptr[5:0] | |
461 | `define FIRE_D2P_ERH_WPTR_BITS `FIRE_D2P_ERH_WPTR_WDTH-1:0 | |
462 | ||
463 | `define FIRE_P2D_ECD_RPTR_WDTH 8 // p2d_ecd_rptr[7:0] | |
464 | `define FIRE_P2D_ECD_RPTR_BITS `FIRE_P2D_ECD_RPTR_WDTH-1:0 | |
465 | ||
466 | `define FIRE_P2D_ERD_RPTR_WDTH 8 // p2d_erd_rptr[7:0] | |
467 | `define FIRE_P2D_ERD_RPTR_BITS `FIRE_P2D_ERD_RPTR_WDTH-1:0 | |
468 | ||
469 | //####################################################### | |
470 | // Ingress Interface | |
471 | //####################################################### | |
472 | ||
473 | //####################################################### | |
474 | // CSR Interface | |
475 | //####################################################### | |
476 | ||
477 | `define FIRE_P2D_MPS_WDTH 3 // p2d_mps[2:0] | |
478 | `define FIRE_P2D_MPS_BITS `FIRE_P2D_MPS_WDTH-1:0 | |
479 | ||
480 | `define FIRE_D2P_CSR_RING_WDTH 96 // d2p_csr_ring[99:0] | |
481 | `define FIRE_P2D_CSR_RING_WDTH 96 // p2d_csr_ring[99:0] | |
482 | ||
483 | //####################################################### | |
484 | // DMC<->PEC (ILU<->TLU) spares | |
485 | //####################################################### | |
486 | ||
487 | `define FIRE_D2P_SPARE_WDTH 5 // d2p_spare[4:0] | |
488 | `define FIRE_P2D_SPARE_WDTH 5 // p2d_spare[4:0] | |
489 | ||
490 | ||
491 | //----------------------------------------------------------------------------- | |
492 | //********************* DMC-PEC (ILU-TLU) Interface Records ******************* | |
493 | //----------------------------------------------------------------------------- | |
494 | ||
495 | //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
496 | // NOTE: In the IHB and EHB defines, | |
497 | // *_4DWH_* represents header byte 12 - 15 in PCIE spec. | |
498 | // *_3DWH_* represents header byte 8 - 11 in PCIE spec. | |
499 | // *_2DWH_* represents header byte 4 - 7 in PCIE spec. | |
500 | // *_1DWH_* represents header byte 0 - 3 in PCIE spec. | |
501 | //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
502 | ||
503 | //#################################### | |
504 | // Ingress Header Buffer Record (IHB) | |
505 | // From IHB to DIM | |
506 | //#################################### | |
507 | ||
508 | `define FIRE_IHB_4DWH_LSB 0 // Start of Field | |
509 | `define FIRE_IHB_4DWH_WDTH 32 // Width of Field | |
510 | `define FIRE_IHB_4DWH_MSB `FIRE_IHB_4DWH_LSB + `FIRE_IHB_4DWH_WDTH -1 // MSB of Field | |
511 | ||
512 | `define FIRE_IHB_3DWH_LSB `FIRE_IHB_4DWH_LSB + `FIRE_IHB_4DWH_WDTH // Start of Field | |
513 | `define FIRE_IHB_3DWH_WDTH 32 // Width of Field | |
514 | `define FIRE_IHB_3DWH_MSB `FIRE_IHB_3DWH_LSB + `FIRE_IHB_3DWH_WDTH -1 // MSB of Field | |
515 | ||
516 | `define FIRE_IHB_2DWH_LSB `FIRE_IHB_3DWH_LSB + `FIRE_IHB_3DWH_WDTH // Start of Field | |
517 | `define FIRE_IHB_2DWH_WDTH 32 // Width of Field | |
518 | `define FIRE_IHB_2DWH_MSB `FIRE_IHB_2DWH_LSB + `FIRE_IHB_2DWH_WDTH -1 // MSB of Field | |
519 | ||
520 | `define FIRE_IHB_1DWH_LSB `FIRE_IHB_2DWH_LSB + `FIRE_IHB_2DWH_WDTH // Start of Field | |
521 | `define FIRE_IHB_1DWH_WDTH 32 // Width of Field | |
522 | `define FIRE_IHB_1DWH_MSB `FIRE_IHB_1DWH_LSB + `FIRE_IHB_1DWH_WDTH -1 // MSB of Field | |
523 | ||
524 | `define FIRE_IHB_REC_WDTH `FIRE_IHB_1DWH_LSB + `FIRE_IHB_1DWH_WDTH // Complete Record Width | |
525 | ||
526 | ||
527 | //#################################### | |
528 | // Egress Header Buffer Record (EHB) | |
529 | // From DEM to EHB | |
530 | //#################################### | |
531 | ||
532 | `define FIRE_EHB_4DWH_LSB 0 // Start of Field | |
533 | `define FIRE_EHB_4DWH_WDTH 32 // Width of Field | |
534 | `define FIRE_EHB_4DWH_MSB `FIRE_EHB_4DWH_LSB + `FIRE_EHB_4DWH_WDTH -1 // MSB of Field | |
535 | ||
536 | `define FIRE_EHB_3DWH_LSB `FIRE_EHB_4DWH_LSB + `FIRE_EHB_4DWH_WDTH // Start of Field | |
537 | `define FIRE_EHB_3DWH_WDTH 32 // Width of Field | |
538 | `define FIRE_EHB_3DWH_MSB `FIRE_EHB_3DWH_LSB + `FIRE_EHB_3DWH_WDTH -1 // MSB of Field | |
539 | ||
540 | `define FIRE_EHB_2DWH_LSB `FIRE_EHB_3DWH_LSB + `FIRE_EHB_3DWH_WDTH // Start of Field | |
541 | `define FIRE_EHB_2DWH_WDTH 32 // Width of Field | |
542 | `define FIRE_EHB_2DWH_MSB `FIRE_EHB_2DWH_LSB + `FIRE_EHB_2DWH_WDTH -1 // MSB of Field | |
543 | ||
544 | `define FIRE_EHB_1DWH_LSB `FIRE_EHB_2DWH_LSB + `FIRE_EHB_2DWH_WDTH // Start of Field | |
545 | `define FIRE_EHB_1DWH_WDTH 32 // Width of Field | |
546 | `define FIRE_EHB_1DWH_MSB `FIRE_EHB_1DWH_LSB + `FIRE_EHB_1DWH_WDTH -1 // MSB of Field | |
547 | ||
548 | `define FIRE_EHB_REC_WDTH `FIRE_EHB_1DWH_LSB + `FIRE_EHB_1DWH_WDTH // Complete Record Width | |
549 | ||
550 | //####################################################### | |
551 | // PCI Express | |
552 | //####################################################### | |
553 | ||
554 | `define FIRE_PCIE_HDR_FMT_BITS 126:125 | |
555 | `define FIRE_PCIE_HDR_TYPE_BITS 124:120 | |
556 | `define FIRE_PCIE_HDR_TC_BITS 118:116 | |
557 | `define FIRE_PCIE_HDR_TD_BITS 111 | |
558 | `define FIRE_PCIE_HDR_EP_BITS 110 | |
559 | `define FIRE_PCIE_HDR_LEN_BITS 105:96 | |
560 | `define FIRE_PCIE_HDR_MSG_BITS 71:64 | |
561 | ||
562 | `define FIRE_PCIE_FMT_WDTH 2 | |
563 | `define FIRE_PCIE_FMT_BITS `FIRE_PCIE_FMT_WDTH-1:0 | |
564 | ||
565 | `define FIRE_PCIE_TYPE_WDTH 5 | |
566 | `define FIRE_PCIE_TYPE_BITS `FIRE_PCIE_TYPE_WDTH-1:0 | |
567 | ||
568 | `define FIRE_PCIE_TC_WDTH 3 | |
569 | `define FIRE_PCIE_TC_BITS `FIRE_PCIE_TC_WDTH-1:0 | |
570 | ||
571 | `define FIRE_PCIE_LEN_WDTH 10 | |
572 | `define FIRE_PCIE_LEN_BITS `FIRE_PCIE_LEN_WDTH-1:0 | |
573 | ||
574 | `define FIRE_PCIE_MSG_WDTH 8 | |
575 | `define FIRE_PCIE_MSG_BITS `FIRE_PCIE_MSG_WDTH-1:0 | |
576 | ||
577 | `define FIRE_PCIE_BUS_NUM_WDTH 8 | |
578 | `define FIRE_PCIE_BUS_NUM_BITS `FIRE_PCIE_BUS_NUM_WDTH-1:0 | |
579 | ||
580 | `define FIRE_PCIE_REQ_ID_WDTH 16 | |
581 | `define FIRE_PCIE_REQ_ID_BITS `FIRE_PCIE_REQ_ID_WDTH-1:0 |