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