mirror of https://github.com/openXC7/prjxray.git
77 lines
2.2 KiB
Tcl
77 lines
2.2 KiB
Tcl
# 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(FUZDIR)/util.tcl"
|
|
|
|
proc write_tiles_txt {} {
|
|
# Get all tiles, ie not just the selected LUTs
|
|
set tiles [get_tiles]
|
|
set not_allowed_sites [get_sites -of_objects [get_pblocks exclude_roi]]
|
|
|
|
# Write tiles.txt with site metadata
|
|
set fp [open "tiles.txt" w]
|
|
set fp_pin [open "pin_func.txt" w]
|
|
foreach tile $tiles {
|
|
set type [get_property TYPE $tile]
|
|
set grid_x [get_property GRID_POINT_X $tile]
|
|
set grid_y [get_property GRID_POINT_Y $tile]
|
|
set sites [get_sites -quiet -of_objects $tile]
|
|
|
|
# There are some sites which are not allowed to be placed.
|
|
# This check excludes tiles in the EXCLUDE_ROI pblock
|
|
# be added to tilegrid.json
|
|
set skip_tile 0
|
|
foreach site $sites {
|
|
set res [lsearch $not_allowed_sites $site]
|
|
if { $res != -1 } {
|
|
set skip_tile 1
|
|
break
|
|
}
|
|
}
|
|
|
|
set typed_sites {}
|
|
|
|
set clock_region "NA"
|
|
|
|
if [llength $sites] {
|
|
set site_types [get_property SITE_TYPE $sites]
|
|
foreach t $site_types s $sites {
|
|
lappend typed_sites $t $s
|
|
lappend typed_sites [get_property PROHIBIT $s]
|
|
|
|
set package_pin [get_package_pins -of $s -quiet]
|
|
if [llength $package_pin] {
|
|
puts $fp_pin "$s [get_property PIN_FUNC $package_pin]"
|
|
}
|
|
set clock_region [get_property CLOCK_REGION $s]
|
|
}
|
|
}
|
|
if {[llength $clock_region] == 0} {
|
|
set clock_region "NA"
|
|
}
|
|
|
|
|
|
puts $fp "$type $tile $grid_x $grid_y $skip_tile $clock_region $typed_sites"
|
|
}
|
|
close $fp_pin
|
|
close $fp
|
|
}
|
|
|
|
proc run {} {
|
|
# Generate grid of entire part
|
|
make_project_roi XRAY_ROI_TILEGRID XRAY_EXCLUDE_ROI_TILEGRID
|
|
|
|
place_design
|
|
route_design
|
|
write_checkpoint -force design.dcp
|
|
write_bitstream -force design.bit
|
|
|
|
write_tiles_txt
|
|
}
|
|
|
|
run
|