| #!/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) |