| #!/usr/bin/env python3 | |
| # -*- coding: utf-8 -*- | |
| # | |
| # Copyright (C) 2017-2020 The Project X-Ray Authors. | |
| # | |
| # Use of this source code is governed by a ISC-style | |
| # license that can be found in the LICENSE file or at | |
| # https://opensource.org/licenses/ISC | |
| # | |
| # SPDX-License-Identifier: ISC | |
| import os, sys, json | |
| from prjxray.util import OpenSafeFile | |
| def main(argv): | |
| if len(argv) != 3: | |
| print("Usage example: python3 %s HCLK_R HCLK_SW6E3" % sys.argv[0]) | |
| sys.exit(1) | |
| with OpenSafeFile("%s/%s/tileconn.json" % (os.getenv("XRAY_DATABASE_DIR"), | |
| os.getenv("XRAY_DATABASE")), "r") as f: | |
| tileconn = json.load(f) | |
| outdata = list() | |
| max_tiletype_len = 1 | |
| for entry in tileconn: | |
| if entry["tile_types"][0] == sys.argv[1]: | |
| this_idx, other_idx = 0, 1 | |
| delta_x, delta_y = entry["grid_deltas"] | |
| elif entry["tile_types"][1] == sys.argv[1]: | |
| this_idx, other_idx = 1, 0 | |
| delta_x, delta_y = -entry["grid_deltas"][0], -entry["grid_deltas"][ | |
| 1] | |
| else: | |
| continue | |
| for wire_pair in entry["wire_pairs"]: | |
| if wire_pair[this_idx] != sys.argv[2]: | |
| continue | |
| outdata.append( | |
| ( | |
| delta_x, delta_y, entry["tile_types"][other_idx], | |
| wire_pair[other_idx])) | |
| max_tiletype_len = max( | |
| max_tiletype_len, len(entry["tile_types"][other_idx])) | |
| for entry in outdata: | |
| print( | |
| "%3d %3d %-*s %s" % | |
| (entry[0], entry[1], max_tiletype_len, entry[2], entry[3])) | |
| if __name__ == "__main__": | |
| main(sys.argv) |