build(simulation): improve verilator simulation infrastructure

- Add verilator to dependencies
- Add configurable logging via QUIET/VERBOSE/COCOTB_LOG_LEVEL env vars
- Add optional warning suppression (SUPPRESS_VERILATOR_WARNINGS)
- Clean up and restructure Makefile
This commit is contained in:
2026-05-03 15:30:29 +08:00
parent 7450505a86
commit 8b8e4d3118
5 changed files with 39 additions and 23 deletions

6
.editorconfig Normal file
View File

@@ -0,0 +1,6 @@
root = true
[*]
end_of_line = lf
insert_final_newline = true
charset = utf-8

1
.gitignore vendored
View File

@@ -136,6 +136,7 @@ celerybeat.pid
# Environments # Environments
.env .env
.env.remote
.venv .venv
env/ env/
venv/ venv/

View File

@@ -1,12 +1,15 @@
.jj/ .jj
.git/ .git
.devenv/ .devenv
.direnv/ .direnv
deps/ deps
outputs/ outputs
data/versioned_data/ data/versioned_data
datasets/ datasets
.ruff_cache/ .ruff_cache
.pytest_cache/ .pytest_cache
.sisyphus/ .sisyphus
.logs/ .logs
.opencode
.venv
**/__pycache__

View File

@@ -16,5 +16,6 @@ dependencies:
- pytorch-cuda=12.1 - pytorch-cuda=12.1
# Toolsets # Toolsets
- uv - uv
- verilator
- just - just
- nodejs>=20.0.0 - nodejs>=20.0.0

View File

@@ -1,14 +1,9 @@
# Minimal cocotb Makefile.
# Examples:
# make TESTCASE=basic_write_query_no_noise
# make TESTCASE=external_noise_mask EXTRA_DEFINES="+define+SIM_NOISE +define+SIM_DEBUG"
#
# Verilator is preferred. Icarus may not support all SystemVerilog constructs used here.
SIM ?= verilator SIM ?= verilator
TOPLEVEL_LANG ?= verilog TOPLEVEL_LANG ?= verilog
TOPLEVEL := cam_top TOPLEVEL := cam_top
MODULE ?= tests.test_cam_basic
# MODULE ?= tests.test_cam_basic
COCOTB_TEST_MODULES ?= tests.test_cam_basic
NUM_ROWS ?= 512 NUM_ROWS ?= 512
HASH_BITS ?= 512 HASH_BITS ?= 512
@@ -16,16 +11,26 @@ LANES ?= 16
EXTRA_ARGS += +define+NUM_ROWS=$(NUM_ROWS) +define+HASH_BITS=$(HASH_BITS) +define+LANES=$(LANES) EXTRA_ARGS += +define+NUM_ROWS=$(NUM_ROWS) +define+HASH_BITS=$(HASH_BITS) +define+LANES=$(LANES)
# cocotb passes PLUSARGS/EXTRA_ARGS differently across simulators. Keep
# SystemVerilog parameters explicit through COMPILE_ARGS for Verilator.
COMPILE_ARGS += -Wall -Wno-fatal COMPILE_ARGS += -Wall -Wno-fatal
COMPILE_ARGS += -I$(PWD)/../rtl COMPILE_ARGS += -I$(PWD)/../rtl
COMPILE_ARGS += +define+SIM_DEBUG COMPILE_ARGS += +define+SIM_DEBUG
COMPILE_ARGS += $(EXTRA_DEFINES) COMPILE_ARGS += $(EXTRA_DEFINES)
# 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/popcount.sv
VERILOG_SOURCES += $(PWD)/../rtl/argmax_update.sv VERILOG_SOURCES += $(PWD)/../rtl/argmax_update.sv
VERILOG_SOURCES += $(PWD)/../rtl/cam_core.sv VERILOG_SOURCES += $(PWD)/../rtl/cam_core.sv
VERILOG_SOURCES += $(PWD)/../rtl/match_engine.sv VERILOG_SOURCES += $(PWD)/../rtl/match_engine.sv
VERILOG_SOURCES += $(PWD)/../rtl/cam_top.sv VERILOG_SOURCES += $(PWD)/../rtl/cam_top.sv