82 lines
2.8 KiB
Makefile
82 lines
2.8 KiB
Makefile
|
|
TOPLEVEL_LANG = verilog
|
|
SIM ?= verilator
|
|
|
|
PWD := $(shell pwd)
|
|
PROJECT_ROOT ?= $(abspath $(PWD)/../../..)
|
|
|
|
AXI_IF_RTL_DIR ?= $(PROJECT_ROOT)/axi/rtl
|
|
FORENCICH_AXI_RTL_DIR ?= $(PROJECT_ROOT)/external/verilog-axi/rtl
|
|
TB_DIR ?= $(PWD)
|
|
|
|
TOPLEVEL = tb_axi_dma_wrapper
|
|
MODULE = test_axi_dma_wrapper
|
|
|
|
export PYTHONPATH := $(TB_DIR):$(PYTHONPATH)
|
|
|
|
# Parameters for a quick make-based run. The pytest entrypoint can be used for
|
|
# wider parameter sweeps.
|
|
AXI_DATA_WIDTH ?= 32
|
|
AXI_ADDR_WIDTH ?= 16
|
|
AXI_ID_WIDTH ?= 8
|
|
AXI_USER_WIDTH ?= 1
|
|
AXI_MAX_BURST_LEN ?= 16
|
|
ENABLE_UNALIGNED ?= 0
|
|
|
|
AXI_STRB_WIDTH := $(shell expr $(AXI_DATA_WIDTH) / 8)
|
|
AXIS_DATA_WIDTH ?= $(AXI_DATA_WIDTH)
|
|
AXIS_KEEP_WIDTH := $(shell expr $(AXIS_DATA_WIDTH) / 8)
|
|
AXIS_KEEP_ENABLE := $(shell [ $(AXIS_DATA_WIDTH) -gt 8 ] && echo 1 || echo 0)
|
|
|
|
VERILOG_SOURCES += $(AXI_IF_RTL_DIR)/axi_pkg.sv
|
|
VERILOG_SOURCES += $(AXI_IF_RTL_DIR)/axi_if.sv
|
|
VERILOG_SOURCES += $(AXI_IF_RTL_DIR)/axis_if.sv
|
|
VERILOG_SOURCES += $(AXI_IF_RTL_DIR)/axi4_flat_to_if.sv
|
|
VERILOG_SOURCES += $(AXI_IF_RTL_DIR)/axi4_if_to_flat.sv
|
|
VERILOG_SOURCES += $(AXI_IF_RTL_DIR)/axis_flat_to_if.sv
|
|
VERILOG_SOURCES += $(AXI_IF_RTL_DIR)/axis_if_to_flat.sv
|
|
|
|
VERILOG_SOURCES += $(FORENCICH_AXI_RTL_DIR)/axi_dma.v
|
|
VERILOG_SOURCES += $(FORENCICH_AXI_RTL_DIR)/axi_dma_rd.v
|
|
VERILOG_SOURCES += $(FORENCICH_AXI_RTL_DIR)/axi_dma_wr.v
|
|
|
|
VERILOG_SOURCES += $(AXI_IF_RTL_DIR)/forencich_axi_dma_wrapper.sv
|
|
VERILOG_SOURCES += $(TB_DIR)/tb_axi_dma_wrapper.sv
|
|
|
|
COMPILE_ARGS += -I$(AXI_IF_RTL_DIR)
|
|
COMPILE_ARGS += -I$(WRAPPER_RTL_DIR)
|
|
COMPILE_ARGS += -I$(FORENCICH_AXI_RTL_DIR)
|
|
|
|
# took this from forencich to silence 100+ warnings
|
|
COMPILE_ARGS += -Wno-SELRANGE -Wno-WIDTH -Wno-CASEINCOMPLETE
|
|
|
|
ifeq ($(SIM),verilator)
|
|
EXTRA_ARGS += --trace
|
|
EXTRA_ARGS += --trace-structs
|
|
EXTRA_ARGS += -GAXI_DATA_WIDTH=$(AXI_DATA_WIDTH)
|
|
EXTRA_ARGS += -GAXI_ADDR_WIDTH=$(AXI_ADDR_WIDTH)
|
|
EXTRA_ARGS += -GAXI_STRB_WIDTH=$(AXI_STRB_WIDTH)
|
|
EXTRA_ARGS += -GAXI_ID_WIDTH=$(AXI_ID_WIDTH)
|
|
EXTRA_ARGS += -GAXI_USER_WIDTH=$(AXI_USER_WIDTH)
|
|
EXTRA_ARGS += -GAXI_MAX_BURST_LEN=$(AXI_MAX_BURST_LEN)
|
|
EXTRA_ARGS += -GAXIS_DATA_WIDTH=$(AXIS_DATA_WIDTH)
|
|
EXTRA_ARGS += -GAXIS_KEEP_ENABLE=$(AXIS_KEEP_ENABLE)
|
|
EXTRA_ARGS += -GAXIS_KEEP_WIDTH=$(AXIS_KEEP_WIDTH)
|
|
EXTRA_ARGS += -GAXIS_LAST_ENABLE=1
|
|
EXTRA_ARGS += -GAXIS_ID_ENABLE=1
|
|
EXTRA_ARGS += -GAXIS_ID_WIDTH=8
|
|
EXTRA_ARGS += -GAXIS_DEST_ENABLE=0
|
|
EXTRA_ARGS += -GAXIS_DEST_WIDTH=8
|
|
EXTRA_ARGS += -GAXIS_USER_ENABLE=1
|
|
EXTRA_ARGS += -GAXIS_USER_WIDTH=1
|
|
EXTRA_ARGS += -GLEN_WIDTH=20
|
|
EXTRA_ARGS += -GTAG_WIDTH=8
|
|
EXTRA_ARGS += -GENABLE_SG=0
|
|
EXTRA_ARGS += -GENABLE_UNALIGNED=$(ENABLE_UNALIGNED)
|
|
endif
|
|
|
|
export PARAM_AXI_DATA_WIDTH=$(AXI_DATA_WIDTH)
|
|
export PARAM_ENABLE_UNALIGNED=$(ENABLE_UNALIGNED)
|
|
|
|
include $(shell cocotb-config --makefiles)/Makefile.sim
|