blob: d5a805c44aa5979bc551bfd095de288d896726f7 [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
source $::env(XRAY_UTILS_DIR)/write_timing_info.tcl
proc create_design {design_name sig_mask verilogs} {
create_project -part $::env(XRAY_PART) -force design_$design_name \
design_$design_name
foreach src $verilogs {
read_verilog $src
}
synth_design -verilog_define SIG_MASK=$sig_mask -top top
create_clock -period 10.000 -name clk -waveform {0.000 5.000} [get_ports clk]
set_property -dict "PACKAGE_PIN W5 IOSTANDARD LVCMOS33" [get_ports clk]
set_property -dict "PACKAGE_PIN $::env(XRAY_PIN_01) IOSTANDARD LVCMOS33" [get_ports stb]
set_property -dict "PACKAGE_PIN $::env(XRAY_PIN_02) IOSTANDARD LVCMOS33" [get_ports di]
set_property -dict "PACKAGE_PIN $::env(XRAY_PIN_03) IOSTANDARD LVCMOS33" [get_ports do]
set_property CFGBVS VCCO [current_design]
set_property CONFIG_VOLTAGE 3.3 [current_design]
set_property BITSTREAM.GENERAL.PERFRAMECRC YES [current_design]
if { $design_name == "fanout_ex_0" } {
set_property FIXED_ROUTE "{ CLBLL_LL_D CLBLL_LL_DMUX }" [get_nets the_net]
}
place_design
route_design
write_checkpoint -force design_$design_name.dcp
write_bitstream -force design_$design_name.bit
save_project_as -force design_$design_name.xpr
}
proc run_timing {design_name sig_mask verilogs} {
set name ${design_name}_${sig_mask}
create_design $name $sig_mask $verilogs
write_timing_info timing_$name.json5
}
run_timing $::env(DESIGN_NAME) $::env(ITER) $::env(VERILOGS)