create_project -force -part $::env(XRAY_PART) design design read_verilog ../top.v synth_design -top top set_property -dict "PACKAGE_PIN $::env(XRAY_PIN_00) IOSTANDARD LVCMOS33" [get_ports i] set_property -dict "PACKAGE_PIN $::env(XRAY_PIN_01) IOSTANDARD LVCMOS33" [get_ports o] create_pblock roi resize_pblock [get_pblocks roi] -add "$::env(XRAY_ROI)" set_property CFGBVS VCCO [current_design] set_property CONFIG_VOLTAGE 3.3 [current_design] set_property BITSTREAM.GENERAL.PERFRAMECRC YES [current_design] set_param tcl.collectionResultDisplayLimit 0 place_design route_design write_checkpoint -force design.dcp source ../../../utils/utils.tcl set cells [list] set gnd_net [create_net gnd_net] set gnd_cell [create_cell -reference GND gnd_cell] connect_net -net $gnd_net -objects [get_pins $gnd_cell/G] foreach site [get_sites -of_objects [filter [roi_tiles] -filter {TYPE == "DSP_L" || TYPE == "DSP_R"}] -filter {SITE_TYPE =~ DSP*}] { set cell [create_cell -reference DSP48E1 ${site}_cell] lappend cells $cell set_property LOC $site $cell foreach pin [get_pins -of_objects $cell -filter {DIRECTION == "IN"}] { connect_net -net $gnd_net -objects $pin } } route_design proc write_txtdata {filename} { upvar 1 cells cells puts "Writing $filename." set fp [open $filename w] foreach cell $cells { set loc [get_property LOC $cell] set mask [get_property MASK $cell] set pattern [get_property PATTERN $cell] set tile [get_tiles -of_objects [get_sites -filter "NAME == $loc"]] puts $fp "$tile $loc $mask $pattern" } close $fp } proc randhex {len} { set s "" for {set i 0} {$i < $len} {incr i} { set s "$s[format %x [expr {int(rand()*16)}]]" } return $s } for {set i 10} {$i < 30} {incr i} { foreach cell $cells { set_property MASK "48'h[randhex 12]" $cell set_property PATTERN "48'h[randhex 12]" $cell } write_checkpoint -force design_${i}.dcp write_bitstream -force design_${i}.bit write_txtdata design_${i}.txt }