#
# Kiwi Scientific Acceleration
# (C) 2014-17 DJ Greaves - University of Cambridge, Computer Laboratory
#
# Zynq Ksubs3
#

CSC     ?=gmcs


KDISTRO        ?=$(HPRLS)/kiwipro/kiwic/distro
KIWIDLL        ?=$(KDISTRO)/support/Kiwi.dll
CVTECH1        ?=$(KDISTRO)/lib/hpr_ipblocks/cvip0/cvgates.v
CVTECH2        ?=$(KDISTRO)/lib/hpr_ipblocks/cvip0/cv_fparith.v



# The C# design name : change this from ksubs_demo to your own name
ANAME=primes_offchip
# ANAME=lu-decomp-sp

VIVADO_OLD=/usr/groups/ecad/xilinx/vivado_sdk_installed/Vivado/2015.1
VIVADO=/usr/groups/ecad/xilinx/Vivado2017/Vivado/2016.4

#   $ export XILINXD_LICENSE_FILE=27020@lmserv-xilinx

KIWIC_FLAGS= \
	-vnl-resets=synchronous \
	-kiwic-finish=disable \
	-vnl-roundtrip=disable \
	-kiwic-register-colours=1 \
	-bevelab-default-pause-mode=bblock \


all: fpga

fpga:$(ANAME).v
	echo "THIS FOLDER CONTAINS A ROUGH GUIDING DESIGN FOR ZYNQ"
	echo "FOR ACS P35, TO GET STARTED, YOU SHOULD FIRST REMOVE THE KIWI/HLS GENERATED DESIGN AND INSERT A SIMPLE MANUAL RTL-LEVEL DESIGN OF YOUR OWN SUCH AS PERIPHERAL_DEVICE"
	$(VIVADO)/bin/vivado -source ksubs3.tcl -mode batch 
	ls -l /tmp/ksubs3-fpga
	md5sum /tmp/ksubs3-fpga/topfpga.bit
	cp /tmp/ksubs3-fpga/topfpga.bit ~/Dropbox


# HLS: Inkove the C# compiler and then the Kiwi compiler.
$(ANAME).v: csharp/$(ANAME).cs csharp/Ksubs3_Director.dll
	$(CSC) -r:$(KIWIDLL) csharp/$(ANAME).cs 
	$(KIWIC) csharp/$(ANAME).exe -res2-loadstore-port-count=0 -vnl=$(ANAME).v -vnl-rootmodname=DUT csharp/Ksubs3_Director.dll $(KIWIC_FLAGS)

csharp/Ksubs3_Director.dll:csharp/Ksubs3_Director.cs
	$(CSC) -r:$(KIWIDLL) /target:library csharp/Ksubs3_Director.cs

zip:
	zip $(ANAME).zip *.v chsharp/*.cs *.cs *.tcl Makefile *.xdc Makefile
	zip -r $(ANAME).zip xilinx_ip

# These two libraries are needed for Kiwi-generated HLS RTL only
X1        =../shared/X1.v

# Here we invoke Icarus verilog but you may prefer to use modelsim if you prefer.
isim:
	iverilog simsys.v $(ANAME).v $(CVTECH1) $(CVTECH2) $(X1) \
	ksubs3.v
	./a.out
	mv vcd.vcd ~/Dropbox


monorun:
	MONO_PATH=$(HPRLS)/kiwipro/kiwic/distro/support mono $(ANAME).exe


# eof


