mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-11-04 05:19:11 +00:00 
			
		
		
		
	Add Verific -work parameter
Signed-off-by: Clifford Wolf <clifford@clifford.at>
This commit is contained in:
		
							parent
							
								
									05466790a6
								
							
						
					
					
						commit
						4b02ee9162
					
				
					 1 changed files with 18 additions and 8 deletions
				
			
		| 
						 | 
					@ -1837,6 +1837,7 @@ struct VerificPass : public Pass {
 | 
				
			||||||
		log("Built with Verific %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;
 | 
							int argidx = 1;
 | 
				
			||||||
 | 
							std::string work = "work";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (GetSize(args) > argidx && (args[argidx] == "-set-error" || args[argidx] == "-set-warning" ||
 | 
							if (GetSize(args) > argidx && (args[argidx] == "-set-error" || args[argidx] == "-set-warning" ||
 | 
				
			||||||
				args[argidx] == "-set-info" || args[argidx] == "-set-ignore"))
 | 
									args[argidx] == "-set-info" || args[argidx] == "-set-ignore"))
 | 
				
			||||||
| 
						 | 
					@ -1895,6 +1896,15 @@ struct VerificPass : public Pass {
 | 
				
			||||||
			goto check_error;
 | 
								goto check_error;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							for (; argidx < GetSize(args); argidx++)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								if (args[argidx] == "-work" && argidx+1 < GetSize(args)) {
 | 
				
			||||||
 | 
									work = args[++argidx];
 | 
				
			||||||
 | 
									continue;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								break;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (GetSize(args) > argidx && (args[argidx] == "-vlog95" || args[argidx] == "-vlog2k" || args[argidx] == "-sv2005" ||
 | 
							if (GetSize(args) > argidx && (args[argidx] == "-vlog95" || args[argidx] == "-vlog2k" || args[argidx] == "-sv2005" ||
 | 
				
			||||||
				args[argidx] == "-sv2009" || args[argidx] == "-sv2012" || args[argidx] == "-sv" || args[argidx] == "-formal"))
 | 
									args[argidx] == "-sv2009" || args[argidx] == "-sv2012" || args[argidx] == "-sv" || args[argidx] == "-formal"))
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
| 
						 | 
					@ -1942,7 +1952,7 @@ struct VerificPass : public Pass {
 | 
				
			||||||
			while (argidx < GetSize(args))
 | 
								while (argidx < GetSize(args))
 | 
				
			||||||
				file_names.Insert(args[argidx++].c_str());
 | 
									file_names.Insert(args[argidx++].c_str());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			if (!veri_file::AnalyzeMultipleFiles(&file_names, verilog_mode, "work", veri_file::MFCU))
 | 
								if (!veri_file::AnalyzeMultipleFiles(&file_names, verilog_mode, work.c_str(), veri_file::MFCU))
 | 
				
			||||||
					log_cmd_error("Reading Verilog/SystemVerilog sources failed.\n");
 | 
										log_cmd_error("Reading Verilog/SystemVerilog sources failed.\n");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			verific_import_pending = true;
 | 
								verific_import_pending = true;
 | 
				
			||||||
| 
						 | 
					@ -1952,7 +1962,7 @@ struct VerificPass : public Pass {
 | 
				
			||||||
		if (GetSize(args) > argidx && args[argidx] == "-vhdl87") {
 | 
							if (GetSize(args) > argidx && args[argidx] == "-vhdl87") {
 | 
				
			||||||
			vhdl_file::SetDefaultLibraryPath((proc_share_dirname() + "verific/vhdl_vdbs_1987").c_str());
 | 
								vhdl_file::SetDefaultLibraryPath((proc_share_dirname() + "verific/vhdl_vdbs_1987").c_str());
 | 
				
			||||||
			for (argidx++; argidx < GetSize(args); argidx++)
 | 
								for (argidx++; argidx < GetSize(args); argidx++)
 | 
				
			||||||
				if (!vhdl_file::Analyze(args[argidx].c_str(), "work", vhdl_file::VHDL_87))
 | 
									if (!vhdl_file::Analyze(args[argidx].c_str(), work.c_str(), vhdl_file::VHDL_87))
 | 
				
			||||||
					log_cmd_error("Reading `%s' in VHDL_87 mode failed.\n", args[argidx].c_str());
 | 
										log_cmd_error("Reading `%s' in VHDL_87 mode failed.\n", args[argidx].c_str());
 | 
				
			||||||
			verific_import_pending = true;
 | 
								verific_import_pending = true;
 | 
				
			||||||
			goto check_error;
 | 
								goto check_error;
 | 
				
			||||||
| 
						 | 
					@ -1961,7 +1971,7 @@ struct VerificPass : public Pass {
 | 
				
			||||||
		if (GetSize(args) > argidx && args[argidx] == "-vhdl93") {
 | 
							if (GetSize(args) > argidx && args[argidx] == "-vhdl93") {
 | 
				
			||||||
			vhdl_file::SetDefaultLibraryPath((proc_share_dirname() + "verific/vhdl_vdbs_1993").c_str());
 | 
								vhdl_file::SetDefaultLibraryPath((proc_share_dirname() + "verific/vhdl_vdbs_1993").c_str());
 | 
				
			||||||
			for (argidx++; argidx < GetSize(args); argidx++)
 | 
								for (argidx++; argidx < GetSize(args); argidx++)
 | 
				
			||||||
				if (!vhdl_file::Analyze(args[argidx].c_str(), "work", vhdl_file::VHDL_93))
 | 
									if (!vhdl_file::Analyze(args[argidx].c_str(), work.c_str(), vhdl_file::VHDL_93))
 | 
				
			||||||
					log_cmd_error("Reading `%s' in VHDL_93 mode failed.\n", args[argidx].c_str());
 | 
										log_cmd_error("Reading `%s' in VHDL_93 mode failed.\n", args[argidx].c_str());
 | 
				
			||||||
			verific_import_pending = true;
 | 
								verific_import_pending = true;
 | 
				
			||||||
			goto check_error;
 | 
								goto check_error;
 | 
				
			||||||
| 
						 | 
					@ -1970,7 +1980,7 @@ struct VerificPass : public Pass {
 | 
				
			||||||
		if (GetSize(args) > argidx && args[argidx] == "-vhdl2k") {
 | 
							if (GetSize(args) > argidx && args[argidx] == "-vhdl2k") {
 | 
				
			||||||
			vhdl_file::SetDefaultLibraryPath((proc_share_dirname() + "verific/vhdl_vdbs_1993").c_str());
 | 
								vhdl_file::SetDefaultLibraryPath((proc_share_dirname() + "verific/vhdl_vdbs_1993").c_str());
 | 
				
			||||||
			for (argidx++; argidx < GetSize(args); argidx++)
 | 
								for (argidx++; argidx < GetSize(args); argidx++)
 | 
				
			||||||
				if (!vhdl_file::Analyze(args[argidx].c_str(), "work", vhdl_file::VHDL_2K))
 | 
									if (!vhdl_file::Analyze(args[argidx].c_str(), work.c_str(), vhdl_file::VHDL_2K))
 | 
				
			||||||
					log_cmd_error("Reading `%s' in VHDL_2K mode failed.\n", args[argidx].c_str());
 | 
										log_cmd_error("Reading `%s' in VHDL_2K mode failed.\n", args[argidx].c_str());
 | 
				
			||||||
			verific_import_pending = true;
 | 
								verific_import_pending = true;
 | 
				
			||||||
			goto check_error;
 | 
								goto check_error;
 | 
				
			||||||
| 
						 | 
					@ -1979,7 +1989,7 @@ struct VerificPass : public Pass {
 | 
				
			||||||
		if (GetSize(args) > argidx && (args[argidx] == "-vhdl2008" || args[argidx] == "-vhdl")) {
 | 
							if (GetSize(args) > argidx && (args[argidx] == "-vhdl2008" || args[argidx] == "-vhdl")) {
 | 
				
			||||||
			vhdl_file::SetDefaultLibraryPath((proc_share_dirname() + "verific/vhdl_vdbs_2008").c_str());
 | 
								vhdl_file::SetDefaultLibraryPath((proc_share_dirname() + "verific/vhdl_vdbs_2008").c_str());
 | 
				
			||||||
			for (argidx++; argidx < GetSize(args); argidx++)
 | 
								for (argidx++; argidx < GetSize(args); argidx++)
 | 
				
			||||||
				if (!vhdl_file::Analyze(args[argidx].c_str(), "work", vhdl_file::VHDL_2008))
 | 
									if (!vhdl_file::Analyze(args[argidx].c_str(), work.c_str(), vhdl_file::VHDL_2008))
 | 
				
			||||||
					log_cmd_error("Reading `%s' in VHDL_2008 mode failed.\n", args[argidx].c_str());
 | 
										log_cmd_error("Reading `%s' in VHDL_2008 mode failed.\n", args[argidx].c_str());
 | 
				
			||||||
			verific_import_pending = true;
 | 
								verific_import_pending = true;
 | 
				
			||||||
			goto check_error;
 | 
								goto check_error;
 | 
				
			||||||
| 
						 | 
					@ -2089,8 +2099,8 @@ struct VerificPass : public Pass {
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
				log("Running hier_tree::ElaborateAll().\n");
 | 
									log("Running hier_tree::ElaborateAll().\n");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				VhdlLibrary *vhdl_lib = vhdl_file::GetLibrary("work", 1);
 | 
									VhdlLibrary *vhdl_lib = vhdl_file::GetLibrary(work.c_str(), 1);
 | 
				
			||||||
				VeriLibrary *veri_lib = veri_file::GetLibrary("work", 1);
 | 
									VeriLibrary *veri_lib = veri_file::GetLibrary(work.c_str(), 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				Array veri_libs, vhdl_libs;
 | 
									Array veri_libs, vhdl_libs;
 | 
				
			||||||
				if (vhdl_lib) vhdl_libs.InsertLast(vhdl_lib);
 | 
									if (vhdl_lib) vhdl_libs.InsertLast(vhdl_lib);
 | 
				
			||||||
| 
						 | 
					@ -2137,7 +2147,7 @@ struct VerificPass : public Pass {
 | 
				
			||||||
						continue;
 | 
											continue;
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
					VhdlLibrary *vhdl_lib = vhdl_file::GetLibrary("work", 1);
 | 
										VhdlLibrary *vhdl_lib = vhdl_file::GetLibrary(work.c_str(), 1);
 | 
				
			||||||
					VhdlDesignUnit *vhdl_unit = vhdl_lib->GetPrimUnit(name);
 | 
										VhdlDesignUnit *vhdl_unit = vhdl_lib->GetPrimUnit(name);
 | 
				
			||||||
					if (vhdl_unit) {
 | 
										if (vhdl_unit) {
 | 
				
			||||||
						log("Adding VHDL unit '%s' to elaboration queue.\n", name);
 | 
											log("Adding VHDL unit '%s' to elaboration queue.\n", name);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue