#!/usr/bin/env python3 """ Tool for generating Vivavo commands to highlight objects from a FASM file. Currently this tool only highlights pips directly referenced in the FASM file. """ from __future__ import print_function import os.path import fasm from prjxray import db from prjxray import util def main(): import argparse parser = argparse.ArgumentParser( description= 'Outputs a Vivavo highlight_objects command from a FASM file.') util.db_root_arg(parser) util.part_arg(parser) parser.add_argument('fn_in', help='Input FPGA assembly (.fasm) file') args = parser.parse_args() database = db.Database(args.db_root, args.part) grid = database.grid() def inner(): for line in fasm.parse_fasm_filename(args.fn_in): if not line.set_feature: continue parts = line.set_feature.feature.split('.') tile = parts[0] gridinfo = grid.gridinfo_at_tilename(tile) tile_type = database.get_tile_type(gridinfo.tile_type) for pip in tile_type.pips: if pip.net_from == parts[2] and pip.net_to == parts[1]: yield '{}/{}'.format(tile, pip.name) print( 'highlight_objects [concat {}]'.format( ' '.join('[get_pips {}]'.format(pip) for pip in inner()))) if __name__ == '__main__': main()