URL
https://opencores.org/ocsvn/xulalx25soc/xulalx25soc/trunk
Subversion Repositories xulalx25soc
[/] [xulalx25soc/] [trunk/] [xilinx/] [Makefile] - Rev 10
Go to most recent revision | Compare with Previous | Blame | View Log
################################################################################
##
## Filename: Makefile
##
## Project: XuLA2 board
##
## Purpose: In case you don't want to fire up ISE, this Makefile attempts
## to coordinate the build process without it. While it works in
## testing, there are some problems to this approach. The first is that
## if you bust timing, you may never know it--nothing will tell you it
## failed. Second, the output file is different from the output file
## produced via ISE. Still ... for a command line make script, it is a
## (good) start.
##
## Makefile targets:
##
## xula.bit The FPGA bitfile or configuration file
##
## objdir Makes a directory for temporary build files, which can
## then be removed later with a clean target. While a
## great idea in principle, this doesn't work well in
## practice since Xilinx's ISE never uses it.
##
## clean Removes intermediate build files.
##
## Creator: Dan Gisselquist, Ph.D.
## Gisselquist Technology, LLC
##
################################################################################
##
## Copyright (C) 2015, Gisselquist Technology, LLC
##
## This program is free software (firmware): you can redistribute it and/or
## modify it under the terms of the GNU General Public License as published
## by the Free Software Foundation, either version 3 of the License, or (at
## your option) any later version.
##
## This program is distributed in the hope that it will be useful, but WITHOUT
## ANY WARRANTY; without even the implied warranty of MERCHANTIBILITY or
## FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
## for more details.
##
## License: GPL, v3, as defined and found on www.gnu.org,
## http:##www.gnu.org/licenses/gpl.html
##
##
################################################################################
##
##
DIR_SPACES := $(subst /, ,$(CURDIR))
DIR_NAME := $(word $(words $(DIR_SPACES)), $(DIR_SPACES))
PROJECT := xula
BRD := lx25
PART := xc6s$(BRD)-ftg256-2
OBJDIR := obj-xilinx
UCFFILE := ../xula.ucf
ifeq ($(shell uname),Linux)
MKDIR:=mkdir
else
MKDIR:=gmkdir
endif
SRCDIR := ../rtl
CPUDIR := ../rtl/cpu
JTAGBUS := wbufifo.v wbubus.v wbucompactlines.v wbucompress.v \
wbudecompress.v wbudeword.v wbuexec.v wbuidleint.v wbuinput.v \
wbuoutput.v wbureadcw.v wbusixchar.v wbutohex.v
PERIPHERALS: wbgpio.v wbpwmaudio.v rxuart.v txuart.v uartdev.v \
rtcdate.v rtclight.v
CPUSRC := zipsystem.v \
busdelay.v wbarbiter.v wbdblpriarb.v \
zipcpu.v cpuops.v pfcache.v idecode.v pipemem.v pipefetch.v div.v \
zipcounter.v zipjiffies.v ziptimer.v wbdmac.v wbwatchdog.v
SOURCES := toplevel.v jtagser.v busmaster.v \
ioslave.v memdev.v hexmap.v icontrol.v builddate.v \
wbspiflash.v lldspi.v \
wbsdramng.v wbscope.v wbscopc.v $(JTAGBUS)
RTLFILES := $(addprefix $(SRCDIR)/,$(SOURCES)) $(addprefix $(CPUDIR)/,$(CPUSRC))
all: objdir xula.bit
.PHONY: objdir
objdir:
@bash -c "if [ ! -e $(OBJDIR)/ ]; then $(MKDIR) -p $(OBJDIR)/; fi"
$(OBJDIR)/$(PROJECT).ngc: $(RTLFILES) $(PROJECT).xst
$(MKDIR) -p xst/projnav.tmp/
xst -intstyle ise -ifn $(PROJECT).xst -ofn $(OBJDIR)/$(PROJECT).syr
mv $(PROJECT).ngc $(OBJDIR)/$(PROJECT).ngc
mv $(PROJECT).ngr $(OBJDIR)/$(PROJECT).ngr
$(OBJDIR)/$(PROJECT).ngd: $(OBJDIR)/$(PROJECT).ngc
ngdbuild -intstyle ise -dd _ngo -nt timestamp \
-uc $(UCFFILE) -p $(PART) $(OBJDIR)/$(PROJECT).ngc $(OBJDIR)/$(PROJECT).ngd
PRVMAPOPTS := -w -detail -ir off -ignore_keep_hierarchy -pr b -timing \
-ol high -logic_opt on
MAPOPTS := -w -detail -logic_opt on -ol high -xe n -t 1 -xt 0 -r 4 \
-global_opt speed -equivalent_register_removal on -mt 2 -detail \
-ir off -ignore_keep_hierarchy -pr off -lc off -power xe
$(OBJDIR)/$(PROJECT).ncd: $(OBJDIR)/$(PROJECT).ngd
map -intstyle ise -p $(PART) $(MAPOPTS) \
-o $(OBJDIR)/$(PROJECT)_map.ncd $(OBJDIR)/$(PROJECT).ngd $(OBJDIR)/$(PROJECT).pcf
$(OBJDIR)/$(PROJECT).ncd: $(OBJDIR)/$(PROJECT)_map.ncd
par -w -intstyle ise -ol high -mt 4 $(OBJDIR)/$(PROJECT)_map.ncd $(OBJDIR)/$(PROJECT).ncd $(OBJDIR)/$(PROJECT).pcf
$(PROJECT).bit: $(OBJDIR)/$(PROJECT).ncd
bitgen -f $(PROJECT).ut $(OBJDIR)/$(PROJECT).ncd $(PROJECT).bit
timing: $(OBJDIR)/$(PROJECT).ncd $(OBJDIR)/$(PROJECT).pcf
trce -v 3 -s 2 -n 3 -fastpaths -xml $(OBJDIR)/$(PROJECT).twx -o $(OBJDIR)/$(PROJECT).ncd -o $(OBJDIR)/$(PROJECT).twr $(OBJDIR)/$(PROJECT).pcf
.PHONY: clean
clean:
@-rm -rf $(OBJDIR)
@-rm -f *.ngc *.ngd *.ncd *.pcf *.lso *.ngr *.bgn *.bld *.cmd_log
@-rm -f *.drc *.gise *.map *.mrp *.ngm *.syr *.xwbt *.xrpt
@-rm -f *.pad *.par *.psr *.ptwx *.unroutes *.xpi *.csv *.xml
@-rm -f *.html *.xrpt *.log *.stx *.tcl *.txt *.twr *.twx
@-rm -rf _ngo _xmsgs xlnx_* ipcore_dir iseconfig templates xst
@echo "All cleaned up"
Go to most recent revision | Compare with Previous | Blame | View Log