Add prohibited site list to tilegrid.

Prohibited sites are sites that Vivado will not place at.

Signed-off-by: Keith Rothman <537074+litghost@users.noreply.github.com>
This commit is contained in:
Keith Rothman 2020-03-13 15:17:21 -07:00
parent 2f2741422e
commit 465fd4731d
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] {