# Test benches for the Bresenham example
#
#   Stephen A. Edwards
#
# The C prototype uses the SDL libraries
#
#   sudo apt-get install -y libsdl-dev
#   make bresenham-sdl
#   ./bresenham-sdl
#
# The C++ testbench uses Verilator
#
#   sudo apt-get install -y verilator
#   make bresenham.vcd
#
# You can use gtkwave to view the resulting waveform
#
#   sudo apt-get install -y gtkwave
#   make bresenham.vcd
#   gtkwave bresenham.vcd bresenham.gtkw

TARFILES = Makefile lines.qpf lines.qsf lines.sdc \
	bresenham.sv hallway.sv SoCKit_Top.sv VGA_framebuffer.sv \
	bresenham.cpp bresenham.gtkw \
	bresenham-sdl.c

lines.tar.gz : $(TARFILES)
	mkdir lines
	ln $(TARFILES) lines
	tar zcf lines.tar.gz lines
	rm -rf lines

# Compile the C prototype

bresenham-sdl : bresenham-sdl.c
	cc -o bresenham-sdl -Wall bresenham-sdl.c -lSDL

# Run the Verilator simulation to generate a .vcd file, which can be viewed
# with gtkwave

bresenham.vcd : obj_dir/Vbresenham
	obj_dir/Vbresenham

# Compile the Verilator simulator

obj_dir/Vbresenham : bresenham.sv bresenham.cpp
	verilator -cc bresenham.sv -exe --trace bresenham.cpp
	cd obj_dir && make -j -f Vbresenham.mk

.PHONY : clean
clean :
	rm -rf *.vcd obj_dir db output_files hc_output incremental_db \
	simulation c5_pin_model_dump.txt bresenham-sdl
