From edbd5f4ca92233a789b39cbf85a2b3872d529774 Mon Sep 17 00:00:00 2001 From: John McMaster Date: Wed, 29 Aug 2018 17:58:56 -0700 Subject: [PATCH] timfuz: tile annotate. Workflow alpha! Signed-off-by: John McMaster --- timfuz/tile_annotate.py | 64 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 timfuz/tile_annotate.py diff --git a/timfuz/tile_annotate.py b/timfuz/tile_annotate.py new file mode 100644 index 00000000..e294769b --- /dev/null +++ b/timfuz/tile_annotate.py @@ -0,0 +1,64 @@ +#!/usr/bin/env python3 + +from timfuz import loadc_Ads_b, Ads2bounds + +import sys +import os +import time +import json + +# corner wokraround +def quad(x): + return [x for _ in range(4)] + +def run(fnin, fnout, tile_json_fn, verbose=False): + # modified in place + tilej = json.load(open(tile_json_fn, 'r')) + + # FIXME: all corners + Ads, b = loadc_Ads_b([fnin], corner=None, ico=True) + bounds = Ads2bounds(Ads, b) + + pipn_net = 0 + pipn_solved = 0 + wiren_net = 0 + wiren_solved = 0 + + for tile in tilej['tiles'].values(): + pips = tile['pips'] + for k, v in pips.items(): + val = bounds.get('PIP_' + v, None) + pips[k] = quad(val) + pipn_net += 1 + if pips[k]: + pipn_solved += 1 + + wires = tile['wires'] + for k, v in wires.items(): + val = bounds.get('WIRE_' + v, None) + wires[k] = quad(val) + wiren_net += 1 + if wires[k]: + wiren_solved += 1 + + print('Pips: %u / %u solved' % (pipn_solved, pipn_net)) + print('Wires: %u / %u solved' % (wiren_solved, wiren_net)) + + json.dump(tilej, open(fnout, 'w'), sort_keys=True, indent=4, separators=(',', ': ')) + +def main(): + import argparse + + parser = argparse.ArgumentParser( + description= + '' + ) + parser.add_argument('--tile-json', default='tiles.json', help='') + parser.add_argument('fnin', default=None, help='Flattened timing csv') + parser.add_argument('fnout', default=None, help='output tile .json') + args = parser.parse_args() + + run(args.fnin, args.fnout, args.tile_json, verbose=False) + +if __name__ == '__main__': + main()