From afe6d4092e41ba42f528503a345053bdc6173c34 Mon Sep 17 00:00:00 2001 From: Dhaval Chaudhari Date: Thu, 1 Jan 2026 20:03:32 +0530 Subject: [PATCH 1/5] verific: add -optimization option --- frontends/verific/verific.cc | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/frontends/verific/verific.cc b/frontends/verific/verific.cc index 5790e92f0..ff34eb2db 100644 --- a/frontends/verific/verific.cc +++ b/frontends/verific/verific.cc @@ -109,6 +109,7 @@ int verific_verbose; bool verific_import_pending; string verific_error_msg; int verific_sva_fsm_limit; +bool verific_opt = false; // enable Verific optimizations #ifdef VERIFIC_SYSTEMVERILOG_SUPPORT vector verific_incdirs, verific_libdirs, verific_libexts; @@ -3071,6 +3072,23 @@ std::string verific_import(Design *design, const std::mapsecond; + + // use Verific optimizations + #ifdef VERIFIC_SYSTEMVERILOG_SUPPORT + if (verific_opt) { + log(" Running Verific optimizations for %s.\n", it->first.c_str()); + + // log(" Inferring clock enable muxes for %s.\n", it->first.c_str()); + // nl->InferClockEnableMux(); + + log(" Running post-elaboration for %s.\n", it->first.c_str()); + nl->PostElaborationProcess(); + + log(" Running operator optimization for %s.\n", it->first.c_str()); + nl->OperatorOptimization(); + } + #endif + if (nl_done.count(it->first) == 0) { VerificImporter importer(false, false, false, false, false, false, false, false); nl_done[it->first] = it->second; @@ -3692,6 +3710,13 @@ struct VerificPass : public Pass { break; } +#ifdef VERIFIC_SYSTEMVERILOG_SUPPORT + if (args[argidx] == "-optimization") { + verific_opt = true; + continue; + } + #endif + #ifdef VERIFIC_SYSTEMVERILOG_SUPPORT if (GetSize(args) > argidx && (args[argidx] == "-f" || args[argidx] == "-F")) { From 78720b9ba221f02d3edcd36c68c65865d75218bf Mon Sep 17 00:00:00 2001 From: Dhaval Chaudhari Date: Fri, 2 Jan 2026 14:46:36 +0530 Subject: [PATCH 2/5] verific: remove redundant code --- frontends/verific/verific.cc | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/frontends/verific/verific.cc b/frontends/verific/verific.cc index ff34eb2db..54240d68c 100644 --- a/frontends/verific/verific.cc +++ b/frontends/verific/verific.cc @@ -3078,9 +3078,6 @@ std::string verific_import(Design *design, const std::mapfirst.c_str()); - // log(" Inferring clock enable muxes for %s.\n", it->first.c_str()); - // nl->InferClockEnableMux(); - log(" Running post-elaboration for %s.\n", it->first.c_str()); nl->PostElaborationProcess(); @@ -3706,17 +3703,14 @@ struct VerificPass : public Pass { veri_file::AddLOption(args[++argidx].c_str()); continue; } + if (args[argidx] == "-optimization") { + verific_opt = true; + continue; + } #endif break; } -#ifdef VERIFIC_SYSTEMVERILOG_SUPPORT - if (args[argidx] == "-optimization") { - verific_opt = true; - continue; - } - #endif - #ifdef VERIFIC_SYSTEMVERILOG_SUPPORT if (GetSize(args) > argidx && (args[argidx] == "-f" || args[argidx] == "-F")) { From 97b4b6f69bd272e3b1fe2cbd0462a4209260b0c5 Mon Sep 17 00:00:00 2001 From: Dhaval Chaudhari Date: Sun, 4 Jan 2026 01:28:37 +0530 Subject: [PATCH 3/5] fix indentation --- frontends/verific/verific.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontends/verific/verific.cc b/frontends/verific/verific.cc index 54240d68c..79766ec14 100644 --- a/frontends/verific/verific.cc +++ b/frontends/verific/verific.cc @@ -3074,7 +3074,7 @@ std::string verific_import(Design *design, const std::mapsecond; // use Verific optimizations - #ifdef VERIFIC_SYSTEMVERILOG_SUPPORT +#ifdef VERIFIC_SYSTEMVERILOG_SUPPORT if (verific_opt) { log(" Running Verific optimizations for %s.\n", it->first.c_str()); @@ -3084,7 +3084,7 @@ std::string verific_import(Design *design, const std::mapfirst.c_str()); nl->OperatorOptimization(); } - #endif +#endif if (nl_done.count(it->first) == 0) { VerificImporter importer(false, false, false, false, false, false, false, false); From 18d66b96f9b4953aac7db2526ecd651f871310c5 Mon Sep 17 00:00:00 2001 From: Dhaval Chaudhari Date: Sun, 4 Jan 2026 01:44:11 +0530 Subject: [PATCH 4/5] fix --- frontends/verific/verific.cc | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/frontends/verific/verific.cc b/frontends/verific/verific.cc index 79766ec14..b3fe80a3a 100644 --- a/frontends/verific/verific.cc +++ b/frontends/verific/verific.cc @@ -3703,15 +3703,16 @@ struct VerificPass : public Pass { veri_file::AddLOption(args[++argidx].c_str()); continue; } - if (args[argidx] == "-optimization") { - verific_opt = true; - continue; - } #endif break; } #ifdef VERIFIC_SYSTEMVERILOG_SUPPORT + if (GetSize(args) > argidx && args[argidx] == "-optimization") { + verific_opt = true; + continue; + } + if (GetSize(args) > argidx && (args[argidx] == "-f" || args[argidx] == "-F")) { unsigned verilog_mode = veri_file::UNDEFINED; From 42c9b9ef681b318b44e29ef47addc0fcd4d38947 Mon Sep 17 00:00:00 2001 From: Dhaval Chaudhari Date: Mon, 5 Jan 2026 23:35:47 +0530 Subject: [PATCH 5/5] move outside of VERIFIC_SYSTEMVERILOG_SUPPORT --- frontends/verific/verific.cc | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/frontends/verific/verific.cc b/frontends/verific/verific.cc index b3fe80a3a..1a5e6b5c7 100644 --- a/frontends/verific/verific.cc +++ b/frontends/verific/verific.cc @@ -3074,7 +3074,6 @@ std::string verific_import(Design *design, const std::mapsecond; // use Verific optimizations -#ifdef VERIFIC_SYSTEMVERILOG_SUPPORT if (verific_opt) { log(" Running Verific optimizations for %s.\n", it->first.c_str()); @@ -3084,7 +3083,6 @@ std::string verific_import(Design *design, const std::mapfirst.c_str()); nl->OperatorOptimization(); } -#endif if (nl_done.count(it->first) == 0) { VerificImporter importer(false, false, false, false, false, false, false, false); @@ -3707,12 +3705,12 @@ struct VerificPass : public Pass { break; } -#ifdef VERIFIC_SYSTEMVERILOG_SUPPORT if (GetSize(args) > argidx && args[argidx] == "-optimization") { verific_opt = true; - continue; + goto check_error; } +#ifdef VERIFIC_SYSTEMVERILOG_SUPPORT if (GetSize(args) > argidx && (args[argidx] == "-f" || args[argidx] == "-F")) { unsigned verilog_mode = veri_file::UNDEFINED;