#----------------------------------------
#-- Establecer nombre del componente
#----------------------------------------
DEPSIM = system.v cpuV5.v video.v uart.v spi.v 
DEPSINT= system.v cpuV5.v video.v uart.v spi.v pll.v 

#-------------------------------------------------------
#-- Objetivo por defecto: hacer simulacion y sintesis
#-------------------------------------------------------
all: sim

#-------------------------------------------------------
#-- Fuentes de la ROM
#-------------------------------------------------------	
rom.hex:	rom.asm Makefile
	util/gusasm -l rom.lst -o $@ $<
#----------------------------------------------
#-- make sim
#----------------------------------------------
#-- Objetivo para hacer la simulacion del
#-- banco de pruebas
#----------------------------------------------
sim: tb.vcd 
	#-- Ver visualmente la simulacion con gtkwave
	gtkwave tb.vcd tb.gtkw &
	
#-----------------------------------------------
#-  make sint
#-----------------------------------------------
#-  Objetivo para realizar la sintetis completa
#- y dejar el diseno listo para su grabacion en
#- la FPGA
#-----------------------------------------------

sint: main.bin
	../../lpc11loader/iceload -c $<

burn: main.bin
	../../lpc11loader/iceload -p $<

term:
	../../lpc11loader/iceload -t
	
#-------------------------------
#-- Compilacion y simulacion
#-------------------------------
tb.vcd: tb.v $(DEPSIM) rom.hex
	
	#-- Compilar
	iverilog tb.v $(DEPSIM) -o tb.out -DSIMULATION -DSIM 
	
	#-- Simular
	./tb.out
	

#------------------------------
#-- Sintesis completa
#------------------------------

main.bin:	main.asc rom.hex
	#-- Generar binario final, listo para descargar en fgpa
	icepack main.asc main.bin

main.asc: pines.pcf main.v $(DEPSINT) rom.hex rand.hex
	#-- Sintesis 
	yosys -p "synth_ice40 -relut" -o main.json main.v $(DEPSINT) >sint.log
	#-- Place & route
	nextpnr-ice40 --hx4k --pcf pines.pcf --json main.json --asc $@ --package tq144 2>pnr.log

#-- Limpiar todo
clean:
	rm -f *.asc *.blif *.out *.vcd *.json *.log *.lst *~
#empaquetar
pack:
	tar czvf - --directory=.. gusy/pll.v gusy/cpuV4.v gusy/cpuV5.v gusy/main.v \
	gusy/system.v gusy/video.v gusy/spi.v gusy/uart.v \
	gusy/tb.v gusy/Makefile gusy/pines.pcf gusy/rom.asm gusy/rom.hex \
	gusy/main.bin gusy/util  >gusy.tgz
.PHONY: all clean

	
