Mac OS XでSystemCとSCV

機能検証

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を使った設計データのコンパイル&実行環境が出来上がります。

タイトルとURLをコピーしました