diff --git a/kernel/driver.cc b/kernel/driver.cc index d76841909..3c9575f57 100644 --- a/kernel/driver.cc +++ b/kernel/driver.cc @@ -725,6 +725,10 @@ int main(int argc, char **argv) total_ns += gc_ns; timedat.insert(make_tuple(gc_ns, RTLIL::OwningIdString::garbage_collection_count(), "id_gc")); + total_ns += signorm_ns; + timedat.insert(make_tuple(signorm_ns, signorm_count, "signorm")); + total_ns += signorm_restore_ns; + timedat.insert(make_tuple(signorm_restore_ns, signorm_restore_count, "signorm_restore")); } if (timing_details) diff --git a/kernel/rtlil.h b/kernel/rtlil.h index cf146f786..0ef21529a 100644 --- a/kernel/rtlil.h +++ b/kernel/rtlil.h @@ -129,6 +129,12 @@ namespace RTLIL struct PortBit; }; +// TODO clean up? +extern int64_t signorm_ns; +extern int signorm_count; +extern int64_t signorm_restore_ns; +extern int signorm_restore_count; + struct RTLIL::IdString { struct Storage { diff --git a/kernel/rtlil_bufnorm.cc b/kernel/rtlil_bufnorm.cc index a3a53ae93..359ca298f 100644 --- a/kernel/rtlil_bufnorm.cc +++ b/kernel/rtlil_bufnorm.cc @@ -233,6 +233,7 @@ struct RTLIL::SigNormIndex } void restore_connections() { + int64_t start = PerformanceTimer::query(); flush_connections(); pool wires; for (auto const &bit : sigmap.database) @@ -260,6 +261,11 @@ struct RTLIL::SigNormIndex } restored_connections = module->connections_.size(); + + int64_t time_ns = PerformanceTimer::query() - start; + Pass::subtract_from_current_runtime_ns(time_ns); + signorm_restore_ns += time_ns; + ++signorm_restore_count; } }; @@ -316,6 +322,10 @@ void RTLIL::Design::bufNormalize(bool enable) module->bufNormalize(); } +int64_t signorm_ns; +int signorm_count; +int64_t signorm_restore_ns; +int signorm_restore_count; void RTLIL::Design::sigNormalize(bool enable) { if (!enable) @@ -357,8 +367,13 @@ void RTLIL::Design::sigNormalize(bool enable) flagSigNormalized = true; } + int64_t start = PerformanceTimer::query(); for (auto module : modules()) module->sigNormalize(); + int64_t time_ns = PerformanceTimer::query() - start; + Pass::subtract_from_current_runtime_ns(time_ns); + signorm_ns += time_ns; + ++signorm_count; } void RTLIL::Module::sigNormalize()