# TMU PROJECT # Main Makefile # # 2006-06-11, Jan de Cuveland # Family: Spartan 3E # Device: XC3S500E # Package: PQ208 # Speed -4 PARTNAME=xc3s500e # virtex-3 speed grade (10, 11, 12) SPEEDGRADE=4 PACKAGE=pq208 PART=$(PARTNAME)-$(PACKAGE)-$(SPEEDGRADE) #UCF=./ucf/$(PARTNAME)-$(SPEEDGRADE).ucf UCF=./ucf/CBCFPGA.ucf INTSTYLE=-intstyle xflow #INTSTYLE=-intstyle silent # add following env. vars: # XIL_XST_HIDEMESSAGES=hdl_level # XIL_NETGEN_DRIVE_PWR_GND=1 # To prevent error for CLK input XIL_PLACE_ALLOW_LOCAL_BUFG_ROUTING=1 all: bitfile xsvf clean: $(RM) -r ise impact # $(MAKE) -C ../common/powerpc clean $(RM) $(BUILDSTAMP) distclean: clean $(RM) top.bit top_fpga.xsvf top_prom.xsvf top.mcs top.msk impact/erase_prom.xsvf impact/erase_prom.svf $(RM) -r report ######################################################################### # BUILDSTAMP PACKAGE GENERATION COMMANDS BUILDSTAMP = src/misc/buildstamp.vhd SVN_REV = $(shell test -d .svn && svn info | grep '^Revision' | sed -e 's/Revision: *//') SVN_STATUS = $(shell test -d .svn && svn status) ifeq ($(strip $(SVN_REV)),) SVN_REV = 0 endif SVN_CLEAN = 0 ifeq ($(strip $(SVN_STATUS)),) SVN_CLEAN = 1 endif ######################################################################### # SYNTHESIS COMMANDS syn: ise/top.ngc # generates: # ise/top.ngc # report/syn.txt ise/top.ngc: @echo SYNTHESIZE @echo "Updating buildstamp" @/bin/echo -e "\ library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all;\n\n\ package buildstamp is\n\ constant build_date : std_logic_vector(31 downto 0) := x\""$(shell date +%Y%m%d)"\";\n\ constant build_time : std_logic_vector(15 downto 0) := x\""$(shell date +%H%M)"\";\n\ constant build_rev : std_logic_vector(15 downto 0) :=\n\ std_logic_vector(to_unsigned("$(SVN_REV)", 16));\n\ constant build_clean : std_logic := '"$(SVN_CLEAN)"';\n\ end buildstamp;\n\n\ package body buildstamp is end buildstamp;" > $(BUILDSTAMP) mkdir -p ise/xst/projnav.tmp mkdir -p report xst $(INTSTYLE) -ifn script/xst_$(PARTNAME)-$(SPEEDGRADE).txt \ -ofn report/syn.txt $(RM) ise/top.ngr $(RM) -r ise/xst ######################################################################### # TRANSLATION COMMANDS trans: ise/top.ngd # needs: # ise/top.ngc # generates: # ise/top.ngd # report/trans.txt # -bm ../common/powerpc_hw/implementation/powerpc_stub.bmm \ ise/top.ngd: ise/top.ngc @echo TRANSLATE ngdbuild $(INTSTYLE) -dd ise/_ngo \ -sd ../common/src/i2c/rx_fifo \ -sd ../common/src/mgt \ -sd ../common/src/fifo \ -sd ../common/src/sram_new/fifos \ -sd ../common/powerpc_hw/implementation \ -sd src/cs \ -sd src/trigger/fifos \ -sd src/coregen \ -uc $(UCF) -p $(PART) \ $< $@ sed ':a;$!N;s/\n \+/ /;ta;P;D' ise/top.bld > report/trans.txt $(RM) ise/top.bld $(RM) -r ise/_ngo ######################################################################### # MAP COMMANDS map: ise/top_map.ncd ise/top.pcf # needs: # ise/top.ngd # generates: # ise/top_map.ncd # ise/top.pcf # report/map.txt ise/top_map.ncd ise/top.pcf: ise/top.ngd @echo MAP map $(INTSTYLE) -p $(PART) -pr b \ -o ise/top_map.ncd $< ise/top.pcf -mv ise/top_map.mrp report/map.txt $(RM) ise/top_map.ngm ise/top_map.map xilinx_device_details.xml ######################################################################### # PLACE-AND-ROUTE COMMANDS par: ise/top.ncd # needs: # ise/top_map.ncd # ise/top.pcf # generates: # ise/top.ncd # report/par.txt # report/par_pad.txt # report/par_unroutes.txt ise/top.ncd: ise/top_map.ncd ise/top.pcf @echo PLACE AND ROUTE par -pl high -w $(INTSTYLE) $< $@ ise/top.pcf -mv ise/top.par report/par.txt -mv ise/top.unroutes report/par_unroutes.txt -mv ise/top_pad.txt report/par_pad.txt -mv timing.twr report/par_timing.txt $(RM) ise/top.xpi ise/top.pad ise/top_pad.csv ######################################################################### # STATIC TIMING ANALYSIS COMMANDS timing: report/timing.txt report/timing.txt: ise/top.ncd ise/top.pcf @echo STATIC TIMING ANALYSIS trce $(INTSTYLE) -e 3 -l 3 -s $(SPEEDGRADE) $< \ -o report/timing.txt.twr ise/top.pcf -mv report/timing.txt.twr $@ ######################################################################### # BITFILE GENERATION COMMANDS bitfile: top.bit # needs: # ise/top.ncd # generates: # ise/top_hw.bit # report/bitgen.txt # ise/top.bmm #bitgen -d $(INTSTYLE) -f script/bitgen_options.txt -m `$(*F)` $< $@ ise/top_hw.bit: ise/top.ncd @echo HARDWARE BIT FILE GENERATION bitgen -d $(INTSTYLE) -m -f script/bitgen_options.txt $< $@ mv ise/top_hw.bgn report/bitgen.txt mv ise/top_hw.msk top.msk $(RM) xilinx_device_details.xml # mv ../common/powerpc_hw/implementation/powerpc_stub_bd.bmm ise/top.bmm # needs: # ise/top_hw.bit # ise/top.bmm # ../common/powerpc/smu.elf # generates: # top.bit # report/bitgen.txt # data2mem -bm ise/top.bmm -bt $< \ top.bit: ise/top_hw.bit @echo BIT FILE GENERATION cp $< $@ # data2mem -bt $< \ # -o b $@ #bitinit PowerPC.mhs -pe ppc405_0 src/powerpc/executable.elf \ #-bt implementation/PowerPC.bit -o implementation/download.bit ######################################################################### # POWERPC SOFTWARE GENERATION COMMANDS software: ../common/powerpc/smu.elf ../common/powerpc/smu.elf: @echo POWERPC SOFTWARE GENERATION $(MAKE) -C ../common/powerpc smu.elf ######################################################################### # SIMULATION NETLIST GENERATION COMMANDS netlist: sim/netlist/top.vhd sim/netlist/top.sdf # needs: # ise/top.ncd # ise/top.pcf # generates: # sim/netlist/top.vhd # sim/netlist/top.sdf # report/netgen.txt sim/netlist/top.vhd sim/netlist/top.sdf: ise/top.ncd ise/top.pcf @echo NETLIST GENERATION netgen -s 10 -pcf ise/top.pcf -rpw 100 -tpw 0 -tm top -w \ -dir sim/netlist -ofmt vhdl -sim $< mv sim/netlist/top.nlf report/netgen.txt # untested! sim/netlist/top_map.vhd sim/netlist/top_map.sdf: ise/top_map.ncd ise/top.pcf @echo NETLIST GENERATION netgen -s 10 -pcf ise/top.pcf -rpw 100 -tpw 0 -tm top -w \ -dir sim/netlist -ofmt vhdl -sim $< mv sim/netlist/top_map.nlf report/netgen.txt ######################################################################### # XPLORER RUN xplorer: xplorer/run1.ngd # needs: # ise/top.ngd # generates: # xplorer/run1.ngd xplorer/run1.ngd: ise/top.ngd @echo XPLORER RUN cp ./ise/top.ncd ./xplorer/top.ngd cp $(UCF) ./xplorer/top.ucf cd xplorer; \ /cygdrive/c/programme/xilinx81/bin/nt/xplorer.pl -uc top.ucf top.ngd cd .. # ######################################################################### # XSVF/SVF GENERATION COMMANDS xsvf: cbc.xsvf # needs: # top.bit # script/gen_svf_fpga.bat # script/gen_svf_prom_xc4v$(PARTNAME)_1152.bat # script/gen_mcs.bat # script/xcf32p.bsd # script/xc4v$(PARTNAME)_ff1152.bsd # generates: # top_fpga.xsvf # top_prom.xsvf # top.mcs # impact/top_fpga.svf # impact/top_prom.svf top.mcs: script/gen_mcs.bat top.bit @echo MCS GENERATION mkdir -p impact impact -batch $< mv _impactbatch.log report/impact_mcs.log $(RM) _impact.cmd top.sig top.prm top_fpga.svf: script/gen_svf_fpga.bat top.bit @echo FPGA SVF GENERATION mkdir -p impact impact -batch $< mv _impactbatch.log report/impact_fpga.log $(RM) _impact.cmd impact/top_prom.svf: script/gen_svf_prom_xc4v$(PARTNAME)_1152.bat top.mcs @echo PROM SVF GENERATION impact -batch $< mv _impactbatch.log report/impact_prom.log $(RM) _impact.cmd impact/erase_prom.svf: script/gen_svf_erase_prom_xc4v$(PARTNAME)_1152.bat top.mcs @echo ERASE PROM SVF GENERATION impact -batch $< mv _impactbatch.log report/impact_erase_prom.log $(RM) _impact.cmd top_fpga.xsvf: top_fpga.svf @echo FPGA XSVF GENERATION impact -batch script/gen_svf_xsvf.bat # svf2xsvf502 -d -fpga -rlen 128 -i $? -o $@ -a impact/top_fpga.txt cbc.xsvf: top_fpga.xsvf cp $< $@ impact/top_prom_unmerged.xsvf: impact/top_prom.svf @echo PROM XSVF GENERATION svf2xsvf502 -d -r 0 -extensions -i $? -o $@ -a impact/top_prom.txt impact/erase_prom.xsvf: impact/erase_prom.svf @echo PROM ERASE XSVF GENERATION svf2xsvf502 -d -r 0 -extensions -i $? -o $@ -a $(basename $@).txt top_prom.xsvf: impact/erase_prom.xsvf impact/top_prom_unmerged.xsvf @echo merging PROM XSVF with ERASE XSVF mergexsvf -d -i $< -i impact/top_prom_unmerged.xsvf -o $@ clean_impact: @echo REMOVING SVF/XSVF $(RM) -r impact top_fpga.xsvf top_prom.xsvf ######################################################################### .PHONY: all net clean distclean syn trans map par timing bitfile netlist\ xsvf svf mcs