#!/bin/bash # 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 source ../../utils/environment.sh set -ex test $# = 1 test ! -e $1 mkdir $1 cd $1 cat > design.xdc << EOT set_property -dict {PACKAGE_PIN $XRAY_PIN_00 IOSTANDARD LVCMOS33} [get_ports clk] set_property -dict {PACKAGE_PIN $XRAY_PIN_01 IOSTANDARD LVCMOS33} [get_ports din] set_property -dict {PACKAGE_PIN $XRAY_PIN_02 IOSTANDARD LVCMOS33} [get_ports dout] set_property -dict {PACKAGE_PIN $XRAY_PIN_03 IOSTANDARD LVCMOS33} [get_ports stb] set_property LOCK_PINS {I0:A1 I1:A2 I2:A3 I3:A4 I4:A5 I5:A6} \ [get_cells -quiet -filter {REF_NAME == LUT6} -hierarchical] create_pblock roi add_cells_to_pblock [get_pblocks roi] [get_cells stuff] resize_pblock [get_pblocks roi] -add {$XRAY_ROI} # requires partial reconfiguration license #set_property HD.RECONFIGURABLE TRUE [get_cells stuff] set_property CFGBVS VCCO [current_design] set_property CONFIG_VOLTAGE 3.3 [current_design] set_property BITSTREAM.GENERAL.PERFRAMECRC YES [current_design] set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets clk_IBUF] EOT echo '`define SEED 32'"'h$(echo $1 | md5sum | cut -c1-8)" > setseed.vh cat > design.tcl << EOT source "../utilities.tcl" create_project -force -part $XRAY_PART design design read_xdc design.xdc read_verilog ../design.v read_verilog ../picorv32.v synth_design -top top place_design route_design write_checkpoint -force design.dcp write_bitstream -force design.bit puts "Writing lutdata.txt." set fp [open "lutdata.txt" w] foreach cell [get_cells -hierarchical -filter {REF_NAME == LUT6}] { set bel [get_property BEL \$cell] set loc [get_property LOC \$cell] set init [get_property INIT \$cell] puts \$fp "\$loc \$bel \$init" } close \$fp puts "Writing carrydata.txt." set fp [open "carrydata.txt" w] foreach cell [get_cells -hierarchical -filter {REF_NAME == CARRY4}] { set loc [get_property LOC \$cell] set cyinit_mux [get_carry_cyinit_mux_cfg \$cell] set di0_mux [get_carry_di0_mux_cfg \$cell] set di1_mux [get_carry_di1_mux_cfg \$cell] set di2_mux [get_carry_di2_mux_cfg \$cell] set di3_mux [get_carry_di3_mux_cfg \$cell] puts \$fp "\$loc \$cyinit_mux \$di0_mux \$di1_mux \$di2_mux \$di3_mux" } close \$fp EOT rm -rf design design.log ${XRAY_VIVADO} -nojournal -log design.log -mode batch -source design.tcl #${XRAY_BITREAD} -o design_roi.bits -z -y design_roi_partial.bit ${XRAY_BITREAD} -F $XRAY_ROI_FRAMES -o design.bits -z -y design.bit ${XRAY_BITREAD} -F $XRAY_ROI_FRAMES -o design.pgm -p design.bit python3 ../segdata.py #${XRAY_SEGMATCH} < segdata.txt > database.txt