blob: 39d42b428547979d22ac7f898eee29ed57bb12b1 [file] [log] [blame]
PWDD := $(shell pwd)
BLOCKS := $(shell basename $(PWDD))
# ---- Include Partitioned Makefiles ----
CONFIG = caravel_user_project
export COCOTB_REDUCED_LOG_FMT=1
export LIBPYTHON_LOC=$(shell cocotb-config --libpython)
include $(MCW_ROOT)/verilog/dv/make/env.makefile
include $(MCW_ROOT)/verilog/dv/make/var.makefile
include $(MCW_ROOT)/verilog/dv/make/cpu.makefile
include $(MCW_ROOT)/verilog/dv/make/sim.makefile
# Changed this values from the ones from the .makefiles because the name of the root caravel_user_project folder was different (caravel_hack_soc)
VERILOG_PATH = $(MCW_ROOT)/verilog
USER_PROJECT_VERILOG = $(MCW_ROOT)/../verilog
coco_test: wrapped_hack_soc_test.hex
rm -rf sim_build/
mkdir sim_build/
iverilog -Ttyp -DFUNCTIONAL -DSIM -DUSE_POWER_PINS -DUNIT_DELAY=#1 \
-f$(VERILOG_PATH)/includes/includes.rtl.caravel \
-f$(USER_PROJECT_VERILOG)/includes/includes.rtl.$(CONFIG) -o sim_build/sim.vvp wrapped_hack_soc_test_tb.v
TESTCASE=test_all MODULE=wrapped_hack_soc_test vvp -M $$(cocotb-config --prefix)/cocotb/libs -m libcocotbvpi_icarus sim_build/sim.vvp
! grep failure results.xml
coco_test_gl: wrapped_hack_soc_test.hex
rm -rf sim_build/
mkdir sim_build/
iverilog -Ttyp -DFUNCTIONAL -DSIM -DUSE_POWER_PINS -DUNIT_DELAY=#1 \
-f$(VERILOG_PATH)/includes/includes.rtl.caravel \
-f$(USER_PROJECT_VERILOG)/includes/includes.gl.$(CONFIG) -o sim_build/sim.vvp wrapped_hack_soc_test_tb.v
TESTCASE=test_all_gl MODULE=wrapped_hack_soc_test vvp -M $$(cocotb-config --prefix)/cocotb/libs -m libcocotbvpi_icarus sim_build/sim.vvp
! grep failure results.xml
##############################################################################
# Comiple firmeware
##############################################################################
%.elf: %.c $(LINKER_SCRIPT) $(SOURCE_FILES)
${GCC_PATH}/${GCC_PREFIX}-gcc -O3 -g \
-I$(FIRMWARE_PATH) \
-I$(VERILOG_PATH)/dv/generated \
-I$(VERILOG_PATH)/dv/ \
-I$(VERILOG_PATH)/common \
$(CPUFLAGS) \
-Wl,-Bstatic,-T,$(LINKER_SCRIPT),--strip-debug \
-ffreestanding -nostdlib -o $@ $(SOURCE_FILES) $<
%.lst: %.elf
${GCC_PATH}/${GCC_PREFIX}-objdump -d -S $< > $@
%.hex: %.elf
${GCC_PATH}/${GCC_PREFIX}-objcopy -O verilog $< $@
# to fix flash base address
sed -ie 's/@10/@00/g' $@
%.bin: %.elf
${GCC_PATH}/${GCC_PREFIX}-objcopy -O binary $< /dev/stdout | tail -c +1048577 > $@
# PATTERN = wrapped_hack_soc_test
# all: coco_test # ${PATTERN:=.vcd}
# hex: ${PATTERN:=.hex}
# coco_test: ${PATTERN}.hex
# rm -rf sim_build/
# mkdir sim_build/
# iverilog -Ttyp -DFUNCTIONAL -DSIM -DUSE_POWER_PINS -DUNIT_DELAY=#1 \
# -f$(VERILOG_PATH)/includes/includes.rtl.caravel \
# -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.$(CONFIG) -o sim_build/sim.vvp $(PATTERN)_tb.v
# TESTCASE=test_start,test_all MODULE=$(PATTERN) vvp -M $$(cocotb-config --prefix)/cocotb/libs -m libcocotbvpi_icarus sim_build/sim.vvp
# ! grep failure results.xml
# coco_test: ${PATTERN}.hex
# rm -rf sim_build/
# mkdir sim_build/
# iverilog -o sim_build/sim.vvp -s $(PATTERN)_tb $(PATTERN)_tb.v -DSIM -DFUNCTIONAL $(DUMP_TRACE) \
# -I $(PDK_PATH) \
# -I $(CARAVEL_BEHAVIOURAL_MODELS) -I $(CARAVEL_RTL_PATH) \
# -I $(UPRJ_BEHAVIOURAL_MODELS) -I $(UPRJ_RTL_PATH) \
# -I $(HACK_SOC_PATH)/src \
# MODULE=$(PATTERN) vvp -M $$(cocotb-config --prefix)/cocotb/libs -m libcocotbvpi_icarus sim_build/sim.vvp
# ! grep failure results.xml
# %.vvp: %_tb.v %.hex
# ifeq ($(SIM),RTL)
# iverilog -DFUNCTIONAL -DSIM -I $(PDK_PATH) \
# -I $(CARAVEL_BEHAVIOURAL_MODELS) -I $(CARAVEL_RTL_PATH) \
# -I $(UPRJ_BEHAVIOURAL_MODELS) -I $(UPRJ_RTL_PATH) \
# -I $(HACK_SOC_PATH)/src $(HACK_SOC_SOURCES) \
# $< -o $@
# ! grep failure results.xml
# else
# iverilog -DFUNCTIONAL -DSIM -DGL -I $(PDK_PATH) \
# -I $(CARAVEL_BEHAVIOURAL_MODELS) -I $(CARAVEL_RTL_PATH) -I $(CARAVEL_VERILOG_PATH) \
# -I $(UPRJ_BEHAVIOURAL_MODELS) -I$(UPRJ_RTL_PATH) -I $(UPRJ_VERILOG_PATH) \
# -I $(HACK_SOC_PATH)/src $(HACK_SOC_SOURCES) \
# $< -o $@
# ! grep failure results.xml
# endif
# %.vcd: %.vvp
# vvp $<
# %.elf: %.c caravel_test_hack_program.c $(CARAVEL_FIRMWARE_PATH)/sections.lds $(CARAVEL_FIRMWARE_PATH)/start.s
# ${GCC_PATH}/${GCC_PREFIX}-gcc -O3 -I $(CARAVEL_PATH) -march=rv32imc -mabi=ilp32 -Wl,-Bstatic,-T,$(CARAVEL_FIRMWARE_PATH)/sections.lds,--strip-debug -ffreestanding -nostdlib -o $@ $(CARAVEL_FIRMWARE_PATH)/start.s $<
# %.hex: %.elf
# ${GCC_PATH}/${GCC_PREFIX}-objcopy -O verilog $< $@
# # to fix flash base address
# sed -i 's/@10000000/@00000000/g' $@
# %.bin: %.elf
# ${GCC_PATH}/${GCC_PREFIX}-objcopy -O binary $< /dev/stdout | tail -c +1048577 > $@
# ---- Clean ----
# clean:
# rm -f *.elf *.hex *.bin *.vvp *.vcd *.log results.xml
# .PHONY: clean hex all
# ## Caravel Pointers
# CARAVEL_ROOT ?= ../../../caravel
# CARAVEL_PATH ?= $(CARAVEL_ROOT)
# CARAVEL_FIRMWARE_PATH = $(CARAVEL_PATH)/verilog/dv/caravel
# CARAVEL_VERILOG_PATH = $(CARAVEL_PATH)/verilog
# CARAVEL_RTL_PATH = $(CARAVEL_VERILOG_PATH)/rtl
# CARAVEL_BEHAVIOURAL_MODELS = $(CARAVEL_VERILOG_PATH)/dv/caravel
# ## User Project Pointers
# UPRJ_VERILOG_PATH ?= ../../../verilog
# UPRJ_RTL_PATH = $(UPRJ_VERILOG_PATH)/rtl
# UPRJ_BEHAVIOURAL_MODELS = ../
# WRAPPED_HACK_SOC_PATH = ../../rtl/wrapped_hack_soc
# HACK_SOC_PATH = $(WRAPPED_HACK_SOC_PATH)/hack_soc
# DUMP_TRACE =
# ## RISCV GCC
# GCC_PATH?=/ef/apps/bin
# GCC_PREFIX?=riscv32-unknown-elf
# PDK_PATH?=/ef/tech/SW/sky130A
# ## Simulation mode: RTL/GL
# SIM?=RTL
# # include the modules that cocotb needs for test
# export PYTHONPATH := $(UPRJ_RTL_PATH)/wrapped_frequency_counter/frequency_counter/test
# export COCOTB_REDUCED_LOG_FMT=1
# export LIBPYTHON_LOC=$(shell cocotb-config --libpython)
# .SUFFIXES:
# PATTERN = wrapped_hack_soc_test
# all: coco_test # ${PATTERN:=.vcd}
# hex: ${PATTERN:=.hex}
# coco_test_with_trace:
# make coco_test DUMP_TRACE=-DDUMP_TRACE
# coco_test: ${PATTERN}.hex
# rm -rf sim_build/
# mkdir sim_build/
# iverilog -o sim_build/sim.vvp -s $(PATTERN)_tb $(PATTERN)_tb.v -DSIM -DFUNCTIONAL $(DUMP_TRACE) \
# -I $(PDK_PATH) \
# -I $(CARAVEL_BEHAVIOURAL_MODELS) -I $(CARAVEL_RTL_PATH) \
# -I $(UPRJ_BEHAVIOURAL_MODELS) -I $(UPRJ_RTL_PATH) \
# -I $(HACK_SOC_PATH)/src \
# MODULE=$(PATTERN) vvp -M $$(cocotb-config --prefix)/cocotb/libs -m libcocotbvpi_icarus sim_build/sim.vvp
# ! grep failure results.xml
# %.vvp: %_tb.v %.hex
# ifeq ($(SIM),RTL)
# iverilog -DFUNCTIONAL -DSIM -I $(PDK_PATH) \
# -I $(CARAVEL_BEHAVIOURAL_MODELS) -I $(CARAVEL_RTL_PATH) \
# -I $(UPRJ_BEHAVIOURAL_MODELS) -I $(UPRJ_RTL_PATH) \
# -I $(HACK_SOC_PATH)/src $(HACK_SOC_SOURCES) \
# $< -o $@
# ! grep failure results.xml
# else
# iverilog -DFUNCTIONAL -DSIM -DGL -I $(PDK_PATH) \
# -I $(CARAVEL_BEHAVIOURAL_MODELS) -I $(CARAVEL_RTL_PATH) -I $(CARAVEL_VERILOG_PATH) \
# -I $(UPRJ_BEHAVIOURAL_MODELS) -I$(UPRJ_RTL_PATH) -I $(UPRJ_VERILOG_PATH) \
# -I $(HACK_SOC_PATH)/src $(HACK_SOC_SOURCES) \
# $< -o $@
# ! grep failure results.xml
# endif
# %.vcd: %.vvp
# vvp $<
# %.elf: %.c caravel_test_hack_program.c $(CARAVEL_FIRMWARE_PATH)/sections.lds $(CARAVEL_FIRMWARE_PATH)/start.s
# ${GCC_PATH}/${GCC_PREFIX}-gcc -O3 -I $(CARAVEL_PATH) -march=rv32imc -mabi=ilp32 -Wl,-Bstatic,-T,$(CARAVEL_FIRMWARE_PATH)/sections.lds,--strip-debug -ffreestanding -nostdlib -o $@ $(CARAVEL_FIRMWARE_PATH)/start.s $<
# %.hex: %.elf
# ${GCC_PATH}/${GCC_PREFIX}-objcopy -O verilog $< $@
# # to fix flash base address
# sed -i 's/@10000000/@00000000/g' $@
# %.bin: %.elf
# ${GCC_PATH}/${GCC_PREFIX}-objcopy -O binary $< /dev/stdout | tail -c +1048577 > $@
# # ---- Clean ----
# clean:
# rm -f *.elf *.hex *.bin *.vvp *.vcd *.log results.xml
# .PHONY: clean hex all