From afe6d4092e41ba42f528503a345053bdc6173c34 Mon Sep 17 00:00:00 2001 From: Dhaval Chaudhari Date: Thu, 1 Jan 2026 20:03:32 +0530 Subject: [PATCH] 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")) {