diff options
author | Eddie Hung <eddieh@ece.ubc.ca> | 2018-11-13 16:32:06 -0800 |
---|---|---|
committer | Eddie Hung <eddieh@ece.ubc.ca> | 2018-11-13 16:32:06 -0800 |
commit | 42d1990784b95710e16d3892399262877ab18502 (patch) | |
tree | 1481a9a4007f4105d42143d64962fad79b6f3bb2 /common/timing.cc | |
parent | efa22e5ba9ec680c083274d4753cf1ce1de007a0 (diff) | |
download | nextpnr-42d1990784b95710e16d3892399262877ab18502.tar.gz nextpnr-42d1990784b95710e16d3892399262877ab18502.tar.bz2 nextpnr-42d1990784b95710e16d3892399262877ab18502.zip |
[timing] Path report to include pips when --verbose set
Diffstat (limited to 'common/timing.cc')
-rw-r--r-- | common/timing.cc | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/common/timing.cc b/common/timing.cc index 2769cd65..c5a99f54 100644 --- a/common/timing.cc +++ b/common/timing.cc @@ -407,7 +407,24 @@ void timing_analysis(Context *ctx, bool print_histogram, bool print_path) log_info("%4.1f %4.1f Net %s budget %f ns (%d,%d) -> (%d,%d)\n", ctx->getDelayNS(net_delay), ctx->getDelayNS(total), net->name.c_str(ctx), ctx->getDelayNS(sink->budget), driver_loc.x, driver_loc.y, sink_loc.x, sink_loc.y); - log_info(" Sink %s.%s\n", sink_cell->name.c_str(ctx), sink->port.c_str(ctx)); + log_info(" Sink %s.%s\n", sink_cell->name.c_str(ctx), sink->port.c_str(ctx)); + if (ctx->verbose) { + auto driver_wire = ctx->getNetinfoSourceWire(net); + auto sink_wire = ctx->getNetinfoSinkWire(net, *sink); + log_info(" prediction: %f ns estimate: %f ns\n", + ctx->getDelayNS(ctx->predictDelay(net, *sink)), ctx->getDelayNS(ctx->estimateDelay(driver_wire, sink_wire))); + auto cursor = sink_wire; + delay_t delay; + while (driver_wire != cursor) { + auto it = net->wires.find(cursor); + assert(it != net->wires.end()); + auto pip = it->second.pip; + NPNR_ASSERT(pip != PipId()); + delay = ctx->getPipDelay(pip).maxDelay(); + log_info(" %1.3f %s\n", ctx->getDelayNS(delay), ctx->getPipName(pip).c_str(ctx)); + cursor = ctx->getPipSrcWire(pip); + } + } last_port = sink->port; } log_break(); |