# 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)