SIM ?= verilator TOPLEVEL_LANG ?= verilog TOPLEVEL := cam_top # MODULE ?= tests.test_cam_basic COCOTB_TEST_MODULES ?= tests.test_cam_basic NUM_ROWS ?= 512 HASH_BITS ?= 512 LANES ?= 16 # Noise parameters NOISE_EN ?= 1 NOISE_RATE_NUM ?= 1 NOISE_RATE_DEN ?= 100 NOISE_BITS ?= 8 # NOISE_SEED cannot be overridden via Makefile due to Verilator -G quoting issues # with 64'h hex literals. To change the seed, edit the default in cam_top.sv # (sim top is cam_top, which passes it to cam_noisy). EXTRA_ARGS += +define+NUM_ROWS=$(NUM_ROWS) +define+HASH_BITS=$(HASH_BITS) +define+LANES=$(LANES) COMPILE_ARGS += -Wall -Wno-fatal COMPILE_ARGS += -I$(PWD)/../rtl COMPILE_ARGS += +define+SIM_DEBUG COMPILE_ARGS += $(EXTRA_DEFINES) # Noise parameter overrides via Verilator -G COMPILE_ARGS += -GNOISE_EN=$(NOISE_EN) COMPILE_ARGS += -GNOISE_RATE_NUM=$(NOISE_RATE_NUM) COMPILE_ARGS += -GNOISE_RATE_DEN=$(NOISE_RATE_DEN) COMPILE_ARGS += -GNOISE_BITS=$(NOISE_BITS) # Cleaner terminal output export QUIET ?= 1 export VERBOSE ?= 0 export COCOTB_LOG_LEVEL ?= INFO export PYTHONWARNINGS ?= ignore::pytest.PytestDeprecationWarning # Optional temporary suppression SUPPRESS_VERILATOR_WARNINGS ?= 0 ifeq ($(SUPPRESS_VERILATOR_WARNINGS),1) COMPILE_ARGS += -Wno-WIDTHEXPAND COMPILE_ARGS += -Wno-UNOPTFLAT endif VERILOG_SOURCES += $(PWD)/../rtl/popcount.sv VERILOG_SOURCES += $(PWD)/../rtl/argmax_update.sv VERILOG_SOURCES += $(PWD)/../rtl/cam_core.sv VERILOG_SOURCES += $(PWD)/../rtl/random/random128.sv VERILOG_SOURCES += $(PWD)/../rtl/cam_noisy.sv VERILOG_SOURCES += $(PWD)/../rtl/match_engine.sv VERILOG_SOURCES += $(PWD)/../rtl/cam_top.sv include $(shell uv run cocotb-config --makefiles)/Makefile.sim