diff --git a/common/report.cc b/common/report.cc index a595777a..5330583e 100644 --- a/common/report.cc +++ b/common/report.cc @@ -101,7 +101,7 @@ static Json::array report_critical_paths (const Context* ctx) { // Critical paths for (auto &report : ctx->timing_result.clock_paths) { - + critPathsJson.push_back(Json::object({ {"from", clock_event_name(ctx, report.second.clock_pair.start)}, {"to", clock_event_name(ctx, report.second.clock_pair.end)}, @@ -161,6 +161,78 @@ static Json::array report_detailed_net_timings (const Context* ctx) { return detailedNetTimingsJson; } +/* +Report JSON structure: + +{ + "utilization": { + : { + "available": , + "used": + }, + ... + }, + "fmax" { + : { + "achieved": , + "constraint": + }, + ... + }, + "critical_paths": [ + { + "from": , + "to": , + "path": [ + { + "from": { + "cell": + "port": + "loc": [ + , + + ] + }, + "to": { + "cell": + "port": + "loc": [ + , + + ] + }, + "type": , + "net": , + "delay": , + "budget": , + } + ... + ] + }, + ... + ], + "detailed_net_timings": [ + { + "driver": , + "port": , + "event": , + "net": , + "endpoints": [ + { + "cell": , + "port": , + "event": , + "delay": , + "budget": , + } + ... + ] + } + ... + ] +} +*/ + void Context::writeReport(std::ostream &out) const { auto util = get_utilization(this);