.PHONY: clean

all:	netlist

PRJ := mips_sys
PREQ := ./project/$(PRJ).prj ./project/$(PRJ).xst ./project/$(PRJ).lso
DEVICE := "xc4vsx35-ff668-10"
DIRS := ./xst/tmp

netlist: $(PRJ).ngc
translate: $(PRJ).ngd
map: $(PRJ)_map.ncd
par: $(PRJ).ncd
bit: $(PRJ).bit
timing : $(PRJ).twr

# Netlist
$(PRJ).ngc: $(DIRS) $(PREQ) ./project/$(PRJ).ucf
	xst -intstyle xflow -ifn ./project/$(PRJ).xst

# Translate
$(PRJ).ngd: $(PRJ).ngc ./project/$(PRJ).ucf
	ngdbuild -p $(DEVICE) -sd "../../../../lib/CPUs/MIPS/syn/ise101" -dd _ngo -nt timestamp -uc ./project/$(PRJ).ucf $(PRJ).ngc $(PRJ).ngd

# Map
$(PRJ)_map.ncd: $(PRJ).ngd
	map -intstyle xflow -p $(DEVICE) -timing -logic_opt on -ol high -t 1 -register_duplication -cm area -ignore_keep_hierarchy -pr off -k 4 -power off -o $(PRJ)_map.ncd $(PRJ).ngd $(PRJ).pcf

# PAR
$(PRJ).ncd: $(PRJ)_map.ncd
	par -w -intstyle xflow -ol high -t 1 $(PRJ)_map.ncd $(PRJ).ncd $(PRJ).pcf

# Timing
$(PRJ).twr: $(PRJ).ncd $(PRJ).pcf ./project/$(PRJ).ucf
	trce -intstyle xflow -v 3 $(PRJ).ncd -ucf ./project/$(PRJ).ucf -o $(PRJ).twr $(PRJ).pcf 

# Bitgen
$(PRJ).bit: $(PRJ).ncd ./project/$(PRJ).ut
	bitgen -intstyle xflow -f ./project/$(PRJ).ut $(PRJ).ncd

$(DIRS):
	mkdir -p $(DIRS)

clean:
	rm -rf ./_ngo
	rm -rf ./xst
	rm -rf ./xlnx_auto_0_xdb
	rm -f xlnx_auto_0.ise
	rm -f smartpreview.twr
	rm -f $(PRJ)*.*
	
