I am using Ubuntu. My workflow is entirely a single Makefile (with rare exceptions to see what ISE does...).
Some time ago I discovered that FPGA Editor has routing capability that often beats PAR and is much quicker. It will also generate a bitstream. So I've been using xst - ngbuild - map - fpga_edline - impact workflow. Unfortunately, Xilinx tools are not very clean and there are several script files involved. But it beats ISE as far as I am concerned.
Here is the entire makefile.
make - synthesize, place, route create a bitstream, assemble bootloader and patch it in, create bitstream and flash file.
make burn - burn the FPGA
make flash - program the Platform Flash.
Code:
#
# DO THIS FIRST:
# source /opt/Xilinx/13.2/ISE_DS/settings32.sh
#
DEVICE = xc3s50-5VQ100
FLASHNAME = 6502_45_004
default: bitstreams
#see UG627-xst manual
# Makefile does not track the parts. Touch top.v!
top.ngc:../hardware/top.v ../hardware/top.ucf ../hardware/top.prj
xst -intstyle silent -ifn ../hardware/top.xst
top.ngd: top.ngc
ngdbuild -intstyle silent -dd _ngo -nt timestamp -uc ../hardware/top.ucf -p $(DEVICE) top.ngc top.ngd
top_map.ncd: top.ngd
map -p $(DEVICE) -timing -logic_opt off \
-ol high -t 1 -register_duplication off -cm area -detail -ir off -pr b \
-power off -o top_map.ncd top.ngd top.pcf
top.nocode.bit: top_map.ncd
fpga_edline top_map.ncd -p ../hardware/fe.scr
top.bit: top.nocode.bit ../bootload/boot.as65
cd ../bootload; ../../bin/as65 -v -l boot.as65; echo $?; ../../bin/bin2mem boot.bin boot.mem
data2mem -bm ../bootload/bram.bmm -bd ../bootload/boot.mem -bt top.nocode.bit -o b top.bit
bitstreams: top.bit
cp top.bit ../bitstreams/top.bit
promgen -w -p mcs -c FF \
-o ../bitstreams/$(FLASHNAME) -x xcf01s \
-u 00000000 top.bit
cp ../bitstreams/$(FLASHNAME).mcs ~/Desktop/SHARED #for enso's setup
cp top.bit ~/Desktop/SHARED #for enso's setup
burn: top.bit
impact -batch ../hardware/impact.FPGA.cmd
flash: ../bitstreams/$(FLASHNAME).mcs
impact -batch ../hardware/impact.XCF01.cmd
clean:
rm -rf *.bgn *.bin *.bit *.xwbt *.bld *.drc *_log *.html *.ncd *.ngc *.ngd *.map *.mrp *.xrpt \
*.ngr *.syr *.twr *.twx *.unroutes webtalk* *_map* *.pad *.lso *.par *.xdl *_summary* *_usage* *.xpi *.stx *.srp \
*.ptwx *.pcf \
_ngo planAhead* iseconfig* _xmsgs xlnx_auto* xst/dump.xst xst/work \
*.prm *.cfi *.hex \
*.log _impact* auto_project* impact.xsl *~
Correction - I misspoke about FPGA Editor mapping the circuit. It does not map, only place and route. Apologies.