| # Copyright (C) 2017-2020  The Project X-Ray Authors | 
 | # | 
 | # Use of this source code is governed by a ISC-style | 
 | # license that can be found in the LICENSE file or at | 
 | # https://opensource.org/licenses/ISC | 
 | # | 
 | # SPDX-License-Identifier: ISC | 
 | 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] |