#
# Kiwi Scientific Acceleration - AesTransform
#
#

ANAME =AesTransform

CSC     ?=mcs
KLIB1   ?=${HPRLS}/kiwipro/kiwic/distro/support/Kiwi.dll
KIWIC   ?=${HPRLS}/kiwipro/kiwic/distro/bin/kiwic 	-report-each-step
CV1G    ?=${HPRLS}/kiwipro/kiwic/distro/lib/cvgates.v

all: $(ANAME).v     icarus
# $(ANAME).sysc.cpp  systemc

VIEWINGDEST=$(HOME)/Dropbox

tool:
	cd $(HPRLS)/kiwipro/kiwic/src ; make tool

killer:
	rm -f $(ANAME).v $(ANAME).sysc.cpp

KIWICFLAGS= -vnl-resets=synchronous \
	-obj-dir-name=. -log-dir-name=/tmp/kiwic_obj/$(ANAME) \
	-give-backtrace \
	-res2-loadstore-port-count=0 \
	-vnl-layout-delay-estimate=lcp \
	-res2-regfile-threshold=512 \
        -bevelab-default-pause-mode=soft \
        -bevelab-soft-pause-threshold=132 \
        -vnl-roundtrip=disable \
        -repack-to-roms=enable \
        -kiwic-register-colours=1 \
	-res2-share-array-reads=enable \
	-res2-regen-sequencer=enable  \
	-kiwic-kcode-dump=enable \
	-cgen2=enable

#         -kiwic-cil-dump=combined \
#	-res2-killpipelining=normal \
# -res2-loglevel=0 \
# -res2-combram-threshold=

# -kiwic-register-colours=1
# -diosim-tl=100 


AesTransformRef.dll:AesTransformRef.cs
	$(CSC) /target:library  -r:$(KLIB1)  AesTransformRef.cs

$(ANAME).exe:$(ANAME).cs AesTransformRef.dll
	$(CSC) $(ANAME).cs -r:$(KLIB1) -r:AesTransformRef.dll

$(ANAME).v:$(ANAME).exe AesTransformRef.dll
	$(KIWIC) -vnl-rootmodname DUT $(ANAME).exe -vnl $(ANAME).v AesTransformRef.dll $(KIWICFLAGS)




icarus:$(ANAME).v
	iverilog $(ANAME).v vsys.v $(CV1G)
	./a.out| tee icarus.spool
	cp vcd.vcd $(VIEWINGDEST)

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



#----------------------------------------------------------------
# SystemC

# deprecated to BSYSTEM 
# 

BSYSTEM ?= $(HPRLS)/bsystem
CXXINCLUDES= -I$(SYSTEMC)/include -I$(BSYSTEM)  -DHPR_USE_SYSTEMC -std=c++11
CXXFLAGS=   -O0 -g
CXX   ?=g++
ARCH  ?=x86_64


SNAME=GreavesTestBench.sysc

systemc: hpr.o aes_sysc_main.o $(ANAME).sysc.o
	$(CXX) $(CXXFLAGS) $(CXXINCLUDES)  *.o -L$(SYSTEMC)/lib-$(ARCH) -lsystemc
	LD_LIBRARY_PATH=$(SYSTEMC)/lib-$(ARCH)	./a.out
	cp trace.vcd $(VIEWINGDEST)

doto: $(ANAME).sysc.cpp
	$(CXX) -c $(CXXFLAGS) $(CXXINCLUDES) *.cpp # $(ANAME).sysc.cpp

$(ANAME).sysc.o: $(ANAME).sysc.cpp
	$(CXX) -c $(CXXFLAGS) $(CXXINCLUDES) $(ANAME).sysc.cpp

hpr.o:$(BSYSTEM)/hpr.cpp 
	$(CXX) -c $(CXXFLAGS) $(CXXINCLUDES) $(BSYSTEM)/hpr.cpp

aes_sysc_main.o:aes_sysc_main.cpp 
	$(CXX) -c $(CXXFLAGS) $(CXXINCLUDES) aes_sysc_main.cpp

$(ANAME).sysc.cpp:$(ANAME).exe
	$(KIWIC) $(KIWICFLAGS) -vnl-rootmodname=DUT -cgen2=enable -cgen2-filename=$(ANAME) $(ANAME).exe  AesTransformRef.dll 



# eof

