忍者ブログ

雑記

【Makefile】DPI-C覚書

雑記 > codeのメモ > 【Makefile】DPI-C覚書

DPI-C用に記載したMakefaile

vcsでDPI-Cを実施したときのMakefile。

vcsでのDPI-C立ち上げの参考にも。


最初にsimvの作成を行っているが、SystemVerilog側からC言語のタスクができていない状態なのでエラーが発生する。そのためIGNOREにsimvをいれている。simv作成時にエラーとなるが、simvは作成され、soファイルがされれば問題なくsimvが実行される。

#========================================= 
# COMMON options
#-----------------------------------------
TEST = sample
CC   = gcc

vpath %.cpp cpp cpp/common
vpath %.h   cpp/include
vpath %.o   dpi/obj
vpath %.so  dpi

#=========================================
# Options for normal function
#-----------------------------------------
CFLAGS  = \
	-m64

INCLUDE = \
	-I ./ \
	-I cpp/include

OBJ_DIR = dpi/obj
DPI_DIR = dpi

#=========================================
# .SUFFIXES .PHONY .IGNOEW
#-----------------------------------------
.SUFFIXES : .so .o .c
.PHONY    : clean clean_log vcs all
.IGNORE   : simv

#=========================================
# all
#-----------------------------------------
all : simv vcs

#=========================================
# simv
#-----------------------------------------
vcs : $(TEST).so
	./simv -sv_root ./$(DPI_DIR) -sv_lib $(TEST) -l log/$(TEST).log

#=========================================
# vcs : simvを作成
#-----------------------------------------
simv : test.sv
	vcs -full64 -Mupdate -R -sverilog $<

#=========================================
# gcc
#-----------------------------------------
SOURCES = $(wildcard cpp/$(TEST).cpp cpp/common/*.cpp)
OBJECTS = $(addprefix $(OBJ_DIR)/,$(notdir $(SOURCES:.cpp=.o))) 

$(OBJ_DIR)/$(TEST).o : cpp/$(TEST).cpp
	mkdir -p $(OBJ_DIR)
	$(CC) $(CFLAGS) -o $@ -c -g -fPIC -I${VCS_HOME}/include $(INCLUDE) $<

$(OBJ_DIR)/%.o : cpp/common/%.cpp
	mkdir -p $(OBJ_DIR)
	$(CC) $(CFLAGS) -o $@ -c -g -fPIC -I${VCS_HOME}/include $(INCLUDE) $<

$(TEST).so : $(OBJECTS)
	mkdir -p $(DPI_DIR)
	$(CC) $(CFLAGS) -o ./$(DPI_DIR)/$@ -shared $^

#=========================================
# clean
#-----------------------------------------
(略)

Makefile関連記事

コメント

カレンダー

12 2018/01 02
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31