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/develop/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!