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