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