mirror of https://github.com/openXC7/prjxray.git
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:
parent
2f2741422e
commit
465fd4731d
|
|
@ -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"]:
|
||||
|
|
|
|||
|
|
@ -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] {
|
||||
|
|
|
|||
Loading…
Reference in New Issue