blob: 1517415f2f8d54edf02554d5a1ee310c9fce633e [file] [log] [blame]
//============================================================================================
//
// (C) COPYRIGHT 2008-2011 SYNOPSYS, INC.
// ALL RIGHTS RESERVED
//
// This software and the associated documentation are confidential and
// proprietary to Synopsys, Inc. Your use or disclosure of this
// software is subject to the terms and conditions of a written
// license agreement between you, or your company, and Synopsys, Inc.
//
// The entire notice above must be reproduced on all authorized copies.
//
// Filename : DWC_usb3_params.v
// Author : S.Arvind
// Release version : 1.85a
// Date : $Date: 2011/05/30 07:17:15 $
// File Version : $Revision: 1.1 $
// Description : USB3 Core Parameters
//
// Modification History:
// Date By Version Change Description
//=============================================================================
// 07/03/07 SA 1.0 Initial Release
//=============================================================================
/************* Basic Configuration Parameters ************/
// Name: DWC_USB3_MODE
// Default: Device (NPI or Non-NPI)
// Values: Device (NPI or Non-NPI) (0), Host (1), Device and Host (DRD) (2),
// Hub (3)
//
// Selects controller mode for DWC_usb3.
// Choice decides the value of DWC_USB3_MODE in DWC_usb3_params.v file.
#define DWC_USB3_MODE 2
// Name: DWC_USB3_EN_ISOC_SUPT
// Default: Yes
// Values: No (0), Yes (1)
// Enabled: (DWC_USB3_MODE == 0 || DWC_USB3_MODE == 1 || DWC_USB3_MODE == 2 ||
// DWC_USB3_MODE == 4)
//
// Enables isochronous endpoint capability.
// Choice decides the value of DWC_USB3_EN_ISOC_SUPT in DWC_usb3_params.v file.
#define DWC_USB3_EN_ISOC_SUPT 1
// euse-pragma attr SymbolicNames {Non-OTG Device}
// Name: DWC_USB3_EN_OTG
// Default: No
// Values: No (0), Yes (1)
// Enabled: DWC_USB3_MODE !=3
//
// Enables OTG capability in USB2.0 Mode. In Device only or Host only mode
// when OTG Capability is enabled, only SRP Capability is enabled.
// Choice decides the value of DWC_USB3_EN_OTG in DWC_usb3_params.v file.
#define DWC_USB3_EN_OTG 0
#define DWC_USB3_EN_OTG_SS 0
// Name: DWC_USB3_MBUS_TYPE
// Default: AHB
// Values: AHB (0), AXI (1), Reserved2 (2), Native (3), Non Processor
// Interface (NPI) (4)
// Enabled: DWC_USB3_MODE !=3
//
// Selects the SoC Master Bus interface type. The Master bus is used for DMA.
// If your SoC is AHB-based, or if you have an AHB to your
// SoC bus bridge, select AHB.
// If your SoC is AXI-based, or if you have an AXI to your
// SoC bus bridge, select AXI.
// If your SoC is Non-Processor based, then select NPI.
// Otherwise, select the Native bus interface, and design a
// bridge from DWC_usb3's Native interface to your SoC bus.
// For more information, see the databook's "Hardware Integration" chapter.
// Choice decides the value of DWC_USB3_MBUS_TYPE in DWC_usb3_params.v file.
#define DWC_USB3_MBUS_TYPE 1
// Name: DWC_USB3_SBUS_TYPE
// Default: AHB
// Values: AHB (0), AXI (1), Reserved2 (2), Native (3)
// Enabled: DWC_USB3_MODE !=3 && DWC_USB3_MBUS_TYPE!=4
//
// Selects the SoC Slave Bus interface type. The Slave bus is used for
// register programming.
// If your SoC is AHB-based, or if you have an AHB to your
// SoC bus bridge, select AHB.
// Otherwise, select the Native bus interface, and design a
// bridge from DWC_usb3's Native interface to your SoC bus.
// For more information, see the databook's "Hardware Integration" chapter.
// Choice decides the value of DWC_USB3_SBUS_TYPE in DWC_usb3_params.v file.
#define DWC_USB3_SBUS_TYPE 1
// Name: DWC_USB3_MDWIDTH
// Default: 64 bits
// Values: 32 bits (32), 33 bits (33), 64 bits (64), 128 bits (128)
// Enabled: DWC_USB3_MODE !=3 && DWC_USB3_MBUS_TYPE!=4
//
// Selects data bus width of the Master Bus interface.
// For more information, see the databook's "Hardware Integration"
// chapter. 33-bit is used only for Hub configuration.
// Choice decides the value of DWC_USB3_MDWIDTH in DWC_usb3_params.v file.
#define DWC_USB3_MDWIDTH 64
#define DWC_USB3_MDWIDTH_BYTESHFT 3
#define DWC_USB3_MADDR_LO 3
#define DWC_USB3_MDWORDS 2
#define DWC_USB3_MBYTES 8
// Name: DWC_USB3_SDWIDTH
// Default: 32 bits
// Values: 32 bits (32), 64 bits (64), 128 bits (128)
// Enabled: DWC_USB3_MODE !=3 && DWC_USB3_MBUS_TYPE!=4
//
// Selects the data bus width of the Slave Bus interface.
// Note: The slave data bus width must not be larger than the
// master data bus width.
// For more information, see the databook's "Hardware Integration" chapter.
// Choice decides the value of DWC_USB3_SDWIDTH in DWC_usb3_params.v file.
#define DWC_USB3_SDWIDTH 32
// Name: DWC_USB3_AWIDTH
// Default: 32 bits
// Values: 32 bits (32), 64 bits (64)
// Enabled: DWC_USB3_MODE !=3
//
// Selects the address bus width of the master and slave interfaces.
// If your system address width is 32 bits, then select 32 bits;
// if your address bus width is 64 bits, then select 64 bits.
// The address width is common for both master and slave interface;
// and should be set to meet the DMA master interface requirement.
// The slave interface uses only address bits [19:0] others are don't care.
// For more information, see the databook's "Hardware Integration" chapter.
// Choice decides the value of DWC_USB3_AWIDTH in DWC_usb3_params.v file.
#define DWC_USB3_AWIDTH 32
// Name: DWC_USB3_IDWIDTH
// Default: 4
// Values: 1 2 3 4 5 6 7 8
// Enabled: (DWC_USB3_MBUS_TYPE!=0 && DWC_USB3_MODE !=3 &&
// DWC_USB3_MBUS_TYPE!=4)
//
// Selects the ID port width of the master bus interface. AXI gate count
// is exponentially proportional to the width of this ID.
// For more information, see the databook's "Hardware Integration" chapter.
// Choice decides the value of DWC_USB3_IDWIDTH in DWC_usb3_params.v file.
#define DWC_USB3_IDWIDTH 4
// Name: DWC_USB3_SIDWIDTH
// Default: 4
// Values: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
// Enabled: (DWC_USB3_SBUS_TYPE!=0 && DWC_USB3_MODE !=3 &&
// DWC_USB3_MBUS_TYPE!=4)
//
// Selects the ID port width of the slave bus interface.
// For more information, see the databook's "Hardware Integration" chapter.
// Choice decides the value of DWC_USB3_SIDWIDTH in DWC_usb3_params.v file.
#define DWC_USB3_SIDWIDTH 14
// Name: DWC_USB3_BURSTWIDTH
// Default: 8
// Values: 1 2 3 4 5 6 7 8
// Enabled: ((DWC_USB3_MBUS_TYPE!=0 || DWC_USB3_SBUS_TYPE!=0) && DWC_USB3_MODE
// !=3 && DWC_USB3_MBUS_TYPE!=4)
//
// Selects the Burst port width of the master and slave bus
// interfaces.
// For more information, see the databook's "Hardware Integration" chapter.
// Choice decides the value of DWC_USB3_BURSTWIDTH in DWC_usb3_params.v file.
#define DWC_USB3_BURSTWIDTH 8
// Name: DWC_USB3_DATAINFOWIDTH
// Default: 4
// Values: 1 2 3 4 5 6
// Enabled: ((DWC_USB3_MBUS_TYPE!=0 || DWC_USB3_SBUS_TYPE!=0) && DWC_USB3_MODE
// !=3 && DWC_USB3_MBUS_TYPE!=4)
//
// Selects the Data Info port width of the master and slave bus
// interfaces.
// For more information, see the databook's "Hardware Integration" chapter.
// Choice decides the value of DWC_USB3_DATAINFOWIDTH in DWC_usb3_params.v file.
#define DWC_USB3_DATAINFOWIDTH 4
// Name: DWC_USB3_REQINFOWIDTH
// Default: 4
// Values: 1 2 3 4 5 6
// Enabled: ((DWC_USB3_MBUS_TYPE!=0 || DWC_USB3_SBUS_TYPE!=0) && DWC_USB3_MODE
// !=3 && DWC_USB3_MBUS_TYPE!=4)
//
// Selects the Request/Response Info port width of the master
// and slave bus interfaces.
// For more information, see the databook's "Hardware Integration" chapter.
// Choice decides the value of DWC_USB3_REQINFOWIDTH in DWC_usb3_params.v file.
#define DWC_USB3_REQINFOWIDTH 4
// Name: DWC_USB3_ASPACEWIDTH
// Default: 4
// Values: 1 2 3 4 5 6
// Enabled: ((DWC_USB3_MBUS_TYPE!=0 || DWC_USB3_SBUS_TYPE!=0) && DWC_USB3_MODE
// !=3 && DWC_USB3_MBUS_TYPE!=4)
//
// Selects the Address Space port width of the master and
// slave bus interfaces.
// For more information, see the databook's "Hardware Integration" chapter.
// Choice decides the value of DWC_USB3_ASPACEWIDTH in DWC_usb3_params.v file.
#define DWC_USB3_ASPACEWIDTH 4
#define DWC_USB3_ATOMICWIDTH 4
#define DWC_USB3_MISCWIDTH 4
// Name: DWC_USB3_NUM_OUTSTANDING_TXDMA
// Default: 1
// Values: 1 2
// Enabled: DWC_USB3_MODE !=3 && (DWC_USB3_MBUS_TYPE==1 ||
// DWC_USB3_MBUS_TYPE==3)
//
// Selects the maximum number of master DMA packet read requests (1KB) the core can issue
// on the native bus at a given time. In AHB it is fixed to 1 since AHB does not support multiple outstanding requests
// and the burst size are much smaller than 1KB.
// This provides performance when designing gaskets for higher latency and larger burst-size buses like PCIe.
// Choice decides the value of DWC_USB3_NUM_OUTSTANDING_TXDMA in DWC_usb3_params.v file.
#define DWC_USB3_NUM_OUTSTANDING_TXDMA 2
// Name: DWC_USB3_NUM_RAMS
// Default: 3
// Values: 1 2 3
// Enabled: DWC_USB3_MODE !=3 && DWC_USB3_MBUS_TYPE!=4
//
// Selects the number of RAMs.
// Minimal Configuration Recommendations:
// SuperSpeed device and single port host require 2 or 3 RAMs (3 recommended):
// RAM0 for registers, descriptor cache, and Rx-buffering; and RAM1 for Tx prefetch.
//
// SuperSpeed multi-port host requires 2 or 3 RAMs (3 recommended):
// RAM0 for registers, descriptor cache; RAM1 for Tx prefetch; and RAM2 for Rx-buffering.
//
// High-Speed device and host requires 1 RAM (USB 2.0 needs less bandwidth):
// RAM0 for registers, descriptor cache, Rx buffering, and Tx prefetch.
//
// Hub requires 2 dual-port RAMs.
//
// For SuperSpeed device and host, three 2-Port rams provide the best compromise between
// performance, lower clock frequency, and area.
// For more information, see the databook's "Hardware Integration" chapter.
// Choice decides the value of DWC_USB3_NUM_RAMS in DWC_usb3_params.v file.
#define DWC_USB3_NUM_RAMS 2
// Name: DWC_USB3_SPRAM_TYP
// Default: 2-Port RAM
// Values: 2-Port RAM (0), Single-Port RAM (SPRAM) (1)
// Enabled: DWC_USB3_MODE !=3 && DWC_USB3_MBUS_TYPE!=4
//
// Selects the FIFO Synchronous Static RAM type:
// 2-Port (1 port read, 1 port write) or Single-Port (SPRAM).
// Select 2-port RAM for performance-sensitive applications
// or if your system bus frequency is low (e.g., below 66 MHz).
// Select single-port RAM for area-sensitive applications.
// Depending on your memory compiler and RAM size, the
// area of a true dual-port RAM is 1.2-1.8 times larger than
// a single-port RAM of the same RAM size. The 2-port RAMs are
// normally a little larger than SPRAM but much smaller than DPRAM.
// When SPRAM is selected, the same port is shared by both
// the MAC and AHB. The MAC has priority over the AHB, so
// busy cycles are inserted on the AHB Master interface
// during simultaneous MAC and AHB accesses to the RAM.
// For SuperSpeed device and host, three 2-Port RAMs provides the best compromise between
// performance, lower clock frequency, and area.
// For more information, see the databook's "Hardware Integration" chapter.
// Choice decides the value of DWC_USB3_SPRAM_TYP in DWC_usb3_params.v file.
#define DWC_USB3_SPRAM_TYP 0
// Name: DWC_USB3_EN_PWROPT
// Default: No Power Optimization
// Values: No Power Optimization (0), Clock Gating Only (1), Reserved1 (2)
// Enabled: DWC_USB3_MODE ==0 && DWC_USB3_MBUS_TYPE !=4
//
// Specifies the power optimization mode.
// If Clock Gating Only is selected, RAM and PHY clocks are gated
// when the core is inactive during U1, U2, or U3 states.
// If Two Power Rails Support is selected, in addition to clock
// gating, most of the core can be be powered down to minimize
// power leakage during U2 or U3 states. Only a small portion of
// the core is active to check for the wakeup. Also, isolation
// power clamps are instantiated on the ports from the power-down
// module to always ON modules. During synthesis, you can map these
// modules to your library-specific cells.
// For more information, see the databook's "Hardware Integration" chapter.
// Choice decides the value of DWC_USB3_EN_PWROPT in DWC_usb3_params.v file.
#define DWC_USB3_EN_PWROPT 0
#define DWC_USB3_EN_PWROPT_N 1
// Name: DWC_USB3_MAC_PHY_CLKS_SYNC
// Default: No
// Values: No (0), Yes (1)
//
// Specifies whether the MAC clock and the PHY clock are
// synchronous to each other. If they are not synchronous,
// clock-domain-crossing synchronizers are instantiated
// between them and false paths are set between the two clocks
// are in synthesis.
// For more information, see the databook's "Hardware Integration" chapter.
// Choice decides the value of DWC_USB3_MAC_PHY_CLKS_SYNC in DWC_usb3_params.v file.
#define DWC_USB3_MAC_PHY_CLKS_SYNC 0
#define DWC_USB3_MAC3_BUS_CLKS_SYNC 0
// Name: DWC_USB3_MAC_RAM_CLKS_SYNC
// Default: No
// Values: No (0), Yes (1)
//
// Specifies whether the MAC clock and the RAM clock are
// synchronous to each other. If they are not synchronous,
// clock-domain-crossing synchronizers are instantiated
// between them and false paths are set between the two
// clocks in synthesis. Because the MAC clock is used for
// packet timing calculations, this clock must be fixed
// at a frequency equal to or greater than the PHY clock
// frequency, which is nominally 66 MHz. This solution
// is recommended when you do not want to connect the PHY clock
// to the MAC clock in order to avoid using a PLL to generate
// a 2x MAC clock.
// For more information, see the databook's "Hardware Integration" chapter.
// Choice decides the value of DWC_USB3_MAC_RAM_CLKS_SYNC in DWC_usb3_params.v file.
#define DWC_USB3_MAC_RAM_CLKS_SYNC 0
// Name: DWC_USB3_RAM_BUS_CLKS_SYNC
// Default: No
// Values: No (0), Yes (1)
//
// Specifies whether the RAM clock and the Bus clock are
// synchronous to each other. If they are not synchronous,
// clock-domain-crossing synchronizers are instantiated
// between them and false paths are set between the two
// clocks in synthesis. Because the MAC clock is used for
// packet timing calculations, this clock must be fixed at
// a frequency equal to or greater than the PHY clock frequency,
// which is nominally 66 MHz. This solution is recommended when
// when you do not want to connect the PHY clock to the MAC clock
// in order to avoid using a PLL to generate a 2x MAC clock.
// For more information, see the databook's "Hardware Integration" chapter.
// Choice decides the value of DWC_USB3_RAM_BUS_CLKS_SYNC in DWC_usb3_params.v file.
#define DWC_USB3_RAM_BUS_CLKS_SYNC 0
// Name: DWC_USB3_SYNC_RST
// Default: Asynchronous
// Values: Asynchronous (0), Synchronous (1)
//
// Specifies either asynchronous or synchronous reset coding
// style for all clocked always blocks in the RTL.
// For more information, see the databook's "Hardware Integration" chapter.
// Synchronous reset mode is not HW tested.
// Choice decides the value of DWC_USB3_SYNC_RST in DWC_usb3_params.v file.
#define DWC_USB3_SYNC_RST 0
// Name: DWC_USB3_RM_OPT_FEATURES
// Default: No
// Values: No (0), Yes (1)
//
// Specifies whether to remove optional features. When this
// parameter is enabled, the User ID register, General Purpose
// Input/Output ports, and SOF toggle and counter ports are
// removed to reduce area by 0.6K gates. The SOF toggle and
// counter ports are required if you plan to use the DWC_usb3
// in a Device Wire Adapter (DWA) design where the SOF count
// value is used to synchronize the USB 2.0 host controller
// SOF timer in the DWA.
// Choice decides the value of DWC_USB3_RM_OPT_FEATURES in DWC_usb3_params.v file.
#define DWC_USB3_RM_OPT_FEATURES 0
// Name: DWC_USB3_USERID
// Default: 0x12345678
// Values: 0x0, ..., 0xffffffff
// Enabled: DWC_USB3_MODE !=3 && DWC_USB3_MBUS_TYPE!=4
//
// Specifies the Global User ID (GUID) register's power-on
// initialization value. After power-up, the software can change
// this value. This register can be used as either a scratch
// pad or identification register.
// For more information, see the databook's "Control and Status
// Registers" chapter.
// Choice decides the value of DWC_USB3_USERID in DWC_usb3_params.v file.
#define DWC_USB3_USERID 32'h12345678
// Name: DWC_USB3_GUCTL
// Default: 0x8010
// Values: 0x0, ..., 0xffffffff
// Enabled: DWC_USB3_MODE !=3 && DWC_USB3_MBUS_TYPE!=4
//
// Specified the global User Specific Control Register's power-on
// initialization value. After power-up, the software can change
// this value.
// For more information, see the databook's "Control and Status
// Registers" chapter.
// Choice decides the value of DWC_USB3_USERID in DWC_usb3_params.v file.
#define DWC_USB3_GUCTL 32'h8010
// Name: DWC_USB3_CSR_RAL_BASE_ADDR_VERIF_ONLY
// Default: 0x100000
// Values: 0x0, ..., 0xffffffff
//
// change to allow CSR to be remapped
#define DWC_USB3_CSR_RAL_BASE_ADDR_VERIF_ONLY 64'h100000
/********** PHY Specific Parameters ***********/
// Name: DWC_USB3_SSPHY_INTERFACE
// Default: PIPE3
// Values: None (0), PIPE3 (1)
// Enabled: 0
//
// Specifies the SuperSpeed PHY interface. In USB 2.0 only
// mode, choose None. Otherwise, select the PIPE3 interface.
// Choice decides the value of DWC_USB3_SSPHY_INTERFACE in DWC_usb3_params.v file.
#define DWC_USB3_SSPHY_INTERFACE 1
// euse-pragma attr Label SuperSpeed PHY Interface?
// Name: DWC_USB3_SSPHY_INTERFACE_NUM_PIPE
// Default: No Additional Pipeline
// Values: No Additional Pipeline (0), 1 stage of Additional Pipeline (1), 2
// stages of Additional Pipeline (2)
// Enabled: DWC_USB3_SSPHY_INTERFACE ==1
//
// Insert additional pipelines in the Rx and Tx of the PIPE interface.
// This may be required in the Off chip PHY interface to meet Timing on the pipe
// interface. In the src/pwrm/DWC_usb3_pwrm_u3piu module, the following additional pipeline register control the pipelining:
// phy_pipe3_rx_stage1, phy_pipe3_rx_stage2, phy_pipe3_tx_stage1, and phy_pipe3_tx_stage2.
// Choice decides the number of pipelines to be added.
#define DWC_USB3_SSPHY_INTERFACE_NUM_PIPE 0
// euse-pragma attr CheckExpr[@DWC_USB3_HSPHY_INTERFACE!=0] {[check_license -available DWC-USB30-SRC] || [check_license -available DWC-USB30-DEV-SRC] || [check_license -available DWC-USB30-HOST-SRC] || [check_license -available DWC-USB30] || [check_license -available DWC-USB30-DEV] || [check_license -available DWC-USB30-HOST] || [check_license -available DWC-USB30-SE-SRC] || [check_license -available DWC-USB30-SE]}
// euse-pragma attr CheckExprMessage[@DWC_USB3_MODE<=2] "Site does not have DWC-USB30-SRC or DWC-USB30-DEV-SRC or DWC-USB30-HOST-SRC or DWC-USB30 or DWC-USB30-DEV or DWC-USB30-HOST key"
//// reuse-pragma attr CheckExpr[@DWC_USB3_HSPHY_INTERFACE == 0 && (@DWC_USB3_MODE !=3 && @DWC_USB3_MODE !=4)] @DWC_USB3_SINGLE_POINT==1
//// euse-pragma attr CheckExprMessage[@DWC_USB3_HSPHY_INTERFACE == 0] "Splits cannot be enabled in FS Only Mode"
// Name: DWC_USB3_HSPHY_INTERFACE
// Default: UTMI+
// Values: None (0), UTMI+ (1), ULPI (2), UTMI+ and ULPI (3)
// Enabled: DWC_USB3_MODE !=3
//
// Specifies the High-Speed PHY interface(s). Choose both
// UTMI+ and ULPI if you are not sure whether a UTMI+ or
// ULPI off-chip PHY will be used in the product, or if you
// have an on-chip UTMI+ PHY and want to bring out the ULPI
// interface as a backup in case the on-chip PHY fails. Because
// the MAC connects to the UTMI+ interface, choosing an ULPI
// interface adds about 1.5K gates for the ULPI-to-UTMI+
// conversion logic. If the UTMI+ and ULPI option is chosen,
// the software can select either interface.
// Choice decides the value of DWC_USB3_HSPHY_INTERFACE in DWC_usb3_params.v file.
#define DWC_USB3_HSPHY_INTERFACE 1
#define DWC_USB3_ULPI_DDR 0
// euse-pragma attr CheckExpr[@DWC_USB3_HSPHY_INTERFACE != 1 && @DWC_USB3_HSPHY_INTERFACE != 3] @DWC_USB3_FSPHY_INTERFACE!=2
// euse-pragma attr CheckExpr[@DWC_USB3_HSPHY_INTERFACE != 2 && @DWC_USB3_HSPHY_INTERFACE != 3] @DWC_USB3_FSPHY_INTERFACE != 3
// euse-pragma attr CheckExprMessage[@DWC_USB3_HSPHY_INTERFACE!=2 && @DWC_USB3_HSPHY_INTERFACE!=3] "Since there is no ULPI Interface FS Pin sharing with ULPI is not possible"
// euse-pragma attr Enabled {@DWC_USB3_MODE !=3}
// Name: DWC_USB3_FSPHY_INTERFACE
// Default: None
// Values: None (0), Dedicated FS (1), FS pins shared with UTMI+ (2), FS pins
// shared with ULPI (3)
// Enabled: 0
//
// Specifies the USB 1.1 Full-Speed Serial Transceiver
// interface. You can choose dedicated USB 1.1 FS pins,
// or the pins can be shared with a UTMI+ or ULPI interface.
// Implement both an FS transceiver interface and an HS PHY
// interface if you want to use the same chip in FS and HS
// products. You can also have the FS interface as a backup in case
// the on-chip high-speed PHY fails. Selecting the Dedicated
// FS interface adds about 3.5K gates.
// Choice decides the value of DWC_USB3_FSPHY_INTERFACE in DWC_usb3_params.v file.
#define DWC_USB3_FSPHY_INTERFACE 0
// euse-pragma attr CheckExpr[@DWC_USB3_HSPHY_INTERFACE == 2 || @DWC_USB3_HSPHY_INTERFACE == 3] @DWC_USB3_HSPHY_DWIDTH!=1
// euse-pragma attr CheckExprMessage[@DWC_USB3_HSPHY_INTERFACE == 2 || @DWC_USB3_HSPHY_INTERFACE == 3] "When Using ULPI PHY, you must choose 8-bit or 8/16-bit data width in order to meet USB turnaround time"
// Name: DWC_USB3_HSPHY_DWIDTH
// Default: 8/16 bits
// Values: 8 bits (0), 16 bits (1), 8/16 bits (2)
// Enabled: DWC_USB3_MODE !=3
//
// Specifies the data width of the UTMI+ PHY interface.
// Choose either 8 bits or 16 bits if your UTMI+ PHY only
// supports one of these. If you are not sure which PHY
// you will be using in your product, choose 8/16 bits
// (software selectable). Choosing 8 bits or 16 bits only
// reduces area by 0.5K gates. Running the MAC UTMI+
// interface at 16 bits will consume less power because
// the MAC runs at 30 MHz instead of 60 MHz. When a ULPI PHY
// is used, an internal wrapper converts ULPI to UTMI+. Since
// the ULPI-to-UTMI+ wrapper adds additional delay when
// the ULPI PHY is selected, only 8-bit mode should be used.
// (To meet USB turnaround time, select either a hardware-fixed
// 8-bit mode using this parameter, or 8-bit mode using software
// when 8/16 bit mode is selected for hardware.)
// Choice decides the value of DWC_USB3_HSPHY_DWIDTH in DWC_usb3_params.v file.
#define DWC_USB3_HSPHY_DWIDTH 2
// use-pragma attr CheckExpr[@DWC_USB3_ENABLE_LPM!=0] {[check_license -available DWC-HSOTG-LPM] }
// use-pragma attr CheckExprMessage[@DWC_USB3_ENABLE_LPM!=0] "Site does not have DWC-HSOTG-LPM key"
// Name: DWC_USB3_ENABLE_LPM
// Default: LPM capable Core
// Values: Non-LPM Capable Core (0), LPM capable Core (1)
// Enabled: DWC_USB3_MODE !=3
//
// Selects the Link Power Management (LPM) mode of operation for DWC_otg.
// LPM Mode in device modes increases area by X-Y gates
// LPM Mode in host modes increases area by A-B gates
// Note that special license DWC-HSOTG-LPM is required to enable this feature.
// Choice decides the value of DWC_USB3_ENABLE_LPM in DWC_usb3_params.v file.
#define DWC_USB3_ENABLE_LPM 1
// Name: DWC_USB3_ENABLE_HSIC
// Default: Non-HSIC Capable Core
// Values: Non-HSIC Capable Core (0), HSIC capable Core (1)
// Enabled: DWC_USB3_HSPHY_INTERFACE == 1 || DWC_USB3_HSPHY_INTERFACE == 3
//
// Selects the High Speed Interchip (HSIC) mode of operation for DWC_usb3.
// HSIC Mode in device modes increases area by P-Q gates
// HSIC Mode in host modes increases area by C-D gates
// Note that special license DWC-USB30-HSIC is required to enable this feature.
// Choice decides the value of DWC_USB3_ENABLE_HSIC in DWC_usb3_params.v file.
#define DWC_USB3_ENABLE_HSIC 0
// euse-pragma attr Enabled @DWC_USB3_FSPHY_INTERFACE!=0
// use-pragma attr CheckExpr[@DWC_USB3_ENABLE_IC_USB!=0] {[check_license -available DWC-HSOTG-FS-ICUSB] }
// use-pragma attr CheckExprMessage[@DWC_USB3_ENABLE_IC_USB!=0] "Site does not have DWC-HSOTG-FS-ICUSB key"
// euse-pragma attr Enabled {@DWC_USB3_MODE !=3}
// Name: DWC_USB3_ENABLE_IC_USB
// Default: None
// Values: None (0), IC_USB interface (1)
// Enabled: 0
//
// Specifies the IC_USB Full-Speed Serial Transceiver interface. You can
// choose dedicated USB 1.1 FS pins, or the IC_USB additional interface.
// Implement both an FS transceiver interface and an IC_USB transceiver
// interface if you want to use the same chip in FS and IC_USB products.
// Selecting the IC_USB interface adds about 400 gates.
// Note that special license DWC-HSOTG-FS-ICUSB is required to enable this feature.
// Choice decides the value of DWC_USB3_ENABLE_IC_USB in DWC_usb3_params.v file.
#define DWC_USB3_ENABLE_IC_USB 0
// euse-pragma attr Enabled {@DWC_USB3_MODE !=3}
// Name: DWC_USB3_SELECT_IC_USB
// Default: FS_USB interface
// Values: FS_USB interface (0), IC_USB interface (1)
// Enabled: 0
//
// Specifies the initial mode of the controller when IC_USB is enabled.
// Select IC_USB interface if controller needs to come up with IC_USB mode as default
// Select FS_USB interface if controller needs to come up with FS_USB mode as default
// Choice decides the value of DWC_USB3_SELECT_IC_USB in DWC_usb3_params.v file.
#define DWC_USB3_SELECT_IC_USB 0
// Name: DWC_USB3_I2C_INTERFACE
// Default: No
// Values: No (0), I2C Only (1), I2C and UTMI+ OTG (2)
// Enabled: DWC_USB3_MODE !=3
//
// Specifies whether the I2C interface is enabled. On the
// USB 1.1 Full-Speed Transceiver interface, I2C is required
// for OTG functionality and this parameter also controls
// which signals will be used for OTG. If enabled, I2C signals
// can be used for OTG control instead of, or in addition to,
// the UTMI+ OTG signals (software selectable). Using the I2C
// interface reduces the OTG pin count from 11 to 3.
// The I2C interface is also used for CarKit applications in OTG
// and non-OTG configurations. If CarKit mode is used with the FS
// Transceiver interface, the I2C interface must be enabled to
// access CarKit registers.
// This feature adds about 1.5K gates.
// Choice decides the value of DWC_USB3_I2C_INTERFACE in DWC_usb3_params.v file.
#define DWC_USB3_I2C_INTERFACE 0
// Name: DWC_USB3_FAST_TAT_EN
// Default: UTMI Fast_TAT disabled
// Values: UTMI Fast_TAT disabled (0), UTMI Fast_TAT enabled (1)
// Enabled: (DWC_USB3_HSPHY_INTERFACE == 1 || DWC_USB3_HSPHY_INTERFACE == 3)
//
// Enable this parameter only if you require 16-bit UTMI support
// In multi-port mode, this parameter can be enabled only if all your USB2.0 port clocks are synchronous to each other.
// If your USB2.0 port clocks are asynchronous to each other, then enabling this would cause functional failures.
//
// Selects the USB2.0 Device FAST Turnaround logic for UTMI 16-bit mode.
// The USB specification defines the High-Speed turn around delay to
// be 192 bit times, which translates into 12 PHY clocks at 30 MHz.
// Typically, the PHY will take 7 PHY clocks, leaving 5 PHY clocks
// to the controller. Without this FAST_TAT feature enabled,
// for IN transactions, when operating at a RAM clock of 60 MHz
// the USB3 device core can take up to 7 clocks for its response.
// In this case, the UTMI PHY must consume no more than 5 clocks for
// the Receive End Delay and Transmit Start Delay, combined.
// If the UTMI PHY cannot guarantee that the total time consumed for
// the Receive End Delay and Transmit Start Delay is 5 PHY clock
// cycles or less, then the turn-around delay may be higher than 192
// HS bit times. As a result, the USB host may timeout (if the
// device is connected to the 5th hub in a 5-tier hub topology) for
// a data packet returned by the USB3 device core for an IN token.
// Enabling this option optimizes/eliminates some registers in the
// device mac/ptl path and host mode clock-crossing FIFO, thereby achieving faster turn-around.
//
// NOTE: If you plan to use ULPI mode only or UTMI 8-bit mode only,
// then do not enable this option.
// NOTE: Selecting this option and running the core at UTMI 8-bit mode
// (i.e., 60MHz) could pose synthesis/timing challenges.
// Depending on your UTMI PHY time consumption and your ram clock
// frequency select this option.
// Choice decides the value of DWC_USB3_FAST_TAT_EN in DWC_usb3_params.v file.
#define DWC_USB3_FAST_TAT_EN 0
// Name: DWC_USB3_VENDOR_CTL_INTERFACE
// Default: No
// Values: No (0), Yes (1)
// Enabled: (DWC_USB3_HSPHY_INTERFACE==1 || DWC_USB3_HSPHY_INTERFACE == 3) &&
// DWC_USB3_MODE !=3
//
// Specifies whether the UTMI+ PHY Vendor Control interface is
// enabled. For ULPI PHYs, since there are no additional ports
// Vendor Control is always enabled.
// Choice decides the value of DWC_USB3_VENDOR_CTL_INTERFACE in DWC_usb3_params.v file.
#define DWC_USB3_VENDOR_CTL_INTERFACE 0
// euse-pragma attr Enabled {@DWC_USB3_MODE !=3}
// Name: DWC_USB3_ULPI_CARKIT
// Default: No
// Values: No (0), Yes (1)
// Enabled: 0
//
// Specifies whether the CarKit is enabled for interface.
// If enabled, the software uses the ULPI interface for
// ULPI PHY internal register access. Software can access ULPI
// PHY internal registers using register read/writes to DWC_usb3.
// Choice decides the value of DWC_USB3_ULPI_CARKIT in DWC_usb3_params.v file.
#define DWC_USB3_ULPI_CARKIT 0
// Name: DWC_USB3_GUSB2PHYCFG_INIT
// Default: 0x2400
// Values: 0x0, ..., 0xffffffff
// Enabled: (DWC_USB3_HSPHY_INTERFACE!=0 || DWC_USB3_FSPHY_INTERFACE!=0) &&
// DWC_USB3_MBUS_TYPE!=4
//
// Specifies the Global USB2 PHY Configuration Register's (GUSB2PHYCFG)
// power-on initialization value. The GUSB2PHYCFG register defines USB2 PHY configuration.
// The bits other than defined here must be 0. The different fields are:
// bit[13:10] - USB 2.0 Turnaround Time. 4'h5 - 16-bit UTMI+, 4'h9 - 8-bit UTMI+/ULPI.
// bit[9] - Reserved
// bit[8] - The application uses this bit to control utmi_sleep_n assertion to the PHY in the L1 state. 1'b0 - Disable, 1'b1 - Enable.
// bit[7] - 1'b0 USB2.0 High Speed (UTMI/ULPI), 1'b1 - USB1.1 Full Speed
// bit[6] - When set, USB2.0 PHY enters Suspend mode if Suspend conditions are valid. 1'b0 - Disable, 1'b1 - Enable.
// bit[5] - 1'b0 - 6-Pin Unidirectional FS, 1'b1 - 3-Pin Bidirectional FS
// bit[4] - 1'b0 - 0 - UTMI, 1'b1 - ULPI
// bit[3] - UTMI Mode: 1'b0 8-bit UTMI, 1'b1 - 16-bit UTMI; ULPI Mode - Should be 1'b0
// bit[2:0] - HS/FS Timeout Calibration
// If you use a standard driver, such as the xHCI driver from Microsoft, you must initialize
// this register to meet your system requirements before synthesizing the core. If you are
// developing your own xHCI host driver, then this register can be configured by your driver.
// For more information, see the databook's "Control and Status Registers" chapter.
// Choice decides the value of DWC_USB3_GUSB2PHYCFG_INIT in DWC_usb3_params.v file.
#define DWC_USB3_GUSB2PHYCFG_INIT 32'h2400
// Name: DWC_USB3_GUSB3PIPECTL_INIT
// Default: 0x248002
// Values: 0x0, ..., 0xffffffff
// Enabled: (DWC_USB3_SSPHY_INTERFACE!=0) && DWC_USB3_MBUS_TYPE!=4
//
// Specifies the Global USB3 PIPE Control Register's (GUSB3PIPECTL)
// power-on initialization value. The GUSB3PIPECTL register defines USB3 PIPE Control.
// Refer to PIPE3 Specification for more details. The bits other than defined here must be 0. The different fields are:
// bit[24] - When set, the core will always request PHY power change from P0 to P1/P2/P3 during U0 to U1/U2/U3
// transition. If this bit is 0 and immediate Ux exit (remote initiated or Locally initiated) happens,
// Core may not request P1/P2/P3 power state change. For Synopsys PHY this should be enabled. For non-Synopsys PHY,
// check with your PHY vendor.
// bit[23] - If DWC_USB3_GUSB3PIPECTL_INIT[22] is set and link is in U3 or Rx.Detect state, core will start
// receiver detection on rising edge of this bit. For Downstream port only. This feature should not be used
// during normal operation.
// bit[22] - When set, the core will not do receiver detection in U3/Rx.Detect. DWC_USB3_GUSB3PIPECTL_INIT[23]
// should be used to start receiver detection manually. For Downstream port only. This feature should not be
// enabled for normal operation. Contact Synopsys if have to use this feature.
// bit[21:19] - Delay P0 to P1/P2/P3 request when entering U1/U2/U3 until (DWC_USB3_GUSB3PIPECTL_INIT[21:19]*8) 8B10B
// error happens or Pipe3_RxValid drops. DWC_USB3_GUSB3PIPECTL_INIT[18] must be "1" to enable
// this functionality. This should be 3'h100 for Synopsys PHY.
// bit[18] - Delay P1/P2/P3 transition when entering U1/U2/U3 until rxelecIdle is 1 and Rxvalid is 0.
// 1 - Delay P1/P2/P3 transition.
// 0 - Do not delay P1/P2/P3 based on rxelecIdle and Rxvalid.
// This should be '1' for Synopsys PHY.
// bit[17] - Enable USB3.0 SS PHY Suspend.
// bit[16:15] - PIPE Data Width. The clock after reset, these bits will reflect the values of the "pipe3_DataBusWidth" port.
// 2'b00 - 32-bit, 2'b01 - 16-bit, 2'b10 - 8-bit
// bit[14] - In link state U2, abort receiver detection if remote partner starts U2 exit
// bit[13] - No Rx Detect If RxElecIdle Low, when set the core will skip Rx Detection if pipe3_RxElecIdle is low.
// Skipping means waiting for the appropriate timeout and then repeating the operation.
// bit[12] - LFPS P0 Align, when set the core will deassert LFPS transmission on the same clock edge that it requests
// Phy power state 0 when exiting U1, U2, or U3 low power states. Otherwise, LFPS transmission will be asserted
// one clock earlier. In addition, the core will request symbol transmission two pipe3_rx_pclks after
// the PHY asserts PhyStatus when the PHY has switched from the P1 or P2 to P0 state.
// bit[11] - P3 P2 Transitions OK, when set the core will transition directly from Phy power states P2 to P3, and from
// P3 to P2. Otherwise, P0 will always be entered between P2 and P3 as defined in the PIPE3 specification.
// For Synopsys PHY this should be "0".
// bit[10] - P3 Exit Signal in P2, when set the core will always change the Phy power state to P2, before attempting
// a U3 exit handshake. Otherwise, the Phy power state will not be changed during U3 exit signaling.
// bit[9] - LFPS Filter Value, when set filter LFPS reception with pipe3_RxVaid in PHY power state P0, i.e ignore LFPS
// reception from the PHY unless both pipe3_Rxelecidle and pipe3_RxValid are deasserted.
// bit[6] - Tx Swing, 1'b0 - Full Swing, 1'b1 - Low Swing
// bit[5:3] - Tx Margin, 3'b000 - Normal, 3'b001 - 800-1200mV Full Swing/400-700mV Half Swing, 3'b010, 3'b011 - Vendor Defined,
// 3'b101 - 3'b111 - 200-400mV Full Swing/100-200mV Half Swing
// bit[2:1] - Tx Deemphasis, 2'b00 - -6DB, 2'b01 - -3.5DB, 2'b10 - No Deemphesis, 2'b11 - Reserved
// bit[0] - PHY Elasticity Mode, 1'b0 - Nominal Half Full Buffer, 1'b1 - Nominal Empty Buffer
// If you use a standard driver, such as the xHCI driver from Microsoft, you must initialize
// this register to meet your system requirements before synthesizing the core. If you are
// developing your own xHCI host driver, then this register can be configured by your driver.
// For more information, see the databook's "Control and Status Registers" chapter.
// Choice decides the value of DWC_USB3_GUSB3PIPECTL_INIT in DWC_usb3_params.v file.
#define DWC_USB3_GUSB3PIPECTL_INIT 32'h1240002
// Name: DWC_USB3_PIPE_RXTERM_RESET_VAL
// Default: 0
// Values: 0 1
// Enabled: DWC_USB3_SSPHY_INTERFACE!=0
//
// Determines the value of the pipe3_RxTermination signal while
// hardware reset is asserted.
#define DWC_USB3_PIPE_RXTERM_RESET_VAL 0
// Name: DWC_USB3_SUSPEND_ON_DISCONNECT_EN
// Default: 0
// Values: 0 1
// Enabled: (DWC_USB3_HSPHY_INTERFACE!=0 || DWC_USB3_FSPHY_INTERFACE!=0) &&
// (DWC_USB3_MBUS_TYPE!=4) && (DWC_USB3_MODE==1 ||
// DWC_USB3_MODE==2)
//
// For USB2.0 ports enable suspend during disconnect. This will save
// power when no devices are connected to USB2.0 port.
#define DWC_USB3_SUSPEND_ON_DISCONNECT_EN 0
// Name: DWC_USB3_RXDET_IN_P3_DS
// Default: 0
// Values: 0 1
// Enabled: (DWC_USB3_SSPHY_INTERFACE!=0) && (DWC_USB3_MODE!=0)
//
// For downstream port, Allow Receiver detection in PHY power state P3.
// Please check whether your PHY supports this feature. Even though this feature is supported in Synopsys PHY, some of the exiting Synopsys PHY test chips
// do not support this. Check with Synopsys whether a particular test chip supports this feature before enabling this feature for FPGA hardware validation.
#define DWC_USB3_RXDET_IN_P3_DS 0
/********** Device Specific Parameters ***********/
// Name: DWC_USB3_DEVICE_NUM_INT
// Default: 1
// Values: 1 2 4 8 16 32
// Enabled: DWC_USB3_MODE !=1 && DWC_USB3_MODE !=3 && DWC_USB3_MBUS_TYPE!=4
//
// Selects the number of Event Buffers in device mode. Each Event Buffer will also have a separate interrupt.
// For more information, see the databook's "Hardware Integration" chapter.
// Choice decides the value of DWC_USB3_DEVICE_NUM_INT in DWC_usb3_params.v file.
#define DWC_USB3_DEVICE_NUM_INT 1
// Name: DWC_USB3_NUM_EPS
// Default: 8
// Values: 4, ..., 32
// Enabled: DWC_USB3_MODE !=1 && DWC_USB3_MODE !=3
//
// Specifies the number of Device mode single directional endpoints, including
// OUT and IN control endpoint 0 which is always present. The DWC_usb3 core
// provides flexible endpoint configuration, where an endpoint can be mapped to
// any USB IN or OUT endpoint. For example if you need 3 bi-directional endpoints
// then you need to choose 6 single directional endpoint configuration.
// Choose the maximum possible number of endpoints that must be supported for all
// configurations and alternate settings. Specifying additional
// endpoints is not useful because the core will not use the
// excess registers, resulting in increased gate count but no
// gain in performance. If area is not a concern, and you want
// a flexible design that can be used in multiple applications,
// instantiate all 16 IN and 16 OUT endpoints. The default value of 8 endpoints reflects
// the UASP mass-storage class plus an ISOC application requirement:
// Control-OUT, Control-IN, Bulk-Data-OUT, Bulk-Data-IN, Bulk-Command-OUT, Bulk-Status-IN,
// ISOC-OUT, and ISOC-IN. The cost of an OUT/IN endpoint is 2.5/3.5Kgates plus transfer resource cache.
// Choice decides the value of DWC_USB3_NUM_EPS in DWC_usb3_params.v file.
#define DWC_USB3_NUM_EPS 8
// Name: DWC_USB3_NUM_IN_EPS
// Default: 4
// Values: 2, ..., 16
// Enabled: DWC_USB3_MODE != 1 && DWC_USB3_MODE !=3
//
// Specifies the maximum number of Device mode IN endpoints
// active at any time, including control endpoint 0, which is always
// present. This parameter determines the number of Device mode
// TxFIFOs to be instantiated and Tx RAM allocated. The default value of 4 IN
// endpoints reflects the UASP mass-storage class plus an ISOC application
// requirement:
// Control-IN, Bulk-Data-IN, Bulk-Status-IN, and ISOC-IN.
// Choice decides the value of DWC_USB3_NUM_IN_EPS in DWC_usb3_params.v file.
#define DWC_USB3_NUM_IN_EPS 4
#define DWC_USB3_NUM_OUT_EPS 4
// Name: DWC_USB3_CACHE_TOTAL_XFER_RESOURCES
// Default: 8
// Values: 4, ..., 127
// Enabled: DWC_USB3_MODE != 1 && DWC_USB3_MODE !=3 && DWC_USB3_MBUS_TYPE!=4
//
// Selects the maximum number of transfer resources in the core (must be at
// least equal to the number of unidirectional endpoints configured).
// It is recommended that 10 resources be allocated for each Stream endpoint
// and one for non Stream endpoints.
// For more information, see the databook's "Hardware Integration"
// chapter. The default value of 8 endpoints reflects
// the UASP mass-storage class plus an ISOC application requirement:
// 1 transfer resource for each of the Control-OUT, Control-IN, Bulk-Command-OUT, ISOC-OUT, ISOC-IN endpoints and
// 10 transfer resource for each of the Bulk-Data-OUT, Bulk-Data-IN, Bulk-Status-IN endpoints.
// The cost of a transfer resource is (Number of cached TRBs * 16 + 32) bytes of cache memory.
// Choice decides the value of DWC_USB3_CACHE_TOTAL_XFER_RESOURCES in DWC_usb3_params.v file.
#define DWC_USB3_CACHE_TOTAL_XFER_RESOURCES 8
// Name: DWC_USB3_CACHE_TRBS_PER_TRANSFER
// Default: 4
// Values: 2, ..., 32
// Enabled: DWC_USB3_MODE != 1 && DWC_USB3_MODE !=3 && DWC_USB3_MBUS_TYPE!=4
//
// Selects the number of TRBs per transfer that can be cached within the
// core. It is recommended that the endpoint cache be able to hold one
// burst amount of TRBs. If your application buffer size is less than the
// packet size, then the TRB cache must also have at least one packet
// amount of TRBs for correct operation.
// The cost of TRB cache, 16 * Number of cached TRBs bytes.
// For more information, see the databook's "Hardware Integration" chapter.
// Choice decides the value of DWC_USB3_CACHE_TRBS_PER_TRANSFER in DWC_usb3_params.v file.
#define DWC_USB3_CACHE_TRBS_PER_TRANSFER 8
// Name: DWC_USB3_PERIODIC_PARAMS
// Default: 0x0
// Values: 0x0, ..., 0x3ff
// Enabled: DWC_USB3_MODE == 0 || DWC_USB3_MODE == 2
//
// Specifies the Periodic Parameter register's power-on initialization
// value, which contains the System Exit Latency (SEL). After
// power-up, the software can change this value via the "Set Periodic
// Parameters" device generic command.
// For more information, see the databook's "Control and Status
// Registers" chapter.
// Choice decides the value of DWC_USB3_PERIODIC_PARAMS in DWC_usb3_params.v file.
#define DWC_USB3_PERIODIC_PARAMS 32'h0
// Name: DWC_USB3_EN_COMPANION_USB2_CTRL
// Default: No
// Values: No (0), Yes (1)
// Enabled: (DWC_USB3_MODE == 0 && DWC_USB3_MBUS_TYPE!=4)
//
// Enables companion USB2.0 controller support. This feature is supported only in Non-NPI Device mode.
// For USB2.0 functions, an external USB2.0 controller can provide the support instead the DWC_usb3 controller.
// When this mode is selected, you are responsible to validate the DWC_usb3 core with your USB2.0 controller and
// check all the SS, HS, FS fallback modes are working.
// For more information, see the databook's "Hardware Integration" chapter.
// Choice decides the value of DWC_USB3_EN_ISOC_SUPT in DWC_usb3_params.v file.
#define DWC_USB3_EN_COMPANION_USB2_CTRL 0
// Name: DWC_USB3_EXT_BUFF_CONTROL
// Default: No
// Values: No (0), Yes (1)
// Enabled: ((DWC_USB3_MODE == 0) || (DWC_USB3_MODE == 2))
//
// Enables Device External Buffer Control Sideband Controls
#define DWC_USB3_EXT_BUFF_CONTROL 0
/********** Device NPI Specific Parameters ***********/
// Name: DWC_USB3_NPI_RX_STATUS_DEPTH
// Default: 16
// Values: 8 16 32
// Enabled: DWC_USB3_MODE ==0 && DWC_USB3_MBUS_TYPE ==4
//
// Selects OUT Endpoints Common Rx Status FIFO Depth
#define DWC_USB3_NPI_RX_STATUS_DEPTH 16
// Name: DWC_USB3_NPI_TX_STATUS_DEPTH
// Default: 6
// Values: 4 5 6 7 8 16
// Enabled: DWC_USB3_MODE ==0 && DWC_USB3_MBUS_TYPE ==4
//
// Selects IN Endpoints Tx Status FIFO Depth (one per IN EP)
#define DWC_USB3_NPI_TX_STATUS_DEPTH 6
// Name: DWC_USB3_ULPI_VENDOR_CTL_INTERFACE
// Default: No
// Values: No (0), Yes (1)
// Enabled: (DWC_USB3_HSPHY_INTERFACE==2 || DWC_USB3_HSPHY_INTERFACE == 3) &&
// DWC_USB3_MBUS_TYPE==4
//
// Specifies whether the NPI Mode ULPI PHY Vendor Control interface is
// enabled.
// Choice decides the value of DWC_USB3_ULPI_VENDOR_CTL_INTERFACE in DWC_usb3_params.v file.
#define DWC_USB3_ULPI_VENDOR_CTL_INTERFACE 0
// Name: DWC_USB3_NPI_USE_BMU_SIM
// Default: Yes
// Values: No (0), Yes (1)
// Enabled: DWC_USB3_MODE ==0 && DWC_USB3_MBUS_TYPE==4
//
// Specifies whether to use the NPI Buffer Management (DWC_usb3_npi_bufm.v) module in the simulation. When enabled,
// the BMU module will also be used in the simulation and the NPI BFMs will drive the BMU interface. When not enabled,
// the NPI interface will be exercised.
// directly. This affects only the simulation.
#define DWC_USB3_NPI_USE_BMU_SIM 1
// Name: DWC_USB3_NPI_LARGEST_IN_EP_FIFO_DEPTH
// Default: 1024
// Values: 0, ..., 8192
// Enabled: DWC_USB3_MODE ==0 && DWC_USB3_MBUS_TYPE ==4 &&
// DWC_USB3_NPI_USE_BMU_SIM
//
// The largest IN Endpoint FIFO Depth
#define DWC_USB3_NPI_LARGEST_IN_EP_FIFO_DEPTH 1024
// Name: DWC_USB3_NPI_DYNAMIC_FIFO_DEPTH_EN
// Default: No
// Values: No (0), Yes (1)
// Enabled: DWC_USB3_MODE ==0 && DWC_USB3_MBUS_TYPE ==4 &&
// DWC_USB3_NPI_USE_BMU_SIM
//
// Enables Dynamic FIFO depth. The BMU FIFO depth can be static or dynamic.
// If Dynamic FIFO depth is chosen, then the npi_tx_fifo_depth and npi_tx_fifo_depth_reconfig signals
// configure the depth. The clock after reset the npi_tx_fifo_depth will be used to configure the depth of each FIFO.
// After reset, the application can use npi_tx_fifo_depth_reconfig (one clock pulse) to reconfigure the FIFO.
// Tx FIFO-0 depth should not be changed. When npi_tx_fifo_depth_reconfig is asserted for one clock, it will take
// "DWC_USB3_NUM_IN_EPS+1" clocks to configure the FIFOs.
#define DWC_USB3_NPI_DYNAMIC_FIFO_DEPTH_EN 0
// Name: DWC_USB3_NPI_IN_EP0_FIFO_DEPTH
// Default: 128
// Values: 32, ..., 8192
// Enabled: DWC_USB3_NPI_DYNAMIC_FIFO_DEPTH_EN ==0 && DWC_USB3_MODE ==0 &&
// DWC_USB3_MBUS_TYPE ==4 && DWC_USB3_NUM_IN_EPS > 0 &&
// DWC_USB3_NPI_USE_BMU_SIM
//
// Selects IN Endpoint 0 FIFO Depth
#define DWC_USB3_NPI_IN_EP0_FIFO_DEPTH 128
// Name: DWC_USB3_NPI_IN_EP1_FIFO_DEPTH
// Default: 1024
// Values: 32, ..., 8192
// Enabled: DWC_USB3_NPI_DYNAMIC_FIFO_DEPTH_EN ==0 && DWC_USB3_MODE ==0 &&
// DWC_USB3_MBUS_TYPE ==4 && DWC_USB3_NUM_IN_EPS > 1 &&
// DWC_USB3_NPI_USE_BMU_SIM
//
// Selects IN Endpoint 1 FIFO Depth
// For UASP Data Endpoint which supports burst, 4 packets are recommended.
#define DWC_USB3_NPI_IN_EP1_FIFO_DEPTH 1024
// Name: DWC_USB3_NPI_IN_EP2_FIFO_DEPTH
// Default: 768
// Values: 0, ..., 8192
// Enabled: DWC_USB3_NPI_DYNAMIC_FIFO_DEPTH_EN ==0 && DWC_USB3_MODE ==0 &&
// DWC_USB3_MBUS_TYPE ==4 && DWC_USB3_NUM_IN_EPS > 2 &&
// DWC_USB3_NPI_USE_BMU_SIM
//
// Selects IN Endpoint 2 FIFO Depth
// For UASP status Endpoint 256 byte is sufficient.
#define DWC_USB3_NPI_IN_EP2_FIFO_DEPTH 768
// Name: DWC_USB3_NPI_IN_EP3_FIFO_DEPTH
// Default: 256
// Values: 0, ..., 8192
// Enabled: DWC_USB3_NPI_DYNAMIC_FIFO_DEPTH_EN ==0 && DWC_USB3_MODE ==0 &&
// DWC_USB3_MBUS_TYPE ==4 && DWC_USB3_NUM_IN_EPS > 3 &&
// DWC_USB3_NPI_USE_BMU_SIM
//
// Selects IN Endpoint 3 FIFO Depth
#define DWC_USB3_NPI_IN_EP3_FIFO_DEPTH 256
// Name: DWC_USB3_NPI_IN_EP4_FIFO_DEPTH
// Default: 0
// Values: 0, ..., 8192
// Enabled: DWC_USB3_NPI_DYNAMIC_FIFO_DEPTH_EN ==0 && DWC_USB3_MODE ==0 &&
// DWC_USB3_MBUS_TYPE ==4 && DWC_USB3_NUM_IN_EPS > 4 &&
// DWC_USB3_NPI_USE_BMU_SIM
//
// Selects IN Endpoint 4 FIFO Depth
#define DWC_USB3_NPI_IN_EP4_FIFO_DEPTH 0
// Name: DWC_USB3_NPI_IN_EP5_FIFO_DEPTH
// Default: 0
// Values: 0, ..., 8192
// Enabled: DWC_USB3_NPI_DYNAMIC_FIFO_DEPTH_EN ==0 && DWC_USB3_MODE ==0 &&
// DWC_USB3_MBUS_TYPE ==4 && DWC_USB3_NUM_IN_EPS > 5 &&
// DWC_USB3_NPI_USE_BMU_SIM
//
// Selects IN Endpoint 5 FIFO Depth
#define DWC_USB3_NPI_IN_EP5_FIFO_DEPTH 0
// Name: DWC_USB3_NPI_IN_EP6_FIFO_DEPTH
// Default: 0
// Values: 0, ..., 8192
// Enabled: DWC_USB3_NPI_DYNAMIC_FIFO_DEPTH_EN ==0 && DWC_USB3_MODE ==0 &&
// DWC_USB3_MBUS_TYPE ==4 && DWC_USB3_NUM_IN_EPS > 6 &&
// DWC_USB3_NPI_USE_BMU_SIM
//
// Selects IN Endpoint 6 FIFO Depth
#define DWC_USB3_NPI_IN_EP6_FIFO_DEPTH 0
// Name: DWC_USB3_NPI_IN_EP7_FIFO_DEPTH
// Default: 0
// Values: 0, ..., 8192
// Enabled: DWC_USB3_NPI_DYNAMIC_FIFO_DEPTH_EN ==0 && DWC_USB3_MODE ==0 &&
// DWC_USB3_MBUS_TYPE ==4 && DWC_USB3_NUM_IN_EPS > 7 &&
// DWC_USB3_NPI_USE_BMU_SIM
//
// Selects IN Endpoint 7 FIFO Depth
#define DWC_USB3_NPI_IN_EP7_FIFO_DEPTH 0
// Name: DWC_USB3_NPI_IN_EP8_FIFO_DEPTH
// Default: 0
// Values: 0, ..., 8192
// Enabled: DWC_USB3_NPI_DYNAMIC_FIFO_DEPTH_EN ==0 && DWC_USB3_MODE ==0 &&
// DWC_USB3_MBUS_TYPE ==4 && DWC_USB3_NUM_IN_EPS > 8 &&
// DWC_USB3_NPI_USE_BMU_SIM
//
// Selects IN Endpoint 8 FIFO Depth
#define DWC_USB3_NPI_IN_EP8_FIFO_DEPTH 0
// Name: DWC_USB3_NPI_IN_EP9_FIFO_DEPTH
// Default: 0
// Values: 0, ..., 8192
// Enabled: DWC_USB3_NPI_DYNAMIC_FIFO_DEPTH_EN ==0 && DWC_USB3_MODE ==0 &&
// DWC_USB3_MBUS_TYPE ==4 && DWC_USB3_NUM_IN_EPS > 9 &&
// DWC_USB3_NPI_USE_BMU_SIM
//
// Selects IN Endpoint 9 FIFO Depth
#define DWC_USB3_NPI_IN_EP9_FIFO_DEPTH 0
// Name: DWC_USB3_NPI_IN_EP10_FIFO_DEPTH
// Default: 0
// Values: 0, ..., 8192
// Enabled: DWC_USB3_NPI_DYNAMIC_FIFO_DEPTH_EN ==0 && DWC_USB3_MODE ==0 &&
// DWC_USB3_MBUS_TYPE ==4 && DWC_USB3_NUM_IN_EPS > 10 &&
// DWC_USB3_NPI_USE_BMU_SIM
//
// Selects IN Endpoint 10 FIFO Depth
#define DWC_USB3_NPI_IN_EP10_FIFO_DEPTH 0
// Name: DWC_USB3_NPI_IN_EP11_FIFO_DEPTH
// Default: 0
// Values: 0, ..., 8192
// Enabled: DWC_USB3_NPI_DYNAMIC_FIFO_DEPTH_EN ==0 && DWC_USB3_MODE ==0 &&
// DWC_USB3_MBUS_TYPE ==4 && DWC_USB3_NUM_IN_EPS > 11 &&
// DWC_USB3_NPI_USE_BMU_SIM
//
// Selects IN Endpoint 11 FIFO Depth
#define DWC_USB3_NPI_IN_EP11_FIFO_DEPTH 0
// Name: DWC_USB3_NPI_IN_EP12_FIFO_DEPTH
// Default: 0
// Values: 0, ..., 8192
// Enabled: DWC_USB3_NPI_DYNAMIC_FIFO_DEPTH_EN ==0 && DWC_USB3_MODE ==0 &&
// DWC_USB3_MBUS_TYPE ==4 && DWC_USB3_NUM_IN_EPS > 12 &&
// DWC_USB3_NPI_USE_BMU_SIM
//
// Selects IN Endpoint 12 FIFO Depth
#define DWC_USB3_NPI_IN_EP12_FIFO_DEPTH 0
// Name: DWC_USB3_NPI_IN_EP13_FIFO_DEPTH
// Default: 0
// Values: 0, ..., 8192
// Enabled: DWC_USB3_NPI_DYNAMIC_FIFO_DEPTH_EN ==0 && DWC_USB3_MODE ==0 &&
// DWC_USB3_MBUS_TYPE ==4 && DWC_USB3_NUM_IN_EPS > 13 &&
// DWC_USB3_NPI_USE_BMU_SIM
//
// Selects IN Endpoint 13 FIFO Depth
#define DWC_USB3_NPI_IN_EP13_FIFO_DEPTH 0
// Name: DWC_USB3_NPI_IN_EP14_FIFO_DEPTH
// Default: 0
// Values: 0, ..., 8192
// Enabled: DWC_USB3_NPI_DYNAMIC_FIFO_DEPTH_EN ==0 && DWC_USB3_MODE ==0 &&
// DWC_USB3_MBUS_TYPE ==4 && DWC_USB3_NUM_IN_EPS > 14 &&
// DWC_USB3_NPI_USE_BMU_SIM
//
// Selects IN Endpoint 14 FIFO Depth
#define DWC_USB3_NPI_IN_EP14_FIFO_DEPTH 0
// Name: DWC_USB3_NPI_IN_EP15_FIFO_DEPTH
// Default: 0
// Values: 0, ..., 8192
// Enabled: DWC_USB3_NPI_DYNAMIC_FIFO_DEPTH_EN ==0 && DWC_USB3_MODE ==0 &&
// DWC_USB3_MBUS_TYPE ==4 && DWC_USB3_NUM_IN_EPS > 15 &&
// DWC_USB3_NPI_USE_BMU_SIM
//
// Selects IN Endpoint 15 FIFO Depth
#define DWC_USB3_NPI_IN_EP15_FIFO_DEPTH 0
/********** Host Specific Parameters ***********/
// Name: DWC_USB3_NUM_DEVICE_SUPT
// Default: 64
// Values: 1, ..., 127
// Enabled: (DWC_USB3_MODE == 1 || DWC_USB3_MODE == 2)
//
// Specifies the number of devices supported. The value you
// choose does not increase the DWC_usb3's gate count, but the
// memory requirements increase to store context information.
// 32 bytes of internal RAM is required for each device supported.
// For more information, see the databook's "Area, Speed, and
// Power for DWC_usb3 Configurations" appendix.
// Choice decides the value of DWC_USB3_NUM_DEVICE_SUPT in DWC_usb3_params.v file.
#define DWC_USB3_NUM_DEVICE_SUPT 16
// Name: DWC_USB3_HOST_NUM_INTERRUPTER_SUPT
// Default: 1
// Values: 1, ..., 1024
// Enabled: (DWC_USB3_MODE == 1 || DWC_USB3_MODE == 2)
//
// Specifies the number of interrupters supported. The value you
// choose affects the gate count and memory requirements of DWC_usb3.
// 100 bytes of internal RAM is required for each interrupter.
// For more information, see the "Area, Speed, and
// Power for DWC_usb3 Configurations" appendix in the Databook.
// Choice decides the value of DWC_USB3_HOST_NUM_INTERRUPTER_SUPT in DWC_usb3_params.v file.
#define DWC_USB3_HOST_NUM_INTERRUPTER_SUPT 1
// Name: DWC_USB3_HOST_NUM_U2_ROOT_PORTS
// Default: 1
// Values: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
// Enabled: (DWC_USB3_MODE == 1 || DWC_USB3_MODE == 2)
//
// Specifies the number of USB2 Root Hub ports.
// The area of a USB 2.0 port is about 9K gates.
// Choice decides the value of DWC_USB3_HOST_NUM_U2_ROOT_PORTS in DWC_usb3_params.v file.
#define DWC_USB3_HOST_NUM_U2_ROOT_PORTS 1
// Name: DWC_USB3_HOST_NUM_U3_ROOT_PORTS
// Default: 1
// Values: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
// Enabled: (DWC_USB3_MODE == 1 || DWC_USB3_MODE == 2)
//
// Specifies the number of USB 3.0 Root Hub ports.
// The area of a USB3 port is about 52K gates.
// Choice decides the value of DWC_USB3_HOST_NUM_U3_ROOT_PORTS in DWC_usb3_params.v file.
#define DWC_USB3_HOST_NUM_U3_ROOT_PORTS 1
// euse-pragma attr DefaultValue = (((@DWC_USB3_MODE==1) | (@DWC_USB3_MODE==2)) && (@DWC_USB3_HOST_NUM_U3_ROOT_PORTS != 1))? 1 : 0
// Name: DWC_USB3_COMMON_USB3_PCLK_EXIST
// Default: No
// Values: No (0), Yes (1)
// Enabled: (DWC_USB3_MODE == 1 || DWC_USB3_MODE == 2) &&
// DWC_USB3_HOST_NUM_U3_ROOT_PORTS != 1
//
// Specifies whether your USB 3.0 Multi-Port PHY provides a common PHY clock for multiport support
// which is active when any port is not in low-power state. If your USB 3.0 Multi-Port PHY provides
// a common pipe clock, it should be connected to "pipe3_common_rx_pclk" and "pipe3_common_tx_pclk" ports.
// If your USB 3.0 Multi-Port PHY does not provide a common PHY clock, then Port-0 clock will be used by the core
// for generating internal mac clock.
// Choice decides the value of DWC_USB3_COMMON_USB3_PCLK_EXIST in DWC_usb3_params.v file.
#define DWC_USB3_COMMON_USB3_PCLK_EXIST 0
// euse-pragma attr DefaultValue = (((@DWC_USB3_MODE==1) | (@DWC_USB3_MODE==2)) && (@DWC_USB3_HOST_NUM_U2_ROOT_PORTS != 1))? 1 : 0
// Name: DWC_USB3_COMMON_USB2_PCLK_EXIST
// Default: No
// Values: No (0), Yes (1)
// Enabled: (DWC_USB3_MODE == 1 || DWC_USB3_MODE == 2) &&
// DWC_USB3_HOST_NUM_U2_ROOT_PORTS != 1
//
// Specifies whether your Multi-Port USB 2.0 PHY provides a common PHY clock for multiport support
// which is active when any port is not in low-power state. If your USB 2.0 Multi-Port PHY provides
// a common PHY clock, it should be connected to "usb2_phy_clk".
// If your USB 2.0 Multi-Port PHY does not provide a common PHY clock, then Port-0 clock will be used by the core
// for generating internal mac2 clock.
// Choice decides the value of DWC_USB3_COMMON_USB2_PCLK_EXIST in DWC_usb3_params.v file.
#define DWC_USB3_COMMON_USB2_PCLK_EXIST 0
// euse-pragma attr DefaultValue = 1
// Name: DWC_USB3_NUM_SS_USB_INSTANCES
// Default: 1
// Values: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
// Enabled: (DWC_USB3_MODE == 1 || DWC_USB3_MODE == 2) &&
// DWC_USB3_HOST_NUM_U3_ROOT_PORTS != 1
//
// Specifies the number of SuperSpeed USB Bus-Instances. When the number of
// SuperSpeed USB Bus-Instances is equal to the number of USB 3.0 ports, you
// can do concurrent USB 3.0 transfers on each port. For example, if you
// have 4 ports and 4 SuperSpeed USB Bus-Instances, then in concurrent mode your
// effective data rate is 32 Gbps (8 Gbps * 4). The area overhead of a
// SuperSpeed USB Bus-Instance is about 80K gates. When compared to the area of
// the PHY, which is about 400K gates per port, this is negligible, but the
// performance increase is multifold. For example, if you have 4 ports, 1 port
// can be connected to a USB 3.0 drive, another port can be connected to a
// display, and 2 more more ports can be used as general purpose I/O interface.
// Here, each port has a guaranteed throughput of 8 Gbps (or 4 Gbps simplex).
// Choice decides the value of DWC_USB3_NUM_SS_USB_INSTANCES in DWC_usb3_params.v file.
#define DWC_USB3_NUM_SS_USB_INSTANCES 1
// euse-pragma attr DefaultValue = 1
// Name: DWC_USB3_NUM_HS_USB_INSTANCES
// Default: 1
// Values: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
// Enabled: (DWC_USB3_MODE == 1 || DWC_USB3_MODE == 2) &&
// DWC_USB3_HOST_NUM_U2_ROOT_PORTS != 1
//
// Specifies the number of High-Speed USB Bus-Instances. When the number of
// High-Speed USB Bus-Instances is equal to the number of root ports, you can do
// concurrent High-Speed transfers on each port. For example, if you have 4
// ports and 4 High-Speed USB Bus-Instances, then in concurrent mode your
// effective data rate is 1.92 Gbps (480 Mbps * 4). The area overhead of a
// HighSpeed USB Bus-Instance is about 60K gates.
// Choice decides the value of DWC_USB3_NUM_HS_USB_INSTANCES in DWC_usb3_params.v file.
#define DWC_USB3_NUM_HS_USB_INSTANCES 1
// euse-pragma attr DefaultValue = 1
// Name: DWC_USB3_NUM_FSLS_USB_INSTANCES
// Default: 1
// Values: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
// Enabled: 0
//
// Specifies the number of Full/Low-Speed USB Bus-Instances. When the number of
// Full/Low-Speed USB Bus-Instances is equal to the number of root ports, you can do
// concurrent FS transfers on each port. For example, if you have 4 ports and
// 4 Full/Low-Speed USB Bus-Instances, then in concurrent mode your effective
// data rate is 48 Mbps for Full-Speed or 6 Mbps for Low-Speed. The area overhead of a
// Full/Low Speed USB Bus-Instance is about 50K gates.
// Choice decides the value of DWC_USB3_NUM_FSLS_USB_INSTANCES in DWC_usb3_params.v file.
#define DWC_USB3_NUM_FSLS_USB_INSTANCES 1
// euse-pragma attr Enabled {(@DWC_USB3_MODE == 1 || @DWC_USB3_MODE == 2) && @DWC_USB3_HOST_NUM_U2_ROOT_PORTS != 1}
// Name: DWC_USB3_HOST_NUM_CACHE_EP_PER_SS_INSTANCE
// Default: 8
// Values: 1, ..., 32
// Enabled: (DWC_USB3_MODE == 1 || DWC_USB3_MODE == 2)
//
// Specifies the number of SuperSpeed endpoints that can be cached for each
// SuperSpeed USB Bus-Instance. (136 + DWC_USB3_HOST_NUM_CACHE_TRB_PER_SS_EP * 16) bytes of internal RAM
// are allocated for each super speed endpoint cache.
// Choice decides the value of DWC_USB3_HOST_NUM_CACHE_EP_PER_SS_INSTANCE in DWC_usb3_params.v file.
#define DWC_USB3_HOST_NUM_CACHE_EP_PER_SS_INSTANCE 8
// Name: DWC_USB3_HOST_NUM_CACHE_TRB_PER_SS_EP
// Default: 16
// Values: 2, ..., 126
// Enabled: (DWC_USB3_MODE == 1 || DWC_USB3_MODE == 2)
//
// Specifies the number of TRBs that can be cached in the core for each cached
// SuperSpeed endpoint. 16 bytes of internal RAM are allocated for each cached
// TRB. The TRB cache must be large enough to hold TRBs (including Link TRBs)
// for at least one maximum-packet-size packet. For better performance or when system latency
// is large, TRB cache for maximum-burst-size of packets is recommended.
// Choice decides the value of DWC_USB3_HOST_NUM_CACHE_TRB_PER_SS_EP in DWC_usb3_params.v file.
#define DWC_USB3_HOST_NUM_CACHE_TRB_PER_SS_EP 16
// Name: DWC_USB3_HOST_NUM_CACHE_EP_PER_HS_INSTANCE
// Default: 4
// Values: 1, ..., 32
// Enabled: (DWC_USB3_MODE == 1 || DWC_USB3_MODE == 2)
//
// Specifies the number of High-Speed endpoints that can be cached for each
// High-Speed USB Bus-Instance. (120 + DWC_USB3_HOST_NUM_CACHE_TRB_PER_HS_EP * 16) bytes of internal RAM
// are allocated for each high speed endpoint cache.
// If the system bus latency is more than 2.1uS, then at least 20 endpoint cache and the following
// " Number of Cached TRBs for Each Cached High-Speed Endpoint" parameter size can be reduced
// to 10 from 16 for optimized ram size.
// Choice decides the value of DWC_USB3_HOST_NUM_CACHE_EP_PER_HS_INSTANCE in DWC_usb3_params.v file.
#define DWC_USB3_HOST_NUM_CACHE_EP_PER_HS_INSTANCE 2
// Name: DWC_USB3_HOST_NUM_CACHE_TRB_PER_HS_EP
// Default: 16
// Values: 2, ..., 126
// Enabled: (DWC_USB3_MODE == 1 || DWC_USB3_MODE == 2)
//
// Specifies the number of TRBs that can be cached in the core for each cached
// High-Speed endpoint. 16 bytes of internal RAM are allocated for each cached
// TRB. The TRB cache must be large enough to hold TRBs (including Link TRBs)
// for at least one maximum-packet-size packet. For better performance, or when system latency
// is large, TRB cache for maximum-burst-size of packets is recommended.
// Choice decides the value of DWC_USB3_HOST_NUM_CACHE_TRB_PER_HS_EP in DWC_usb3_params.v file.
#define DWC_USB3_HOST_NUM_CACHE_TRB_PER_HS_EP 8
// Name: DWC_USB3_HOST_NUM_CACHE_EP_PER_FSLS_INSTANCE
// Default: 2
// Values: 1, ..., 32
// Enabled: (DWC_USB3_MODE == 1 || DWC_USB3_MODE == 2)
//
// Specifies the number of Full/Low-Speed endpoints that can be cached for
// each Full/Low-Speed USB Bus-Instance. (120 + DWC_USB3_HOST_NUM_CACHE_TRB_PER_FSLS_EP * 16) bytes of
// internal RAM are allocated for each full/low speed endpoint cache.
// Choice decides the value of DWC_USB3_HOST_NUM_CACHE_EP_PER_FSLS_INSTANCE in DWC_usb3_params.v file.
#define DWC_USB3_HOST_NUM_CACHE_EP_PER_FSLS_INSTANCE 2
// Name: DWC_USB3_HOST_NUM_CACHE_TRB_PER_FSLS_EP
// Default: 16
// Values: 2, ..., 126
// Enabled: (DWC_USB3_MODE == 1 || DWC_USB3_MODE == 2)
//
// Specifies the number of TRBs that can be cached in the core for each
// cached Full/Low-Speed endpoint. 16 bytes of internal RAM are allocated for
// each cached TRB. The TRB cache must be large enough to hold TRBs (including Link TRBs)
// for at least one maximum-packet-size packet. For better performance, or when system latency
// is large, TRB cache for more than one packets is recommended.
// Choice decides the value of DWC_USB3_HOST_NUM_CACHE_TRB_PER_FSLS_EP in DWC_usb3_params.v file.
#define DWC_USB3_HOST_NUM_CACHE_TRB_PER_FSLS_EP 8
// Name: DWC_USB3_HOST_NUM_PERIODIC_EP
// Default: 32
// Values: 0, ..., 510
// Enabled: (DWC_USB3_MODE == 1 || DWC_USB3_MODE == 2)
//
// Specifies the number of periodic endpoints for all USB Bus-Instance. 20
// bytes of internal RAM are required for each periodic endpoint.
// Choice decides the value of DWC_USB3_HOST_NUM_PERIODIC_EP_PER_USB_INSTANCE in DWC_usb3_params.v file.
#define DWC_USB3_HOST_NUM_PERIODIC_EP 32
#define DWC_USB3_MPS 1024
// Name: DWC_USB3_NUM_RXF_SS_PKTS
// Default: 3
// Values: 1, ..., 32
// Enabled: (DWC_USB3_MODE == 1 || DWC_USB3_MODE == 2) && DWC_USB3_MBUS_TYPE!=4
//
// Specifies the size of the SuperSpeed RxFIFO in number of 1024-byte packets.
// Each SuperSpeed USB Bus-Instance would require one RxFIFO. For example, if you have 2 SS Bus-Instances and chose
// 3 for this parameter, then 6144 bytes of RAM is allocated for SS RxFIFO.
// Each 1024 bytes provides a 2.1us latency tolerance.
// If the system bus latency is more than 2.1uS, then at least a 5 to 6 packet buffer is recommended.
// For more information, see the databook's "Hardware Integration" chapter.
// Choice decides the value of DWC_USB3_NUM_RXF_SS_PKTS in DWC_usb3_params.v file.
#define DWC_USB3_NUM_RXF_SS_PKTS 6
#define DWC_USB3_HOST_RXFIFO_DEPTH_PER_SS_INSTANCE 768
// euse-pragma attr DefaultValue = ((@DWC_USB3_MDWIDTH >= 64) ? 1 : 0)
// Name: DWC_USB3_BMU_SRCBUF_TYPE
// Default: 0
// Values: 0 1
// Enabled: DWC_USB3_MODE !=3 && DWC_USB3_MBUS_TYPE!=4 && DWC_USB3_MDWIDTH >=
// 64
//
// Specifies alternate implementation of BMU-PTL Source Buffers.
// 0: The FIFOs are 32 bits wide and synthesized into flops.
// 1: The FIFO's are RAM data width; this allows a slower RAM clk for FPGA.
// This applies only when DWC_USB3_MDWIDTH is 64 or 128. The DWC_USB3_BMU_SRCBUF_TYPE and
// the DWC_USB3_BMU_SNKBUF_TYPE be enable or disabled at the same time.
// It is recommended to enable this for fpga testing when DWC_USB3_MDWIDTH is 64 or 128 bits. This allows you
// to run ram_clk at lower than 125MHz for FPGA validation.
// For more information, see the databook's Section B.12.
// Choice decides the value of DWC_USB3_BMU_PTL_DEPTH in DWC_usb3_params.v file.
#define DWC_USB3_BMU_SRCBUF_TYPE 0
// euse-pragma attr DefaultValue = ((@DWC_USB3_MDWIDTH >= 64) ? 1 : 0)
// Name: DWC_USB3_BMU_SNKBUF_TYPE
// Default: 0
// Values: 0 1
// Enabled: DWC_USB3_MODE !=3 && DWC_USB3_MBUS_TYPE!=4 && DWC_USB3_MDWIDTH >=
// 64
//
// Specifies alternate implementation of BMU-PTL Sink Buffers.
// 0: The FIFOs are 32 bits wide and synthesized into flops.
// 1: The FIFO's are RAM data width; this allows a slower RAM clk for FPGA
// This applies only when DWC_USB3_MDWIDTH is 64 or 128. The DWC_USB3_BMU_SRCBUF_TYPE and
// the DWC_USB3_BMU_SNKBUF_TYPE be enable or disabled at the same time.
// It is recommended to enable this for fpga testing when DWC_USB3_MDWIDTH is 64 or 128 bits. This allows you
// to run ram_clk at lower than 125MHz for FPGA validation.
// For more information, see the databook's section B.12.
// Choice decides the value of DWC_USB3_BMU_PTL_DEPTH in DWC_usb3_params.v file.
#define DWC_USB3_BMU_SNKBUF_TYPE 0
// Name: DWC_USB3_BMU_PTL_DEPTH
// Default: 8
// Values: 2 4 8 16
// Enabled: DWC_USB3_MODE !=3 && DWC_USB3_MBUS_TYPE!=4
//
// Specifies the depth of the BMU-PTL Source/Sink Buffers.
// The FIFOs are 32 bits wide and synthesized into flops.
// For more information, see the databook's "Hardware Integration" chapter.
// Choice decides the value of DWC_USB3_BMU_PTL_DEPTH in DWC_usb3_params.v file.
#define DWC_USB3_BMU_PTL_DEPTH 8
// Name: DWC_USB3_NUM_RXF_HS_PKTS
// Default: 2
// Values: 1, ..., 16
// Enabled: (DWC_USB3_MODE == 1 || DWC_USB3_MODE == 2) && DWC_USB3_MBUS_TYPE!=4
//
// Specifies the size of the High-Speed RxFIFO in number of 1024-byte packets.
// Each High-Speed USB Bus-Instance would require one RxFIFO. For example, if you have 2 HS Bus-Instances and chose
// 2 for this parameter, then 4096 bytes of RAM is allocated for HS RxFIFO.
// Since HS ISOC max packet size is 1024, at least 2048 bytes should be allocated for HS RxFIFO.
// Each 1024 bytes provides 20us latency tolerance.
// For more information, see the databook's "Hardware Integration" chapter.
// Choice decides the value of DWC_USB3_NUM_RXF_HS_PKTS in DWC_usb3_params.v file.
#define DWC_USB3_NUM_RXF_HS_PKTS 2
#define DWC_USB3_HOST_RXFIFO_DEPTH_PER_HS_INSTANCE 260
// Name: DWC_USB3_NUM_RXF_FSLS_PKTS
// Default: 1
// Values: 1, ..., 4
// Enabled: (DWC_USB3_MODE == 1 || DWC_USB3_MODE == 2) && DWC_USB3_MBUS_TYPE!=4
//
// Specifies the size of the Full-Speed/Low-Speed RxFIFO in number of 1024-byte packets.
// Each Full-Speed/Low-Speed USB Bus-Instance would require one RxFIFO. For example, if you have 1 HS Bus-Instances and chose
// 1 for this parameter, then 1024 bytes of RAM is allocated for FS/LS RxFIFO.
// Since FS ISOC max payload size is 1023, at least 1024 bytes should be allocated for FS/LS RxFIFO.
// For more information, see the databook's "Hardware Integration" chapter.
// Choice decides the value of DWC_USB3_NUM_RXF_FSLS_PKTS in DWC_usb3_params.v file.
#define DWC_USB3_NUM_RXF_FSLS_PKTS 1
#define DWC_USB3_HOST_RXFIFO_DEPTH_PER_FSLS_INSTANCE 132
// Name: DWC_USB3_NUM_TXF_SS_PKTS
// Default: 4
// Values: 1, ..., 32
// Enabled: (DWC_USB3_MODE == 1 || DWC_USB3_MODE == 2) && DWC_USB3_MBUS_TYPE!=4
//
// Specifies the size of the SuperSpeed TxFIFO in number of 1024-byte packets.
// Each SuperSpeed USB Bus-Instance would require one TxFIFO. For example, if you have 2 SS Bus-Instances and chose
// 4 for this parameter, then 8182 bytes of RAM is allocated for SS TxFIFO.
// In PCIe application, the read access has more latency than write. It is recommended to allocate more TxFIFO than RxFIFO
// which gives better area and performance trade off.
// Each 1024byte provides a 2.1us latency tolerance.
// If the system bus latency is more than 2.1uS, then at least a 5 to 6 packet buffer is recommended.
// For more information, see the databook's "Hardware Integration" chapter.
// Choice decides the value of DWC_USB3_NUM_TXF_SS_PKTS in DWC_usb3_params.v file.
// Specifies the size of the TXFIFO for each host SS USB Bus-Instance.
// For more information, see the databook's "Hardware Integration"
// chapter.
// Choice decides the value of DWC_USB3_HOST_TXFIFO_DEPTH_PER_SS_INSTANCE in DWC_usb3_params.v file.
#define DWC_USB3_NUM_TXF_SS_PKTS 7
#define DWC_USB3_HOST_TXFIFO_DEPTH_PER_SS_INSTANCE 904
// Name: DWC_USB3_NUM_TXF_HS_PKTS
// Default: 2
// Values: 1, ..., 16
// Enabled: (DWC_USB3_MODE == 1 || DWC_USB3_MODE == 2) && DWC_USB3_MBUS_TYPE!=4
//
// Specifies the size of the High-Speed TxFIFO in number of 1024-byte packets.
// Each High-Speed USB Bus-Instance would require one TxFIFO. For example, if you have 2 HS Bus-Instances and chose
// 2 for this parameter, then 4096 bytes of RAM is allocated for HS TxFIFO.
// Since HS ISOC max packet size is 1024, at least 2048 bytes should be allocated for HS TxFIFO.
// Each 1024 bytes provides 20us latency tolerance.
// For more information, see the databook's "Hardware Integration" chapter.
// Choice decides the value of DWC_USB3_NUM_TXF_HS_PKTS in DWC_usb3_params.v file.
#define DWC_USB3_NUM_TXF_HS_PKTS 2
#define DWC_USB3_HOST_TXFIFO_DEPTH_PER_HS_INSTANCE 259
// Name: DWC_USB3_NUM_TXF_FSLS_PKTS
// Default: 1
// Values: 1, ..., 4
// Enabled: (DWC_USB3_MODE == 1 || DWC_USB3_MODE == 2) && DWC_USB3_MBUS_TYPE!=4
//
// Specifies the size of the Full-Speed/Low-Speed TxFIFO in number of 1024-byte packets.
// Each Full-Speed/Low-Speed USB Bus-Instance would require one TxFIFO. For example, if you have 1 HS Bus-Instances and chose
// 1 for this parameter, then 1024 bytes of RAM is allocated for FS/LS TxFIFO.
// Since FS ISOC max payload size is 1023, at least 1024 bytes should be allocated for FS/LS TxFIFO.
// For more information, see the databook's "Hardware Integration" chapter.
// Choice decides the value of DWC_USB3_NUM_TXF_FSLS_PKTS in DWC_usb3_params.v file.
#define DWC_USB3_NUM_TXF_FSLS_PKTS 1
#define DWC_USB3_HOST_TXFIFO_DEPTH_PER_FSLS_INSTANCE 130
// Name: DWC_USB3_HOST_RXMSG_DEPTH_PER_SS_INSTANCE
// Default: 16
// Values: 16 32
// Enabled: (DWC_USB3_MODE == 1 || DWC_USB3_MODE == 2) && DWC_USB3_MBUS_TYPE!=4
//
// Specifies the size of the BMU Protocol Status Queue for each host SS USB Bus-Instance.
// They are actually the PTL Message Sink Buffers.
// The FIFOs are 64 bits wide and synthesized into flops.
// For more information, see the databook's "Hardware Integration"
// chapter.
// Choice decides the value of DWC_USB3_HOST_RXMSG_DEPTH_PER_SS_INSTANCE in DWC_usb3_params.v file.
#define DWC_USB3_HOST_RXMSG_DEPTH_PER_SS_INSTANCE 16
// Name: DWC_USB3_LEGACY_SUPT
// Default: No
// Values: No (0), Yes (1)
// Enabled: (DWC_USB3_MODE == 1 || DWC_USB3_MODE == 2)
//
// Specifies whether to enable Legacy Keyboard/Mice BIOS support (IRQ and Address 60/64 I/O access).
// This is different from the xHCI's SMI Legacy feature specified in the section 7.1 of xHCI specification.
// The xHCI's SMI Legacy feature is always enabled.
// Likely just xHCI's SMI Legacy feature is enough for most applications and this Legacy Keyboard/Mice BIOS support
// is normally not needed. This implements the features required in:
// "Universal Serial Bus PC Legacy Compatibility Specification 0.9 Draft Revision May 30, 1996".
#define DWC_USB3_LEGACY_SUPT 0
// Name: DWC_USB3_GSBUSCFG0_INIT
// Default: 0x1
// Values: 0x0, ..., 0xffffffff
// Enabled: (DWC_USB3_MODE == 1 || DWC_USB3_MODE == 2) && DWC_USB3_MBUS_TYPE!=4
//
// Specifies the Global System Bus Configuration Register-0's (GSBUSCFG0)
// power-on initialization value. The GSBUSCFG0 register defines the system bus configuration.
// The bits other than defined here must be 0. The different fields are:
// bit[31:28] AHB-prot/AXI-cache/OCP-ReqInfo for Data Read
// bit[27:24] AHB-prot/AXI-cache/OCP-ReqInfo for Descriptor Read
// bit[23:20] AHB-prot/AXI-cache/OCP-ReqInfo for Data Write
// bit[19:16] AHB-prot/AXI-cache/OCP-ReqInfo for Descriptor Write
// bit[15] 1'b1 - Read back the Last word of the descriptor write before setting the
// XferComplete interrupt
// bit[14] 1'b1 - For AXI/OCP interface, force only one request to be sent on the bus at a time
// bit[12] 1'b1 - Enable BUS-GM Store-and-Forward mode
// bit[11] 1'b1 - Data Access is Big Endian
// bit[10] 1'b1 - Descriptor Access is Big Endian
// bit[9] 1'b1 - Data Write is Posted
// bit[8] 1'b1 - Descriptor Write is Posted
// bit[7] 1'b1 - Enable INCR256 Burst Type
// bit[6] 1'b1 - Enable INCR128 Burst Type
// bit[5] 1'b1 - Enable INCR64 Burst Type
// bit[4] 1'b1 - Enable INCR32 Burst Type
// bit[3] 1'b1 - Enable INCR16 Burst Type
// bit[2] 1'b1 - Enable INCR8 Burst Type
// bit[1] 1'b1 - Enable INCR4 Burst Type
// bit[0] 1'b1 - Enable Undefined Length INCR Burst Type
// If you use a standard driver, such as the xHCI driver from Microsoft, you must initialize
// this register to meet your system requirements before synthesizing the core. If you are
// developing your own xHCI host driver, then this register must be configured by your driver.
// For more information, see the "Control and Status Registers" chapter in the Databook.
// Choice decides the value of DWC_USB3_GSBUSCFG0_INIT in DWC_usb3_params.v file.
#define DWC_USB3_GSBUSCFG0_INIT 32'h1
// Name: DWC_USB3_GSBUSCFG1_INIT
// Default: 0x300
// Values: 0x0, ..., 0xffffffff
// Enabled: (DWC_USB3_MODE == 1 || DWC_USB3_MODE == 2) && DWC_USB3_MBUS_TYPE!=4
//
// Specifies the Global System Bus Configuration Register-1's (GSBUSCFG1)
// power-on initialization value. The GSBUSCFG1 register defines the system bus configuration.
// The bits other than defined here must be 0. The different fields are:
// bit [7:4] OCP Address Space for Data
// bit [3:0] OCP Address Space for Descriptor
// If you use a standard driver, such as the xHCI driver from Microsoft, you must initialize
// this register to meet your system requirements before synthesizing the core. If you are
// developing your own xHCI host driver, then this register must be configured by your driver.
// For more information, see the "Control and Status Registers" chapter in the Databook.
// Choice decides the value of DWC_USB3_GSBUSCFG1_INIT in DWC_usb3_params.v file.
#define DWC_USB3_GSBUSCFG1_INIT 32'h300
// Name: DWC_USB3_GTXTHRCFG_INIT
// Default: 0x0
// Values: 0x0, ..., 0xffffffff
// Enabled: (DWC_USB3_MODE == 1 || DWC_USB3_MODE == 2) && DWC_USB3_MBUS_TYPE!=4
//
// Specifies the Global Transmit Threshold Configuration Register (GTXTHRCFG)
// power-on initialization value. This register contains threshold enable bits
// and threshold count fields. To enable USB or DMA byte or packet thresholding
// upon power-on, then you need to update this value.
// For more information, see the "Control and Status Registers" chapter in the Databook.
// Choice decides the value of DWC_USB3_GTXTHRCFG_INIT in DWC_usb3_params.v file.
#define DWC_USB3_GTXTHRCFG_INIT 32'h0
//`efine DWC_USB3_GTXTHRCFG_INIT ((2 << 24) + ((`DWC_USB3_MPS >> (`DWC_USB3_MADDR_LO+1)) << 16)) + (8 << 0)
// Name: DWC_USB3_GRXTHRCFG_INIT
// Default: 0x0
// Values: 0x0, ..., 0xffffffff
// Enabled: (DWC_USB3_MODE == 1 || DWC_USB3_MODE == 2) && DWC_USB3_MBUS_TYPE!=4
//
// Specifies the Global Receive Threshold Configuration Register (GRXTHRCFG)
// power-on initialization value. This register contains threshold enable bits
// and threshold count fields. To enable USB or DMA byte or packet thresholding
// upon power-on, then you need to update this value.
// For more information, see the "Control and Status Registers" chapter in the Databook.
// Choice decides the value of DWC_USB3_GRXTHRCFG_INIT in DWC_usb3_params.v file.
#define DWC_USB3_GRXTHRCFG_INIT 32'h0
//`efine DWC_USB3_GRXTHRCFG_INIT (2 << 24) + (8 << 0)
// Name: DWC_USB3_GCTL_INIT
// Default: 0x30c02000
// Values: 0x0, ..., 0xffffffff
// Enabled: (DWC_USB3_MODE == 1 || DWC_USB3_MODE == 2) && DWC_USB3_MBUS_TYPE!=4
//
// Specifies the Global Control Register-1's (GCTL) power-on initialization value.
// bit [31:19] - Suspend Clock Scaledown value (suspend_clk_period/mac3_clk_period)
// bit [18:17] - Reserved
// bit [16] - Attempt 3 SS connection
// bit [15:14] - SOF Scaledown Value
// bit [13:12] Port Capability Direction
// 2'b01 - for Host configurations
// 2'b10 - for Device configurations
// 2'b11 - for OTG configurations
// bit [7:6] RAM Clock Select
// 2'b00: bus clock
// 2'b01: pipe clock
// 2'b10: pipe/2 clock
// 2'b11: mac2 clock
// bit [5:4] Scaledown Mode
// bit [3] 1'b0 - Enable Scrambling
// 1'b1 - Disable Scrambling
// bit [2] 1'b0 - Clamp the interface signals of SS modules.
// 1'b1 - No clamp the interface signals of SS modules.
// bit [1] 1'b0 - Clamp the interface signals of the HS/FS/LS modules
// 1'b1 - No clamp the interface signals of the HS/FS/LS modules
// bit [0] 1'b0 - Enable internal clock gating.
// 1'b1 - Disable internal clock gating.
// If you use a standard driver, such as the xHCI driver from Microsoft, you must initialize
// this register to meet your system requirements before synthesizing the core. If you are
// developing your own xHCI host driver, then this register must be configured by your driver.
// For more information, see the "Control and Status Registers" chapter in the Databook.
// Choice decides the value of DWC_USB3_GCTL_INIT in DWC_usb3_params.v file.
#define DWC_USB3_GCTL_INIT 32'h30c02000
// Name: DWC_USB3_HOST_EN_EXTERNAL_CAP
// Default: No
// Values: No (0), Yes (1)
// Enabled: (DWC_USB3_MODE == 1 || DWC_USB3_MODE == 2) && DWC_USB3_MBUS_TYPE!=4
//
// Enables extended capabilities to be implemented outside the core.
// If enabled, a read to the first DWORD of the last internal extended capability (currently the "xHCI
// Supported Protocol Capability" for USB 3.0) will return a value of 4 in the "Next Capability Pointer" field. This
// will indicate to software that there is another capability 4 DWORDs after this capability (for example, at address
// N+16 where N is the address of this DWORD).
// If disabled, a read to the same DWORD will return 0 in the "Next Capability Pointer" field. This indicates there are
// no more capabilities.
// If enabled, an external address decoder that snoops the xHC slave interface will need to be implemented. If it sees
// an access to N+16 or greater, the slave access is re-routed to a piece of hardware which returns the external
// capability pointer register of the new capability and also handles reads/writes to this new capability and the
// side-effects.
#define DWC_USB3_HOST_EN_EXTERNAL_CAP 0
/********** Hub Specific Parameters ***********/
// Name: DWC_USB3_HUB_NUM_PORTS
// Default: 1
// Values: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
// Enabled: DWC_USB3_MODE == 3
//
// Specifies the number of down-stream Hub ports. This includes both
// USB 3.0 and USB 2.0 ports. The area of a USB 3.0 port is about
// xKGates, and the area of an USB 2.0 port is yKGates.
// Choice decides the value of DWC_USB3_HUB_NUM_PORTS in DWC_usb3_params.v file.
#define DWC_USB3_HUB_NUM_PORTS 1
// Name: DWC_USB3_HUB_NUM_U3_PORTS
// Default: 4
// Values: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
// Enabled: DWC_USB3_MODE == 3
//
// Specifies the number of USB 3.0 capable down-stream Hub ports.
// Choice decides the value of DWC_USB3_HUB_NUM_U3_PORTS in DWC_usb3_params.v file.
#define DWC_USB3_HUB_NUM_U3_PORTS 4
// Name: DWC_USB3_EN_HUB_SFLASH_SUPT
// Default: No
// Values: No (0), Yes (1)
// Enabled: DWC_USB3_MODE == 3
//
// Specifies whether Xilinx Serial Flash-RAM/PROM support is required to
// load Hub Descriptors.
// The memory requirements for the Hub descriptor is 256bytes (2048bits).
// Refer to Xilinx website for a Serial Flash/PROM that meets your
// requirements. Most Xilinx Serial Flash/PROM are much
// larger in size than the required 2048bits.
// Choice decides the value of DWC_USB3_EN_HUB_SFLASH_SUPT in DWC_usb3_params.v file.
#define DWC_USB3_EN_HUB_SFLASH_SUPT 0
// Name: DWC_USB3_HUB_SFLASH_DIVFACTOR
// Default: 16
// Values: 4, ..., 128
// Enabled: DWC_USB3_MODE == 3
//
// Specifies the MAC clock(125MHz) to Serial Flash/PROM clock divide factor.
// The typical Xilinx Serial Flash/PROM memory operating frequency range
// is 2.5 to 20 MHz. Refer to Xilinx website for a Serial Flash/PROM that
// meets your requirements.
// Choice decides the value of DWC_USB3_HUB_SFLASH_DIVFACTOR in DWC_usb3_params.v file.
#define DWC_USB3_HUB_SFLASH_DIVFACTOR 16
// Name: DWC_USB3_JTAG_INTERFACE
// Default: No
// Values: No (0), Yes (1)
// Enabled: DWC_USB3_MODE ==3
//
// Specifies whether JTAG debug interface is enabled.
// Choice decides the value of DWC_USB3_JTAG_INTERFACE in DWC_usb3_params.v file.
#define DWC_USB3_JTAG_INTERFACE 0
// Name: DWC_USB3_HUB_NUM_RXHEADERS
// Default: 4
// Values: 4 8
// Enabled: DWC_USB3_MODE ==3
//
// Specifies the number of Headers in each Rx Header Buffers
// Choice decides the value of DWC_USB3_HUB_NUM_RXHEADERS in DWC_usb3_params.v file.
#define DWC_USB3_HUB_NUM_RXHEADERS 4
// Name: DWC_USB3_HUB_NUM_TXHEADERS
// Default: 4
// Values: 4 8
// Enabled: DWC_USB3_MODE ==3
//
// Specifies the number of Headers in each Tx Header Buffers
// Choice decides the value of DWC_USB3_HUB_NUM_TXHEADERS in DWC_usb3_params.v file.
#define DWC_USB3_HUB_NUM_TXHEADERS 4
// Name: DWC_USB3_HUB_NUM_UPSTRMRX_DATAPKTS
// Default: 1
// Values: 1 2 3 4 5 6 7 8
// Enabled: DWC_USB3_MODE ==3
//
// Specifies the number of packets in Upstream Rx Data Packet Buffer. Each packet
// requires 1024 bytes of space.
// Choice decides the value of DWC_USB3_HUB_NUM_UPSTRMRX_DATAPKTS in DWC_usb3_params.v file.
#define DWC_USB3_HUB_NUM_UPSTRMRX_DATAPKTS 1
// Name: DWC_USB3_HUB_NUM_UPSTRMTX_DATAPKTS
// Default: 1
// Values: 1 2 3 4 5 6 7 8
// Enabled: DWC_USB3_MODE ==3
//
// Specifies the number Packets in Upstream Tx Data Packet Buffer. Each packet needs 1024 bytes of space.
// Choice decides the value of DWC_USB3_HUB_NUM_UPSTRMTX_DATAPKTS in DWC_usb3_params.v file.
#define DWC_USB3_HUB_NUM_UPSTRMTX_DATAPKTS 1
// Name: DWC_USB3_HUB_DESC_DEPTH
// Default: 64
// Values: 64 128 256
// Enabled: DWC_USB3_MODE ==3
//
// Specifies the depth of the Descriptor ROM or Serial-Flash in 32-bit Dwords.
// For example a value of 64 represents a 256byte (64 * 4) ROM.
// Choice decides the value of DWC_USB3_HUB_DESC_DEPTH in DWC_usb3_params.v file.
#define DWC_USB3_HUB_DESC_DEPTH 64
// Name: DWC_USB3_HUB_DESC_SS_START_DEPTH
// Default: 0
// Values: 0 64 128
// Enabled: DWC_USB3_MODE ==3
//
// Specifies the starting depth of the Descriptor ROM or Serial-Flash in 32-bit Dwords used for DWC_usb3 core.
// If you share the same ROM or Serial-Flash between USB2.0 hub and USB3.0 SS Hub, the lower portion
// of the ROM or Serial-Flash will have data for the USB2.0 Hub and the upper part will have data for the SS Hub.
// The DWC_usb3 controller will read the entire RAM or Serial-Flash but will use only the data from this depth.
// The DWC_usb3 controller provides the USB2.0 descriptors to the USB2.0 controller through the "hub_usb2_desc" interface.
#define DWC_USB3_HUB_DESC_SS_START_DEPTH 0
#define DWC_USB3_NUM_ROOT_PORTS 1
#define DWC_USB3_NUM_U2_ROOT_PORTS 1
#define DWC_USB3_NUM_U3_ROOT_PORTS 1
#define DWC_USB3_EN_HUB_SFLASH_SUPT_SIM 0
// Name: DWC_USB3_HUB_ENABLE_SCRAMBLING
// Default: Disable
// Values: Disable (0), Enable (1)
// Enabled: DWC_USB3_MODE ==3
//
// This option only affects the Simulation.
// This controls if scrambling is enabled/disabled when running hub tests in coreConsultant.
// This directly controls the hub_enable_scrambling input pin of the Hub.
// 0 - A value of 0 will be assigned to "hub_enable_scrambling" input to disable scrambling on all ports.
// 1 - A value of 1 will be assigned to "hub_enable_scrambling" input to enable scrambling on all ports.
#define DWC_USB3_HUB_ENABLE_SCRAMBLING 0
/********** Advanced Parameters ***********/
// Name: DWC_USB3_BMU_LSP_DEPTH
// Default: 4
// Values: 1 4 8
// Enabled: DWC_USB3_MODE !=3 && DWC_USB3_MBUS_TYPE!=4
//
// Specifies the depth of the BMU-LSP Status Buffer.
// The FIFO is 26 bits wide and synthesized into flops.
// For more information, see the databook's "Hardware Integration" chapter.
// Choice decides the value of DWC_USB3_BMU_LSP_DEPTH in DWC_usb3_params.v file.
#define DWC_USB3_BMU_LSP_DEPTH 4
// Name: DWC_USB3_WBUFF
// Default: 4
// Values: 3 4 5 6 7 8
// Enabled: DWC_USB3_MODE !=3 && DWC_USB3_MBUS_TYPE!=4
//
// Specifies the depth of the AHB-GM Buffers.
// The FIFOs are 32/64/128 bits wide, matching the bus master
// data width, and synthesized into flops.
// For more information, see the databook's "Hardware Integration" chapter in the Databook.
// Choice decides the value of DWC_USB3_WBUFF in DWC_usb3_params.v file.
#define DWC_USB3_WBUFF 4
#define DWC_USB3_RBUFF 2
#define DWC_USB3_COMBO 0
#define DWC_USB3_MAX_RREQ 16
#define DWC_USB3_MAX_WREQ 16
#define DWC_USB3_WRESP_BUFF 4
#define DWC_USB3_WREQ_BUFF 4
#define DWC_USB3_RREQ_BUFF 4
#define DWC_USB3_MPS_TXF0 512
#define DWC_USB3_NUM_RXF_PKTS 3
#define DWC_USB3_NUM_TXF_PKTS 3
#define DWC_USB3_TXDMA_CMD_FIFO_DEPTH 2
#define DWC_USB3_TXDMA_CMD_MSEG_FIFO_DEPTH 1
#define DWC_USB3_RXDMA_CMD_FIFO_DEPTH 1
#define DWC_USB3_RXDMA_CMD_MSEG_FIFO_DEPTH 1
#define DWC_USB3_DFDMA_CMD_FIFO_DEPTH 2
#define DWC_USB3_DWDMA_CMD_FIFO_DEPTH 2
// Name: DWC_USB3_BMU_BUSGM_DEPTH
// Default: 8
// Values: 4 8
// Enabled: DWC_USB3_MODE !=3 && DWC_USB3_MBUS_TYPE!=4
//
// Specifies the depth of the BMU-BUSGM Source/Sink Buffers.
// The FIFOs are 32/64/128 bits wide, matching the bus master
// data width, and synthesized into flops. The "AHB Master Source/Sink Buffer" and
// "BMU-BUSGM Source/Sink Buffers" combined together should be large enough to
// to meet your bus burst without waitstates. This provides rate-matching between
// bus clock and ram clock domains. The area of 16, 32-bit register is around 5KGates.
// For more information, see the databook's "Hardware Integration" chapter.
// Choice decides the value of DWC_USB3_BMU_BUSGM_DEPTH in DWC_usb3_params.v file.
#define DWC_USB3_BMU_BUSGM_DEPTH 8
// Name: DWC_USB3_RXQ_FIFO_DEPTH
// Default: 16
// Values: 16 32 64
// Enabled: DWC_USB3_MODE ==0 && DWC_USB3_MBUS_TYPE!=4
//
// Specifies the size of the BMU Rx Request Queue.
// The specified depth is allocated in the Data FIFO RAM
// 32/64/128 bits wide) and defines the number of Rx commands
// the Scheduler can queue to the BMU. A typical Rx command
// comprises 2 to 4 32-bit DWORDs.
// After power-up, software can dynamically change the memory
// allocation among the Rx Data FIFO, Tx Data FIFO, and
// Rx Request Queue.
// For more information, see the databook's "Hardware Integration" chapter.
// Choice decides the value of DWC_USB3_RXQ_FIFO_DEPTH in DWC_usb3_params.v file.
#define DWC_USB3_RXQ_FIFO_DEPTH 16
//`efine DWC_USB3_RXQ_FIFO_DEPTH ((`DWC_USB3_NUM_RXF_PKTS+2) * `DWC_USB3_RXDMA_CMD_FIFO_DEPTH)
// Name: DWC_USB3_HOST_RXQ_DEPTH_PER_SS_INSTANCE
// Default: 62
// Values: 2, ..., 1024
// Enabled: DWC_USB3_MODE ==1
//
// Specifies the size of the BMU Rx Request Queue for each host SS USB Bus-Instance.
// The specified depth is allocated in the Data FIFO RAM
// 32/64/128 bits wide) and defines the number of Rx commands
// the Scheduler can queue to the BMU. A typical Rx command
// comprises 2 or 4 32-bit DWORDs.
// After power-up, software can dynamically change the memory
// allocation among the Rx Data FIFO, Tx Data FIFO, and
// Rx Request Queue.
// For more information, see the databook's "Hardware Integration" chapter.
// Choice decides the value of DWC_USB3_HOST_RXQ_DEPTH_PER_SS_INSTANCE in DWC_usb3_params.v file.
#define DWC_USB3_HOST_RXQ_DEPTH_PER_SS_INSTANCE 62
// Name: DWC_USB3_HOST_RXQ_DEPTH_PER_HS_INSTANCE
// Default: 20
// Values: 2, ..., 1024
// Enabled: DWC_USB3_MODE ==1
//
// Specifies the size of the BMU Rx Request Queue for each host HS USB Bus-Instance.
// The specified depth is allocated in the Data FIFO RAM
// 32/64/128 bits wide) and defines the number of Rx commands
// the Scheduler can queue to the BMU. A typical Rx command
// comprises 2 or 4 32-bit DWORDs.
// After power-up, software can dynamically change the memory
// allocation among the Rx Data FIFO, Tx Data FIFO, and
// Rx Request Queue.
// For more information, see the databook's "Hardware Integration" chapter.
// Choice decides the value of DWC_USB3_HOST_RXQ_DEPTH_PER_HS_INSTANCE in DWC_usb3_params.v file.
#define DWC_USB3_HOST_RXQ_DEPTH_PER_HS_INSTANCE 20
// Name: DWC_USB3_HOST_RXQ_DEPTH_PER_FSLS_INSTANCE
// Default: 16
// Values: 2, ..., 1024
// Enabled: DWC_USB3_MODE ==1
//
// Specifies the size of the BMU Rx Request Queue for each host FS/LS USB Bus-Instance.
// The specified depth is allocated in the Data FIFO RAM
// 32/64/128 bits wide) and defines the number of Rx commands
// the Scheduler can queue to the BMU. A typical Rx command
// comprises 2 or 4 32-bit DWORDs.
// After power-up, software can dynamically change the memory
// allocation among the Rx Data FIFO, Tx Data FIFO, and
// Rx Request Queue.
// For more information, see the databook's "Hardware Integration" chapter.
// Choice decides the value of DWC_USB3_HOST_RXQ_DEPTH_PER_FSLS_INSTANCE in DWC_usb3_params.v file.
#define DWC_USB3_HOST_RXQ_DEPTH_PER_FSLS_INSTANCE 16
// Name: DWC_USB3_TXQ_FIFO_DEPTH
// Default: 16
// Values: 16 32
// Enabled: DWC_USB3_MODE ==0 && DWC_USB3_MBUS_TYPE!=4
//
// Specifies the size of the BMU Tx Request Queue.
// The specified depth is allocated in the Data FIFO RAM
// (32/64/128 bits wide) and defines the number of Tx commands
// the Scheduler can queue to the BMU. A typical Tx command
// comprises 3 or 5 32-bit DWORDs.
// For more information, see the databook's "Hardware Integration" chapter.
// Choice decides the value of DWC_USB3_TXQ_FIFO_DEPTH in DWC_usb3_params.v file.
#define DWC_USB3_TXQ_FIFO_DEPTH 16
//#define DWC_USB3_TXQ_FIFO_DEPTH ((`DWC_USB3_NUM_TXF_PKTS+2) * `DWC_USB3_TXDMA_CMD_FIFO_DEPTH)
// Name: DWC_USB3_HOST_TXQ_DEPTH_PER_SS_INSTANCE
// Default: 141
// Values: 2, ..., 1024
// Enabled: DWC_USB3_MODE ==1
//
// Specifies the size of the BMU Tx Request Queue for each host SS USB Bus-Instance.
// The specified depth is allocated in the Data FIFO RAM
// (32/64/128 bits wide) and defines the number of Tx commands
// the Scheduler can queue to the BMU. A typical Tx command
// comprises 3 or 5 32-bit DWORDs.
// For more information, see the databook's "Hardware Integration" chapter.
// Choice decides the value of DWC_USB3_HOST_TXQ_DEPTH_PER_SS_INSTANCE in DWC_usb3_params.v file.
#define DWC_USB3_HOST_TXQ_DEPTH_PER_SS_INSTANCE 141
// Name: DWC_USB3_HOST_TXQ_DEPTH_PER_HS_INSTANCE
// Default: 26
// Values: 2, ..., 1024
// Enabled: DWC_USB3_MODE ==1
//
// Specifies the size of the BMU Tx Request Queue for each host HS USB Bus-Instance.
// The specified depth is allocated in the Data FIFO RAM
// (32/64/128 bits wide) and defines the number of Tx commands
// the Scheduler can queue to the BMU. A typical Tx command
// comprises 3 or 5 32-bit DWORDs.
// For more information, see the databook's "Hardware Integration" chapter.
// Choice decides the value of DWC_USB3_HOST_TXQ_DEPTH_PER_HS_INSTANCE in DWC_usb3_params.v file.
#define DWC_USB3_HOST_TXQ_DEPTH_PER_HS_INSTANCE 26
// Name: DWC_USB3_HOST_TXQ_DEPTH_PER_FSLS_INSTANCE
// Default: 18
// Values: 2, ..., 1024
// Enabled: DWC_USB3_MODE ==1
//
// Specifies the size of the BMU Tx Request Queue for each host FS/LS USB Bus-Instance.
// The specified depth is allocated in the Data FIFO RAM
// (32/64/128 bits wide) and defines the number of Tx commands
// the Scheduler can queue to the BMU. A typical Tx command
// comprises 3 or 5 32-bit DWORDs.
// For more information, see the databook's "Hardware Integration" chapter.
// Choice decides the value of DWC_USB3_HOST_TXQ_DEPTH_PER_SS_INSTANCE in DWC_usb3_params.v file.
#define DWC_USB3_HOST_TXQ_DEPTH_PER_FSLS_INSTANCE 18
// Name: DWC_USB3_TXPFL_FIFO_DEPTH
// Default: 1
// Values: 1
// Enabled: DWC_USB3_MODE ==1
//
// Specifies the size of the BMU Tx Packet Flush Queue.
// The specified depth is allocated in flop-based FIFO
// (1 bit wide) and defines the number of Tx Packet Flush commands
// the Scheduler can queue to the BMU.
// For more information, see the databook's "Hardware Integration" chapter.
// Choice decides the value of DWC_USB3_TXPFL_FIFO_DEPTH in DWC_usb3_params.v file.
#define DWC_USB3_TXPFL_FIFO_DEPTH 1
// Name: DWC_USB3_DWQ_FIFO_DEPTH
// Default: 32
// Values: 4, ..., 1024
// Enabled: DWC_USB3_MODE !=3 && DWC_USB3_MBUS_TYPE!=4
//
// Specifies the size of the BMU Descriptor Write Queue.
// The specified depth is allocated in the Data FIFO RAM
// (32/64/128 bits wide) and defines the number of descriptor write
// commands the Scheduler can queue to the BMU. A typical descriptor
// write command comprises five 32-bit DWORDs.
// For more information, see the databook's "Hardware Integration" chapter.
// Choice decides the value of DWC_USB3_DWQ_FIFO_DEPTH in DWC_usb3_params.v file.
#define DWC_USB3_DWQ_FIFO_DEPTH 32
//#define DWC_USB3_DWQ_FIFO_DEPTH (`DWC_USB3_DWDMA_CMD_FIFO_DEPTH * (2 + `DWC_USB3_NUM_TXFIFO + (`DWC_USB3_NUM_RXF_PKTS * `DWC_USB3_NUM_RXFIFO)))
// Name: DWC_USB3_DFQ_FIFO_DEPTH
// Default: 16
// Values: 4, ..., 1024
// Enabled: DWC_USB3_MODE !=3 && DWC_USB3_MBUS_TYPE!=4
//
// Specifies the size of the BMU Descriptor Fetch Request Queue.
// The specified depth is allocated in the Data FIFO RAM
// (32/64/128 bits wide) and defines the number of descriptor fetch
// commands the Scheduler can queue to the BMU. A typical descriptor
// fetch command comprises three 32-bit DWORDs.
// For more information, see the databook's "Hardware Integration" chapter.
// Choice decides the value of DWC_USB3_DFQ_FIFO_DEPTH in DWC_usb3_params.v file.
#define DWC_USB3_DFQ_FIFO_DEPTH 16
//#define DWC_USB3_DFQ_FIFO_DEPTH (`DWC_USB3_DFDMA_CMD_FIFO_DEPTH * (`DWC_USB3_NUM_TXFIFO + (`DWC_USB3_NUM_RXF_PKTS * `DWC_USB3_NUM_RXFIFO)))
// Name: DWC_USB3_PSQ_FIFO_DEPTH
// Default: 32
// Values: 16 32
// Enabled: DWC_USB3_MODE !=3 && DWC_USB3_MBUS_TYPE!=4
//
// Specifies the size of the BMU Protocol Status Queue.
// The specified depth is allocated in the Data FIFO RAM
// (32/64/128 bits wide) and defines the number of header and status
// dwords the PTL can queue to the LSP. For each RX packet, the PTL
// queues a total of two entries: one header and one status. For each
// TX packet, the PTL queues one entry for the status.
// For more information, see the databook's "Hardware Integration" chapter.
// Choice decides the value of DWC_USB3_PSQ_FIFO_DEPTH in DWC_usb3_params.v file.
#define DWC_USB3_PSQ_FIFO_DEPTH 32
// Name: DWC_USB3_DEV_RXMSG_FIFO_DEPTH
// Default: 4
// Values: 4
// Enabled: DWC_USB3_MODE !=3 && DWC_USB3_MBUS_TYPE!=4
//
// Specifies the size of the Device-mode BMU RX Message Buffer.
// It is actually the PTL Message Sink Buffers.
// The FIFO is 32 bits wide and synthesized into flops.
// Choice decides the value of DWC_USB3_DEV_RXMSG_FIFO_DEPTH in DWC_usb3_params.v file.
#define DWC_USB3_DEV_RXMSG_FIFO_DEPTH 4
// MAC requires RXFIFO space of 1KB packet + three 8-byte setup packets + 16 byte synchronization delay
#define DWC_USB3_DEV_RXFIFO_OK_SPACE_MARGIN 10
#define DWC_USB3_DEV_RXFIFO_OK_SPACE 266
#define DWC_USB3_HOST_RXFIFO_OK_SPACE 256
// Name: DWC_USB3_HOST_RXMSG_DEPTH_PER_HS_INSTANCE
// Default: 8
// Values: 8
// Enabled: (DWC_USB3_MODE == 1 || DWC_USB3_MODE == 2) && DWC_USB3_MBUS_TYPE!=4
//
// Specifies the size of the BMU Protocol Status Queue for each host HS USB Bus-Instance.
// They are actually the PTL Message Sink Buffers.
// The FIFOs are 64 bits wide and synthesized into flops.
// For more information, see the databook's "Hardware Integration"
// chapter.
// Choice decides the value of DWC_USB3_HOST_RXMSG_DEPTH_PER_HS_INSTANCE in DWC_usb3_params.v file.
#define DWC_USB3_HOST_RXMSG_DEPTH_PER_HS_INSTANCE 8
// Name: DWC_USB3_HOST_RXMSG_DEPTH_PER_FSLS_INSTANCE
// Default: 2
// Values: 2
// Enabled: (DWC_USB3_MODE == 1 || DWC_USB3_MODE == 2) && DWC_USB3_MBUS_TYPE!=4
//
// Specifies the size of the BMU Protocol Status Queue for each host FS/LS USB Bus-Instance.
// They are actually the PTL Message Sink Buffers.
// The FIFOs are 64 bits wide and synthesized into flops.
// For more information, see the databook's "Hardware Integration"
// chapter.
// Choice decides the value of DWC_USB3_HOST_RXMSG_DEPTH_PER_FSLS_INSTANCE in DWC_usb3_params.v file.
#define DWC_USB3_HOST_RXMSG_DEPTH_PER_FSLS_INSTANCE 2
// Name: DWC_USB3_PIU_RING_BUFFER_DEPTH_P2
// Default: 4
// Values: 3 4 5
// Enabled: DWC_USB3_NUM_U3_ROOT_PORTS!=1
//
// Specifies the depth of the PIPE3 PIU Tx and Rx ring buffers.
// The ring buffers are 32 bits wide and synthesized into flops.
// For more information, see the databook's "Hardware Integration" chapter.
// Choice decides the value of DWC_USB3_PIU_RING_DEPTH_P2 in DWC_usb3_params.v file.
// Ring buffer depth will be 2**value of the parameter
#define DWC_USB3_PIU_RING_BUFFER_DEPTH_P2 4
//------------------------------------------------------------------------------------------
// Macros
//------------------------------------------------------------------------------------------
// Extra parentheses ensure correct order of operations for complex expressions
// Returns minimum/maximum value
#define DWC_USB3_MIN_CB(a, b) (((a) < (b)) ? (a): (b))
#define DWC_USB3_MAX_CB(a, b) (((a) > (b)) ? (a): (b))
#define DWC_USB3_LOG2(a) (((a)<=2) ? 1: ((a)<=4) ? 2: ((a)<=8) ? 3: ((a)<=16) ? 4: ((a)<=32) ? 5: ((a)<=64) ? 6: ((a)<=128) ? 7: ((a)<=256) ? 8: ((a)<=512) ? 9: ((a)<=1024) ? 10: ((a)<=2048) ? 11: ((a)<=4096) ? 12: ((a)<=8192) ? 13: ((a)<=16384) ? 14: ((a)<=32768) ? 15: ((a)<=65536) ? 16: ((a)<=131072) ? 17: ((a)<=262144 ? 18: ((a)<=524288) ? 19: 20))
#define DWC_USB3_LOG2P1(a) `DWC_USB3_LOG2(a+1)
#define DWC_USB3_ALIGN_MDW(a) ((((a) + 15) >> 4) << 4)
//#define DWC_USB3_ALIGN_MDW(a) ((((a) + (`DWC_USB3_MDWIDTH-8)/8) >> `DWC_USB3_MDWIDTH_BYTESHFT) << `DWC_USB3_MDWIDTH_BYTESHFT)
//------------------------------------------------------------------------------------------
// Derived Params
//------------------------------------------------------------------------------------------
#define DWC_USB3_RIQ_FIFO_DEPTH 34
#define DWC_USB3_HOST_RIQ_DEPTH_PER_SS_INSTANCE 64
#define DWC_USB3_HOST_RIQ_DEPTH_PER_HS_INSTANCE 22
#define DWC_USB3_HOST_RIQ_DEPTH_PER_FSLS_INSTANCE 34
#define DWC_USB3_DEV_RXMSG_FIFO_DEPTH_LOG2P1 3
#define DWC_USB3_HOST_RXMSG_DEPTH_PER_SS_INSTANCE_LOG2P1 5
#define DWC_USB3_HOST_RXMSG_DEPTH_PER_HS_INSTANCE_LOG2P1 4
#define DWC_USB3_HOST_RXMSG_DEPTH_PER_FSLS_INSTANCE_LOG2P1 2
#define DWC_USB3_HOST_RXMSG_FIFO_DEPTH 16
#define DWC_USB3_MAX_RXMSG_FIFO_DEPTH 16
#define DWC_USB3_MAX_RXMSG_FIFO_LOG2P1 6
#define DWC_USB3_MAX_PSQ_FIFO_DEPTH 32
#define DWC_USB3_PSQ_FIFO_LOG2 5
#define DWC_USB3_PSQ_FIFO_LOG2P1 6
//------------------------------------------------------------------------------------------
// RAM Allocation
//------------------------------------------------------------------------------------------
#define DWC_USB3_NUM_TXFIFO_HOST 3
#define DWC_USB3_NUM_TXFIFO_SDRD 4
#define DWC_USB3_NUM_TXFIFO 4
#define DWC_USB3_NUM_RXFIFO 3
#define DWC_USB3_NUM_TXFIFO_LOG2 2
#define DWC_USB3_NUM_RXFIFO_LOG2 2
#define DWC_USB3_NUM_TXFIFO_LOG2P1 3
#define DWC_USB3_NUM_RXFIFO_LOG2P1 2
#define DWC_USB3_RIQ_FIFO_LOG2 7
#define DWC_USB3_RIQ_FIFO_LOG2P1 8
#define DWC_USB3_TXQ_FIFO_DEVICE_DEPTH 64
#define DWC_USB3_TXQ_FIFO_HOST_DEPTH 185
#define DWC_USB3_TXQ_FIFO_DRD_DEPTH 201
#define DWC_USB3_TXQ_FIFO_ALL_DEPTH 201
#define DWC_USB3_RXQ_FIFO_ALL_DEPTH 98
#define DWC_USB3_RIQ_FIFO_ALL_DEPTH 120
#define DWC_USB3_TXQ_MAX_SEGMENTS 8
#define DWC_USB3_TXQ_FIFO_LOG2 9
#define DWC_USB3_TXQ_FIFO_LOG2P1 9
#define DWC_USB3_TXPFL_FIFO_LOG2 1
#define DWC_USB3_TXPFL_FIFO_LOG2P1 1
#define DWC_USB3_RXQ_FIFO_LOG2 7
#define DWC_USB3_RXQ_FIFO_LOG2P1 7
#define DWC_USB3_DFQ_FIFO_LOG2 4
#define DWC_USB3_DFQ_FIFO_LOG2P1 5
#define DWC_USB3_DWQ_FIFO_LOG2 5
#define DWC_USB3_DWQ_FIFO_LOG2P1 6
#define DWC_USB3_NPI_RX_STATUS_DEPTH_LOG2 4
#define DWC_USB3_NPI_RX_STATUS_DEPTH_LOG2P1 5
#define DWC_USB3_NPI_TX_STATUS_DEPTH_LOG2 3
#define DWC_USB3_NPI_TX_STATUS_DEPTH_LOG2P1 3
#define DWC_USB3_NPI_IN_EP0_FIFO_LOG2 7
#define DWC_USB3_NPI_IN_EP0_FIFO_LOG2P1 8
#define DWC_USB3_NPI_IN_EP1_FIFO_LOG2 10
#define DWC_USB3_NPI_IN_EP1_FIFO_LOG2P1 11
#define DWC_USB3_NPI_IN_EP2_FIFO_LOG2 10
#define DWC_USB3_NPI_IN_EP2_FIFO_LOG2P1 10
#define DWC_USB3_NPI_IN_EP3_FIFO_LOG2 8
#define DWC_USB3_NPI_IN_EP3_FIFO_LOG2P1 9
#define DWC_USB3_NPI_IN_EP4_FIFO_LOG2 1
#define DWC_USB3_NPI_IN_EP4_FIFO_LOG2P1 1
#define DWC_USB3_NPI_IN_EP5_FIFO_LOG2 1
#define DWC_USB3_NPI_IN_EP5_FIFO_LOG2P1 1
#define DWC_USB3_NPI_IN_EP6_FIFO_LOG2 1
#define DWC_USB3_NPI_IN_EP6_FIFO_LOG2P1 1
#define DWC_USB3_NPI_IN_EP7_FIFO_LOG2 1
#define DWC_USB3_NPI_IN_EP7_FIFO_LOG2P1 1
#define DWC_USB3_NPI_IN_EP8_FIFO_LOG2 1
#define DWC_USB3_NPI_IN_EP8_FIFO_LOG2P1 1
#define DWC_USB3_NPI_IN_EP9_FIFO_LOG2 1
#define DWC_USB3_NPI_IN_EP9_FIFO_LOG2P1 1
#define DWC_USB3_NPI_IN_EP10_FIFO_LOG2 1
#define DWC_USB3_NPI_IN_EP10_FIFO_LOG2P1 1
#define DWC_USB3_NPI_IN_EP11_FIFO_LOG2 1
#define DWC_USB3_NPI_IN_EP11_FIFO_LOG2P1 1
#define DWC_USB3_NPI_IN_EP12_FIFO_LOG2 1
#define DWC_USB3_NPI_IN_EP12_FIFO_LOG2P1 1
#define DWC_USB3_NPI_IN_EP13_FIFO_LOG2 1
#define DWC_USB3_NPI_IN_EP13_FIFO_LOG2P1 1
#define DWC_USB3_NPI_IN_EP14_FIFO_LOG2 1
#define DWC_USB3_NPI_IN_EP14_FIFO_LOG2P1 1
#define DWC_USB3_NPI_IN_EP15_FIFO_LOG2 1
#define DWC_USB3_NPI_IN_EP15_FIFO_LOG2P1 1
#define DWC_USB3_NPI_LARGEST_IN_EP_FIFO_LOG2 10
#define DWC_USB3_NPI_LARGEST_IN_EP_FIFO_LOG2P1 11
// MBYTES Depth of Queues defined in cC
// MBYTES Address (fixed) of Queues
#define DWC_USB3_ADDR_TXQ 0
#define DWC_USB3_ADDR_RXQ 201
#define DWC_USB3_ADDR_RIQ 299
#define DWC_USB3_ADDR_DFQ 419
#define DWC_USB3_ADDR_DWQ 435
#define DWC_USB3_ADDR_PSQ 467
#define DWC_USB3_CACHE_BCU_ENTRY_SIZE 0
// Byte Depth of CSR and Cache RAM Regions
#define DWC_USB3_CACHE_BCU_DEPTH 0
#define DWC_USB3_RCSR_GLOBAL_DEPTH 16
#define DWC_USB3_RCSR_DEVICE_DEPTH 128
#define DWC_USB3_RCSR_HOST_DEPTH 144
#define DWC_USB3_CACHE_EP_DEPTH 128
#define DWC_USB3_CACHE_DEVICE_DEPTH 16
#define DWC_USB3_CACHE_STREAMS_DEPTH 1280
#define DWC_USB3_HCACHE_SCRATCH_PAD_SIZE 64
#define DWC_USB3_HCACHE_EPINFO_BITMAP_SIZE_PER_SLOT 16
#define DWC_USB3_HCACHE_EPTYPE_BITMAP_SIZE_PER_SLOT 8
#define DWC_USB3_HCACHE_SS_EPHEADER_SIZE 96
#define DWC_USB3_HCACHE_HS_EPHEADER_SIZE 80
#define DWC_USB3_HCACHE_FSLS_EPHEADER_SIZE 80
#define DWC_USB3_HCACHE_TR_SIZE 8
#define DWC_USB3_HCACHE_PERIODIC_EPINFO_SIZE 20
#define DWC_USB3_HCACHE_PERIODIC_SLOTINFO_SIZE 4
#define DWC_USB3_HOST_NUM_CACHE_TRB_PER_SS_EP_INT 18
#define DWC_USB3_HOST_NUM_CACHE_TRB_PER_HS_EP_INT 10
#define DWC_USB3_HOST_NUM_CACHE_TRB_PER_FSLS_EP_INT 10
#define DWC_USB3_HCACHE_EPINFO_BITMAP_SIZE 272
#define DWC_USB3_HCACHE_EPTYPE_BITMAP_SIZE 136
#define DWC_USB3_HCACHE_PERIODIC_LIST_SIZE 640
#define DWC_USB3_HCACHE_SLOT_LIST_SIZE 68
#define DWC_USB3_HCACHE_FSLS_EP_SIZE 480
#define DWC_USB3_HCACHE_FSLS_TRQ_SIZE 16
#define DWC_USB3_HCACHE_FSLS_TMPTRB_SIZE 16
#define DWC_USB3_HCACHE_HS_EP_SIZE 480
#define DWC_USB3_HCACHE_HS_TRQ_SIZE 16
#define DWC_USB3_HCACHE_HS_TMPTRB_SIZE 16
#define DWC_USB3_HCACHE_SS_EP_SIZE 3072
#define DWC_USB3_HCACHE_SS_TRQ_SIZE 64
#define DWC_USB3_HCACHE_SS_TMPTRB_SIZE 16
//---------------------------
//Command Handler Cache sizes
//---------------------------
#define DWC_USB3_HCACHE_CMD_RING_POINTER_SIZE 8
#define DWC_USB3_HCACHE_CMD_STORE_SIZE 16
#define DWC_USB3_HCACHE_SLOT_TABLE_SIZE 4
#define DWC_USB3_HCACHE_DEVICE_CONTEXT_ADDR_SIZE 8
#define DWC_USB3_HCACHE_DEVICE_SLOT_CONTEXT_SIZE 32
#define DWC_USB3_HCACHE_DEVICE_EP_CONTEXT_SIZE 36
#define DWC_USB3_HCACHE_INPUT_CONTROL_CONTEXT_SIZE 8
#define DWC_USB3_HCACHE_INPUT_SLOT_CONTEXT_SIZE 20
#define DWC_USB3_HCACHE_INPUT_EP_CONTEXT_SIZE 20
#define DWC_USB3_HCACHE_DEVICE_ADDRESS_TABLE_SIZE 16
#define DWC_USB3_HCACHE_SLOT_ID_SIZE 128
#define DWC_USB3_HCACHE_SCRATCH_PAD_ADDR_SIZE 16
#define DWC_USB3_HCACHE_HUB_CONTEXT_ADDR_SIZE 8
#define DWC_USB3_HCACHE_HUB_SLOT_CONTEXT_SIZE 16
#define DWC_USB3_HCACHE_DEVICE_BASE_ADDR_SIZE 136
#define DWC_USB3_HCACHE_PRIMARY_STREAM_CONTEXT_ADDR_SIZE 16
#define DWC_USB3_HCACHE_SECONDARY_STREAM_CONTEXT_ADDR_SIZE 16
#define DWC_USB3_HCACHE_PORT_BANDWIDTH_CONTEXT_SIZE 4
//#define DWC_USB3_HCACHE_PORT_BANDWIDTH_CONTEXT_SIZE 16*3 //16bytes for each one of the speeds
//#define DWC_USB3_HCACHE_BI_BANDWIDTH_SIZE (16)*4 //4bytes for each one of the instances
#define DWC_USB3_HCACHE_BI_BANDWIDTH_SIZE 12
#define DWC_USB3_HCACHE_HCMD_TRB_SIZE 16
//End of Command Handler Cache Size definitions
#define DWC_USB3_HCACHE_HERH_DATA_SIZE 68
#define DWC_USB3_HCACHE_HALM_DATA_SIZE 320
// Byte Address (fixed) of CSRs and Cache
#define DWC_USB3_ADDR_CACHE_BCU 3992
#define DWC_USB3_ADDR_RCSR_GLOBAL 4000
#define DWC_USB3_ADDR_RCSR_DEVICE 4016
#define DWC_USB3_ADDR_CACHE_EP 4144
#define DWC_USB3_ADDR_CACHE_DEVICE 4272
#define DWC_USB3_ADDR_CACHE_STREAMS 4288
#define DWC_USB3_ADDR_CACHE_HOST 5568
#define DWC_USB3_ADDR_RCSR_HOST 4016
#define DWC_USB3_HCACHE_SCRATCH_PAD 4160
#define DWC_USB3_HCACHE_EPINFO_BITMAP 4224
#define DWC_USB3_HCACHE_EPTYPE_BITMAP 4496
#define DWC_USB3_HCACHE_PERIODIC_LIST 4632
#define DWC_USB3_HCACHE_SLOT_LIST 5272
#define DWC_USB3_HCACHE_FSLS_EP 5340
#define DWC_USB3_HCACHE_FSLS_TRQ 5820
#define DWC_USB3_HCACHE_FSLS_TMPTRB 5836
#define DWC_USB3_HCACHE_HS_EP 5852
#define DWC_USB3_HCACHE_HS_TRQ 6332
#define DWC_USB3_HCACHE_HS_TMPTRB 6348
#define DWC_USB3_HCACHE_SS_EP 6364
#define DWC_USB3_HCACHE_SS_TRQ 9436
#define DWC_USB3_HCACHE_SS_TMPTRB 9500
///////////////////////////////////////////////////////////////////////////////////
// Command Handler & HDNH Cache Pointers //
///////////////////////////////////////////////////////////////////////////////////
#define DWC_USB3_HCACHE_CMD_HANDLER 9520
#define DWC_USB3_HCACHE_CMD_RING_POINTER 9536
#define DWC_USB3_HCACHE_SLOT_TABLE 9552
#define DWC_USB3_HCACHE_DEVICE_CONTEXT_ADDR 9568
#define DWC_USB3_HCACHE_DEVICE_SLOT_CONTEXT 9584
#define DWC_USB3_HCACHE_DEVICE_EP_CONTEXT 9616
#define DWC_USB3_HCACHE_INPUT_SLOT_CONTEXT 9664
#define DWC_USB3_HCACHE_INPUT_EP_CONTEXT 9696
#define DWC_USB3_HCACHE_INPUT_CONTROL_CONTEXT 9728
#define DWC_USB3_HCACHE_DEVICE_ADDRESS_TABLE 9744
#define DWC_USB3_HCACHE_SCRATCH_PAD_ADDR 9760
#define DWC_USB3_HCACHE_HUB_CONTEXT_ADDR 9776
#define DWC_USB3_HCACHE_PRIMARY_STREAM_CONTEXT_ADDR 9792
#define DWC_USB3_HCACHE_SECONDARY_STREAM_CONTEXT_ADDR 9808
#define DWC_USB3_HCACHE_PORT_BANDWIDTH_CONTEXT 9824
#define DWC_USB3_HCACHE_BI_BANDWIDTH 9840
#define DWC_USB3_HCACHE_HCMD_TRB 9856
#define DWC_USB3_HCACHE_HUB_SLOT_CONTEXT 9872
#define DWC_USB3_HCACHE_DEVICE_BASE_ADDR 9888
#define DWC_USB3_HCACHE_SLOT_ID 10032
#define DWC_USB3_HCACHE_CMD_HANDLER_SIZE 640
#define DWC_USB3_HCACHE_HUB_DEVICE_ADDR 9776
/////////////////////// End of Command Handler Address Map /////////////////////////////////////////////////////////
#define DWC_USB3_HCACHE_HERH_DATA 10172
//#define DWC_USB3_HCACHE_HERH_DATA `DWC_USB3_HCACHE_DEVICE_CONTEXT_ADDR
#define DWC_USB3_HCACHE_HALM_DATA 10240
#define DWC_USB3_HOST_CACHEEND_ADDR 10560
#define DWC_USB3_DCACHE_DEPTH_DEV 696
#define DWC_USB3_DCACHE_DEPTH_HST 1320
#define DWC_USB3_DCACHE_DEPTH_DRD 1320
#define DWC_USB3_DCACHE_DEPTH 1320
// Name: DWC_USB3_DCACHE_DEPTH_INFO
// Default: 1320
// Values: 32, ..., 32768
// Enabled: 0
//
// This informational (read-only) value defines the minimum RAM0 requirement
// for Cache, Register, and internal queues mapped into RAM0.
// When RAM0 is shared with the TXFIFOs and/or RXFIFOs, take the sum of this
// base value and the required TXFIFO and/or RXFIFO depths to find the total RAM0 depth.
// Choice decides the value of DWC_USB3_DCACHE_DEPTH_INFO in DWC_usb3_params.v file.
#define DWC_USB3_DCACHE_DEPTH_INFO 1320
#define DWC_USB3_DEV_RXFIFO_DEPTH_DEFAULT 389
#define DWC_USB3_DEV_TXFIFO0_DEPTH 66
#define DWC_USB3_DEV_TXFIFOX_DEPTH_DEFAULT 388
#define DWC_USB3_HOST_RXF_ALL_DEPTH 1160
#define DWC_USB3_RXF_ALL_DEPTH_DEFAULT 1160
#define DWC_USB3_DEV_TXF_ALL_DEPTH_DEFAULT 1230
#define DWC_USB3_HOST_TXF_ALL_DEPTH 1293
#define DWC_USB3_TXF_ALL_DEPTH_DEFAULT 1293
#define DWC_USB3_RAM0_DEPTH_DEFAULT 2480
#define DWC_USB3_NPI_TX_FIFO_DEPTH 2176
#define DWC_USB3_RAM1_DEPTH_DEFAULT 1293
#define DWC_USB3_RAM2_DEPTH_DEFAULT 1160
// Name: DWC_USB3_RAM0_DEPTH
// Default: 2480
// Values: 32, ..., 32768
//
// Specifies the depth of RAM0. In Device, Host, and DRD configuration RAM1
// contains:
// 3 RAM Config: Contains Descriptor Cache.
// 2 RAM Config: Contains Descriptor Cache and RxFIFOs.
// 1 RAM Config: Contains Descriptor Cache, RxFIFOs, and TxFIFOs.
// In Hub configuration, RAM0 contains Hub descriptors and Upstream Tx Data
// Packets.
// For Device, Host, or DRD configuration, this should have minimum space for Cache
// (previous parameter default value) plus additional RxFIFO ram space in 2 RAM configuration
// plus TxFIFO ram space in 1-RAM configuration. At least three max packet size RxFIFO is recommended.
// In two RAM configuration, the RAM0 depth should be:
// Device: (DWC_USB3_DCACHE_DEPTH_INFO + 3 * 1024 + 40 to 64)/MDWidth-Bytes.
// The additional 40-64-bytes are used in Device configuration for holding up to 3 back to back SETUP packets and provide clock-crossing
// delay margin. When Master Bus width is 128-bits, 64 bytes is needed else 40 bytes is needed.
// If the system latency is more than 2.1uS, then a 5 to 6 packet FIFO is recommended instead 3 for a burstable SuperSpeed IN endpoint.
//
// Host: (DWC_USB3_DCACHE_DEPTH_INFO + 3* 1024 (SS RxFIFO) + 2*1024 (HS RxFIFO) + 1024 (FS/LS RxFIFO))/MDWIDTH-Byte
//
// For more information, see the databook's "Hardware Integration" chapter in the Databook.
// Choice decides the value of DWC_USB3_RAM0_DEPTH in DWC_usb3_params.v file.
#define DWC_USB3_RAM0_DEPTH 2608
// Name: DWC_USB3_RAM1_DEPTH
// Default: 1293
// Values: 32, ..., 32768
// Enabled: (DWC_USB3_NUM_RAMS > 1)
//
// Specifies the depth of RAM1. In Device, Host, and DRD configuration RAM1
// contains:
// 3 RAM Config: Contains TxFIFOs.
// 2 RAM Config: Contains TxFIFOs.
// In Hub configuration RAM1 contains the Upstream Rx Data Packets.
// Device:
// In Device configuration 512 bytes for Control IN endpoint and 3 packet each of the other burstable IN endpoints is recommended.
// For example if you have 2 Bulk in endpoint in addition to
// Control endpoint, the RAM1 Depth requirement is: ((512+2*MDWidth-Bytes) + (2 * (3 * (1024+MDWidth-Bytes)) + MDWidth-Bytes))/MDWidth-Bytes + Tx-EP * MDWidth-Bytes.
// If the system latency is more than 2.1uS, then a 5 to 6 packet FIFO is recommended instead 3 for a burstable SuperSpeed IN endpoint.
//
// Host: ((3 * (1024 + MDWIDTH-Bytes) + MDWIDTH-Bytes) (SS Tx FIFOs) + (2 * (1024 + MDWIDTH-Bytes) + MDWIDTH-Bytes) (HS Tx FIFOs) + (1 * (1024 + MDWIDTH-Bytes) + MDWIDTH-Bytes) (FS/LS Tx FIFOs))/MDWIDTH-Bytes
//
// In addition to data, each Tx-FIFO also stores additional information and hence MDWidth-Bytes needed for each packet plus MDWidth-Bytes for each FIFO.
// For more information, see the databook's "Hardware Integration" chapter in the Databook.
// Choice decides the value of DWC_USB3_RAM1_DEPTH in DWC_usb3_params.v file.
#define DWC_USB3_RAM1_DEPTH 1293
// Name: DWC_USB3_RAM2_DEPTH
// Default: 1160
// Values: 32, ..., 32768
// Enabled: (DWC_USB3_NUM_RAMS > 2 && DWC_USB3_MODE !=3)
//
// Specifies the depth of RAM2.
// 3 RAM config: Contains RxFIFOs.
// The RAM2 depth should be:
// Device: (DWC_USB3_DCACHE_DEPTH_INFO + 3 * 1024 + 40 to 64)/MDWidth-Bytes.
// The additional 40-64-bytes are used in Device configuration for holding up to 3 back to back SETUP packets and provide clock-crossing
// delay margin. When Master Bus width is 128-bits, 64 bytes is needed else 40 bytes is needed.
// If the system latency is more thn 2.1uS, then a 5 to 6 packet FIFO is recommended instead 3.
//
// Host: (DWC_USB3_DCACHE_DEPTH_INFO + 3* 1024 (SS RxFIFO) + 2*1024 (HS RxFIFO) + 1024 (FS/LS RxFIFO))/MDWIDTH-Byte
// For more information, see the databook's "Hardware Integration" chapter in the
// Databook.
// Choice decides the value of DWC_USB3_RAM2_DEPTH in DWC_usb3_params.v file.
#define DWC_USB3_RAM2_DEPTH 1160
#define DWC_USB3_ADDR_RXF 1320
#define DWC_USB3_DEV_RXFIFO_DEPTH 1288
#define DWC_USB3_ADDR_TXF 0
#define DWC_USB3_ADDR_HOST_TXF 0
#define DWC_USB3_DEV_TXFIFOX_DEPTH 409
#define DWC_USB3_DEV_TXF_ALL_DEPTH 1293
#define DWC_USB3_RXF_ALL_DEPTH 1288
#define DWC_USB3_TXF_ALL_DEPTH 1293
/* function [31:0] log2(input [31:0] val);
begin
for (log2=0; val>0; log2=log2+1)
val = val >> 1;
end
endfunction
*/
#define DWC_USB3_DCARAM_DEPTH 2608
#define DWC_USB3_RXFRAM_DEPTH 2608
#define DWC_USB3_TXFRAM_DEPTH 1293
#define DWC_USB3_DCARAM_A 12
#define DWC_USB3_RXFRAM_A 12
#define DWC_USB3_TXFRAM_A 11
#define DWC_USB3_DCARAM_A_LOG2P1 12
#define DWC_USB3_RXFRAM_A_LOG2P1 12
#define DWC_USB3_TXFRAM_A_LOG2P1 11
#define DWC_USB3_RAM0_A 12
#define DWC_USB3_RAM0_A_LOG2P1 12
#define DWC_USB3_RAM1_A 11
#define DWC_USB3_RAM1_A_LOG2P1 11
#define DWC_USB3_RAM2_A 11
#define DWC_USB3_RAM2_A_LOG2P1 11
#define DWC_USB3_ROM_A 6
#define DWC_UPTXDATA_FIFO_SIZE 2544
#define DWC_USB3_UPTXDATA_FIFO_A 12
#define DWC_USB3_UPTXDATA_FIFO_A_LOG2P1 12
#define DWC_USB3_HUB_NUM_TXHEADERS_LOG2P1 3
#define DWC_USB3_HUB_NUM_RXHEADERS_A 2
#define DWC_USB3_HUB_NUM_RXHEADERS_LOG2P1 3
#define DWC_USB3_NUM_U3_ROOT_PORTS_A 1
// Name: DWC_USB3_EN_DBG_PORTS
// Default: No
// Values: No (0), Yes (1)
// Enabled: DWC_USB3_MODE !=3
//
// This parameter is used at Synopsys for FPGA hardware
// validation of the core. You can use these ports during
// driver development with an FPGA platform.
// When this parameter is 1, internal signals mictor1[31:0],
// mictor2[31:0], mictor3[31:0], and mictor_sel[3:0] are
// brought out of the core. Three 32-bit mictor connectors
// on the FPGA board can be hooked to logic analyzer PODs.
// The FPGA board also has a DIP switch, which is used to
// dynamically multiplex out different internal debug signals.
// Choice decides the value of DWC_USB3_EN_DBG_PORTS in DWC_usb3_params.v file.
#define DWC_USB3_EN_DBG_PORTS 0
// Name: DWC_USB3_EN_FPGA
// Default: No
// Values: No (0), Yes (1)
// Enabled: DWC_USB3_MODE !=3
//
// This parameter is used at Synopsys for FPGA Device and Host hardware
// validation of the core. You can use this parameter during
// driver development with an FPGA platform.
// Set this parameter to 1 to improve FPGA timing by
// - adding a pipeline on RX data path in the PTL
// - adding a pipeline on cache/DMA requst in LSP BARB
// - adding a pipeline on address generation in LSP HCMD
// - adding a pipeline in the MAC
// Choice decides the value of DWC_USB3_EN_FPGA in DWC_usb3_params.v file.
#define DWC_USB3_EN_FPGA 0
// Name: DWC_USB3_EN_LOG_PHYS_EP_SUPT
// Default: Yes
// Values: No (0), Yes (1)
// Enabled: DWC_USB3_MODE != 1 && DWC_USB3_MODE !=3 && DWC_USB3_MBUS_TYPE!=4
//
// This parameter is used at Synopsys for FPGA Device hardware
// validation of the core. You can use this parameter during
// driver development with an FPGA platform.
// Set this parameter to 0 to improve FPGA timing.
// Selects whether the device core supports a flexible or fixed logical->physical endpoint mapping
// A fixed mapping improves timing and may reduce gate count (5K gate reduction)
// Choice decides the value of DWC_USB3_EN_LOG_PHYS_EP_SUPT in DWC_usb3_params.v file.
#define DWC_USB3_EN_LOG_PHYS_EP_SUPT 1
// Name: DWC_USB3_ATSPEED_DFT
// Default: No
// Values: No (0), Yes (1)
// Enabled: DWC_USB3_MODE !=3 && DWC_USB3_MBUS_TYPE!=4
//
// This parameter enables additional at speed DFT Control signals. This creates additional dft_* ports to control clocks.
// By default, even when this parameter is not enabled, at speed DFT is enabled and "scan_mode" port controls scan by-pass.
// This parameter controls only whether additional inputs are used to control clock muxes, clock-gate cell, and reset bypass.
// Choice decides the value of DWC_USB3_ATSPEED_DFT in DWC_usb3_params.v file.
#define DWC_USB3_ATSPEED_DFT 0
// Name: DWC_USB3_PIPE_32BIT_ONLY
// Default: No
// Values: No (0), Yes (1)
// Enabled: DWC_USB3_MBUS_TYPE!=4
//
// If your PIPE interface is always 32-bits @125MHz, then mac3_clk will be set to pipe3_rx_pclk.
// This avoids the clock dividers and muliplexers on the mac3_clk and simplifies the DFT and clock insertion.
// If you enable this, please make sure the DWC_USB3_GUSB3PIPECTL_INIT parameter bit[16:15] are 2'b00 to match this.
// Choice decides the value of DWC_USB3_PIPE_32BIT_ONLY in DWC_usb3_params.v file.
#define DWC_USB3_PIPE_32BIT_ONLY 0
// Name: DWC_USB3_RAM_CLK_TO_BUS_CLK
// Default: No
// Values: No (0), Yes (1)
// Enabled: DWC_USB3_MODE !=3 && DWC_USB3_MBUS_TYPE!=4
//
// This parameter enables if you plan to always connect bus_clk_early to ram_clk.
// The bus_clk_early SHOULD BE GREATER THAN OR EQUAL to 125MHz during SuperSpeed operation and
// greater than or equal to 60MHz during USB2.0 operation. If the above conditions are not met then
// it would cause functional FAILURE. This parameter avoids the clock dividers and muliplexers on the ram_clk
// and simplifies the DFT and clock insertion.
// Choice decides the value of DWC_USB3_RAM_CLK_TO_BUS_CLK in DWC_usb3_params.v file.
#define DWC_USB3_RAM_CLK_TO_BUS_CLK 0
//------------------------------------------------------------
// Gate count reduction parameters
//------------------------------------------------------------
// Name: DWC_USB3_EN_STREAM_SUPT
// Default: 1
// Values: -2147483648, ..., 2147483647
//
// Selects whether the device core supports stream-capable bulk endpoints (12K gate reduction when coupled with
// disabling isoc support)
#define DWC_USB3_EN_STREAM_SUPT 1
// Name: DWC_USB3_EN_INTERRUPT_SUPT
// Default: 1
// Values: -2147483648, ..., 2147483647
//
// Selects whether the device core supports interrupt endpoints (7K gate reduction when coupled with disabling isoc
// support)
#define DWC_USB3_EN_INTERRUPT_SUPT 1
// Name: DWC_USB3_EN_LSP_DEBUG
// Default: 1
// Values: -2147483648, ..., 2147483647
//
// Selects whether debug registers for the List Processor (LSP) are
// enabled (1K gate reduction)
#define DWC_USB3_EN_LSP_DEBUG 1
// Name: DWC_USB3_OUTEP_BYTECNT_W
// Default: 29
// Values: -2147483648, ..., 2147483647
//
// The number of bits used to store the TRB bytecount for OUT endpoints. Default is 24 (width of BUFSIZ field in a
// TRB) + 5 (32 is the maximum number of TRBs per transfer resource) = 29 bits (1K gate reduction when reduced to 17)
#define DWC_USB3_OUTEP_BYTECNT_W 29
/************* Internal Parameters ************/
// DWC_USB3_SYNC_VERIF_EN=1 enable delay randomization
// DWC_USB3_SYNC_FIFO_DSYNC_EDGE/DWC_USB3_SYNC_DSYNC_EDGE=3 - all posedge, 4 - 1st stage negedge (Dsync Flops Only)
// DWC_USB3_SYNC_TOGGLE_EDGE=1 - all posedge, 2 - 1st stage negedge (Toggle Synchronizer Only)
// DWC_USB3_SYNC_RAND_TYPE=1 - 0 to 1.9 clk delay randomization; 1 - 0 - 0.9 clk delay randomization
// Synchronizer Randomization
#define DWC_USB3_SYNC_VERIF_EN 0
#define DWC_USB3_SYNC_FIFO_DSYNC_EDGE 4
#define DWC_USB3_SYNC_DSYNC_EDGE 4
#define DWC_USB3_SYNC_DSYNC_PEDGE 3
#define DWC_USB3_SYNC_TOGGLE_EDGE 2
#define DWC_USB3_SYNC_RAND_TYPE 1
#define DWC_USB3_BYPASS_SF_INIT 0
#define DWC_USB3_VERSION 50
// BMU Clock Frequency in MHz; Not used in RTL - Only For Simulation
#define DWC_USB3_BUS_CLK_FREQ 250
#define DWC_USB3_BUS_CLK_PERIOD 4000
#define DWC_USB3_MAC_CLK_FREQ 125
#define DWC_USB3_MAC_CLK_PERIOD 8000
#define DWC_USB3_MAC3_CLK_FREQ 125
#define DWC_USB3_MAC3_CLK_PERIOD 8000
#define DWC_USB3_MAC2_CLK_FREQ 60
#define DWC_USB3_MAC2_CLK_PERIOD 16666.6
#define DWC_USB3_MAC2_CLK_PERIOD_INT 16666 // 1000 * TIMESCALE /DWC_USB3_BUS_MAC2_FREQ
#define DWC_USB3_BUS_CLK_FREQ_HOST_DUPLEX_MIN_REAL 86
#define DWC_USB3_BUS_CLK_FREQ_DEV_DUPLEX_MIN_REAL 78
#define DWC_USB3_BUS_CLK_FREQ_DUPLEX_MIN_REAL 86
#define DWC_USB3_BUS_CLK_FREQ_DUPLEX_MIN 86
// ((`DWC_USB3_BUS_CLK_FREQ_DUPLEX_MIN_REAL + 0.99) - ((`DWC_USB3_BUS_CLK_FREQ_DUPLEX_MIN_REAL + 0.99) % 1))
#define DWC_USB3_BUS_CLK_FREQ_MIN 86
#define DWC_USB3_RAM_CLK_FREQ_MIN 125
#define DWC_USB3_RAM_CLK_FREQ 250
#define DWC_USB3_RAM_CLK_PERIOD 4000
#define DWC_USB3_HOST_CLK_FREQ 125
#define DWC_USB3_PIPE_CLK_PERIOD 2000
#define DWC_USB3_ADP_CLK_FREQ 4.125
#define DWC_USB3_ADP_CLK_PERIOD 66
#define DWC_USB3_GTECH_default_delay 0
#define GTECH_default_delay 0
#define DWC_USB3_BUS_MDWIDTH 64
#define DWC_USB3_BUS_SDWIDTH 32
#define DWC_USB3_EN_DESC_DMA 0
// euse-pragma attr Visible false
//#define DWC_USB3_DESC_DMA_EN 0
#define DWC_USB3_INEPS 16
#define DWC_USB3_OUTEPS 16
#define DWC_USB3_H 1'h1
#define DWC_USB3_L 1'h0
#define DWC_USB3_HOST_CAP_REG_LEN 'h20
#define DWC_USB3_HC_RUNTIME_REGISTER_SPACE_OFFSET 32'h440
#define DWC_USB3_HC_DOORBELL_ARRAY_OFFSET 1152
#define DWC_USB3_HC_EXTCAP_USBLEGSUP_OFFSET 2176
#define DWC_USB3_HC_EXTCAP_SUPT_PRTL_20_OFFSET 2192
#define DWC_USB3_HC_EXTCAP_SUPT_PRTL_30_OFFSET 2208
#define DWC_USB3_HC_EXTCAP_DBC_OFFSET 2224
#define DWC_USB3_HC_CAPLENGTH 32'h20
#define DWC_USB3_HC_HCIVERSION 32'h96
#define DWC_USB3_HC_MAXSLOTS 16
#define DWC_USB3_HC_CC_MAXSLOTS 16
#define DWC_USB3_HC_MAXINTRS 1
#define DWC_USB3_HC_CC_MAXINTRS 1
#define DWC_USB3_HOST_NUM_ROOT_PORTS 2
#define DWC_USB3_HOST_NUM_U2_ROOT_PORTS_PIN 1
#define DWC_USB3_HOST_NUM_U3_ROOT_PORTS_PIN 1
#define DWC_USB3_HOST_NUM_ROOT_PORTS_PIN 2
#define DWC_USB3_HC_MAXPORTS 2
//#define DWC_USB3_HC_CC_MAXPORTS `DWC_USB3_HC_MAXPORTS
#define DWC_USB3_HC_CC_MAXPORTS 2
#define DWC_USB3_HC_IST 32'h1
#define DWC_USB3_HC_ERSTMAX 15
#define DWC_USB3_HC_IOCINTERVAL 0
#define DWC_USB3_HC_SPR 1
#define DWC_USB3_HC_MAXSCRATCHPADBUFS 1
#define DWC_USB3_HC_U1_DEVICE_EXIT_LATENCY 32'ha
#define DWC_USB3_HC_U2_DEVICE_EXIT_LATENCY 32'h7ff
#define DWC_USB3_HC_AC64 0
#define DWC_USB3_HC_BNC 0
#define DWC_USB3_HC_CSZ 1
#define DWC_USB3_HC_PPC 1
#define DWC_USB3_HC_PIND 0
#define DWC_USB3_HC_LHRC 0
#define DWC_USB3_HC_LTC 1
#define DWC_USB3_HC_NSS 0
#define DWC_USB3_HC_FSE 0
#define DWC_USB3_HC_SBD 0
#define DWC_USB3_HC_MAXPSASIZE 15
#define DWC_USB3_HC_XECP 544
#define DWC_USB3_HC_PAGE_SIZE 1
#define DWC_USB3_HC_DBOFF 1152
#define DWC_USB3_HC_RTSOFF 1088
#define DWC_USB3_NO_P3_INIT 1
#define DWC_USB3_NO_P3 1
#define DWC_USB3_CC_HS_PHYSEL 0
#define DWC_USB3_CSR_ACCESS_TIMEOUT 17'h1ffff
// Name: DWC_USB3_EN_ADP
// Default: External ADP
// Values: External ADP (0), Internal ADP (1)
// Enabled: DWC_USB3_EN_OTG ==1
//
// Enables Internal ADP capability of the USB3 core.
// Choice decides the value of DWC_USB3_EN_ADP in DWC_usb3_params.v file.
#define DWC_USB3_EN_ADP 0
// Name: DWC_USB3_EN_BC
// Default: No
// Values: No (0), Yes (1)
// Enabled: DWC_USB3_MODE !=3 && DWC_USB3_MBUS_TYPE != 4
//
// Enables Battery Charging (ACA) capability.
// Choice decides the value of DWC_USB3_EN_BC in DWC_usb3_params.v file.
#define DWC_USB3_EN_BC 0
// Name: DWC_USB3_EN_BUS_FILTERS
// Default: No
// Values: No (0), Yes (1)
// Enabled: DWC_USB3_MODE !=3
//
// Enables Bus Filters for on the following OTG control inputs from the PHY
// 1. utmiotg_iddig
// 2. utmiotg_avalid
// 3. utmiotg_vbusvalid
// 4. utmisrp_bvalid
// 5. utmisrp_sessend
// Choice decides the value of DWC_USB3_EN_BUS_FILTERS in DWC_usb3_params.v file.
#define DWC_USB3_EN_BUS_FILTERS 1
//-----------------------------------------------------------------------------------------------
// Mappings for the top-level "debug" port
//-----------------------------------------------------------------------------------------------
#define DWC_USB3_DEBUGIO_LINK_SUB_STATE 0
#define DWC_USB3_DEBUGIO_LINK_SUB_STATE_W 4
#define DWC_USB3_DEBUGIO_LINK_STATE 4
#define DWC_USB3_DEBUGIO_LINK_STATE_W 4
#define DWC_USB3_DEBUGIO_SOF_NUM 8
#define DWC_USB3_DEBUGIO_SOF_NUM_W 19
#define DWC_USB3_DEBUGIO_DEV_BUS_ERR 27
#define DWC_USB3_DEBUGIO_DEV_BUS_ERR_W 1
// 8+ 6*U2 ports
#define DWC_USB3_DEBUGIO_U2_STATES_W 14
#define DWC_USB3_NUM_U2TIS 2
#define DWC_USB3_DEBUG_WIDTH 55