From f58cf6bbda7423ffd3a4ee8600426e1270344037 Mon Sep 17 00:00:00 2001 From: Keith Rothman <537074+litghost@users.noreply.github.com> Date: Sat, 9 Feb 2019 22:50:15 -0800 Subject: [PATCH] Output PIP form. Signed-off-by: Keith Rothman <537074+litghost@users.noreply.github.com> --- fuzzers/041-clk-hrow-pips/Makefile | 6 +- .../041-clk-hrow-pips/merge_gclk_entries.py | 56 +++++++++++++++++++ 2 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 fuzzers/041-clk-hrow-pips/merge_gclk_entries.py diff --git a/fuzzers/041-clk-hrow-pips/Makefile b/fuzzers/041-clk-hrow-pips/Makefile index f532495c..f2ef3eea 100644 --- a/fuzzers/041-clk-hrow-pips/Makefile +++ b/fuzzers/041-clk-hrow-pips/Makefile @@ -12,7 +12,11 @@ build/segbits_clk_hrow.rdb: $(SPECIMENS_OK) build/segbits_clk_hrow.db: build/segbits_clk_hrow.rdb ${XRAY_DBFIXUP} --db-root build --zero-db bits.dbf \ --seg-fn-in build/segbits_clk_hrow.rdb \ - --seg-fn-out build/segbits_clk_hrow.db + --seg-fn-out build/segbits_clk_hrow_rc.db + python3 merge_gclk_entries.py \ + build/segbits_clk_hrow_rc.db \ + build/segbits_clk_hrow.db + ${XRAY_MASKMERGE} build/mask_clk_hrow.db \ $(addsuffix /segdata_clk_hrow_top_r.txt,$(SPECIMENS)) \ $(addsuffix /segdata_clk_hrow_bot_r.txt,$(SPECIMENS)) diff --git a/fuzzers/041-clk-hrow-pips/merge_gclk_entries.py b/fuzzers/041-clk-hrow-pips/merge_gclk_entries.py new file mode 100644 index 00000000..20ae0b77 --- /dev/null +++ b/fuzzers/041-clk-hrow-pips/merge_gclk_entries.py @@ -0,0 +1,56 @@ +import argparse + +GCLKS = 32 + +def main(): + parser = argparse.ArgumentParser(description="Convert GCLK ROW/COLUMN definitions into GCLK pips.") + parser.add_argument('in_segbit') + parser.add_argument('out_segbit') + + args = parser.parse_args() + + hrow_outs = {} + tile = None + with open(args.in_segbit) as f: + for l in f: + parts = l.strip().split(' ') + feature = parts[0] + bits = ' '.join(parts[1:]) + + tile1, dst, src = feature.split('.') + if tile is None: + tile = tile1 + else: + assert tile == tile1 + + n = int(src[-1]) + + if dst not in hrow_outs: + hrow_outs[dst] = { + 'rows': {}, + 'columns': {}, + } + + if src[-4:-1] == 'ROW': + hrow_outs[dst]['rows'][n] = bits + else: + assert src[-7:-1] == 'COLUMN', src + hrow_outs[dst]['columns'][n] = bits + + with open(args.out_segbit, 'w') as f: + for dst in hrow_outs: + for gclk in range(GCLKS): + row = gclk % 8 + column = int(gclk / 8) + + print('{tile}.{dst}.CLK_HROW_R_CK_GCLK{gclk} {row_bits} {column_bits}'.format( + tile=tile, + dst=dst, + gclk=gclk, + row_bits=hrow_outs[dst]['rows'][row], + column_bits=hrow_outs[dst]['columns'][column], + ), file=f) + + +if __name__ == "__main__": + main()