From 209e59f9a94a6c02aab9dc6dfc77f13903d0f70e Mon Sep 17 00:00:00 2001 From: John McMaster Date: Tue, 9 Oct 2018 11:21:49 -0700 Subject: [PATCH] tilegrid: database["segments"] => segments Signed-off-by: John McMaster --- fuzzers/005-tilegrid/generate.py | 147 +++++++++++++++---------------- 1 file changed, 73 insertions(+), 74 deletions(-) diff --git a/fuzzers/005-tilegrid/generate.py b/fuzzers/005-tilegrid/generate.py index 59e83346..fb5e5487 100644 --- a/fuzzers/005-tilegrid/generate.py +++ b/fuzzers/005-tilegrid/generate.py @@ -24,8 +24,8 @@ for arg in sys.argv[1:]: # Create initial database database = dict() -database["tiles"] = dict() -database["segments"] = dict() +database = dict() +segments = dict() tiles_by_grid = dict() for record in tiles: @@ -34,7 +34,7 @@ for record in tiles: tiles_by_grid[(grid_x, grid_y)] = tile_name framebaseaddr = None - database["tiles"][tile_name] = { + database[tile_name] = { "type": tile_type, "sites": dict(), "grid_x": grid_x, @@ -46,7 +46,7 @@ for record in tiles: site_type, site_name = record[i:i + 2] if site_name in site_baseaddr: framebaseaddr = site_baseaddr[site_name] - database["tiles"][tile_name]["sites"][site_name] = site_type + database[tile_name]["sites"][site_name] = site_type if framebaseaddr is not None: tile_baseaddr[tile_name] = [framebaseaddr, 0] @@ -54,7 +54,7 @@ for record in tiles: ####################################### # Add Segments -for tile_name, tile_data in database["tiles"].items(): +for tile_name, tile_data in database.items(): tile_type = tile_data["type"] grid_x = tile_data["grid_x"] grid_y = tile_data["grid_y"] @@ -68,31 +68,31 @@ for tile_name, tile_data in database["tiles"].items(): segment_name = "SEG_" + tile_name segtype = tile_type.lower() - database["segments"][segment_name] = dict() - database["segments"][segment_name]["tiles"] = [ + segments[segment_name] = dict() + segments[segment_name]["tiles"] = [ tile_name, int_tile_name ] - database["segments"][segment_name]["type"] = segtype - database["segments"][segment_name]["frames"] = 36 - database["segments"][segment_name]["words"] = 2 + segments[segment_name]["type"] = segtype + segments[segment_name]["frames"] = 36 + segments[segment_name]["words"] = 2 if tile_name in tile_baseaddr: - database["segments"][segment_name]["baseaddr"] = tile_baseaddr[ + segments[segment_name]["baseaddr"] = tile_baseaddr[ tile_name] - database["tiles"][tile_name]["segment"] = segment_name - database["tiles"][int_tile_name]["segment"] = segment_name + database[tile_name]["segment"] = segment_name + database[int_tile_name]["segment"] = segment_name if tile_type in ["HCLK_L", "HCLK_R"]: segment_name = "SEG_" + tile_name segtype = tile_type.lower() - database["segments"][segment_name] = dict() - database["segments"][segment_name]["tiles"] = [tile_name] - database["segments"][segment_name]["type"] = segtype - database["segments"][segment_name]["frames"] = 26 - database["segments"][segment_name]["words"] = 1 - database["tiles"][tile_name]["segment"] = segment_name + segments[segment_name] = dict() + segments[segment_name]["tiles"] = [tile_name] + segments[segment_name]["type"] = segtype + segments[segment_name]["frames"] = 26 + segments[segment_name]["words"] = 1 + database[tile_name]["segment"] = segment_name if tile_type in ["BRAM_L", "DSP_L", "BRAM_R", "DSP_R"]: for k in range(5): @@ -106,41 +106,41 @@ for tile_name, tile_data in database["tiles"].items(): segment_name = "SEG_" + tile_name.replace("_", "%d_" % k, 1) segtype = tile_type.lower().replace("_", "%d_" % k, 1) - database["segments"][segment_name] = dict() - database["segments"][segment_name]["type"] = segtype - database["segments"][segment_name]["frames"] = 28 - database["segments"][segment_name]["words"] = 2 + segments[segment_name] = dict() + segments[segment_name]["type"] = segtype + segments[segment_name]["frames"] = 28 + segments[segment_name]["words"] = 2 if k == 0: - database["segments"][segment_name]["tiles"] = [ + segments[segment_name]["tiles"] = [ tile_name, interface_tile_name, int_tile_name ] - database["tiles"][tile_name]["segment"] = segment_name - database["tiles"][interface_tile_name][ + database[tile_name]["segment"] = segment_name + database[interface_tile_name][ "segment"] = segment_name - database["tiles"][int_tile_name]["segment"] = segment_name + database[int_tile_name]["segment"] = segment_name else: - database["segments"][segment_name]["tiles"] = [ + segments[segment_name]["tiles"] = [ interface_tile_name, int_tile_name ] - database["tiles"][interface_tile_name][ + database[interface_tile_name][ "segment"] = segment_name - database["tiles"][int_tile_name]["segment"] = segment_name + database[int_tile_name]["segment"] = segment_name ####################################### # Populate segment base addresses: L/R along INT column -for segment_name in database["segments"].keys(): - if "baseaddr" in database["segments"][segment_name]: - framebase, wordbase = database["segments"][segment_name]["baseaddr"] +for segment_name in segments.keys(): + if "baseaddr" in segments[segment_name]: + framebase, wordbase = segments[segment_name]["baseaddr"] inttile = [ - tile for tile in database["segments"][segment_name]["tiles"] - if database["tiles"][tile]["type"] in ["INT_L", "INT_R"] + tile for tile in segments[segment_name]["tiles"] + if database[tile]["type"] in ["INT_L", "INT_R"] ][0] - grid_x = database["tiles"][inttile]["grid_x"] - grid_y = database["tiles"][inttile]["grid_y"] + grid_x = database[inttile]["grid_x"] + grid_y = database[inttile]["grid_y"] - if database["tiles"][inttile]["type"] == "INT_L": + if database[inttile]["type"] == "INT_L": grid_x += 1 framebase = "0x%08x" % (int(framebase, 16) + 0x80) else: @@ -152,41 +152,41 @@ for segment_name in database["segments"].keys(): tile = tiles_by_grid[(grid_x, grid_y)] - if database["tiles"][inttile]["type"] == "INT_L": - assert database["tiles"][tile]["type"] == "INT_R" - elif database["tiles"][inttile]["type"] == "INT_R": - assert database["tiles"][tile]["type"] == "INT_L" + if database[inttile]["type"] == "INT_L": + assert database[tile]["type"] == "INT_R" + elif database[inttile]["type"] == "INT_R": + assert database[tile]["type"] == "INT_L" else: assert 0 - assert "segment" in database["tiles"][tile] + assert "segment" in database[tile] - seg = database["tiles"][tile]["segment"] + seg = database[tile]["segment"] - if "baseaddr" in database["segments"][seg]: - assert database["segments"][seg]["baseaddr"] == [ + if "baseaddr" in segments[seg]: + assert segments[seg]["baseaddr"] == [ framebase, wordbase ] else: - database["segments"][seg]["baseaddr"] = [framebase, wordbase] + segments[seg]["baseaddr"] = [framebase, wordbase] ####################################### # Populate segment base addresses: Up along INT/HCLK columns start_segments = list() -for segment_name in database["segments"].keys(): - if "baseaddr" in database["segments"][segment_name]: +for segment_name in segments.keys(): + if "baseaddr" in segments[segment_name]: start_segments.append(segment_name) for segment_name in start_segments: - framebase, wordbase = database["segments"][segment_name]["baseaddr"] + framebase, wordbase = segments[segment_name]["baseaddr"] inttile = [ - tile for tile in database["segments"][segment_name]["tiles"] - if database["tiles"][tile]["type"] in ["INT_L", "INT_R"] + tile for tile in segments[segment_name]["tiles"] + if database[tile]["type"] in ["INT_L", "INT_R"] ][0] - grid_x = database["tiles"][inttile]["grid_x"] - grid_y = database["tiles"][inttile]["grid_y"] + grid_x = database[inttile]["grid_x"] + grid_y = database[inttile]["grid_y"] for i in range(50): grid_y -= 1 @@ -196,33 +196,33 @@ for segment_name in start_segments: else: wordbase += 2 - segname = database["tiles"][tiles_by_grid[(grid_x, grid_y)]]["segment"] - database["segments"][segname]["baseaddr"] = [framebase, wordbase] + segname = database[tiles_by_grid[(grid_x, grid_y)]]["segment"] + segments[segname]["baseaddr"] = [framebase, wordbase] ####################################### # Transfer segment data into tiles -for segment_name in database["segments"].keys(): +for segment_name in segments.keys(): try: - baseaddr, offset = database["segments"][segment_name]["baseaddr"] + baseaddr, offset = segments[segment_name]["baseaddr"] except: print('Failed on segment name %s' % segment_name) raise - for tile_name in database["segments"][segment_name]["tiles"]: - tile_type = database["tiles"][tile_name]["type"] + for tile_name in segments[segment_name]["tiles"]: + tile_type = database[tile_name]["type"] if tile_type in ["CLBLL_L", "CLBLL_R", "CLBLM_L", "CLBLM_R", "INT_L", "INT_R"]: - database["tiles"][tile_name]["baseaddr"] = baseaddr - database["tiles"][tile_name]["offset"] = offset - database["tiles"][tile_name]["height"] = 2 + database[tile_name]["baseaddr"] = baseaddr + database[tile_name]["offset"] = offset + database[tile_name]["height"] = 2 elif tile_type in ["HCLK_L", "HCLK_R"]: - database["tiles"][tile_name]["baseaddr"] = baseaddr - database["tiles"][tile_name]["offset"] = offset - database["tiles"][tile_name]["height"] = 1 + database[tile_name]["baseaddr"] = baseaddr + database[tile_name]["offset"] = offset + database[tile_name]["height"] = 1 elif tile_type in ["BRAM_L", "BRAM_R", "DSP_L", "DSP_R"]: - database["tiles"][tile_name]["baseaddr"] = baseaddr - database["tiles"][tile_name]["offset"] = offset - database["tiles"][tile_name]["height"] = 10 + database[tile_name]["baseaddr"] = baseaddr + database[tile_name]["offset"] = offset + database[tile_name]["height"] = 10 elif tile_type in ["INT_INTERFACE_L", "INT_INTERFACE_R", "BRAM_INT_INTERFACE_L", "BRAM_INT_INTERFACE_R"]: continue @@ -233,14 +233,13 @@ for segment_name in database["segments"].keys(): # TODO: Migrate to new tilegrid format via library. This data is added for # compability with unconverted tools. Update tools then remove this data from # tilegrid.json. -for tiledata in database['tiles'].values(): +for tiledata in database.values(): if "segment" in tiledata: segment = tiledata['segment'] - tiledata['frames'] = database['segments'][segment]['frames'] - tiledata['words'] = database['segments'][segment]['words'] - tiledata['segment_type'] = database['segments'][segment]['type'] + tiledata['frames'] = segments[segment]['frames'] + tiledata['words'] = segments[segment]['words'] + tiledata['segment_type'] = segments[segment]['type'] -database = database["tiles"] ####################################### # Write