Skip to content
xver edited this page Feb 11, 2023 · 40 revisions

Welcome to the SystemVerilog/SystemC "TCP/IP Shunt"!

The Shunt is Open Source Client/Server TCP/IP socket based communication library for SystemVerilog and SystemC simulations.

  • It aims to enable quick and easy development of communication between stand-alone SystemVerilog/SystemC simulations and/or external applications

  • It provides a common SystemVerilog/C API and supports mostly all System Verilog data types and data structures.

The Shunt is available under a "MIT" License. It can be used without restriction in an open-source or commercial application.

Articles/Conference papers

Shunt documentation

Commercial support

Starting from the version 2.2.0, "IC VERIMETER" is pleased to announce the availability of commercial support. Whether you need assistance with the Shunt integration into your project or customization, please contact us at icshunt.help@gmail.com

Please, report bugs to Issues.

Getting Started

Library Installation

Download Shunt from https://github.com/xver/Shunt

Setup following variables:

  • “SHUNT_HOME” to the SHUNT home directory.
  • “SHUNT_SVDPI” to the location of svdpi.h file

Library compilation

  • cd to “$SHUNT_HOME/utils/makedir/“
  • run “make clean;make all” Compile result will be placed under ${SHUNT_HOME}/bin with dpi:“libutils.so” and without dpi:”libCutils.so”

NOTE: use the USER_OPT to add compiler options. (Example all debug options: make USER_OPT='-g3 -DSHUNT_CLIENT_SERVER_C_DEBUG -DSHUNT_TLM_DEBUG -DSHUNT_DPI_C_DEBUG')

Compile and run all SV/C examples

  • cd to $SHUNT_HOME/examples/makedir
  • run ./run_examples or ./run_examples_debug

Compile and run C examples

  • cd to example makedir root directory. (Example: $SHUNT_HOME/examples/c/primitives/makedir)
  • To compile the library and launch test run “make all”

Compile and run SV examples

The Shunt includes a complete Makefile structure for the C portion of the library, but ONLY Makefile target place holders for SV domain.

  • Edit “Makefile” initiator/target “compile_sv” under initiator/target local makedir(Example: $SHUNT_HOME/examples/sv/sv2c/initiator/makedir)
  • Edit “run” file placeholder. Setup run command for appropriate source. cd to example makedir root directory, run “make all” and ./run (Example: $SHUNT_HOME/examples/sv/sv2c/makedir)

TLM-2.0 over TCP/IP "loosely timed model" SystemC-to-SystemC and SystemC-to-SV examples

SystemC to SystemC b_transport over TCP/IP :

  • cd to $SHUNT_HOME/examples/sc/LT_simple_cs/makedir
  • run "make all"

SystemC to SV b_transport over TCP/IP :

  • cd to $SHUNT_HOME/examples/sc/LT_simple_sv/makedir
  • run "make all"