mirror of https://github.com/openXC7/prjxray.git
tilegrid: generating iob deltas
Signed-off-by: John McMaster <johndmcmaster@gmail.com>
This commit is contained in:
parent
e5cae1f55e
commit
70b9adb933
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in New Issue