# 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 .PRECIOUS: harness_impl.dcp %_impl.dcp %.bit %_roi_partial.bit # Top-level target for generating a programmable bitstream. Given a .fasm # file, calling make with the .fasm extension replaced with _hand_crafted.bit # will generate a bitstream that includes both the harness and the .fasm design # ready for programming to a board. For example, # 'make inv_hand_crafted.bit' will generate a bitstream that includes the # design from roi_noninv.fasm. %_hand_crafted.bit: %_roi_partial.frm harness.bit ${XRAY_TOOLS_DIR}/xc7patch \ --part_name "${XRAY_PART}" \ --part_file "${XRAY_PART_YAML}" \ --bitstream_file harness.bit \ --frm_file $< \ --output_file $@ # Generate a suitable harness by using Vivado's partial reconfiguration # feature. inv.v is used as a sample reconfiguration design as one is # required to generate a partial reconfiguration design. harness_synth.dcp: harness_synthesize.tcl harness.v ${XRAY_VIVADO} -mode batch -source harness_synthesize.tcl harness_impl.dcp: harness_synth.dcp inv_synth.dcp harness_implement.tcl ${XRAY_VIVADO} -mode batch -source harness_implement.tcl # Synthesize an ROI design %_synth.dcp: %.v roi_synthesize.tcl ${XRAY_VIVADO} -mode batch -source roi_synthesize.tcl -tclargs $< $@ # Implement an ROI design %_impl.dcp: %_synth.dcp harness_impl.dcp roi_implement.tcl ${XRAY_VIVADO} -mode batch -source roi_implement.tcl -tclargs $< $@ # Generate bitstreams from an implemented design. Two bitstreams are # generated: one containing a complete design including the harness (.bit) and # one that only contains the frames that implement the ROI design # (_roi_partial.bit). %.bit: %_impl.dcp write_bitstream.tcl ${XRAY_VIVADO} -mode batch -source write_bitstream.tcl -tclargs $< $@ %_roi_partial.bit: %.bit ; # Conversions between various formats. %.bits: %.bit ${XRAY_BITREAD} -z -y -o $@ $< %.segp: %.bits ${XRAY_SEGPRINT} -zd $< > $@ %.fasm: %.segp ${XRAY_DIR}/tools/segprint2fasm.py $< $@ %.frm: %.fasm ${XRAY_DIR}/tools/fasm2frame.py $< $@ # This format is a human-readable representation of the configuration packets # used to interact with 7-series chips over JTAG. %.packets: %.bit ${XRAY_TOOLS_DIR}/bittool list_config_packets $< > $@ clean: rm -rf vivado*.log vivado_*.str vivado*.jou design *.bits *.dcp *.bit design.txt .Xil rm -rf *.frm *.segp *.packets *.bin *.fasm rm -rf hd_visual .PHONY: clean