Merge pull request #1270 from litghost/add_prohibited_sites

Add prohibited site list to tilegrid.
This commit is contained in:
Alessandro Comodi 2020-03-17 18:09:30 +01:00 committed by GitHub
commit 3d9b306571
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 19 additions and 2 deletions

View File

@ -18,14 +18,27 @@ def load_tiles(tiles_fn):
grid_x, grid_y = int(grid_x), int(grid_y)
skip_tile = int(skip_tile) != 0
sites = {}
# prohibits is the list of sites that the Vivado placer will not
# place at.
#
# Speculation: These sites are prohibited not because the hardware
# doesn't work, but because the interconnect around these sites is
# extremely narrow due to the hardblocks to the left and right of
# tiles. As a result, these sites should be avoided because
# congestion and delays when using these sites might be very very
# high.
prohibits = []
clock_region = None
if len(record) >= 6:
clock_region = record[5]
if clock_region == "NA":
clock_region = None
for i in range(6, len(record), 2):
site_type, site_name = record[i:i + 2]
for i in range(6, len(record), 3):
site_type, site_name, prohibited = record[i:i + 3]
sites[site_name] = site_type
if int(prohibited):
prohibits.append(site_name)
if not skip_tile:
tile = {
@ -34,6 +47,7 @@ def load_tiles(tiles_fn):
'grid_x': grid_x,
'grid_y': grid_y,
'sites': sites,
'prohibited_sites': sorted(prohibits),
'clock_region': clock_region,
}
else:
@ -47,6 +61,7 @@ def load_tiles(tiles_fn):
'grid_x': grid_x,
'grid_y': grid_y,
'sites': {},
'prohibited_sites': [],
'clock_region': clock_region,
}
@ -80,6 +95,7 @@ def make_database(tiles, pin_func):
"grid_y": tile["grid_y"],
"bits": {},
"pin_functions": {},
"prohibited_sites": tile['prohibited_sites'],
}
if tile["clock_region"]:

View File

@ -34,6 +34,7 @@ proc write_tiles_txt {} {
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] {