tilegrid: generating iob deltas

Signed-off-by: John McMaster <johndmcmaster@gmail.com>
This commit is contained in:
John McMaster 2018-12-03 17:14:04 -08:00
parent e5cae1f55e
commit 70b9adb933
2 changed files with 20 additions and 39 deletions

View File

@ -6,6 +6,7 @@ export FUZDIR=$PWD
source ${XRAY_GENHEADER}
vivado -mode batch -source $FUZDIR/generate_$PRJ.tcl
test -z "$(fgrep CRITICAL vivado.log)"
if [ $PRJ != "tiles" ] ; then
for x in design*.bit; do

View File

@ -1,61 +1,41 @@
source "$::env(FUZDIR)/util.tcl"
# FIXME: change to grab one IOB from each column
proc loc_iob_old {} {
set ports [concat [get_ports clk] [get_ports do] [get_ports stb] [get_ports di]]
set selected_iobs {}
foreach port $ports {
set site [get_sites -of_objects $port]
set tile [get_tiles -of_objects $site]
set grid_x [get_property GRID_POINT_X $tile]
set grid_y [get_property GRID_POINT_Y $tile]
# 50 per column => 50, 100, 150, etc
if [regexp "Y(?:.*[05])?0" $site] {
lappend selected_iobs $port
}
}
return $selected_iobs
}
proc loc_iob {} {
# Get all possible sites
# set duts [make_iob_sites]
# set dut_sites [get_sites -of_objects [get_pblocks roi] -filter {SITE_TYPE =~ RAMBFIFO36E1*}]
#set duts [get_sites -filter {SITE_TYPE =~ IOB33*}]
set duts [get_bels -filter {TYPE =~ PAD}]
# Some pads are output only (ex: OPAD_X0Y0/PAD) => filt IOB_*
# XXX: GTX bank missing, deal with that later
set duts [get_bels -filter {TYPE =~ PAD && NAME =~ IOB_*}]
# Sort them into CMT columns
set dut_columns [group_dut_cols $duts 75]
set dut_columns [group_dut_cols $duts 50]
# Assign one from each
write_checkpoint -force tmp.dcp
return [loc_dut_col_bels $dut_columns {di_bufs[} {].ibuf} ]
return [loc_dut_col_sites $dut_columns {di_bufs[} {].ibuf} ]
}
proc write_iob { selected_iobs } {
foreach port $selected_iobs {
puts ""
set site [get_sites -of_objects $port]
set tile [get_tiles -of_objects $site]
set pin [get_property PACKAGE_PIN $port]
puts "IOB33 $port $site $tile $pin"
set orig_init [get_property PULLTYPE $port]
set_property PULLTYPE PULLUP $port
write_bitstream -force design_$site.bit
set_property PULLTYPE "$orig_init" $port
proc write_iob { sel_iob_sites } {
foreach site $sel_iob_sites {
puts ""
set port [get_ports -of_objects $site]
set tile [get_tiles -of_objects $site]
set pin [get_property PACKAGE_PIN $port]
puts "IOB $port $site $tile $pin"
set orig_init [get_property PULLTYPE $port]
set_property PULLTYPE PULLUP $port
write_bitstream -force design_$site.bit
set_property PULLTYPE "$orig_init" $port
}
}
proc run {} {
make_project
set selected_iobs [loc_iob]
puts "Selected IOBs: [llength $selected_iobs]"
set sel_iob_sites [loc_iob]
puts "Selected IOBs: [llength $sel_iob_sites]"
place_design
route_design
write_checkpoint -force design.dcp
write_bitstream -force design.bit
write_iob $selected_iobs
write_iob $sel_iob_sites
}
run