Succeeding with FPGA designs

Succeeding with FPGA designs

FPGAs have come a long way since they were introduced only 3 decades ago. While in those times they were intended to provide "glue logic" nowadays they are overtaking processors in highly intensive computing applications.

The rocketing rise in FPGA capabilities, combined with the fact that systems have become a lot more complex, has introduced several FPGA-based system design challenges. Greater FPGA capabilities, configurability and user demands brings higher pin counts and denser (finer pitch) packages. There are two main kinds of challenges when designing FPGA-based systems. The first type is about  the FPGA itself: choosing the right part for the design needs that maximizes the resource usage, data throughput, lifespan and minimizes cost and maintainance. The second type is about the FPGA environment: external components and circuits, PCB layout quality in terms of EMI, noise, signal integrity, PDN (Power Distributin Network), thermal requirements, etc.

On pursuit of Quality

When the goal is first-time success, high quality, and minimal debug effort, design teams must consider a long list of points to check—a list that is especially long for FPGA-based systems. This means a great deal of busy work and attention to minute details. The problems inherent in FPGA-based system designs can be classified into the following categories:

Functional – issues that cause the design to not work as expected. For example, a clock to the FPGA is not coming in through a clock specific pin, may not meet the required skew characteristics, and hence the design will fail to function.

Electrical – electrical issues that again cause the board to not work. Mismatching voltage levels, impedances, in and out currents is a relatively easy mistake in systems with a number of voltage rails, I/O protocols, high speed requirements, etc.

Marginal – issues that come up in some conditions. FPGAs are as big as flexible devices so their behaviour is somehow unpredictable. A typical example would be a PDN antiresonance: it is possible to have a bad combination of power planes and decoupling capacitors that create a high impedance at a certain frequency range. When the FPGA operates at that frequency, noise in the power rails may produce misfunction.

Power Supplies/Power Distribution Systems

 

FPGAs have a high number of power supplies. For example, a simple design with a PCI Express interface and a DDR3 will require at least 5 different power rails with their corresponding regulators and distribution planes.

Every bank of an FPGA can require two or more power supplies. Moreover, the logical connections to the bank will determine the voltage and current requirements for the power rail voltage and current requirement for that bank. This makes it important to pay attention to the voltage connections every time there is even a seemingly minor change in the pins connected to that bank. As an example, if a DDR3 SDRAM is connected to a particular bank, a 1.5V and 1.35V power supplies are required. On the other hand, if an LVDS bus is connected to the bank, a 2.5V power supply is required as well. Looking at a DDR3 DIMM. While most pins in the DIMM use 1.5V, there are some I2C signals that could be of any other standard. There are various decoupling recommendations for each of these different power supplies. These recommendations are either provided by the FPGA vendors or they may be determined based on a designer’s electrical simulations.

Summary on Power Supply for FPGAs

1. Create a power budget for each power supply voltage in the system. This is to ensure that the power supplies can adequately supply the current required by the FPGA and the interface.

2. Review to ensure the power rails are of the right value. While this may seem an obvious statement, the reason for this is not obvious, because last-minute logic changes and pin optimizations could have changed the power rail requirements.

3. Add decoupling caps recommended by the FPGA vendors.

4. Ensure that power supply sensors are located close to the FPGA power pins. This ensures that the power supply can drive the dynamic current required by the FPGA.

5. Follow the recommendations of the FPGA vendor and the power supply vendors.

Clocks

FPGAs have different types of clock pins. For example, they have “global” clock pins, which are used to distribute the clock throughout the FPGA. Other clock pins are used to distribute clocks within a certain region of the FPGA. 

Incorrect selection of clock pins in the FPGA can cause a design to not work functionally. What’s worse is the fact that the tools may not always warn the designer of such problems. Additionally, the design will also simulate correctly, and so the verification test benches may not uncover issues with the pin selections related to clocks. Selecting an incorrect pin for a clock can create a marginal design. A marginal design will work for some conditions, while it may not work for other conditions. Selecting the clock pins for a design requires the following considerations:

1. The frequency of the clock – The frequency will determine if the design should use a single-ended clock or differential clock. Also, FPGA vendors will specify clock resources depending on the required minimum and maximum frequency.

2. Local versus global – Determine if the clock is going to be used throughout the FPGA. If so, it will be necessary to use a global clock. If the clock is being used for local data capture, the designer may want to consider using one of the regional or local clock pins.

Source Synchronous Busses

 

Source synchronous busses are related to clocks. A source synchronous bus contains clocks and an associated set of data signals. Most FPGAs require certain groups of pins to be used for source synchronous busses. Again, in most FPGA tools this is an entirely manual process where the designer is responsible for ensuring proper pin selection. Only by selecting the correct FPGA pins is it possible to ensure the clocks will reach the associated data signals. Incorrect pin allocation will cause the design to functionally fail. 

Simulations and verification will not be able to determine a problem with pin selections. An example of a problem that will not be reported is when one of the data pins is outside the source synchronous group, and thus the associated clock may not be used for capturing the data pin. The FPGA tools report problems associated with clock/data groups during place and route of the corresponding RTL.

High-Speed Serial Busses

Today’s FPGAs provide pins with high-speed transceivers for designing interfaces with speeds to 10Gbps. Designing with high-speed serial I/O requires carefully following the guidelines related to board layout, power supply designs, terminations, etc. Some of the FPGAs require isolating the transceiver power supply pins from any of the regular or single-ended I/Os. Not following these guidelines may cause marginal designs in most cases, or a design that fails in the lab.

FPGA Pin Assignment to Ensure Routability

With large-pin-count devices, the time required to do initial pin assignment is increasing. Often when the FPGA is integrated with the PCB design flow, PCB designers need FPGA pins to be swapped to reduce the time to route on the board as well as to reduce the number of layers required to fanout FPGA pins. This problem gets worse when pin counts on FPGAs rise above 600, as well as when multiple FPGAs are on the board. PCB designers are concerned about improving routability and sometimes propose pin swapping without the knowledge of what is possible and what is not. Several requests from the PCB designer will not be possible to achieve for various reasons. Additionally, such requests typically come too late in the design cycle, putting pressure on both the PCB designer as well as on the FPGA designer. To reduce design iterations at the tail end of the design cycle, it is important to consider reviewing relative placement of components within the FPGA system while doing pin assignment. This approach will reduce routing challenges at the tail end of the design while reducing iterations to swap FPGA pins.

Achieving High-Quality FPGA-Based Systems

The programmable nature of FPGAs makes them very different than ASICs/ICs. FPGAs also have a very high number of I/O pins—certainly higher than the typical ICs on the board. Higher numbers of I/Os make it more complex to design the PC board, and require special considerations to achieve high quality.

Let us try to define high-quality boards:

1. The board works consistently with a 20% margin in frequency. The margin is required both below and above the operating frequency.

2. The board works when tested with key parts from different process corners.

3. It has a 5% or 10% margin on voltage and temperature.

4. The board-level constraints are developed for high-speed signals using a solution space exploration approach that enables a constraint-driven PCB layout.

Here are some ways to achieve high-quality FPGA-based systems: 

1. Terminate the high-speed signals based on FPGA vendor recommendations.

2. Follow the vendor guidelines for high-speed serial I/O designs.

3. Follow FPGA vendor guidelines for SSO budgets.

4. Perform pre-layout simulation-based solution space exploration to develop optimum constraints for high-speed signals. This will enable a constraint-driven PCB layout.

5. Reduce the number of layers. Reducing the PCB layers improves the electrical quality of the signals.

6. Ensure good return current paths for all the signal transmission paths. Good return paths are achieved by ensuring an adjacent power/ground plane for all the signal planes.

7. Reduce the number of vias in the design. Vias increase the inductance on a signal. By reducing the vias the inductance on the signal is reduced, and thus the signal is transmitted and received at a higher quality.

8. Keep the trace length of signals to a minimum. Reducing the trace length reduces transmission line losses, and thus improves signal quality.

9. Budget the power supplies and ensure the power supplies are sufficient to handle system needs.

10. Ensure sufficient decoupling capacitors of the appropriate values are placed on the power supply.

Most importantly, ensure that the project has a highly experienced board designer familiar with the unique nature of FPGAs and review the design thoroughly at every step. Make sure to review the final layout and the schematics, and make sure that they are all consistent with the FPGA design and pin-outs. Also, ensure good communication between the PCB design team and FPGA design team.

LISA Liufan

Hardware Engineer at CM Technology

9 年

wonderful

回复

Nice synopsis of what it takes to build a reliable FPGA system...

回复
Javier D. Garcia-Lasheras

Partner and Industry Director at SNGULAR

9 年

Congratulations Juan Abelaira. This is really a comprehensive guide, it's hard to believe the way you have managed to compress all this valuable info in such a nice and easy to read blog!

回复
Adam Taylor

Founder of FPGA Consultancy - Adiuvo Engineering. Embedded Systems Consultant, FPGA Expert, Prolific FPGA Writer

9 年

Juan, This is a really good article anyone designing with FPGA should have a read of it.

回复
Baggio Wangfan

Co-Founder at CM Technology Company Ltd

9 年

Very good article. Can I transfer it?

回复

要查看或添加评论,请登录

Juan Abelaira的更多文章

  • QPSK modulation on FPGA

    QPSK modulation on FPGA

    QPSK (Quad Phase Shift Keying) is a technique of RF modulation, mostly used for data transmission and applied with…

    10 条评论
  • Convolutional code in FPGA with HLS

    Convolutional code in FPGA with HLS

    Encoding is a necessary operation for FEC (Forward Error Correction) whenever data is to be sent through a noisy…

    2 条评论
  • Spacewire for Zynq Ultrascale+ FPGA

    Spacewire for Zynq Ultrascale+ FPGA

    Spacewire is a recent protocol created for high speed communications between spacecraft instruments. It provides data…

    3 条评论
  • Fast matrix inversion in FPGA

    Fast matrix inversion in FPGA

    Matrix inversion is a common mathematical operation that appears in many signal processing algorithms, like Kalman…

    5 条评论
  • Clock Domain Crossing in FPGA

    Clock Domain Crossing in FPGA

    FPGAs do use different clocks in different areas (called clock domains) and often data and signals are transferred from…

    8 条评论
  • DMA basics on the UltraMyir board

    DMA basics on the UltraMyir board

    The UltraMyir is an FPGA development board by MYIR tech based on the Zynq Ultrascale+ ZCU3EG with plenty of interesting…

    1 条评论
  • Embedded acceleration on Zynq Ultrascale with Vitis

    Embedded acceleration on Zynq Ultrascale with Vitis

    Vitis is the latest Xilinx creation for software and hardware integration, replacing the good old SDK. Previously, a…

  • PID on FPGA with HLS

    PID on FPGA with HLS

    PID is an acronym for Proportional - Integral - Derivative and actually refers to a type of controller widely used in a…

    6 条评论
  • How AI will ditch computers and software

    How AI will ditch computers and software

    Those who can show their age remember the mainframe computer times when there was a whole room for a big brain where…

    1 条评论
  • Myths and truths of HLS

    Myths and truths of HLS

    HLS (High Level Language) is an FPGA tool that takes a C-like source file and generates RTL code. Not only the details…

    12 条评论

社区洞察

其他会员也浏览了