Added emission of STEPDOWN features for HCLK_IOI3 tile too.

Signed-off-by: Maciej Kurc <mkurc@antmicro.com>
This commit is contained in:
Maciej Kurc 2019-12-16 13:40:35 +01:00
parent 781dc05479
commit 2172b0f797
7 changed files with 7381 additions and 12 deletions

View File

@ -15,6 +15,12 @@ from prjxray import fasm_assembler
from prjxray.db import Database
from prjxray.roi import Roi
import sys
def eprint(*args, **kwargs):
print(*args, file=sys.stderr, **kwargs)
class FASMSyntaxError(SyntaxError):
pass
@ -123,6 +129,14 @@ def run(
reader = csv.DictReader(fp)
package_pins = [l for l in reader]
with open(os.path.join(db_root, part + ".json"), "r") as fp:
part_data = json.load(fp)
for bank, loc in part_data["iobanks"].items():
tile = "HCLK_IOI3_" + loc
bank_to_tile[bank].add(tile)
tile_to_bank[tile] = bank
for pin in package_pins:
bank_to_tile[pin["bank"]].add(pin["tile"])
tile_to_bank[pin["tile"]] = pin["bank"]
@ -189,11 +203,14 @@ def run(
# Make a set of all used IOB tiles and sites. Look for the "STEPDOWN"
# feature. If one is set for an IOB then set it for all other IOBs of
# the same bank.
stepdown_tags = set()
stepdown_tags = defaultdict(lambda: set())
stepdown_banks = set()
used_iob_sites = set()
for set_feature in set_features:
if set_feature.value == 0:
continue
feature = set_feature.feature
parts = feature.split(".")
if len(parts) >= 3:
@ -203,24 +220,39 @@ def run(
tile,
site,
))
if "STEPDOWN" in tag:
stepdown_banks.add(tile_to_bank[tile])
stepdown_tags.add(tag)
# Set the feature for unused IOBs
# Store STEPDOWN related tags.
if "STEPDOWN" in tag:
bank = tile_to_bank[tile]
stepdown_banks.add(bank)
stepdown_tags[bank].add(tag)
# Set the feature for unused IOBs, loop over all banks which were
# observed to have the STEPDOWN feature set.
missing_features = []
for bank in stepdown_banks:
for tile in bank_to_tile[bank]:
for site in get_iob_sites(db, tile):
if (tile, site) in used_iob_sites:
continue
# This is an IOB33 tile. Set the STEPDOWN feature in it but
# only if it is unused.
if "IOB33" in tile:
for site in get_iob_sites(db, tile):
for tag in stepdown_tags:
feature = "{}.{}.{}".format(tile, site, tag)
for line in fasm.parse_fasm_string(feature):
assembler.add_fasm_line(line, missing_features)
if (tile, site) in used_iob_sites:
continue
for tag in stepdown_tags[bank]:
feature = "{}.{}.{}".format(tile, site, tag)
for line in fasm.parse_fasm_string(feature):
assembler.add_fasm_line(line, missing_features)
# This is a HCLK_IOI3 tile, set the stepdown feature for it
# too.
if "HCLK_IOI3" in tile:
feature = "{}.STEPDOWN".format(tile)
for line in fasm.parse_fasm_string(feature):
assembler.add_fasm_line(line, missing_features)
if missing_features:
raise fasm_assembler.FasmLookupError('\n'.join(missing_features))

View File

@ -0,0 +1,2 @@
HCLK_IOI3.STEPDOWN 00_16

File diff suppressed because it is too large Load Diff

View File

@ -190,5 +190,55 @@
"IOB_X1Y4": "IOB33M"
},
"type": "RIOB33"
},
"HCLK_IOI3_X113Y26": {
"bits": {
"CLB_IO_CLK": {
"baseaddr": "0x00401580",
"frames": 42,
"offset": 50,
"words": 1
}
},
"grid_x": 113,
"grid_y": 130,
"pin_functions": {},
"sites": {
"BUFIO_X1Y0": "BUFIO",
"BUFIO_X1Y1": "BUFIO",
"BUFIO_X1Y2": "BUFIO",
"BUFIO_X1Y3": "BUFIO",
"BUFR_X1Y0": "BUFR",
"BUFR_X1Y1": "BUFR",
"BUFR_X1Y2": "BUFR",
"BUFR_X1Y3": "BUFR",
"IDELAYCTRL_X1Y0": "IDELAYCTRL"
},
"type": "HCLK_IOI3"
},
"HCLK_IOI3_X1Y26": {
"bits": {
"CLB_IO_CLK": {
"baseaddr": "0x00400000",
"frames": 42,
"offset": 50,
"words": 1
}
},
"grid_x": 1,
"grid_y": 130,
"pin_functions": {},
"sites": {
"BUFIO_X0Y0": "BUFIO",
"BUFIO_X0Y1": "BUFIO",
"BUFIO_X0Y2": "BUFIO",
"BUFIO_X0Y3": "BUFIO",
"BUFR_X0Y0": "BUFR",
"BUFR_X0Y1": "BUFR",
"BUFR_X0Y2": "BUFR",
"BUFR_X0Y3": "BUFR",
"IDELAYCTRL_X0Y0": "IDELAYCTRL"
},
"type": "HCLK_IOI3"
}
}

View File

@ -0,0 +1,6 @@
{
"iobanks": {
"99": "X1Y26",
"66": "X113Y26"
}
}

View File

@ -1,5 +1,6 @@
bit_00400000_002_01
bit_00400000_002_03
bit_00400000_006_03
bit_00400000_050_16
bit_00400000_099_03
bit_00401580_002_02

View File

@ -1,5 +1,6 @@
bit_00400000_006_01
bit_00401580_002_03
bit_00401580_006_03
bit_00401580_050_16
bit_00401580_099_02
bit_00401580_099_03