mirror of https://github.com/openXC7/prjxray.git
43 lines
1.2 KiB
Tcl
43 lines
1.2 KiB
Tcl
source "$::env(FUZDIR)/util.tcl"
|
|
|
|
proc loc_iob {} {
|
|
# Some pads are output only (ex: OPAD_X0Y0/PAD) => filt IOB_*
|
|
# XXX: GTX bank missing, deal with that later
|
|
set roi_sites [get_sites -of_objects [get_pblocks roi]]
|
|
set duts [get_bels -of_objects $roi_sites -filter {TYPE =~ PAD && NAME =~ IOB_*}]
|
|
|
|
# Sort them into CMT columns
|
|
set dut_columns [group_dut_cols $duts 50]
|
|
# Assign one from each
|
|
return [loc_dut_col_sites $dut_columns {di_bufs[} {].ibuf} ]
|
|
}
|
|
|
|
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 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 $sel_iob_sites
|
|
}
|
|
|
|
run
|