makefile 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. BITGEN := bitgen
  2. PAR := par
  3. MAP := map
  4. NGDBUILD := ngdbuild
  5. XST := xst
  6. MKDIR := mkdir
  7. CP := cp
  8. RM := rm
  9. LN := ln
  10. COMMONDIR := ../../common
  11. PART := 2s15vq100-5
  12. BITGEN_OPTS := -w -g DebugBitstream:No -g Binary:no \
  13. -g Gclkdel0:11111 -g Gclkdel1:11111 \
  14. -g Gclkdel2:11111 -g Gclkdel3:11111 \
  15. -g ConfigRate:4 -g CclkPin:PullUp \
  16. -g M0Pin:PullUp -g M1Pin:PullUp -g M2Pin:PullUp \
  17. -g ProgPin:PullUp -g DonePin:PullUp \
  18. -g TckPin:PullUp -g TdiPin:PullUp \
  19. -g TdoPin:PullUp -g TmsPin:PullUp \
  20. -g UnusedPin:PullDown -g UserID:0xFFFFFFFF \
  21. -g StartUpClk:CClk \
  22. -g DONE_cycle:4 -g GTS_cycle:5 \
  23. -g GSR_cycle:6 -g GWE_cycle:6 \
  24. -g LCK_cycle:NoWait \
  25. -g Security:None -g DonePipe:No -g DriveDone:No
  26. XST_OPT_MODE ?= Speed
  27. XST_OPT_LEVEL ?= 2
  28. XST_EXTRA ?=
  29. SRCS ?= $(NAME).v
  30. %.bit: %.ncd
  31. $(BITGEN) $(BITGEN_OPTS) $< $@
  32. %.ncd: %_map.ncd
  33. $(PAR) -w -ol std -t 1 $< $@ `basename $@ .ncd`.pcf
  34. %_map.ncd: %.ngd
  35. $(MAP) -p $(PART) -cm area -pr b -k 4 -c 100 -o $@ \
  36. $< `basename $< .ngd`.pcf
  37. %.ngd: %.ngc %.ucf
  38. $(NGDBUILD) -aul -dd __ngo -uc `basename $@ .ngd`.ucf \
  39. -p $(PART) $< $@
  40. %.ngc: %.xst %.lso %.prj $(SRCS)
  41. $(MKDIR) -p __xst/tmp
  42. $(XST) -ifn $<
  43. %.ucf:
  44. [ -f '$@' ] || $(LN) -s '$(COMMONDIR)/common.ucf' '$@'
  45. %.lso:
  46. echo 'work' > '$@'
  47. %.prj:
  48. echo 'verilog work "$(SRCS)"' > '$@'
  49. %.xst:
  50. $(CP) '$(COMMONDIR)/common.xst' '$@'
  51. echo '-ifn $(NAME).prj' >> '$@'
  52. echo '-ofn $(NAME)' >> '$@'
  53. echo '-lso $(NAME).lso' >> '$@'
  54. echo "-top `echo -n '$(NAME)' | tr - _`" >> '$@'
  55. echo '-opt_mode $(XST_OPT_MODE)' >> '$@'
  56. echo '-opt_level $(XST_OPT_LEVEL)' >> '$@'
  57. [ -n '$(XST_EXTRA)' ] && echo '$(XST_EXTRA)' >> '$@' || true
  58. all: $(NAME).bit
  59. clean:
  60. $(RM) -rf __ngo __xst *.bgn *.bit *.bld *.drc *_map.mrp \
  61. *_map.ncd *_map.ngm *.ncd *.ngc *.ngd *.ngr \
  62. *.pad *_pad.csv *_pad.txt *.par *.pcf *.srp \
  63. *.unroutes *_usage.xml *.xpi *_map.map *_summary.xml \
  64. *.twr *_details.xml *.ptwx *.xrpt xlnx_auto_* \
  65. *.lso *.prj *.xst
  66. [ -h '$(NAME).ucf' ] && $(RM) -f '$(NAME).ucf' || true
  67. .PHONY: all clean