/systemc-clang

This is a Clang tool that parses SystemC models, and synthesizes Verilog from it.

Primary LanguageC++OtherNOASSERTION

Documentation Status

A SystemC Parser using the Clang Front-end

systemc-clang parses SystemC 2.3.3. It parses RTL constructs and some TLM 2.0 constructs. There is a HDL synthesis plugin that generates Verilog from SystemC RTL descriptions.

Requirements

  • llvm/clang (version 13.0.0)
  • SystemC version 2.3.3.
  • c++14 is required. We are using some features that necessitate c++17. Down-porting it is also possible, but not supported.

Installation

Plugin HDL

To compile with the HDL plugin, run cmake with the -DHDL=on flag.

Documentation

Tests

To enable compilation of tests, run cmake with the -DENABLE_TESTS=on flag and also the -DSYSTEMC_DIR=<path> flag to pass the location for SystemC. Without specifying the SYSTEMC_DIR path, it will not be possible to run the unit tests.

For information about running verilog conversion tests, see this file.

Issues

If you encounter problems, please create issues with a minimally working example that illustrates the issue.

Development Docker image

We build all the dependencies necessary for systemc-clang in a Docker image that you may use. Follow these Docker systemc-clang instructions to use the Docker image for building systemc-clang, and running benchmarks.

Project Ideas

If you're interested in contributing to systemc-clang, then we keep a list of interesting projects that one could approach. Please consult projects.

Developers

Core

HDL plugin

  • Maya B. Gokhale
  • Zhuanhao Wu

License

systemc-clang follows the same licensing as clang. Please look at LICENSE.