diff options
Diffstat (limited to 'mig_test/synthesis/Makefile')
-rw-r--r-- | mig_test/synthesis/Makefile | 474 |
1 files changed, 0 insertions, 474 deletions
diff --git a/mig_test/synthesis/Makefile b/mig_test/synthesis/Makefile deleted file mode 100644 index 66be99b..0000000 --- a/mig_test/synthesis/Makefile +++ /dev/null @@ -1,474 +0,0 @@ -# -# $HeadURL: https://svn.fzd.de/repo/concast/FWF_Projects/FWKE/beam_position_monitor/trunk/hardware/board_prototyp1/synthesis/Makefile $ -# $Date$ -# $Author$ -# $Revision$ -# - -MODULE = top -DEVICE = xc6slx100 -SPEEDGRADE = 2 -PACKAGE = fgg484 -UCF_FILE = top.ucf -CORES = ../cores/ -SOFTWARE = ../software -BMM_FILE = zpu.bmm -BMM_BD_FILE = zpu_bd.bmm - -BUILDDIR = isebuild -DEVICE_DPS = $(DEVICE)-$(PACKAGE)-$(SPEEDGRADE) -DATE = $(shell date +"%Y-%m-%d__%H_%M") -LOGFILE = synthesis_log_$(DATE).txt -export XST_LOGFILE := $(LOGFILE) - - -define XST_FILE -set -tmpdir "projnav.tmp" -set -xsthdpdir "xst" -run --ifn ../$(MODULE).prj --ifmt mixed --ofn $(MODULE) --ofmt NGC --p $(DEVICE)-$(SPEEDGRADE)-$(PACKAGE) --top $(MODULE) --opt_mode Speed --opt_level 1 --power NO --iuc NO --keep_hierarchy No --netlist_hierarchy As_Optimized --rtlview Yes --glob_opt AllClockNets --read_cores YES --write_timing_constraints NO --cross_clock_analysis NO --hierarchy_separator / --bus_delimiter <> --case Maintain --slice_utilization_ratio 100 --bram_utilization_ratio 100 --dsp_utilization_ratio 100 --lc Auto --reduce_control_sets Auto --fsm_extract YES -fsm_encoding Auto --safe_implementation No --fsm_style LUT --ram_extract Yes --ram_style Auto --rom_extract Yes --shreg_extract YES --rom_style Auto --auto_bram_packing NO --resource_sharing YES --async_to_sync NO --shreg_min_size 2 --use_dsp48 Auto --iobuf YES --max_fanout 100000 --bufg 16 --register_duplication YES --register_balancing No --optimize_primitives NO --use_clock_enable Auto --use_sync_set Auto --use_sync_reset Auto --iob Auto --equivalent_register_removal YES --slice_utilization_ratio_maxmargin 5 --infer_ramb8 No -endef - -# 16k -define BMM16 -ADDRESS_SPACE zpu_i0_memory - RAMB16 [0x00000000:0x00003fff] - BUS_BLOCK - box_i0/dualport_ram_ahb_wrapper_i0/dualport_ram_i0/Mram_ram8 [31:28]; - box_i0/dualport_ram_ahb_wrapper_i0/dualport_ram_i0/Mram_ram7 [27:24]; - box_i0/dualport_ram_ahb_wrapper_i0/dualport_ram_i0/Mram_ram6 [23:20]; - box_i0/dualport_ram_ahb_wrapper_i0/dualport_ram_i0/Mram_ram5 [19:16]; - box_i0/dualport_ram_ahb_wrapper_i0/dualport_ram_i0/Mram_ram4 [15:12]; - box_i0/dualport_ram_ahb_wrapper_i0/dualport_ram_i0/Mram_ram3 [11: 8]; - box_i0/dualport_ram_ahb_wrapper_i0/dualport_ram_i0/Mram_ram2 [ 7: 4]; - box_i0/dualport_ram_ahb_wrapper_i0/dualport_ram_i0/Mram_ram1 [ 3: 0]; - END_BUS_BLOCK; -END_ADDRESS_SPACE; -endef - -# 32k -define BMM -ADDRESS_SPACE zpu_core_medium_i0_memory - RAMB16 [0x00000000:0x00007fff] - BUS_BLOCK - box_i0/dualport_ram_ahb_wrapper_i0/dualport_ram_i0/Mram_ram16 [31:30]; - box_i0/dualport_ram_ahb_wrapper_i0/dualport_ram_i0/Mram_ram15 [29:28]; - box_i0/dualport_ram_ahb_wrapper_i0/dualport_ram_i0/Mram_ram14 [27:26]; - box_i0/dualport_ram_ahb_wrapper_i0/dualport_ram_i0/Mram_ram13 [25:24]; - box_i0/dualport_ram_ahb_wrapper_i0/dualport_ram_i0/Mram_ram12 [23:22]; - box_i0/dualport_ram_ahb_wrapper_i0/dualport_ram_i0/Mram_ram11 [21:20]; - box_i0/dualport_ram_ahb_wrapper_i0/dualport_ram_i0/Mram_ram10 [19:18]; - box_i0/dualport_ram_ahb_wrapper_i0/dualport_ram_i0/Mram_ram9 [17:16]; - box_i0/dualport_ram_ahb_wrapper_i0/dualport_ram_i0/Mram_ram8 [15:14]; - box_i0/dualport_ram_ahb_wrapper_i0/dualport_ram_i0/Mram_ram7 [13:12]; - box_i0/dualport_ram_ahb_wrapper_i0/dualport_ram_i0/Mram_ram6 [11:10]; - box_i0/dualport_ram_ahb_wrapper_i0/dualport_ram_i0/Mram_ram5 [ 9: 8]; - box_i0/dualport_ram_ahb_wrapper_i0/dualport_ram_i0/Mram_ram4 [ 7: 6]; - box_i0/dualport_ram_ahb_wrapper_i0/dualport_ram_i0/Mram_ram3 [ 5: 4]; - box_i0/dualport_ram_ahb_wrapper_i0/dualport_ram_i0/Mram_ram2 [ 3: 2]; - box_i0/dualport_ram_ahb_wrapper_i0/dualport_ram_i0/Mram_ram1 [ 1: 0]; - END_BUS_BLOCK; -END_ADDRESS_SPACE; -endef - - -define UT_FILE --w --g INIT_9K:Yes --g DebugBitstream:No --g Binary:no --g CRC:Enable --g Reset_on_err:Yes --g ConfigRate:26 --g ProgPin:PullUp --g TckPin:PullUp --g TdiPin:PullUp --g TdoPin:PullUp --g TmsPin:PullUp --g UnusedPin:PullDown --g UserID:0xFFFFFFFF --g ExtMasterCclk_en:No --g SPI_buswidth:4 --g TIMER_CFG:0xFFFF --g multipin_wakeup:No --g StartUpClk:CClk --g DONE_cycle:4 --g GTS_cycle:5 --g GWE_cycle:6 --g LCK_cycle:NoWait --g Security:None --g DonePipe:No --g DriveDone:No --g en_sw_gsr:No --g drive_awake:No --g sw_clk:Startupclk --g sw_gwe_cycle:5 --g sw_gts_cycle:4 -endef - - -define PROGRAM_FPGA_FILE -setMode -bscan -setCable -port auto -Identify -assignFile -p 1 -file "$(MODULE)_update.bit" -Program -p 1 -closeCable -quit -endef - - -define PROGRAM_SPI_FILE -setMode -bs -setCable -port auto -Identify -inferir -identifyMPM -attachflash -position 1 -spi "W25Q64BV" -assignfiletoattachedflash -position 1 -file "$(MODULE)_update.mcs" -Program -p 1 -dataWidth 4 -spionly -e -v -loadfpga -closeCable -quit -endef - - -export XST_FILE := $(XST_FILE) -export BMM := $(BMM) -export UT_FILE := $(UT_FILE) -export PROGRAM_FPGA_FILE := $(PROGRAM_FPGA_FILE) -export PROGRAM_SPI_FILE := $(PROGRAM_SPI_FILE) - - -all: - @echo "check - look for timing and other synthesis issues" - @echo "xst - generate ngc file (netlist, replaces edif and netlist constrains)" - @echo "translate - generate ngd file (native generic database [reduced to primitives])" - @echo "map - generate ncd file (native ciruit description)" - @echo "par - place&route ncd file (design implementation)" - @echo "trace - generate timing report" - @echo "bitgen - generate bit file (ncd -> bit)" - @echo "update - update bitstream with elf file" - @echo "program - program fpga with bit file" - @echo "genmcs - genrate mcs file" - @echo "genbin - genrate bin(ary) file" - @echo "progspi - program spi flash with mcs file" - @echo "clean" - @echo "..." - @echo "softflow - just update fpga with software (software update program)" - @echo "testflow - time software bitgen trace update program check" - @echo "finalflow - time software bitgen trace update progspi check" - - -softflow: - make software update program - -testflow: - time $(MAKE) software bitgen trace update program check 2>&1 | tee $(XST_LOGFILE) - -finalflow: - time $(MAKE) software bitgen trace update progspi check 2>&1 | tee $(XST_LOGFILE) - - -check: - @echo -e "Timing score: " - @grep --with-filename "Timing Score" $(BUILDDIR)/*.par - @echo -e "\nUnwanted Latches (737): " - @grep --with-filename "WARNING:Xst:737" $(BUILDDIR)/*.syr || echo -n - @echo -e "\nUnassigned signals (653): " - @grep --with-filename "WARNING:Xst:653" $(BUILDDIR)/*.syr || echo -n - @echo -e "\nInternal tristates (2042): " - @grep --with-filename "WARNING:Xst:2042" $(BUILDDIR)/*.syr || echo -n - @echo -e "\nCombinatoric loops (2170): " - @grep --with-filename "WARNING:Xst:2170" $(BUILDDIR)/*.syr || echo -n - @echo -e "\nGated clocks (372): " - @grep --with-filename "WARNING:PhysDesignRules:372" $(BUILDDIR)/*.bgn || echo -n - - -software: sw_timestamp - ### - ############################################################################# - ### (re)compile software - ### - test ! -d $(SOFTWARE) || make all --directory $(SOFTWARE) - - -sw_timestamp: - ### - ############################################################################# - #### update sw timestamp - ### - test ! -d $(SOFTWARE) || make --always-make timestamp --directory $(SOFTWARE) - - -update: $(BUILDDIR)/$(MODULE).bit - ### - ############################################################################# - ### update the bitfile - ### - test ! -d $(SOFTWARE) || data2mem -bm $(BMM_BD_FILE) -bd $(SOFTWARE)/*.elf -bt $(BUILDDIR)/$(MODULE).bit -o b $(MODULE)_update.bit - test -d $(SOFTWARE) || cp $(BUILDDIR)/$(MODULE).bit $(MODULE)_update.bit - - -program: - ### - ############################################################################# - ### configure FPGA - ### - echo "$$PROGRAM_FPGA_FILE" > program_fpga.cmd - impact -batch program_fpga.cmd - - -genbin: $(MODULE)_update.bin - -$(MODULE)_update.bin: $(MODULE)_update.bit - ### - ############################################################################# - ### generate flash file, bin format for manual flashing - ### - promgen -b -p bin -w -o $(MODULE)_update.bin -u 0 $(MODULE)_update.bit - - -genmcs: $(MODULE)_update.mcs - -$(MODULE)_update.mcs: $(MODULE)_update.bit - ### - ############################################################################# - ### generate flash file - ### - promgen -spi -p mcs -w -o $(MODULE)_update.mcs -s 8192 -u 0 $(MODULE)_update.bit - - -progspi: genmcs - ### - ############################################################################# - ### program flash - ### - echo "$$PROGRAM_SPI_FILE" > program_spi.cmd - impact -batch program_spi.cmd - - -clean: - rm -f $(MODULE).prj - rm -f *.log - rm -f _impact.cmd - rm -f *.cfi - rm -f *.prm - rm -rf $(BUILDDIR) - rm -rf _ngo - rm -rf _xmsgs - rm -f $(BMM_FILE) - rm -f $(BMM_BD_FILE) - rm -f $(MODULE).xst - rm -f $(MODULE).ut - rm -f program_fpga.cmd - rm -f program_spi.cmd - - -dir: $(MODULE).prj - ### - ############################################################################# - ### generate build directory - ### - mkdir -p $(BUILDDIR) - mkdir -p $(BUILDDIR)/projnav.tmp - - - -$(MODULE).prj: ../vhdl_files.txt - ### - ############################################################################# - ### generate project file - ### - grep --invert rtl_tb ../vhdl_files.txt | grep --invert "\#" | grep --invert "^$$" | awk '{printf "vhdl %s ../%s\n",$$1,$$2}' > $(MODULE).prj - - -xst: $(MODULE).ngc -translate: $(MODULE).ngd -map: $(MODULE)_map.ncd -par: $(MODULE).ncd - - -hw_timestamp: - ### - ############################################################################# - #### update hw timestamp - ### - test ! -f ../rtl/Makefile || make --directory ../rtl - -$(MODULE).ngc: dir hw_timestamp - ### - ############################################################################# - ### synthesis - ### - echo "$$XST_FILE" > $(MODULE).xst - cd $(BUILDDIR) ; xst -ifn ../$(MODULE).xst -ofn $(MODULE).syr - - -$(MODULE).ngd: $(MODULE).ngc $(UCF_FILE) - ### - ############################################################################# - ### translate - ### - echo "$$BMM" > $(BMM_FILE) - cd $(BUILDDIR) ; ngdbuild -dd _ngo -nt timestamp -uc ../$(UCF_FILE) -bm ../$(BMM_FILE) -p $(DEVICE_DPS) -sd ../$(CORES) $(MODULE).ngc $(MODULE).ngd - -$(MODULE)_map.ncd: $(MODULE).ngd - ### - ############################################################################# - ### map - ### - @# explanation of map parameters: - @# -p part number - @# -mt multi-threading - @# -w overwrite existing files - @# -logic_opt logic optimization - @# -ol overall effor level (std|high) - @# -t placer cost table - @# -xt extra placer cost table (0..5) - @# -register_duplication duplicate registers - @# -global_opt Global Optimization (off|speed|area|power) - @# -ir ignore RLOCs - @# -pr pack registers in IO (off|i|o|b) - @# -lc lut combining (auto|area|off) - @# -power Virtex 6 Power Optimization (on|off|high|xe) - @# -detail Generate Detailed MAP Report - @# -o Output File Name - @# -bp enables block RAM mapping - cd $(BUILDDIR) ; export XIL_MAP_NODRC; export XIL_PAR_DESIGN_CHECK_VERBOSE=1; export XIL_PAR_ALLOW_LVDS_LOC_OVERRIDE=1; map -p $(DEVICE_DPS) -mt 1 -w -logic_opt off -ol high -t 22 -xt 5 -register_duplication on -global_opt off -ir off -pr b -lc off -power off -detail -o $(MODULE)_map.ncd $(MODULE).ngd $(MODULE).pcf - - -$(MODULE).ncd: $(MODULE)_map.ncd - ### - ############################################################################# - ### place & route - ### - @# -ol = Overall effort level. high is maximum effort. - @# Default: high except Virtex-4 and Spartan-3 architectures - @# std (standard) for older architectures - @# -pl = Placer effort level. high is maximum effort. Overrides - @# any placer effort level implied by "-ol" option. - @# Default: high for Virtex-4 and Spartan-3 architectures - @# Not supported for newer architectures. - @# -rl = Router effort level. high is maximum effort. Overrides - @# any router effort level implied by "-ol" option. - @# Default: high for Virtex-4 and Spartan-3 architectures - @# Not supported for newer architectures - @# -xe = Extra effort level. c (Continue on Impossible) is maximum effort. - @# Default: none - @# -mt = Multi-threading enabled. 4 is the maximum number of threads. - @# Default: off except Virtex-4 and Spartan-3 architectures - @# Supported only for newer architectures. - @# -t = Placer cost table entry. Start at this entry. - @# Default: 1 for Virtex-4 and Spartan-3 architectures - @# Not supported for newer architectures - @# -p = Don't run the placer. (Keep current placement) - @# -k = Re-entrant route. Keep the current placement. Continue the routing - @# using the existing routing as a starting point. - @# -r = Don't run the router. - @# -w = Overwrite. Allows overwrite of an existing file (including input - @# file). If specified output is a directory, allows files in - @# directory to be overwritten. - @# -f = Read par command line arguments and switches from file. - @# -filter = Message Filter file name (for example "filter.filter"). If - @# specified, the contents of this file will be used to filter messages - @# from this application. The filter file can be created using Xreport. - @# -smartguide = Enables SmartGuide using guidefile.ncd as the guide file. - @# -x = Ignore user timing constraints in physical constraints file and - @# generate timing constraints automatically for all internal clocks to - @# increase performance. Note: the level of performance achieved will - @# be dictated by the effort level (-ol std|high) chosen. - @# -nopad = Turns off generation of the pad report. - @# Default: Pad Report Generated - @# -power = Power Aware Par. Optimizes the capacitance of non-timing-driven - @# design signals. - @# Default: off - @# -activityfile <activityfile.vcd|saif> = Switching activity data file to - @# guide power optimization. This option is only valid if the - @# "-power on" option has been used. - @# -intstyle = Indicate contextual information when invoking Xilinx applications - @# within a flow or project environment. - @# The mode "xflow" indicates that the program is being run as part of a - @# batch flow. The mode "silent" indicates that no output will be - @# displayed to the screen. The mode "ise" indicates that the program is being - @# run as part of an integrated design environment. - @# Default: Program is run as a standalone application. - @# -ise = Use supplied ISE project repository file. - @# -ntd = Ignore Timing constraints in physical constraints file and do NOT - @# generate timing constraints automatically. - @# <infile> = Name of input NCD file. - @# <outfile> = Name of output NCD file or output directory. - @# Use format "<outfile>.ncd" or "<outfile>.dir". - @# <pcffile> = Name of physical constraints file. - cd $(BUILDDIR) ; par -w -ol high $(MODULE)_map.ncd $(MODULE).ncd $(MODULE).pcf - - -trace: - cd $(BUILDDIR) ; trce -v 5 -u 100 -fastpaths -xml $(MODULE).twx -o $(MODULE).twr $(MODULE).ncd $(MODULE).pcf - - -bitgen: $(MODULE).ncd - ### - ############################################################################# - ### generate bitfile - ### - echo "$$UT_FILE" > $(MODULE).ut - cd $(BUILDDIR) ; bitgen -f ../$(MODULE).ut $(MODULE).ncd - - -firmware: $(MODULE)_update.mcs $(MODULE)_update.bin - mkdir -p firmware_$(DATE) - cp Makefile firmware_$(DATE) - cp $(MODULE)_update.bit firmware_$(DATE) - cp $(MODULE)_update.bin firmware_$(DATE) - cp $(MODULE)_update.mcs firmware_$(DATE) - zip -r firmware_$(DATE) firmware_$(DATE)/* - |