25 |
BSVにおけるコマンドバッファ制御 (7) |
4. Makefile
次にMakefileのサンプルを提供します。
########################################
# 動作確認済み Makefile
########################################
BSC := bsc
SIMFLAGS := -sim
VLOG_FLAGS := -verilog
# -------- トップとソース ---------------------------------
TOP_MOD := mkTopDirect
TOP_SRC := TopDirect.bsv
SRCS := Producer4.bsv Consumer4.bsv OneStage.bsv $(TOP_SRC)
# -------- サブモジュール名(必要に応じて追加)------------
SUB_MODS := mkProducer4 mkConsumer4
SUB_SRCS := $(SUB_MODS:mk%=%).bsv # → Producer4.bsv Consumer4.bsv
# -------- 生成ファイル名 ---------------------------------
BA := $(TOP_MOD).ba
SIM_EXE := $(TOP_MOD).exe
V_EXE := $(TOP_MOD).vexe
RTL_DIR := rtl
BSIM_DIR := bsim
VOBJ_DIR := vobj
SUB_V := $(SUB_MODS:%=$(RTL_DIR)/%.v) # rtl/mkProducer4.v など
TOP_V := $(RTL_DIR)/$(basename $(TOP_SRC)).v # rtl/TopDirect.v
# -------- デフォルト ------------------------------------
.PHONY: all
all: $(SIM_EXE) $(V_EXE)
############################################################################
# Bluesim
############################################################################
$(BSIM_DIR)/%.ba : %.bsv
@mkdir -p $(BSIM_DIR)
$(BSC) $(SIMFLAGS) -bdir $(BSIM_DIR) -u -g $(basename $<) $<
$(BA): $(SRCS)
@mkdir -p $(BSIM_DIR)
$(BSC) $(SIMFLAGS) -bdir $(BSIM_DIR) -u -g $(TOP_MOD) $(TOP_SRC)
$(SIM_EXE): $(BA)
@mkdir -p $(BSIM_DIR)
cd $(BSIM_DIR) && \
$(BSC) $(SIMFLAGS) -bdir . -e $(TOP_MOD) -o ../$@
.PHONY: bsim
bsim: $(SIM_EXE)
./$(SIM_EXE) -V bsim.vcd
############################################################################
# Verilog RTL (サブ → トップ → exe)
############################################################################
# サブモジュール: rtl/mkX.v ← X.bsv
$(RTL_DIR)/mk%.v: %.bsv
@mkdir -p $(RTL_DIR) $(VOBJ_DIR)
$(BSC) $(VLOG_FLAGS) -bdir $(VOBJ_DIR) -g mk$* -vdir $(RTL_DIR) $<
# トップ RTL: rtl/TopDirect.v (サブ RTL に依存)
$(TOP_V): $(SUB_V) $(TOP_SRC)
$(BSC) $(VLOG_FLAGS) -bdir $(VOBJ_DIR) -u -g $(TOP_MOD) -vdir $(RTL_DIR) $(TOP_SRC)
# Verilog 実行ファイル
$(V_EXE): $(TOP_V)
$(BSC) $(VLOG_FLAGS) -bdir $(VOBJ_DIR) -vsearch $(RTL_DIR) -e $(TOP_MOD) -o $@
.PHONY: vsim
vsim: $(V_EXE)
./$(V_EXE) +bscvcd=vsim.vcd +bscdumpvars
############################################################################
# クリーン
############################################################################
.PHONY: clean
clean:
rm -f *.ba *.bo *.o *.exe *.vexe *.cxx *.h *.vcd core *~ *.so
rm -f $(SUB_V) $(TOP_V)
rm -rf $(RTL_DIR) $(BSIM_DIR) $(VOBJ_DIR)
Leave a Comment