xiiregexbuilder

FPGA-Accelerated Regular Expression Matching Engine
commit ab3a8165709ec9a9b3bbc77346401619672d8c06
parent c622612af22a288f67797d3efd77db0bd1594dc5
Author: Achuthan TM <achuthantm05@gmail.com>
Date:   Sun, 12 Apr 2026 22:36:25 +0530

Week 5: System-level integration and top level FPGA logic (Part 1: Initial definitions)

Diffstat:
MMakefile | 44+++++++++++++++++++++++++++++++++++++++-----
1 file changed, 39 insertions(+), 5 deletions(-)

diff --git a/Makefile b/Makefile @@ -41,7 +41,10 @@ XSIM = xsim SIM_TOP = tb_top SNAPSHOT = regex_sim -all: $(TARGET) $(GOLDEN) +# Processor variables +PROC_BUILD_DIR = processor/build +PROC_SRC_DIR = processor +PROC_PY_DIR = processor/src $(TARGET): $(OBJS) | $(BUILD_DIR) $(CC) $(CFLAGS) -o $(TARGET) $(OBJS) @@ -55,19 +58,23 @@ $(GOLDEN): $(GOLDEN_OBJS) | $(BUILD_DIR) $(BUILD_DIR): $(call MKDIR,$(BUILD_DIR)) +$(PROC_BUILD_DIR): + $(call MKDIR,$(PROC_BUILD_DIR)) + $(OUTPUT_DIR): $(call MKDIR,$(OUTPUT_DIR)) %.o: %.cpp $(CC) $(CFLAGS) -c $< -o $@ +all: $(TARGET) $(GOLDEN) + run: all | $(OUTPUT_DIR) $(TARGET) $(INPUT_DIR)/regexes.txt $(INPUT_DIR)/test_strings.txt $(OUTPUT_DIR) test: $(TESTER) $(TESTER) $(INPUT_DIR)/regexes.txt $(INPUT_DIR)/test_strings.txt - golden: $(GOLDEN) | $(OUTPUT_DIR) $(GOLDEN) $(INPUT_DIR)/regexes.txt $(INPUT_DIR)/test_strings.txt $(OUTPUT_DIR)/expected_matches.txt @@ -80,21 +87,48 @@ sim: run $(XSIM) $(SNAPSHOT) -R # FPGA Targets +BITSTREAM ?= build/top_fpga.bit + synth: run @echo "Launching Vivado Synthesis Flow..." $(VIVADO_PATH) -mode batch -source $(call FIX_PATH,scripts/synth.tcl) program: - @echo "Launching Vivado Programming Flow..." - $(VIVADO_PATH) -mode batch -source $(call FIX_PATH,scripts/program.tcl) + @echo "Launching Vivado Programming Flow for $(BITSTREAM)..." + $(VIVADO_PATH) -mode batch -source $(call FIX_PATH,scripts/program.tcl) -tclargs $(BITSTREAM) + +# Processor Targets +proc_asm: | $(PROC_BUILD_DIR) + python $(PROC_PY_DIR)/compile_regex.py $(PROC_SRC_DIR)/regex.txt $(PROC_BUILD_DIR)/regexes.rasm + python $(PROC_PY_DIR)/asm.py $(PROC_BUILD_DIR)/regexes.rasm $(PROC_BUILD_DIR)/imem.hex + +proc_sim: proc_asm + @echo "1. Compiling Verilog files for Processor..." + $(XVLOG) -work work $(PROC_SRC_DIR)/regex_cpu.v $(PROC_SRC_DIR)/tb_regex_cpu.v + @echo "2. Elaborating design..." + $(XELAB) -top tb_regex_cpu -snapshot cpu_sim -debug typical + @echo "3. Running simulation..." + $(XSIM) cpu_sim -R + +proc_update_regex: | $(PROC_BUILD_DIR) + python $(PROC_PY_DIR)/compile_regex.py $(PROC_SRC_DIR)/regex.txt $(PROC_BUILD_DIR)/regexes.rasm + python $(PROC_PY_DIR)/asm.py $(PROC_BUILD_DIR)/regexes.rasm $(PROC_BUILD_DIR)/imem.hex + python $(PROC_PY_DIR)/prog_fpga.py $(PROC_BUILD_DIR)/imem.hex + +proc_synth: proc_asm | $(PROC_BUILD_DIR) + @echo "Launching Vivado Synthesis Flow for Processor..." + $(VIVADO_PATH) -mode batch -source $(call FIX_PATH,scripts/synth_proc.tcl) +proc_program: + $(MAKE) program BITSTREAM=$(PROC_BUILD_DIR)/top_fpga.bit clean: -$(RM) $(call FIX_PATH,src/*.o) -$(RMDIR) $(call FIX_PATH,$(BUILD_DIR)) -$(RMDIR) $(call FIX_PATH,$(OUTPUT_DIR)) + -$(RMDIR) $(call FIX_PATH,processor/build) -$(RM) *.bit *.log *.jou *.pb *.wdb *.str usage_statistics_webtalk.* -$(RM) clockInfo.txt dfx_runtime.txt -$(RMDIR) xsim.dir .Xil -.PHONY: all run test golden clean +.PHONY: all run test golden synth program proc_asm proc_sim proc_update_regex proc_synth proc_program clean