Engineering FPGA knowledge base
Articles are linked to boards, chips, toolchains, sources and warnings.
Taxonomy
Boards
Chips and families
Toolchains
Languages and methods
Interfaces and protocols
Typical mistakes
Project templates
Vendors and ecosystems
Communities
Start articles
An FPGA is configurable digital logic: the design becomes hardware structure after synthesis, place-and-route and bitstream generation.
Pick the first board by toolchain access, verified examples, documentation, community help and a realistic first project.
Verilog-2001 is widely synthesizable; SystemVerilog adds stronger typing, interfaces, assertions and verification constructs, but tool support varies.
Constraint files bind logical ports to package pins and define clocks, I/O standards and timing assumptions.
Timing answers whether signals can travel through logic and routing quickly enough for the target clock and I/O constraints.
CDC is the problem of safely moving signals between unrelated or differently timed clock domains.
The practical FPGA flow is lint/simulation, synthesis, constraints, place-and-route, timing, bitstream, programming and board validation.
Yosys is an open-source synthesis tool; nextpnr is a portable place-and-route tool supporting several FPGA architectures through device databases.
Vivado is AMD's FPGA design suite for modern Xilinx/AMD FPGA and SoC families.
Quartus Prime is Intel's FPGA design suite for Intel/Altera FPGA, CPLD and SoC FPGA devices.
Gowin EDA is the vendor flow for Gowin FPGA families used by Tang and Gowin starter boards.
Start with board recognition, exact device selection, LED example, flash/SRAM programming distinction and board-revision pinout check.
Use the Primer 20K docs to identify the core board, dock, exact memory and connector revision before using examples.
Start from Digilent's resource center, select the exact 35T or 100T variant, import constraints and run a simple Vivado design.
Install the open iCE40 flow, run the LED example, verify PCF constraints and then add Pmod experiments.
Start by identifying the ULX3S revision and ECP5 size, then use the documented open ECP5 flow and board-specific constraints.
FPGA order codes encode family, density, package, speed grade, temperature range and sometimes feature variants.
Pinout verification means matching board revision, schematic, FPGA package, bank voltage, connector map and constraint file before connecting hardware.
Include board, FPGA part, toolchain version, exact error, constraints, minimal code and what was already tested.
Most beginner failures come from missing constraints, misunderstood clocks, latch inference, multiple drivers, skipped simulation and wrong board variant.
A minimal simulation has a DUT, testbench, clock/reset generation, stimulus, assertions or checks, and waveform capture only when needed.
Verilator compiles synthesizable Verilog/SystemVerilog into C++ or SystemC models for fast simulation and linting.
GHDL is an open-source VHDL simulator and synthesis-related tool used in VHDL verification and open FPGA flows.
cocotb lets Python testbenches drive HDL simulators, which is useful for protocol tests, scoreboards and integration-style verification.
Formal verification proves properties over all possible inputs within a bounded or inductive model instead of checking selected simulation traces.
UART is the simplest board-visible debug channel, but it still needs clock-derived baud timing, synchronizers and a testbench.
Pmod is a small expansion connector ecosystem; verify voltage, pin mapping and peripheral protocol before attaching modules.
A RISC-V softcore project needs enough logic, memory, a debug path, firmware build flow and a board-specific memory/IO map.
Linux-capable FPGA projects need a CPU subsystem or large softcore, external memory, storage or boot media, console and a reproducible software build.
The reference is valuable for JSON records, schema validation, part decoding, filters, comparison and PR workflow; fpga.camp adds multilingual knowledge graph behavior.
Glossary
Field-programmable gate array: configurable digital logic fabric programmed after manufacturing.
Programmable logic device usually smaller and more deterministic than an FPGA.
Look-up table used as a basic FPGA logic element.
Sequential storage element usually clocked by a clock edge.
Dedicated block memory inside FPGA fabric.
Dedicated arithmetic block for operations such as multiplication and accumulation.
Clock management block used to generate or condition clocks.
Configuration data loaded into an FPGA to realize a design.
Conversion of HDL into a gate-level or technology-mapped representation.
Mapping logic to physical locations and routing signals between them.
Timing analysis that checks paths against constraints without dynamic simulation.
Timing margin between required and actual path timing.
Clock domain crossing; transfer of signals between different clock domains.
Unstable state of a sequential element when setup or hold assumptions are violated.
File describing pin assignments, clocks, I/O standards and timing constraints.
AMD/Xilinx Design Constraints format used by Vivado.
Synopsys Design Constraints format used by multiple FPGA tools.
Physical constraints format commonly seen in open iCE40 flows.
Quartus Settings File used in Intel FPGA projects.
Constraint format used in Gowin FPGA projects.
Small expansion connector ecosystem popular on educational FPGA boards.
FPGA Mezzanine Card connector standard for expansion modules.
Debug and programming interface used by many FPGA boards.
Asynchronous serial interface often used for simple board debug.
Synchronous serial interface commonly used for flash and peripheral chips.
Two-wire serial bus often used for low-speed control devices.
AMBA interconnect protocol family widely used in SoC FPGA designs.
Open interconnect bus used in many open-source FPGA SoC projects.
Processor implemented in FPGA fabric rather than as hardened silicon.
Retrieval-augmented generation; answering with retrieved source-backed context.