| import argparse | |
| import json | |
| from lib.parse_usage import parse_usage | |
| def main(): | |
| parser = argparse.ArgumentParser( | |
| description="Converts VPR pack.log into usage numbers." | |
| ) | |
| parser.add_argument('pack_log') | |
| parser.add_argument( | |
| '--assert_usage', | |
| help='Comma seperate block name list with expected usage stats.' | |
| ) | |
| parser.add_argument( | |
| '--no_print_usage', | |
| action='store_false', | |
| dest='print_usage', | |
| help='Disables printing of output.' | |
| ) | |
| args = parser.parse_args() | |
| usage = {} | |
| for block, count in parse_usage(args.pack_log): | |
| usage[block] = count | |
| if args.print_usage: | |
| print(json.dumps(usage, indent=2)) | |
| if args.assert_usage: | |
| blocks = dict(b.split('=') for b in args.assert_usage.split(',')) | |
| for block in usage: | |
| if block in blocks: | |
| assert usage[block] == int( | |
| blocks[block] | |
| ), 'Expect usage of block {} = {}, found {}'.format( | |
| block, int(blocks[block]), usage[block] | |
| ) | |
| else: | |
| assert usage[ | |
| block | |
| ] == 0, 'Expect usage of block {} = 0, found {}'.format( | |
| block, usage[block] | |
| ) | |
| if __name__ == "__main__": | |
| main() |