Introduction

SoCMake is a hardware build system based on CMake.
SoCMake can help you automatize yout build process for hardware designs, either running simulation, code generation, FPGA implementation, synthesis etc...
SoCMake project does not try to create a new build system, instead it is an extension of CMake build system generator.
Since CMake is a mature and widely used build system, it can easily cover the requirements needed for hardware design.
Key Features
- Native Support for
C++andCtestbenches:
This makesSoCMakea natural choice of build system forC++andSystemCtestbenches. However it can be also used forVerilog,SVorVHDLonly testbenches. - Cross compilation of target CPU application code:
CMake's support for cross-compilation makesSoCMakea natural choice for System on Chips design, where a test application needs to be cross compiled for the target CPU. - CMake maturity and familiar flow:
Since CMake is used as a base build system,
SoCMakebenefits from the stability and the documentation of the project. Configuring the project and running Make targets is also familiar to mostLinuxusers. - IP block packaging and management:
SoCMakeprovides a way to package IP blocks into independent and self containedgitrepositories. Which can later be fetched with CPM.cmake package manager.
Supported Languages and Tools
Currently SoCMake supports a number of EDA tools that were used within the SoC project the tool was originaly deveoped for.
The list is always growing and soon many more tools will be added.
| Type | Supported |
|---|---|
| Languages | C, C++, ASM, Verilog, SystemVerilog, VHDL, SystemRDL |
| RTL Simulation | Verilator, Icarus, GHDL, Xcelium, VCS |
| RTL Linting | Verible |
| RTL conversion | SV2V, tmrg, tmrv |
| Synthesis | Yosys, Vivado |
| PeakRDL | regblock, halcpp, html, docusaurus, ipblocksvg, socgen, ldsgen |