#!/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 from prjxray.segmaker import Segmaker segmk = Segmaker("design.bits") tiledata = dict() pipdata = set() print("Loading tags from design.txt.") with open("design.txt", "r") as f: for line in f: ab, dst, src = line.split() tile, dst = dst.split("/") _, src = src.split("/") if tile not in tiledata: tiledata[tile] = { "pips": set(), "nodes": set(), } if ab == "A": tiledata[tile]["pips"].add((dst, src)) pipdata.add((dst, src)) else: tiledata[tile]["nodes"].add(src) tiledata[tile]["nodes"].add(dst) for tile, pips_nodes in tiledata.items(): pips = pips_nodes["pips"] nodes = pips_nodes["nodes"] for dst, src in pipdata: if (dst, src) in pips: segmk.add_tile_tag(tile, "%s.%s" % (dst, src), 1) elif dst not in nodes and src not in nodes: segmk.add_tile_tag(tile, "%s.%s" % (dst, src), 0) def bitfilter(frame_idx, bit_idx): return frame_idx in [0, 1] segmk.compile(bitfilter=bitfilter) segmk.write(allow_empty=True)