blob: 15ceda9553e71288e73e9ffda146c5b101d26674 [file] [log] [blame]
#!/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)