Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / verif / model / pcie / peu / pcie.h
CommitLineData
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