def get_device_tiles(family, devices): all_tiles = set() fd_tiles = {} for dev, devdata in sorted(devices.items()): if devdata["fuzz"]: fd_tiles[family, dev] = [] for tilename, tiledata in sorted(database.get_tilegrid(family, dev)["tiles"].items()): tt = tiledata["tiletype"] if tt not in all_tiles: all_tiles.add(tt) fd_tiles[family, dev].append(tt) return fd_tiles
def main(argv): args = parser.parse_args(argv[1:]) tilegrid = database.get_tilegrid(args.family, args.device) max_row = 0 max_col = 0 for name in sorted(tilegrid.keys()): row, col = get_rc(name) if row > max_row: max_row = row if col > max_col: max_col = col tiles = [] for i in range(max_row + 1): row = [] for j in range(max_col + 1): row.append([]) tiles.append(row) for identifier, data in sorted(tilegrid.items()): name = identifier.split(":")[0] row, col = get_rc(name) colour = get_colour(data["type"]) tiles[row][col].append((name, data["type"], colour)) f = args.outfile print("""<html> <head><title>{} Tiles</title></head> <body> <h1>{} Tilegrid</h1> <table style='font-size: 8pt; border: 2px solid black; text-align: center'> """.format(args.device, args.device), file=f) for trow in tiles: print("<tr>", file=f) row_max_height = 0 for tloc in trow: row_max_height = max(row_max_height, len(tloc)) row_height = max(75, 30 * row_max_height) for tloc in trow: print("<td style='border: 2px solid black; height: {}px'>".format( row_height), file=f) for tile in tloc: print( "<div style='height: {}%; background-color: {}'><em>{}</em><br/><strong><a href='../tilehtml/{}.html' style='color: black'>{}</a></strong></div>" .format(100 / len(tloc), tile[2], tile[0], tile[1], tile[1]), file=f) print("</td>", file=f) print("</tr>", file=f) print("</table></body></html>", file=f)
def main(argv): args = parser.parse_args(argv[1:]) tilegrid = database.get_tilegrid(args.architecture, args.part) device_info = database.get_devices()["architectures"][ args.architecture]["parts"][args.part] max_row = device_info["max_row"] max_col = device_info["max_col"] tiles = [] for i in range(max_row): row = [] for j in range(max_col): row.append([]) tiles.append(row) for row in tilegrid: for item in row: x = int(item["x"]) y = int(item["y"]) for data in item["val"]: colour = get_colour(data["type"]) tiles[y][x].append((data["inst"], data["type"], colour)) f = args.outfile print("""<html> <head><title>{} Tiles</title></head> <body> <h1>{} Tilegrid</h1> <table style='font-size: 8pt; border: 2px solid black; text-align: center'> """.format(args.part.upper(), args.part.upper()), file=f) for trow in tiles: print("<tr>", file=f) row_max_height = 0 for tloc in trow: row_max_height = max(row_max_height, len(tloc)) row_height = max(75, 30 * row_max_height) for tloc in trow: print("<td style='border: 2px solid black; height: {}px'>".format( row_height), file=f) for tile in tloc: print( "<div style='height: {}%; background-color: {}'><em>{}</em><br/><strong>{}</strong></div>" .format(100 / len(tloc), tile[2], tile[0], tile[1], tile[1]), file=f) print("</td>", file=f) print("</tr>", file=f) print("</table></body></html>", file=f)
def main(): devices = database.get_devices() for fam, famdata in sorted(devices["families"].items()): tdroot = path.join(database.get_db_root(), fam, "tiledata") if not path.exists(tdroot): os.mkdir(tdroot) for device in sorted(famdata["devices"].keys()): if famdata["devices"][device]["fuzz"]: tilegrid = database.get_tilegrid(fam, device) for tilename in sorted(tilegrid.keys()): tile = tiles.type_from_fullname(tilename) tile_dir = path.join(tdroot, tile) if not path.exists(tile_dir): os.mkdir(tile_dir) tile_db = path.join(tile_dir, "bits.db") if not path.exists(tile_db): with open(tile_db, 'w') as f: f.write('\n')
from fuzzconfig import FuzzConfig import nonrouting import fuzzloops import re import database speed_map = { "FAST_1V0": "7_High-Performance_1.0V", "SLOW_1V0": "7_Low-Power_1.0V", } all_tiles_40 = set(database.get_tilegrid("LIFCL", "LIFCL-40")["tiles"].keys()) cfg = FuzzConfig(job="SPEED", device="LIFCL-40", sv="../shared/empty_40.v", tiles=all_tiles_40) #cfg = FuzzConfig(job="SPEED", device="LIFCL-40", sv="../shared/empty_40.v", tiles=set(["CIB_R43C0:RBB_12"])) def main(): cfg.setup() empty = cfg.build_design(cfg.sv, {}) cfg.sv = "speed_40.v" nonrouting.fuzz_enum_setting( cfg, empty, "CHIP.SPEED", ["SLOW_1V0", "FAST_1V0"], lambda x: {"speed": speed_map[x]}, True, desc="Adjust back bias for high speed or low power")