0
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心
发布
  • 发文章

  • 发资料

  • 发帖

  • 提问

  • 发视频

创作活动
PCI-EXP4-E5-UT

PCI-EXP4-E5-UT

  • 厂商:

    LATTICE(莱迪思半导体)

  • 封装:

    -

  • 描述:

    SITE LICENSE FOR ECP5 PCIE X4

  • 数据手册
  • 价格&库存
PCI-EXP4-E5-UT 数据手册
PCI Express x1/x2/x4 Endpoint IP Core User Guide FPGA-IPUG-02009 Version 1.8 June 2017 PCI Express x1/x2/x4 Endpoint IP Core User Guide Contents 1. Introduction ................................................................................................................................................................... 6 1.1. Quick Facts .......................................................................................................................................................... 6 1.2. Features ............................................................................................................................................................... 7 1.2.1. PHY Layer ........................................................................................................................................................7 1.2.2. Data Link Layer ...............................................................................................................................................7 1.2.3. Transaction Layer ...........................................................................................................................................8 1.2.4. Configuration Space Support ..........................................................................................................................8 1.2.5. Top Level IP Support .......................................................................................................................................8 2. Functional Descriptions ................................................................................................................................................ 9 2.1. Overview ............................................................................................................................................................. 9 2.2. Interface Description ......................................................................................................................................... 20 2.2.1. Transmit TLP Interface ..................................................................................................................................20 2.2.2. Receive TLP Interface ...................................................................................................................................27 2.3. Using the Transmit and Receive Interfaces ....................................................................................................... 28 2.3.1. As a Completer .............................................................................................................................................28 2.3.2. As a Requestor ..............................................................................................................................................29 2.4. Unsupported Request Generation .................................................................................................................... 30 2.5. Configuration Space .......................................................................................................................................... 31 2.5.1. Base Configuration Type0 Registers .............................................................................................................31 2.5.2. Power Management Capability Structure ....................................................................................................31 2.5.3. MSI Capability Structure ...............................................................................................................................31 2.5.4. How to Enable/Disable MSI ..........................................................................................................................31 2.5.5. How to issue MSI ..........................................................................................................................................31 2.5.6. PCI Express Capability Structure ...................................................................................................................31 2.5.7. Device Serial Number Capability Structure ..................................................................................................31 2.5.8. Advanced Error Reporting Capability Structure ...........................................................................................31 2.5.9. Handling of Configuration Requests .............................................................................................................32 2.6. Wishbone Interface ........................................................................................................................................... 32 2.6.1. Wishbone Byte/Bit Ordering ........................................................................................................................32 2.7. Error Handling ................................................................................................................................................... 34 3. Parameter Settings ..................................................................................................................................................... 40 3.1. General Tab ....................................................................................................................................................... 42 3.2. PCS Pipe Options Tab ........................................................................................................................................ 43 3.3. Flow Control Tab ............................................................................................................................................... 44 3.4. Configuration Space - 1 Tab .............................................................................................................................. 45 3.5. Configuration Space - 2 Tab .............................................................................................................................. 47 4. IP Core Generation and Evaluation ............................................................................................................................. 50 4.1. Licensing the IP Core ......................................................................................................................................... 50 4.1.1. Licensing Requirements for ECP5 and ECP5-5G ...........................................................................................50 4.2. IPexpress Flow for LatticeECP3 Devices ............................................................................................................ 50 4.2.1. Getting Started .............................................................................................................................................50 4.2.2. IPexpress-Created Files and Top Level Directory Structure .........................................................................52 4.2.3. Instantiating the Core ...................................................................................................................................53 4.2.4. Running Functional Simulation .....................................................................................................................53 4.2.5. Synthesizing and Implementing the Core in a Top-Level Design ..................................................................54 4.2.6. Hardware Evaluation ....................................................................................................................................54 4.2.7. Enabling Hardware Evaluation in Diamond ..................................................................................................55 4.2.8. Updating/Regenerating the IP Core .............................................................................................................55 4.2.9. Regenerating an IP Core in Diamond............................................................................................................55 4.3. Clarity Designer Flow for ECP5 and ECP5-5G Devices ....................................................................................... 55 4.3.1. Getting Started .............................................................................................................................................55 4.3.2. Configuring and Placing the IP Core .............................................................................................................57 © 2013-2017 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. 2 FPGA-IPUG-02009-1.8 PCI Express x1/x2/x4 Endpoint IP Core User Guide 4.3.3. Generating the IP Core ................................................................................................................................. 60 4.3.4. Clarity Designer-Created Files and Directory Structure ............................................................................... 60 4.3.5. Instantiating the Core ................................................................................................................................... 62 4.3.6. Running Functional Simulation .................................................................................................................... 62 4.3.7. Synthesizing and Implementing the Core in a Top-Level Design.................................................................. 63 4.3.8. Hardware Evaluation .................................................................................................................................... 63 4.3.9. Updating/Regenerating the IP Core ............................................................................................................. 63 5. Using the IP Core ........................................................................................................................................................ 65 5.1. Simulation and Verification ............................................................................................................................... 65 5.1.1. Simulation Strategies.................................................................................................................................... 65 5.1.2. Alternative Testbench Approach .................................................................................................................. 65 5.1.3. Third Party Verification IP ............................................................................................................................ 66 5.2. FPGA Design Implementation for LatticeECP3 Devices..................................................................................... 67 5.2.1. Setting Up the Core ...................................................................................................................................... 67 5.2.2. Setting Up for Native x4 (No Flip) ................................................................................................................. 67 5.2.3. Setting Up for Native x4 (Flipped) ................................................................................................................ 67 5.2.4. Setting Up for Downgraded x1 (No Flip) ...................................................................................................... 67 5.2.5. Setting Up for Downgraded x1 (Flipped) ...................................................................................................... 68 5.2.6. Setting Design Constraints ........................................................................................................................... 68 5.2.7. Clocking Scheme ........................................................................................................................................... 68 5.2.8. Locating the IP .............................................................................................................................................. 69 5.3. Board-Level Implementation Information ........................................................................................................ 70 5.3.1. PCI Express Power-Up .................................................................................................................................. 70 5.4. Board Layout Concerns for Add-in Cards .......................................................................................................... 72 5.5. Adapter Card Concerns ..................................................................................................................................... 74 5.5.1. LatticeECP3 and ECP5 IP Simulation ............................................................................................................. 75 5.6. Simulation Behavior .......................................................................................................................................... 75 5.7. Troubleshooting ................................................................................................................................................ 75 6. Core Verification ......................................................................................................................................................... 76 6.1. Core Compliance ............................................................................................................................................... 76 References .......................................................................................................................................................................... 77 LatticeECP3 ..................................................................................................................................................................... 77 ECP5 and ECP5-5G .......................................................................................................................................................... 77 Technical Support Assistance ............................................................................................................................................. 78 Appendix A. Resource Utilization of 2.5G IP Core .............................................................................................................. 79 LatticeECP3 Utilization (Native x1) ................................................................................................................................. 79 LatticeECP3 Utilization (Native x4) ................................................................................................................................. 79 ECP5 Utilization (Native x1)............................................................................................................................................. 79 ECP5 Utilization (Native x4) ............................................................................................................................................ 80 ECP5 Utilization (Downgraded x2) .................................................................................................................................. 80 Appendix B. Resource Utilization of PCI Express 5G IP Core .............................................................................................. 81 ECP5-5G Utilization (Downgraded x1)............................................................................................................................. 81 ECP5-5G Utilization (Native x2) ...................................................................................................................................... 81 Revision History .................................................................................................................................................................. 82 © 2013-2017 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. FPGA-IPUG-02009_1.8 3 PCI Express x1/x2/x4 Endpoint IP Core User Guide Figures Figure 2.1. PCI Express IP Core Technology and Functions ...................................................................................................9 Figure 2.2. PCI Express Core Implementation in LatticeECP3, ECP5 and EPC5-5G .............................................................10 Figure 2.3. PCI Express Interfaces .......................................................................................................................................10 Figure 2.4. Transmit Interface of 2.5G IP core Native x4 or 5G IP core Native x2, 3DW Header, 1 DW Data ....................21 Figure 2.5. Transmit Interface 2.5G IP core Native x4 or 5G IP core Native x2, 3DW Header, 2 DW Data .........................21 Figure 2.6. Transmit Interface 2.5G IP core Native x4 or 5G IP core Native x2, 4DW Header, 0 DW .................................22 Figure 2.7. Transmit Interface 2.5G IP core Native x4 or 5G IP core Native x2, 4DW Header, Odd Number of DWs ........22 Figure 2.8. Transmit Interface 2.5G IP core Native x4 or 5G IP core Native x2, Burst of Two TLPs ....................................23 Figure 2.9. Transmit Interface 2.5 IP core Native x4 or 5G IP core Native x2, Nullified TLP ...............................................23 Figure 2.10. Transmit Interface 2.5G IP Core Downgraded x1 or 5G IP core Downgraded x1 at Gen1 Speed ...................24 Figure 2.11. Transmit Interface 2.5G IP core Downgraded x2, 5G IP core Native x2 at Gen 1 speed or Downgraded x1 at Gen2 Speed .........................................................................................................................................................................24 Figure 2.12. Transmit Interface 2.5G IP core Native x4 or 5G IP core Native x2, Posted Request with tx_ca_p-recheck Assertion .............................................................................................................................................................................25 Figure 2.13. Transmit Interface Native x1, 3DW Header, 1 DW Data .................................................................................25 Figure 2.14. Transmit Interface Native x1, Burst of Two TLPs ............................................................................................26 Figure 2.15. Transmit Interface Native x1, Nullified TLP.....................................................................................................26 Figure 2.16. Transmit Interface Native x1 Posted Request with tx_ca_p-recheck Assertion .............................................26 Figure 2.17. Receive Interface, Clean TLP ...........................................................................................................................27 Figure 2.18. Receive Interface, ECRC Errored TLP ..............................................................................................................27 Figure 2.19. Receive Interface, Malformed TLP ..................................................................................................................28 Figure 2.20. Receive Interface, Unsupported Request TLP.................................................................................................28 Figure 3.1. PCI Express IP Core General Options .................................................................................................................42 Figure 3.2. PCI Express IP Core PCS Pipe Options.................................................................................................................43 Figure 3.4. PCI Express IP Core Configuration Space - 1 Options ........................................................................................45 Figure 3.5. PCI Express IP Core Configuration Space - 2 Options ........................................................................................47 Figure 4.1. IPexpress Tool Dialog Box .................................................................................................................................51 Figure 4.2. IPexpress Configuration GUI .............................................................................................................................51 Figure 4.3. LatticeECP3 PCI Express Core Directory Structure ............................................................................................52 Figure 4.4. Clarity Designer GUI (pci express endpoint core) .............................................................................................56 Figure 4.6. PCI Express Endpoint IP Core Configuration GUI ..............................................................................................57 Figure 4.7. PCI Express Endpoint IP Core Clarity Designer GUI ...........................................................................................58 Figure 4.8. Clarity Designer Placed Module ........................................................................................................................58 Figure 4.9. Clarity Designer GUI (extref) .............................................................................................................................59 Figure 4.10. Clarity Designer Placed Modules (pci express endpoint and extref) ..............................................................59 Figure 4.11. Clarity Designer DCU Settings .........................................................................................................................60 Figure 4.12. Generating the IP Core ...................................................................................................................................60 Figure 4.13. Directory Structure .........................................................................................................................................61 Figure 4.14. Reset, Delete, Config, Expand and Collapse Placement of the IP Core ...........................................................64 Figure 5.1. PCI Express x4 Core Evaluation Testbench Block Diagram ...............................................................................65 Figure 5.2. PCI Express x4 Core Testbench Using Two Cores ..............................................................................................66 Figure 5.3. PCI Express x4 Core Testbench with Third-Party VIP ........................................................................................67 Figure 5.4. LatticeECP3 PCI Express Clocking Scheme ........................................................................................................68 Figure 5.5. ECP5 PCI Express Clocking Scheme ...................................................................................................................69 Figure 5.6. LatticeECP3 Device Arrays with PCS/SERDES ....................................................................................................70 Figure 5.7. ECP5 Device Arrays with PCS/SERDES ...............................................................................................................70 Figure 5.8. Best Case Timing Diagram, Lattice Device with Respect to PERST# .................................................................71 Figure 5.9. Worst Case Timing Diagram, Lattice Device with Respect to PERST#...............................................................71 Figure 5.10. Example of Board Layout Concern with x4 Link ..............................................................................................72 Figure 5.11. Implementation of x4 IP Core to Edge Fingers ...............................................................................................73 Figure 5.12. Implementation of x1 IP Core to Edge Fingers ...............................................................................................74 Figure 5.13. PCI Express Endpoint Add In Card ...................................................................................................................74 © 2013-2017 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. 4 FPGA-IPUG-02009-1.8 PCI Express x1/x2/x4 Endpoint IP Core User Guide Tables Table 1.1. PCI Express (2.5G) IP Core Quick Facts ................................................................................................................. 6 Table 1.2. PCI Express 5G IP Core Quick Facts ...................................................................................................................... 7 Table 2.1. PCI Express IP Core Port List............................................................................................................................... 11 Table 2.2. Unsupported TLPs Which Can be Received by the IP ........................................................................................ 30 Table 2.3. Unsupported TLPs Which Can Be Received by the IP ........................................................................................ 32 Table 2.4. Wishbone Interface Memory Map ..................................................................................................................... 33 Table 2.5. Physical Layer Error List ..................................................................................................................................... 34 Table 2.6. Data Link Layer Error List ................................................................................................................................... 34 Table 2.7. Transaction Layer Error List ............................................................................................................................... 35 Table 3.1. IP Core Parameters ............................................................................................................................................ 40 Table 3.2. General Tab Parameters .................................................................................................................................... 43 Table 3.3. PCS Pipe Options Tab Parameters ..................................................................................................................... 43 Table 3.4. Flow Control Tab Parameters ............................................................................................................................ 44 Table 3.5. Configuration Space - 1 Tab Parameters............................................................................................................ 46 Table 3.6. Configuration Space - 2 Tab Parameters............................................................................................................ 47 Table 3.7. Total EBR Count Based on Max Payload Size (2.5G IP Core) .............................................................................. 49 Table 4.1. File List ............................................................................................................................................................... 52 Table 4.2. File List ............................................................................................................................................................... 61 Table 5.1. LatticeECP3 Power Up Timing Specifications ..................................................................................................... 72 Table 5.2. ECP5 Power Up Timing Specifications ................................................................................................................ 72 Table 5.3. LTSSM Counters ................................................................................................................................................. 75 Table 5.4. Troubleshooting ................................................................................................................................................. 75 Table A.1. Resource Utilization ........................................................................................................................................... 79 Table A.2. Resource Utilization ........................................................................................................................................... 79 Table A.3. Resource Utilization ........................................................................................................................................... 79 Table A.4. Resource Utilization ........................................................................................................................................... 80 Table A.5. Resource Utilization ........................................................................................................................................... 80 Table B.1. Resource Utilization ........................................................................................................................................... 81 Table B.2. Resource Utilization ........................................................................................................................................... 81 © 2013-2017 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. FPGA-IPUG-02009_1.8 5 PCI Express x1/x2/x4 Endpoint IP Core User Guide 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 link partner 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 core provides a x1, x2 or x4 endpoint solution from the electrical SERDES interface to the transaction layer. This solution supports the LatticeECP3™, ECP5™ and ECP5-5G™device families. When used with the LatticeECP3, ECP5 and ECP5-5G family of devices, the PCI Express core is implemented using an extremely economical and high value FPGA platform. This user guide covers the following versions of the Lattice PCI Express Endpoint IP core: PCI Express (2.5G) IP Core  The Native x4 Core targets the LatticeECP3 and ECP5 family of devices.  The x4 Downgraded x1 Core also targets the LatticeECP3 and ECP5 family. The x4 Downgraded x1 core is a x4 core that uses one channel of SERDES/PCS and a 64-bit data path for x1 link width.  The x4 Downgraded x2 Core also targets the LatticeECP3 and ECP5 family. The x4 Downgraded x2 core is a x4 core that uses two channels of SERDES/PCS and a 64-bit data path for x2 link width.  The Native x1 Core targets the LatticeECP3 and ECP5 family of devices. This is a reduced LUT count x1 core with a 16-bit data path. PCI Express 5G IP Core  The Native x2 Core targets the Lattice ECP5-5G device. The x2 core uses 2 channels of SERDES/PCS and a 64-bit data path for x2 link width.  The x2 Downgraded x1 Core targets the Lattice ECP5-5G device. The x2 Downgraded x1 core is a x2 core that uses 1 channel of SERDES/PCS and a 64-bit data path for x1 link width. 1.1. Quick Facts Table 1.1 provides quick facts about the Lattice PCI Express (2.5G) x1/x2/x4 IP Core. Table 1.1. PCI Express (2.5G) IP Core Quick Facts PCI Express IP Configuration Native x4 IP Requirements Resource Utilization Design Tool Support FPGA Families Supported Minimal Device Needed Native x1 LatticeECP3 and ECP5 Downgraded x2 LFE317E7FN484C LFE5UM-45F7BG756CES LFE3-17E7FN484C LFE5UM-25F7BG381C LFE317E7FN484C LFE5UM-45F7BG756CES Targeted Device LFE395E7FPBGA1156C LFE5UM-85F7BG756CES LFE3-95E7FPBGA1156C LFE5UM-85F7BG756CES LFE395E7FPBGA1156C LFE5UM-85F7BG756CES Data Path Width LUTs 64 12200 64 13900 16 6040 16 6207 64 12900 64 12200 sysMEMTM EBRs Registers Lattice Implementation 11 9746 11 9763 11 8899 11 9746 Synthesis Simulation 4 4 4027 4188 Lattice Diamond® 3.8 Synopsys® Synplify Pro® for Lattice I-2013.09L-SP1 Aldec® Active-HDLTM 9.3 (Windows only, Verilog and VHDL) Mentor Graphics® ModelSim® SE 10.2C (Verilog Only) © 2013-2017 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. 6 FPGA-IPUG-02009-1.8 PCI Express x1/x2/x4 Endpoint IP Core User Guide Table 1.2 provides quick facts about the Lattice PCI Express 5G x1/x2 IP Core. Table 1.2. PCI Express 5G IP Core Quick Facts PCI Express 5G IP Configuration Native x2 Downgraded x1 IP Requirements Resource Utilization Design Tool Support FPGA Families Supported Minimal Device Needed Targeted Device Lattice ECP5-5G LFE5UM5G-25F-8MG285C LFE5UM5G-25F-8MG285C LFE5UM5G-85F-8BG756C LFE5UM5G-85F-8BG756C Data Path Width LUTs 64 15673 64 13893 sysMEMTM EBRs Registers Lattice Implementation 7 11249 7 9660 Synthesis Simulation Lattice Diamond® 3.9 Synopsys® Synplify Pro® for Lattice L-2016.09L-1 Aldec® Active-HDL 10.3 (Windows only, Verilog and VHDL) Mentor Graphics® ModelSim® SE 10.2C (Verilog Only) 1.2. Features The Lattice PCI Express IP core supports the following features. 1.2.1. PHY Layer           2.5 Gb/s or 5.0 Gb/s CML electrical interface PCI Express 2.0 electrical compliance Serialization and de-serialization 8b10b symbol encoding/decoding Data scrambling and de-scrambling Link state machine for symbol alignment Clock tolerance compensation supports +/- 300 ppm Framing and application of symbols to lanes 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 1.2.2. Data Link Layer        Data link control and management state machine Flow control initialization Ack/Nak DLLP generation/termination Power management DLLP generation/termination through simple user interface LCRC generation/checking Sequence number generation/checking Retry buffer and management © 2013-2017 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. FPGA-IPUG-02009_1.8 7 PCI Express x1/x2/x4 Endpoint IP Core User Guide 1.2.3. Transaction Layer     Supports all types of TLPs (memory, I/O, configuration and message) Power management user interface to easily send and receive power messages Optional ECRC generation/checking 128, 256, 512, 1 k, 2 k, or 4 Kbyte maximum payload size 1.2.4. Configuration Space Support       PCI-compatible Type 0 Configuration Space Registers contained inside the core (0x0-0x3C) PCI Express Capability Structure Registers contained inside the core Power Management Capability Structure Registers contained inside the core MSI Capability Structure Registers contained inside the core Device Serial Number Capability Structure contained inside the core Advanced Error Reporting Capability Structure contained inside the core 1.2.5. Top Level IP Support        125 MHz user interface For 2.5G IP core:  Native x4 and Downgraded x1/x2 support a 64-bit datapath  Native x1 supports a 16-bit datapath For 5G IP core:  Native x2 and Downgraded x1 support a 64-bit datapath 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 Upstream/downstream, single function endpoint topology Higher layer control of LTSSM via ports Access to select configuration space information via ports © 2013-2017 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. 8 FPGA-IPUG-02009-1.8 PCI Express x1/x2/x4 Endpoint IP Core User Guide 2. Functional Descriptions This chapter provides a functional description of the Lattice PCI Express Endpoint IP core. 2.1. Overview The PCI Express core is implemented in several different FPGA technologies. These technologies include soft FPGA fabric elements such as LUTs, registers, embedded block RAMs (EBRs), embedded hard elements with the PCS/SERDES. The Clarity Designer design 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 Clarity Designer 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 functions. User Interface Transaction Layer - ECRC - Interrupt, Error Messages - Flow Control Updates - AER Data Link Layer - Ret ry Buffer - Sequence Number - Ack/ Nak - LCRC - Flow Control Ini tialization PHY Layer 2 - Ordered Set Encoder/Decoder - LTSSM - Data Scrambling and Descrambling - Clock Compensation Soft FPGA Logic PHY Layer 1 - Electrical Interface - Word Alignment - 8b/10b - Channel Alignment Embedded PCS/SERDES PCI Express Lanes Figure 2.1. PCI Express IP Core Technology and Functions As the PCI Express core proceeds through the Diamond software design flow specific technologies are targeted to their specific locations on the device. Figure 2.2 provides implementation representations of the LFE5UM devices with a PCI Express core. © 2013-2017 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. FPGA-IPUG-02009_1.8 9 PCI Express x1/x2/x4 Endpoint IP Core User Guide Figure 2.2. PCI Express Core Implementation in LatticeECP3, ECP5 and EPC5-5G 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 blocks (this topic will be discussed later in this document). The FPGA logic placement and routing is the job of the Diamond design tools to select regions nearby the hard blocks to achieve the timing goals. PCI Express IP Core Clock and Reset Interface Transmit TLP Interface Receive TLP Interface PCI Express Lanes Control and Status Interface Configuration Space Register Interface Wishbone Interface Figure 2.3. PCI Express Interfaces © 2013-2017 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. 10 FPGA-IPUG-02009-1.8 PCI Express x1/x2/x4 Endpoint IP Core User Guide Table 2.1 provides the list of ports and descriptions for the PCI Express IP core. Table 2.1. PCI Express IP Core Port List Port Name Clock and Reset Interface Direction Clock Function Description For 2.5G IP core: 100 MHz PCI Express differential reference clock used to generate the 2.5 Gb/s data. refclk[p,n] sys_clk_125 rst_n Input — Output — Input — For 5G IP core: 200 MHz PCI Express differential reference clock used to generate 5.0 Gb/s data. 125 MHz clock derived from refclk to be used in the user application. Active-low asynchronous data path and state machine reset. PCI Express Lanes hdin[p,n]_[0,1,2,3] hdout[p,n]_[0,1,2,3] Input Output — PCI Express 2.5 or 5.0 Gb/s CML inputs for lanes 0, 1, 2, and 3. For 5G IP core, up to lanes 0 and 1 only. 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 — PCI Express 2.5 or 5.0 Gb/s CML inputs for lanes 0, 1, 2, and 3. For 5G IP core, up to lanes 0 and 1 only. 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 Transmit TLP Interface Transmit data bus. tx_data_vc0[n:0] Input sys_clk_125 tx_req_vc0 Input sys_clk_125 tx_rdy_vc0 Output sys_clk_125 For 2.5G IP core Native x4, Downgraded x1/x2 and 5G IP core: [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 For 2.5G IP core Native x1: [15:8] Byte N [7:0] Byte N+1 Active high transmit request. This port is asserted when the user wants to send a TLP. If several TLPs will be provided in a burst, this port can remain high until all TLPs have been sent. Active high transmit ready indicator. Tx_st should be provided next clock cycle after tx_rdy is high. This port will go low between TLPs. © 2013-2017 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. FPGA-IPUG-02009_1.8 11 PCI Express x1/x2/x4 Endpoint IP Core User Guide Table 2.1. PCI Express IP Core Port List (continued) Port Name Direction Clock tx_st_vc0 Input sys_clk_125 tx_end_vc0 Input sys_clk_125 Function Description Active high transmit start of TLP indicator. Active high transmit end of TLP indicator. This signal must go low at the end of the TLP. tx_nlfy_vc0 Input sys_clk_125 Active high transmit nullify TLP. Can occur anywhere during the TLP. If tx_nlfy_vc0 is asserted to nullify a TLP the tx_end_vc0 port should not be asserted. The tx_nlfy_vc0 terminates the TLP. tx_dwen_vc0 Input sys_clk_125 Active high transmit 32-bit word indicator. Used if only bits [63:32] provide valid data. This port is only available for 2.5G IP core Native x4, Downgraded x1/x2 and 5G IP core. sys_clk_125 Active high transmit clock enable. When a Native x4 or x2 is downgraded, this signal is used as the clock enable to downshift the transmit bandwidth. This port is only available for 2.5G IP core Native x4, Downgraded x1/x2 and 5G IP core. sys_clk_125 Transmit Interface header credit available bus. This port will decrement as TLPs are sent and increment as UpdateFCs are received. Ph - Posted header Nph - Non-posted header 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. sys_clk_125 Transmit Interface data credit available bus. This port will decrement as TLPs are sent and increment as UpdateFCs are received. pd - posted data 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. sys_clk_125 Active high signal that indicates the core sent a Posted TLP which changed the tx_ca_p[h,d]_vc0 port. This might require a recheck of the credits available if the user has asserted tx_req_vc0 and is waiting for tx_rdy_vc0 to send a Posted TLP. sys_clk_125 Active high signal that indicates the core sent a Completion TLP which changed the tx_ca_cpl[h,d]_vc0 port. This might require a recheck of the credits available if the user has asserted tx_req_vc0 and is waiting for tx_rdy_vc0 to send a Completion TLP. tx_val tx_ca_[ph,nph,cplh]_vc0[8:0] tx_ca_[pd,npd,cpld]_vc0[12:0] tx_ca_p_recheck_vc0 tx_ca_cpl_recheck_vc0 Output Output Output Output Output © 2013-2017 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. 12 FPGA-IPUG-02009-1.8 PCI Express x1/x2/x4 Endpoint IP Core User Guide Table 2.1. PCI Express IP Core Port List (continued) Port Name Direction Clock Function Description Receive TLP Interface Receive data bus. rx_data_vc0[n:0] Output sys_clk_125 For 2.5G IP core Native x4, Downgraded x1/x2 and 5G IP core: [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 For 2.5G IP core Native x1: [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 rx_dwen_vc0 Output sys_clk_125 Active high receive end of TLP indicator. Active high 32-bit word indicator. Used if only bits [63:32] contain valid data. This port is only available for 2.5G IP core Native x4, Downgraded x1/x2 and 5G IP core. rx_ecrc_err_vc0 Output sys_clk_125 Active high ECRC error indicator. Indicates an ECRC error in the current TLP. Only available if ECRC is enabled in the IP configuration GUI. rx_us_req_vc0 Output sys_clk_125 Active high unsupported request indicator. Asserted if any of the following TLP types are received: — Memory Read Request-Locked — The TLP is still passed to the user where the user will need to terminate the TLP with an Unsupported Request Completion. rx_malf_tlp_vc0 Output sys_clk_125 Active high malformed TLP indicator. Indicates a problem with the current TLPs length or format. Output sys_clk_125 Active high BAR indicator for the current TLP. If this bit is high, the current TLP on the receive interface is in the address range of the defined BAR. [6] - Expansion ROM [5] - BAR5 [4] - BAR4 [3] - BAR3 [2] - BAR2 [1] - BAR1 [0] - BAR0 For 64-bit BARs, a BAR hit will be indicated on the lower BAR number. The rx_bar_hit changes along with the rx_st_vc0 signal. ur_np_ext Input sys_clk_125 ur_p_ext Input sys_clk_125 rx_bar_hit[6:0] Active high indicator for unsupported non-posted request reception. Active high indicator for unsupported posted request reception. © 2013-2017 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. FPGA-IPUG-02009_1.8 13 PCI Express x1/x2/x4 Endpoint IP Core User Guide Table 2.1. PCI Express IP Core Port List (continued) Port Name Direction Clock [ph,pd, nph,npd] _buf_status_vc0 Input sys_clk_125 [ph,nph]_processed_vc0 Input sys_clk_125 Function Description 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. 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]_processed_vc0 Input sys_clk_125 Active high enable for [pd, npd]_num_vc0 port. The user should place the number of data credits processed on the [pd, npd]_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 credits processed. It is enabled by the [pd, npd]_processed_vc0 port. Control and Status Input no_pcie_train force_lsm_active force_rec_ei Input PHYSICAL LAYER Active high signal disables LTSSM training and forces the Async LTSSM to L0. This is intended to be used in simulation only to force the LTSSM into the L0 state. Forces the Link State Machine for all of the channels to the Async linked state. Input Async Input Async Forces the detection of a received electrical idle. Forces the detection of a receiver during the LTSSM Detect state on all of the channels. force_disable_scr Input Async Disables the PCI Express TLP scrambler. hl_snd_beacon Input Input sys_clk_125 Async Input Async Input sys_clk_125 hl_gto_hrst Input sync Active high request to send a beacon. Active high to set the disable scrambling bit in the TS1/TS2 sequence. Active high request to go to Disable state when LTSSM is in Config or Recovery. Active high request to go to Detect state when LTSSM is in L2 or Disable. Active high request to go to Hot Reset when LTSSM is in Recovery. hl_gto_l0stx hl_gto_l0stxfts Input Input sys_clk_125 sys_clk_125 Active high request to go to L0s when LTSSM is in L0. Active high request to go to L0s and transmit FTS when LTSSM is in L0s. hl_gto_l1 Input sys_clk_125 Active high request to go to L1 when LTSSM is in L0. hl_gto_l2 hl_gto_lbk[3:0] Input Input sys_clk_125 sys_clk_125 hl_gto_rcvry Input sys_clk_125 hl_gto_cfg Input sys_clk_125 Active high request to go to L2 when LTSSM is in L0. Active high request to go to Loopback when LTSSM is in Config or Recovery. Active high request to go to Recovery when LTSSM is in L0, L0s or L1. Active high request to go to Config when LTSSM is in Recovery. force_phy_status hl_disable_scr hl_gto_dis hl_gto_det © 2013-2017 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. 14 FPGA-IPUG-02009-1.8 PCI Express x1/x2/x4 Endpoint IP Core User Guide Table 2.1. PCI Express IP Core Port List (continued) Port Name Direction Clock phy_ltssm_state[3:0] Output sys_clk_125 phy_cfgln[n:0] Output sys_clk_125 phy_cfgln_sum[2:0] Output sys_clk_125 phy_pol_compliance Output sys_clk_125 tx_lbk_rdy Output sys_clk_250 Input sys_clk_250 tx_lbk_kcntl[7/1:0] Function Description 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 Active high LTSSM Config state link status. An active bit indicates the channel is included in the configuration link width negotiation. [3:0] - 2.5G IP core Native x4, Downgraded x1/x2 [1:0] - 5G IP core Native x2, Downgraded x1 [0] - PCI Express Lane 3 [1] - PCI Express Lane 2 [2] - PCI Express Lane 1 [3] - PCI Express Lane 0 Link Width. This port is only available for 2.5G IP core Native x4, Downgraded x1/x2 and 5G IP core. 000 - No link defined 001 - Link width = 1 010 - Link width = 2 100 - Link width = 4 Active high indicator that the LTSSM is in the Polling. Compliance state. This output port is used to enable the transmit master loopback data. This port is only available if the Master Loop-back feature is enabled in the IP configuration GUI. 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 IP configuration GUI. For 2.5G IP core Native x4, Downgraded x1/x2 and 5G IP core: [7:6]- K control on tx_lbk_data[63:48] [5:4] - K control on tx_lbk_data[47:32] [3:2] - K control on tx_lbk_data[31:16] [1:0] - K control on tx_lbk_data[15:0] For 2.5G IP core Native x1: [1:0] - K control on rx_lbk_data[15:0] © 2013-2017 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. FPGA-IPUG-02009_1.8 15 PCI Express x1/x2/x4 Endpoint IP Core User Guide Table 2.1. PCI Express IP Core Port List (continued) Port Name tx_lbk_data[63/15:0] Direction Input Clock sys_clk_250 Function Description This input port is used to send 64-bit data for the master loopback. This port is only available if the Master Loopback feature is enabled in the IP configuration GUI. For 2.5G IP core Native x4, Downgraded x1/x2 and 5G IP core: [63:48] - Lane 3 data [47:32] - Lane 2 data [31:16] - Lane 1 data [15:0] - Lane 0 data rx_lbk_kcntl[7/1:0] Output sys_clk_250 For 2.5G IP core Native x1: [15:0] - Lane 0 data This output port is used to indicate a K control word is being received on rx_lbk_data port. This port is only avail- able if the Master Loopback feature is enabled in the IP configuration GUI. For 2.5G IP core Native x4, Downgraded x1/x2 or 5G IP core: [7:6] - K control on rx_lbk_data[63:48] [5:4] - K control on rx_lbk_data[47:32] [3:2] - K control on rx_lbk_data[31:16] [1:0] - K control on rx_lbk_data[15:0] rx_lbk_data[63:0] Output sys_clk_250 For 2.5G IP core Native x1: [1:0] - K control on rx_lbk_data[15:0] This output port is used to receive 64/16-bit data for the master loopback. This port is only available if the Master Loopback feature is enabled in the IP configuration GUI. For 2.5G IP core Native x4, Downgraded x1/x2 and 5G IP core: [63:48] - Lane 3 data [47:32] - Lane 2 data [31:16] - Lane 1 data [15:0] - Lane 0 data For 2.5G IP core Native x1: [15:0]- Lane 0 data dl_inactive dl_init Output Output DATA LINK LAYER sys_clk_125 Data Link Layer is the DL_Inactive state. sys_clk_125 Data Link Layer is in the DL_Init state. dl_active dl_up Output Output sys_clk_125 sys_clk_125 Data Link Layer is in the DL_Active state. Data Link Layer is in the DL_Active state and is now providing TLPs to the Transaction Layer. 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 © 2013-2017 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. 16 FPGA-IPUG-02009-1.8 PCI Express x1/x2/x4 Endpoint IP Core User Guide Table 2.1. PCI Express IP Core Port List (continued) Port Name Direction Clock Function Description 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] tx_dllp_sent rxdp_pmd_type[2:0] Input Output Output sys_clk_125 sys_clk_125 sys_clk_125 Vendor-defined data to send in DLLP Requested DLLP was sent. Receive power message type 000 - PM Enter L1 001 - PM Enter L2 011 - PM Active State Request L1 100 - PM Request Ack rxdp_vsd_data[23:0] Output sys_clk_125 Vendor-defined DLLP data received rxdp_dllp_val tx_rbuf_empty Output Output sys_clk_125 sys_clk_125 tx_dllp_pend Output sys_clk_125 rx_tlp_rcvd Output sys_clk_125 Active high power message received Transmit retry buffer is empty. (Used for ASPM implementation outside the core.) A DLLP is pending to be transmitted. (Used for ASPM implementation outside the core.) A TLP was received. (Used for ASPM implementation outside the core.) ecrc_gen_enb Output sys_clk_125 TRANSACTION LAYER If AER and ECRC are enabled then this port is an output and indicates when ECRC generation is enabled by the PCI Express IP core. ecrc_chk_enb Output sys_clk_125 cmpln_tout Input sys_clk_125 cmpltr_abort_np Input sys_clk_125 cmpltr_abort_p Input sys_clk_125 unexp_cmpln Input sys_clk_125 np_req_pend Input sys_clk_125 err_tlp_header[127:0] Input sys_clk_125 If ECRC generation is turned on then the TD bit in the transmit TLP header must be set to provide room in the TLP for the insertion of the ECRC. If AER and ECRC are enabled then this port is an output and indicates when ECRC checking is enabled by the PCI Express IP core. Completion Timeout Indicator for posted request. Used to force non-fatal error message generation and also set appropriate bit in AER. Complete or Abort Indicator for non-posed request. Used to force non-fatal error message generation and also set appropriate bit in AER. Complete or Abort Indicator. Used to force non-fatal error message generation and also set appropriate bit in AER. Unexpected Completion Indicator. Used to force non-fatal error message generation and also set appropriate bit in AER. Sets device Status[5] indicating that a Non-Posted transaction is pending. Advanced Error Reporting errored TLP header. This port is used to provide the TLP header for the TLP associated with an unexp_cmpln or cmpltr_abort_np/cmpltr_abort_p. The header data should be provided on the same clock cycle as the unexp_cmpln or cmpltr_abort_np/cmpltr_abort_p. © 2013-2017 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. FPGA-IPUG-02009_1.8 17 PCI Express x1/x2/x4 Endpoint IP Core User Guide Table 2.1. PCI Express IP Core Port List (continued) Port Name Direction Clock Function Description CONFIGURATION REGISTERS sys_clk_125 Bus Number supplied with configuration write. sys_clk_125 Device Number supplied with configuration write. bus_num[7:0] dev_num[4:0] Output Output func_num[2:0] cmd_reg_out[5:0] Output Output sys_clk_125 sys_clk_125 Function Number supplied with configuration write. PCI Type0 Command Register bits [5] - Interrupt Disable [4] - SERR# Enable [3] - Parity Error Response [2] - Bus Master [1] - Memory Space [0] - IO Space dev_cntl_out[14:0] lnk_cntl_out[7:0] Output Output sys_clk_125 sys_clk_125 inta_n Input sys_clk_125 PCI Express Capabilities Device Control Register bits [14:0]. PCI Express Capabilities Link Control Register bits [7:0]. Legacy INTx interrupt request. Falling edge will produce an ASSERT_INTx message and set the Interrupt Status bit to a 1. Rising edge will produce a DEASSERT_INTx message and clear the Interrupt Status bit. The Interrupt Disable bit will disable the message to be sent, but the status bit will operate as normal. The inta_n port has a requirement for how close an assert or de-assert event can be to the previous assert or deassert event. For the 2.5G IP core native x4 and x2/x1 downgraded cores, this is two sys_clk_125 clock cycles. For the native x1 core this is eight sys_clk_125 clock cycles. If the inta_n port is low indicating an ASSERT_INTx and the Interrupt Disable bit is driven low by the system, then the inta_n port needs to be pulled high to send a DEASSERT_INTx message. This can be automatically performed by using a logic OR between the inta_n and cmd_reg_out[5] port. MSI interrupt request. Rising edge on a bit will produce a MemWr TLP for a MSI interrupt for the provided address and data by the root complex. [7] - MSI 8 [6] - MSI 7 [5] - MSI 6 [4] - MSI 5 [3] - MSI 4 [2] - MSI 3 [1] - MSI 2 [0] - MSI 1 msi[7:0] Input sys_clk_125 flr_rdy_in initiate_flr Input Output sys_clk_125 sys_clk_125 Ready from user logic to perform Functional Level Reset Initiate Functional Level Reset for user logic dev_cntl_2_out mm_enable[2:0] Output Output sys_clk_125 sys_clk_125 PCI Express Capabilities Device Control 2 Register Bits [4:0] Multiple MSI interrupts are supported by the root complex. This indicates how many messages the root complex will accept. © 2013-2017 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. 18 FPGA-IPUG-02009-1.8 PCI Express x1/x2/x4 Endpoint IP Core User Guide Table 2.1. PCI Express IP Core Port List (continued) Port Name Direction Clock msi_enable Output sys_clk_125 pme_status Input sys_clk_125 pme_en Output sys_clk_125 pm_power_state[1:0] Output sys_clk_125 load_id Input sys_clk_125 vendor_id[15:0] Input sys_clk_125 device_id[15:0] Input sys_clk_125 rev_id[7:0] Input sys_clk_125 class_code[23:0] Input sys_clk_125 subsys_ven_id[15:0] Input sys_clk_125 subsys_id[15:0] Input sys_clk_125 Function Description MSI interrupts are enabled by the root complex. When this port is high MSI interrupts are to be used. The inta_n port is disabled. Active high input to the Power Management Capability Structure PME_Status bit. Indicates that a Power Management Event has occurred on the endpoint. PME_En bit in the Power Management Capability Structure. Active high signal to allow the endpoint to send PME messages. Power State in the Power Management Capability Structure. Software sets this state to place the endpoint in a particular state. 00 - D0 01 - D1 10 - D2 11 - D3 This port is only present when the “Load IDs from Ports” checkbox is enabled in the IP configuration GUI. When this port is low, the core will send Configuration Request Retry Status for all Configuration Requests. When this port is high, the core will send normal Successful Completions for Configuration Requests. On the rising edge of load_id the vectors on vendor_id[15:0], device_id[15:0], rev_id[7:0], class_code[23:0], subsys_ven_id[15:0], and subsys_id[15:0] will be loaded into the proper configuration registers. This port is only present when the “Load IDs from Ports” checkbox is enabled in the IP configuration GUI. This port will load the vendor ID for the core on the rising edge of load_id. This port is only present when the “Load IDs from Ports” checkbox is enabled in the IP configuration GUI. This port will load the device ID for the core on the rising edge of load_id. This port is only present when the “Load IDs from Ports” checkbox is enabled in the IP configuration GUI. This port will load the revision ID for the core on the rising edge of load_id. This port is only present when the “Load IDs from Ports” checkbox is enabled in the IP configuration GUI. This port will load the class code for the core on the rising edge of load_id. This port is only present when the “Load IDs from Ports” checkbox is enabled in the IP configuration GUI. This port will load the subsystem vendor ID for the core on the rising edge of load_id. This port is only present when the “Load IDs from Ports” checkbox is enabled in the IP configuration GUI. This port will load the subsystem device ID for the core on the rising edge of load_id. © 2013-2017 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. FPGA-IPUG-02009_1.8 19 PCI Express x1/x2/x4 Endpoint IP Core User Guide Table 2.1. PCI Express IP Core Port List (continued) Wishbone Interface* CLK_I RST_I SEL_I [3:0] Input Input Input CLK_I CLK_I — Wishbone interface clock. Asynchronous reset. Data valid indicator [3] - DAT_I[31:24] [2] - DAT_I[23:16] [1] - DAT_I[15:8] [0] - DAT_i[7:0] WE_I Input CLK_I Write enable 1 - write 0 - read STB_I Input CLK_I Strobe input. CYC_I DAT_I[31:0] Input Input CLK_I CLK_I Cycle input. Data input. ADR_I[12:0] CHAIN_RDAT_in[31:0] Input Input CLK_I CLK_I CHAIN_ACK_in Input CLK_I Address input. Daisy chain read data. If using a read chain for the wishbone interface, this would be the read data from the previous slave. If not using a chain, then this port should be tied low. Daisy chain ack. If using a read chain for the wishbone interface, this would be the ack from the previous slave. If not using a chain, then this port should be tied low. ACK_O Output CLK_I Ack output. IRQ_O Output CLK_I Interrupt output. This port is not used (always 0). DAT_O[31:0] Output CLK_I Data output. *Note: Complete information on the Wishbone interface specification can be found at www.opencores.org in the WISHBONE Systemon-Chip (SOC) Interconnection Architecture for Portable IP Cores specification. 2.2. Interface Description This section describes the datapath user interfaces of the IP core. The transmit and receive interfaces both use the TLP as the data structure. The lower layers attach the start, end, sequence number and crc. 2.2.1. 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]_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. While waiting for tx_rdy_vc0, if tx_ca_p/cpl_recheck is asserted, then the user must check available credit again. If there is enough credit, the user can proceed with the sending data based on tx_rdy_vc0. If the credit becomes insufficient, tx_req_vc0 must be deasserted 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 assert tx_st_vc0. Tx_rdy_vc0 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. © 2013-2017 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. 20 FPGA-IPUG-02009-1.8 PCI Express x1/x2/x4 Endpoint IP Core User Guide Transmit TLP Interface Waveforms for 2.5G IP Core Native x4, Downgraded x1/x2 and 5G IP Core Native x2, Downgraded x1 Figure 2.4 through Figure 2.12 provide timing diagrams for the tx interface signals with a 64-bit datapath. 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 Figure 2.4. Transmit Interface of 2.5G IP core Native x4 or 5G IP core Native x2, 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 D1 tx_dwen_vc0 tx_nlfy_vc0 tx_ca_h_vc0 20 19 tx_ca_d_vc0 35 34 Figure 2.5. Transmit Interface 2.5G IP core Native x4 or 5G IP core Native x2, 3DW Header, 2 DW Data © 2013-2017 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. FPGA-IPUG-02009_1.8 21 PCI Express x1/x2/x4 Endpoint IP Core User Guide 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 19 Figure 2.6. Transmit Interface 2.5G IP core Native x4 or 5G IP core Native x2, 4DW Header, 0 DW sys_clk_125 tx_val tx_req_vc0 tx_rdy_vc0 tx_st_vc0 tx_end_vc0 H0H1 H2H3 D0D1 D1D2 tx_ca_h_vc0 20 19 tx_ca_d_vc0 35 31 tx_data_vc0[63:0] D14 tx_dwen_vc0 tx_nlfy_vc0 Figure 2.7. Transmit Interface 2.5G IP core Native x4 or 5G IP core Native x2, 4DW Header, Odd Number of DWs © 2013-2017 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. 22 FPGA-IPUG-02009-1.8 PCI Express x1/x2/x4 Endpoint IP Core User Guide 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.8. Transmit Interface 2.5G IP core Native x4 or 5G IP core Native x2, 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 Dn tx_dwen_vc0 tx_nlfy_vc0 Figure 2.9. Transmit Interface 2.5 IP core Native x4 or 5G IP core Native x2, Nullified TLP © 2013-2017 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. FPGA-IPUG-02009_1.8 23 PCI Express x1/x2/x4 Endpoint IP Core User Guide 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 D2D3 tx_dwen_vc0 tx_nlfy_vc0 tx_ca_ph_vc0 20 19 tx_ca_pd_vc0 35 34 Figure 2.10. Transmit Interface 2.5G IP Core Downgraded x1 or 5G IP core Downgraded x1 at Gen1 Speed Figure 2.11. Transmit Interface 2.5G IP core Downgraded x2, 5G IP core Native x2 at Gen 1 speed or Downgraded x1 at Gen2 Speed © 2013-2017 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. 24 FPGA-IPUG-02009-1.8 PCI Express x1/x2/x4 Endpoint IP Core User Guide sys_clk_125 tx_val tx_req_vc0 tx_rdy_vc0 tx_st_vc0 tx_end_vc0 tx_ca_p_recheck_vc0 tx_ca_ph_vc0 1 tx_ca_pd_vc0 13 0 1 Figure 2.12. Transmit Interface 2.5G IP core Native x4 or 5G IP core Native x2, Posted Request with tx_ca_p-recheck Assertion Transmit TLP Interface Waveforms for 2.5G IP Core Native x1 Figure 2.13 through Figure 2.16 provide timing diagrams for the transmit interface signals with a 16-bit datapath. 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 Figure 2.13. Transmit Interface Native x1, 3DW Header, 1 DW Data © 2013-2017 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. FPGA-IPUG-02009_1.8 25 PCI Express x1/x2/x4 Endpoint IP Core User Guide sys_clk_125 tx_req_vc0 tx_rdy_vc0 tx_st_vc0 tx_end_vc0 H0 tx_data_vc0[15:0] Dn Dn+1 H0 Dn Dn+1 2nd TLP 1st TLP tx_nlfy_vc0 Figure 2.14. Transmit Interface Native 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 H0 H1 H1 Dn tx_nlfy_vc0 Figure 2.15. Transmit Interface Native x1, Nullified TLP sys_clk_125 tx_req_vc0 tx_rdy_vc0 tx_st_vc0 tx_end_vc0 tx_ca_p_recheck_vc0 tx_ca_ph_vc0 1 tx_ca_pd_vc0 13 0 1 Figure 2.16. Transmit Interface Native x1 Posted Request with tx_ca_p-recheck Assertion © 2013-2017 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. 26 FPGA-IPUG-02009-1.8 PCI Express x1/x2/x4 Endpoint IP Core User Guide 2.2.2. Receive TLP Interface In the receive direction, TLPs will come from the core as they are received on the PCI Express lanes. Config read and config write TLPs to registers inside the core will be terminated inside the core. All other TLPs will be provided to the user. Also, if the core enables any of the BARs the TLP will go through a BAR check to make sure the TLPs address is in the range of any programmed BARs. If a BAR is accessed, the specific BAR is indicated by the rx_bar_hit[6:0] bus. 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 an ECRC error the rx_ecrc_err_vc0 signal is 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.17 through Figure 2.20 provide timing diagrams of the receive interface. 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. sys_clk_125 rx_st_vc0 rx_end_vc0 rx_data_vc0[63:0] H0H1 H2H3 D0D1 D1D2 Dn rx_dwen_vc0 rx_ecrc_err_vc0 rx_malf_tlp_vc0 rx_us_req_vc0 Figure 2.17. 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 rx_us_req_vc0 Figure 2.18. Receive Interface, ECRC Errored TLP © 2013-2017 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. FPGA-IPUG-02009_1.8 27 PCI Express x1/x2/x4 Endpoint IP Core User Guide 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 rx_us_req_vc0 Figure 2.19. 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 rx_us_req_vc0 Figure 2.20. Receive Interface, Unsupported Request TLP 2.3. Using the Transmit and Receive Interfaces There are two ways a PCI Express endpoint can interact with a root complex. As a completer, the endpoint will respond to accesses made by the root complex. As an initiator, the endpoint will perform accesses to the root complex. The following sections will discuss how to use transmit and receive TLP interfaces for both of these types of interactions. When the “Terminate All Config TLPs” option is checked in the IP configuration GUI, the IP core will handle all configuration requests. This includes responding as well as credit handling. 2.3.1. As a Completer In order to be accessed by a root complex at least one of the enabled BARs will need to be programmed. The BIOS or OS will enumerate the configuration space of the endpoint. The BARs initial value (loaded via the GUI) is read to understand the memory requirements of the endpoint. Each enabled BAR is then provided a base address to be used. When a memory request is received the PCI Express core will perform a BAR check. The address contained in the memory request is checked against all of the enabled BARs. If the address is located in one of the BARs' address range the rx_bar_hit[6:0] port will indicate which BAR is currently being accessed. © 2013-2017 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. 28 FPGA-IPUG-02009-1.8 PCI Express x1/x2/x4 Endpoint IP Core User Guide At this time the rx_st_vc0 will be asserted with rx_data_vc0 providing the first eight bytes of the TLP. The memory request 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 error TLP. 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. Refer to the Error Handling section for additional details on credit handling and completion rules for receive errored TLP. If the TLP is a 32-bit MWr TLP (rx_data_vc0[63:56]= 0x40) or 64-bit MWr TLP (rx_data_vc0[63:56]=0x30) 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 1 header credit. There is one data credit used per four DWs of data. The length field (rx_data_vc0[41:32]) provides the number of DWs used in the TLP. If the TLP length is on 4DW boundary (rx_data_vc0[33:32]=0x0), the number of credits is the TLP length divided by 4 (rx_data_vc0[41:34]). If the TLP length is not on 4DW boundary (rx_data_vc0[33:32] >0) the number of credits is rx_data_vc0[41:34] + 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 1 clock cycle to latch in the pd_num_vc0 port and release credits. If the TLP is a 32-bit MRd TLP (rx_data_vc0[63:56]= 0x00) or 64-bit MRd TLP (rx_data_vc0[63:56]=0x20) the address needs to be read creating a completion TLP with the data. A CplD TLP (Completion with Data) 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 also 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 lnk_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 the lower address of the current CplD allow the far end to piece the entire read data back together. Once the CplD TLP is assembled the TLP needs to be sent and the credits for the MRd need to be released. To release the credits the port nph_processed_vc0 needs to be asserted for 1 clock cycle. This will release the 1 Non-Posted header credit used by an MRd. The CplD TLP can be sent immediately without checking for completion credits. If a requestor requests data then it is necessary for the requestor to have enough credits to handle the request. If the user still wants to check for credits before sending then the credits for a completion should be checked against the tx_ca_cplh and tx_ca_cpld ports. 2.3.2. As a Requestor As a requestor the endpoint will issue memory requests to the far end. 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 an 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 an MWr TLP is the length field divided by 4. 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. An MWr TLP takes 1 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 an 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 an 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. In response to an MRd TLP the far end will send a CplD TLP. At this time the rx_st_vc0 will be asserted with rx_data_vc0 providing the first 8 bytes of the TLP. The completion will terminate with the rx_end_vc0 port asserting. The user must now terminate the received CplD. If the core found any errors in the current TLP the error will be indicated on the rx_ecrc_err_vc0 or rx_malf_tlp_vc0 port. An errored TLP does not need to be terminated or release credits. The core will not provide a NAK even if the rx_ecrc_err_vc0 or rx_malf_tlp_vc0 are asserted. © 2013-2017 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. FPGA-IPUG-02009_1.8 29 PCI Express x1/x2/x4 Endpoint IP Core User Guide If the TLP is a CplD TLP (rx_data_vc0[63:56]= 0x4A) the data needs to be extracted stored until all CplDs associated with the current Tag are received. 2.4. Unsupported Request Generation The user ultimately is responsible for sending an Unsupported Request completion based on the capabilities of the user's design. For example, if the user's design only works with memory transactions and not I/O transactions, then I/O transactions are unsupported. These types of transactions require an Unsupported Request completion. There are several instances in which an Unsupported Request must be generated by the user. These conditions are listed below.  rx_us_req port goes high with rx_st indicating a Memory Read Locked, Completion Locked, or Vendor Defined Message.  Type of TLP is not supported by the user's design (I/O or memory request) Table 2.2 shows the types of unsupported TLPs which can be received by the IP core and the user interaction. Table 2.2. Unsupported TLPs Which Can be Received by the IP Unsupported Event Request “rx_us_req” Port Goes High User Logic Needs to Send UR Completion User Needs to Release Credit 1 Configuration Read/Write Type* No No No 2 Memory Read Request - Locked Locked Completions Yes Yes Yes No (Because EP Ignores Locked Completions) Yes Vendor Defined Message Type 0 and Type1 No Yes Yes TLP with invalid BAR Address No Yes MRd with Inconsistent TLP Type No MWr with Inconsistent TLP Type No I/ORd with Inconsistent TLP Type No I/OWr with Inconsistent TLP Type No Msg with Inconsistent TLP Type No MsgD with Inconsistent TLP Type No Yes (With UR Status) Yes (With UR Status) No (Since MWr is the Posted Req) Yes (With UR Status) Yes (With UR Status) No (Since Msg is the Posted Req) No (Since Msg is the Posted Req) 3 4 “Terminate All Config TLP” is enabled Unsupported by User Design No Yes Yes Yes Yes Yes Yes *Note: For unsupported by user design events, “inconsistent TLP type” means, for example, MRd request came in for the BAR that only supports I/O, and the other way around. © 2013-2017 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. 30 FPGA-IPUG-02009-1.8 PCI Express x1/x2/x4 Endpoint IP Core User Guide 2.5. Configuration Space The PCI Express IP core includes the required PCI configuration registers and several optional capabilities. The section will define which registers are included inside the core and how they are utilized. 2.5.1. Base Configuration Type0 Registers This base configuration Type0 registers are the legacy PCI configuration registers from 0x0-0x3F. The user sets appropriate bits in these registers using the IPexpress GUI. The user is provided with the cmd_reg_out[3:0] to monitor certain bits in the base configuration space. 2.5.2. Power Management Capability Structure The Power Management Capability Structure is required for PCI Express. The base of this capability structure is located at 0x50. The user sets appropriate bits in these registers using the IPexpress GUI. The user is provided with the pme_status, pme_enable, and pm_power_state ports to monitor and control the Power Management of the endpoint. 2.5.3. MSI Capability Structure The Message Signaled Interrupt Capability Structure is optional and is included in the IP core. The base of this capability structure is located at 0x70. The number of MSIs is selected in the IPexpress GUI. The user is provided with the msi, mm_enable, and msi_enable ports to utilize MSI. 2.5.4. How to Enable/Disable MSI The user can enable or disable MSI by setting or resetting bit16 of PCI Express configuration registers (address 70h). This bit value is also shown on “msi_enable” on IP core ports. This status of MSI is also reflected at bit 16 of the first Dword (Dword 0) of MSI Capability Register Set (which is bit 0 of Message Control Register), and this value is also shown on “msi_enable” port. 2.5.5. How to issue MSI Up to eight MSI interrupts can be issued. The user can use any bit. Assertion to any of bit 0 to 7 of MSI issues an interrupt of the corresponding MSI number. The IP issues the interrupt at the rising edge of MSI input signal. 2.5.6. PCI Express Capability Structure The PCI Express Capability Structure is required for PCI Express. The base of this capability structure is located at 0x90. The user sets appropriate bits in these registers using the IPexpress GUI. The user is provided with the dev_cntl_out and lnk_cntl_out ports to monitor certain registers in the design. 2.5.7. Device Serial Number Capability Structure The Device Serial Number Capability Structure is optional and is included in the IP core. The base of this capability is located at 0x100 which is in the extended register space. The user sets the 64-bit Device Serial Number in the IPexpress GUI. 2.5.8. Advanced Error Reporting Capability Structure The Advanced Error Reporting Capability Structure is optional and is included in the IP core. The base of this capability is located at 0x1A0 which is in the extended register space. The user is provided the cmpln_tout, cmpltr_abort_np/cmpltr_abort_p, unexp_cmpln, and err_tlp_header ports to provide error conditions to the AER. © 2013-2017 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. FPGA-IPUG-02009_1.8 31 PCI Express x1/x2/x4 Endpoint IP Core User Guide 2.5.9. Handling of Configuration Requests Table 2.3 provides the Configuration Space memory map. Table 2.3. Unsupported TLPs Which Can Be Received by the IP Port Name 0x0 - 0x3C Direction Type 0 Function Description 0-F 0x40 - 0x4F 0x50 - 0x57 Empty Power Management CS — 14 - 15 0x58 - 0x6F 0x70 - 0x7F Empty MSI CS — 1C - 1D 0x80 - 0x8F 0x90 - 0xC3 Empty PCI Express CS — 24 - 30 0xA4 - 0xFF 0x100 - 0x10B Empty Device Serial Number CS — Extended 0 - 2 0x10C - 0x17B 0x17C - 0x19F Reserved Empty — — 0x1A0 - 0x1C8 AER CS Extended 128 - 132 The PCI Express core might optionally terminate all configuration requests registers identified in the table. By default, configuration requests to registers that are marked as empty will not be terminated by the core and passed to the user through the receive TLP interface. If the user wishes to implement further capability structures not implemented by the core, or implement PCI-SIG ECNs this could be implemented in the user design. If the user does not want to handle any configuration requests there is an option in the IPexpress/Clarity Designer GUI to have the core terminate all configuration requests. When this is selected, the user will never see a configuration request on the receive TLP interface. 2.6. Wishbone Interface The optional wishbone interface provides the user with access into the configuration space and select status and control registers. This interface is useful for designs which require knowledge of the entire configuration space, not only those provided as port to the user. When a Wishbone access to the PCI express configuration register space occurs along with configuration access from PCI express link, the later takes the precedence and Wishbone cycle termination will be delayed. 2.6.1. Wishbone Byte/Bit Ordering The write byte order for Wishbone is: DAT_I = {upper byte of N+2, lower byte of N+2, upper byte of N, lower byte of N} The read byte order for Wishbone is different depending on the address range. 1. For an address range of 0x0000-0x0FFF accessing the PCI Express configuration space, the read byte ordering is: DAT_O = {lower byte of N, upper byte of N, lower byte of N+2, upper byte of N+2} 2. For an address range of 0x1000-101F accessing control and status registers inside the PCI Express IP core, the read byte ordering is: DAT_O = {upper byte of N+2, lower byte of N+2, upper byte of N, ,lower byte of N} The bit ordering within a byte is always 7:0. © 2013-2017 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. 32 FPGA-IPUG-02009-1.8 PCI Express x1/x2/x4 Endpoint IP Core User Guide The memory map for the Wishbone interface is provided in Table 2.4. Table 2.4. Wishbone Interface Memory Map Type Status Address (hex) 1008-100B Bits* 31:24 R 23:20 19:16 COW Defaults 0 PHY LSM Status. For X1 Core [23:21] are Reserved. PHY Connection Status / Result of Receiver Detection. For X1 Core [19:17] are Reserved. PHY Receive/Rx Electrical Idle. For x1 Core [15:13] are Reserved. LTSSM State: 0 – DETECT,1 – POLLING, 2 – CONFIG, 3 - L0, 4 - L0s, 5 - L1, 6 - L2, 7 – RECOVERY, 8 – LOOPBACK, 9 – HOTRST, 10 - DISABLED* DLL/Link Control SM Status [6] - DL Inactive State [5] - DL Init State [4] - DL Active State [3] - DL Up State 15:12 11:7 R 6:3 100C-100F 2:0 31:22 RW 0 21:18 1010-101 1014-1017 Reserved Reserved LTSSM goto Loopback For x1 Core [21:19] are Reserved 17 16 TLP Debug Mode: TLP bypasses DLL & TRNC check. PHY/LTSSM Send Beacon 15 14 Force LSM Status active Force Received Electrical Idle 13 12 Force PHY Connection Status Force Disable Scrambler (to PCS) 11 10 Disable scrambling bit in TS1/TS2 LTSSM go to Disable 9 8 LTSSM go to Detect LTSSM go to HotReset 7 6 LTSSM go to L0s LTSSM go to L1 5 4 LTSSM go to L2 LTSSM go to L0s and Tx FTS 3 2 Reserved LTSSM go to Recovery 1 0 LTSSM go to Config LTSSM no training 31:30 29:16 R/W GUI Reserved ACK/NAK Latency Timer 15 14:10 Reserved Number of FTS 9:0 31:18 SKP Insert Counter Reserved R/W Set in IP 17:11 10:0 1018-101B Description Reserved 31:18 17:11 10:0 Update Frequency for Posted Header Update Frequency for Posted Data R/W Set in IP Reserved Update Frequency for Non-Posted Header Update Frequency for Non-Posted Data © 2013-2017 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. FPGA-IPUG-02009_1.8 33 PCI Express x1/x2/x4 Endpoint IP Core User Guide Table 2.4. Wishbone Interface Memory Map (continued) Type Address (hex) Bits* 101C-101F 31:18 17:11 1020-1023 10:0 31:12 1023-1027 11:0 31:8 Defaults R/W R/W Set in IP Set in IP R/W 0 7:0 *Note: R - Read Only; R/W - Read and Write; COW - Clear On Write Description Reserved Update Frequency for Completion Header Update Frequency for Completion Data Reserved FC Update Timer Reserved Link Number 2.7. Error Handling The IP Core handles DLL errors. User logic does not need to control any of DLL errors. When the IP receives NAK, the IP does not report outside of IP and retransmit TLP in retry buffer. Table 2.5 lists physical layer error messages, error type, and how the IP responds to the error. Table 2.5 corresponds to Table 6-2 of the PCI Express Base Specification Version 1.1. The IP automatically responds to all Physical Layer errors. No user logic interaction is required. Table 2.5. Physical Layer Error List Error Name Error Type IP Action IP Handling from User Logic Receiver Error Correctable Send ERR_COR to root complex. Nothing is required. References Section 4.2.1.3 Section 4.2.2.1 Section 4.2.4.4 Section 4.2.6 Table 2.6 lists data link layer error messages, error type, and how the IP responds to the errors. Table 2-6 corresponds to Table 6-3 of the PCI Express Base Specification Version 1.1. The IP automatically responds to all Data Link Layer errors. No user logic interaction is required. Table 2.6. Data Link Layer Error List Error Name Error Type IP Action IP Handling from User Logic References Bad TLP Bad DLLP Replay Timeout Correctable Correctable Send ERR_COR to root complex. Send ERR_COR to root complex. Nothing is required. Nothing is required. Section 3.5.2.1 Section 3.5.2.1 Correctable Send ERR_COR to root complex. Nothing is required. Section 3.5.2.1 REPLAY NUM  Rollover Data Link Layer Protocol Error Correctable Send ERR_COR to root complex. Nothing is required. Section 3.5.2.1 Uncorrectable (fatal) Nothing is required. Section 3.5.2.1 Surprise Down Uncorrectable (fatal) - If the severity level is fatal, send ERR_FATAL to root complex. - If the severity level is non-fatal, send ERR_NONFATAL to root complex. Not required to implement for endpoint, per section 7.8.6, page 380 Nothing is required. Section 3.5.2.1 Table 2.7 lists transaction layer error messages, error type, how the IP responds to the errors, and any IP handling that requires user logic interaction. The table corresponds to Table 6-4 of the PCI Express Base Specification Version 1.1. © 2013-2017 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. 34 FPGA-IPUG-02009-1.8 PCI Express x1/x2/x4 Endpoint IP Core User Guide Table 2.7. Transaction Layer Error List Error Name Error Type Poisoned TLP Received Uncorrectable (non-fatal) IP Action Automatically: - If the severity level is non-fatal, send ERR_COR for the advisory non-fatal error to root croot complex. - If the severity level is fatal, send ERR_FATAL to root complex. IP Handling from User Logic This is a special case where the TLP is passed to the user, but the core handles the error message automatically. The data is passed to the user logic for handling, per section 2.7.2.2. References Section 2.7.2.2 - Log the header of the poisoned TLP. ECRC Check Failed Uncorrectable (non-fatal) - Release credit. Automatically (if ECRC checking is supported): - If the severity level is non-fatal, send the non-fatal error to root complex. - If the severity level is fatal, send ERR_FATAL to root complex. - Packet is passed to the user for discard. Section 2.7.1 - No completion for non-posted is returned because anything can be wrong in the packet. - Release credit. - Log the header of the TLP that encountered the ECRC error. - Assert rx_ecrc_err_vc0 to userlogic side. Unsupported Request (UR) Uncorrectable (non-fatal) Configuration  Type 1 Automatically: - If the severity level is non-fatal, send ERR_COR for the advisory non-fatal error to root complex. - If the severity level is fatal, send ERR_FATAL to root complex. - Release credit. - Send UR completion. - Log the header of the TLP. Nothing is required. Section 2.2.8.6 Section 2.3.1 Section 2.3.2 Section 2.7.2.2 Section 2.9.1 Section 5.3.1 Section 6.2.3 Section 6.2.6 Section 6.2.8.1 Section 6.5.7 Section 7.3.1 Section 7.3.3 Section 7.5.1.1 Section 7.5.1.2 © 2013-2017 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. FPGA-IPUG-02009_1.8 35 PCI Express x1/x2/x4 Endpoint IP Core User Guide Table 2.7. Transaction Layer Error List (continued) Error Name Error Type IP Action Unsupported Request (UR) Uncorrectable (non-fatal) MrdLK IP Handling from User Logic Automatically: - Release credit. - If the severity level is non-fatal, send ERR_COR for the advisory non-fatal error to root complex. - Send UR completion. - If the severity level is fatal, send ERR_FATAL to root complex. - Assert rx_ur_req_vc0 to userlogic side. - Log the header of the TLP. Unsupported Request (UR) Uncorrectable (non-fatal) Vector Defined  Message Type 0 Based on assertion of ur_p_ext input: - Assert ur_p_ext input. - If the severity level is non-fatal, send ERR_NONFATAL because this is an unsupported posted request which is not advisory non-fatal. - Assert err_tlp_header[127:0] inputs. - If the severity level is fatal, send ERR_FATAL to root complex. - Send completion with UR status for vendor define Type0 if not sup- ported. - Release credit. Based on assertion of err_tlp_header[127:0] input: Unsupported Request (UR) Locked  Completion Uncorrectable (non-fatal) - Log the header of the TLP. Based on assertion of ur_np_ext/ur_p_ext input: - If the severity level is non-fatal and the request type is nonposted, send ERR_COR for the advisory non-fatal error to root complex. - If the severity level is fatal, send ERR_FATAL to root complex. Based on assertion of err_tlp_header[127:0] input: Assert cmpln_tout input. References Section 2.2.8.6 Section 2.3.1 Section 2.3.2 Section 2.7.2.2 Section 2.9.1 Section 5.3.1 Section 6.2.3 Section 6.2.6 Section 6.2.8.1 Section 6.5.7 Section 7.3.1 Section 7.3.3 Section 7.5.1.1 Section 7.5.1.2 Section 2.2.8.6 Section 2.3.1 Section 2.3.2 Section 2.7.2.2 Section 2.9.1 Section 5.3.1 Section 6.2.3 Section 6.2.6 Section 6.2.8.1 Section 6.5.7 Section 7.3.1 Section 7.3.3 Section 7.5.1.1 Section 7.5.1.2 Section 2.2.8.6 Section 2.3.1 Section 2.3.2 Section 2.7.2.2 Section 2.9.1 Section 5.3.1 Section 6.2.3 Section 6.2.6 Section 6.2.8.1 Section 6.5.7 Section 7.3.1 Section 7.3.3 Section 7.5.1.1 Section 7.5.1.2 - Log the header of the TLP. © 2013-2017 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. 36 FPGA-IPUG-02009-1.8 PCI Express x1/x2/x4 Endpoint IP Core User Guide Table 2.7. Transaction Layer Error List (continued) Error Name Error Type Unsupported Request (UR) Uncorrectable (non-fatal) IP Action Based on assertion of ur_np_ext/ur_p_ext input: - If the severity level is non-fatal and request type is non-posted, send ERR_COR for the advisory non-fatal error to root complex. Send ERR_NONFATAL for posted request which is not advisory non-fatal. Request type not supported - If the severity level is fatal, send ERR_FATAL to root complex. IP Handling from User Logic - Assert ur_np_ext/ur_p_ext input. - Assert err_tlp_header[127:0] inputs. - Release credit. - Send UR completion if request is nonposted. References Section 2.2.8.6 Section 2.3.1 Section 2.3.2 Section 2.7.2.2 Section 2.9.1 Section 5.3.1 Section 6.2.3 Section 6.2.6 Section 6.2.8.1 Section 6.5.7 Section 7.3.1 Section 7.3.3 Section 7.5.1.1 Section 7.5.1.2 Based on assertion of err_tlp_header[127:0] input: Unsupported Request (UR) Uncorrectable (non-fatal) Request not referencing address space mapped within the device - Log the header of the TLP. Based on assertion of ur_np_ext/ur_p_ext input: - If the severity level is non-fatal and request type is non-posted, send ERR_COR for the advisory non-fatal error to root complex. Send ERR_NONFATAL for posted request which is not advisory non-fatal. - If the severity level is fatal, send ERR_FATAL to root complex. - Assert ur_np_ext/ur_p_ext input. - Assert err_tlp_header[127:0] input. - Release credit. - Send UR completion if request is nonposted. Section 2.2.8.6 Section 2.3.1 Section 2.3.2 Section 2.7.2.2 Section 2.9.1 Section 5.3.1 Section 6.2.3 Section 6.2.6 Section 6.2.8.1 Section 6.5.7 Section 7.3.1 Section 7.3.3 Section 7.5.1.1 Section 7.5.1.2 Based on assertion of err_tlp_header[127:0] input: - Log the header of the TLP. © 2013-2017 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. FPGA-IPUG-02009_1.8 37 PCI Express x1/x2/x4 Endpoint IP Core User Guide Table 2.7. Transaction Layer Error List (continued) Error Name Error Type IP Action Unsupported Request (UR) Uncorrectable (non-fatal) Based on assertion of ur_p_ext input: - If the severity level is non-fatal, send ERR_NONFATAL (Unsupported Posted request is not advisory non-fatal). Message code with unsupported or undefined message code IP Handling from User Logic - Assert ur_p_ext input. - Assert err_tlp_header[127:0] inputs. - Release credit. - If the severity level is fatal, send ERR_FATAL to root complex. Based on assertion of err_tlp_header[127:0] input: Completion  Timeout Uncorrectable (non-fatal) - Log the header of the TLP. Based on assertion of cmpln_tout input: References Section 2.2.8.6 Section 2.3.1 Section 2.3.2 Section 2.7.2.2 Section 2.9.1 Section 5.3.1 Section 6.2.3 Section 6.2.6 Section 6.2.8.1 Section 6.5.7 Section 7.3.1 Section 7.3.3 Section 7.5.1.1 Section 7.5.1.2 Assert cmpln_tout input. Section 2.8 - If the severity level is fatal, send ERR_FATAL to root complex. Based on assertion of cmpltr_abort_p/cmpltr_abort_ np input: - Assert cmpltr_abort_p/cmpltr _ abort_np input. Section 2.3.1 - If the severity level is non-fatal, send ERR_COR for the advisory non-fatal error to root complex. - Assert err_tlp_header[127:0] input. - If the severity level is non-fatal, send ERR_COR for the advisory non-fatal error to root complex. Completer Abort Uncorrectable (non-fatal) - If the severity level is fatal, send ERR_FATAL to root complex. Based on assertion of err_tlp_header[127:0] input: - Log the header of the TLP. © 2013-2017 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. 38 FPGA-IPUG-02009-1.8 PCI Express x1/x2/x4 Endpoint IP Core User Guide Table 2.7. Transaction Layer Error List (continued) Error Name Error Type Unexpected  Completion Uncorrectable (non-fatal) Based on assertion of unexp_cmpln: IP Handling from User Logic - Assert unexp_cmpln input. - If the severity level is non-fatal, send ERR_COR for the advisory non-fatal error to root complex. - Assert err_tlp_header[127:0] input. IP Action References Section 2.3.2 - If the severity level is fatal, send ERR_FATAL to root complex. Based on assertion of err_tlp_header[127:0] input: - Log the header of the TLP. Receiver Overflow Uncorrectable (fatal) Automatically: Nothing is required. Section 2.6.1.2 Nothing is required. Section 2.6.1 Nothing is required. Section 2.2.8.6 Section 2.3.1 Section 2.3.2 Section 2.7.2.2 Section 2.9.1 Section 5.3.1 Section 6.2.3 Section 6.2.6 Section 6.2.8.1 Section 6.5.7 Section 7.3.1 Section 7.3.3 Section 7.5.1.1 Section 7.5.1.2 - If the severity level is fatal, send ERR_FATAL to root complex. - If the severity level is nonfatal,send ERR_NONFATAL to root complex. Flow Control  Protocol Error Uncorrectable (fatal) Automatically: - If the severity level is fatal, send ERR_FATAL to root complex. - If the severity level is non-fatal, send ERR_NONFATAL to root complex. Malformed TLP Uncorrectable (fatal) Automatically: - If the severity level is fatal, send ERR_FATAL to root complex. - If the severity level is non-fatal, send ERR_NONFATAL to root complex. - Assert rx_malf_tlp_vc0. - Log the header of the TLP. © 2013-2017 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. FPGA-IPUG-02009_1.8 39 PCI Express x1/x2/x4 Endpoint IP Core User Guide 3. Parameter Settings The Clarity Designer tool is used to create IP and architectural modules in the Diamond software. Refer to the Error! Reference source not found. section for a description on how to generate the IP. Table 3.1 provides the list of user configurable parameters for the PCI Express IP core. The parameter settings are specified using the PCI Express IP core Configuration GUI in Clarity Designer. The numerous PCI Express parameter options are partitioned across multiple GUI tabs as shown in this chapter. Table 3.1. IP Core Parameters Parameters 2.5G IP Core Range/Options 5G IP Core Range/Options Default Native x4, x4 Downgraded 1x or x2, Native x1 PCI Express Endpoint, Legacy Endpoint Native x1, x2 Downgraded x1 Native x1 for 2.5G IP core x2 Downgraded x1 for 5G IP core PCI Express Endpoint PCI Express Endpoint General PCI Express Link Configuration Endpoint Type Include Master Loop back data path Yes/No Yes/No No Include Wishbone interface Configuration Registers not required Yes/No Yes/No Yes/No Yes/No No No x1, x2, x4 x1, x2 X1 8-16 16 8 for 2.5G IP Core 16 for 5G IP core DCU0, DCU1 DCU0 (ECP5-5G only) DCU0 Ch0, Ch1 Not Supported Ch0 1-127 1-127 8 1-2047 1-2047 255 1-127 1-127 8 1-2047 1-2047 255 3650-4095 3650-4095 4095 Initial Receive Credits Infinite PH Credits Yes/No Yes/No No Initial PH credits available Infinite PD Credits 1-127 Yes/No 1-127 Yes/No 0 No Initial PD credits available Initial NPH credits available 8-255 1-32 8-255 1-32 0 0 Initial NPD credits available Configuration Space 8-2047 8-2047 0 0000-ffff 0000-ffff 0000 PCS Pipe Options Config Configuration Data Width DCU (for ECP5 and ECP-5G) Channel (for LatticeECP3) Flow Control Update Flow Control Generation Control Number of PH credits between UpdateFC P Number of PD credits between UpdateFC P Number of NPH credits between UpdateFC NP Number of NPD credits between UpdateFC NP Worst case number of 125 MHz clock cycles between UpdateFC Type0 Config Space Device ID © 2013-2017 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. 40 FPGA-IPUG-02009-1.8 PCI Express x1/x2/x4 Endpoint IP Core User Guide Table 3.1. IP Core Parameters (continued) Parameters 2.5G IP Core Range/Options 5G IP Core Range/Options Default 0000-ffff 000000-ffffff 0000-ffff 000000-ffffff 0000 000000 00-ff 00-ff 00-ff 00-ff 00 00 Header Type Bar0 00-ff 00000000-ffffffff 00-ff 00000000-ffffffff 00 00000000 Bar0 Enable Bar1 Yes/No 00000000-ffffffff Yes/No 00000000-ffffffff No 00000000 Bar1Enable Bar2 Yes/No 00000000-ffffffff Yes/No 00000000-ffffffff No 00000000 Bar2 Enable Bar3 Yes/No 00000000-ffffffff Yes/No 00000000-ffffffff No 00000000 Bar3 Enable Bar4 Yes/No 00000000-ffffffff Yes/No 00000000-ffffffff No 00000000 Bar4 Enable Bar5 Yes/No 00000000-ffffffff Yes/No 00000000-ffffffff No 00000000 Bar5 Enable CardBus CIS Pointer Yes/No 00000000-ffffffff Yes/No 00000000-ffffffff No 00000000 0000-ffff 0000-ffff 0000-ffff 0000-ffff 0000 0000 00000000-ffffffff Yes/No 00000000-ffffffff Yes/No 00000000 No Yes/No Yes/No No 0000-ffff 0000-ffff 0003 Date Scale Multiplier Power Consumed in D0 (Watts) 0-3 00-ff 0-3 00-ff 0 00 Power Consumed in D0 (Watts) Power Consumed in D1 (Watts) 00-ff 00-ff 00-ff 00-ff 00 00 Power Consumed in D2 (Watts) Power Consumed in D3 (Watts) 00-ff 00-ff 00-ff 00-ff 00 00 Power Dissipated in D0 (Watts) Power Dissipated in D1 (Watts) 00-ff 00-ff 00-ff 00-ff 00 00 Power Dissipated in D2 (Watts) Power Dissipated in D3 (Watts) 00-ff 00-ff 00-ff 00-ff 00 00 Power Dissipated in D4 (Watts) MSI Capability Structure 00-ff 00-ff 00 Yes/No 1-8 Yes/No 1-8 Yes 1 00-ff 00-ff 00 1 or 2 128, 256, 512, 1024, 2048, 4096 1 or 2 128, 256, 512, 1024, 2048, 4096 1 128 0000000-fffffff 0000000-fffffff 0000000 Vendor ID Class Code Rev ID BIST Subsystem ID Subsystem Vendor ID ExpROM Base Addr Expansion ROM Enable Load IDs from Ports Power Management Capability Structure Power Management Cap Reg [3116] Use Message Signaled Interrupts Number of Messages Requested PCI Capability Structure Next Capability Pointer PCIe Capability Version Max Payload Size Bytes Device Capabilities Register [28:3] © 2013-2017 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. FPGA-IPUG-02009_1.8 41 PCI Express x1/x2/x4 Endpoint IP Core User Guide Table 3.1. IP Core Parameters (continued) 2.5G IP Core Range/Options 5G IP Core Range/Options Default Yes/No 1, 2, 4 Yes/No 1, 2, 4 Yes 4 00-1f 00-1f 11 1 0000000000000000ffffffffffffffff 1 0000000000000000ffffffffffffffff 1 0000000000000000 Yes/No Yes/No No 1 1 Disabled Include ECRC support Terminate All Config TLPs Yes/No Yes/No No Terminate All Config TLPs User Extended Capability Structure Yes/No 000-fff Yes/No 000-fff Yes Disabled Parameters Enable Relaxed Ordering Maximum Link Width Device Capabilities 2 Register [4:0] Device Serial Number Device Serial Number Version Device Serial Number Advanced Error Reporting Use Advanced Error Reporting Advanced Error Reporting Version The default values shown in the following pages are those used for the PCI Express reference design. IP core options for each tab are discussed in further detail. 3.1. General Tab Figure 3-1 shows the contents of the General tab. Figure 3.1. PCI Express IP Core General Options © 2013-2017 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. 42 FPGA-IPUG-02009-1.8 PCI Express x1/x2/x4 Endpoint IP Core User Guide The General tab consists of the following parameters. Table 3.2. General Tab Parameters Parameter Endpoint Type Control Interface Include Master Loopback Data Path Description This option allows the user to choose between PCI Express Endpoint and Legacy Endpoint. Legacy Endpoint is permitted to support locked access. PCI Express Endpoint does not support locked access. PCI Express Endpoint must treat an MRdLk request as an unsupported request. Refer to the PCI Express Base Specification Version 1.1, sections 6.5.6 and 6.5.7, for more details. 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, refer to following I/O ports: tx_lbk_rdy, tx_lbk_kcntl, tx_lbk_data, rx_lbk_kcntl and rx_lbk_data. Include Wishbone Interface This option includes a Wishbone interface to access certain features of the PCI Express core (see Table 2.1). Endpoint Type This option allows the user to choose between PCI Express Endpoint and Legacy Endpoint. Legacy Endpoint is permitted to support locked access. PCI Express Endpoint does not support locked access. PCI Express Endpoint must treat an MRdLk request as an unsupported request. Refer to the PCI Express Base Specification Version 1.1, sections 6.5.6 and 6.5.7, for more details. Configuration Registers Not Required Configuration Registers Not This option excludes implementation of configuration registers space in the PCI Express Required core. 3.2. PCS Pipe Options Tab Figure 3.2 shows the contents of the PCS Pipe Options tab. This is not supported in PCI Express 5G IP core. Figure 3.2. PCI Express IP Core PCS Pipe Options The PCS Pipe Options tab consists of the following parameters. Table 3.3. PCS Pipe Options Tab Parameters Parameter Description Config Configuration      Data Width PCS data width DCUA Channel Select which DCU is used Select which DCU channel is used If Native x4, these options cannot be modified. If Native x2, DCUA (DCU0/DCU1) of SERDES can be selected. If Native x1, DCUA (DCU0/DCU1) and Channel (Ch0/Ch1) of a SERDES can be selected. If Downgraded x1, DCUA (DCU0/DCU1) of SERDES can be selected. If Downgraded x2, DCUA (DCU0/DCU1) of SERDES can be selected. © 2013-2017 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. FPGA-IPUG-02009_1.8 43 PCI Express x1/x2/x4 Endpoint IP Core User Guide 3.3. Flow Control Tab Figure 3.3 shows the contents of the Flow Control tab. Figure 3.3. PCI Express IP Core Flow Control Options The Flow Control tab consists of the following parameters. Table 3.4. Flow Control Tab Parameters Parameter Description 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. 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 endpoint. 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 This control sets the number of Posted Header TLPs that have been processed before UpdateFC sending an UpdateFC-P. Number of PD TLPs Between This control sets the number of Posted Data TLPs (credits) that have been processed before UpdateFC sending an UpdateFC-P. Number of NP TLPs Between This control sets the number of Non-Posted Header TLPs that have been processed before UpdateFC sending an UpdateFC- NP. Number of NPD TLPs Between This control sets the number of Non-Posted Data TLPs (credits) that have been processed UpdateFC before sending an UpdateFC-NP. Worst Case Number of 125 MHz This is the timer control that is used to send UpdateFC DLLPs. The core will send UpdateFC Clock Cycles Between UpdateFC DLLPs for all three types when this timer expires regardless of the number of credits released. 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. This option is used if the endpoint will have an infinite buffer for PH credits. This is typically Infinite PH Credits used if the endpoint will terminate any PH TLP immediately. © 2013-2017 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. 44 FPGA-IPUG-02009-1.8 PCI Express x1/x2/x4 Endpoint IP Core User Guide Table 3.4. Flow Control Tab Parameters (continued) Parameter Initial PH Credits Available Infinite PD Credits Initial PD Credits Available Initial NPH Credits Available Initial NPD Credits Available Description If PH infinite credits are not used then this control allows the user to set an initial credit value. This will be based on the receive buffering that exists in the user's design connected to the receive interface. This option is used if the endpoint will have an infinite buffer for PD credits. This is typically used if the endpoint will terminate any PD TLP immediately. If PD infinite credits are not used then this control allows the user to set an initial credit value. This will be based on the receive buffering that exists in the user's design connected to the receive interface. This option allows the user to set an initial credit value. This will be based on the receive buffering that exists in the user's design connected to the receive interface. This option allows the user to set an initial credit value. This will be based on the receive buffering that exists in the user's design connected to the receive interface. 3.4. Configuration Space - 1 Tab Figure 3.4 shows the contents of the Configuration Space - 1 tab. Figure 3.4. PCI Express IP Core Configuration Space - 1 Options © 2013-2017 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. FPGA-IPUG-02009_1.8 45 PCI Express x1/x2/x4 Endpoint IP Core User Guide The Configuration Space - 1 tab consists of the following parameters. Table 3.5. Configuration Space - 1 Tab Parameters Parameter Description Type 0 Config Space This section provides relevant PCI Express settings for the legacy Type0 space. This 16-bit read only register is assigned by the manufacturer to identify the type of Device ID function of the endpoint. This 16-bit read only register assigned by the SIG to identify the manufacturer of the Vendor ID endpoint. Class Code Rev ID This 24-bit read only register is used to allow the OS to identify the type of endpoint. This 8-bit read only register is assigned by the manufacturer and identifies the revision number of the endpoint. BIST This 8-bit read only register indicates if a Built-In Self-Test is implemented by the function. Header Type BAR Enable This 8-bit read only register identifies the Header Type used by the function. This option enables the use of the particular Base Address Register (BAR). This field allows the user to program the BAR to request a specific amount of address space from the system. If using 64-bit BARs then the BARs will be paired. BARs 0 and 1 will be paired with BAR0 for the LSBs and BAR1 for the MSBs. BARs 2 and 3 will be paired with BAR2 for the LSBs and BAR3 for the MSBs. BARs 4 and 5 will be paired with BAR4 for the LSBs and BAR5 for the MSBs. For more details on BAR register bits, refer to the Configuration Space section of the PCI Local Bus Specification Revision 3.0. BAR0-5 CardBus CIS Pointer Subsystem ID The following section provides an example for requesting address space by setting BAR registers. Bit [0] – 0 for memory space request. 1 for I/O space request. Bits [2:1] – 00 for 32-bit memory address space. 10 for 64-bit memory address space. Bit [3] – 1 for prefetchable memory. 0 for non-prefetchable memory. Bits [31:4] – Indicate the size of required address space by resetting least significant bits. Example 1: 32’hFFFF_F000 requests for memory space(bit[0]=0),32-bit address space(bit[2:1]=00), non-prefetchable memory(bit[3]=0) and 4KB address space (bits[31:4]=FFFF_F00) Example 2: 32’hFFF0_0000 requests for memory space(bit[0]=0),32-bit address space(bit[2:1]=00), non-prefetchable memory(bit[3]=0) and 1MB address space (bits[31:4]=FFF0_000). This is an optional register used in card bus system architecture and points to the Card Information Structure (CIS) on the card bus device. Refer to PCI Local Bus Specification Revision 3.0 for further details. This 16-bit read only register assigned by the manufacturer to identify the type of function of the endpoint. Subsystem Vendor ID This 16-bit read only register assigned by SIG to identify the manufacturer of the endpoint. Expansion ROM Enable ExpROM Base Addr This option enables the Expansion ROM to be used. The Expansion ROM base address if one is used in the solution. This option provides ports for the user to set the Device ID, Vendor ID, Class Code, Rev ID, Subsystem ID, and Subsystem Vendor ID from the top level of the core. This is useful for designs which use the same hardware with different software drivers. Load IDs from Ports © 2013-2017 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. 46 FPGA-IPUG-02009-1.8 PCI Express x1/x2/x4 Endpoint IP Core User Guide 3.5. Configuration Space - 2 Tab Figure 3.5 shows the contents of the Configuration Space - 2 tab. Figure 3.5. PCI Express IP Core Configuration Space - 2 Options The Configuration Space - 2 tab consists of the following parameters. Table 3.6. Configuration Space - 2 Tab Parameters Parameter Description PCI Express Capability Structure These controls allow the user to control the PCI Express Capability Structure. Next Capability Pointer PCI Express Capability Version Indicates the version of the PCI Express Capability Register. This number must be set to 2 for PCI Express version 2.0. © 2013-2017 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. FPGA-IPUG-02009_1.8 47 PCI Express x1/x2/x4 Endpoint IP Core User Guide Table 3.6. Configuration Space - 2 Tab Parameters (continued) Parameter Max Payload Size Description This option allows the endpoint to advertise the max payload size supported by the endpoint, and is used to size the Retry Buffer contained in the Data Link Layer. The user should select the largest size payload size that will be used in the application. The option 512B retry buffer size should also be selected for payload size of 128B and 256B. The retry buffer uses Embedded Block RAM (EBR) and will be sized accordingly. Table 3.7 provides a total EBR count for the core based on Max Payload Size. Device Capabilities Register (27:3) This 25-bit field sets the Device Capabilities Register bits 27:3. Relaxed ordering is the default setting for PCI Express. If the PCI Express link does not support relaxed ordering then this checkbox should be cleared. This feature does not change the behavior of the core, only the setting of this bit in the PCI Express capability structure. The user will be required to ensure strict ordering is enforced by the transmitter. Enable Relaxed Ordering Maximum Link Width This option sets the maximum link width advertised by the endpoint. This control should match the intended link width of the endpoint. Device Capabilities 2 Register (4:0) This 5-bit field sets the Device Capabilities Register bits 4:0. MSI Capability Structure Options These controls allow the user to include MSI and request a certain number of interrupts. Use Message Signaled Interrupts Number of Messages Requested This option includes MSI support in the IP core. This number specifies how many MSIs will be requested by the endpoint of the system. The system will respond with how many interrupts have been provided. The number of interrupts provided can be found on the mm_enable port of the IP core. Advanced Error Reporting These controls allow the user to include AER. This control will include AER in the IP core. AER is used to provide detailed information on Use Advanced Error Reporting the status of the PCI Express link and error TLPs. Advanced Error Reporting Version Indicates the version of the Advanced Error Reporting Capability. This number must always be set to 1 for v1.1. Device Serial Number Device Serial Number Version Device Serial Number Indicates the version of the Device Serial Number Capability. This number must always be set to 1 for v1.1. This 64-bit value is provided in the IP core through the Device Serial Number Capability Structure. Power Management Capability Structure This section includes options for the Power Management Capability Structure. This structure is used to pass power information from the endpoint to the system. If power management is not going to be used by the solution then all fields can remain in the default state. Power Management Cap Reg This field sets the Power Management Capabilities (PMC) register bits 31:16. (31:16) Data Scale Multiplier Power Consumed in D0, D1, D2, D3 Power Dissipated in D0, D1, D2, D3 This control sets the Data Scale Multiplier used by system to multiplier the power numbers provided by the end- point. These controls allow the user to specify the power consumed by the endpoint in each power state D0, D1, D2, and D3. The user specifies Watts as an 8-bit hex number. These controls allow the user to specify the power dissipated by the endpoint in each power state D0, D1, D2, and D3. The user specifies Watts as an 8-bit hex number. © 2013-2017 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. 48 FPGA-IPUG-02009-1.8 PCI Express x1/x2/x4 Endpoint IP Core User Guide Table 3.6. Configuration Space - 2 Tab Parameters (Continued) Parameter Terminate All Configuration TLPs Description Terminate All Configuration TLPs If enabled, this control will allow the core to terminate all Configuration requests. The user will not need to handle any configuration requests in the user's design. This control defines the pointer to additional non-extended capability implemented in the user application design. The default is 0 to indicate there is no user implemented nonextended capability. If the pointer is set to a non-zero value, “Terminate All Config TLPs” must not be selected.This 16-bit read only register is assigned by the manufacturer to identify the type of function of the endpoint.This 16-bit read only register assigned by the SIG to identify the manufacturer of the endpoint. User Extended Capability Structure Table 3.7. Total EBR Count Based on Max Payload Size (2.5G IP Core) Max Payload Size LatticeECP3/ECP5 Native x1 LatticeECP3/ECP5 Native x4 LatticeECP3/ECP5 Downgraded x2/x1 512B 1KB 4 5 11 11 11 11 2KB 9 13 13 © 2013-2017 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. FPGA-IPUG-02009_1.8 49 PCI Express x1/x2/x4 Endpoint IP Core User Guide 4. IP Core Generation and Evaluation This chapter provides information on how to generate the PCI Express IP core using the Clarity Designer in Diamond software. Additional information on how to use the Clarity Designer tool to create designs using multiple IP Cores is given in Clarity Designer User Manual. 4.1. Licensing the IP Core An IP license is required to enable full, unrestricted use of the PCI Express IP core in a complete, top-level design for the ECP5 and ECP5-5G families. 4.1.1. Licensing Requirements for ECP5 and ECP5-5G An IP license that specifies the IP core (PCI Express), device family and configuration (x1 or x2 or x4) is required to enable full use of the PCI Express IP core in LatticeECP3, ECP5 and ECP5-5G devices. Instructions on how to obtain licenses for Lattice IP cores are given at: http://www.latticesemi.com/Products/DesignSoftwareAndIP.aspx Users may download and generate the PCI Express IP core for ECP5 and ECP5-5G and fully evaluate the core through functional simulation and implementation (synthesis, map, place and route) without an IP license. The PCI Express IP core for LatticeECP3, ECP5 and ECP5-5G 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 the Hardware Evaluation section for further details). However, a license is required to enable timing simulation, to open the design in the Diamond tool, and to generate bit streams that do not include the hard- ware evaluation timeout limitation. Note that there are no specific IP licensing requirements associated with a x4 core that functionally supports the ability to downgrade to a x1/x2 configuration. Such a core is licensed as a x4 configuration. 4.2. IPexpress Flow for LatticeECP3 Devices 4.2.1. Getting Started The PCI Express 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. To generate a specific IP core configuration specify:  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.  Module Output – Verilog or VHDL.  Device Family – Device family to which IP is to be targeted (e.g. LatticeECP3, ECP5 etc.). Only families that support the particular IP core are listed.  Part Name – Specific targeted part within the selected device family. © 2013-2017 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. 50 FPGA-IPUG-02009-1.8 PCI Express x1/x2/x4 Endpoint IP Core User Guide Figure 4.1. IPexpress Tool Dialog Box Note that if the IPexpress tool is called from within an existing project, Project Path, Module Output, 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, click the Customize button in the IPexpress tool dialog box to display the PCI Express 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 for more information on the PCI Express parameter settings. Additional information and known issues about the PCI Express IP core are provided in a ReadMe document that may be opened by clicking on the Help button in the Configuration GUI. Figure 4.2. IPexpress Configuration GUI © 2013-2017 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. FPGA-IPUG-02009_1.8 51 PCI Express x1/x2/x4 Endpoint IP Core User Guide 4.2.2. 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. Figure 4.3. LatticeECP3 PCI Express 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 files created are customized to the user’s module name specified in the IPexpress tool. Table 4.1. File List File Sim Synthesis .v Yes — Description This file provides the PCI Express core for simulation. This file provides a module which instantiates the PCI Express core and the PIPE interface. _core.v Yes — This file provides the PCI Express core for simulation. _core_bb.v _phy_bb.v — — Yes Yes _beh.v Yes — This file provides the synthesis black box for the PCI express core. This file provides the synthesis black box for the PCI express PIPE interface wrapper of SERDES/PCS. This file provides the front-end simulation library for the PCI Express core. This file is located in the pcie_eval//src/top directory. pci_exp_params.v pci_exp_ddefines.v Yes Yes — — _core/phy.ngo — Yes This file provides the user options of the IP for the simulation model. This file provides parameters necessary for the simulation. This file provides the synthesized IP core used by the Diamond software. This file needs to be pointed to by the Build step by using the search path property. © 2013-2017 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. 52 FPGA-IPUG-02009-1.8 PCI Express x1/x2/x4 Endpoint IP Core User Guide Table 4.1. File List (continued) File Sim Synthesis .lpc — — username>.ipx — — pmi_*.ngo — — Description This file contains the configuration options used to recreate or modify the core in the IPexpress tool. 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 regenerated. These files contains the memories used by the IP core. These files need to be pointed to by the Build step by using the search path property. Most of the files required to use the PCI Express 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 IP core evaluation. The \pcie_eval directory contains files/folders with content that is constant for all configurations of the PCI Express IP core. The \ subfolder (\pcie_test in this example) contains files/folders with content specific to the configuration. The PCI Express ReadMe document is also provided in the \pcie_eval directory. For example information and known issues on this core, see the Lattice PCI Express ReadMe document. This file is available when the core is installed in the Diamond software. The document provides information on creating an evaluation version of the core for use in Diamond 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 software including front-end and timing simulations. The models directory provides the library element for the PCS and PIPE interface for LatticeECP3. The \ directory contains the sample design for the configuration specified by the customer. The \\impl directory provides project files supporting Synplify synthesis flows. The sample design pulls the user ports out to external pins. This design and associated project files can be used to determine the size of the core and to push it through the mechanics of the Diamond software design flow. The \\sim directory provides project files supporting RTL simulation for both the Active- HDL and ModelSim simulators. The \\src directory provides the top-level source code for the evaluation design. The \testbench directory provides a top-level testbench and test case files. 4.2.3. Instantiating the Core The generated PCI Express IP core package includes .v that can be used to instantiate the core in a toplevel design. An example RTL top-level reference source file that can be used as an instantiation template for the IP core is provided in \\pcie_eval\\src\top. Users may also use this top- level reference as the starting template for the top-level for their complete design. 4.2.4. Running Functional Simulation Simulation support for the PCI Express IP core is provided for Aldec and ModelSim simulators. The PCI Express core simulation model is generated from the IPexpress tool with the name .v. This file calls _core.v which contains the obfuscated simulation model( 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. You 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. 4.2.5. Synthesizing and Implementing the Core in a Top-Level Design The PCI Express 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 as described in the Instantiating the Core section and then synthesizing the entire design with Synplify RTL Synthesis. The top-level file _eval_top.v provided in \\pcie_eval\\src\top supports the ability to implement the PCI Express core in isolation. Push-button implementation of this top-level design with either Synplify RTL Synthesis is supported via the project files _eval.ldf located in the directory \\pcie_eval\\impl\synplify. To use this project file in Diamond: 1. Choose File > Open > Project. 2. Browse to \\pcie_eval\\impl\synplify in the Open Project dialog box. 3. 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. 4. Select the Process tab in the left-hand GUI window. 5. 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 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. 4.2.6. Hardware Evaluation The PCI Express 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. © 2013-2017 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. 54 FPGA-IPUG-02009-1.8 PCI Express x1/x2/x4 Endpoint IP Core User Guide 4.2.7. 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. 4.2.8. 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. 4.2.9. 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 to regenerate. 3. IPexpress shows the current settings for the module or IP in the Source box. Make your new settings in the Tar- get box. 4. 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 dialog box of the module 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 standalone mode). 8. Click Generate. 9. Click 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 4.3. Clarity Designer Flow for ECP5 and ECP5-5G Devices 4.3.1. Getting Started The PCI Express IP core is available for download from the Lattice IP Server using the Diamond Clarity Designer tool for ECP5 and ECP5-5G devices. The IP files are automatically installed using InstallShield® technology in any customerspecified directory. After the IP core has been installed, the IP core is listed in the Available Modules tab of the Clarity Designer GUI as shown in Figure 4.4. © 2013-2017 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. FPGA-IPUG-02009_1.8 55 PCI Express x1/x2/x4 Endpoint IP Core User Guide Figure 4.4. Clarity Designer GUI (pci express endpoint core) In the Catalog tab, double clicking the PCI Express endpoint entry opens the PCI Express GUI dialog box shown in Figure 4.5. Figure 4.5. PCI Express IP GUI Dialog Box Note: Macro Type, Version and Macro Name are fixed for the specific IP core selected. Instance Path, Device Family and Part Name default to the specified parameters. SynplifyPro is the only synthesis tool presently supported for IP generation. To generate a specific IP core configuration the user specifies:  Instance Path – Path to the directory where the generated IP files will be located.  Instance Name – “username” designation given to the generated IP core and corresponding folders and file.  Macro Type – IPCFG (configurable IP) for PCI Express Endpoint  Version – IP version number  Macro Name – Name of IP Core  Module Output – Verilog or VHDL.  Device Family – Device family to which IP is to be targeted © 2013-2017 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. 56 FPGA-IPUG-02009-1.8 PCI Express x1/x2/x4 Endpoint IP Core User Guide   Part Name – Specific targeted part within the selected device family. Synthesis – tool to be used to synthesize IP core. To configure the PCI Express IP: 1. Click the Customize button in the Clarity Designer tool dialog box to display the PCI Express IP core configuration GUI, as shown in Figure 4.6. Select the IP parameter options specific to your application. Refer to 2. Parameter Settings for more information on the PCI Express Endpoint IP core parameter settings. Additional information and known issues about the PCI Express IP core are provided in a ReadMe document that may be opened by clicking on the Help button in the Configuration GUI. Figure 4.6. PCI Express Endpoint IP Core Configuration GUI 4.3.2. Configuring and Placing the IP Core To configure and place the IP core: 1. After specifying the appropriate settings, click the Configure button and then Close button at the bottom of the IP core configuration GUI. At this point the data files specifying the configuration of this IP core instance are created in the user’s project directory. An entry for this IP core instance is also included in the Planner tab of the Clarity Designer GUI, as shown in Figure 4.7. © 2013-2017 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. FPGA-IPUG-02009_1.8 57 PCI Express x1/x2/x4 Endpoint IP Core User Guide Figure 4.7. PCI Express Endpoint IP Core Clarity Designer GUI 2. The IP core instance may now be placed in the desired location in the ECP5 DCU. Drag the instance of associated IP SERDES lanes entry from the Planner tab to the Clarity Designer Placement tab. Once placed, the specific IP core placement is shown in the Configured Modules tab and highlighted in the Placement tab as shown in Figure 4.8. Figure 4.8. Clarity Designer Placed Module Note that the PCI Express endpoint core may be configured to support 1, 2 or 4 SERDES channels. In x4 mode PCIe lanes 0, 1, 2 and 3 are mapped to both the DCUs, lanes 0,1 to DC0 and lanes 2,3 to DCU1. In x2 mode PCIe lanes 0, 1 can be mapped to either of DCUs. Similarly in X1 mode PCIe lanes 0 can be mapped to any channels of any DCU. Note also that PCI express endpoint IP needs an EXTREF module to be connected for reference clocks which can be shared across multiple IPs. So it has to be generated outside the PCI express endpoint IP in the Clarity Designer tool and connected. Similar flow as the generation of PCI express endpoint core can be followed to generate extref module from the catalog tab as shown in the following Figure 4.9. © 2013-2017 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. 58 FPGA-IPUG-02009-1.8 PCI Express x1/x2/x4 Endpoint IP Core User Guide Figure 4.9. Clarity Designer GUI (extref) Both PCI express endpoint core and extref instances can be dragged and dropped from the Planner tab to the Clarity Designer Placement tab. Once placed, the specific IP core placement is shown in the Configured Modules tab and highlighted in the Placement tab as shown in Figure 4.10. Figure 4.10. Clarity Designer Placed Modules (pci express endpoint and extref) 3. After placing both PCI express endpoint core and extref instances, double-click the selected channel placement GUI. This opens a pop up DCU settings window as shown in Figure 4.11. © 2013-2017 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. FPGA-IPUG-02009_1.8 59 PCI Express x1/x2/x4 Endpoint IP Core User Guide Figure 4.11. Clarity Designer DCU Settings 4. Select DCU0_EXTREF (DCU1_EXTREF if DCU1) as source for TXPLL and channel. 5. Click OK. 4.3.3. Generating the IP Core After the IP core has been configured and placed, it may be generated by clicking on the Generate icon in the Clarity Designer GUI, as shown in Figure 4.12. When Generate is selected, all of the configured and placed IP cores shown in the Configured Modules tab and the associated supporting files are re-generated with corresponding placement information in the “Instance Path” directories. Figure 4.12. Generating the IP Core 4.3.4. Clarity Designer-Created Files and Directory Structure The directory structure of the files created when the PCI express endpoint core is created is shown in Figure 4.13. Table 4.2 provides a list of key files and directories created by the Clarity Designer tool and how they are used. The Clarity Designer tool creates several files that are used throughout the design cycle. The names of many of the created files are customized to the user-specified instance name. © 2013-2017 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. 60 FPGA-IPUG-02009-1.8 PCI Express x1/x2/x4 Endpoint IP Core User Guide Figure 4.13. Directory Structure Table 4.2. File List File Sim .v Yes _core_bb.v _beh.v Yes pci_exp_params.v Yes pci_exp_ddefines.v Yes _core.ngo .lpc pmi_*.ngo Synthesis Description This file provides the PCI Express core for simulation. This file pro- vides a module which instantiates the PCI Express core and the PIPE interface Yes This file provides the synthesis black box for the PCI express core. This file provides the front-end simulation library for the PCI Express core. This file is located in the pcie_eval//src/top directory. This file provides the user options of the IP for the simulation model. This file is located in the pcie_eval//src/params directory. This file provides parameters necessary for the simulation. This file is located in the pcie_eval//src/params directory. This file provides the synthesized IP core used by the Diamond software. This file needs to be pointed to by the Build step by using the search path property. This file contains the configuration options used to recreate or modify the core in the Clarity Designer tool. These files contains the memories used by the IP core. These files need to be pointed to by the Build step by using the search path property. Yes Most of the files required to use the PCI Express IP core in a user’s design reside in the root directory created by the Clarity Designer tool. This includes the synthesis black box, simulation model, and example preference file. The \pcie_eval and subtending directories provide files supporting PCI Express IP core evaluation. The \pcie_eval directory contains files/folders with content that is constant for all configurations of the PCI Express IP core. The \ subfolder (\pcie_core0 in this example) contains files/folders with content specific to the configuration. The \pcie_eval directory is created by the Clarity Designer tool the first time the core is generated and updated each time the core is regenerated. A \ directory is created by the Clarity Designer tool each time the core is generated and regenerated each time the core with the same file name is regenerated. The \pcie_eval directory © 2013-2017 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. FPGA-IPUG-02009_1.8 61 PCI Express x1/x2/x4 Endpoint IP Core User Guide 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 software including front-end simulations. The models directory provides the library element for the PCS and PIPE interface. The \ directory contains the sample design for the configuration specified by the customer. The \\impl directory provides project files supporting Synplify synthesis flows. The sample design pulls the user ports out to external pins. This design and associated project files can be used to determine the size of the core and to push it through the mechanics of the Diamond software design flow. The \\sim directory provides project files supporting RTL and timing simulation for both the Active- HDL and ModelSim simulators. The \\src directory provides the top-level source code for the evaluation design. The \testbench directory provides a top-level testbench and test case files. 4.3.5. Instantiating the Core The generated PCI express endpoint core package includes black-box (_core_bb.v, _phy.v) and instance (.v) templates that can be used to instantiate the core in a top-level design. An example RTL top-level reference source file that can be used as an instantiation template for the IP core is provided at \pcie_eval\\src\top\(_eval_top.v. Users may also use this top-level reference as the starting template for the top-level for their complete design. 4.3.6. Running Functional Simulation Simulation support for the PCI Express IP core is provided for Aldec and ModelSim simulators. The PCI Express core simulation model is generated from the Clarity Designer tool with the name \pcie_eval\\src\top\_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. The ModelSim environment is located in the following directory: \\\pcie_eval\\sim\modelsim. To run the ModelSim simulation: 1. Open ModelSim. 2. Choose File > Change Directory. 3. Set the directory to \\\pcie_eval\\sim\modelsim\rtl. 4. Click OK. 5. Choose Tools > TCL > Execute Macro. 6. Select the simulation do file under the modelsim\scripts directory. Note: When the simulation completes, a pop-up window appears with the prompt “Are you sure you want to finish?" Click No to analyze the results (clicking Yes closes ModelSim). The Aldec Active-HDL environment is located in the following directory: \\\pcie_eval\\sim\aldec. To run the Aldec evaluation simulation: 1. Open Aldec. 2. Choose Tools > Execute Macro. 3. Set the directory to \\\pcie_eval\\sim\aldec. rtl. 4. Select OK. 5. Select simulation do file. Note: When the simulation completes, a pop-up window appears stating "Simulation has finished. There are no more vectors to simulate." © 2013-2017 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. 62 FPGA-IPUG-02009-1.8 PCI Express x1/x2/x4 Endpoint IP Core User Guide 4.3.7. Synthesizing and Implementing the Core in a Top-Level Design The PCI Express endpoint IP core is synthesized and provided in NGO format when the core is generated through the Clarity Designer tool. You can combine the core in your own top-level design by instantiating the core in your top level file as described in section “Instantiating the Core” and then synthesizing the entire design with either Synplify. The top-level file _eval_top.v provided in \\pcie_eval\\src\top supports the ability to implement the PCI Express core in isolation. Push-button implementation of this top-level design with either Synplify is supported via the project files _eval.ldf located in the \\pcie_eval\\impl\synplify directory. To use the .ldf project file in Diamond: 1. Choose File > Open > Project. 2. Browse to \\\pcie_eval\\impl\synplify in the Open Project dialog box. 3. Select and open _eval.ldf. At this point, all of the files needed to support top-level synthesis and implementation are imported to the project. 4. Select the Process tab in the left-hand GUI window. 5. Implement the complete design via the standard Diamond GUI flow. At this point, all of the files needed to support top-level synthesis and implementation are imported to the project. 4.3.8. Hardware Evaluation The PCI Express IP core supports Lattice’s IP hardware evaluation capability, which makes it possible to create 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. To Enable 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. 4.3.9. Updating/Regenerating the IP Core It is possible to remove, reconfigure and change the placement of an existing IP core instance using Clarity Designer tool. When the user right clicks on a generated IP core entry in the Planner tab, the selection options shown in Figure 4.14 are displayed. These options support the following capabilities:  Reset – the present IP core placement is cleared and the IP core may be re-placed at any available site.  Delete – the IP core instance is completely deleted from the project.  Config – the IP core GUI is displayed and IP settings may be modified.  Expand – Expands the view to show Placement information for IP core resource.  Collapse – Collapses the view to with no placement information for IP resource. After re-configuring or changing the placement of an IP core, the user must click Generate to implement the changes in the project design files. © 2013-2017 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. FPGA-IPUG-02009_1.8 63 PCI Express x1/x2/x4 Endpoint IP Core User Guide Figure 4.14. Reset, Delete, Config, Expand and Collapse Placement of the IP Core © 2013-2017 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. 64 FPGA-IPUG-02009-1.8 PCI Express x1/x2/x4 Endpoint IP Core User Guide 5. Using the IP Core This chapter provides supporting information on how to use the PCI Express IP core in complete designs. Topics discussed include IP simulation and verification, FPGA design implementation and board-level implementation. 5.1. Simulation and Verification This section discusses strategies and alternative approaches for verifying the proper functionality of the PCI Express core through simulation. 5.1.1. Simulation Strategies Included with the core from the Clarity tool is the evaluation test bench located in the directory. The intent of the evaluation test bench 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 test bench. A loopback format has been used in this case as well. In a real system, however, PCI Express requires that an upstream port connect to a downstream port. In the simple-touse, Lattice-supplied evaluation test bench, 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 transmit and receive interface. This is the extent of the evaluation test bench. Figure 5.1 illustrates the evaluation testbench process. Evaluation Testbench Lattice Device Tx BFM PCI Express IP Core Rx BFM Force Internal Signals Figure 5.1. PCI Express x4 Core Evaluation Testbench Block Diagram 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 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. Refer to the Alternative Testbench Approach section for more information on setting up a testbench. Users simulating a multi-lane core at the serial level should give consideration to lane ordering. Lane ordering is dependent on the layout of the chip on a board. 5.1.2. Alternative Testbench Approach In order to create a testbench which meets the user's needs, the data must be sourced across the serial PCI Express lanes. The user must also have the ability to create the source traffic that will be pushed over the PCI Express link. This solution can be created by the user using the Lattice core. © 2013-2017 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. FPGA-IPUG-02009_1.8 65 PCI Express x1/x2/x4 Endpoint IP Core User Guide Figure 5.2 shows a block diagram that illustrates a new testbench orientation which can be created by the user. New Testb ench Lattice Device Tx BFM User Design PCI Express IP Core PCI Express IP Core Rx BFM Figure 5.2. PCI Express x4 Core Testbench Using Two Cores Use two PCI Express cores. The first PCI Express core is used in the design and the second PCI Express core is used as a driver. The user needs to use the no_pcie_train command to force the L0 state of the LTSSM in both cores. When IP Core does not use the Wishbone bus, the bench must force no_pcie_train port on the IP to “1” to set LTSSM to L0 status. When the Wishbone bus is implemented, there is no no_pcie_train port on the IP Core. Therefore, the bench must set the “LTSSM no training” register to force LTSSM to L0 status. Whether or not the Wishbone bus is implemented, the bench must force LTSSM to L0 after both LTSSM state machines of transmitter and receiver are moved to Configuration status (4’d2). As a result, the second core can then be used as a traffic separator. The second core is created to be the opposite of the design core. Thus an upstream port will talk with a downstream port and vice versa. The second core is used as a traffic generator. User-written BFMs can be created to source and sink PCI Express TLPs to exercise the design. An issue associated with this test bench solution is that the run time tends to be long since the test bench will now include two PCS/SERDES cores. There is a large number of functions contained in both of the IP blocks which will slow down the simulation. Another issue is that the Lattice PCI Express solution is being used to verify the Lattice PCI Express solution. This risk is mitigated by the fact that Lattice is PCI-SIG compliant (see the Integrator's list at www.pci-sig.com) and a third party verification IP was used during the development process. It should also be noted that this approach does not allow for PCI Express layer error insertion. 5.1.3. 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 core, as shown in Figure 5.3. There are other third party vendors for PCI Express including Denali® and Cadence®. © 2013-2017 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. 66 FPGA-IPUG-02009-1.8 PCI Express x1/x2/x4 Endpoint IP Core User Guide Third-Party Testbench Lattice Device User Design PCI Express IP Core Third-Party PCI Express BFM User Commands Figure 5.3. PCI Express x4 Core Testbench with Third-Party VIP If desired, an independent Bus Functional Model can be modified to emulate a user’s environment. This option is highly recommended. 5.2. FPGA Design Implementation for LatticeECP3 Devices This section provides information on implementing the PCI Express 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. 5.2.1. Setting Up the Core This section describes how to set up the PCI Express core for various link width combinations. The user must pro- vide 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. 5.2.2. Setting Up for Native 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. 5.2.3. Setting Up for Native x4 (Flipped) No changes required. Simply use the pcs_pcie_8b_x4.txt file generated from the IPexpress tool. 5.2.4. Setting Up for Downgraded x1 (No Flip) If the design will be using only a single channel and it is not flipped then Channels 1, 2, and 3 need to be powered down. Change the following lines from the pcs_pipe_x4.txt file. CH0_MODE "GROP1" CH1_MODE "GROUP1" CH2_MODE "GROUP1" CH3_MODE "GROUP1" to CH0_MODE "GROUP1" CH1_MODE "DISABLE" CH2_MODE "DISABLE" © 2013-2017 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. FPGA-IPUG-02009_1.8 67 PCI Express x1/x2/x4 Endpoint IP Core User Guide CH3_MODE "DISABLE" The flip_lanes port should be tied low. 5.2.5. Setting Up for Downgraded x1 (Flipped) If the design will be using only a single channel and it is flipped then Channel 3 becomes the master channel and Channels 0, 1, and 2 to be powered down using the autoconfig file. Change the following lines from the pcs_pcie_8b_x4.txt file. CH0_MODE"GROUP1" CH1_MODE"GROUP1" CH2_MODE"GROUP1" CH3_MODE"GROUP1" to CH0_MODE"DISABLE" CH1_MODE"DISABLE" CH2_MODE"DISABLE" CH3_MODE"GROUP1" The flip_lanes port should be tied high. 5.2.6. 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 or directly in the text based .lpf file. Refer to .lpf file at directory \\pcie_eval\\impl\synplify for design constraints required by the IP. 5.2.7. Clocking Scheme A PCI Express link is typically provided with a 100 MHz reference clock from which the 2.5 Gb/s data rate is achieved. The user interface for the PCI Express IP core is clocked using a 125 MHz clock (sys_clk_125). Figure 5.4 and Figure 5.5 provide the internal clocking structures of the IP core in the LatticeECP3 and ECP5 family LatticeECP3 PCI Express IP Core PCI Express Logic sys_clk_125 125 Mhz PIPE Logic pclk 250 Mhz rx_pclk[n:0] refclk 100 Mhz PLL X25 and Cl ock Deviders SERDES / PCS 2.5 Ghz Figure 5.4. LatticeECP3 PCI Express Clocking Scheme © 2013-2017 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. 68 FPGA-IPUG-02009-1.8 PCI Express x1/x2/x4 Endpoint IP Core User Guide The LatticeECP3 clocking solution uses the 100 MHz 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 Gb/s rate from which a transmit 250 MHz clock (pclk) and recovered clock(s) (ff_rx_fclk_[n:0]) are derived. The Lattice PCI Express core then performs a clock domain change to the sys_clk_125 125 MHz clock for the user interface. ECP5 PCI Express IP Core PCI Express Logic sys_clk_125 125 Mhz PIPE Logic pclk 250 Mhz PCSCLKDIV rx_pclk[n:0] tx_pclk DCU Refclk 100 Mhz EXTREF PLL X25 and Cl ock Deviders SERDES / PCS 2.5 Ghz Figure 5.5. ECP5 PCI Express Clocking Scheme The ECP5 clocking solution uses the 100 MHz differential refclk provided from the PCI Express link connected directly to the REFCLKP/N of the EXTREF component of the device. The 100 Ω differential termination is included in the device 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 Gb/s rate from which a transmit 250 MHz clock (pclk) and recovered clock(s) (ff_rx_fclk_[n:0]) are derived. The Lattice PCI Express core then performs a clock domain change to the 125 MHz clock(sys_clk_125) for the user interface. 5.2.8. Locating the IP The PCI Express 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. Figure 5.6 provides a block diagram with placement positions of the PCS/SERDES quads in the LatticeECP3 devices. © 2013-2017 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. FPGA-IPUG-02009_1.8 69 PCI Express x1/x2/x4 Endpoint IP Core User Guide LFE3-17/35 LFE3-70 PCSA PCSB PCSA PCSA_HDI Nx PCSA_HDOUTx PCSB_HDI Nx PCSB_HDOUTx PCSA_HDI Nx PCSA_HDOUTx LFE3-95 PCSB PCSA PCSB_HDI Nx PCSB_HDOUTx PCSC PCSA_HDI Nx PCSA_HDOUTx PCSC_HDI Nx PCSC_HDOUTx LFE3-150 PCSD PCSB PCSD_HDI Nx PCSD_HDOUTx PCSB_HDI Nx PCSB_HDOUTx PCSA PCSC PCSA_HDI Nx PCSA_HDOUTx PCSC_HDI Nx PCSC_HDOUTx Figure 5.6. LatticeECP3 Device Arrays with PCS/SERDES Figure 5.7 provides a block diagram with placement positions of the PCS/SERDES duals in the ECP5 devices. LFE5UM-25 DCU0 LFE5UM-45/ 85 DCU0 DCU1 Figure 5.7. ECP5 Device Arrays with PCS/SERDES 5.3. Board-Level Implementation Information This section provides circuit board-level requirements and constraints associated with using the PCI Express IP core. 5.3.1. 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 100 ms 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.8 is a best case timing diagram of the Lattice device with respect to PERST#. © 2013-2017 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. 70 FPGA-IPUG-02009-1.8 PCI Express x1/x2/x4 Endpoint IP Core User Guide Power PERST# Lattice Device State Power to INITn Lattice Link State Loading Bitstream Detectable Device Active Detect Link Active >= 100ms PCI Express Spec Figure 5.8. Best Case Timing Diagram, Lattice Device with Respect to PERST# 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.9 shows a worst case timing diagram of the 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 Figure 5.9. Worst Case Timing Diagram, Lattice Device with Respect to PERST# If the Lattice device does not finish loading the bit stream 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 shown 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.1 and Table 5.2 contain the relative numbers for the LatticeECP3 and ECP5 family. © 2013-2017 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. FPGA-IPUG-02009_1.8 71 PCI Express x1/x2/x4 Endpoint IP Core User Guide Table 5.1. LatticeECP3 Power Up Timing Specifications Specification Power to INITn Worst-case Programming Time (SPI at 33 MHz) Worst-case Programming Time (Parallel Flash with CPLD)* ECP3-17 ECP3-35 ECP3-70 ECP3-95 ECP3-150 Units 23 136 23 249 23 682 23 682 23 1082 ms ms 17 31 85 85 135 ms Note: 8-bit wide Flash and external CPLD interfacing to LatticeECP3 at 33 MHz SLAVE PARALLEL mode. Table 5.2. ECP5 Power Up Timing Specifications Specification ECP5-25 ECP5-45 P5UMECP5-85 Units Power to INITn Worst-case Programming Time (SPI at 33 MHz) 33 164 33 295 33 556 ms ms Worst-case Programming Time (Parallel Flash with CPLD)1 20 36 69 ms Note: 8-bit wide Flash and external CPLD interfacing to LatticeECP3 at 33 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 bit stream 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 bit stream programming. These should not be connected to PERST# as this will delay the bit stream programming of the Lattice device. 5.4. Board Layout Concerns for Add-in Cards The PCI Express Add-in card connector edge finger is physically designed for a particular orientation of lanes. The device package pinout also has a defined orientation of pins for the SERDES channels. The board lay- out will connect the PCI Express edge fingers to the SERDES channels. For multi-lane implementations there might be a layout concern in making this connection. On some packages lane 0 of the edge fingers will align with lane 0 of the SERDES and likewise for channels 1, 2 and 3. However, in other packages lane 0 of the edge fingers 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.10 provides an example of the board layout concern. Lattice FPGA PCS 3 2 1 0 Board Layout Concern Primary Side of Board 0 1 2 3 PCI Express x4 Edge Fingers Figure 5.10. Example of Board Layout Concern with x4 Link 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 core. This allows the board layout to connect edge finger lane 0 to © 2013-2017 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. 72 FPGA-IPUG-02009-1.8 PCI Express x1/x2/x4 Endpoint IP Core User Guide SERDES lane 3, edge finger lane 1 to SERDES lane 2, edge finger lane 2 to SERDES lane 1, and edge finger lane 3 to SERDES lane 0. The PCI Express core will then perform a reverse order connection so the PCI Express edge finger 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 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.11 provides a diagram of a normal and a reversed IP core implementation. Rest of IP Core LTSSM 0 12 3 PCS/SERDES on top right side of package PCS 0 12 3 Lattice FPGA Primary Side of Board 0 12 3 PCI Express x4 Edge Fingers Rest of IP Core Reverse order of lanes LTSSM 3 21 0 PCS/SERDES on top left side of package PCS 3 21 0 Lattice FPGA Primary Side of Board 0 12 3 PCI Express x4 Edge Fingers Figure 5.11. Implementation of x4 IP Core to Edge Fingers As shown in Figure 5.11, 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. Figure 5.12 provides a diagram of a x1 IP core to illustrate the recommended solution in the board layout. Provides a diagram of a x1 IP core to illustrate the recommended solution in the board layout. © 2013-2017 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. FPGA-IPUG-02009_1.8 73 PCI Express x1/x2/x4 Endpoint IP Core User Guide Rest of IP Core LTSSM 0 12 3 PCS/SERDES on top right side of package PCS 0 12 3 Lattice FPGA Primary Side of Board 0 PCI Exp ress x1 Edge Fingers Rest of IP Core LTSSM 3 2 10 PCS/SERDES on top left side of package PCS 3 21 0 Lattice FPGA Primary Side of Board 0 PCI Exp ress x1 Edge Fingers Figure 5.12. Implementation of x1 IP Core to Edge Fingers 5.5. Adapter Card Concerns A PCI Express adapter card allows a multi-lane PCI Express endpoint to be plugged into a PCI Express slot that supports less lanes. For example, a x16 endpoint add in card could use an adapter card to plug into a x1 slot. Adapter cards simply plug onto the edge fingers and only supply connections to those on the edge fingers of the adapter card. Figure 5.13 provides the stack up of an endpoint add in card with an adapter card. x8 PCI Express Endpoint Add In card Edge Fingers x16 to x1 Adapter Card Unterminated SERDES inputs and outputs x1 PCI Express Slot Figure 5.13. PCI Express Endpoint Add In Card © 2013-2017 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. 74 FPGA-IPUG-02009-1.8 PCI Express x1/x2/x4 Endpoint IP Core User Guide An adapter card simply connects edge fingers to edge fingers. Any of the lanes that are not used by the adapter card are sitting in the adapter card slot. They are unterminated. In Lattice devices, all SERDES channels that are powered up need to be terminated. When using an adapter card the unused channels must be powered down. This can be accomplished by simply editing the autoconfig file for the PCS and not powering up the unused channels. This will provide a bitstream that is suitable for adapter cards. 5.5.1. LatticeECP3 and ECP5 IP Simulation The ECP5 PCI Express simulation uses the PIPE module. This simulation model is found in the /pcie_eval/models//_phy.v file. The same directory contains few other files required for pcs_pipe_top module. Refer to pcie_eval//sim//script/eval_beh_rtl. 5.6. Simulation Behavior When setting the SIMULATE variable for the simulation model of the PCI Express core several of the LTSSM counters are reduced. Table 5.3 provides the new values for each of the LTSSM counters when the SIMULATE variable is defined. Table 5.3. LTSSM Counters Counter CNT_1MS Normal Value 1 ms CNT_1024T1 SIMULATE Value 800 ns Description Electrical Order set received to Electrical Idle condition detected by Loop- back Slave 1024 TS1 48 TS1 Number of TS1s transmitted in Polling.Active CNT_2MS CNT_12MS 2 ms 12 ms 1200 ns 800 ns CNT_24MS 24 ms 1600 ns CNT_48MS 48 ms 3200 ns Configuration.Idle (CFG_IDLE) Detect.Quiet (DET_QUIET) Polling.Active (POL_ACTIVE), Configuration.Linkwidth. Start (CFG_LINK_WIDTH_ST), Recovery.RcvrLock (RCVRY_RCVRLK) Polling.Configuration (POL_CONFIG), Recovery.RcvrCfg (RCVRY_RCVRCFG) 5.7. Troubleshooting Table 5.4 provides some troubleshooting tips for the user when the core does not work as expected. Table 5.4. Troubleshooting Symptom LTSSM does not transition to L0 state Board is not recognized by the PC Software application locks up PC crashes CNT_24MS Possible Reason The PCI Express slot does not support the advertised link width. Driver not installed or did not bind to the board. Endpoint is stalled and cannot send TLPs. Endpoint might have violated the available credits of the root complex. Endpoint might have created a NAK or forced a retrain. Troubleshooting Some PC systems do not support all possible link width configurations in their x16 slots. Try using the slot as a x1 and working up to the x4 link width. Check to make sure the driver is installed and the DeviceID and VendorID match the drivers IDs defined in the .inf file. Check to make sure the amount of credits requested is correct. If the endpoint cannot complete a transaction started by the application software, the software will “hang” waiting on the endpoint. A system crash usually implies a hardware failure. If the endpoint violates the number of credits available, the root complex can throw an exception which can crash the machine. 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. © 2013-2017 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. FPGA-IPUG-02009_1.8 75 PCI Express x1/x2/x4 Endpoint IP Core User Guide 6. Core Verification The functionality of the Lattice PCI Express Endpoint IP core has been verified via simulation and hardware testing in a variety of environments, including:  Simulation environment verifying proper PCI Express endpoint functionality when testing with a Synopsys DesignWare behavioral model in root complex mode.  PCI-SIG certification via hardware validation of the IP implemented on LatticeECP3 FPGA evaluation boards. Specific testing has included:  Verifying proper protocol functionality (transaction layer, data link layer and DUT response to certain error conditions) when testing with the Agilent E2969A Protocol Test Card (PTC) and PTC test suite. Note: PTC was used for both in-house testing and testing at PCI-SIG workshops.  Verifying proper protocol functionality with the PCI-SIG configuration test suite.  Verifying electrical compliance. Note: Electrical compliance testing has been verified at PCI-SIG and also in-house by the Lattice PDE group.  Interop testing with multiple machines at PCI-SIG workshops and in-house.  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. 6.1. Core Compliance A high-level description of the PCI-SIG Compliance Workshop Program and summary of the compliance test results for our PCI Express Endpoint IP core for LatticeECP3 device is provided in TN1166, PCI Express SIG Compliance Overview for Lattice Semiconductor FPGAs (August 2007). As described in TN1166, the Lattice PCI Express IP core successfully passed PCI-SIG electrical, Configuration Verifier (CV) and link and transaction layer protocol testing. The PCI Express IP core also passed the 80% interoperability testing program specified by PCI- SIG. In accordance with successfully completing PCI-SIG compliance and interoperability testing, the Lattice PCI Express Endpoint Controller IP cores are currently included on the PCI-SIG Integrators List. © 2013-2017 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. 76 FPGA-IPUG-02009-1.8 PCI Express x1/x2/x4 Endpoint IP Core User Guide References For more information, refer to the following documents: LatticeECP3   DS1021, LatticeECP3 EA Family Data Sheet TN1176, LatticeECP3 SERDES/PCS Usage Guide ECP5 and ECP5-5G   FPGA-DS-02012 (previously DS1044), ECP5 and ECP5-5G Family Data Sheet TN1261, ECP5 and ECP5-5G SERDES/PCS Usage Guide © 2013-2017 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. FPGA-IPUG-02009_1.8 77 PCI Express x1/x2/x4 Endpoint IP Core User Guide Technical Support Assistance Submit a technical support case through www.latticesemi.com/techsupport. © 2013-2017 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. 78 FPGA-IPUG-02009-1.8 PCI Express x1/x2/x4 Endpoint IP Core User Guide Appendix A. Resource Utilization of 2.5G IP Core This appendix provides resource utilization information for Lattice FPGAs using the PCI Express IP core. The IPexpress (for LatticeECP3 devices) and the Clarity Designer (for ECP5 devices) tool is the Lattice IP configuration utility, and is included as a standard feature of the Diamond design tools. Details regarding the usage of the IPexpress and Clarity tool can be found in Diamond help system. For more information on the Diamond design tools, visit the Lattice website at: www.latticesemi.com//Products/DesignSoftware. LatticeECP3 Utilization (Native x1) Table A.1 lists the resource utilization for the PCI Express x1 Endpoint core implemented in a LatticeECP3 FPGA. Table A.1. Resource Utilization* IPexpress Configuration1 Native x1 Slices 4033 LUTs 6040 Registers 4027 sysMEM EBRs 4 *Note: Performance and utilization data are generated targeting an LFE3-95E-7FN1156CES using Lattice Diamond 3.3 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 x1 Endpoint IP core targeting LatticeECP3 devices is PCI-EXP1-E3U3. LatticeECP3 Utilization (Native x4) Table A.2 lists the resource utilization for the PCI Express x4 Endpoint core implemented in a LatticeECP3 FPGA. Table A.2. Resource Utilization* IPexpress Configuration Native x4 Slices 8799 LUTs 12169 Registers 9796 sysMEM EBRs 11 *Note: Performance and utilization data are generated targeting an LFE3-95E-7FN1156CES using Lattice Diamond 3.3 software. Performance might vary when using a different software version or targeting a different device density or speed grade within the LatticeECP3 family. When the x4 core downgrades to x1 mode, utilization and performance results for x1 are identical to x4 mode. Ordering Part Number The Ordering Part Number (OPN) for the PCI Express x4 Endpoint IP core targeting LatticeECP3 devices is PCI-EXP4-E3U3. ECP5 Utilization (Native x1) Table A.3 shows the resource utilization for the PCI Express x1 Endpoint core implemented in an ECP5 FPGA. Table A.3. Resource Utilization* Clarity Configuration Native x1 Slices 4270 LUTs 6207 Registers 4188 sysMEM EBRs 4 *Note: Performance and utilization data are generated targeting LFE5UM-85E-7MG756C using Lattice Diamond 3.0 software. Performance might vary when using a different software version or targeting a different device density or speed grade within the ECP5 family. Ordering Part Number The Ordering Part Number (OPN) for the PCI Express x1 Endpoint IP core targeting ECP5 devices is PCI-EXP1-E5-U or PCI-EXP1-E5-UT. © 2013-2017 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. FPGA-IPUG-02009_1.8 79 PCI Express x1/x2/x4 Endpoint IP Core User Guide ECP5 Utilization (Native x4) Table A.4 shows the resource utilization for the PCI Express x4 Endpoint core implemented in an ECP5 FPGA. Table A.4. Resource Utilization* Clarity Configuration Native x4 Slices 9384 LUTs 13906 Registers 9763 sysMEM EBRs 11 *Note: Performance and utilization data are generated targeting LFE5UM-85E-7MG756C using Lattice Diamond 3.0 software. Performance might vary when using a different software version or targeting a different device density or speed grade within the ECP5 family. Ordering Part Number The Ordering Part Number (OPN) for the PCI Express x4 Endpoint IP core targeting ECP5 devices isPCI-EXP4-E5-U or PCI-EXP4-E5-UT. ECP5 Utilization (Downgraded x2) Table A.5 shows the resource utilization for the PCI Express x2 Endpoint core implemented in an ECP5 FPGA. Table A.5. Resource Utilization* Clarity Configuration x4 Downgraded x2 Slices 8645 LUTs 12911 Registers 8999 sysMEM EBRs 11 *Note: Performance and utilization data are generated targeting LFE5UM-85E-7MG756C using Lattice Diamond 3.0 software. Performance might vary when using a different software version or targeting a different device density or speed grade within the ECP5 family. Ordering Part Number The Ordering Part Number (OPN) for the PCI Express x2 Endpoint IP core targeting ECP5 devices is PCI-EXP4-E5-U or PCI-EXP4-E5-UT. © 2013-2017 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. 80 FPGA-IPUG-02009-1.8 PCI Express x1/x2/x4 Endpoint IP Core User Guide Appendix B. Resource Utilization of PCI Express 5G IP Core This appendix provides resource utilization information for Lattice FPGAs using the PCI Express 5G IP core. The Clarity Designer (for ECP5-5G devices) tool is the Lattice IP configuration utility, and is included as a standard feature of the Diamond design tools. Details regarding the usage of the IPexpress and Clarity tool can be found in Diamond help system. For more information on the Diamond design tools, visit the Lattice website at: www.latticesemi.com//Products/DesignSoftware. ECP5-5G Utilization (Downgraded x1) Table B.1 shows the resource utilization for the PCI Express x1 5G Endpoint core implemented in an ECP5-5G FPGA. Table B.1. Resource Utilization* Clarity Configuration x2 Downgraded x1 Slices 9592 LUTs 13893 Registers 9660 sysMEM EBRs 7 *Note: Performance and utilization data are generated targeting LFE5UM5G-85F-8BG756C using Lattice Diamond 3.9 software. Performance might vary when using a different software version or targeting a different device density or speed grade within the ECP5-5G family. Ordering Part Number The Ordering Part Number (OPN) for the PCI Express x1 5G Endpoint IP core targeting ECP5-5G devices is PCI-EXP2E5G-U or PCI-EXP2-E5G-UT. ECP5-5G Utilization (Native x2) Table B.2 shows the resource utilization for the PCI Express x2 5G Endpoint core implemented in an ECP5-5G FPGA. Table B.2. Resource Utilization* Clarity Configuration1 Native x2 Slices 10949 LUTs 15673 Registers 11249 sysMEM EBRs 7 *Note: Performance and utilization data are generated targeting LFE5UM5G-85F-8BG756C using Lattice Diamond 3.9 software. Performance might vary when using a different software version or targeting a different device density within the ECP5-5G family. Ordering Part Number The Ordering Part Number (OPN) for the PCI Express x2 5G Endpoint IP core targeting ECP5-5G devices is PCI-EXP2E5G-U or PCI-EXP2-E5G-UT. © 2013-2017 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. FPGA-IPUG-02009_1.8 81 PCI Express x1/x2/x4 Endpoint IP Core User Guide Revision History Date Document Version June 2017 1.8 IP Core Version Package Name PCI Express 5G Endpoint 1.0 Change Summary    October 2016 May 2016 Updated supported Diamond version in Table 1.2. PCI Express 5G IP Core Quick Facts. Updated values of Slices, LUTs, and Registers in Table B.1 for ECP5-5G (Downgraded x1) and Table B.2. Resource Utilization for ECP5-5G (Native x2). Updated Diamond version in the footnotes. Updated the document number of ECP5 and ECP5-5G Family Data Sheet from DS1044 to FPGA-DS-02012. 1.7 Beta PCI Express 5G Endpoint Corrected IP Core Version in Revision History. 1.6 Beta PCI Express 5G Endpoint Added support for ECP5-5G. 6.4 PCI Express Endpoint 1.5 6.3   Updated Technical Support Assistance section. Added additional fabric pipeline registers to EBR output paths. 6.2 Added mask logic to ECP5 RxValid signal from pipe wrapper. 6.1 Added SoftLoL logic to ECP5 PIPE wrapper. April 2015 1.4 6.0 Added LSE support for ECP5 devices. November 2014 1.3 6.0 Added support for both LatticeECP3 and ECP5 in same package (IP core version 6.0). April 2014 01.2 6.0_asr Updated device name to ECP5. January 2014 01.1 6.0_sbp Added support for Clarity Designer flow. September 2013 01.0 6.0ea Initial EAP release. © 2013-2017 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. 82 FPGA-IPUG-02009-1.8 7th Floor, 111 SW 5th Avenue Portland, OR 97204, USA T 503.268.8000 www.latticesemi.com
PCI-EXP4-E5-UT 价格&库存

很抱歉,暂时无法提供与“PCI-EXP4-E5-UT”相匹配的价格&库存,您可以联系我们找货

免费人工找货