Skip to main content

Welcome to the SoCMake Blog

· 2 min read

Welcome to the official SoCMake blog! This is where we will post release notes, feature highlights, tutorials, and news from the project.

What is SoCMake?​

SoCMake is a hardware build system built on top of CMake. It extends the mature CMake ecosystem to cover the specific needs of hardware and SoC design — RTL simulation, code generation, FPGA implementation, and synthesis — without reinventing the wheel.

The core idea is simple: instead of learning yet another domain-specific build tool, designers can use the same CMake workflow used in many software projects, and SoCMake handles the rest.

Key Features​

  • First-class C/C++ support — ideal for SystemC testbenches and mixed HW/SW projects
  • Cross-compilation — compile target CPU application code for ARM, RISC-V and other architectures alongside your RTL
  • Extensive simulation support — Verilator, Icarus Verilog, GHDL, Xcelium, VCS, Questasim, Vivado Simulator, and cocotb
  • RTL toolchain integration — linting (Verible, vhdl_linter), conversion (sv2v), synthesis (Yosys, Vivado), and register description (PeakRDL, desyrdl)
  • IP block package management — package IPs as self-contained repositories and manage dependencies via CPM.cmake

Supported Languages and Tools​

CategoryTools
LanguagesC, C++, SystemC, ASM, Verilog, SystemVerilog, VHDL, SystemRDL, IP-XACT
SimulationVerilator, Icarus Verilog, GHDL, Xcelium, VCS, Questasim, Vivado Sim, cocotb
LintingVerible, vhdl_linter
Conversionsv2v
SynthesisYosys, Vivado
Register toolsPeakRDL (regblock, halcpp, html, socgen), desyrdl

Getting Started​

SoCMake has minimal dependencies — only CMake ≥ 3.27 and make or ninja. The quickest way to try it is via the one-time bootstrap:

curl -fsSL https://raw.githubusercontent.com/HEP-SoC/SoCMake/master/bootstrap/bootstrap.sh | sh

Then create a CMakeLists.txt:

cmake_minimum_required(VERSION 3.27)
project(my_soc NONE)

find_package(socmake REQUIRED)

add_ip(my_ip)
ip_sources(my_ip SYSTEMVERILOG src/my_module.sv)

See the Getting Started guide and the Examples for full walkthroughs.

About This Blog​

We will use this space to announce new releases, explain design decisions, and share tips for getting the most out of SoCMake. Stay tuned!