# # Kiwi Scientific Acceleration - SnakeGame and KMmeans demos (for Ghent FPL 2017). # CSC ?=mcs KIWI ?=$(HPRLS)/kiwipro/kiwic/distro KIWIDLL ?=$(KIWI)/support/Kiwi.dll CV_INT_ARITH ?=$(KIWI)/lib/hpr_ipblocks/cvip0/cvgates.v CV_FP_ARITH ?=$(KIWI)/lib/hpr_ipblocks/cvip0/cv_fparith.v VERILATOR_ROOT ?=/usr/share/verilator #ANAME=KMeans ANAME=SnakeGame LLEVEL=20 KIWIC ?=$(KIWI)/bin/kiwic \ -res2-loadstore-port-count=0 \ -vnl-resets=synchronous \ -vnl-roundtrip=disable \ -kiwic-cil-dump=combined \ -kiwic-kcode-dump=enable \ -bevelab-loglevel=20 \ -kiwife-gtrace-loglevel=$(LLEVEL) \ -kiwife-firstpass-loglevel=$(LLEVEL) \ -bevelab-default-pause-mode=hard \ -bevelab-soft-pause-threshold=30 \ SNAME1=KiwiFormGraphics SNAME2=../Kiwi-JoyStickUnit/JoyStickUnit SNAME3=../Kiwi-DuplexLink/DuplexInterFPGALink SNAME4=FramestoreDriver all: $(ANAME).v # ll_run_isim # ll_run # ll_run2 # mono_run kill: # rm -f kmeans.v $(ANAME).exe:$(ANAME).cs $(SNAME1).dll $(SNAME2).dll $(SNAME3).dll $(SNAME4).dll $(CSC) $(ANAME).cs /r:$(KIWIDLL) /r:$(SNAME1).dll /r:$(SNAME2).dll /r:$(SNAME3).dll /r:$(SNAME4).dll mono_run:$(ANAME).exe MONO_PATH=$(HPRLS)/kiwipro/kiwic/distro/support:.. time mono $(ANAME).exe | tee goldspool hl_run:$(ANAME).exe $(KIWIC) -sim 20000 -repack=disable -conerefine=disable -bevelab=disable -verilog-gen=disable $(ANAME).exe $(ANAME).v:$(ANAME).exe $(SNAME1).dll $(SNAME2).dll $(SNAME4).dll $(KIWIC) $(ANAME).exe $(SNAME1).dll $(SNAME2).dll $(SNAME3).dll $(SNAME4).dll -vnl=$(ANAME).v -ip-incdir=".:../Kiwi-JoyStickUnit:../Kiwi-DuplexLink" -vnl-rootmodname=DUT -root "GameAppTop;GameAppTop.RunGame" #------------------------------------------------ server1: $(CSC) $(SNAME1).cs /target:library /r:$(KIWIDLL) $(KIWIC) $(SNAME1).dll "-root=KiwiFormGraphics;KiwiFormGraphics.setget_pixel;KiwiFormGraphics.get_id;KiwiFormGraphics.sendCmd" -obj-dir-name=. -log-dir-name=obj_d.KiwiFormGraphics -res2-loadstore-port-count=0 -vnl-resets=synchronous -vnl KiwiFormGraphics.v #------------------------------------------------ server2: $(CSC) $(SNAME2).cs /target:library /r:$(KIWIDLL) $(KIWIC) $(SNAME2).dll "-root=JoyStickUnit;JoyStickUnit.ReadStick" -obj-dir-name=. -log-dir-name=obj_d.JoyStickUnit -res2-loadstore-port-count=0 -vnl-resets=synchronous -vnl JoyStickUnit.v #------------------------------------------------ server3: $(CSC) $(SNAME3).cs /target:library /r:$(KIWIDLL) $(KIWIC) $(SNAME3).dll "-root=DuplexInterFPGALink;DuplexInterFPGALink.Write64;DuplexInterFPGALink.Read64;DuplexInterFPGALink.LinkStatus" -obj-dir-name=. -log-dir-name=obj_d.DuplexInterFPGALink -res2-loadstore-port-count=0 -vnl-resets=synchronous -vnl DuplexInterFPGALink.v #------------------------------------------------ # FramestoreDriver $(SNAME4).dll:$(SNAME4).cs $(SNAME1).dll $(CSC) /target:library $(SNAME4).cs /r:$(KIWIDLL) /r:$(SNAME1).dll #------------------------------------------------ # RTLSIM Icarus Run ll_run_isim:$(ANAME).v iverilog $(ANAME).v vsys.v $(CV_INT_ARITH) $(CV_FP_ARITH) $(SNAME1).v $(SNAME2).v $(HOME)/Dropbox/rtl-misc/FSTORE_CLEANER.v ulimit -t 30 ; ./a.out| tee icarus.spool cp vcd.vcd ~/Dropbox #------------------------------------------------ # RTLSIM Verilator Run ll_run_verilator:vrun ulimit -t10; time ./vrun tail -8 KiwiC.rpt vrun:verilated/VVERI_SIMSYS.cpp veriltop-kmeans.cpp vsys.v g++ -o vrun -g -O2 -Iverilated -I$(VERILATOR_ROOT)/include veriltop-kmeans.cpp verilated/VVERI_SIMSYS.cpp $(VERILATOR_ROOT)/include/verilated.cpp verilated/VVERI_SIMSYS__Syms.cpp verilated/VVERI_SIMSYS.cpp:$(ANAME).v veril_sys.v verilator --Mdir verilated -Wno-fatal -cc --top-module VERI_SIMSYS $(ANAME).v veril_sys.v $(CV_INT_ARITH) $(CV_FP_ARITH) $(SNAME1).v $(SNAME2).v #------------------------------------------------ # eof