| #!/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 |
| |