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