Esempio n. 1
0
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
Esempio n. 2
0
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)
Esempio n. 3
0
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)
Esempio n. 4
0
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')
Esempio n. 5
0
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")