FPGA, SoC, And CPLD Boards And Kits
FPGA Evaluation and Development Kits
Intel Support hours are Monday-Fridays, 8am-5pm PST, except Holidays. Thanks to our community members who provide support during our down time or before we get to your questions. We appreciate you!

Need Forum Guidance? Click here
Search our FPGA Knowledge Articles here.
5234 Discussions

Writing the CFI flash of the Arria 10GX Dev Kit via JTAG.

2 Convert bts_config.sof to bts_config.flash intended for updating user hardware1 portion at 0x02D00000. sof2flash --input=bts_config.sof --output=bts_config.flash --offset=0x02D00000 --pfl --optionbit=0x00180000 --programmingmode=PS   3 Convert bts_config.sof to bts_config.flash intended for updating user hardware2 portion at 0x05800000. sof2flash --input=bts_config.sof --output=bts_config.flash --offset=0x05800000 --pfl --optionbit=0x00180000 --programmingmode=PS

I'm having trouble writing to the 2x1Gb flash of the Arria 10GX Development Kit (PRD) via JTAG. The goal is having multiple sofs in the flash, but my attempts fail even for just one.


First of all, there is a readme (build_factory_example) that tells you these cmd line parameters. While the first one works, the second one fails due to size exceeded. Feels great having bought a 5k board where even the basic manufacturer examples are false...


My next attempts were creating a pof via Quartus GUI "convert programming files".

I chose CFI_2Gb, passive parallel x32 and added option bits and 2 sofs at the address offset given in the user guide.

Question here: which page should I use? I tried 0/1 and 1/2 so far.


When I open the programmer and scan the chain, the CFI flash shows up as "2*CFI_1Gb". When I add the just created .pof, this changes to "CFI_2Gb".

I can then start programming, and see the flash is erased. As soon as it tries to start writing, it just fails with "Operation Failed" and no further output.


How can I write the flash?

It is really annoying to see such a basic feature not properly documented in the user guide :|

Thanks in advance!

0 Kudos
3 Replies

Hi Andreas,


First of all, you need to generate the appropriate bitstream in order to write into flash. You need select RPD bitstream and write it in little endian.


2ndly, you need the usage of IP which is Serial flash to write it into flash using JTAG. You may refer to the user guide for the usage of this IP.






thanks for the answer. For writing to the flash, I was following exactly the steps given by the Dev Kit user guide for writing the CFI via the MAXV.


As it seems, the pof I generated was actually correct.

I was able to successfully write the flash after I lowered the USB JTAG frequency in the programmer to 2MHz. By default, Quartus sets 24MHz for the USB JTAG which does work for direct sof config, but not for flash.

With 12MHz, it usually fails somewhere in between, which tells me this is really a clock related issue.

I did not find any note on the JTAG frequency in the user guide, however. Can anyone confirm this?


The other questions remains: the sof2flash example from the user guide does not work when I execute the given command.




Yes, the TCK frequency has to be lowered in order to work perfectly. Usually, we will recommend to lower to 6MHz.


Meanwhile for the sof2flash, may i know which user guide and example are you following?


Thank You.