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