mirror of
https://github.com/cclassic/model-ghdl
synced 2024-11-24 08:45:05 +01:00
Fixed gtkwave automatic save file
This commit is contained in:
parent
7f211ef8a3
commit
4a64ba77a0
22
main.c
22
main.c
@ -182,7 +182,7 @@ int run_gtkwave(char *toplevel, char *command, ...) {
|
|||||||
vsprintf(cmd, command, argptr);
|
vsprintf(cmd, command, argptr);
|
||||||
va_end(argptr);
|
va_end(argptr);
|
||||||
|
|
||||||
//printf("RUN_SIM: %s\n", cmd);
|
printf("RUN_SIM: %s\n", cmd);
|
||||||
|
|
||||||
pid = system2(cmd, NULL, NULL);
|
pid = system2(cmd, NULL, NULL);
|
||||||
//printf("--> PID=%d\n", pid);
|
//printf("--> PID=%d\n", pid);
|
||||||
@ -208,11 +208,13 @@ int vsim(int argc, char **argv)
|
|||||||
char *text = NULL;
|
char *text = NULL;
|
||||||
char *work = NULL;
|
char *work = NULL;
|
||||||
char *toplevel = NULL;
|
char *toplevel = NULL;
|
||||||
|
char *gtkwPrefix = NULL;
|
||||||
|
|
||||||
int i;
|
int i;
|
||||||
char *ptr = NULL;
|
char *ptr = NULL;
|
||||||
char *lastPtr;
|
char *lastPtr;
|
||||||
char workdir[1 K];
|
char workdir[1 K];
|
||||||
|
char sourcedir[1 K];
|
||||||
char *params = NULL;
|
char *params = NULL;
|
||||||
char *simtime = NULL;
|
char *simtime = NULL;
|
||||||
|
|
||||||
@ -222,6 +224,11 @@ int vsim(int argc, char **argv)
|
|||||||
|
|
||||||
gui_init(&argc, &argv);
|
gui_init(&argc, &argv);
|
||||||
|
|
||||||
|
if (!getcwd(sourcedir, sizeof(sourcedir))) { // Default compile dir is cwd
|
||||||
|
sourcedir[0] = 0;
|
||||||
|
printf("[W] Could not get cwd!\n");
|
||||||
|
}
|
||||||
|
|
||||||
fp = fopen("/tmp/model-ghdl-vsim","r");
|
fp = fopen("/tmp/model-ghdl-vsim","r");
|
||||||
if (fp) {
|
if (fp) {
|
||||||
fgets(workdir, sizeof(workdir), fp); // lets (ab)use the workdir variable here
|
fgets(workdir, sizeof(workdir), fp); // lets (ab)use the workdir variable here
|
||||||
@ -269,6 +276,9 @@ int vsim(int argc, char **argv)
|
|||||||
append_string(¶ms, " ");
|
append_string(¶ms, " ");
|
||||||
append_string(¶ms, argv[i]);
|
append_string(¶ms, argv[i]);
|
||||||
}
|
}
|
||||||
|
else if (GETOPT("-gtkwprefix")) {
|
||||||
|
gtkwPrefix = argv[i];
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -276,6 +286,10 @@ int vsim(int argc, char **argv)
|
|||||||
|
|
||||||
chdir(workdir);
|
chdir(workdir);
|
||||||
|
|
||||||
|
if (gtkwPrefix == NULL) {
|
||||||
|
append_string(>kwPrefix, "");
|
||||||
|
}
|
||||||
|
|
||||||
printf("[I] Compiling...\n");
|
printf("[I] Compiling...\n");
|
||||||
if (run_ghdl("ghdl -m --work=%s --workdir=\"%s\" %s %s", work, workdir, params, toplevel)) {
|
if (run_ghdl("ghdl -m --work=%s --workdir=\"%s\" %s %s", work, workdir, params, toplevel)) {
|
||||||
fprintf(stderr, "[E] Compilation failed!");
|
fprintf(stderr, "[E] Compilation failed!");
|
||||||
@ -298,7 +312,7 @@ int vsim(int argc, char **argv)
|
|||||||
showMessage(MESSAGE_ERROR, "Error! Simulation failed.", NULL, NULL);
|
showMessage(MESSAGE_ERROR, "Error! Simulation failed.", NULL, NULL);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (run_gtkwave(toplevel, "gtkwave %s/%s.ghw --save=\"%s.gtkw\"", workdir, toplevel, toplevel)) { // TODO: PATH FOR Savefile
|
if (run_gtkwave(toplevel, "gtkwave %s/%s.ghw --save=\"%s/%s%s.gtkw\"", workdir, toplevel, sourcedir, gtkwPrefix, toplevel)) { // TODO: PATH FOR Savefile
|
||||||
fprintf(stderr, "[E] Could not open GtkWave!");
|
fprintf(stderr, "[E] Could not open GtkWave!");
|
||||||
showMessage(MESSAGE_ERROR, "Error! Could not open GtkWave!", NULL, NULL);
|
showMessage(MESSAGE_ERROR, "Error! Could not open GtkWave!", NULL, NULL);
|
||||||
}
|
}
|
||||||
@ -323,10 +337,10 @@ int vcom(int argc, char **argv)
|
|||||||
char vhdlver[16] = "";
|
char vhdlver[16] = "";
|
||||||
FILE *fp = NULL;
|
FILE *fp = NULL;
|
||||||
|
|
||||||
printf ("[I] Emulating vsim.\n");
|
printf ("[I] Emulating vcom.\n");
|
||||||
|
|
||||||
if (!getcwd(workdir, sizeof(workdir))) { // Default compile dir is cwd
|
if (!getcwd(workdir, sizeof(workdir))) { // Default compile dir is cwd
|
||||||
fprintf(stderr, "Error: Could not invoke GHDL!\n");
|
fprintf(stderr, "[E] Could not get cwd!\n");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user