diff --git a/kernel/driver.cc b/kernel/driver.cc index 10ebca84e..4188a080b 100644 --- a/kernel/driver.cc +++ b/kernel/driver.cc @@ -671,6 +671,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 4d6c6d6ff..c3eb227f7 100644 --- a/kernel/rtlil.h +++ b/kernel/rtlil.h @@ -132,6 +132,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 cdb9f3bbb..ba7905e27 100644 --- a/kernel/rtlil_bufnorm.cc +++ b/kernel/rtlil_bufnorm.cc @@ -251,6 +251,7 @@ struct RTLIL::SigNormIndex } void restore_connections() { + int64_t start = PerformanceTimer::query(); flush_connections(); pool wires; for (auto const &bit : sigmap.database) @@ -278,6 +279,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; } }; @@ -318,6 +324,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) @@ -359,8 +369,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()