HDLForge accelerator practice

Hardware Accelerator RTL Practice Problems

This path is implementation-first. Every problem is an executable RTL task rather than a theory prompt, with emphasis on datapath width, signed arithmetic, throughput, pipelining and parallel compute structures.

Suggested order: start with the INT8 MAC, then dot product and reduction logic, then move to quantization, systolic processing and valid-aligned pipelining.

Accelerator problems

01 · EasySigned INT8 Multiply-Accumulate

Build the basic signed INT8 multiply-accumulate datapath used in DSP and machine-learning accelerators.

accelerator · mac · int8 · datapath
02 · MediumFour-Lane INT8 Dot Product

Implement a four-lane signed INT8 dot-product datapath similar to a small neural-network vector unit.

accelerator · dot-product · simd · int8
03 · MediumEight-Lane Reduction Adder

Create a parallel reduction block that sums eight 16-bit lanes into one output.

accelerator · reduction-tree · parallelism · datapath
04 · MediumReLU with 8-bit Saturation

Implement a hardware activation stage that applies ReLU and saturates positive values to unsigned 8-bit range.

accelerator · relu · quantization · activation
05 · HardSystolic Array Processing Element

Build a single processing element for a small systolic matrix-multiply array.

accelerator · systolic-array · mac · pipeline
06 · HardValid-Tagged Pipelined Multiplier

Implement a one-cycle-latency signed multiplier with an aligned valid signal, a common accelerator pipeline building block.

accelerator · pipeline · multiplier · throughput
07 · Medium32-bit Population Count

Build a combinational population-count unit that returns the number of set bits in a 32-bit word.

accelerator · popcount · reduction · bit-manipulation
08 · MediumFour-Lane Signed Vector Maximum

Implement a four-lane signed max-reduction datapath.

accelerator · vector · reduction · signed
09 · HardQ1.7 Fixed-Point Multiplier

Multiply two signed Q1.7 fixed-point values and return a truncated Q1.7 result.

accelerator · fixed-point · multiplier · quantization
10 · HardValid-Ready Streaming Accumulator

Build a streaming accumulator that updates only on successful ready/valid transfers.

accelerator · streaming · ready-valid · accumulator
11 · Hard2x2 Matrix Multiply Datapath

Implement a small combinational 2x2 signed matrix-multiply datapath.

accelerator · matrix-multiply · mac · parallelism
12 · MediumThree-Tap INT8 Convolution

Create the arithmetic core of a small 1D convolution engine.

accelerator · convolution · dot-product · int8
13 · MediumSigned Fixed-Point MAC

Build the arithmetic primitive used by the FIR datapath.

DSP · MAC · fixed point
14 · MediumFour-Tap FIR Datapath

Compute the combinational weighted sum for four delayed samples.

DSP · FIR · parallel MAC
15 · HardSigned Saturation Stage

Reduce a wide accumulator to a 16-bit output without wraparound on overflow.

DSP · fixed point · saturation
16 · MediumMatrix MAC Processing Element

Create the processing element used repeatedly in the matrix accelerator.

matrix multiply · MAC · PE
17 · EasyTwo-Element Dot Product

Implement the arithmetic kernel for a 2x2 matrix result element.

matrix multiply · dot product · datapath
18 · Medium2x2 Input Tile Registers

Capture two 2x2 input matrices so computation is isolated from the input interface.

matrix multiply · buffering · registers
19 · MediumMatrix Compute Controller

Sequence input acceptance, one compute phase and output availability.

matrix multiply · FSM · control
20 · MediumMatrix Result Buffer

Store four result elements until the consumer accepts the complete output tile.

matrix multiply · buffer · valid-ready
21 · Hard2x2 Matrix-Multiply Accelerator

Integrate the complete parallel 2x2 matrix-multiplication datapath with input and output handshakes.

matrix multiply · accelerator · integration
22 · MediumThree-Row Line Buffer

Maintain the current and previous two image rows needed by a 3x3 streaming convolution.

convolution · line buffer · streaming
23 · Medium3x3 Sliding Window

Build the nine-pixel window presented to a 3x3 convolution kernel.

convolution · window · shift registers
24 · HardNine-Tap Convolution MAC

Compute a signed 3x3 dot product between nine pixels and nine kernel coefficients.

convolution · MAC · datapath
25 · EasyConvolution Valid Pipeline

Align output validity with a three-stage convolution datapath.

convolution · pipeline · valid
26 · Medium8-bit Output Clamp

Convert a wide signed convolution result into an unsigned 8-bit pixel using saturation.

convolution · saturation · quantization
27 · HardStreaming 3x3 Convolution Accelerator

Integrate a streaming 3x3 convolution engine with valid/ready flow control.

convolution · accelerator · streaming
28 · MediumSIMD Lane ALU

Implement one 32-bit SIMD lane with add, subtract, minimum and maximum operations.

SIMD · ALU · vector
29 · MediumFour-Lane SIMD Datapath

Apply the same arithmetic operation independently to four 32-bit lanes.

SIMD · parallel lanes · datapath
30 · EasyVector Mask Merge

Selectively update SIMD lanes using a four-bit predicate mask.

SIMD · mask · merge
31 · MediumVector Reduction Unit

Reduce four signed lanes to either their sum or maximum.

SIMD · reduction · tree
32 · HardFour-Lane SIMD Execution Unit

Integrate four arithmetic lanes with per-lane masking and a registered output.

SIMD · CPU · vector unit
33 · HardMemory-Copy DMA Engine

Integrate control, address progression and transfer counting for a programmable word-copy engine.

DMA · SoC · integration

What to focus on

Related implementation guides