The Array
Class: 10CT1

Hardware Descriptive Languages (HDLs)

To configure the physical channels and logic blocks within an FPGA, engineers do not use traditional software programming languages like C++ or Python. Instead, they rely on Hardware Description Languages (HDLs). While software languages tell a CPU a sequence of actions to take over time, an HDL describes the literal structure and physical layout of electronic circuits operating simultaneously in space.

The Hardware Compilation Pipeline

Transforming text-based HDL code into functional hardware requires specialised vendor Integrated Development Environments (IDEs), such as Xilinx/AMD Vivado or Intel Quartus Prime. This compilation toolchain follows a rigid sequence of physical layout phases:

1. Synthesis & Netlist Generation

The compiler parses the text code and breaks down the behavioural logic into generic digital components (such as logic gates, multiplexers, and flip-flops). The output of this stage is a Netlist—a text database detailing every required logical component and the exact connections (nets) running between them.

2. Implementation: Placement & Routing

The IDE translates the abstract netlist into the actual physical geometry of the targeted silicon wafer:

[ Design Implementation Summary ]

  ┌────────────────┐      ┌────────────────┐      ┌────────────────┐
  │  HDL SOURCE    │ ───► │   SYNTHESIS    │ ───► │  GATE NETLIST  │
  │ (Logic Design) │      │ (Logic Mapping)│      │(Component Map) │
  └────────────────┘      └────────────────┘      └────────────────┘
                                                          |
                                                          ▼         
  ┌────────────────┐      ┌────────────────┐      ┌────────────────┐
  │   BITSTREAM    │ ◄─── │    ROUTING     │ ◄─── │   PLACEMENT    │
  │ (.bit / .bin)  │      │(Physical Wires)│      │ (Silicon Sites)│
  └────────────────┘      └────────────────┘      └────────────────┘
                

What is a Bitstream?

The ultimate objective of the toolchain is to generate a Bitstream (typically a .bit or .bin file). A bitstream is a dense stream of binary data that contains no processor instructions or software application data. Instead, it is a direct configuration map for the FPGA's underlying internal memory cells.

Each bit in the file corresponds to a specific configuration point on the chip: turning a routing switch on or off, defining the truth-table rows inside an individual LUT, or setting up the electrical standard of an I/O pin. Loading a bitstream physically constructs the targeted hardware architecture inside the chip.

Hardware Deployment Methods

Because most standard FPGAs are based on volatile SRAM memory, they lose their custom configuration whenever power is disconnected. To boot up successfully, the chip must be programmed or loaded using one of several industry hardware interfaces:

Protocol Operational Mechanism Primary Deployment Scenario
JTAG (Joint Test Action Group) A 4-wire or 5-wire synchronous test bus that connects directly from the developer's computer via a USB probe straight into the FPGA's configuration registers. Used extensively during desktop development, debugging, and real-time hardware signal tracing. Memory configuration is lost instantly on power down.
SPI (Serial Peripheral Interface) A common 4-wire synchronous serial communication interface. Upon power-up, the FPGA acts as a master device and automatically fetches its configuration file. Used in production environments. The bitstream is written to a permanent, non-volatile external flash memory chip sitting next to the FPGA on the PCB.
SWD (Serial Wire Debug) A compact 2-wire alternative interface primarily optimised for microcontrollers and specific ARM-based SoC architectures. Utilised on hybrid heterogeneous chips where an embedded processor core manages the boot and configuration state of the adjacent logic fabric.
[ HIGH-RELIABILITY DEPLOYMENT TOPOOLOGY (SPI MODE) ]

 ┌────────────────────────┐                  ┌────────────────────────┐
 │   External Non-Volatile│  SPI Bus Lines   │   Volatile FPGA Die    │
 │     Flash Memory       │─────────────────►│ (SRAM Logic Framework) │
 │  [Holds Bitstream Map] │                  │ [Loads Map at Boot-up] │
 └────────────────────────┘                  └────────────────────────┘
                

The Core Languages

The global electronics community relies primarily on two major historical standardisations of HDL design, each with entirely contrasting syntax systems and engineering design philosophies:

Verilog HDL →

Based heavily on the style of the C programming language. Compact, highly flexible, and allows for rapid structural modifications, though its loose type-checking can introduce subtle physical bugs if not carefully written.

VHDL →

Derived directly from the Ada programming language. Incredibly strict, strongly typed, and highly verbose. Its design ensures that complex multi-million gate projects remain structurally sound and verify perfectly before synthesis.