Provided by: xc3sprog_0+svn795+dfsg-1build1_amd64 bug

NAME

       xc3sprog - JTAG programming utility for Xilinx FPGAs and PROMs

SYNOPSIS

       xc3sprog -c cable [options] file1spec [file2spec ...]
       xc3sprog -c cable [options] -j

DESCRIPTION

       xc3sprog is a command-line tool for programming FPGAs, microcontrollers and PROMs via JTAG.

       In  a  typical  application, xc3sprog reads a .BIT file generated by an FPGA design tool, and programs it
       into the PROM chip on an FPGA board for persistent storage  or  the  configuration  RAM  of  a  FPGA  for
       temporary storage.  For other use cases, see the section EXAMPLES below.

       As its name indicates, xc3sprog was originally designed for Xilinx Spartan-3 FPGAs.  However, it has been
       extended to handle several other types of devices including Xilinx FPGAs, CPLDs, XCF flash  PROMs,  Atmel
       AVRs  and SPI flash chips.  xc3sprog supports several JTAG cables, including parallel port cables and USB
       programmers.

OPTIONS

       -c cable
              Specify the type of JTAG cable.  The specified  type,  cable  refers  to  a  label  in  the  cable
              database.
              Common cable types are pp (parallel port cable), xpc (Xilinx USB programmer), and ftdi (FTDI-based
              USB programmer).

       -j     Detect the JTAG chain and print a list of attached devices.  This  is  the  default  if  no  other
              action is specified.

       -p val[,val,...]
              Use  device at JTAG chain position val, default is position 0, the device connected to the TDO pin
              of the JTAG cable.  Use this option to select a device from a multi-device JTAG chain.

              If multiple chain positions are specified, the data file will be split, programming the first part
              of  the file into the first specified device and so on. This is useful for boards which a chain of
              multiple XCF chips to configure a single FPGA.

       -Tn    Test the JTAG chain n times.  When running in ISF mode, test the SPI connection.
              If n is not specified, the default is to test 10000 times.
              If n = 0, keep testing forever.

       -J freq
              Run at the specified JTAG clock frequency (freq in Hz).  If not specified, or if  freq  =  0,  the
              default is to run at the maximum frequency supported by the cable.
              Currently only supported for FTDI-based cables.

       -e     Erase the entire device.

       -I[file]
              Work  in ISF mode to program an internal serial flash memory.  The flash memory is attached to the
              primary JTAG target, but not directly accessible via the JTAG chain.  The primary JTAG  target  is
              used  as  a proxy to forward SPI transactions to the flash memory.  If file is specified, start by
              programming the specified bitfile into the primary JTAG target (typically an FPGA).

       -R     Send a reconfiguration command to the target device (XCV, XCF, XCFP  for  reconfiguration  of  the
              connected FPGA device or XC3S, XC6S, XC2V direct)

       -m mapdir
              Search  for  XC2C  map  files  in the specified directory.  Map files are required to handle JEDEC
              files during CPLD programming.  If not specified, defaults to the value of $XC_MAPDIR.

       -d /dev/parportN
              Specify the parallel port device to be used.  If not specified, defaults to the value  of  $XCPORT
              or /dev/parport0.
              Only used for cable type pp.

       -s serialnum
              Use the USB device with the specified serial number string. Needed if several adapters of the same
              type are connected at the same time.

       -L     Use libFTD2XX instead of libftdi to access FTDI-based cables.

       -D     Dump the device database and cable database to files devlist.txt and cablelist.txt in the  current
              directory.  If  a  file  already  exists, xc3sprog tries to generate a unique name by appending an
              increasing number.

       -X opt[,opt...]
              Set configuration mode for XCFnnP PROM devices. Configuration from XCFnnP  PROM  may  be  done  in
              several  modes,  depending  on  the  wiring between XCFnnP and FPGA. By default, xc3sprog prepares
              XCFnnP devices for slave serial mode (FPGA running in master serial mode).

              To override the defaults, specify a comma-separated list of options.  The  following  options  are
              accepted:

              master     XCFnnP is master (FPGA is slave)
              slave      XCFnnP is slave (FPGA is master, this is default)
              parallel   Parallel configuration data bus
              serial     Serial configuration data line (default)
              extclk     Use external clock in master mode
              intclk     Use internal clock in master mode
              fastclk    Use fast internal clock
              slowclk    Use slow internal clock

       -v     Enable verbose output.

       -h     Print a help text.

ACTION SPECIFICATION

       One  or  more  programming  actions  may  be  specified.   Each action consists of a filename, optionally
       followed by attributes in the form <filename:action:offset:style:length>.

       filename
           The file to be written to the device, or the file in which to  store  data  after  reading  from  the
           device. On windows systems, a colon on position 2 is considered as filename part and not as an action
           separator.

       action
           One letter indicating whether to write, read, or verify the device.  If not  specified,  the  default
           action is 'w'.

           w   Erase, then write data from file to device and verify.
           W   Write with auto-sector erase, then verify.
           v   Verify device against file.
           r   Read from device and write to file (no overwriting).
           R   Read from device and write to file, overwriting existing files.

       offset
           The  byte  offset  inside the device where programming/reading should start.  Only supported for SPI,
           XCFnnS devices and XMEGA.

       style
           The format of the specified file.

           BIT      Xilinx .BIT file format.  Default for FPGA, XCF and  SPI
                    devices.
           BIN      Raw binary file.
           BPI      Raw binary file not bit reversed.
           MCS      Xilinx .MCS file format.
           IHEX     Intel  HEX  format.   Also  used  by Xilinx PROMGEN when
                    writing MCS files.  Default for XMEGA devices.
           HEXRAW   Raw sequence of hexadecimal digits.
           JEDEC    Default for CPLD devices.

       length
           The number of bytes to program/read.  Only supported for SPI, XCFnnS and XMEGA devices.

DEVICE DATABASE

       The device database contains a list of supported JTAG devices.  When xc3sprog starts, it scans  the  JTAG
       chain  to  discover  all  attached  devices.  A device database is used to map the 32-bit ID codes of the
       devices to descriptive names and get basic knowledge how to handle the part, at minimum how to skip it.

       A default device database is compiled into the xc3sprog executable.  The database is tried to  be  loaded
       from  a  file  at  run  time.  If the environment variable $XCDB is defined, it specifies the name of the
       device database file, otherwise the file devlist.txt is read from the current directory.  If  a  database
       file is not found at all, the internal compile-time database will be used.

       If  a  device  is not yet know, the builtin list can be dumped, the information on the unknown part added
       and on the next run the new list will be read and used.

CABLE DATABASE

       The cable database contains a list of supported JTAG cables.  Each cable type is identified  by  a  short
       label,  such as pp, ftdijtag, or xpc.  The database maps the label to parameters to be used to access the
       hardware of the cable.

       A default cable database is compiled into the xc3sprog executable.  The database is tried  to  be  loaded
       from  a  file at run time.  If the environment variable $CABLEDB is defined, it specifies the name of the
       cable database file, otherwise the file cablelist.txt is read from the current directory.  If a  database
       file is not found at all, the internal compile-time database will be used.

       If  a  cable  subtype  (e.g.  different  VID/PID)  is  not  yet know, the builtin list can be dumped, the
       information on the new cable added and on the next run the new list will be read and used.

       The database contains a line for each nown cable. The line consists of the alias for that cable  to  used
       with  the  -c option, the basic type of the cable, the maximum allowed JTAG frequency of the cable and an
       optional option string.

       For FTDI devices the option string contains the USB vendor ID (VID), USB product ID (PID), the USB device
       description  string,  the FTDI channel of the JTAG interface and eventual commands for setting other pins
       beside the JTAG pins. e.g. to switch on some buffers. If the JTAG device uses a FTDI default VID/PID, the
       USB  device description string is important to destinguish your JTAG device from other eventual connected
       FTDI devices with the same VID/PID

EXAMPLES

       xc3sprog -c pp -j
           Show a list of JTAG devices attached to the parallel port JTAG cable.

       xc3sprog -c ftdijtag -v -p 0 design.bit
           Program the specified bitfile into the first device (position 0) in the JTAG  chain.   Use  an  FTDI-
           based USB JTAG cable.  Show detailed progress information.

       xc3sprog -c ftidjtag -T
           Test the integrity of the JTAG chain.

       xc3sprog -c xpc -p 1 dump.bit:r
           Read  the  contents  from  the JTAG device in position 1 in the chain, and write the data as a Xilinx
           .BIT file.  Use a Xilinx USB programmer.

       xc3sprog -c cable -Ibscan_spi/xc3s50an.bit design.bit
           Load xc3s50an.bit into the FPGA in position 0 in the JTAG chain.  Then, program design.bit  into  the
           ISF memory in the FPGA.

       xc3sprog -c cable -I image.bit:w:0x10000
           Program the image file into the SPI memory attached to the FPGA, starting at byte offset 0x10000.  An
           appropriate bscan_spi file must already be loaded in the FPGA, so  that  it  will  act  as  a  bridge
           between the JTAG cable and SPI bus.

ENVIRONMENT

       XCDB   Name of the file to use as device database.  The default is devlist.txt in the current directory.

       CABLEDB
              Name of the file to use as cable database.  The default is cablelist.txt in the current directory.

       XCPORT Parallel  port  device  to  be  used  for JTAG cable type pp.  The default is /dev/parport0.  This
              setting may be overridden by command-line option -d.

       XC_MAPDIR
              Default directory to search for XC2C map files.  This setting may be  overridden  by  command-line
              option -m.

       JTAG_DEBUG
              If specified, a log of JTAG operations is written to a file with this name.

       FTDI_DEBUG
              If  specified,  a  log  of  interactions with the FTDI device is written to a file with this name.
              Only used for FTDI-based cable types.

       XPC_DEBUG
              If specified, a log of interactions with the XPC programmer is written to a file with  this  name.
              Only used for XPC-based cable types.

       SPI_DEBUG
              If specified, a log of SPI operations is written to a file with this name.  Only used in ISF mode.

       PDI_DEBUG
              If  specified,  a  log  of  PDI  operations  is  written to a file with this name.  Only used when
              programming an Atmel XMega device.

FILES

       devlist.txt
              The device database, containing a list of known JTAG target devices.  This file is read  from  the
              current directory by default, or from the location indicated by the XCDB environment variable.  If
              not found, an internal compile-time version of the device database is used.

       cablelist.txt
              The cable database, containing a list of known JTAG cable types.   This  file  is  read  from  the
              current  directory by default, or from the location indicated by the CABLEDB environment variable.
              If not found, an internal compile-time version of the cable database is used.

SEE ALSO

       http://sourceforge.net/projects/xc3sprog/

Contribute back

        Feedback on success/failure/enhancement requests:
            http://sourceforge.net/mail/?group_id=170565

                                                   2011-09-04                                        XC3SPROG(1)