SystemCのインストール

SystemCはGithubに公開されている。
github.com

Tagsを見ると、2.3.4の安定版と3.0.0の開発版がある。
Tags · accellera-official/systemc · GitHub

せっかくなので3.0.0開発版をインストールしてみよう。まずはcloneする。

$ cd $HOME/work
$ git clone https://github.com/accellera-official/systemc
$ cd systemc
$ git tag
2.3.0a
2.3.1a
2.3.2
2.3.3
2.3.4
2.3.4_pub_rev_20190614
3.0.0_pub_rev_20231129
$ git checkout 3.0.0_pub_rev_20231129

WSL2にインストールしてみる。
INSTALL.mdにしたがって作業を進める。Step1に環境変数の設定、Step3に事前にインストールすべきツールの注意書きがある。

It requires the GNU Autotools libtoolize, aclocal, automake, and autoconf.

ので、まずは事前準備を行う。その後Step3まで進む。

$ sudo apt install libtool automake autoconf
$ export CXX=g++
$ ./config/bootstrap

すると、「configure.ac:536: You should run autoupdate.」というメッセージが出るので、autoupdateコマンドを実行ののち、手順を進める。

$ autoupdate
$ ./config/bootstrap
$ mkdir objdir
$ cd objdir
$ ../configure 'CXXFLAGS=-std=c++17' --with-unix-layout --prefix=$HOME/systemc-3.0.0_pub_rev_20231129
$ make -j
$ make -j check
$ make install

なお、configureのオプションでCXXFLAGSの設定をしているのはC++17対応のマングリングのためであり、--with-unix-layoutの設定はlibディレクトリがlib-linux64などのようにならないためである。インストール先はホームディレクトリ直下のsystemc-3.0.0_pub_rev_20231129を指定した。

これでインストールが完了したはずだ。ls $HOME/systemc-3.0.0_pub_rev_20231129 で確認できる。

$ cd
$ ls systemc-3.0.0_pub_rev_20231129/
include  lib  share

examplesというディレクトリがあるので、このサンプルを動かしてみる。

$ cp -Rp systemc-3.0.0_pub_rev_20231129/share/doc/systemc/examples .
$ cd examples/build-unix
$ vi Makefile.config

Makefile.configは以下を書き換える(-std=c++17を追加)。

FLAGS_COMMON = -g -Wall -std=c++17

ビルドする。

$ export SYSTEMC_HOME=$HOME/systemc-3.0.0_pub_rev_20231129
$ make -j 

ビルドができた。何か動かしてみよう。

$ cd ../sysc/simple_fifo/
$ ./simple_fifo.x

        SystemC 3.0.0_pub_rev_20231124-Accellera --- Feb 18 2024 18:43:12
        Copyright (c) 1996-2023 by all Contributors,
        ALL RIGHTS RESERVED


V<9>isit www<1>.a<9>ccellera<1>.o<9>rg and s<1>ee<9> what Sy<1>st<9>emC can <1>do<9> for you<1> today!<1>

何か動いているようだ。