.PHONY:com sim clean

OUTPUT = shin_test
CPU_COUNT := $(shell nproc)

VCS = vcs -sverilog +v2k -timescale=1ns/1ps   \
	-full64                                   \
	-o ${OUTPUT}                              \
	-l compile.log                            \
	-debug_access+none						  \
	+define+VCS_COMPILE						  \
	-fastpartcomp=j${CPU_COUNT}				  \

SIM = ./${OUTPUT} -l run.log

testShin_vcs:
	python3 ./shinTest/gen_pkt.py
	mkdir -p generated/log
	rm -rf generated/log/*
	@echo "Available CPUs: ${CPU_COUNT}"
	${VCS} -f ./shinTest_vcs.f
	${SIM}
	python3 ./shinTest/check_testcase.py


testShinClk_vcs:
	python3 ./shinTest/gen_pkt_clk.py --dev1 0 90 --dev2 0 -90
	mkdir -p generated/log
	rm -rf generated/log/*
	${VCS} -f ./shinTestClk_vcs.f
	${SIM}
	python3 ./shinTest/check_testcase.py
	mv spi_trans_data.txt generated/spi_trans_data1.txt
	mv generated/wave.vcd	generated/wave1.vcd
	\
	python3 ./shinTest/gen_pkt_clk.py --dev1 45 180 --dev3 70 -180 -8b10b
	mkdir -p generated/log
	rm -rf generated/log/*
	${VCS} -f ./shinTestClk_vcs.f
	${SIM}
	python3 ./shinTest/check_testcase.py
	mv spi_trans_data.txt generated/spi_trans_data2.txt
	mv generated/wave.vcd	generated/wave2.vcd
	\
	python3 ./shinTest/gen_pkt_clk.py --dev1 45 185 --dev3 25 -185 
	mkdir -p generated/log
	rm -rf generated/log/*
	${VCS} -f ./shinTestClk_vcs.f
	${SIM}
	python3 ./shinTest/check_testcase.py
	mv spi_trans_data.txt generated/spi_trans_data3.txt
	mv generated/wave.vcd	generated/wave3.vcd
	\
	python3 ./shinTest/gen_pkt_clk.py --dev1 60 186 --dev3 15 -186
	mkdir -p generated/log
	rm -rf generated/log/*
	${VCS} -f ./shinTestClk_vcs.f
	${SIM}
	python3 ./shinTest/check_testcase.py
	mv spi_trans_data.txt generated/spi_trans_data4.txt
	mv generated/wave.vcd	generated/wave4.vcd
	\
	python3 ./shinTest/gen_pkt_clk.py --dev1 80 187 --dev2 30 -187
	mkdir -p generated/log
	rm -rf generated/log/*
	${VCS} -f ./shinTestClk_vcs.f
	${SIM}
	python3 ./shinTest/check_testcase.py
	mv spi_trans_data.txt generated/spi_trans_data5.txt
	mv generated/wave.vcd	generated/wave5.vcd
	\
	python3 ./shinTest/gen_pkt_clk.py --dev1 70 188 --dev3 223 -188 -8b10b
	mkdir -p generated/log
	rm -rf generated/log/*
	${VCS} -f ./shinTestClk_vcs.f
	${SIM}
	python3 ./shinTest/check_testcase.py
	mv spi_trans_data.txt generated/spi_trans_data6.txt
	mv generated/wave.vcd	generated/wave6.vcd


testShinMany_vcs:
	python3 ./shinTest/gen_pkt_many_dev.py
	mkdir -p generated/log
	rm -rf generated/log/*
	@echo "Available CPUs: ${CPU_COUNT}"
	${VCS} -f ./shinTest_vcs.f
	${SIM}
	python3 ./shinTest/check_testcase.py

sim:
	${SIM}

testShin:
	./shinTest/gen_pkt.py
	mkdir -p generated/log
	rm -rf generated/log/*
	iverilog -Wall  \
	-o ./generated/shinTest.iverilog  \
	-y ./generated/shin \
	-I ./generated/shin \
	-D RANDOMIZE_REG_INIT \
	./shinTest/ShinTopSpiTb.v
	vvp  -N ./generated/shinTest.iverilog -lxt2  -fst || true
	./shinTest/check_testcase.py

testShinClk:
	./shinTest/gen_pkt_clk.py --dev1 0 200
	mkdir -p generated/log
	rm -rf generated/log/*
	iverilog -Wall  \
	-o ./generated/shinTest_clk.iverilog  \
	-y ./generated/shin \
	-I ./generated/shin \
	-D RANDOMIZE_REG_INIT \
	./shinTest/ShinTopSpiTb_clk.v
	vvp  -N ./generated/shinTest_clk.iverilog -lxt2 -fst|| true
	./shinTest/check_testcase.py

fstShin:
	gtkwave ./generated/wave.fst 1>/dev/null 2>&1 &

fstShinClk:
	gtkwave ./generated/wave_clk.fst 1>/dev/null 2>&1 &

clean:
	rm -rf ./generated/log/* ./generated/shin/*.vh ./generated/shinTest.* ./generated/wave*.* ./generated/spi_trans*.*
