cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
mbarnard
Participant
Participant
1,104 Views
Registered: ‎09-30-2008

Artix 7 Multiboot with Vivado 2019.1

Hi - 

 

I recently converted an Artix 7 design from Vivado 2017.4 to 2019.1.  With this design I generate a golden and a multiboot image.  These get loaded into a quad SPI EEPROM to program the FPGA on power up.  This worked OK when the images were created with 2017.4.  But with 2019.1, I can't get the FPGA booted up.

 

If I create a normal image (i.e. not supporting multiboot) with Vivado 2019.1, everything is fine.  So, my question is, what happened?  Is this not supported with Artix 7 devices with the newer Vivado versions?

 

Mike Barnard

0 Kudos
10 Replies
hj
Moderator
Moderator
1,099 Views
Registered: ‎06-05-2013

Hi Mike,

It is supported and you should be able to boot from multiboot design. To help in a better way!
Do share the design properties, may be there are format or constraints syntax changes.
open the implemented (or routed dcp) & run the below command:
report_property -all [current_design]
Share the above properties for both golden and update.

Share write_cfgmem command for generating the mcs file.

Thanks
Harshit
-------------------------------------------------------------------------------------
For more information please refer to configuration resources https://forums.xilinx.com/t5/FPGA-Configuration/Configuration-Resources/m-p/753763/highlight/true#M5891
-------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------
0 Kudos
mbarnard
Participant
Participant
1,084 Views
Registered: ‎09-30-2008

Here is the current design properties, the write config. command and the .xdc constraints for the golden image generation:

 

report_property -all [current_design]
Property                                  Type     Read-only  Value
BITSTREAM.CONFIG.BPI_1ST_READ_CYCLE       enum     false     
BITSTREAM.CONFIG.BPI_PAGE_SIZE            enum     false     
BITSTREAM.CONFIG.BPI_SYNC_MODE            enum     false     
BITSTREAM.CONFIG.CCLKPIN                  enum     false     
BITSTREAM.CONFIG.CCLK_TRISTATE            enum     false     
BITSTREAM.CONFIG.CONFIGFALLBACK           enum     false     
BITSTREAM.CONFIG.CONFIGRATE               enum     false      50
BITSTREAM.CONFIG.DCIUPDATEMODE            enum     false     
BITSTREAM.CONFIG.DONEPIN                  enum     false     
BITSTREAM.CONFIG.EXTMASTERCCLK_EN         enum     false     
BITSTREAM.CONFIG.INITPIN                  enum     false     
BITSTREAM.CONFIG.INITSIGNALSERROR         enum     false     
BITSTREAM.CONFIG.M0PIN                    enum     false     
BITSTREAM.CONFIG.M1PIN                    enum     false     
BITSTREAM.CONFIG.M2PIN                    enum     false     
BITSTREAM.CONFIG.NEXT_CONFIG_ADDR         hex      false      32'h01000000
BITSTREAM.CONFIG.NEXT_CONFIG_REBOOT       enum     false      ENABLE
BITSTREAM.CONFIG.OVERTEMPPOWERDOWN        enum     false     
BITSTREAM.CONFIG.PERSIST                  enum     false      NO
BITSTREAM.CONFIG.PROGPIN                  enum     false     
BITSTREAM.CONFIG.REVISIONSELECT           enum     false     
BITSTREAM.CONFIG.REVISIONSELECT_TRISTATE  enum     false     
BITSTREAM.CONFIG.SELECTMAPABORT           enum     false     
BITSTREAM.CONFIG.SPI_32BIT_ADDR           enum     false      YES
BITSTREAM.CONFIG.SPI_BUSWIDTH             enum     false      4
BITSTREAM.CONFIG.SPI_FALL_EDGE            enum     false     
BITSTREAM.CONFIG.TCKPIN                   enum     false     
BITSTREAM.CONFIG.TDIPIN                   enum     false     
BITSTREAM.CONFIG.TDOPIN                   enum     false     
BITSTREAM.CONFIG.TIMER_CFG                hex      false      32'h00030000
BITSTREAM.CONFIG.TIMER_USR                hex      false     
BITSTREAM.CONFIG.TMSPIN                   enum     false     
BITSTREAM.CONFIG.UNUSEDPIN                enum     false     
BITSTREAM.CONFIG.USERID                   hex      false     
BITSTREAM.CONFIG.USR_ACCESS               string   false      TIMESTAMP
BITSTREAM.ENCRYPTION.ENCRYPT              enum     false     
BITSTREAM.ENCRYPTION.ENCRYPTKEYSELECT     enum     false     
BITSTREAM.ENCRYPTION.HKEY                 hex      false     
BITSTREAM.ENCRYPTION.KEY0                 hex      false     
BITSTREAM.ENCRYPTION.KEYFILE              file     false     
BITSTREAM.ENCRYPTION.STARTCBC             hex      false     
BITSTREAM.GENERAL.COMPRESS                enum     false      TRUE
BITSTREAM.GENERAL.CRC                     enum     false     
BITSTREAM.GENERAL.DEBUGBITSTREAM          enum     false     
BITSTREAM.GENERAL.DISABLE_JTAG            enum     false     
BITSTREAM.GENERAL.JTAG_XADC               enum     false     
BITSTREAM.GENERAL.PERFRAMECRC             enum     false     
BITSTREAM.GENERAL.XADCENHANCEDLINEARITY   enum     false     
BITSTREAM.GENERAL.XADCPOWERDOWN           enum     false     
BITSTREAM.READBACK.ACTIVERECONFIG         enum     false     
BITSTREAM.READBACK.ICAP_SELECT            enum     false     
BITSTREAM.READBACK.SECURITY               enum     false     
BITSTREAM.READBACK.XADCPARTIALRECONFIG    enum     false     
BITSTREAM.STARTUP.DONEPIPE                enum     false     
BITSTREAM.STARTUP.DONE_CYCLE              enum     false     
BITSTREAM.STARTUP.GTS_CYCLE               enum     false     
BITSTREAM.STARTUP.GWE_CYCLE               enum     false     
BITSTREAM.STARTUP.LCK_CYCLE               enum     false     
BITSTREAM.STARTUP.MATCH_CYCLE             enum     false     
BITSTREAM.STARTUP.STARTUPCLK              enum     false     
BMM_FILE                                  string   false     
CFGBVS                                    enum     false      VCCO
CLASS                                     string   true       design
CONFIG_MODE                               enum     false      SPIx4
CONFIG_VOLTAGE                            enum     false      3.3
CONSTRSET                                 fileset  true       constrs_1
DCP_VERSION                               string   true       Vivado v2019.1 (64-bit) SW Build 2552052 on Fri May 24 14:47:09 MDT 2019
DEFAULT_IOSTANDARD                        string   false     
ENABLE_AIE_NETLIST_VIEW                   string   false      1
HD.ISOLATED                               bool     false     
HD.OVERRIDE_PERSIST                       bool     false     
HD.PARTITION                              bool     false     
HD.RECONFIGURABLE                         bool     false     
HD.TANDEM_BITSTREAMS                      enum     false     
IS_BLOCK                                  bool     true       0
IS_PRSHELL_DESIGN                         bool     true      
KEEP_COMPATIBLE                           string*  false     
KEEP_HIERARCHY                            enum     false     
MLO_VERSION_NUMBER                        string   false      2019.1_9
NAME                                      string   true       impl_1
NEEDS_REFRESH                             bool     true       0
NEEDS_SAVE                                bool     true       0
PART                                      part     true       xc7a35tftg256-2
POST_CRC                                  enum     false     
POST_CRC_ACTION                           enum     false     
POST_CRC_FREQ                             int*     false     
POST_CRC_INIT_FLAG                        enum     false     
POST_CRC_SOURCE                           enum     false     
SPEED_LABEL                               string   true      
SPEED_LEVEL_ID                            string   true      
SPEED_LEVEL_ID_DATE                       string   true      
SRCSET                                    fileset  true       sources_1
SUSPEND_FILTER                            string   false     
TOP                                       string   true       top
XLNX_PROJ_DIR                             string   false      /home/mike/vivado/Scarlet_Classic/Narf/top

write_cfgmem  -format mcs -size 32 -interface SPIx4 -loadbit {up 0x00000000 "/home/mike/vivado/Scarlet_Classic/Narf/top/top.runs/impl_1/top.bit" } -checksum -force -file "/home/mike/vivado/Scarlet_Classic/Narf/top/top.runs/impl_1/top_gold.mcs"

#set_property CFGBVS VCCO [current_design]
#set_property CONFIG_VOLTAGE 3.3 [current_design]

set_property BITSTREAM.CONFIG.CONFIGRATE 50 [current_design]
set_property BITSTREAM.CONFIG.PERSIST NO [current_design]
set_property BITSTREAM.CONFIG.SPI_BUSWIDTH 4 [current_design]
set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design]
set_property BITSTREAM.CONFIG.USR_ACCESS TIMESTAMP [current_design]
set_property CONFIG_MODE SPIx4 [current_design]
set_property BITSTREAM.CONFIG.SPI_32BIT_ADDR YES [current_design]

# Golden Image settings
set_property BITSTREAM.CONFIG.NEXT_CONFIG_ADDR 0x01000000 [current_design]
set_property BITSTREAM.CONFIG.NEXT_CONFIG_REBOOT ENABLE [current_design]
set_property BITSTREAM.CONFIG.TIMER_CFG 0x30000 [current_design]

# MultiBoot Image Settings
#set_property BITSTREAM.CONFIG.CONFIGFALLBACK ENABLE [current_design]
#set_property BITSTREAM.CONFIG.TIMER_CFG 0x30000 [current_design]

0 Kudos
mbarnard
Participant
Participant
1,083 Views
Registered: ‎09-30-2008

Here is the current design properties, the write config. command and the .xdc constraints for the multiboot image generation:

 

report_property -all [current_design]
Property                                  Type     Read-only  Value
BITSTREAM.CONFIG.BPI_1ST_READ_CYCLE       enum     false     
BITSTREAM.CONFIG.BPI_PAGE_SIZE            enum     false     
BITSTREAM.CONFIG.BPI_SYNC_MODE            enum     false     
BITSTREAM.CONFIG.CCLKPIN                  enum     false     
BITSTREAM.CONFIG.CCLK_TRISTATE            enum     false     
BITSTREAM.CONFIG.CONFIGFALLBACK           enum     false      ENABLE
BITSTREAM.CONFIG.CONFIGRATE               enum     false      50
BITSTREAM.CONFIG.DCIUPDATEMODE            enum     false     
BITSTREAM.CONFIG.DONEPIN                  enum     false     
BITSTREAM.CONFIG.EXTMASTERCCLK_EN         enum     false     
BITSTREAM.CONFIG.INITPIN                  enum     false     
BITSTREAM.CONFIG.INITSIGNALSERROR         enum     false     
BITSTREAM.CONFIG.M0PIN                    enum     false     
BITSTREAM.CONFIG.M1PIN                    enum     false     
BITSTREAM.CONFIG.M2PIN                    enum     false     
BITSTREAM.CONFIG.NEXT_CONFIG_ADDR         hex      false     
BITSTREAM.CONFIG.NEXT_CONFIG_REBOOT       enum     false     
BITSTREAM.CONFIG.OVERTEMPPOWERDOWN        enum     false     
BITSTREAM.CONFIG.PERSIST                  enum     false      NO
BITSTREAM.CONFIG.PROGPIN                  enum     false     
BITSTREAM.CONFIG.REVISIONSELECT           enum     false     
BITSTREAM.CONFIG.REVISIONSELECT_TRISTATE  enum     false     
BITSTREAM.CONFIG.SELECTMAPABORT           enum     false     
BITSTREAM.CONFIG.SPI_32BIT_ADDR           enum     false      YES
BITSTREAM.CONFIG.SPI_BUSWIDTH             enum     false      4
BITSTREAM.CONFIG.SPI_FALL_EDGE            enum     false     
BITSTREAM.CONFIG.TCKPIN                   enum     false     
BITSTREAM.CONFIG.TDIPIN                   enum     false     
BITSTREAM.CONFIG.TDOPIN                   enum     false     
BITSTREAM.CONFIG.TIMER_CFG                hex      false      32'h00030000
BITSTREAM.CONFIG.TIMER_USR                hex      false     
BITSTREAM.CONFIG.TMSPIN                   enum     false     
BITSTREAM.CONFIG.UNUSEDPIN                enum     false     
BITSTREAM.CONFIG.USERID                   hex      false     
BITSTREAM.CONFIG.USR_ACCESS               string   false      TIMESTAMP
BITSTREAM.ENCRYPTION.ENCRYPT              enum     false     
BITSTREAM.ENCRYPTION.ENCRYPTKEYSELECT     enum     false     
BITSTREAM.ENCRYPTION.HKEY                 hex      false     
BITSTREAM.ENCRYPTION.KEY0                 hex      false     
BITSTREAM.ENCRYPTION.KEYFILE              file     false     
BITSTREAM.ENCRYPTION.STARTCBC             hex      false     
BITSTREAM.GENERAL.COMPRESS                enum     false      TRUE
BITSTREAM.GENERAL.CRC                     enum     false     
BITSTREAM.GENERAL.DEBUGBITSTREAM          enum     false     
BITSTREAM.GENERAL.DISABLE_JTAG            enum     false     
BITSTREAM.GENERAL.JTAG_XADC               enum     false     
BITSTREAM.GENERAL.PERFRAMECRC             enum     false     
BITSTREAM.GENERAL.XADCENHANCEDLINEARITY   enum     false     
BITSTREAM.GENERAL.XADCPOWERDOWN           enum     false     
BITSTREAM.READBACK.ACTIVERECONFIG         enum     false     
BITSTREAM.READBACK.ICAP_SELECT            enum     false     
BITSTREAM.READBACK.SECURITY               enum     false     
BITSTREAM.READBACK.XADCPARTIALRECONFIG    enum     false     
BITSTREAM.STARTUP.DONEPIPE                enum     false     
BITSTREAM.STARTUP.DONE_CYCLE              enum     false     
BITSTREAM.STARTUP.GTS_CYCLE               enum     false     
BITSTREAM.STARTUP.GWE_CYCLE               enum     false     
BITSTREAM.STARTUP.LCK_CYCLE               enum     false     
BITSTREAM.STARTUP.MATCH_CYCLE             enum     false     
BITSTREAM.STARTUP.STARTUPCLK              enum     false     
BMM_FILE                                  string   false     
CFGBVS                                    enum     false      VCCO
CLASS                                     string   true       design
CONFIG_MODE                               enum     false      SPIx4
CONFIG_VOLTAGE                            enum     false      3.3
CONSTRSET                                 fileset  true       constrs_1
DCP_VERSION                               string   true       Vivado v2019.1 (64-bit) SW Build 2552052 on Fri May 24 14:47:09 MDT 2019
DEFAULT_IOSTANDARD                        string   false     
ENABLE_AIE_NETLIST_VIEW                   string   false      1
HD.ISOLATED                               bool     false     
HD.OVERRIDE_PERSIST                       bool     false     
HD.PARTITION                              bool     false     
HD.RECONFIGURABLE                         bool     false     
HD.TANDEM_BITSTREAMS                      enum     false     
IS_BLOCK                                  bool     true       0
IS_PRSHELL_DESIGN                         bool     true      
KEEP_COMPATIBLE                           string*  false     
KEEP_HIERARCHY                            enum     false     
MLO_VERSION_NUMBER                        string   false      2019.1_9
NAME                                      string   true       impl_1
NEEDS_REFRESH                             bool     true       0
NEEDS_SAVE                                bool     true       0
PART                                      part     true       xc7a35tftg256-2
POST_CRC                                  enum     false     
POST_CRC_ACTION                           enum     false     
POST_CRC_FREQ                             int*     false     
POST_CRC_INIT_FLAG                        enum     false     
POST_CRC_SOURCE                           enum     false     
SPEED_LABEL                               string   true      
SPEED_LEVEL_ID                            string   true      
SPEED_LEVEL_ID_DATE                       string   true      
SRCSET                                    fileset  true       sources_1
SUSPEND_FILTER                            string   false     
TOP                                       string   true       top
XLNX_PROJ_DIR                             string   false      /home/mike/vivado/Scarlet_Classic/Narf/top

write_cfgmem  -format mcs -size 32 -interface SPIx4 -loadbit {up 0x01000000 "/home/mike/vivado/Scarlet_Classic/Narf/top/top.runs/impl_1/top.bit" } -checksum -force -file "/home/mike/vivado/Scarlet_Classic/Narf/top/top.runs/impl_1/top_multi.mcs"

#set_property CFGBVS VCCO [current_design]
#set_property CONFIG_VOLTAGE 3.3 [current_design]

set_property BITSTREAM.CONFIG.CONFIGRATE 50 [current_design]
set_property BITSTREAM.CONFIG.PERSIST NO [current_design]
set_property BITSTREAM.CONFIG.SPI_BUSWIDTH 4 [current_design]
set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design]
set_property BITSTREAM.CONFIG.USR_ACCESS TIMESTAMP [current_design]
set_property CONFIG_MODE SPIx4 [current_design]
set_property BITSTREAM.CONFIG.SPI_32BIT_ADDR YES [current_design]

# Golden Image settings
#set_property BITSTREAM.CONFIG.NEXT_CONFIG_ADDR 0x01000000 [current_design]
#set_property BITSTREAM.CONFIG.NEXT_CONFIG_REBOOT ENABLE [current_design]
#set_property BITSTREAM.CONFIG.TIMER_CFG 0x30000 [current_design]

# MultiBoot Image Settings
set_property BITSTREAM.CONFIG.CONFIGFALLBACK ENABLE [current_design]
set_property BITSTREAM.CONFIG.TIMER_CFG 0x30000 [current_design]

0 Kudos
hj
Moderator
Moderator
1,059 Views
Registered: ‎06-05-2013

Properties looks ok. Have you tested the golden.bit and update.bit. Does those work correctly?
Command is also correct if you selecting the config_file_only option while programming the individual .mcs file.

write_cfgmem -format mcs -size 32 -interface SPIx4 -loadbit {up 0x00000000 "/home/mike/vivado/Scarlet_Classic/Narf/top/top.runs/impl_1/top.bit" up 0x01000000 "/home/mike/vivado/Scarlet_Classic/Narf/top/top.runs/impl_1/top.bit" } -checksum -force -file "/home/mike/vivado/Scarlet_Classic/Narf/top/top.runs/impl_1/combined.mcs"

Can you share the configuration status register after loading the mcs file. Just make sure to disconnect JTAG when you are trying to boot from QSPI.
Connect it back to read the configuration status.,

-harshit
-------------------------------------------------------------------------------------
For more information please refer to configuration resources https://forums.xilinx.com/t5/FPGA-Configuration/Configuration-Resources/m-p/753763/highlight/true#M5891
-------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------
0 Kudos
mbarnard
Participant
Participant
941 Views
Registered: ‎09-30-2008

Hi - Sorry for the delay. It took me a few days to get back to this problem.

I have discovered something interesting.  If I generate the golden and multiboot images using the Windows version of Vivado 2019.1 everything works OK.  If I use the Linux version (which is what I normally use), then I see the failure to boot.

 

Regards,

Mike Barnard

hj
Moderator
Moderator
938 Views
Registered: ‎06-05-2013

Hi Mike,
Thanks for the update. Is it possible to share the status register for fail case i.e when you load the linux version files. Have you compared the generated files? Any differences apart from the bitstream header.

Meanwhile I will test this on KC705 and share the results.

Thanks
harshit
-------------------------------------------------------------------------------------
For more information please refer to configuration resources https://forums.xilinx.com/t5/FPGA-Configuration/Configuration-Resources/m-p/753763/highlight/true#M5891
-------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------
0 Kudos
mbarnard
Participant
Participant
885 Views
Registered: ‎09-30-2008

I looked at the two files.  They aren't going to be the same as I embed date codes.  Also there is the idiotic carriage return line feed vs. line feed issue to deal with.  Those issues aside, the linux generated .mcs files are significantly bigger than the Windows ones.  Windows .mcs files are 2956 KB and linux ones are 3448 KB (with CR LF issues normalized).  When it doesn't boot off of the linux files the status registers are:

REGISTER.BOOT_STATUS 00000000000000000000000000000000

REGISTER.CONFIG_STATUS 01010000000000000001100100001100

REGISTER.WBSTAR 01000000

 

Mike Barnard

 

 

0 Kudos
marode
Participant
Participant
455 Views
Registered: ‎04-27-2009

I can confirm that Vivado 2019.2 under Linux does not shift the address in the NEXT_CONFIG_ADDR constraint by one byte when it is written to WBSTAR. Using the Windows version it works.

See also https://forums.xilinx.com/t5/Design-Methodologies-and/Write-Bitstream-Error-xc7a15tftg256-1/td-p/1124365

marode
Participant
Participant
437 Views
Registered: ‎04-27-2009

Workaround: shift the NEXT_CONFIG_ADDR manually.

 

# Vivado 2019.2 on Windows:
set_property BITSTREAM.CONFIG.NEXT_CONFIG_ADDR 32'h00400000 [current_design]
# Vivado 2019.2 on Linux:
set_property BITSTREAM.CONFIG.NEXT_CONFIG_ADDR 32'h00004000 [current_design]

 

0 Kudos
mbarnard
Participant
Participant
405 Views
Registered: ‎09-30-2008

Wow!  This is an old thread.  Thanks for the suggestion marode.  I had given up on any sort of resolution from team Xilinx.  They don't seem all that interested in supporting older parts anymore.  I've been building Artix 7 designs on my laptop (Windows) and larger FPGAs on a linux server farm.  I'll give your fix a try.

 

Mike B.

0 Kudos