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