Detailed explanation of FPGA design process and development too

AnnieChen
5 min readSep 13, 2024

--

FPGAs (Field Programmable Gate Arrays) have become popular in a variety of industries due to their flexibility. From prototyping to production applications, FPGA development entails numerous phases and tool chains. Mastering the FPGA design process and development tools is critical to the project’s successful completion.

Overview of FPGA design process

The FPGA design process can be roughly divided into the following main steps:

Design input: including conceptual design, definition of functional specifications, and writing circuit descriptions in hardware description languages ​​(such as Verilog or VHDL). Synthesis: Convert HDL code into FPGA logic circuits and map them to FPGA logic units.

Placement and routing: Assign specific physical locations to the logic modules in the design and determine the connection paths between them.

Timing analysis: Ensure that the design meets timing requirements and check whether the delay of the critical path is within the allowable range.

Functional simulation and verification: Simulate the design to verify its functional correctness and timing performance.

Generate bitstream file: After synthesis and placement and routing are completed, generate a bitstream file that can be loaded into the FPGA hardware.

Hardware debugging and testing: Download the bitstream file to the FPGA and perform actual hardware debugging to ensure that the required functions are implemented on the hardware.

FPGA design input

Design concept and functional specifications

FPGA design starts from the concept and first needs to clarify the functional requirements of the design. This typically includes defining input and output interfaces, processing capabilities, and the timing and resource constraints of the system. The clarity of functional specification definition directly affects the smooth progress of subsequent design phases.

Hardware Description Language (HDL)

HDL (Hardware Description Language) is the core tool for FPGA design and is used to describe the logic functions of the circuit. Commonly used HDL languages ​​include Verilog and VHDL. Designers write corresponding HDL codes based on functional requirements to achieve design goals.

Verilog: A commonly used HDL language with syntax close to C language and suitable for digital circuit design.

VHDL: A highly structured HDL language, suitable for more complex designs, especially widely used in Europe and the aerospace field. In the design input stage, designers write modular HDL code according to specifications and ensure that the code has good readability and reusability.

FPGA synthesis

The concept of synthesis

Synthesis is the process of converting HDL code into FPGA logic circuit implementation. FPGA synthesis tools will map the HDL code to the basic logic units of the FPGA (such as lookup tables, flip-flops, etc.) and generate a gate-level netlist.

Comprehensive tools

Different FPGA manufacturers provide their own comprehensive tools:

Xilinx Vivado: A synthesis and implementation tool for Xilinx FPGA, supporting efficient logic synthesis and optimization.

Intel Quartus Prime: A comprehensive tool for Intel (Altera) FPGA, rich in functions, supporting the entire process from design input to bitstream generation. Lattice Diamond: Lattice FPGA synthesis and implementation tool, mainly used for low-power, small-scale FPGA design.

The synthesis process also includes logic optimization, where tools automatically adjust logic circuits to improve timing performance or reduce resource usage.

Placement and wiring

The role of placement and wiring

Place and Route (P&R) is to map the synthetically generated logic units to the actual physical locations on the FPGA chip and determine the connection paths between signals. This process is a very critical step in FPGA design and directly affects the timing performance and resource utilization of the final design.

Placement and routing tools

Placement and routing tools are often integrated with synthesis tools:

Vivado: Provides automated placement and routing functions, which can optimize timing and reduce critical path delays.

Quartus Prime: It has powerful placement and routing functions and supports automatic optimization of complex designs.

Timing Constraints: Timing constraints during placement and routing are very important tools to ensure timing performance on critical paths. Designers can specify clock frequency and path delay requirements by writing timing constraint files (such as Xilinx’s XDC files).

Timing analysis and timing closure

The Importance of Timing Analysis

FPGA designs need to run correctly at specified clock frequencies, so timing analysis is a key step to ensure design reliability. Timing analysis examines the delays of each logic path of the design, especially critical paths, to ensure that their delays meet clock cycle requirements.

Static Timing Analysis (STA)

Static timing analysis is to determine whether the circuit can work at the specified clock frequency by calculating the maximum and minimum delays of each path in the circuit.

Common timing analysis tools include:

Vivado’s STA tool: automatically analyzes clock domains and critical paths and generates timing reports.

Quartus’ TimeQuest analyzer: used for timing analysis and optimization, providing detailed timing performance feedback.

Designers can adjust layout and routing or modify logic design based on timing analysis results to ensure that the design achieves timing closure.

Functional simulation and verification

Purpose of functional simulation

Functional simulation refers to using simulation tools to test the logical functions of the design before hardware implementation to ensure that the design meets the expected functional requirements. Simulation can be performed at different stages of the design:

RTL simulation: performed before synthesis to verify the correctness of the HDL code.

Gate-level simulation: After synthesis, verify the consistency of the synthesized netlist function with the original RTL function.

Simulation Tools

Commonly used simulation tools include:

ModelSim: A universal simulation tool suitable for a variety of FPGA manufacturers, supporting VHDL and Verilog simulation.

Vivado Simulator: A built-in simulation tool provided by Xilinx, integrated into the Vivado development environment.

Quartus Simulation: Intel’s simulation tool, integrated in Quartus Prime, supports different simulation modes.

Through simulation, designers can find logical errors in the design and avoid problems during the hardware debugging phase.

Bitstream generation and download

Generate bitstream file

After synthesis, placement and routing, and timing analysis are completed, the development tool generates a bitstream file for configuring the FPGA. The bitstream file contains the physical implementation information of the design and can be loaded directly into the FPGA.

The process of generating bitstream files in Vivado and Quartus: The process of generating bitstreams is usually relatively automated. The designer only needs to confirm whether the timing constraints meet the requirements, and the tool will automatically generate a bitstream file for download.

Download to FPGA hardware

After generating the bitstream file, the developer needs to download it to the FPGA hardware for testing and debugging. Download tools are often integrated with development environments such as:

Xilinx’s Vivado Hardware Manager: used to download bitstream to Xilinx FPGA and supports hardware debugging.

Intel Quartus Programmer: used to write bitstream files to Intel FPGA.

Hardware debugging and testing

Purpose of hardware debugging

Hardware debugging refers to real-time functional testing on FPGA hardware, locating and repairing potential functional and timing problems by observing and analyzing runtime signals. Hardware debugging tools allow designers to capture internal signals and perform signal analysis on the fly.

Debugging tools

Xilinx’s ChipScope: A logic analyzer can be embedded in the FPGA to capture changes in internal signals in real time for debugging and performance analysis. Intel’s

SignalTap: a logic analysis tool integrated in Quartus that supports real-time signal capture and analysis.

Through these tools, developers can view circuit status while the FPGA is running and find and fix potential problems in the design.

Original link:https://www.icrise.com/blog/detailed-explanation-of-fpga-design-process-and-development-tools

--

--