mirror of https://github.com/openXC7/prjxray.git
Merge pull request #1270 from litghost/add_prohibited_sites
Add prohibited site list to tilegrid.
This commit is contained in:
commit
3d9b306571
|
|
@ -18,14 +18,27 @@ def load_tiles(tiles_fn):
|
||||||
grid_x, grid_y = int(grid_x), int(grid_y)
|
grid_x, grid_y = int(grid_x), int(grid_y)
|
||||||
skip_tile = int(skip_tile) != 0
|
skip_tile = int(skip_tile) != 0
|
||||||
sites = {}
|
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
|
clock_region = None
|
||||||
if len(record) >= 6:
|
if len(record) >= 6:
|
||||||
clock_region = record[5]
|
clock_region = record[5]
|
||||||
if clock_region == "NA":
|
if clock_region == "NA":
|
||||||
clock_region = None
|
clock_region = None
|
||||||
for i in range(6, len(record), 2):
|
for i in range(6, len(record), 3):
|
||||||
site_type, site_name = record[i:i + 2]
|
site_type, site_name, prohibited = record[i:i + 3]
|
||||||
sites[site_name] = site_type
|
sites[site_name] = site_type
|
||||||
|
if int(prohibited):
|
||||||
|
prohibits.append(site_name)
|
||||||
|
|
||||||
if not skip_tile:
|
if not skip_tile:
|
||||||
tile = {
|
tile = {
|
||||||
|
|
@ -34,6 +47,7 @@ def load_tiles(tiles_fn):
|
||||||
'grid_x': grid_x,
|
'grid_x': grid_x,
|
||||||
'grid_y': grid_y,
|
'grid_y': grid_y,
|
||||||
'sites': sites,
|
'sites': sites,
|
||||||
|
'prohibited_sites': sorted(prohibits),
|
||||||
'clock_region': clock_region,
|
'clock_region': clock_region,
|
||||||
}
|
}
|
||||||
else:
|
else:
|
||||||
|
|
@ -47,6 +61,7 @@ def load_tiles(tiles_fn):
|
||||||
'grid_x': grid_x,
|
'grid_x': grid_x,
|
||||||
'grid_y': grid_y,
|
'grid_y': grid_y,
|
||||||
'sites': {},
|
'sites': {},
|
||||||
|
'prohibited_sites': [],
|
||||||
'clock_region': clock_region,
|
'clock_region': clock_region,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -80,6 +95,7 @@ def make_database(tiles, pin_func):
|
||||||
"grid_y": tile["grid_y"],
|
"grid_y": tile["grid_y"],
|
||||||
"bits": {},
|
"bits": {},
|
||||||
"pin_functions": {},
|
"pin_functions": {},
|
||||||
|
"prohibited_sites": tile['prohibited_sites'],
|
||||||
}
|
}
|
||||||
|
|
||||||
if tile["clock_region"]:
|
if tile["clock_region"]:
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,7 @@ proc write_tiles_txt {} {
|
||||||
set site_types [get_property SITE_TYPE $sites]
|
set site_types [get_property SITE_TYPE $sites]
|
||||||
foreach t $site_types s $sites {
|
foreach t $site_types s $sites {
|
||||||
lappend typed_sites $t $s
|
lappend typed_sites $t $s
|
||||||
|
lappend typed_sites [get_property PROHIBIT $s]
|
||||||
|
|
||||||
set package_pin [get_package_pins -of $s -quiet]
|
set package_pin [get_package_pins -of $s -quiet]
|
||||||
if [llength $package_pin] {
|
if [llength $package_pin] {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue