From 723e41d5986b15cb6317b19df4368ce04a6c54b6 Mon Sep 17 00:00:00 2001 From: Clifford Wolf Date: Sun, 27 Sep 2015 14:54:57 +0200 Subject: database updates --- icefuzz/timings.py | 54 +++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 37 insertions(+), 17 deletions(-) (limited to 'icefuzz/timings.py') diff --git a/icefuzz/timings.py b/icefuzz/timings.py index a73d35e..997a047 100644 --- a/icefuzz/timings.py +++ b/icefuzz/timings.py @@ -178,6 +178,19 @@ def rewrite_celltype(celltype): return celltype +def add_entry(celltype, entry): + entry = sdf_to_string(entry) + entry = entry.replace("(posedge ", "posedge:") + entry = entry.replace("(negedge ", "negedge:") + entry = entry.replace("(", "") + entry = entry.replace(")", "") + entry = entry.split() + if celltype.count("FEEDBACK") == 0 and entry[0] == "IOPATH" and entry[2].startswith("PLLOUT"): + entry[3] = "*:*:*" + entry[4] = "*:*:*" + database[celltype].add(tuple(entry)) + + ########################################### # Parse SDF input files @@ -200,15 +213,6 @@ for filename in sdf_inputs: celltype = None - def add_entry(entry): - entry = sdf_to_string(entry) - entry = entry.replace("(posedge ", "posedge:") - entry = entry.replace("(negedge ", "negedge:") - entry = entry.replace("(", "") - entry = entry.replace(")", "") - entry = entry.split() - database[celltype].add(tuple(entry)) - for stmt in cell: if stmt[0] == "CELLTYPE": celltype = rewrite_celltype(stmt[1][1:-1]) @@ -218,11 +222,11 @@ for filename in sdf_inputs: assert stmt[1][0] == "ABSOLUTE" for entry in stmt[1][1:]: assert entry[0] == "IOPATH" - add_entry(entry) + add_entry(celltype, entry) if stmt[0] == "TIMINGCHECK": for entry in stmt[1:]: - add_entry(entry) + add_entry(celltype, entry) ########################################### @@ -239,7 +243,7 @@ for filename in txt_inputs: celltype = rewrite_celltype(line[1]) database.setdefault(celltype, set()) else: - database[celltype].add(tuple(line)) + add_entry(celltype, line) ########################################### @@ -321,11 +325,7 @@ if output_mode == "txt": if output_mode == "html": print("

IceStorm Timing Model: %s

" % label) - print("
") - + edge_celltypes = set() source_by_sink_desc = dict() sink_by_source_desc = dict() @@ -334,14 +334,34 @@ if output_mode == "html": source, sink = line.split() source_cell, source_port = source.split(".") sink_cell, sink_port = sink.split(".") + source_cell = rewrite_celltype(source_cell) sink_cell = rewrite_celltype(sink_cell) + + if source_cell in ["GND", "VCC"]: + continue + source_by_sink_desc.setdefault(sink_cell, set()) sink_by_source_desc.setdefault(source_cell, set()) + source_by_sink_desc[sink_cell].add((sink_port, source_cell, source_port)) sink_by_source_desc[source_cell].add((source_port, sink_cell, sink_port)) + edge_celltypes.add(source_cell) + edge_celltypes.add(sink_cell) + + print("
") + + for celltype in sorted(database, key=alphanum_key): + if celltype not in edge_celltypes: + continue + print("


") print("

%s

" % (celltype, celltype)) -- cgit v1.2.3