open_checkpoint [lindex $argv 0] # Disabling CRC just replaces the CRC register writes with Reset CRC commands. # This seems to work via JTAG as it works in combination with PERFRAMECRC # either when applied via Vivado (this setting) or by manually patching the # bitstream later. # set_property BITSTREAM.GENERAL.CRC Disable [current_design] # Debug bitstreams write to LOUT which is only valid on serial master/slave # programming methods. If those are replaced with NOPs, Reset CRC commands, or # removed entirely, the bitstream will program (DONE light goes active) but the # configuration doesn't start. The JTAG status register shows BAD_PACKET_ERROR # when this happens. I'm guessing that the individual frame writes require the # PERFRAMECRC approach to work at all via JTAG. # #set_property BITSTREAM.GENERAL.DEBUGBITSTREAM YES [current_design] # PERFRAMECRC bitstreams can be directly loaded via JTAG. They also use an # undocumented bit to disable autoincrement which seems to be required if doing # individual frame writes instead of a bulk write. The CRC chceks after each # frame are _required_ for this bitstream to program. # #set_property BITSTREAM.GENERAL.PERFRAMECRC YES [current_design] write_bitstream -force [lindex $argv 1]