|  | # 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 |