PCI Express 1.1 Root Complex Lite x1, x4 IP Core User's Guide February 2012 IPUG85_01.1 Table of Contents Chapter 1. Introduction .......................................................................................................................... 4 Quick Facts ........................................................................................................................................................... 4 Features ................................................................................................................................................................ 5 PHY Layer.................................................................................................................................................... 5 Data Link Layer ............................................................................................................................................ 5 Transaction Layer ........................................................................................................................................ 5 Top Level IP Support ................................................................................................................................... 6 Chapter 2. Functional Description ........................................................................................................ 7 Overview ............................................................................................................................................................... 7 Interface Description ........................................................................................................................................... 18 Transmit TLP Interface............................................................................................................................... 18 Transmit TLP Interface Waveforms for x1 ................................................................................................. 23 Receive TLP Interface................................................................................................................................ 24 Message Decode Interface ................................................................................................................................. 26 Interrupt Signaling Messages..................................................................................................................... 26 Error Signaling Messages .......................................................................................................................... 27 Using the Transmit and Receive Interfaces ........................................................................................................ 28 As a Receiver............................................................................................................................................. 28 As a Transmitter......................................................................................................................................... 29 Chapter 3. Parameter Settings ............................................................................................................ 30 General Tab ........................................................................................................................................................ 31 PCI Express Link Configuration ................................................................................................................. 31 Include Master Loopback Data Path .......................................................................................................... 31 Maximum Payload Size.............................................................................................................................. 31 Include ECRC Support............................................................................................................................... 32 Flow Control Tab................................................................................................................................................. 32 Initial Receive Credits ................................................................................................................................ 32 Infinite PH Credits ...................................................................................................................................... 33 Initial PH Credits Available......................................................................................................................... 33 Infinite PD Credits ...................................................................................................................................... 33 Initial PD Credits Available......................................................................................................................... 33 Infinite NPH Credits.................................................................................................................................... 33 Initial NPH Credits Available ...................................................................................................................... 33 Infinite NPD Credits.................................................................................................................................... 33 Initial NPD Credits Available ...................................................................................................................... 33 Infinite CPLH Credits.................................................................................................................................. 33 Initial CPLH Credits Available .................................................................................................................... 33 Infinite CPLD Credits.................................................................................................................................. 33 Initial CPLD Credits Available .................................................................................................................... 33 Update Flow Control Generation Control ................................................................................................... 33 Number of P TLPs Between UpdateFC .................................................................................................... 34 Number of PD TLPs Between UpdateFC .................................................................................................. 34 Number of NP TLPs Between UpdateFC .................................................................................................. 34 Number of NPD TLPs Between UpdateFC ............................................................................................... 34 Number of CPL TLPs Between UpdateFC ................................................................................................ 34 Number of CPLD TLPs Between UpdateFC ............................................................................................. 34 Worst Case Number of 125MHz Clock Cycles Between UpdateFC .......................................................... 34 Chapter 4. IP Core Generation and Evaluation .................................................................................. 35 Licensing the IP Core................................................................................................................................. 35 (c) 2012 Lattice Semiconductor Corp. All Lattice trademarks, registered trademarks, patents, and disclaimers are as listed at www.latticesemi.com/legal. All other brand or product names are trademarks or registered trademarks of their respective holders. The specifications and information herein are subject to change without notice. IPUG85_01.1, February 2012 2 PCI Express 1.1 RC-Lite x1, x4 IP Core User's Guide Table of Contents Licensing Requirements for LatticeECP2M/LatticeECP3 .......................................................................... 35 Getting Started .................................................................................................................................................... 35 IPexpress-Created Files and Top Level Directory Structure............................................................................... 37 Running Functional Simulation ........................................................................................................................... 40 Synthesizing and Implementing the Core in a Top-Level Design ....................................................................... 40 Hardware Evaluation........................................................................................................................................... 41 Enabling Hardware Evaluation in Diamond................................................................................................ 41 Enabling Hardware Evaluation in ispLEVER.............................................................................................. 41 Updating/Regenerating the IP Core .................................................................................................................... 41 Regenerating an IP Core in Diamond ........................................................................................................ 41 Regenerating an IP Core in ispLEVER ...................................................................................................... 42 Chapter 5. Using the IP Core ............................................................................................................... 43 Simulation and Verification.................................................................................................................................. 43 Simulation Strategies ................................................................................................................................. 43 Third Party Verification IP .......................................................................................................................... 44 FPGA Design Implementation............................................................................................................................. 44 Setting Up the Core............................................................................................................................................. 44 Setting Up for x4 (No Flip).......................................................................................................................... 44 Setting Up for x4 (Flipped) ......................................................................................................................... 45 Setting Design Constraints......................................................................................................................... 45 Errors and Warnings .................................................................................................................................. 45 Clocking Scheme ....................................................................................................................................... 46 Locating the IP ........................................................................................................................................... 47 Board-Level Implementation Information ............................................................................................................ 50 PCI Express Power-Up .............................................................................................................................. 50 Board Layout Concerns ............................................................................................................................. 52 Troubleshooting .................................................................................................................................................. 55 Chapter 6. Core Verification ................................................................................................................ 56 Chapter 7. Support Resources ............................................................................................................ 57 Lattice Technical Support.................................................................................................................................... 57 Online Forums............................................................................................................................................ 57 Telephone Support Hotline ........................................................................................................................ 57 E-mail Support ........................................................................................................................................... 57 Local Support ............................................................................................................................................. 57 Internet ....................................................................................................................................................... 57 PCIe Solutions Web Site............................................................................................................................ 57 PCI-SIG Website........................................................................................................................................ 57 References.......................................................................................................................................................... 58 LatticeECP3 ............................................................................................................................................... 58 LatticeECP2M ............................................................................................................................................ 58 Revision History .................................................................................................................................................. 58 Appendix A. Resource Utilization ....................................................................................................... 59 Configuration.............................................................................................................................................. 59 LatticeECP2M Utilization (x4 RC-Lite) ................................................................................................................ 59 Ordering Part Number................................................................................................................................ 59 LatticeECP3 Utilization (x4 RC-Lite) ................................................................................................................... 59 Ordering Part Number................................................................................................................................ 59 LatticeECP2M Utilization (x1 RC-Lite) ................................................................................................................ 60 Ordering Part Number................................................................................................................................ 60 LatticeECP3 Utilization (x1 RC-Lite) ................................................................................................................... 60 Ordering Part Number................................................................................................................................ 61 IPUG85_01.1, February 2012 3 PCI Express 1.1 RC-Lite x1, x4 IP Core User's Guide Chapter 1: Introduction PCI Express is a high performance, fully scalable, well defined standard for a wide variety of computing and communications platforms. It has been defined to provide software compatibility with existing PCI drivers and operating systems. Being a packet based serial technology, PCI Express greatly reduces the number of required pins and simplifies board routing and manufacturing. PCI Express is a point-to-point technology, as opposed to the multidrop bus in PCI. Each PCI Express device has the advantage of full duplex communication with its neighbor to greatly increase overall system bandwidth. The basic data rate for a single lane is double that of the 32 bit/33 MHz PCI bus. A four lane link has eight times the data rate in each direction of a conventional bus. Lattice's PCI Express Root Complex (RC) Lite core provides an x1 or x4 root complex solution from the electrical SERDES interface, physical layer, data link layer and a minimum transaction layer in PCI express protocol stack. This IP is a lighter version of the root complex intended to be used in simple local bus bridging applications. This solution supports the LatticeECP3TM and LatticeECP2MTM FPGA device families and is an extremely economical, high value FPGA platform. This user's guide covers two versions of the Lattice PCI Express RC-Lite core: * The PCI Express x4 RC-Lite Core targets the LatticeECP3 and LatticeECP2M families of devices. * The PCI Express x1 RC-Lite Core targets the LatticeECP3 and LatticeECP2M families. This is a reduced LUT count x1 core with a 16-bit datapath. Refer to Lattice's PCIe Solutions web site at: http://www.latticesemi.com/solutions/technologysolutions/pciexpresssolutions.cfm?source=topnav Quick Facts Table 1-1 gives quick facts about the PCI Express RC-Lite IP core. Table 1-1. PCI Express RC-Lite IP Core Quick Facts PCI Express RC-Lite IP Configuration x4 RC FPGA Families Supported Core Requirements Minimal Device Needed 1 Targeted Device Typical Resource Utilization Data Path Width LUTs sysMEM EBRs Registers LFE3-17E-7FN484C LFE2M-20E-6F484C LFE3-17E-7FN484C LFE2M-20E-6F484C LFE3-70E-7FN672C LFE2M-50E-6F672C LFE3-70E-7FN672C LFE2M-50E-6F672C 64 64 16 16 10650 10900 4700 4800 9 9 5 5 8500 8500 Synthesis 3100 (R) 3150 (R) Diamond 1.1 or ispLEVER 8.1 Lattice Implementation Design Tool Support Native x1 RC LatticeECP3 and LatticeECP2M Synopsys(R) Synplify(R) Pro for Lattice D-2009.12L-1 Mentor Graphics(R) Precision(R) RTL Aldec Active-HDL(R) 8.2 (Windows only, Verilog and VHDL) Simulation Mentor Graphics ModelSim(R) SE 6.5F (Verilog Only) Cadence(R) NC-Verilog(R) (Linux only) 1. The packages specified in the Minimal Device Needed row relate to the many user interface signals implemented as I/Os in the evaluation design. Depending on the application, it might be possible to implement a design in a package with fewer I/O pins since the majority of the user interface signals are terminated inside the FPGA. IPUG85_01.1, February 2012 4 PCI Express 1.1 RC-Lite x1, x4 IP Core User's Guide Introduction Features The Lattice PCI Express RC-Lite IP core supports the following features. PHY Layer * 2.5 Gbps CML electrical interface * PCI Express 1.1 electrical compliance * Many options for signal integrity including differential output voltage, transmit pre-emphasis and receiver equalization * Serialization and de-serialization * 8b10b symbol encoding/decoding * Link state machine for symbol alignment * Clock tolerance compensation supports +/- 300 ppm * Framing and application of symbols to lanes * Data scrambling and de-scrambling * Lane-to-lane de-skew * Link Training and Status State Machine (LTSSM) - Electrical idle generation - Receiver detection - TS1/TS2 generation/detection - Lane polarity inversion - Link width negotiation - Higher layer control to jump to defined states Data Link Layer * Data link control and management state machine * Flow control initialization * Ack/Nak DLLP generation/termination * LCRC generation/checking * Sequence number appending/checking/removing * Retry buffer and management * Receiver buffer Transaction Layer * Transmit and Receive Flow control * Malformed and poisoned TLP detection * Optional ECRC generation/checking * INTx message TLP decoding and interrupt signaling to user * Error message TLP decoding and signaling to user. * 128, 256, 512, 1k, 2k or 4k bytes maximum payload size IPUG85_01.1, February 2012 5 PCI Express 1.1 RC-Lite x1, x4 IP Core User's Guide Introduction Top Level IP Support * 125 MHz user interface - x4 supports a 64-bit data path - x1 supports a 16-bit data path * In transmit, user creates TLPs without ECRC, LCRC, or sequence number * In receive, user receives valid TLPs without ECRC, LCRC, or sequence number * Credit interface for transmit and receive for PH, PD, NPH, NPD, CPLH, CPLD credit types * Higher layer control of LTSSM via ports IPUG85_01.1, February 2012 6 PCI Express 1.1 RC-Lite x1, x4 IP Core User's Guide Chapter 2: Functional Description This chapter provides a functional description of the Lattice PCI Express RC-Lite IP core. Overview The PCI Express RC-Lite IP core is implemented in several different FPGA technologies. These technologies include soft FPGA fabric elements such as LUTs, registers, embedded block RAMs (EBRs) and embedded hard elements with the PCS/SERDES. The IPexpressTM tool is used to customize and create a complete IP module for the user to instantiate in a design. Inside the module created by the IPexpress tool are several blocks implemented in heterogeneous technologies. All of the connectivity is provided, allowing the user to interact at the top level of the IP core. Figure 2-1 provides a high-level block diagram to illustrate the main functional blocks and the technology used to implement PCI Express RC-Lite IP core functions. Figure 2-1. .PCI Express RC-Lite IP Core Technology and Functions User Interface Transaction Layer - ECRC - Interrupt, Error message decode - Flow Control updates Soft FPGA Logic Data Link Layer - Retry Buffer - Ack/Nak, Sequence Number - LCRC - Flow Control Initialization Soft FPGA Logic PHY Layer 2 - Ordered Set Encoder/Decoder - LTSSM - Data Scrambling/De-scrambling Soft FPGA Logic PHY Layer 1 - Electrical Interface - Word Alignment - Clock Compensation - Channel Alignment Embedded PCS/SERDES PCI Express Lanes As the PCI Express RC-Lite IP core proceeds through the Diamond or ispLEVER software design flow specific technologies are targeted to their specific locations on the device. Figure 2-2 provides implementation representations of the LFE3/LFE2M devices with a PCI Express RC-Lite IP core. IPUG85_01.1, February 2012 7 PCI Express 1.1 RC-Lite x1, x4 IP Core User's Guide Functional Description Figure 2-2. PCI Express RC-Lite IP Core Implementation in LatticeECP3 and LatticeECP2M Devices PCI Express Lanes LFE3/LFE2Mxx PCS PHY Layer 1 FPGA Logic PHY, Data Link and Trans Layers User Interface Unused PCS As shown, the data flow moves in and out of the heterogeneous FPGA technology. The user is responsible for selecting the location of the hard SERDES/PCS blocks as described in "Overview" on page 7. The FPGA logic placement and routing is the job of the Diamond or ispLEVER design tools to select regions nearby the hard SERDES/PCS blocks to achieve the timing goals. IPUG85_01.1, February 2012 8 PCI Express 1.1 RC-Lite x1, x4 IP Core User's Guide Functional Description Figure 2-3 provides a high-level interface representation. Figure 2-3. PCI Express RC-Lite IP Core Interfaces Clock and Reset Interface PCI Express RC-Lite IP Internal FPGA Interface PCI ExpressLanes External I/O Pad Interface Transmit TLPInterface Receive TLPInterface Control and StatusInterface Message Decode Table 2-1 provides the list of ports and descriptions for the PCI Express RC-Lite IP core. Table 2-1. PCI Express RC-Lite IP Core Port List Port Name Direction Clock Description Clock and Reset Interface refclk[p,n] sys_clk_125 rst_n hdin[p,n]_[0,1,2,3] Input 100 MHz PCI Express differential reference clock used to generate the 2.5 Gbps data. Output 125 MHz clock derived from refclk to be used in the user application. Active-low asynchronous data path and state machine reset. This port will be connected to the GSR for the entire device. This reset is pulsed after bit stream download and will not need to be asserted by the user. Input PCI Express 2.5 Gbps CML inputs for lanes 0,1,2, and 3. The port "flip_lanes" is used to define the connection of PCS/SERDES channel to PCI Express lane. flip_lanes=0 hdin[p,n]_0 - PCI Express Lane 0 hdin[p,n]_1 - PCI Express Lane 1 hdin[p,n]_2 - PCI Express Lane 2 hdin[p,n]_3 - PCI Express Lane 3 Input flip_lanes=1 hdin[p,n]_0 - PCI Express Lane 3 hdin[p,n]_1 - PCI Express Lane 2 hdin[p,n]_2 - PCI Express Lane 1 hdin[p,n]_3 - PCI Express Lane 0 IPUG85_01.1, February 2012 9 PCI Express 1.1 RC-Lite x1, x4 IP Core User's Guide Functional Description Table 2-1. PCI Express RC-Lite IP Core Port List (Continued) Port Name Direction Clock Description PCI Express 2.5 Gbps CML outputs for lanes 0,1,2, and 3. The port "flip_lanes" is used to define the connection of PCS/SERDES channel to PCI Express lane. hdout[p,n]_[0,1,2,3] flip_lanes=0 hdout[p,n]_0 - PCI Express Lane 0 hdout[p,n]_1 - PCI Express Lane 1 hdout[p,n]_2 - PCI Express Lane 2 hdout[p,n]_3 - PCI Express Lane 3 Output flip_lanes=1 hdout[p,n]_0 - PCI Express Lane 3 hdout[p,n]_1 - PCI Express Lane 2 hdout[p,n]_2 - PCI Express Lane 1 hdout[p,n]_3 - PCI Express Lane 0 Transmit TLP Interface tx_data_vc0[n:0] Input x4 Transmit data bus [63:56] Byte N [55:48] Byte N+1 [47:40] Byte N+2 [39:32] Byte N+3 [31:24] Byte N+4 sys_clk_125 [23:16] Byte N+5 [15: 8] Byte N+6 [7: 0] Byte N+7 x1 Transmit data bus [15:8] Byte N [7:0] Byte N+1 tx_req_vc0 Input Active High transmit request. This port is asserted when the user wants to send a TLP. If several TLPs will be prosys_clk_125 vided in a burst, this port can remain High until all TLPs have been sent. tx_rdy_vc0 Output Active High transmit ready indicator. Tx_st should be prosys_clk_125 vided next clock cycle after tx_rdy is High.This port will go Low between TLPs. tx_st_vc0 Input sys_clk_125 Active High transmit start of TLP indicator. tx_end_vc0 Input sys_clk_125 tx_nlfy_vc0 Input Active High transmit nullify TLP. Can occur anywhere during the TLP. If tx_nlfy_vc0 is asserted to nullify a TLP the sys_clk_125 tx_end_vc0 port should not be asserted. The tx_nlfy_vc0 terminates the TLP. tx_dwen_vc0 Input Active High transmit 32-bit word indicator. Used if only bits sys_clk_125 [63:32] provide valid data. This port is available only on the x4 core. Output Active High transmit clock enable. When a x4 is downgraded to a x1, this signal is used as the clock enable to sys_clk_125 downshift the transmit bandwidth. This port is available only on the x4 core. tx_val IPUG85_01.1, February 2012 10 Active High transmit end of TLP indicator. This signal must go Low at the end of the TLP. PCI Express 1.1 RC-Lite x1, x4 IP Core User's Guide Functional Description Table 2-1. PCI Express RC-Lite IP Core Port List (Continued) Port Name tx_ca_[ph,nph,cplh]_vc0[8:0] tx_ca_[pd,npd,cpld]_vc0[12:0] IPUG85_01.1, February 2012 Direction Clock Description Output Transmit Interface credit available bus. This port will decrement as TLPs are sent and increment as UpdateFCs are received. Ph - Posted header Nph - Non-posted header sys_clk_125 Cplh - Completion header This credit interface is only updated when an UpdateFC DLLP is received from the PCI Express line. [8] - This bit indicates the receiver has infinite credits. If this bit is High then bits. [7:0] should be ignored. [7:0] - The amount of credits available at the receiver. Output Transmit Interface credit available bus. This port will decrement as TLPs are sent and increment as UpdateFCs are received. pd - posted data sys_clk_125 npd - non-posted data cpld - completion data [12] - This bit indicates the receiver has infinite credits. If this bit is High, then bits [11:0] should be ignored. [11:0] - The amount of credits available at the receiver. 11 PCI Express 1.1 RC-Lite x1, x4 IP Core User's Guide Functional Description Table 2-1. PCI Express RC-Lite IP Core Port List (Continued) Port Name Direction Clock Description Receive TLP Interface rx_data_vc0[n:0] Output sys_clk_125 x4 Receive data bus [63:56] Byte N [55:48] Byte N+1 [47:40] Byte N+2 [39:32] Byte N+3 [31:24] Byte N+4 [23:16] Byte N+5 [15: 8] Byte N+6 [7: 0] Byte N+7 x1 Receive data bus [15:8] Byte N [7:0] Byte N+1 rx_st_vc0 Output sys_clk_125 Active High receive start of TLP indicator. rx_end_vc0 Output sys_clk_125 Active High receive end of TLP indicator. rx_dwen_vc0 Output sys_clk_125 Active High 32-bit word indicator. Used if only bits [63:32] contain valid data. This port is available only on the x4 core. rx_ecrc_err_vc0 Output sys_clk_125 Active High ECRC error indicator. Indicates a ECRC error in the current TLP. This port is available only if ECRC feature is selected while generating the IP core. rx_pois_tlp_vc0 Output sys_clk_125 Active High poisoned TLP indicator. Asserted if "poisoned (EP) " bits is set in any TLP with data. rx_malf_tlp_vc0 Output sys_clk_125 Active High malformed TLP indicator. Indicates a problem with the current TLPs length or format. [ph,pd, nph,npd,cplh,cpld] _buf_status_vc0 Input sys_clk_125 Active High user buffer full status indicator. When asserted, an UpdateFC will be sent for the type specified as soon as possible without waiting for the UpdateFC timer to expire. [ph,nph,cplh]_processed_vc0 Input sys_clk_125 Active High indicator to inform the IP core of how many credits have been processed. Each clock cycle High counts as one credit processed. The core will generate the required UpdateFC DLLP when either the UpdateFC timer expires or enough credits have been processed. [pd,npd,cpld]_processed_vc0 Input sys_clk_125 Active High enable for [pd, npd,cpld]_num_vc0 port. The user should place the number of data credits processed on the [pd, npd,cpld]_num_vc0 port and then assert [pd, npd]_processed_vc0 for one clock cycle. The core will generate the required UpdateFC DLLP when either the UpdateFC timer expires or enough credits have been processed. [pd,npd]_num_vc0[7:0] Input sys_clk_125 This port provides the number of PD or NPD or CPLD credits processed. It is enabled by the [pd, npd,cpld]_processed_vc0 port. Control and Status PHYSICAL LAYER flip_lanes IPUG85_01.1, February 2012 Input Async Reverses the lane connections to the SERDES. This function is used to provide flexibility for the PCB layout. The "Locating" section later in this document describes how this function can be used. 0-Lane 0 connects to SERDES Channel 0, etc. 1-Lane 0 connects to SERDES Channel 3, etc. 12 PCI Express 1.1 RC-Lite x1, x4 IP Core User's Guide Functional Description Table 2-1. PCI Express RC-Lite IP Core Port List (Continued) Port Name phy_ltssm_state[3:0] IPUG85_01.1, February 2012 Direction Output Clock Description sys_clk_125 PHY Layer LTSSM current state 0000 - Detect 0001 - Polling 0010 - Config 0011 - L0 0100 - L0s 0101 - L1 0110 - L2 0111 - Recovery 1000 - Loopback 1001 - Hot Reset 1010 - Disabled 13 PCI Express 1.1 RC-Lite x1, x4 IP Core User's Guide Functional Description Table 2-1. PCI Express RC-Lite IP Core Port List (Continued) Port Name phy_ltssm_substate[2:0] Direction Output Clock Description sys_clk_125 PHY Layer LTSSM current sub state. Each major LTSSM state has a series of sub states. When phy_ltssm_state=DETECT 000 - DET_WAIT 001 - DET_QUIET 010 - DET_GODET1 011 - DET_ACTIVE1 100 - DET_WAIT12MS 101 - DET_GODET2 110 - DET_ACTIVE2 111 - DET_EXIT When phy_ltssm_state=POLLING 000 - POL_WAIT 001 - POL_ACTIVE 010 - POL_COMPLIANCE 011 - POL_CONFIG 100 - POL_EXIT When phy_ltssm_state=CONFIG 000 - CFG_WAIT 001 - CFG_LINK_WIDTH_ST 010 - CFG_LINK_WIDTH_ACC 011 - CFG_LANE_NUM_WAIT 100 - CFG_LANE_NUM_ACC 101 - CFG_COMPLETE 110 - CFG_IDLE 111 - CFG_EXIT When phy_ltssm_state=L0 000 - L0_WAIT 001 - L0_L0 010 - L0_L0RX 011 - L0_L0TX 100 - L0_EIDLE_0 101 - L0_EIDLE_1 110 - L0_EXIT When phy_ltssm_state=L0s 000 - L0s_RX_WAIT 001 - L0s_RX_ENTRY 010 - L0s_RX_IDLE 011 - L0s_RX_FTS 100 - L0s_RX_EXIT When phy_ltssm_state=L1 000 - L1_WAIT 001 - L1_ENTRY 010 - L1_IDLE 011 - L1_EXIT When phy_ltssm_state=L2 000 - L2_WAIT 001 - L2_IDLE phy_cfgln_sum[2:0] IPUG85_01.1, February 2012 Output sys_clk_125 Link Width 000 - No link defined 001 - Link width = 1 100 - Link width = 4 14 PCI Express 1.1 RC-Lite x1, x4 IP Core User's Guide Functional Description Table 2-1. PCI Express RC-Lite IP Core Port List (Continued) Port Name Direction Clock Description phy_pol_compliance Output sys_clk_125 Active High indicator that the LTSSM is in the Polling.Compliance state. phy_force_cntl[3:0] Input sys_clk_125 These signals to be used only for debug purpose. [0] - force_lsm_active - Forces the Link State Machine for all of the channels to the linked state. [1] - force_rec_ei - Forces the detection of a received electrical idle. [2] - force_phy_status - Forces the detection of a receiver during the LTSSM Detect state on all of the channels. [3] - force_disable_scr - Disables scrambler and de-scrambler. phy_ltssm_cntl[15:0] Input sys_clk_125 [0] - no_pcie_train - Active High signal disables LTSSM training and forces the LTSSM to L0 as a x4 configuration. This is intended to be used in simulation only to force the LTSSM into the L0 state. [1] - retrain - Active High request to re-train the link when LTSSM is in L0. [2] - hl_disable_scr - Active High to set the disable scrambling bit in the TS1/TS2 sequence [3] - hl_gto_dis - Active High request to go to Disable state when LTSSM is in Config or Recovery. [4] - hl_gto_det - Active High request to go to Detect state when LTSSM is in L2 or Disable. [5] - hl_gto_hrst - Active High request to go to Hot Reset when LTSSM is in Recovery. [6] - hl_gto_l0stx - Active High request to go to L0s when LTSSM is in L0. [7] - hl_gto_l0stxfts - Active High request to go to L0s and transmit FTS when LTSSM is in L0s. [8] - hl_gto_l1 - Active High request to go to L1 when LTSSM is in L0. [9] - hl_gto_l2 - Active High request to go to L2 when LTSSM is in L0. [13:10] - hl_gto_lbk - Active High request to go to Loopback when LTSSM is in Config or Recovery [14] - hl_gto_rcvry - Active High request to go to Recovery when LTSSM is in L0, L0s or L1. [15] - hl_gto_cfg - Active High request to go to Config when LTSSM is in Recovery. tx_lbk_rdy Output sys_clk_125 This output port is used to enable the transmit master loopback data. This port is only available if the Master Loopback feature is enabled in the IPexpress tool. tx_lbk_kcntl[3:0] Input sys_clk_125 This input port is used to indicate a K control word is being sent on tx_lbk_data port. This port is only available if the Master Loopback feature is enabled in the IPexpress tool. x4 port [7] - K control on tx_lbk_data[63:56] [6] - K control on tx_lbk_data[55:48] [5] - K control on tx_lbk_data[47:40] [4] - K control on tx_lbk_data[39:32] [3] - K control on tx_lbk_data[31:24] [2] - K control on tx_lbk_data[23:16] [1] - K control on tx_lbk_data[15:8] [0] - K control on tx_lbk_data[7:0] x1 port [1] - K control on tx_lbk_data[15:8] [0] - K control on tx_lbk_data[7:0] IPUG85_01.1, February 2012 15 PCI Express 1.1 RC-Lite x1, x4 IP Core User's Guide Functional Description Table 2-1. PCI Express RC-Lite IP Core Port List (Continued) Port Name tx_lbk_data[31:0] Direction Input Clock Description sys_clk_125 This input port is used to send 32-bit data for the master loopback. This port is only available if the Master Loopback feature is enabled in the IPexpress tool. x4 port [63:56] - Lane 7 data [55:48] - Lane 6 data [47:40] - Lane 5 data [39:32] - Lane 4 data [31:24] - Lane 3 data [23:16] - Lane 2 data [15:8] - Lane 1 data [7:0] - Lane 0 data x1 port [15:8] - Lane 1 data [7:0] - Lane 0 data rx_lbk_kcntl[3:0] Output sys_clk_125 This output port is used to indicate a K control word is being received on rx_lbk_data port. This port is only available if the Master Loopback feature is enabled in the IPexpress tool. x4 port [7] - K control on rx_lbk_data[63:56] [6] - K control on rx_lbk_data[55:48] [5] - K control on rx_lbk_data[47:40] [4] - K control on rx_lbk_data[39:32] [3] - K control on rx_lbk_data[31:24] [2] - K control on rx_lbk_data[23:16] [1] - K control on rx_lbk_data[15:8] [0] - K control on rx_lbk_data[7:0] x1 port [1] - K control on rx_lbk_data[15:8] [0] - K control on rx_lbk_data[7:0] rx_lbk_data[31:0] Output sys_clk_125 This output port is used to receive 32-bit data for the master loopback. This port is only available if the Master Loopback feature is enabled in the IPexpress tool. x4 port [63:56] - Lane 7 data [55:48] - Lane 6 data [47:40] - Lane 5 data [39:32] - Lane 4 data [31:24] - Lane 3 data [23:16] - Lane 2 data [15:8] - Lane 1 data [7:0] - Lane 0 data x1 port [15:8] - Lane 1 data [7:0] - Lane 0 data DATA LINK LAYER IPUG85_01.1, February 2012 16 PCI Express 1.1 RC-Lite x1, x4 IP Core User's Guide Functional Description Table 2-1. PCI Express RC-Lite IP Core Port List (Continued) Port Name Direction Clock Description dll_status[7:0] Output sys_clk_125 [0] - dl_up - Data Link Layer is in the up and ready to send/receive TLPs from/to Transaction Layer. [1] - dl_init - Data Link Layer is in the DL_Init state. [2] - dl_inactive - Data Link Layer is the DL_Inactive state. [3] - bad_dllp - Data link Layer received a bad DLLP. [4] - dlerr - Data Link Layer Protocol error. [5] - bad_tlp - Data link Layer received a bad TLP. [6] - rply_tout - Indicates a replay timeout [7] - rnum_rlor - Indicates replay number roll over which initiates Link re-training. tx_dllp_val Input sys_clk_125 Active High power message send command. 00 - Nothing to send 01 - Send DLLP using tx_pmtype DLLP 10 - Send DLLP using tx_vsd_data Vendor Defined DLLP 11 - Not used tx_pmtype[2:0] Input sys_clk_125 Transmit power message type 000 - PM Enter L1 001 - PM Enter L2 011 - PM Active State Request L1 100 - PM Request Ack tx_vsd_data[23:0] Input sys_clk_125 Vendor-defined data to send in DLLP. tx_dllp_sent Output sys_clk_125 Requested DLLP was sent. rxdp_pmd_type[2:0] Output Receive power message type 000 - PM Enter L1 sys_clk_125 001 - PM Enter L2 011 - PM Active State Request L1 100 - PM Request Ack rxdp_vsd_data[23:0] Output sys_clk_125 Received vendor-defined DLLP data. rxdp_dllp_val Output sys_clk_125 Active High DLLP received TRANSACTION LAYER ecrc_gen_enb Input Async Active High enable for ECRC generation. When asserted, IP generates and inserts ECRC to transmitting TLPs. When asserted, the TD bit in the transmit TLP header must be set. This port is available only if ECRC feature is selected while generating the IP core. ecrc_chk_enb Input Async Active High enable for ECRC checking. When asserted, IP checks ECRC in received TLPs. This port is available only if ECRC feature is selected while generating the IP core. int[a,b,c,d]_n Output sys_clk_125 Active Low interrupt wires. 0 - Received Assert INTx message TLP. 1 - Received De-Assert INTx message TLP. nftl_err_msg Output sys_clk_125 Active High signal indicates receiving a NON-FATAL ERROR message TLP. ftl_err_msg Output sys_clk_125 Active High signal indicates receiving a FATAL ERROR message TLP. corr_err_msg Output sys_clk_125 Active High signal indicates receiving a CORRECTABLE ERROR message TLP. MESSAGE DECODES IPUG85_01.1, February 2012 17 PCI Express 1.1 RC-Lite x1, x4 IP Core User's Guide Functional Description Interface Description This section describes the datapath user interfaces of the IP core. Both the transmit and receive interfaces use the TLP as the data structure. Transmit TLP Interface In the transmit direction, the user must first check the credits available on the far end before sending the TLP. This information is found on the tx_ca_[ph,pd,nph,npd,cplh,cpld]_vc0 bus. There must be enough credits available for the entire TLP to be sent. The user must then check that the core is ready to send the TLP. This is done by asserting the tx_req_vc0 port and waiting for the assertion of tx_rdy_vc0. If there is enough credit, the user can proceed with sending the data based on tx_rdy_vc0. If the credit becomes insufficient, tx_req_vc0 must be de-asserted on the next clock until enough credit is available. When tx_rdy_vc0 is asserted, the next clock cycle will provide the first 64-bit word of the TLP and will assert tx_st_vc0. The tx_rdy_vc0 signal will remain High until one clock cycle before the last clock cycle of TLP data (based on the length field of the TLP). This allows the tx_rdy_vc0 to be used as the read enable of a non-pipelined FIFO. Transmit TLP Interface Waveforms for x4 Core Figure 2-4 through Figure 2-10 provide timing diagrams for the tx interface signals with a 64-bit datapath. Figure 2-4. Transmit Interface x4, 3DW Header, 1 DW Data sys_clk_125 tx_val tx_req_vc0 tx_rdy_vc0 tx_st_vc0 tx_end_vc0 tx_data_vc0[63:0] H0H1 H2D0 tx_dwen_vc0 tx_nlfy_vc0 tx_ca_*h_vc0 20 19 tx_ca_*d_vc0 35 34 IPUG85_01.1, February 2012 18 PCI Express 1.1 RC-Lite x1, x4 IP Core User's Guide Functional Description Figure 2-5. Transmit Interface x4, 3DW Header, 2 DW Data sys_clk_125 tx_val tx_req_vc0 tx_rdy_vc0 tx_st_vc0 tx_end_vc0 tx_ data_vc0[63:0] H0H1 H2D0 D1 tx_ dwen_vc0 tx_nlfy_vc0 tx_ca_*h_vc0 20 19 tx_ca_*d_vc0 35 34 IPUG85_01.1, February 2012 19 PCI Express 1.1 RC-Lite x1, x4 IP Core User's Guide Functional Description Figure 2-6. Transmit Interface x4, 4DW Header, 0 DW sys_clk_125 tx_val tx_req_vc0 tx_rdy_vc0 tx_st_vc0 tx_end_vc0 tx_data_vc0[63:0] H0H1 H2H3 tx_dwen_vc0 tx_nlfy_vc0 tx_ca_*h_vc0 20 tx_ca_*d_vc0 35 IPUG85_01.1, February 2012 20 19 PCI Express 1.1 RC-Lite x1, x4 IP Core User's Guide Functional Description Figure 2-7. Transmit Interface x4, 4DW Header, Odd Number of DWs sys_clk_125 tx_val tx_req_vc0 tx_rdy_vc0 tx_st_vc0 tx_end_vc0 tx_data_vc0[63:0] H0H1 H2H3 D0D1 D1D2 D14 tx_dwen_vc0 tx_nlfy_vc0 tx_ca_*h_vc0 20 19 tx_ca_*d_vc0 35 31 IPUG85_01.1, February 2012 21 PCI Express 1.1 RC-Lite x1, x4 IP Core User's Guide Functional Description Figure 2-8. Transmit Interface x4, Burst of Two TLPs sys_clk_125 tx_val tx_req_vc0 tx_rdy_vc0 tx_st_vc0 tx_end_vc0 tx_data_vc0[63:0] H0H1 H0H1 1st TLP Dn 2nd TLP tx_dwen_vc0 tx_nlfy_vc0 Figure 2-9. Transmit Interface x4, Nullified TLP sys_clk_125 tx_val tx_req_vc0 tx_rdy_vc0 tx_st_vc0 tx_end_vc0 tx_data_vc0[63:0] H0H1 Dn tx_dwen_vc0 tx_nlfy_vc0 IPUG85_01.1, February 2012 22 PCI Express 1.1 RC-Lite x1, x4 IP Core User's Guide Functional Description Figure 2-10. Transmit Interface x4 Downgraded to x1 Using tx_val sys_clk_125 tx_val tx_req_vc0 tx_rdy_vc0 tx_st_vc0 tx_end_vc0 H0H1 tx_data_vc0[63:0] H2H3 D0D1 D2D3 tx_dwen_vc0 tx_nlfy_vc0 tx_ca_*h_vc0 20 19 tx_ca_*d_vc0 35 34 Transmit TLP Interface Waveforms for x1 Figure 2-11 through Figure 2-13 provide timing diagrams for the transmit interface signals with a 16-bit datapath. Figure 2-11. Transmit Interface x1, 3DW Header, 1 DW Data sys_clk_125 tx_req_vc0 tx_rdy_vc0 tx_st_vc0 tx_end_vc0 tx_data_vc0[15:0] H0 H0 H1 H1 H2 H2 D0 D0 tx_nlfy_vc0 IPUG85_01.1, February 2012 23 PCI Express 1.1 RC-Lite x1, x4 IP Core User's Guide Functional Description Figure 2-12. Transmit Interface x1, Burst of Two TLPs sys_clk_125 tx_req_vc0 tx_rdy_vc0 tx_st_vc0 tx_end_vc0 tx_data_vc0[15:0] H0 Dn Dn+1 H0 Dn Dn+1 2nd TLP 1st TLP tx_nlfy_vc0 Figure 2-13. Transmit Interface x1, Nullified TLP sys_clk_125 tx_req_vc0 tx_rdy_vc0 tx_st_vc0 tx_end_vc0 tx_data_vc0[15:0] H0 H0 H1 H1 Dn tx_nlfy_vc0 Receive TLP Interface In the receive direction, TLPs will come from the core as they are received on the PCI Express lanes. Interrupt messages and Error Message TLPs are processed by the IP core and corresponding signals are provided through ports. Interrupt message TLPs are decoded to ports inta_n, intb_n, intc_n and Intd_n. Error message TLPs are decoded to ports ftl_err_msg, nftl_err_msg and cor_err_msg. Figure 2-14 through Figure 2-16 provide timing diagrams of the these ports. When a TLP is sent to the user the rx_st_vc0 signal will be asserted with the first word of the TLP. The remaining TLP data will be provided on consecutive clock cycles until the last word with rx_end_vc0 asserted. If the TLP contains a ECRC error the rx_ecrc_err_vc0 signal will be asserted at the end of the TLP. If the TLP has a length problem the rx_malf_tlp_vc0 will be asserted at any time during the TLP. Figure 2-14 through Figure 2-16 provide timing diagrams of the receive interface. IPUG85_01.1, February 2012 24 PCI Express 1.1 RC-Lite x1, x4 IP Core User's Guide Functional Description TLPs come from the receive interface only as fast as they come from the PCI Express lanes. There will always be at least one clock cycle between rx_end_vc0 and the next rx_st_vc0. Figure 2-14. Receive Interface, Clean TLP sys_clk_125 rx_st_vc0 rx_end_vc0 rx_data_vc0[n:0] H ... ... ... ... ... Dn rx_dwen_vc0 (x4 core only) rx_ecrc_err_vc0 rx_malf_tlp_vc0 Figure 2-15. Receive Interface, ECRC Errored TLP sys_clk_125 rx_st_vc0 rx_end_vc0 rx_data_vc0[n:0] H ... Dn rx_dwen_vc0 (x4 core only) rx_ecrc_err_vc0 rx_malf_tlp_vc0 IPUG85_01.1, February 2012 25 PCI Express 1.1 RC-Lite x1, x4 IP Core User's Guide Functional Description Figure 2-16. Receive Interface, Malformed TLP sys_clk_125 rx_st_vc0 rx_end_vc0 rx_data_vc0[n:0] H ... ... ... Dn rx_dwen_vc0 (x4 core only) rx_ecrc_err_vc0 rx_malf_tlp_vc0 Message Decode Interface Interrupt Signaling Messages As a receiver, RC-Lite will decode all INTx Interrupt signaling messages and signal corresponding interrupts on ports to the user. Refer to signal descriptions of ports "inta_n, intb_n, intc_n and intd_n" in Table 2-1 on page 9. The signals "inta_n, intb_n, intc_n and intd_n" are active Low and are set to 1'b1 after the reset. When RC-Lite receives a valid "Assert_INTA, Assert_INTB, Assert_INTC or Assert_INTD" messages, corresponding port "inta_n, intb_n, intc_n or intd_n" is reset to 1'b0 and held until a corresponding "Deassert_INTA, Deassert_INTB, Deassert_INTC or Deassert_INTD" message is received. For designs using x4, whenever these ports change from 1'b1 to 1'b0 or 1'b0 to 1'b1, the data bus rx_data_vc0[63:0] contain the byte0 through byte7 of the message TLP header in the following clock cycle. Refer to Figure 2-17 for an interface diagram. Figure 2-17. Message Decode Interface x4, INTx signaling sys_clk_125 rx_st_vc0 rx_end_vc0 rx_data_vc0[63:0] H H inta_n / intb_n / intc_n / intd_n For designs using x1, the rx_st_vc0[15:0] signal will be asserted with the first word of the TLP. The remaining seven words of the interrupt message will be provided on consecutive clock cycles until the last word with rx_end_vc0 is asserted. Refer to Figure 2-18 for an interface diagram. IPUG85_01.1, February 2012 26 PCI Express 1.1 RC-Lite x1, x4 IP Core User's Guide Functional Description Figure 2-18. Message Decode Interface x1, INTx signaling sys_clk_125 rx_st_vc0 rx_end_vc0 rx_data_vc0[15:0] H1 H2 ... ... H8 inta_n / intb_n / intc_n / intd_n Error Signaling Messages As a receiver, RC-Lite will decode all Error signaling messages and signal corresponding errors on ports to the user. Refer to signal descriptions of ports "ftl_err_msg, nftl_err_msg and cor_err_msg" in Table 2-1 on page 9. The signals "cor_err_msg, nftl_err_msg and ftl_err_msg" are active High and are set to 1'b0 after the reset. For designs using x4, when RC-Lite receives a valid "ERR_COR or ERR_NONFATAL or ERR_FATAL" message, port "cor_err_msg or nftl_err_msg or ftl_err_msg" is set to 1'b1 for one clock cycle. Whenever these ports are pulsed, the data bus rx_data_vc0[63:0] contains the byte0 through byte7 of the message TLP header. Refer to Figure 2-19 for an interface diagram. Figure 2-19. Message Decode Interface x4, Error signaling sys_clk_125 rx_st_vc0 rx_end_vc0 rx_data_vc0[63:0] H cor_err_msg / ftl_err_msg / nftl_err_msg For designs using x1, rx_st_vc0[15:0] signal will be asserted with the first word of the TLP. The remaining seven words of the error message will be provided on consecutive clock cycles until the last word with both rx_end_vc0 and err_msg is asserted. Refer to Figure 2-20 for an interface diagram. IPUG85_01.1, February 2012 27 PCI Express 1.1 RC-Lite x1, x4 IP Core User's Guide Functional Description Figure 2-20. Message Decode Interface x1, Error signaling sys_clk_125 rx_st_vc0 rx_end_vc0 rx_data_vc0[15:0] H1 H2 ... ... H8 cor_err_msg / ftl_err_msg / nftl_err_msg Using the Transmit and Receive Interfaces There are two ways a PCI Express RC-Lite can interact with an endpoint. As a completer, the RC-Lite will respond to accesses made by the endpoint. As an initiator, the RC-Lite will perform accesses to the endpoint. The following sections will discuss how to use transmit and receive TLP interfaces for both of these types of interactions. As a Receiver As a receiver, RC-Lite can receive any type of TLP from an endpoint. When a TLP other than Interrupt or error message TLP is received, the PCI Express RC-Lite core will forward the TLP to the user interface. The rx_st_vc0 will be asserted with rx_data_vc0 providing the first eight bytes of the TLP. The TLP will terminate with the rx_end_vc0 port asserting. The user must now terminate the received TLP by release credit returns and completions for a non-posted request. The user logic must decode release credits for all received TLPs except for errored TLPs. If the core finds any errors in the current TLP, the error will be indicated on the rx_ecrc_err_vc0 or rx_malf_tlp_vc0 port. If the TLP is a 32-bit MWr TLP or a 64-bit MWr TLP, the address and data need to be extracted and written to the appropriate memory space. Once the TLP is processed, the posted credits for the MWr TLP must be released to the far end. This is done using the ph_processed_vc0, pd_processed_vc0, and pd_num_vc0 ports. Each MWr TLP takes one header credit. There is one data credit used per four DWs of data. The length field provides the number of DWs used in the TLP. If the TLP length is on the 4DW boundary, the number of credits is the TLP length divided by four. If the TLP length is not on the 4DW boundary, the number of credits is the length field + 1 (round up by 1). The number of credits used should then be placed on pd_num_vc0[7:0]. Assert ph_processed_vc0 and pd_processed_vc0 for one clock cycle to latch in the pd_num_vc0 port and release credits. If the TLP is a 32-bit MRd TLP or a 64-bit MRd TLP, the address needs to be read creating a completion TLP with the data. A Completion with Data (CplD) TLP will need to be created using the same tag from the MRd. This tag field allows the far end device to associate the completion with a read request. The completion must not violate the read completion boundary of the far end requestor. The read completion boundary of the requestor can be found in the Link Control Register of the PCI Express capability structure. This information can be found from the IP core using the link_cntl_out[3]. If this bit is 0, then the read completion boundary is 64 bytes. If this bit is a 1, then the read completion boundary is 128 bytes. The read completion boundary tells the completer how to segment the CplDs required to terminate the read request. A completion must not cross a read completion boundary and must not exceed the maximum payload size. The Lower Address field of the CplD informs the far end that the lower address of the current CplD allows the far end to piece the entire read data back together. If the TLP is a CPL TLP, once the TLP is processed the completion credits for the CPL TLP must be released to the far end. This is done using the cplh_processed_vc0, cpld_processed_vc0, and cpld_num_vc0 ports. Each CPL TLP takes one header credit. There is one data credit used per four DWs of data. The length field provides the IPUG85_01.1, February 2012 28 PCI Express 1.1 RC-Lite x1, x4 IP Core User's Guide Functional Description number of DWs used in the TLP. If the TLP length is on the 4DW boundary, the number of credits is the TLP length divided by four. If the TLP length is not on the 4DW boundary, the number of credits is the length field + 1 (round up by 1). The number of credits used should then be placed on cpld_num_vc0[7:0]. Assert cplh_processed_vc0 and cpld_processed_vc0 for one clock cycle to latch in the cpld_num_vc0 port and release credits. As a Transmitter As a transmitter, the RC-Lite can send any type of TLP to the far end endpoint. In order to access memory on the far end device the physical memory address will need to be known. The physical memory address is the address used in the MWr and MRd TLP. To send a MWr TLP, the user must assemble the MWr TLP and then check to see if the credits are available to send the TLP. The credits consumed by a MWr TLP is the length field divided by four. This value should be compared against the tx_ca_pd port value. If tx_ca_pd[12] is High, this indicates the far end has infinite credits available. The TLP can be sent regardless of the size. A MWr TLP takes one posted header credit. This value can be compared against the tx_ca_ph port. Again, if tx_ca_ph[8] is High, this indicates the far end has infinite credits available. To send a MRd TLP the user must assemble the MRd TLP and then check to see if the credits are available to send the TLP. The credits consumed by a MRd TLP is 1 non-posted header credit. This value should be compared against the tx_ca_nph port value. If tx_ca_nph[8] is High, this indicates the far end has infinite credits available. After a non-posted TLP is sent, the np_req_pend port should be asserted until all non-posted requests are terminated. To send Cpl TLP, the user must assemble the Cpl TLP and then check to see if the credits are available to send the TLP. The Cpl TLP without data consumes only header credit and value should be compared against the tx_ca_cplh port value. If tx_ca_cplh[8] is High, this indicates the far end has infinite credits available. The Cpl with data TLP also consumes data credits and is the length field divided by four. This value should be compared against the tx_ca_cpld port value. If tx_ca_cpld[12] is High, this indicates the far end has infinite credits available. IPUG85_01.1, February 2012 29 PCI Express 1.1 RC-Lite x1, x4 IP Core User's Guide Chapter 3: Parameter Settings The IPexpress tool is used to create IP and architectural modules in the Diamond and ispLEVER software. Refer to "IP Core Generation and Evaluation" on page 35 for a description on how to generate the IP. Table 3-1 provides the list of user configurable parameters for the PCI Express RC-Lite IP core. The parameter settings are specified using the PCI Express RC-Lite IP core Configuration GUI in IPexpress. Table 3-1. IP Core Parameters Parameters Range/Options Default General PCI Express Link Configuration Include Master Loop back data path Include ECRC support x4 , x1 x4 Yes / No No Yes / No No 128, 256, 512, 1k, 2k, 4k 128 Number of PH credits between UpdateFC P 1 - 127 8 Number of PD credits between UpdateFC P 1 - 2047 255 Number of NPH credits between UpdateFC NP 1 - 127 8 Number of NPD credits between UpdateFC NP 1 - 2047 255 Number of CPLH credits between UpdateFC CPL 1 - 127 8 Number of CPLD credits between UpdateFC CPL 1 - 2047 255 3650 - 4095 4095 Yes / No Yes Maximum Payload Size (Bytes) Flow Control Worst case number of 125 MHz clock cycles between UpdateFC Infinite PH Credits Initial PH credits available 1 - 127 0 Infinite PD Credits Yes / No Yes Initial PD credits available 8 - 255 0 Infinite NPH Credits Yes / No Yes Initial NPH credits available 1 - 127 0 Infinite NPD Credits Yes / No Yes Initial NPD credits available 8 - 255 0 Infinite CPLH Credits Yes / No Yes Initial CPLH credits available 1 - 127 0 Infinite CPLD Credits Yes / No Yes Initial CPLD credits available 8 - 255 0 The default values shown in the following pages are those used for the PCI Express RC-Lite IP core reference design. IP core options for each tab are discussed in further detail. IPUG85_01.1, February 2012 30 PCI Express 1.1 RC-Lite x1, x4 IP Core User's Guide Parameter Settings General Tab Figure 3-1 shows the contents of the General tab. Figure 3-1. PCI Express RC-Lite General Tab The General tab consists of the following parameters: PCI Express Link Configuration Specifies the link width and type of core to be used. * x4 - This is a x4 link width using a 64-bit datapath. This configuration can dynamically downgrade to a x1 link width. * x1 - This is a x1 link width using a 16-bit datapath. Include Master Loopback Data Path This option includes additional transmit and receive data path ports to the IP, if the device needs to be used as a loopback master in Loopback state of the LTSSM. In Table 2-1 on page 9, refer to following I/O ports: tx_lbk_rdy tx_lbk_kcntl tx_lbk_data rx_lbk_kcntl rx_lbk_data Maximum Payload Size This option selects the maximum pay load size to be supported in the IP core and will be used to check the length of the received packets and also to size the Retry Buffer contained in the Data Link Layer. The retry buffer uses Embedded Block RAM (EBR) and will be sized accordingly. Table 3-2 provides a total EBR count for the core based on Max Payload Size. Table 3-2. Total EBR Count Based on Maximum Payload Size Maximum payload size LatticeECP3/ECP2m X4 EBR usage LatticeECP3/ECP2m X1 EBR usage 128 B 9 3 256 B 9 3 512 B 9 3 IPUG85_01.1, February 2012 31 PCI Express 1.1 RC-Lite x1, x4 IP Core User's Guide Parameter Settings Table 3-2. Total EBR Count Based on Maximum Payload Size (Continued) Maximum payload size LatticeECP3/ECP2m X4 EBR usage LatticeECP3/ECP2m X1 EBR usage 1 kB 9 4 2 kB 11 8 4 kB 16 14 Include ECRC Support This option includes the ECRC generation and checking logic into the IP core. The ECRC logic is only utilized if the user enables this feature using the top level ports ecrc_gen_enb and ecrc_chk_enb. Not including this features saves nearly 1k LUTs from the core. Flow Control Tab Figure 3-2 shows the contents of the Flow Control tab. Figure 3-2. PCI Express RC-Lite Flow Control Tab Initial Receive Credits During the Data Link Layer Initialization InitFC1 and InitFC2 DLLPs are transmitted and received. This function is to allow both ends of the link to advertise the amount of credits available. The following controls are used to set the amount of credits available that the IP core will advertise during this process. IPUG85_01.1, February 2012 32 PCI Express 1.1 RC-Lite x1, x4 IP Core User's Guide Parameter Settings Infinite PH Credits This option is used if the device will have an infinite buffer for PH credits. This is typically used if the device will terminate any PH TLP immediately. Initial PH Credits Available If PH infinite credits are not used then this control allows the user to set a initial credit value. This will be based on the receive buffering that exists in the user's design connected to the receive interface. Infinite PD Credits This option is used if the device will have an infinite buffer for PD credits. This is typically used if the device will terminate any PD TLP immediately. Initial PD Credits Available If PD infinite credits are not used then this control allows the user to set a initial credit value. This will be based on the receive buffering that exists in the user's design connected to the receive interface. Infinite NPH Credits This option is used if the device will have an infinite buffer for NPH credits. This is typically used if the device will terminate any NPH TLP immediately. Initial NPH Credits Available If NPH infinite credits are not used then this control allows the user to set a initial credit value. This will be based on the receive buffering that exists in the user's design connected to the receive interface. Infinite NPD Credits This option is used if the device will have an infinite buffer for NPD credits. This is typically used if the device will terminate any NPD TLP immediately. Initial NPD Credits Available If NPD infinite credits are not used then this control allows the user to set a initial credit value. This will be based on the receive buffering that exists in the user's design connected to the receive interface. Infinite CPLH Credits This option is used if the device will have an infinite buffer for CPLH credits. This is typically used if the device will terminate any CPLH TLP immediately. Initial CPLH Credits Available If CPLH infinite credits are not used then this control allows the user to set a initial credit value. This will be based on the receive buffering that exists in the user's design connected to the receive interface. Infinite CPLD Credits This option is used if the device will have an infinite buffer for CPLD credits. This is typically used if the device will terminate any CPLD TLP immediately. Initial CPLD Credits Available If CPLD infinite credits are not used then this control allows the user to set a initial credit value. This will be based on the receive buffering that exists in the user's design connected to the receive interface. Update Flow Control Generation Control There are two times when an UpdateFC DLLP will be sent by the IP core. The first is based on the number of TLPs (header and data) that were processed. The second is based on a timer. IPUG85_01.1, February 2012 33 PCI Express 1.1 RC-Lite x1, x4 IP Core User's Guide Parameter Settings For both controls a larger number will reduce the amount of UpdateFC DLLPs in the transmit path resulting in more throughput for the transmit TLPs. However, a larger number will also increase the latency of releasing credits for the far end to transmit more data to the device. A smaller number will increase the amount of UpdateFC DLLPs in the transmit path. But, the far end will see credits available more quickly. Number of P TLPs Between UpdateFC This control sets the number of Posted Header TLPs that have been processed before sending an UpdateFC-P. Number of PD TLPs Between UpdateFC This control sets the number of Posted Data TLPs (credits) that have been processed before sending an UpdateFC-P. Number of NP TLPs Between UpdateFC This control sets the number of Non-Posted Header TLPs that have been processed before sending an UpdateFCNP. Number of NPD TLPs Between UpdateFC This control sets the number of Non-Posted Data TLPs (credits) that have been processed before sending an UpdateFC-NP. Number of CPL TLPs Between UpdateFC This control sets the number of completion Header TLPs that have been processed before sending an UpdateFCNP. Number of CPLD TLPs Between UpdateFC This control sets the number of completion with Data TLPs (credits) that have been processed before sending an UpdateFC-NP. Worst Case Number of 125MHz Clock Cycles Between UpdateFC This is the timer control that is used to send UpdateFC DLLPs. The core will send UpdateFC DLLPs for all three types when this timer expires regardless of the number of credits released. IPUG85_01.1, February 2012 34 PCI Express 1.1 RC-Lite x1, x4 IP Core User's Guide Chapter 4: IP Core Generation and Evaluation This chapter provides information on licensing the PCI Express RC-Lite IP core, generating the core using the Diamond or ispLEVER software IPexpress tool, running functional simulation, and including the core in a top-level design. The Lattice PCI Express RC-Lite IP core can be used in LatticeECP2M and LatticeECP3 device families. Licensing the IP Core An IP license is required to enable full, unrestricted use of the PCI Express RC-Lite IP core in a complete, top-level design. The specific PCI Express RC-Lite IP core licensing requirements are different for targeting the LatticeECP2M and LatticeECP3 families. Licensing Requirements for LatticeECP2M/LatticeECP3 An IP license that specifies the IP core (PCI Express RC-Lite IP), device family (ECP2M or ECP3) and configuration (x1 or x4) is required to enable full use of the PCI Express RC-Lite IP core in LatticeECP2M or LatticeECP3 devices. Instructions on how to obtain licenses for Lattice IP cores are given at: http://www.latticesemi.com/products/intellectualproperty/aboutip/isplevercoreonlinepurchas.cfm Users may download and generate the PCI Express RC-Lite IP core for Lattice ECP2M and LatticeECP3 and fully evaluate the core through functional simulation and implementation (synthesis, map, place and route) without an IP license. The PCI Express RC-Lite IP core for LatticeECP2M and Lattice ECP3 also supports Lattice's IP hardware evaluation capability, which makes it possible to create versions of the IP core that operate in hardware for a limited time (approximately four hours) without requiring an IP license (see "Hardware Evaluation" on page 41 for further details). However, a license is required to enable timing simulation, to open the design in the Diamond or ispLEVER EPIC tool, and to generate bitstreams that do not include the hardware evaluation timeout limitation. Note that there are no specific IP licensing requirements associated with an x4 core that functionally supports the ability to downgrade to an x1 configuration. Such a core is licensed as an x4 configuration. Getting Started The PCI Express RC-Lite IP core is available for download from the Lattice IP server using the IPexpress tool. The IP files are automatically installed using ispUPDATE technology in any customer-specified directory. After the IP core has been installed, the IP core will be available in the IPexpress GUI dialog box shown in Figure 4-1. The IPexpress tool GUI dialog box for the PCI Express RC-Lite IP core is shown in Figure 4-1. To generate a specific IP core configuration the user specifies: * Project Path - Path to the directory where the generated IP files will be located. * File Name - "username" designation given to the generated IP core and corresponding folders and files. * (Diamond) Module Output - Verilog or VHDL. * (ispLEVER) Design Entry Type - Verilog HDL or VHDL. * Device Family - Device family to which IP is to be targeted (e.g. LatticeSCM, Lattice ECP2M, LatticeECP3, etc.). Only families that support the particular IP core are listed. * Part Name - Specific targeted part within the selected device family. IPUG85_01.1, February 2012 35 PCI Express 1.1 RC-Lite x1, x4 IP Core User's Guide IP Core Generation and Evaluation Figure 4-1. IPexpress Dialog Box (Diamond Version) Note that if the IPexpress tool is called from within an existing project, Project Path, Module Output (Design Entry in ispLEVER), Device Family and Part Name default to the specified project parameters. Refer to the IPexpress tool online help for further information. To create a custom configuration, the user clicks the Customize button in the IPexpress tool dialog box to display the PCI Express RC-Lite IP core Configuration GUI, as shown in Figure 4-2. From this dialog box, the user can select the IP parameter options specific to their application. Refer to "Parameter Settings" on page 30 for more information on the PCI Express RC-Lite IP core parameter settings. Additional information and known issues about the PCI Express RC-Lite IP core are provided in a ReadMe document that may be opened by clicking on the Help button in the Configuration GUI. IPUG85_01.1, February 2012 36 PCI Express 1.1 RC-Lite x1, x4 IP Core User's Guide IP Core Generation and Evaluation Figure 4-2. Configuration GUI (Diamond Version) IPexpress-Created Files and Top Level Directory Structure When the user clicks the Generate button in the IP Configuration dialog box, the IP core and supporting files are generated in the specified "Project Path" directory. The directory structure of the generated files is shown in Figure 4-3. IPUG85_01.1, February 2012 37 PCI Express 1.1 RC-Lite x1, x4 IP Core User's Guide IP Core Generation and Evaluation Figure 4-3. LatticeECP3 PCI Express RC-Lite IP Core Directory Structure The design flow for IP created with the IPexpress tool uses a post-synthesized module (NGO) for synthesis and a protected model for simulation. The post-synthesized module is customized and created during the IPexpress tool generation. The protected simulation model is not customized during the IPexpress tool process, and relies on parameters provided to customize behavior during simulation. Table 4-1 provides a list of key files and directories created by the IPexpress tool and how they are used. The IPexpress tool creates several files that are used throughout the design cycle. The names of most of the created files are customized to the user's module name specified in the IPexpress tool. Table 4-1. File List File Sim Synthesis/ _inst.v Description This file provides an instance template for the IP. .v Yes This file provides the PCI Express RC-Lite IP core for simulation. _beh.v Yes This file provides the front-end simulation library for the PCI Express RC-Lite IP core. pci_exp_params.v Yes This file provides the user options of the IP for the simulation model. pci_exp_ddefines.v Yes This file provides parameters necessary for the simulation. _bb.v Yes This file provides the synthesis black box for the user's synthesis. .ngo Yes This file provides the synthesized IP core. Yes This file contains the PCS/SERDES memory map initialization. This file must be copied in to the simulation directory as well as the Diamond or ispLEVER software project directory. For the LatticeECP3/LatticeECP2M x4 Native and x1 Downgraded this file is named pcs_pipe_8b_x4.txt. For the LatticeECP3/LatticeECP2M x1 Native this file is named pcs_pipe_8b_x1.txt. PCS autoconfig file IPUG85_01.1, February 2012 Yes 38 PCI Express 1.1 RC-Lite x1, x4 IP Core User's Guide IP Core Generation and Evaluation Table 4-1. File List (Continued) File Sim Synthesis/ Description .lpc This file contains the IPexpress tool options used to recreate or modify the core in the IPexpress tool. .ipx The IPX file holds references to all of the elements of an IP or Module after it is generated from the IPexpress tool (Diamond version only). The file is used to bring in the appropriate files during the design implementation and analysis. It is also used to re-load parameter settings into the IP/Module generation GUI when an IP/Module is being re-generated. pmi_*.ngo These files contain the memories used by the IP core. These files need to be pointed to by the Build step by using the search path property. _eval This directory contains a sample design. This design is capable of performing a simulation and running through the Diamond or ispLEVER software. LatticeECP3/LatticeECP2M-Specific Files _top.[v,vhd] Optional Optional This file provides a module which instantiates the PCI Express RC-Lite IP core and the PIPE interface. This file can be easily modified for the user's instance of the PCI Express RC-Lite IP core. This file is located in the _eval/pcie/src/top directory. pcs_pipe_top.v Yes This is the top level of the PIPE interface. This file is located in the _eval/models/[ecp3/ecp2m] directory. All of the HDL files located in this directory are used to simulate the PIPE interface. pcs_pipe_bb.v Yes This file provides the synthesis black box for the PIPE interface. This file is located in the _eval/models/[ecp3/ecp2m] directory. pcs_pipe_top.ngo Yes This file provides the synthesized PIPE interface used by the Diamond or ispLEVER software. This file needs to be pointed to by the Build step using the search path property. Most of the files required to use the PCI Express RC-Lite IP core in a user's design reside in the root directory created by the IPexpress tool. This includes the synthesis black box, simulation model, and example preference file. The \pcie_eval and subtending directories provide files supporting PCI Express RC-Lite IP core evaluation. The \pcie_eval directory contains files/folders with content that is constant for all configurations of the PCI Express RC-Lite IP core. The \ subfolder (\pcie_rc_lite_core0 in this example) contains files/folders with content specific to the configuration. The PCI Express RC-Lite IP core ReadMe document is also provided in the \pcie_eval directory. For example information and known issues on this core, see the Lattice PCI Express RC-Lite IP core ReadMe document. This file is available when the core is installed in the Diamond or ispLEVER software. The document provides information on creating an evaluation version of the core for use in Diamond or ispLEVER and simulation. The \pcie_eval directory is created by the IPexpress tool the first time the core is generated and updated each time the core is regenerated. A \ directory is created by the IPexpress tool each time the core is generated and regenerated each time the core with the same file name is regenerated. A separate \ directory is generated for cores with different names, e.g. \, \, etc. The \pcie_eval directory provides an evaluation design which can be used to determine the size of the IP core and a design which can be pushed through the Diamond or ispLEVER software including front-end and timing simulations. The models directory provides the library element for the PCS (and PIPE interface for LatticeECP3 and LatticeECP2M). The \ directory contains the sample design for the configuration specified by the customer. The \\impl directory provides project files supporting Precision RTL and Synplify synthesis flows. The sample design pulls the user ports out to external pins. This design and associated project files can be used to IPUG85_01.1, February 2012 39 PCI Express 1.1 RC-Lite x1, x4 IP Core User's Guide IP Core Generation and Evaluation determine the size of the core and to push it through the mechanics of the Diamond or ispLEVER software design flow. The \\sim directory provides project files supporting RTL and timing simulation for both the ActiveHDL and ModelSim simulators. The \\src directory provides the top-level source code for the eval design. The \testbench directory provides a top-level testbench and test case files. Running Functional Simulation Simulation support for the PCI Express RC-Lite IP core is provided for Aldec and ModelSim simulators. The PCI Express RC-Lite IP core simulation model is generated from the IPexpress tool with the name .v. This file calls _beh.v which contains the obfuscated simulation model. An obfuscated simulation model is Lattice's unique IP protection technique which scrambles the Verilog HDL while maintaining logical equivalence. VHDL users will use the same Verilog model for simulation. When compiling the PCI Express RC-Lite IP core the following files must be compiled with the model. * pci_exp_params.v * pci_exp_ddefines.v These files provide "define constants" that are necessary for the simulation model. The ModelSim environment is located in \\pcie_eval\\sim\modelsim. Users can run the ModelSim simulation by performing the following steps: 1. Open ModelSim. 2. Under the File tab, select Change Directory and choose folder \\pcie_eval\\sim\modelsim. 3. Under the Tools tab, select Tcl > Execute Macro and execute one of the ModelSim "do" scripts shown, depending on which version of ModelSim is used (ModelSim SE or the Lattice OEM version). The Aldec Active-HDL environment is located in \\pcie_eval\\sim\aldec. Users can run the Aldec evaluation simulation by performing the following steps: 1. Open Active-HDL. 2. Under the Tools tab, select Execute Macro. 3. Browse to the directory \\pcie_eval\\sim\aldec and execute the ActiveHDL "do" script shown. Synthesizing and Implementing the Core in a Top-Level Design The PCI Express RC-Lite IP core itself is synthesized and provided in NGO format when the core is generated through the IPexpress tool. You can combine the core in your own top-level design by instantiating the core in your top level file and then synthesizing the entire design with either Synplify or Precision RTL Synthesis. The top-level file pcie_core0_eval_top.v provided in \\pcie_eval\\src\top supports the ability to implement the PCI Express RC-Lite IP core in isolation. Push-button implementation of this top-level design with either Synplify or Precision RTL Synthesis is supported via the Diamond or ispLEVER software project files _eval.syn located in the \\pcie_eval\\impl\synplify and the \\pcie_eval\\impl\precision directories, respectively. IPUG85_01.1, February 2012 40 PCI Express 1.1 RC-Lite x1, x4 IP Core User's Guide IP Core Generation and Evaluation To use this project file in Diamond: Choose File > Open > Project. 4. Browse to \\pcie_eval\\impl\(synplify or precision) in the Open Project dialog box. 5. Select and open .ldf. At this point, all of the files needed to support top-level synthesis and implementation will be imported to the project. 6. Select the Process tab in the left-hand GUI window. 7. Implement the complete design via the standard Diamond GUI flow. To use this project file in ispLEVER: 1. Choose File > Open Project. 2. Browse to \\pcie_eval\\impl\(synplify or precision) in the Open Project dialog box. 3. Select and open .syn. At this point, all of the files needed to support top-level synthesis and implementation will be imported to the project. 4. Select the device top-level entry in the left-hand GUI window. 5. Implement the complete design via the standard ispLEVER GUI flow. Hardware Evaluation The PCI Express RC-Lite IP core supports Lattice's IP hardware evaluation capability, which makes it possible to create versions of IP cores that operate in hardware for a limited period of time (approximately four hours) without requiring the purchase on an IP license. It may also be used to evaluate the core in hardware in user-defined designs. Enabling Hardware Evaluation in Diamond Choose Project > Active Strategy > Translate Design Settings. The hardware evaluation capability may be enabled/disabled in the Strategy dialog box. It is enabled by default. Enabling Hardware Evaluation in ispLEVER In the Processes for Current Source pane, right-click the Build Database process and choose Properties from the dropdown menu. The hardware evaluation capability may be enabled/disabled in the Properties dialog box. It is enabled by default. Updating/Regenerating the IP Core By regenerating an IP core with the IPexpress tool, you can modify any of its settings including: device type, design entry method, and any of the options specific to the IP core. Regenerating can be done to modify an existing IP core or to create a new but similar one. Regenerating an IP Core in Diamond To regenerate an IP core in Diamond: 1. In IPexpress, click the Regenerate button. 2. In the Regenerate view of IPexpress, choose the IPX source file of the module or IP you wish to regenerate. IPUG85_01.1, February 2012 41 PCI Express 1.1 RC-Lite x1, x4 IP Core User's Guide IP Core Generation and Evaluation 3. IPexpress shows the current settings for the module or IP in the Source box. Make your new settings in the Target box. 4. If you want to generate a new set of files in a new location, set the new location in the IPX Target File box. The base of the file name will be the base of all the new file names. The IPX Target File must end with an .ipx extension. 5. Click Regenerate. The module's dialog box opens showing the current option settings. 6. In the dialog box, choose the desired options. To get information about the options, click Help. Also, check the About tab in IPexpress for links to technical notes and user guides. IP may come with additional information. As the options change, the schematic diagram of the module changes to show the I/O and the device resources the module will need. 7. To import the module into your project, if it's not already there, select Import IPX to Diamond Project (not available in stand-alone mode). 8. Click Generate. 9. Check the Generate Log tab to check for warnings and error messages. 10.Click Close. The IPexpress package file (.ipx) supported by Diamond holds references to all of the elements of the generated IP core required to support simulation, synthesis and implementation. The IP core may be included in a user's design by importing the .ipx file to the associated Diamond project. To change the option settings of a module or IP that is already in a design project, double-click the module's .ipx file in the File List view. This opens IPexpress and the module's dialog box showing the current option settings. Then go to step 6 above. Regenerating an IP Core in ispLEVER To regenerate an IP core in ispLEVER: 1. In the IPexpress tool, choose Tools > Regenerate IP/Module. 2. In the Select a Parameter File dialog box, choose the Lattice Parameter Configuration (.lpc) file of the IP core you wish to regenerate, and click Open. 3. The Select Target Core Version, Design Entry, and Device dialog box shows the current settings for the IP core in the Source Value box. Make your new settings in the Target Value box. 4. If you want to generate a new set of files in a new location, set the location in the LPC Target File box. The base of the .lpc file name will be the base of all the new file names. The LPC Target File must end with an .lpc extension. 5. Click Next. The IP core's dialog box opens showing the current option settings. 6. In the dialog box, choose desired options. To get information about the options, click Help. Also, check the About tab in the IPexpress tool for links to technical notes and user guides. The IP core might come with additional information. As the options change, the schematic diagram of the IP core changes to show the I/O and the device resources the IP core will need. 7. Click Generate. 8. Click the Generate Log tab to check for warnings and error messages. IPUG85_01.1, February 2012 42 PCI Express 1.1 RC-Lite x1, x4 IP Core User's Guide Chapter 5: Using the IP Core This chapter provides supporting information on how to use the PCI Express RC-Lite IP core in complete designs. Topics discussed include IP simulation and verification, FPGA design implementation and board-level implementation. Simulation and Verification This section discusses strategies and alternative approaches for verifying the proper functionality of the PCI Express RC-Lite IP core through simulation. Simulation Strategies Included with the core from the IPexpress tool is the evaluation testbench located in the directory. The intent of the evaluation testbench is to show the core performing in simulation, as well as to provide timing simulations post place and route. Many communication cores work in a loopback format to simplify the data generation process and to meet the simple objectives of this evaluation testbench. A loopback format has been used in this case as well. In a real system, however, PCI Express RC-Lite IP core requires that an upstream port connect to a downstream port. In the simple-to-use, Lattice-supplied eval testbench, a few force commands are used to force an L0 state as a x4 link. Other force commands are also used to kick off the credit processing correctly. Once a link is established via a loopback with the core, a few TLPs are sent through the link to show the transmit and receive interface. This is the extent of the evaluation testbench. Figure 5-1 illustrates the evaluation testbench process. Figure 5-1. PCI Express RC-Lite IP Core Evaluation Testbench Block Diagram Evaluation Testbench Lattice Device Tx BFM PCI Express IP Core Rx BFM Force Internal Signals This testbench scheme works for its intent, but it is not easily extendible for the purposes of a Bus Functional Model (BFM) to emulate a real user system. Users can take the testbench provided and modify it to build in their own specific tests. Sometimes the testbench is oriented differently than users anticipate. Users might wish to interface to the PCI Express RC-Lite IP core via the serial lanes. As an endpoint solution developer the verification should be performed at the endpoint of the system from the root complex device. IPUG85_01.1, February 2012 43 PCI Express 1.1 RC-Lite x1, x4 IP Core User's Guide Using the IP Core Users simulating a multi-lane core at the serial level should give consideration to lane ordering. Lane ordering is dependant on the layout of the chip on a board. Refer to "Board Layout Concerns" on page 52 for further information. Third Party Verification IP The ideal solution for system verification is to use a third party verification IP. These solutions are built specifically for the user's needs and supply the BFMs and provide easy to use interfaces to create TLP traffic. Also, models are behavioral, gate level, or even RTL to increase the simulation speed. Lattice has chosen the Synopsys PCI Express verification IP for development of the PCI Express RC-Lite IP core, as shown in Figure 5-2. There are other third party vendors for PCI Express RC-Lite IP core including Denali(R) and Cadence. Figure 5-2. PCI Express RC-Lite IP Core Testbench with Third-Party VIP Third-Party Testbench Lattice Device User Design PCI Express IP Core Third-Party PCI Express BFM User Commands If desired, an independent Bus Functional Model can be modified to emulate a user's environment. This option is highly recommended. FPGA Design Implementation This section provides information on implementing the PCI Express RC-Lite IP core in a complete FPGA design. Topics covered include how to set up the IP core for various link width combinations, clocking schemes and physically locating the IP core within the FPGA. Setting Up the Core This section describes how to set up the PCI Express RC-Lite IP core for various link width combinations. The user must provide a different PCS/SERDES autoconfig file based on the link width and the flipping of the lanes. The PCS/SERDES memory map is initially configured during bit stream loading using the autoconfig file generated with the IPexpress tool. Note that transactions shown display data in hexadecimal format with bit 0 as the MSb. Lane flipping is not applicable for x1. The user can select which channel of the quad to be the active channel in the IPexpress tool. Setting Up for x4 (No Flip) This is the default condition that is created from the IPexpress tool. Simply use the autoconfig file to setup the channels. The flip_lanes port should be tied Low. IPUG85_01.1, February 2012 44 PCI Express 1.1 RC-Lite x1, x4 IP Core User's Guide Using the IP Core Setting Up for x4 (Flipped) No changes required. Simply use the pcs_pcie_8b_x4.txt file generated from the IPexpress tool. Setting Design Constraints There are several design constraints that are required for the IP core. These constraints must be placed as preferences in the .lpf file. These preferences can be entered in the .lpf file through the Preference Editing View in Diamond, the Design Planner in ispLEVER, or directly in the text based .lpf file. Several interfaces inside the core run at 250MHz. These internal clocks must be constrained for the place and route. FREQUENCY FREQUENCY FREQUENCY FREQUENCY FREQUENCY NET NET NET NET NET "/u1_pcs_pipe/ff_rx_fclk_0" name>/u1_pcs_pipe/ff_rx_fclk_1" name>/u1_pcs_pipe/ff_rx_fclk_2" name>/u1_pcs_pipe/ff_rx_fclk_3" name>/pclk" 250.000000 MHz ; 250 250 250 250 MHz MHz MHz MHz ; ; ; ; There are also several places inside the PCI Express RC-Lite IP core which can be blocked from timing analysis. These paths are asynchronous control signals which are not critical. The paths can be blocked using the following preferences. BLOCK PATH FROM CELL "*ctc_reset_chx*"; BLOCK PATH FROM CELL "*core_rst_n*"; BLOCK NET "*rst_n_c*"; MULTICYCLE FROM CELL "*nfts_rx_skp_cnt*" TO CELL "*cnt_done_nfts_rx*" 2 X; MULTICYCLE FROM CELL "*nfts_rx_skp_cnt*" TO CELL "*ltssm_nfts_rx_skp*" 2 X; The user interface clock sys_clk_125 must be constrained to run at 125 MHz. Based on the connectivity of the design the name of this clock net might change. FREQUENCY NET "sys_clk_125" 125 MHz; Errors and Warnings During the process of running the Diamond or ispLEVER software there are several warning messages that will be created. This section documents the normal warning messages that will be present when using the PCI Express RC-Lite IP core. Place & Route Design The following warnings will be present in the place and route log file. WARNING - par: (user pref. primary clock) Signal "u1_pcie_top/u1_pcs_pipe/ff_rx_fclk_0" is selected as a primary clock; however, according to the architecture, the driver of this signal cannot drive the clock tree directly, therefore general routing has to be used and the design may experience increased injection delay. WARNING - par: (user pref. primary clock) Signal "u1_pcie_top/u1_pcs_pipe/ff_rx_fclk_1" is selected as a primary clock; however, according to the architecture, the driver of this IPUG85_01.1, February 2012 45 PCI Express 1.1 RC-Lite x1, x4 IP Core User's Guide Using the IP Core signal cannot drive the clock tree directly, therefore general routing has to be used and the design may experience increased injection delay. WARNING - par: (user pref. primary clock) Signal "u1_pcie_top/u1_pcs_pipe/ff_rx_fclk_2" is selected as a primary clock; however, according to the architecture, the driver of this signal cannot drive the clock tree directly, therefore general routing has to be used and the design may experience increased injection delay. WARNING - par: (user pref. primary clock) Signal "u1_pcie_top/u1_pcs_pipe/ff_rx_fclk_3" is selected as a primary clock; however, according to the architecture, the driver of this signal cannot drive the clock tree directly, therefore general routing has to be used and the design may experience increased injection delay. These warnings inform the user that the receive clocks from the PCS module are using general routing to connect to a primary clock connection point. This is expected for this architecture and clock connection. Clocking Scheme A PCI Express link is typically provided with a 100MHz reference clock from which the 2.5Gbps data rate is achieved. The user interface for the PCI Express RC-Lite IP core is clocked using a 125MHz clock (sys_clk_125). Figure 5-3 provides the internal clocking structures of the IP core in the LatticeECP3 and LatticeECP2M families. IPUG85_01.1, February 2012 46 PCI Express 1.1 RC-Lite x1, x4 IP Core User's Guide Using the IP Core Figure 5-3. LatticeECP3 and LatticeECP2M PCI Express Clocking Scheme LatticeECP3/LatticeECP2M PCI Express IP Core sys_clk_125 125MHz PCI Express Logic pclk 250MHz PIPE Logic ff_rx_fclk_[n:0] 250MHz PCS CLKDIV 100MHz refclk PLL x25 2.5GHz SERDES The LatticeECP3 and LatticeECP2M clocking solution uses the 100MHz differential refclk provided from the PCI Express link connected directly to the REFCLKP/N of the SERDES. The 100 differential termination is included inside the SERDES so external resistors are not required on the board. It is recommended that both the sys_clk_125 and pclk clock nets are routed using primary clock routing. Inside the SERDES, a PLL creates the 2.5 Gbps rate from which a transmit 250 MHz clock (pclk) and recovered clock(s) (ff_rx_fclk_[n:0]) are derived. The Lattice PCI Express RC-Lite IP core then performs a clock domain change to the sys_clk_125 125 MHz clock for the user interface. Table 5-1 shows clocking resources used with LatticeECP3 and LatticeECP2M. Table 5-1. LatticeECP3 and LatticeECP2M Clocking Resources Used Type Number Notes 3/6 3 for x1 interface. 6 for x4 interface. Primary Clocks Locating the IP The PCI Express RC-Lite IP core uses a mixture of hard and soft IP blocks to create the full design. This mixture of hard and soft IP requires the user to locate, or place, the core in a defined location on the device array. The hard blocks' fixed locations will drive the location of the IP. Table 5-2 lists the site names for the hard blocks on the different device arrays. Table 5-2. PCS Location Site Names for Lattice Devices IPUG85_01.1, February 2012 Device PCS LFE3-17 PCSA LFE3-35 PCSA 47 PCI Express 1.1 RC-Lite x1, x4 IP Core User's Guide Using the IP Core Table 5-2. PCS Location Site Names for Lattice Devices Device PCS 1 LFE3-70 PCSA PCSB PCSC LFE3-951 PCSA PCSB PCSC LFE3-1501 PCSA PCSB PCSC PCSD LFE2M20 URPCS LFE2M35 URPCS LFE2M50 URPCS LRPCS LFE2M70 URPCS ULPCS LRPCS LFE2M100 URPCS ULPCS LRPCS LLPCS 1. The number of SERDES quads on these devices depends on the package. Lower pinout devices contain fewer quads. Locating the Hard Elements Figure 5-4 provides a block diagram with placement positions of the PCS/SERDES quads in the LatticeECP3 devices. IPUG85_01.1, February 2012 48 PCI Express 1.1 RC-Lite x1, x4 IP Core User's Guide Using the IP Core Figure 5-4. LatticeECP3 Device Arrays with PCS/SERDES LFE3-17/35 LFE3-70 PCSA PCSB PCSA_HDINx PCSA_HDOUTx PCSA PCSB_HDINx PCSA_HDINx PCSB_HDOUTx PCSA_HDOUTx LFE3-95 PCSB PCSA PCSC PCSB_HDINx PCSA_HDINx PCSC_HDINx PCSB_HDOUTx PCSA_HDOUTx PCSC_HDOUTx LFE3-150 PCSD PCSB PCSD_HDINx PCSD_HDOUTx PCSB_HDINx PCSB_HDOUTx PCSA PCSC PCSA_HDINx PCSC_HDINx PCSA_HDOUTx PCSC_HDOUTx Figure 5-5 provides a block diagram with placement positions of the PCS/SERDES quads in the LatticeECP2M devices. IPUG85_01.1, February 2012 49 PCI Express 1.1 RC-Lite x1, x4 IP Core User's Guide Using the IP Core Figure 5-5. LatticeECP2M Device Arrays with PCS/SERDES URC_SQ_HDINx/ URC_SQ_HDOUTx URC_SQ_HDINx URC_SQ_HDOUTx URPCS URPCS LFE2M50 LFE2M20/35 LRPCS ULC_SQ_HDINx ULC_SQ_HDOUTx URC_SQ_HDINx URC_SQ_HDOUTx ULPCS URPCS LRC_SQ_HDINx LRC_SQ_HDOUTx LFE2M70/100 LLPCS LRPCS LLC_SQ_HDINx LLC_SQ_HDOUTx LRC_SQ_HDINx LRC_SQ_HDOUTx The user should select the PCS/SERDES quad location based on the package pinout and the location of the PCI Express RC-Lite IP core interface on the board layout. Below is an example of locating the PCS in a LatticeECP2M device. LOCATE COMP "/u1_pcs_pipe/pcs_top_0/pcs_inst_0" SITE "URPCS" ; Board-Level Implementation Information This section provides circuit board-level requirements and constraints associated with using the PCI Express RCLite IP core. PCI Express Power-Up The PCI Express specification provides aggressive requirements for Power Up. As with all FPGA devices Power Up is a concern when working with tight specifications. The PCI Express specification provides the specification for the release of the fundamental reset (PERST#) in the connector specification. The PERST# release time (TPVPERL) of 100ms is used for the PCI Express Card Electromechanical Specification for Add-in Cards. From the point of power stable to at least 100 ms the PERST# must remain asserted. Different PCI Express systems will hold PERST# longer than 100 ms, but the minimum time is 100 ms. Shown below in Figure 5-6 is a best case timing diagram of the Lattice device with respect to PERST#. IPUG85_01.1, February 2012 50 PCI Express 1.1 RC-Lite x1, x4 IP Core User's Guide Using the IP Core Figure 5-6. Best Case Timing Diagram, Lattice Device with Respect to PERST# Power PERST# Lattice Device State Lattice Link State Power to INITn Loading Bitstream Detectable Device Active Detect Link Active >= 100ms PCI Express Spec If the Lattice device has finished loading the bitstream prior to the PERST# release, then the PCI Express link will proceed through the remainder of the LTSSM as normal. In some Lattice devices the device will not finish loading the bitstream until after the PERST# has been released. Figure 5-7 shows a worst case timing diagram of the Lattice device with respect to PERST#. Figure 5-7. Worst Case Timing Diagram, Lattice Device with Respect to PERST# Power PERST# Lattice Device State Lattice Link State Power to INITn Loading Bitstream Detectable Device Active Detect Link Active >= 100ms PCI Express Spec If the Lattice device does not finish loading the bitstream until after the release of PERST#, then the link will still be established. The Lattice device turns on the 100 differential resistor on the receiver data lines when power is applied. This 100 differential resistance will allow the device to be detected by the link partner. This state is show IPUG85_01.1, February 2012 51 PCI Express 1.1 RC-Lite x1, x4 IP Core User's Guide Using the IP Core above as "Detectable". If the device is detected the link partner will proceed to the Polling state of the LTSSM. When the Lattice device goes through Detect and then enters the Polling state the link partner and Lattice device will now cycle through the remainder of the LTSSM. In order to implement a power-up strategy using Lattice devices, Table 5-3 contains the relative numbers for the LatticeECP2M families. Table 5-3. LatticeECP2M Power Up Timing Specifications ECP2M20 ECP2M35 ECP2M50 ECP2M70 ECP2M100 Units Power to INITn Specification 28 28 28 28 28 ms Worst-case Programming Time (SPI at 41 MHz) 146 244 390 488 634 ms Worst-case Programming Time (Parallel Flash with CPLD) 1 18 31 49 61 79 ms 1. 8-bit wide Flash and external CPLD interfacing to LatticeECP2M at 41 MHz SLAVE_PARALLEL mode. These warnings inform the user that a SLICE is programmed in DPRAM mode which allows a constant write to the RAM. This is an expected implementation of the RAM which is used in the PCI Express design. To reduce the bitstream loading time of the Lattice device a parallel Flash device and CPLD device can be used. The use of parallel Flash devices and Lattice devices is documented in AN8077, Parallel Flash Programming and FPGA Configuration. During initialization the PROGRAM and GSR inputs to the FPGA can be used to hold off bitstream programming. These should not be connected to PERST# as this will delay the bitstream programming of the Lattice device. Board Layout Concerns For multi-lane implementations there might be a layout concern in making the connection on board for a particular orientation of lanes. On some packages lane 0 of board will align with lane 0 of the SERDES and likewise for channels 1, 2 and 3. However, in other packages lane 0 of board will need to cross lanes 1, 2 and 3 to connect to lane 0 of the SERDES. It will not be possible to follow best practice layout rules and cross SERDES lanes in the physical board design. Figure 5-8 provides an example of the board layout concern. Figure 5-8. Example of Board Layout Concern with x4 Link Lattice FPGA Board Layout Concern PCS 3 2 1 0 0 1 2 3 PCI Express x4 lanes on board To accommodate this layout dilemma, the Lattice PCI Express solution provides an option to reverse the order of the SERDES lanes to the LTSSM block of the PCI Express RC-Lite IP core. This allows the board layout to connect board lane 0 to SERDES lane 3, board lane 1 to SERDES lane 2, board lane 2 to SERDES lane 1, and board lane IPUG85_01.1, February 2012 52 PCI Express 1.1 RC-Lite x1, x4 IP Core User's Guide Using the IP Core 3 to SERDES lane 0. The PCI Express RC-Lite IP core will then perform a reverse order connection so the PCI Express board lane 0 always connects to the logical LTSSM lane 0. This lane connection feature is controlled using the flip_lanes port. When high, this port will connect the SERDES channels to the PCI Express RC-Lite IP core in the reversed orientation. The user must be aware when routing the high speed serial lines that this change has taken place. PCI Express lane 0 will need to connect to SERDES channel 3, etc. Figure 5-9 provides a diagram of a normal and a reversed IP core implementation. Figure 5-9. Implementation of x4 IP Core to Edge Fingers Rest of IP Core PCS/SERDES on topright side of package LTSSM 0 1 2 3 PCS 0 1 2 3 Lattice FPGA 0 1 2 3 PCI Express x4 lanes on board Rest of IP Core Reverse order of lanes LTSSM 3 2 1 0 PCS/SERDES on topleft side of package PCS 3 2 1 0 Lattice FPGA 0 1 2 3 PCI Express x4 lanes on board As shown in Figure 5-9, this board layout condition will exist on SERDES that are located on the top left side of the package. When using a SERDES quad located on the top left side of the package the user should reverse the order of the lanes inside the IP core. IPUG85_01.1, February 2012 53 PCI Express 1.1 RC-Lite x1, x4 IP Core User's Guide Using the IP Core PIPE Simulation The LatticeECP3 and LatticeECP2M PCI Express simulation also requires the PIPE module. This simulation model is found in the _eval/models/pcs_pipe_top.v file. In the same directory are a few other files that are the pcs_pipe_top module requires. These include the following files. pci_exp_params.v pipe_top.v pcs_top.v ctc.v sync1s.v PCSC.v/PCSD.v Below is a sample Aldec.do file (which can also be used with ModelSim) to compile and simulate the IP core. # Compile the PCIe IP core vlog +define+SIMULATE=1 pci_exp_params.v pci_exp_ddefines.v pcie_beh.v pcie.v # Compile the PIPE vlog +define+SIMULATE=1 pci_exp_params.v \ pcie_eval/models/[ecp3/ecp2m]/pipe_top.v \ pcie_eval/models/[ecp3/ecp2m]/pcs_top.v \ pcie_eval/models/[ecp3/ecp2m]/ctc.v \ pcie_eval/models/[ecp3/ecp2m]/sync1s.v \ pcie_eval/models/[ecp3/ecp2m]/[PCSC/PCSD].v pcie_eval/models/[ecp3/ecp2m]/pcs_pipe_top.v # Compile the user design vlog top.v # Compile the testbench vlog tb.v # Load the design and libraries for ECP2M vsim -L ecp2m_vlg -L pcsc_mti_work -L pmi_work work.tb # Load the design and libraries for ECP3 vsim -L ecp3m_vlg -L pcsd_mti_work -L pmi_work work.tb IPUG85_01.1, February 2012 54 PCI Express 1.1 RC-Lite x1, x4 IP Core User's Guide Using the IP Core Simulation Behavior When setting the SIMULATE variable for the simulation model of the PCI Express RC-Lite IP core several of the LTSSM counters are reduced. Table 5-4 provides the new values for each of the LTSSM counters when the SIMULATE variable is defined. Table 5-4. LTSSM Counters Counter Normal Value SIMULATE Value Description 1 ms 800 ns Electrical Order set received to Electrical Idle condition detected by Loopback Slave 1024 TS1 48 TS1 Number of TS1s transmitted in Polling.Active CNT_2MS 2 ms 1200 ns Configuration.Idle (CFG_IDLE) CNT_12MS 12 ms 800 ns Detect.Quiet (DET_QUIET) CNT_24MS 24 ms 1600 ns Polling.Active (POL_ACTIVE), Configuration.Linkwidth.Start (CFG_LINK_WIDTH_ST), Recovery.RcvrLock (RCVRY_RCVRLK) CNT_48MS 48 ms 3200 ns Polling.Configuration (POL_CONFIG), Recovery.RcvrCfg (RCVRY_RCVRCFG) CNT_1MS CNT_1024T1 CNT_50MS 50 ms 20 us CNT_100MS 100 ms 4000 ns Completion time out LoopBack Master time out Troubleshooting Table 5-5 provides some troubleshooting tips for the user when the core does not work as expected. Table 5-5. Troubleshooting Symptom LTSSM does not transition to L0 state. Possible Reason Troubleshooting The PCI Express slot does Some PC systems do not support all possible link width configunot support the advertised rations in their x16 slots. Try using the slot as a x1 and working link width. up to the x4 link width. Board is not recognized by the Driver not installed or did PC. not bind to the board. Check to make sure the driver is installed and the DeviceID and VendorID match the drivers IDs defined in the .inf file. Software application locks up. Endpoint is stalled and can- Check to make sure the amount of credits requested is correct. If not send TLPs. the device cannot complete a transaction started by the application software, the software will "hang" waiting on the device. PC crashes. Device stops working after hours of operation. A system crash usually implies a hardware failure. If the device Endpoint might have violated the available credits of violates the number of credits available, the root complex can throw an exception which can crash the machine. the root complex. Endpoint might have created a NAK or forced a retrain. Certain motherboards are forgiving of a NAK or LTSSM retrain while others are not. A retrain can be identified by monitoring the phy_ltssm_state vector from the PCI Express core to see if the link falls from the L0 state during operation. The hardware timer is included in the device. The hardware timer is utilized when an IP core does not have a license. The hardware timer holds the device in reset after a few hours of operation. Powering the device off and then on will restore functionality for the period of time dictated by the hardware timer. IPUG85_01.1, February 2012 55 PCI Express 1.1 RC-Lite x1, x4 IP Core User's Guide Chapter 6: Core Verification The functionality of the Lattice PCI Express RC-Lite IP core has been verified via simulation and hardware testing in a variety of environments, including: Simulation environment verifying proper PCI Express Root complex functionality when testing with a Synopsys DesignWare behavioral model in Endpoint mode. Using the Agilent E2960A PCI Express Protocol Tester and Analyzer for analyzing and debugging PCI Express bus protocol. The Tester is used for sending and responding to PCI Express traffic from the DUT. IPUG85_01.1, February 2012 56 PCI Express 1.1 RC-Lite x1, x4 IP Core User's Guide Chapter 7: Support Resources This chapter contains information about Lattice Technical Support, additional references, and document revision history. Lattice Technical Support There are a number of ways to receive technical support. Online Forums The first place to look is Lattice Forums (http://www.latticesemi.com/support/forums.cfm). Lattice Forums contain a wealth of knowledge and are actively monitored by Lattice Applications Engineers. Telephone Support Hotline Receive direct technical support for all Lattice products by calling Lattice Applications from 5:30 a.m. to 6 p.m. Pacific Time. * For USA & Canada: 1-800-LATTICE (528-8423) * For other locations: +1 503 268 8001 In Asia, call Lattice Applications from 8:30 a.m. to 5:30 p.m. Beijing Time (CST), +0800 UTC. Chinese and English language only. * For Asia: +86 21 52989090 E-mail Support * techsupport@latticesemi.com * techsupport-asia@latticesemi.com Local Support Contact your nearest Lattice Sales Office. Internet www.latticesemi.com PCIe Solutions Web Site Lattice provides customers with low-cost and low-power programmable PCIe solutions that are ready to use right out of the box. A full suite of tested and interoperable PCIe solutions is available that includes development kits with evaluation boards and hardware and software reference designs. These solutions are valuable resources to jump start PCIe applications from a board design and FPGA design perspective. For more information on Lattice's PCIe solutions, visit: http://www.latticesemi.com/solutions/technologysolutions/pciexpresssolutions.cfm?source=topnav PCI-SIG Website The Peripheral Component Interconnect Special Interest Group (PCI-SIG) website contains specifications and documents referred to in this user's guide. The PCi-SIG URL is: http://www.pcisig.com. IPUG85_01.1, February 2012 57 PCI Express 1.1 RC-Lite x1, x4 IP Core User's Guide Support Resources References LatticeECP3 * HB1009, LatticeECP3 Family Handbook LatticeECP2M * HB1003, LatticeECP2M Family Handbook * TN1114, Electrical Recommendations for Lattice SERDES * TN1165, PCI Express and SGMII/GbE Applications in the Same LatticeECP2M SERDES Quad * TN1166, PCI Express SIG Compliance Overview for Lattice Semiconductor FPGAs * AN8077, Parallel Flash Programming and FPGA Configuration Revision History Date Document Version IP Core Version November 2010 01.0 1.0 Initial release. February 2012 01.1 1.0 Updated document with new corporate logo. Change Summary PCI Express RC-Lite IP Core Quick Facts table - Updated information for the minimal device needed. PCI Express RC-Lite IP Core Port List - Updated description for tx_val. PCI Express RC-Lite IP Core Port List - Updated description for phy_cfgln_sum[2:0]. IPUG85_01.1, February 2012 58 PCI Express 1.1 RC-Lite x1, x4 IP Core User's Guide Appendix A: Resource Utilization This appendix gives resource utilization information for Lattice FPGAs using the PCI Express RC-Lite IP core. Configuration The IPexpress tool is the Lattice IP configuration utility, and is included as a standard feature of the Diamond and ispLEVER design tools. Details regarding the usage of the IPexpress tool can be found in the IPexpress tool and Diamond or ispLEVER help system. For more information on the Diamond or ispLEVER design tools, visit the Lattice web site at: www.latticesemi.com/software. LatticeECP2M Utilization (x4 RC-Lite) Table A-1 shows the resource utilization for the PCI Express x4 RC-Lite IP core implemented in a LatticeECP2M FPGA. Table A-2 lists the parameter settings for the IP core configuration shown in Table A-1. Table A-1. Resource Utilization1 IPexpress Configuration1 Slices LUTs Registers sysMEM EBRs Config 1 8185 10889 8469 9 1. Performance and utilization data are generated targeting an LFE2M-50E-6F900C using Lattice Diamond 1.1 and Synplify Pro D- 2009.12L-1 software. Performance might vary when using a different software version or targeting a different device density or speed grade within the LatticeECP2M family. Ordering Part Number The Ordering Part Number (OPN) for the PCI Express x4 RC-Lite IP core targeting LatticeECP2M devices is PCI-ERC4-PM-U1. Table A-2. Parameter Settings for Config Demo Config 1 PCI express Link x4 Maximum payload size supported 128 Bytes Include ECRC support No Other parameters Default LatticeECP3 Utilization (x4 RC-Lite) Table A-3 shows the resource utilization for the PCI Express x4 RC-Lite IP core implemented in a LatticeECP3 FPGA. Table A-4 lists the parameter settings for the IP core configuration shown in Table A-3. Table A-3. Resource Utilization1 IPexpress Configuration1 Slices LUTs Registers sysMEM EBRs Config 1 7703 10608 8460 9 1. Performance and utilization data are generated targeting an LFE3-95E-7FN1156CES using Lattice Diamond 1.1 and Synplify Pro D- 2009.12L-1 software. Performance might vary when using a different software version or targeting a different device density or speed grade within the LatticeECP3 family. Ordering Part Number The Ordering Part Number (OPN) for the PCI Express x4 RC-Lite IP core targeting LatticeECP3 devices is PCI-ERC4-E3-U1. IPUG85_01.1, February 2012 59 PCI Express 1.1 RC-Lite x1, x4 IP Core User's Guide Resource Utilization Table A-4. Parameter Settings for Config Demo Config 1 PCI express Link x4 Maximum payload size supported 128 Bytes Include ECRC support No Other parameters Default LatticeECP2M Utilization (x1 RC-Lite) Table A-1 shows the resource utilization for the PCI Express x1 RC-Lite IP core implemented in a LatticeECP2M FPGA. Table A-2 lists the parameter settings for the IP core configuration shown in Table A-1. Table A-5. Resource Utilization1 IPexpress Configuration1 Slices LUTs Registers sysMEM EBRs Config 1 3260 4770 3096 3 1. Performance and utilization data are generated targeting an LFE2M-50E-6F900C using Lattice Diamond 1.1 and Synplify Pro D- 2009.12L-1 software. Performance might vary when using a different software version or targeting a different device density or speed grade within the LatticeECP2M family. Ordering Part Number The Ordering Part Number (OPN) for the PCI Express x4 RC-Lite IP core targeting LatticeECP2M devices is PCI-ERC1-PM-U1. Table A-6. Parameter Settings for Config Demo Config 1 PCI express Link x1 Maximum payload size supported 128 Bytes Include ECRC support No Other parameters Default LatticeECP3 Utilization (x1 RC-Lite) Table A-3 shows the resource utilization for the PCI Express x1 RC-Lite IP core implemented in a LatticeECP3 FPGA. Table A-4 lists the parameter settings for the IP core configuration shown in Table A-3. Table A-7. Resource Utilization1 IPexpress Configuration1 Slices LUTs Registers sysMEM EBRs Config 1 3059 4560 3048 3 1. Performance and utilization data are generated targeting an LFE3-95E-7FN1156CES using Lattice Diamond 1.1 and Synplify Pro D- 2009.12L-1 software. Performance might vary when using a different software version or targeting a different device density or speed grade within the LatticeECP3 family. IPUG85_01.1, February 2012 60 PCI Express 1.1 RC-Lite x1, x4 IP Core User's Guide Resource Utilization Ordering Part Number The Ordering Part Number (OPN) for the PCI Express x1 RC-Lite IP core targeting LatticeECP3 devices is PCI-ERC1-E3-U1. Table A-8. Parameter Settings for Config Demo Config 1 PCI express Link x1 Maximum payload size supported 128 Bytes Include ECRC support No Other parameters IPUG85_01.1, February 2012 Default 61 PCI Express 1.1 RC-Lite x1, x4 IP Core User's Guide Mouser Electronics Authorized Distributor Click to View Pricing, Inventory, Delivery & Lifecycle Information: Lattice: PCI-ERC1-E3-U1 PCI-ERC1-E3-UT1 PCI-ERC1-PM-U1 PCI-ERC1-PM-UT1 PCI-ERC4-E3-U1 PCI-ERC4-E3-UT1 PCI-ERC4-PM-U1 PCI-ERC4-PM-UT1