AI accelerator / datapath design

Systolic Array RTL Design Guide

A systolic array turns a regular arithmetic kernel into a spatial pipeline. Each processing element performs local work—usually multiply-accumulate—while operands move predictably between neighbours. The main RTL challenge is keeping arithmetic, forwarding and cycle alignment consistent across the array.

Implementation-first: use this guide to review the design rules, then solve the linked HDLForge problems without looking at a solution first.

Core design rules

Implementation path

Verification checklist

Useful RTL / verification pattern

// Conceptual PE update
if (enable) begin
  a_out <= a_in;
  b_out <= b_in;
  acc   <= acc + a_in * b_in;
end

Practice with executable problems

Accelerators · HardSystolic Array Processing Element

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

Accelerators · EasySigned INT8 Multiply-Accumulate

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

Accelerators · MediumFour-Lane INT8 Dot Product

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

Accelerators · HardValid-Tagged Pipelined Multiplier

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

Accelerators · HardQ1.7 Fixed-Point Multiplier

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

Turn it into a project

ProjectHardware DSP PipelineProjectTimestamped Feed-to-Action Pipeline