Article #1008

既に発行済みのブログであっても適宜修正・追加することがあります。
We may make changes and additions to blogs already published.
posted by sakurai on August 25, 2025 #1008

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

Your email address will not be published.

You may use Markdown syntax. If you include an ad such as http://, it will be invalidated by our AI system.

Please enter the numbers as they are shown in the image above.