blob: 807eaef787baa99810761a858dfcf01385b479ab [file] [log] [blame]
import sys
import json
import timing_dbs
import pip_classes
def make_interconn_timing_html(dbfile, family, grade, htmlfile):
with open(dbfile, 'r') as f:
db = json.load(f)
with open(htmlfile, 'w') as html:
print("<html>", file=html)
print("<head>", file=html)
print("<title>{} Speed Grade -{} Interconnect Timings</title>".format(family, grade), file=html)
print("</head>", file=html)
print("<body>", file=html)
print("<h1>{} Speed Grade -{} Interconnect Timings</h1>".format(family, grade), file=html)
print("<p>Values in red are fixed to zero by definition.</p>", file=html)
print("<table width='800'>", file=html)
print("<tbody>", file=html)
print("<tr><th rowspan='2'>Pip Class</th>", file=html)
print("<th colspan='3'>Base Delay (ps)</th><th colspan='3'>Fanout Adder (ps)</th></tr>", file=html)
print("<tr><th>Min</th><th>Typ</th><th>Max</th><th>Min</th><th>Typ</th><th>Max</th></tr>", file=html)
trstyle = ""
for pipclass, pcdata in sorted(db.items()):
trstyle = " bgcolor=\"#dddddd\"" if trstyle == "" else ""
print("<tr {}>".format(trstyle), file=html)
print("<td>{}</td>".format(pipclass), file=html)
ds = "style='color: red;'" if pip_classes.force_zero_delay_pip(pipclass) else ""
fs = "style='color: red;'" if pip_classes.force_zero_fanout_pip(pipclass) else ""
print("<td {}>{:.0f}</td><td {}>{:.0f}</td><td {}>{:.0f}</td>".format(ds, pcdata["delay"][0], ds, pcdata["delay"][1], ds, pcdata["delay"][2]), file=html)
print("<td {}>{:.0f}</td><td {}>{:.0f}</td><td {}>{:.0f}</td>".format(fs, pcdata["fanout"][0], fs, pcdata["fanout"][1], fs, pcdata["fanout"][2]), file=html)
print("</tr>", file=html)
print("</tbody>", file=html)
print("</table>", file=html)
print("</body>", file=html)
print("</html>", file=html)
def main(argv):
if len(argv) < 3:
print("./interconnect_html.py grade out.html")
make_cell_timing_html(timing_dbs.interconnect_db_path("ECP5", argv[1]), "ECP5", argv[1], argv[2])
if __name__ == "__main__":
sys.exit(main(sys.argv))