Add YOSYS_NOVERIFIC env variable for temporarily disabling verific

Signed-off-by: Clifford Wolf <clifford@clifford.at>
This commit is contained in:
Clifford Wolf 2018-06-22 20:40:22 +02:00
parent d412b17259
commit 848c3c5c88
1 changed files with 40 additions and 22 deletions

View File

@ -1669,6 +1669,16 @@ YOSYS_NAMESPACE_END
PRIVATE_NAMESPACE_BEGIN PRIVATE_NAMESPACE_BEGIN
bool check_noverific_env()
{
const char *e = getenv("YOSYS_NOVERIFIC");
if (e == nullptr)
return false;
if (atoi(e) == 0)
return false;
return true;
}
struct VerificPass : public Pass { struct VerificPass : public Pass {
VerificPass() : Pass("verific", "load Verilog and VHDL designs using Verific") { } VerificPass() : Pass("verific", "load Verilog and VHDL designs using Verific") { }
virtual void help() virtual void help()
@ -1759,6 +1769,9 @@ struct VerificPass : public Pass {
#ifdef YOSYS_ENABLE_VERIFIC #ifdef YOSYS_ENABLE_VERIFIC
virtual void execute(std::vector<std::string> args, RTLIL::Design *design) virtual void execute(std::vector<std::string> args, RTLIL::Design *design)
{ {
if (check_noverific_env())
log_cmd_error("This version of Yosys is built without Verific support.\n");
log_header(design, "Executing VERIFIC (loading SystemVerilog and VHDL designs using Verific).\n"); log_header(design, "Executing VERIFIC (loading SystemVerilog and VHDL designs using Verific).\n");
Message::SetConsoleOutput(0); Message::SetConsoleOutput(0);
@ -2135,44 +2148,50 @@ struct ReadPass : public Pass {
if (args.size() < 3) if (args.size() < 3)
log_cmd_error("Missing file name parameter.\n"); log_cmd_error("Missing file name parameter.\n");
if (args[1] == "-vlog95" || args[1] == "-vlog2k") {
#ifdef YOSYS_ENABLE_VERIFIC #ifdef YOSYS_ENABLE_VERIFIC
args[0] = "verific"; bool use_verific = !check_noverific_env();
#else #else
args[0] = "read_verilog"; bool use_verific = false;
args.erase(args.begin()+1, args.begin()+2);
#endif #endif
if (args[1] == "-vlog95" || args[1] == "-vlog2k") {
if (use_verific) {
args[0] = "verific";
} else {
args[0] = "read_verilog";
args.erase(args.begin()+1, args.begin()+2);
}
Pass::call(design, args); Pass::call(design, args);
return; return;
} }
if (args[1] == "-sv2005" || args[1] == "-sv2009" || args[1] == "-sv2012" || args[1] == "-sv") { if (args[1] == "-sv2005" || args[1] == "-sv2009" || args[1] == "-sv2012" || args[1] == "-sv") {
#ifdef YOSYS_ENABLE_VERIFIC if (use_verific) {
args[0] = "verific"; args[0] = "verific";
#else } else {
args[0] = "read_verilog"; args[0] = "read_verilog";
args[1] = "-sv"; args[1] = "-sv";
#endif }
Pass::call(design, args); Pass::call(design, args);
return; return;
} }
if (args[1] == "-vhdl87" || args[1] == "-vhdl93" || args[1] == "-vhdl2k" || args[1] == "-vhdl2008" || args[1] == "-vhdl") { if (args[1] == "-vhdl87" || args[1] == "-vhdl93" || args[1] == "-vhdl2k" || args[1] == "-vhdl2008" || args[1] == "-vhdl") {
#ifdef YOSYS_ENABLE_VERIFIC if (use_verific) {
args[0] = "verific"; args[0] = "verific";
#else Pass::call(design, args);
log_cmd_error("This version of Yosys is built without Verific support.\n"); } else {
#endif log_cmd_error("This version of Yosys is built without Verific support.\n");
Pass::call(design, args); }
return; return;
} }
if (args[1] == "-define") { if (args[1] == "-define") {
#ifdef YOSYS_ENABLE_VERIFIC if (use_verific) {
args[0] = "verific"; args[0] = "verific";
args[1] = "-vlog-define"; args[1] = "-vlog-define";
Pass::call(design, args); Pass::call(design, args);
#endif }
args[0] = "verilog_defines"; args[0] = "verilog_defines";
args.erase(args.begin()+1, args.begin()+2); args.erase(args.begin()+1, args.begin()+2);
for (int i = 1; i < GetSize(args); i++) for (int i = 1; i < GetSize(args); i++)
@ -2186,4 +2205,3 @@ struct ReadPass : public Pass {
} ReadPass; } ReadPass;
PRIVATE_NAMESPACE_END PRIVATE_NAMESPACE_END