mirror of
				https://github.com/openhwgroup/cvw
				synced 2025-02-11 06:05:49 +00:00 
			
		
		
		
	Run verilator configurations and testsuites in different folders.
This commit is contained in:
		
							parent
							
								
									f94aab2d0d
								
							
						
					
					
						commit
						c383bef1ad
					
				@ -3,8 +3,7 @@
 | 
				
			|||||||
OPT=
 | 
					OPT=
 | 
				
			||||||
PARAMS?=-DVERILATOR=1 --no-trace-top
 | 
					PARAMS?=-DVERILATOR=1 --no-trace-top
 | 
				
			||||||
NONPROF?=--stats
 | 
					NONPROF?=--stats
 | 
				
			||||||
WORKING_DIR=${WALLY}/sim/verilator
 | 
					VERILATOR_DIR=${WALLY}/sim/verilator
 | 
				
			||||||
TARGET=$(WORKING_DIR)/target
 | 
					 | 
				
			||||||
SOURCE=${WALLY}/config/shared/*.vh ${WALLY}/config/${WALLYCONF} ${WALLY}/src/cvw.sv ${WALLY}/testbench/testbench.sv ${WALLY}/testbench/common/*.sv ${WALLY}/src/*/*.sv ${WALLY}/src/*/*/*.sv
 | 
					SOURCE=${WALLY}/config/shared/*.vh ${WALLY}/config/${WALLYCONF} ${WALLY}/src/cvw.sv ${WALLY}/testbench/testbench.sv ${WALLY}/testbench/common/*.sv ${WALLY}/src/*/*.sv ${WALLY}/src/*/*/*.sv
 | 
				
			||||||
 | 
					
 | 
				
			||||||
WALLYCONF?=rv64gc
 | 
					WALLYCONF?=rv64gc
 | 
				
			||||||
@ -13,42 +12,41 @@ TEST?=arch64i
 | 
				
			|||||||
default: run
 | 
					default: run
 | 
				
			||||||
 | 
					
 | 
				
			||||||
profile: obj_dir_profiling/Vtestbench_$(WALLYCONF)
 | 
					profile: obj_dir_profiling/Vtestbench_$(WALLYCONF)
 | 
				
			||||||
	$(WORKING_DIR)/obj_dir_profiling/Vtestbench_$(WALLYCONF) +TEST=$(TEST) 
 | 
						$(VERILATOR_DIR)/obj_dir_profiling/Vtestbench_$(WALLYCONF) +TEST=$(TEST) 
 | 
				
			||||||
	mv gmon.out gmon_$(WALLYCONF).out
 | 
						mv gmon.out gmon_$(WALLYCONF).out
 | 
				
			||||||
	gprof $(WORKING_DIR)/obj_dir_profiling/Vtestbench_$(WALLYCONF) gmon_$(WALLYCONF).out > gmon_$(WALLYCONF).log
 | 
						gprof $(VERILATOR_DIR)/obj_dir_profiling/Vtestbench_$(WALLYCONF) gmon_$(WALLYCONF).out > gmon_$(WALLYCONF).log
 | 
				
			||||||
	verilator_profcfunc gmon_$(WALLYCONF).log > gmon_$(WALLYCONF).log2
 | 
						verilator_profcfunc gmon_$(WALLYCONF).log > gmon_$(WALLYCONF).log2
 | 
				
			||||||
	mkdir -p $(WORKING_DIR)/logs_profiling
 | 
						mkdir -p $(VERILATOR_DIR)/logs_profiling
 | 
				
			||||||
	mv gmon_$(WALLYCONF)* $(WORKING_DIR)/logs_profiling
 | 
						mv gmon_$(WALLYCONF)* $(VERILATOR_DIR)/logs_profiling
 | 
				
			||||||
	echo "Please check $(WORKING_DIR)/logs_profiling/gmon_$(WALLYCONF)* for logs and output files."
 | 
						echo "Please check $(VERILATOR_DIR)/logs_profiling/gmon_$(WALLYCONF)* for logs and output files."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
run: obj_dir_non_profiling/Vtestbench_$(WALLYCONF)
 | 
					run: wkdir/$(WALLYCONF)_$(TEST)/Vtestbench
 | 
				
			||||||
	mkdir -p $(WORKING_DIR)/logs
 | 
						mkdir -p $(VERILATOR_DIR)/logs
 | 
				
			||||||
	time $(WORKING_DIR)/obj_dir_non_profiling/Vtestbench_$(WALLYCONF) +TEST=$(TEST) 2>&1 > $(WORKING_DIR)/logs/$(WALLYCONF)_$(TEST).log
 | 
						wkdir/$(WALLYCONF)_$(TEST)/Vtestbench +TEST=$(TEST) 2>&1 > $(VERILATOR_DIR)/logs/$(WALLYCONF)_$(TEST).log
 | 
				
			||||||
	echo "Please check $(WORKING_DIR)/logs/$(WALLYCONF)_$(TEST).log for logs and output files."
 | 
						echo "Please check $(VERILATOR_DIR)/logs/$(WALLYCONF)_$(TEST).log for logs and output files."
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
obj_dir_non_profiling/Vtestbench_$(WALLYCONF): $(SOURCE)
 | 
					wkdir/$(WALLYCONF)_$(TEST)/Vtestbench: $(SOURCE)
 | 
				
			||||||
	mkdir -p obj_dir_non_profiling
 | 
						verilator \
 | 
				
			||||||
	time verilator \
 | 
						--Mdir wkdir/$(WALLYCONF)_$(TEST) -o Vtestbench \
 | 
				
			||||||
	--Mdir obj_dir_non_profiling -o Vtestbench_$(WALLYCONF) \
 | 
						--binary \
 | 
				
			||||||
	-cc --binary \
 | 
					 | 
				
			||||||
	$(OPT) $(PARAMS) $(NONPROF) \
 | 
						$(OPT) $(PARAMS) $(NONPROF) \
 | 
				
			||||||
	--timescale "1ns/1ns" --timing --top-module testbench  --relative-includes \
 | 
						--timescale "1ns/1ns" --timing --top-module testbench  --relative-includes \
 | 
				
			||||||
	"-I${WALLY}/config/shared" "-I${WALLY}/config/$(WALLYCONF)" \
 | 
						"-I${WALLY}/config/shared" "-I${WALLY}/config/$(WALLYCONF)" \
 | 
				
			||||||
	wrapper.c \
 | 
						${WALLY}/sim/verilator/wrapper.c \
 | 
				
			||||||
	${WALLY}/src/cvw.sv ${WALLY}/testbench/testbench.sv ${WALLY}/testbench/common/*.sv ${WALLY}/src/*/*.sv ${WALLY}/src/*/*/*.sv
 | 
						${WALLY}/src/cvw.sv ${WALLY}/testbench/testbench.sv ${WALLY}/testbench/common/*.sv ${WALLY}/src/*/*.sv ${WALLY}/src/*/*/*.sv
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
obj_dir_profiling/Vtestbench_$(WALLYCONF): $(SOURCE)
 | 
					obj_dir_profiling/Vtestbench_$(WALLYCONF): $(SOURCE)
 | 
				
			||||||
	mkdir -p obj_dir_profiling
 | 
						mkdir -p obj_dir_profiling
 | 
				
			||||||
	time verilator \
 | 
						verilator \
 | 
				
			||||||
	--Mdir obj_dir_profiling -o Vtestbench_$(WALLYCONF) \
 | 
						--Mdir obj_dir_profiling -o Vtestbench_$(WALLYCONF) \
 | 
				
			||||||
	-cc --binary \
 | 
						--binary \
 | 
				
			||||||
	--prof-cfuncs $(OPT) $(PARAMS) \
 | 
						--prof-cfuncs $(OPT) $(PARAMS) \
 | 
				
			||||||
	--timescale "1ns/1ns" --timing --top-module testbench  --relative-includes \
 | 
						--timescale "1ns/1ns" --timing --top-module testbench  --relative-includes \
 | 
				
			||||||
	wrapper.c \
 | 
						wrapper.c \
 | 
				
			||||||
	"-I${WALLY}/config/shared" "-I${WALLY}/config/$(WALLYCONF)" ${WALLY}/src/cvw.sv ${WALLY}/testbench/testbench.sv ${WALLY}/testbench/common/*.sv ${WALLY}/src/*/*.sv ${WALLY}/src/*/*/*.sv
 | 
						"-I${WALLY}/config/shared" "-I${WALLY}/config/$(WALLYCONF)" ${WALLY}/src/cvw.sv ${WALLY}/testbench/testbench.sv ${WALLY}/testbench/common/*.sv ${WALLY}/src/*/*.sv ${WALLY}/src/*/*/*.sv
 | 
				
			||||||
 | 
					
 | 
				
			||||||
questa:
 | 
					questa:
 | 
				
			||||||
	time vsim -c -do "do ${WALLY}/sim/wally-batch.do $(WALLYCONF) $(TEST)"
 | 
						vsim -c -do "do ${WALLY}/sim/wally-batch.do $(WALLYCONF) $(TEST)"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
clean:
 | 
					clean:
 | 
				
			||||||
	rm -rf $(WORKING_DIR)/obj_dir_non_profiling $(WORKING_DIR)/obj_dir_profiling $(WORKING_DIR)/logs $(WORKING_DIR)/logs_profiling
 | 
						rm -rf $(VERILATOR_DIR)/wkdir $(VERILATOR_DIR)/obj_dir_profiling $(VERILATOR_DIR)/logs $(VERILATOR_DIR)/logs_profiling
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user