diff --git a/common/kernel/nextpnr_types.h b/common/kernel/nextpnr_types.h index 1f5b2fee..ff3b656f 100644 --- a/common/kernel/nextpnr_types.h +++ b/common/kernel/nextpnr_types.h @@ -398,35 +398,35 @@ struct CriticalPath // Segment type enum class Type { - CLK2CLK, // Clock to clock delay - CLK_SKEW, // Clock skew - CLK_TO_Q, // Clock-to-Q delay - SOURCE, // Delayless source - LOGIC, // Combinational logic delay - ROUTING, // Routing delay - SETUP, // Setup time in sink - HOLD // Hold time in sink + CLK_TO_CLK, // Clock to clock delay + CLK_SKEW, // Clock skew + CLK_TO_Q, // Clock-to-Q delay + SOURCE, // Delayless source + LOGIC, // Combinational logic delay + ROUTING, // Routing delay + SETUP, // Setup time in sink + HOLD // Hold time in sink }; [[maybe_unused]] static const std::string type_to_str(Type typ) { switch (typ) { - case Type::CLK2CLK: - return "CLK2CLK"; + case Type::CLK_TO_CLK: + return "clk-to-clk"; case Type::CLK_SKEW: - return "CLK_SKEW"; + return "clk-skew"; case Type::CLK_TO_Q: - return "CLK_TO_Q"; + return "clk-to-q"; case Type::SOURCE: - return "SOURCE"; + return "source"; case Type::LOGIC: - return "LOGIC"; + return "logic"; case Type::ROUTING: - return "ROUTING"; + return "routing"; case Type::SETUP: - return "SETUP"; + return "setup"; case Type::HOLD: - return "HOLD"; + return "hold"; default: log_error("Impossible Segment::Type"); } diff --git a/common/kernel/report.cc b/common/kernel/report.cc index 7fe0bf74..cd5b1172 100644 --- a/common/kernel/report.cc +++ b/common/kernel/report.cc @@ -79,20 +79,8 @@ static Json::array json_report_critical_paths(const Context *ctx) auto segmentJson = Json::object({{"delay", Json::array({minDelay, maxDelay})}, {"from", fromJson}, {"to", toJson}}); - if (segment.type == CriticalPath::Segment::Type::CLK2CLK) { - segmentJson["type"] = "clk-to-clk"; - } else if (segment.type == CriticalPath::Segment::Type::CLK_SKEW) { - segmentJson["type"] = "clk-skew"; - } else if (segment.type == CriticalPath::Segment::Type::CLK_TO_Q) { - segmentJson["type"] = "clk-to-q"; - } else if (segment.type == CriticalPath::Segment::Type::SOURCE) { - segmentJson["type"] = "source"; - } else if (segment.type == CriticalPath::Segment::Type::LOGIC) { - segmentJson["type"] = "logic"; - } else if (segment.type == CriticalPath::Segment::Type::SETUP) { - segmentJson["type"] = "setup"; - } else if (segment.type == CriticalPath::Segment::Type::ROUTING) { - segmentJson["type"] = "routing"; + segmentJson["type"] = CriticalPath::Segment::type_to_str(segment.type); + if (segment.type == CriticalPath::Segment::Type::ROUTING) { segmentJson["net"] = segment.net.c_str(ctx); } diff --git a/common/kernel/timing.cc b/common/kernel/timing.cc index 6e9491cc..957c4f5a 100644 --- a/common/kernel/timing.cc +++ b/common/kernel/timing.cc @@ -950,7 +950,7 @@ CriticalPath TimingAnalyser::build_critical_path_report(domain_id_t domain_pair, delay_t clock_delay = clock_delays.at(clock_pair); if (clock_delay != 0) { CriticalPath::Segment seg_c2c; - seg_c2c.type = CriticalPath::Segment::Type::CLK2CLK; + seg_c2c.type = CriticalPath::Segment::Type::CLK_TO_CLK; seg_c2c.delay = DelayPair(clock_delay); seg_c2c.from = std::make_pair(sp_cell->name, sp_clk_info.clock_port); seg_c2c.to = std::make_pair(ep_cell->name, ep_clk_info.clock_port); diff --git a/common/kernel/timing_log.cc b/common/kernel/timing_log.cc index e6fdc935..e21fcb3d 100644 --- a/common/kernel/timing_log.cc +++ b/common/kernel/timing_log.cc @@ -61,9 +61,9 @@ static void log_crit_paths(const Context *ctx, TimingResult &result) source_entries.emplace_back(sourcelist.substr(prev, current - prev)); // Iterate and print our source list at the correct indentation level - log_info(" Defined in:\n"); + log_info(" Defined in:\n"); for (auto entry : source_entries) { - log_info(" %s\n", entry.c_str()); + log_info(" %s\n", entry.c_str()); } }; @@ -82,7 +82,7 @@ static void log_crit_paths(const Context *ctx, TimingResult &result) return ctx->getDelayNS(d.maxDelay()); }; - log_info(" type curr total\n"); + log_info(" type curr total\n"); for (const auto &segment : path.segments) { total += segment.delay; @@ -94,11 +94,11 @@ static void log_crit_paths(const Context *ctx, TimingResult &result) segment.type == CriticalPath::Segment::Type::HOLD) { logic_total += segment.delay; - log_info("%8s % 5.2f % 5.2f %s.%s\n", CriticalPath::Segment::type_to_str(segment.type).c_str(), + log_info("%10s % 5.2f % 5.2f %s.%s\n", CriticalPath::Segment::type_to_str(segment.type).c_str(), get_delay_ns(segment.delay), get_delay_ns(total), segment.to.first.c_str(ctx), segment.to.second.c_str(ctx)); } else if (segment.type == CriticalPath::Segment::Type::ROUTING || - segment.type == CriticalPath::Segment::Type::CLK2CLK || + segment.type == CriticalPath::Segment::Type::CLK_TO_CLK || segment.type == CriticalPath::Segment::Type::CLK_SKEW) { route_total = route_total + segment.delay; @@ -108,11 +108,11 @@ static void log_crit_paths(const Context *ctx, TimingResult &result) auto driver_loc = ctx->getBelLocation(driver->bel); auto sink_loc = ctx->getBelLocation(sink->bel); - log_info("%8s % 5.2f % 5.2f Net %s (%d,%d) -> (%d,%d)\n", + log_info("%10s % 5.2f % 5.2f Net %s (%d,%d) -> (%d,%d)\n", CriticalPath::Segment::type_to_str(segment.type).c_str(), get_delay_ns(segment.delay), get_delay_ns(total), segment.net.c_str(ctx), driver_loc.x, driver_loc.y, sink_loc.x, sink_loc.y); - log_info(" Sink %s.%s\n", segment.to.first.c_str(ctx), + log_info(" Sink %s.%s\n", segment.to.first.c_str(ctx), segment.to.second.c_str(ctx)); const NetInfo *net = ctx->nets.at(segment.net).get(); @@ -125,7 +125,7 @@ static void log_crit_paths(const Context *ctx, TimingResult &result) auto driver_wire = ctx->getNetinfoSourceWire(net); auto sink_wire = ctx->getNetinfoSinkWire(net, sink_ref, 0); - log_info(" prediction: %f ns estimate: %f ns\n", + log_info(" prediction: %f ns estimate: %f ns\n", ctx->getDelayNS(ctx->predictArcDelay(net, sink_ref)), ctx->getDelayNS(ctx->estimateDelay(driver_wire, sink_wire))); auto cursor = sink_wire; @@ -241,7 +241,7 @@ static void log_fmax(Context *ctx, TimingResult &result, bool warn_on_failure) bool has_clock_to_clock = false; DelayPair clock_delay = DelayPair(0); for (const auto &seg : report.segments) { - if (seg.type == CriticalPath::Segment::Type::CLK2CLK) { + if (seg.type == CriticalPath::Segment::Type::CLK_TO_CLK) { has_clock_to_clock = true; clock_delay += seg.delay; }