diff --git a/frontends/verific/verific.cc b/frontends/verific/verific.cc index 0115aa2de..55bc9c9f8 100644 --- a/frontends/verific/verific.cc +++ b/frontends/verific/verific.cc @@ -126,7 +126,7 @@ vector verific_incdirs, verific_libdirs, verific_libexts; void msg_func(msg_type_t msg_type, const char *message_id, linefile_type linefile, const char *msg, va_list args) { - string message_prefix = stringf("IMPORT-%s [%s] ", + string message_prefix = stringf("VERIFIC-%s [%s] ", msg_type == VERIFIC_NONE ? "NONE" : msg_type == VERIFIC_ERROR ? "ERROR" : msg_type == VERIFIC_WARNING ? "WARNING" : @@ -3157,7 +3157,7 @@ bool check_noverific_env() #endif struct VerificPass : public Pass { - VerificPass() : Pass("import", "load Verilog and VHDL designs using IMPORT") { } + VerificPass() : Pass("verific", "load Verilog and VHDL designs using VERIFIC") { } #ifdef YOSYSHQ_VERIFIC_EXTENSIONS void on_register() override { VerificExtensions::Reset(); } @@ -3167,10 +3167,10 @@ struct VerificPass : public Pass { { // |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| log("\n"); -#ifdef VERIFIC_SYSTEMVERILOG_SUPPORT - log(" import {-vlog95|-vlog2k|-sv2005|-sv2009|-sv2012|-sv} ..\n"); + #ifdef VERIFIC_SYSTEMVERILOG_SUPPORT + log(" verific {-vlog95|-vlog2k|-sv2005|-sv2009|-sv2012|-sv} ..\n"); log("\n"); - log("Load the specified Verilog/SystemVerilog files into IMPORT.\n"); + log("Load the specified Verilog/SystemVerilog files into Verific.\n"); log("\n"); log("All files specified in one call to this command are one compilation unit.\n"); log("Files passed to different calls to this command are treated as belonging to\n"); @@ -3178,33 +3178,33 @@ struct VerificPass : public Pass { log("\n"); log("Additional -D[=] options may be added after the option indicating\n"); log("the language version (and before file names) to set additional verilog defines.\n"); - log("The macro SYNTHESIS is defined implicitly.\n"); + log("The macros YOSYS, SYNTHESIS, and VERIFIC are defined implicitly.\n"); log("\n"); log("\n"); - log(" import -formal ..\n"); + log(" verific -formal ..\n"); log("\n"); log("Like -sv, but define FORMAL instead of SYNTHESIS.\n"); log("\n"); log("\n"); #endif #ifdef VERIFIC_VHDL_SUPPORT - log(" import {-vhdl87|-vhdl93|-vhdl2k|-vhdl2008|-vhdl2019|-vhdl} ..\n"); + log(" verific {-vhdl87|-vhdl93|-vhdl2k|-vhdl2008|-vhdl2019|-vhdl} ..\n"); log("\n"); - log("Load the specified VHDL files into IMPORT.\n"); + log("Load the specified VHDL files into Verific.\n"); log("\n"); log("\n"); #endif #ifdef VERIFIC_EDIF_SUPPORT - log(" import {-edif} ..\n"); + log(" verific {-edif} ..\n"); log("\n"); - log("Load the specified EDIF files into IMPORT.\n"); + log("Load the specified EDIF files into Verific.\n"); log("\n"); log("\n"); #endif #ifdef VERIFIC_LIBERTY_SUPPORT - log(" import {-liberty} ..\n"); + log(" verific {-liberty} ..\n"); log("\n"); - log("Load the specified Liberty files into IMPORT.\n"); + log("Load the specified Liberty files into Verific.\n"); log("Default library when -work is not present is one specified in liberty file.\n"); log("To use from SystemVerilog or VHDL use -L to specify liberty library."); log("\n"); @@ -3213,20 +3213,13 @@ struct VerificPass : public Pass { log("\n"); log("\n"); #endif -#ifdef VERIFIC_UPF_SUPPORT - log(" import {-upf} ..\n"); - log("\n"); - log("Load the specified UPF files into IMPORT.\n"); - log("\n"); - log("\n"); -#endif #ifdef VERIFIC_SYSTEMVERILOG_SUPPORT - log(" import {-f|-F} [-vlog95|-vlog2k|-sv2005|-sv2009|\n"); + log(" verific {-f|-F} [-vlog95|-vlog2k|-sv2005|-sv2009|\n"); log(" -sv2012|-sv|-formal] \n"); log("\n"); log("Load and execute the specified command file.\n"); log("Override verilog parsing mode can be set.\n"); - log("The macro SYNTHESIS/FORMAL is defined implicitly.\n"); + log("The macros YOSYS, SYNTHESIS/FORMAL, and VERIFIC are defined implicitly.\n"); log("\n"); log("Command file parser supports following commands in file:\n"); log(" +define+= - defines macro\n"); @@ -3255,80 +3248,50 @@ struct VerificPass : public Pass { log("\n"); log("\n"); #endif - log(" import [-work ] {-sv|-vhdl|...} \n"); + log(" verific [-work ] {-sv|-vhdl|...} \n"); log("\n"); log("Load the specified Verilog/SystemVerilog/VHDL file into the specified library.\n"); log("(default library when -work is not present: \"work\")\n"); log("\n"); log("\n"); - log(" import [-L ] {-sv|-vhdl|...} \n"); + log(" verific [-L ] {-sv|-vhdl|...} \n"); log("\n"); log("Look up external definitions in the specified library.\n"); log("(-L may be used more than once)\n"); log("\n"); log("\n"); #ifdef VERIFIC_SYSTEMVERILOG_SUPPORT - log(" import -vlog-incdir ..\n"); + log(" verific -vlog-incdir ..\n"); log("\n"); log("Add Verilog include directories.\n"); log("\n"); log("\n"); - log(" import -vlog-libdir ..\n"); + log(" verific -vlog-libdir ..\n"); log("\n"); - log("Add Verilog library directories. IMPORT will search in this directories to\n"); + log("Add Verilog library directories. Verific will search in this directories to\n"); log("find undefined modules.\n"); log("\n"); log("\n"); - log(" import -vlog-libext ..\n"); + log(" verific -vlog-libext ..\n"); log("\n"); log("Add Verilog library extensions, used when searching in library directories.\n"); log("\n"); log("\n"); - log(" import -vlog-define [=]..\n"); + log(" verific -vlog-define [=]..\n"); log("\n"); log("Add Verilog defines.\n"); log("\n"); log("\n"); - log(" import -vlog-undef ..\n"); + log(" verific -vlog-undef ..\n"); log("\n"); log("Remove Verilog defines previously set with -vlog-define.\n"); log("\n"); log("\n"); - log(" import -set_ignore_translate_off\n"); - log("\n"); - log("Ignore translate_off pragmas/comments.\n"); - log("\n"); - log("\n"); - log(" import -set_relaxed_checking\n"); - log("\n"); - log("Set relaxed language feature checking.\n"); - log("\n"); - log("\n"); - log(" import -set_relaxed_file_ext_modes\n"); - log("\n"); - log("Set relaxed language standard checking by using latest VHDL/SystemVerilog.\n"); - log("\n"); - log("\n"); - log(" import -ignore_module ..\n"); - log("\n"); - log("Add module to list of modules to ignore during parsing.\n"); - log("\n"); - log("\n"); - log(" import -set_vhdl_default_library_path \n"); - log("\n"); - log("VHDL default library path.\n"); - log("\n"); - log("\n"); - log(" import -reset_autoidx\n"); - log("\n"); - log("Reset auto-index.\n"); - log("\n"); - log("\n"); #endif - log(" import -set-error ..\n"); - log(" import -set-warning ..\n"); - log(" import -set-info ..\n"); - log(" import -set-ignore ..\n"); + log(" verific -set-error ..\n"); + log(" verific -set-warning ..\n"); + log(" verific -set-info ..\n"); + log(" verific -set-ignore ..\n"); log("\n"); log("Set message severity. is the string in square brackets when a message\n"); log("is printed, such as VERI-1209.\n"); @@ -3336,10 +3299,10 @@ struct VerificPass : public Pass { log("all messages of certain type.\n"); log("\n"); log("\n"); - log(" import -import [options] ..\n"); + log(" verific -import [options] ..\n"); log("\n"); log("Elaborate the design for the specified top modules or configurations, import to\n"); - log("Preqorsor and reset the internal state of IMPORT.\n"); + log("Yosys and reset the internal state of Verific.\n"); log("\n"); log("Import options:\n"); log("\n"); @@ -3351,7 +3314,7 @@ struct VerificPass : public Pass { log(" Create a gate-level netlist.\n"); log("\n"); log(" -flatten\n"); - log(" Flatten the design in IMPORT before importing.\n"); + log(" Flatten the design in Verific before importing.\n"); log("\n"); log(" -extnets\n"); log(" Resolve references to external nets by adding module ports as needed.\n"); @@ -3368,13 +3331,13 @@ struct VerificPass : public Pass { log(" Keep all register initializations, even those for non-FF registers.\n"); log("\n"); log(" -cells\n"); - log(" Import all cell definitions from IMPORT loaded libraries even if they are\n"); + log(" Import all cell definitions from Verific loaded libraries even if they are\n"); log(" unused in design. Useful with \"-edif\" and \"-liberty\" option.\n"); log("\n"); log(" -chparam name value \n"); log(" Elaborate the specified top modules (all modules when -all given) using\n"); log(" this parameter value. Modules on which this parameter does not exist will\n"); - log(" cause IMPORT to produce a VERI-1928 or VHDL-1676 message. This option\n"); + log(" cause Verific to produce a VERI-1928 or VHDL-1676 message. This option\n"); log(" can be specified multiple times to override multiple parameters.\n"); log(" String values must be passed in double quotes (\").\n"); log("\n"); @@ -3384,17 +3347,17 @@ struct VerificPass : public Pass { log(" -pp \n"); log(" Pretty print design after elaboration to specified file.\n"); log("\n"); - log("The following additional import options are useful for debugging the IMPORT\n"); - log("bindings (for Preqorsor and/or IMPORT developers):\n"); + log("The following additional import options are useful for debugging the Verific\n"); + log("bindings (for Yosys and/or Verific developers):\n"); log("\n"); log(" -k\n"); - log(" Keep going after an unsupported IMPORT primitive is found. The\n"); + log(" Keep going after an unsupported verific primitive is found. The\n"); log(" unsupported primitive is added as blockbox module to the design.\n"); log(" This will also add all SVA related cells to the design parallel to\n"); log(" the checker logic inferred by it.\n"); log("\n"); log(" -V\n"); - log(" Import IMPORT netlist as-is without translating to Preqorsor cell types. \n"); + log(" Import Verific netlist as-is without translating to Yosys cell types. \n"); log("\n"); #ifdef VERIFIC_SYSTEMVERILOG_SUPPORT log(" -nosva\n"); @@ -3405,14 +3368,14 @@ struct VerificPass : public Pass { log("\n"); #endif log(" -n\n"); - log(" Keep all IMPORT names on instances and nets. By default only\n"); + log(" Keep all Verific names on instances and nets. By default only\n"); log(" user-declared names are preserved.\n"); log("\n"); log(" -d \n"); - log(" Dump the IMPORT netlist as a verilog file.\n"); + log(" Dump the Verific netlist as a verilog file.\n"); log("\n"); log("\n"); - log(" import [-work ] -pp [options] []..\n"); + log(" verific [-work ] -pp [options] []..\n"); log("\n"); log("Pretty print design (or just module) to the specified file from the\n"); log("specified library. (default library when -work is not present: \"work\")\n"); @@ -3426,9 +3389,9 @@ struct VerificPass : public Pass { log(" Save output for VHDL design units.\n"); log("\n"); log("\n"); - log(" import -cfg [ []]\n"); + log(" verific -cfg [ []]\n"); log("\n"); - log("Get/set IMPORT runtime flags.\n"); + log("Get/set Verific runtime flags.\n"); log("\n"); log("\n"); #if defined(YOSYS_ENABLE_VERIFIC) and defined(YOSYSHQ_VERIFIC_EXTENSIONS) @@ -3558,7 +3521,7 @@ struct VerificPass : public Pass { "Contact office@yosyshq.com for free evaluation\n" "binaries of YosysHQ Tabby CAD Suite.\n"); - log_header(design, "Executing IMPORT (loading SystemVerilog and VHDL designs using IMPORT).\n"); + log_header(design, "Executing VERIFIC (loading SystemVerilog and VHDL designs using Verific).\n"); if (set_verific_global_flags) { @@ -3569,12 +3532,6 @@ struct VerificPass : public Pass { RuntimeFlags::SetVar("db_preserve_user_nets", 1); RuntimeFlags::SetVar("db_preserve_x", 1); - RuntimeFlags::SetVar("db_merge_cascaded_muxes", 1); // SILIMATE: add to improve optimization - // RuntimeFlags::SetVar("db_preserve_register_names", 1); // SILIMATE: optionally add to use preserve register names - RuntimeFlags::SetVar("db_synopsys_register_names", 1); // SILIMATE: optionally add to use Synopsys register names - RuntimeFlags::SetVar("db_stop_cse_on_ram_ports", 0); // SILIMATE: perform CSE on RAM ports to improve optimization - - // RuntimeFlags::SetVar("db_infer_wide_operators_post_elaboration", 1); // SILIMATE: optionally add to improve optimization (QoR) RuntimeFlags::SetVar("db_allow_external_nets", 1); RuntimeFlags::SetVar("db_infer_wide_operators", 1); RuntimeFlags::SetVar("db_infer_set_reset_registers", 0); @@ -3586,10 +3543,6 @@ struct VerificPass : public Pass { RuntimeFlags::SetVar("veri_extract_dualport_rams", 0); // RuntimeFlags::SetVar("veri_extract_multiport_rams", 1); // SILIMATE: control this externally RuntimeFlags::SetVar("veri_allow_any_ram_in_loop", 1); - // RuntimeFlags::SetVar("veri_break_loops", 0); // SILIMATE: add to avoid breaking loops - RuntimeFlags::SetVar("veri_optimize_wide_selector", 1); // SILIMATE: add to optimize wide selector - RuntimeFlags::SetVar("veri_ignore_assertion_statements", 1); // SILIMATE: add to ignore SVA/asserts - RuntimeFlags::SetVar("verilog_ignore_unnecessary_modules_in_v_files", 1); // SILIMATE: add to ignore unnecessary modules #endif #ifdef VERIFIC_VHDL_SUPPORT RuntimeFlags::SetVar("vhdl_extract_dualport_rams", 0); @@ -3642,7 +3595,7 @@ struct VerificPass : public Pass { for (char *p = release_tmstr; *p; p++) if (*p == '\n') *p = 0; - log("Built with IMPORT %s, released at %s.\n", release_str, release_tmstr); + log("Built with Verific %s, released at %s.\n", release_str, release_tmstr); int argidx = 1; std::string work = "work"; @@ -3950,7 +3903,6 @@ struct VerificPass : public Pass { veri_file::DefineMacro("YOSYS"); veri_file::DefineMacro("VERIFIC"); veri_file::DefineMacro(args[argidx] == "-formal" ? "FORMAL" : "SYNTHESIS"); - RuntimeFlags::SetVar("veri_ignore_assertion_statements", args[argidx] != "-formal"); for (argidx++; argidx < GetSize(args) && GetSize(args[argidx]) >= 2 && args[argidx].compare(0, 2, "-D") == 0; argidx++) { std::string name = args[argidx].substr(2); @@ -4599,7 +4551,7 @@ struct ReadPass : public Pass { if (args[1] == "-vlog95" || args[1] == "-vlog2k") { if (use_verific) { - args[0] = "import"; + args[0] = "verific"; } else { args[0] = "read_verilog"; args[1] = "-defer"; @@ -4610,7 +4562,7 @@ struct ReadPass : public Pass { if (args[1] == "-sv2005" || args[1] == "-sv2009" || args[1] == "-sv2012" || args[1] == "-sv" || args[1] == "-formal") { if (use_verific) { - args[0] = "import"; + args[0] = "verific"; } else { args[0] = "read_verilog"; if (args[1] == "-formal") { @@ -4627,7 +4579,7 @@ struct ReadPass : public Pass { #ifdef VERIFIC_VHDL_SUPPORT if (args[1] == "-vhdl87" || args[1] == "-vhdl93" || args[1] == "-vhdl2k" || args[1] == "-vhdl2008" || args[1] == "-vhdl2019" || args[1] == "-vhdl") { if (use_verific) { - args[0] = "import"; + args[0] = "verific"; Pass::call(design, args); } else { cmd_error(args, 1, "This version of Yosys is built without Verific support.\n"); @@ -4638,7 +4590,7 @@ struct ReadPass : public Pass { #ifdef VERIFIC_EDIF_SUPPORT if (args[1] == "-edif") { if (use_verific) { - args[0] = "import"; + args[0] = "verific"; Pass::call(design, args); } else { cmd_error(args, 1, "This version of Yosys is built without Verific support.\n"); @@ -4648,7 +4600,7 @@ struct ReadPass : public Pass { #endif if (args[1] == "-liberty") { if (use_verific) { - args[0] = "import"; + args[0] = "verific"; } else { args[0] = "read_liberty"; } @@ -4657,7 +4609,7 @@ struct ReadPass : public Pass { } if (args[1] == "-f" || args[1] == "-F") { if (use_verific) { - args[0] = "import"; + args[0] = "verific"; Pass::call(design, args); } else { cmd_error(args, 1, "This version of Yosys is built without Verific support.\n"); @@ -4667,7 +4619,7 @@ struct ReadPass : public Pass { if (args[1] == "-define") { if (use_verific) { - args[0] = "import"; + args[0] = "verific"; args[1] = "-vlog-define"; Pass::call(design, args); } @@ -4681,7 +4633,7 @@ struct ReadPass : public Pass { if (args[1] == "-undef") { if (use_verific) { - args[0] = "import"; + args[0] = "verific"; args[1] = "-vlog-undef"; Pass::call(design, args); } @@ -4695,7 +4647,7 @@ struct ReadPass : public Pass { if (args[1] == "-incdir") { if (use_verific) { - args[0] = "import"; + args[0] = "verific"; args[1] = "-vlog-incdir"; Pass::call(design, args); } diff --git a/tests/verific/blackbox.ys.DISABLED b/tests/verific/blackbox.ys.DISABLED index 0f9a47d1a..fbf689e3d 100644 --- a/tests/verific/blackbox.ys.DISABLED +++ b/tests/verific/blackbox.ys.DISABLED @@ -1,4 +1,4 @@ -import -sv -lib <