Universal utility for programming FPGA
Go to file
Gwenhael Goavec-Merou 63bed1fd54 device: add flash mode as alias to SPI mode 2019-11-18 16:04:29 +01:00
spiOverJtag add design and bitstream to access SPI through JTAG 2019-10-05 19:03:28 +02:00
.gitignore ignore swp 2019-09-28 15:40:46 +02:00
LICENSE Initial commit 2019-09-26 18:27:33 +02:00
Makefile Makefile: install bit file in spiOverJtag 2019-10-05 19:03:59 +02:00
README.md update README with a note about interfaceB: this interface is required by cycloader only when a bitstream must be written in the SPI flash 2019-10-11 09:10:38 +02:00
altera.cpp altera: fix path for svf used to program flash through SPI 2019-10-04 08:27:14 +02:00
altera.hpp Altera: 2019-09-28 15:31:43 +02:00
bitparser.cpp update bitparser: 2019-10-05 10:28:44 +02:00
bitparser.hpp update bitparser: 2019-10-05 10:28:44 +02:00
board.hpp initial commit 2019-09-26 18:29:20 +02:00
cable.hpp initial commit 2019-09-26 18:29:20 +02:00
configBitstreamParser.cpp add configBitstreamParser an base class for all bitstream file parser 2019-10-05 10:27:35 +02:00
configBitstreamParser.hpp add configBitstreamParser an base class for all bitstream file parser 2019-10-05 10:27:35 +02:00
device.cpp Device: 2019-09-28 15:26:47 +02:00
device.hpp device: add flash mode as alias to SPI mode 2019-11-18 16:04:29 +01:00
epcq.cpp epcq: suppress commented include 2019-10-05 18:14:20 +02:00
epcq.hpp epcq.hpp: use double quote for ftdispi 2019-10-05 18:14:45 +02:00
ftdijtag.cpp tab or space ? please choose ;) 2019-11-08 11:30:10 +01:00
ftdijtag.hpp ftdijtag: add shiftIR variant with value passed by value instead of ref. Used when the command is up to 8bits with no read 2019-10-04 08:25:37 +02:00
ftdipp_mpsse.cpp ftdipp_mpsse: add missing vid 2019-09-28 15:38:25 +02:00
ftdipp_mpsse.hpp ftdipp_mpsse: add method to access vid and pid 2019-09-28 15:38:57 +02:00
ftdispi.cpp initial commit 2019-09-26 18:29:20 +02:00
ftdispi.hpp initial commit 2019-09-26 18:29:20 +02:00
jedParser.cpp add parser for jed file (lattice) 2019-11-18 16:03:36 +01:00
jedParser.hpp add parser for jed file (lattice) 2019-11-18 16:03:36 +01:00
lattice.cpp add support for lattice FPGA (currently machXO3) 2019-11-18 16:03:59 +01:00
lattice.hpp add support for lattice FPGA (currently machXO3) 2019-11-18 16:03:59 +01:00
main.cpp main: massive cleanup/rewrite 2019-09-28 15:46:12 +02:00
mcsParser.cpp add parser for MCS files 2019-10-05 19:00:32 +02:00
mcsParser.hpp add parser for MCS files 2019-10-05 19:00:32 +02:00
part.hpp part: fix correct model for artix 35 2019-10-05 18:10:04 +02:00
progressBar.cpp add a progress bar to display some long task status 2019-10-05 18:58:52 +02:00
progressBar.hpp add a progress bar to display some long task status 2019-10-05 18:58:52 +02:00
spiFlash.cpp add class to handle spiflash through jtag. Currently tested with numonyx n25q128 2019-10-05 19:00:10 +02:00
spiFlash.hpp add class to handle spiflash through jtag. Currently tested with numonyx n25q128 2019-10-05 19:00:10 +02:00
svf_jtag.cpp svf_jtag.cpp: use double quote for header 2019-10-05 18:15:12 +02:00
svf_jtag.hpp svf_jtag: add ifndef ... endif in hpp file to avoid multiple definition 2019-09-28 15:34:44 +02:00
test_sfl.svf add svf used to have access to SPI flash through FT2232 interface B 2019-09-26 18:39:03 +02:00
xilinx.cpp xilinx: add support for spi flash (currently only with MCS file) 2019-10-05 19:02:42 +02:00
xilinx.hpp xilinx: add support for spi flash (currently only with MCS file) 2019-10-05 19:02:42 +02:00

README.md

cycloader

Utility for programming Intel/Altera Cyclone and Xilinx Serie 7

Current support:

  • Trenz cyc1000 Cyclone 10 LP 10CL025 (memory and spi flash)
  • Digilent arty Artix xc7a35ti (memory and spi flash)

compile and install

This application uses libftdi1, so this library must be installed (and, depending of the distribution, headers too)

apt-get install libftdi1-2 libftdi1-dev libftdipp1-3 libftdipp1-dev

and if not already done, install pkg-config, make and g++.

To build the app:

$ make

To install

$ sudo make install

Currently, the install path is hardcoded to /usr/local

Usage

cycloader --help
Usage: cycloader [OPTION...] BIT_FILE
cycloader -- a program to flash cyclone10 LP FPGA

  -b, --board=BOARD          board name, may be used instead of cable
  -c, --cable=CABLE          jtag interface
  -d, --display              display FPGA and EEPROM model
  -o, --offset=OFFSET        start offset in EEPROM
  -r, --reset                reset FPGA after operations
  -v, --verbose              Produce verbose output
  -?, --help                 Give this help list
      --usage                Give a short usage message
  -V, --version              Print program version

To have complete help

CYC1000

loading in memory:

sof to svf generation:

quartus_cpf -c -q -g 3.3 -n 12.0MHz p project_name.sof project_name.svf

file load:

cycloader -b cyc1000 project_name.svf

SPI flash:

sof to rpd:

quartus_cpf -o auto_create_rpd=on -c -d EPCQ16A -s 10CL025YU256C8G project_name.svf project_name.jic

file load:

cycloader -b cyc1000 -r project_name_auto.rpd

Note about SPI flash: svf file used to write in flash is just a bridge between FT2232 interfaceB configured in SPI mode and sfl primitive used to access EPCQ SPI flash.

Note about FT2232 interfaceB: This interface is used for SPI communication only when the dedicated svf is loaded in RAM, rest of the time, user is free to use for what he want.

ARTY

To simplify further explanations, we consider the project is generated in the current directory.

loading in memory:

.bit file is the default format generated by vivado, so nothing special task must be done to generates this bitstream.

file load:

cycloader -b arty *.runs/impl_1/*.bit

SPI flash:

.mcs must be generates through vivado with a tcl script like

set project [lindex $argv 0]

set bitfile "${project}.runs/impl_1/${project}.bit"
set mcsfile "${project}.runs/impl_1/${project}.mcs"

write_cfgmem -format mcs -interface spix4 -size 16 \
    -loadbit "up 0x0 $bitfile" -loaddata "" \
    -file $mcsfile -force

Note: -interface spix4 and -size 16 depends on SPI flash capability and size.

The tcl script is used with:

vivado -nolog -nojournal -mode batch -source script.tcl -tclargs myproject

file load:

cycloader -b arty *.runs/impl_1/*.mcs