update_resources: skip parts with same speedgrade to get pins

Signed-off-by: Alessandro Comodi <acomodi@antmicro.com>
This commit is contained in:
Alessandro Comodi 2021-03-19 14:46:10 +01:00
parent 0219727e9c
commit cb54b7f012
2 changed files with 26 additions and 8 deletions

View File

@ -13,6 +13,8 @@ import yaml
import subprocess
import os
import re
import tempfile
import json
from prjxray import util
@ -39,23 +41,34 @@ def main():
information = {}
parts = util.get_parts(args.db_root)
processed_parts = dict()
for part in parts.keys():
# Skip parts which differ only in the speedgrade, as they have the same pins
fields = part.split("-")
common_part = fields[0]
if common_part in processed_parts:
information[part] = processed_parts[common_part]
continue
print("Find pins for {}".format(part))
env['XRAY_PART'] = part
_, tmp_file = tempfile.mkstemp()
# Asks with get_package_pins and different filters for pins with
# specific properties.
command = "{} -mode batch -source update_resources.tcl".format(
env['XRAY_VIVADO'])
command = "env TMP_FILE={} {} -mode batch -source update_resources.tcl".format(
tmp_file, env['XRAY_VIVADO'])
result = subprocess.run(
command.split(' '),
check=True,
env=env,
cwd=cwd,
stdout=subprocess.PIPE)
# Formats the output and stores the pins
output = result.stdout.decode('utf-8').splitlines()
clk_pins = output[-4].split(' ')
data_pins = output[-2].strip().split(' ')
with open(tmp_file, "r") as fp:
pins_json = json.load(fp)
clk_pins = pins_json["clk_pins"].split()
data_pins = pins_json["data_pins"].split()
pins = {
0: clk_pins[0],
1: data_pins[0],
@ -63,6 +76,7 @@ def main():
3: data_pins[-1]
}
information[part] = {'pins': pins}
processed_parts[common_part] = {'pins': pins}
# Overwrites the <family>/resources.yaml file completly with new data
util.set_part_resources(resource_path, information)

View File

@ -21,5 +21,9 @@ foreach bank [split $banks " "] {
append data_pins " " [get_package_pins -filter "IS_GENERAL_PURPOSE && BANK==$bank"]
}
puts $clk_pins
puts $data_pins
set fp [open $::env(TMP_FILE) w]
puts $fp "{"
puts $fp "\t\"clk_pins\": \"$clk_pins\","
puts $fp "\t\"data_pins\": \"$data_pins\""
puts $fp "}"