blob: fecce16bf53b5336248194f960a78ccc25fd5d78 [file] [log] [blame]
# 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]