ISE software using commands
ISE is a grraphical tool to synthesize vhdl into bit-files, to download into a Xilinx device. A much easier way is to use scripts!
On this page you can find how to program GODIL modules with Xilinx FPGA using Xilinx ISE. Using Linux, commands instead of gui. (Scripts for Windows will follow.)
Note vhdl
Procedures containing inout are not always synthesized correctly by ISE.
From vhdl to bit-file
Define module
entity=abc
xcf_file=$entity.xcf
src=abc.vhd
fpga=xc3s500E-VQ100
Run synthesis
echo "run -ifn $src -ifmt vhdl -uc $xcf_file -ofn $entity -p $fpga -top $entity" > cmd.xst
xst -ifn cmd.xst
Run Place And Route etc.
ngdbuild $entity $entity.ngd
map $entity.ngd
par $entity.ncd -w $entity
Generate bitfile.
bitgen $entity -w
Program FPGA directly (program lost after powerdown)
Generate IMPACT commandfile
echo setMode -bscan > impact_fpga.cmd
echo setCable -p auto >> impact_fpga.cmd
echo Identify -inferir >> impact_fpga.cmd
echo identifyMPM >> impact_fpga.cmd
echo assignFile -p 1 -file $entity.bit >> impact_fpga.cmd
echo program -p 1 >> impact_fpga.cmd
echo quit >> impact_fpga.cmd
Run: Program the FPGA (first connect module to PC)
impact -batch impact_fpga.cmd
Prepare program flash: Generate mcs file
Generate IMPACT commandfile
echo setMode -pff > impact_mcs.cmd
echo addConfigDevice -name $entity -path "." >> impact_mcs.cmd
echo setSubmode -pffspi >> impact_mcs.cmd
echo setAttribute -configdevice -attr multibootBpiType -value "" >> impact_mcs.cmd
echo addDesign -version 0 -name "0" >> impact_mcs.cmd
echo addDeviceChain -index 0 >> impact_mcs.cmd
echo setAttribute -configdevice -attr compressed -value "FALSE" >> impact_mcs.cmd
echo setAttribute -configdevice -attr compressed -value "FALSE" >> impact_mcs.cmd
echo setAttribute -configdevice -attr autoSize -value "FALSE" >> impact_mcs.cmd
echo setAttribute -configdevice -attr fileFormat -value "mcs" >> impact_mcs.cmd
echo setAttribute -configdevice -attr fillValue -value "FF" >> impact_mcs.cmd
echo setAttribute -configdevice -attr swapBit -value "FALSE" >> impact_mcs.cmd
echo setAttribute -configdevice -attr dir -value "UP" >> impact_mcs.cmd
echo setAttribute -configdevice -attr multiboot -value "FALSE" >> impact_mcs.cmd
echo setAttribute -configdevice -attr multiboot -value "FALSE" >> impact_mcs.cmd
echo setAttribute -configdevice -attr spiSelected -value "TRUE" >> impact_mcs.cmd
echo setAttribute -configdevice -attr spiSelected -value "TRUE" >> impact_mcs.cmd
echo addPromDevice -p 1 -size 2048 >> impact_mcs.cmd
echo setAttribute -design -attr name -value "0000" >> impact_mcs.cmd
echo addDevice -p 1 -file $entity.bit >> impact_mcs.cmd
echo generate >> impact_mcs.cmd
echo quit >> impact_mcs.cmd
Run: Generate mcs
impact -batch impact_mcs.cmd
Load into flash
Generate IMPACT commandfile
echo setMode -bscan > impact_flsh.cmd
echo setCable -p auto >> impact_flsh.cmd
echo Identify -inferir >> impact_flsh.cmd
echo identifyMPM >> impact_flsh.cmd
echo attachflash -position 1 -spi "M25P32" >> impact_flsh.cmd
echo assignfiletoattachedflash -position 1 -file $entity.mcs >> impact_flsh.cmd
echo Program -p 1 -dataWidth 1 -spionly -e -v -loadfpga >> impact_flsh.cmd
echo quit >> impact_flsh.cmd
Run: Load flash (first connect module to PC)
impact -batch impact_flsh.cmd