diff --git a/cpld/syn/config/cpldtest.prj b/cpld/syn/config/cpldtest.prj new file mode 100755 index 0000000..0102cb1 --- /dev/null +++ b/cpld/syn/config/cpldtest.prj @@ -0,0 +1 @@ +vhdl work "../../src/cpldteste.vhd" diff --git a/cpld/syn/makefile b/cpld/syn/makefile new file mode 100755 index 0000000..7021a83 --- /dev/null +++ b/cpld/syn/makefile @@ -0,0 +1,74 @@ +# variables +DESIGN = cpldtest +PART = xc9572xl-10-vq44 + +CURDIR = $(shell pwd) +CONFDIR = ${CURDIR}/config +UCFDIR = ${CURDIR}/constraints +WORKDIR = ${CURDIR}/work +NETLISTDIR = ${CURDIR}/netlist +BINDIR = ${CURDIR}/binary +REPORTS = ${CURDIR}/reports + +SRC_LIST = $(shell cat $(CONFDIR)/$(DESIGN).prj | sed -r 's:^.*"../(.*)":\1:') + +# synthesis options +XSTFLAGS = run -ifmt VHDL -ofmt NGC -opt_level 2 -fsm_encoding sequential -pld_xp yes -pld_mp yes \ + -keep_hierarchy yes -safe_implementation no -wysiwyg yes -ifn $(CONFDIR)/$(DESIGN).prj \ + -p $(PART) -ofn $(DESIGN) -top $(DESIGN)E -tmpdir xsttmp -xsthdpdir xsthdpdir + +NGDFLAGS = -nt timestamp -verbose -dd ngd -p $(PART) \ + -uc $(UCFDIR)/$(DESIGN).ucf -sd $(NETLISTDIR) + +FITFLAGS = -loc on -optimize speed -nomlopt -wysiwyg -unused float -keepio -slew fast -p $(PART) + +TFLAGS = -detail -iopath + + +# create directories +DUMMY:=$(shell mkdir -p $(WORKDIR)) +DUMMY:=$(shell mkdir -p $(BINDIR)) +DUMMY:=$(shell mkdir -p $(REPORTS)) + +.PHONY: all clean + +all : programmingfile + +programmingfile : $(WORKDIR)/$(DESIGN).jed + cp $(WORKDIR)/$(DESIGN).jed $(BINDIR)/ + +# generate script for xst in command line mode +$(WORKDIR)/xst.conf : $(CONFDIR)/$(DESIGN).prj + touch $(WORKDIR)/xst.conf + echo $(XSTFLAGS) >> $(WORKDIR)/xst.conf + +# generate netlist constraints file +$(WORKDIR)/$(DESIGN).ngc: $(SRC_LIST) $(WORKDIR)/xst.conf + cd $(WORKDIR); xst -ifn xst.conf + cp $(WORKDIR)/xst.srp $(REPORTS)/$(DESIGN)_xst.txt + +# generate native generic database file (ngd) +$(WORKDIR)/$(DESIGN).ngd : $(WORKDIR)/$(DESIGN).ngc $(UCFDIR)/$(DESIGN).ucf + cd $(WORKDIR); ngdbuild $(NGDFLAGS) $(DESIGN).ngc $(DESIGN).ngd + cp $(WORKDIR)/$(DESIGN).bld $(REPORTS)/$(DESIGN).bld + +# generate vm6 file +$(WORKDIR)/$(DESIGN).vm6 : $(WORKDIR)/$(DESIGN).ngd + cd $(WORKDIR); cpldfit $(FITFLAGS) $(DESIGN).ngd + cp $(WORKDIR)/$(DESIGN).rpt $(REPORTS)/$(DESIGN).rpt + +# generate programming file +$(WORKDIR)/$(DESIGN).jed : $(WORKDIR)/$(DESIGN).vm6 + cd $(WORKDIR); hprep6 -i $(DESIGN).vm6 + + +# clean all +clean : + rm -rf $(WORKDIR)/* + rm -rf $(BINDIR)/$(DESIGN).jed + rm -rf $(REPORTS)/$(DESIGN).trp + +distclean : + rm -rf $(WORKDIR) + rm -rf $(BINDIR) + rm -rf $(REPORTS)