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>
何か動いているようだ。