| # 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] |