Mac OS XにSystemC 2.3.1とSCV 2.0.0をインストールして簡単なデザインをコンパイルした時のメモです。SystemCプロジェクトのコンパイルと実行は、OS XのTerminal上で行っています。
ダウンロード
Accelleraのサイトからダウンロードできます。
http://accellera.org/downloads/standards/systemc
次の2ファイルが必要です。
- systemc-2.3.1.tgz
- scv-2.0.0.tgz
インストール
SystemC
まずはじめに行うこと
App Storeを検索してXcodeをインストールします。 Xcodeインストールが正常に行われていないと、SystemCインストール時のconfigureで次のようなエラーが発生します。
checking for awk... awk checking whether make sets $(MAKE)... no checking how to create a pax tar archive... gnutar checking whether make supports nested variables... no checking for g++... g++ checking whether the C++ compiler works... no configure: error: in `/Users/admin/systmp/systemc-2.3.1/objdir': configure: error: C++ compiler cannot create executables See `config.log' for more details
SystemCのインストールは簡単です。基本的にconfigureとmakeを行うだけです。具体的には、Terminalを開いて次の手順を実行するだけです。この例では/usr/local/systemc-2.3.1にインストールを行っています。その場合、あらかじめ/usr/local/systemc-2.3.1を作っておくのがポイントです。
tar xvzf systemc-2.3.1.tgz cd systemc-2.3.1 mkdir objdir sudo make /usr/local/systemc-2.3.1 cd objdir ../configure --prefix=/usr/local/systemc-2.3.1 make make check sudo make install
SCV
SCVはSystemCを使った検証ライブラリです。インストールの手順はSystemCと同様です。
tar xvzf scv-2.0.0.tgz cd scv-2.0.0 mkdir objdir cd objdir ../configure --with-systemc=/usr/local/systemc-2.3.1 make sudo make install make check
設計プロジェクトのコンパイル
SystemCに付属のサンプルを使って、オリジナルの設計プロジェクトを作成する場合の雛形を作成します。Makefileをどう書くかがポイントです。
SystemC
simple_busというサンプルを雛形にします。サンプルは、SystemCのインストールディレクトリに格納されています。まず、適当なディレクトリにsimple_busをコピーします。次に、サンプルの一つ上のディレクトリからMakefile.configとMakefile.rulesをコピーします。
cp -r /usr/local/systemc-2.3.1/examples/sysc/simple_bus . cd simple_bus cp /usr/local/systemc-2.3.1/examples/sysc/Makefile.config . cp /usr/local/systemc-2.3.1/examples/sysc/Makefile.rules .
次にMakefile, Makefile.config, Makefile.rulesを修正します。
Makefileでは、Makefile.configとMakefile.rulesのincludeをカレントディレクトリに変更します。
include ./Makefile.config #include ../Makefile.config PROJECT := simple_bus SRCS := $(wildcard *.cpp) OBJS := $(SRCS:.cpp=.o) include ./Makefile.rules #include ../Makefile.rules
Makefile.configを修正してSYSTEMC_HOMEを絶対パスに変更します。 また、TARGET_ARCHをmacosx64に設定します。
## Variable that points to SystemC installation path #SYSTEMC_HOME?=../../.. SYSTEMC_HOME?=/usr/local/systemc-2.3.1 ## Select the target architecture #TARGET_ARCH = linux TARGET_ARCH = macosx64
Makefile.rulesのSYSTEMC_LDFLAGSからLDFLAG_RPATHを削除します。
#SYSTEMC_LDFLAGS ?= -L $(SYSTEMC_LIB_DIR) \ # $(LDFLAG_RPATH)$(SYSTEMC_LIB_DIR) SYSTEMC_LDFLAGS ?= -L $(SYSTEMC_LIB_DIR)
Makefileの修正が終わると、後はmakeして実行するだけです。
make ./simple_bus.x SystemC 2.3.1-Accellera --- Dec 2 2015 05:41:37 Copyright (c) 1996-2014 by all Contributors, ALL RIGHTS RESERVED 0 s top.master_d : mem[78:87] = (0, 0, 0, 0) 100 ns top.master_d : mem[78:87] = (b, c, d, e) 200 ns top.master_d : mem[78:87] = (b, c, d, e) 300 ns top.master_d : mem[78:87] = (b, c, d, e)
このディレクトリのソースコードを実際の設計データに差し替えれば、その設計データ用のコンパイル&実行環境になります。
SCV
SCVの場合も同様です。ここでは、constraintsというサンプルを雛形にしています。Makefileは、simple_busで作成したものを元にして修正を行います。
cp -r /usr/local/systemc-2.3.1/examples/scv/randomization/constraints . cd constraints cp ../simple_bus/Makefile . cp ../simple_bus/Makefile.config . cp ../simple_bus/Makefile.rules .
Makefile,Makefile.config, Makefile.rulesの修正を行います。
MakefileのPROJECTを修正します。ここで指定した名前で実行ファイルが生成されます。
#PROJECT := simple_bus PROJECT := constraints
Makefile.configのFLAGS_STRICTから-pedanticを削除します。これを行わないと、コンパイルでエラーが発生します。
#FLAGS_STRICT = -pedantic -Wno-long-long FLAGS_STRICT = -Wno-long-long
Makefile.rulesのSYSTEMC_LIBSに-lscvを追加します。
#SYSTEMC_LIBS ?= -lsystemc -lm SYSTEMC_LIBS ?= -lsystemc -lscv -lm
Makefileの修正が終わると、後はmakeして実行するだけです。
make ./constraints.x SystemC 2.3.1-Accellera --- Dec 2 2015 05:41:37 Copyright (c) 1996-2014 by all Contributors, ALL RIGHTS RESERVED Generate unconstrained packet data UNICAST 129 188 MULTICAST 201 16 UNICAST 3 188 MULTICAST 25 121 UNICAST 235 53 UNICAST 26 22
ソースコードを実際の設計データに差し替えれば、SCVを使った設計データのコンパイル&実行環境が出来上がります。