| #!/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 |
| |
| from prjxray import bitstream |
| |
| |
| def write(bits_fn, fnout, tags): |
| ''' |
| seg 00020000_046 |
| bit 18_20 |
| bit 39_63 |
| tag LIOB33.IOB_Y1.REFBIT 0 |
| ''' |
| fout = open(fnout, "w") |
| |
| def line(s): |
| fout.write(s + "\n") |
| |
| # Everything relative to start of bitstream |
| line("seg 00000000_000") |
| |
| bitdata = bitstream.load_bitdata2(open(bits_fn, "r")) |
| |
| for frame, words in bitdata.items(): |
| for word, wbits in words.items(): |
| for bitidx in sorted(list(wbits)): |
| # Are the names arbitrary? Lets just re-create |
| line("bit %08X_%03u_%02u" % (frame, word, bitidx)) |
| |
| for k, v in tags.items(): |
| line("tag %s %u" % (k, v)) |