driver: use base path for modules if in default install location

Otherwise use the value from -the -BM command line option
This commit is contained in:
Ralf Habacker 2026-05-08 18:47:12 +02:00
parent 8782d915ea
commit 8977c4902b
1 changed files with 17 additions and 7 deletions

View File

@ -1403,10 +1403,20 @@ int main(int argc, char **argv)
/* Write values to the iconfig file. */
fprintf(iconfig_file, "basedir:%s\n", base);
/* Tell the core where to find the system VPI modules. */
fprintf(iconfig_file, "module:%s%csystem.vpi\n", vpi_dir, sep);
fprintf(iconfig_file, "module:%s%cvhdl_sys.vpi\n", vpi_dir, sep);
fprintf(iconfig_file, "module:%s%cvhdl_textio.vpi\n", vpi_dir, sep);
char module_prefix[1024];
const char *module_suffix;
if (strcmp(vpi_dir, base) != 0) {
snprintf(module_prefix, sizeof(module_prefix), "module:%s%c", vpi_dir, sep);
module_suffix = ".vpi";
} else {
snprintf(module_prefix, sizeof(module_prefix), "module:");
module_suffix = "";
}
/* Tell the core where to find the built-in VPI modules. */
fprintf(iconfig_file, "%ssystem%s\n", module_prefix, module_suffix);
fprintf(iconfig_file, "%svhdl_sys%s\n", module_prefix, module_suffix);
fprintf(iconfig_file, "%svhdl_textio%s\n", module_prefix, module_suffix);
/* If verilog-2005/09/12/17/23 is enabled or icarus-misc or verilog-ams,
* then include the v2005_math library. */
@ -1417,13 +1427,13 @@ int main(int argc, char **argv)
strcmp(generation, "2023") == 0 ||
strcmp(gen_icarus, "icarus-misc") == 0 ||
strcmp(gen_verilog_ams, "verilog-ams") == 0) {
fprintf(iconfig_file, "module:%s%cv2005_math.vpi\n", vpi_dir, sep);
fprintf(iconfig_file, "%sv2005_math%s\n", module_prefix, module_suffix);
}
/* If verilog-ams or icarus_misc is enabled, then include the
* va_math module as well. */
if (strcmp(gen_verilog_ams,"verilog-ams") == 0 ||
strcmp(gen_icarus, "icarus-misc") == 0) {
fprintf(iconfig_file, "module:%s%cva_math.vpi\n", vpi_dir, sep);
fprintf(iconfig_file, "%sva_math%s\n", module_prefix, module_suffix);
}
/* If verilog-2009 (SystemVerilog) is enabled, then include the
v2009 module. */
@ -1432,7 +1442,7 @@ int main(int argc, char **argv)
strcmp(generation, "2012") == 0 ||
strcmp(generation, "2017") == 0 ||
strcmp(generation, "2023") == 0) {
fprintf(iconfig_file, "module:%s%cv2009.vpi\n", vpi_dir, sep);
fprintf(iconfig_file, "%sv2009%s\n", module_prefix, module_suffix);
}
if (mtm != 0) fprintf(iconfig_file, "-T:%s\n", mtm);