From 700f68730b0106a82103c4b88b913a369606df30 Mon Sep 17 00:00:00 2001 From: Zitao Fang Date: Fri, 14 Aug 2020 17:52:36 -0700 Subject: [PATCH 1/8] Fix verilator makefile --- sims/verilator/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sims/verilator/Makefile b/sims/verilator/Makefile index 3d676efd..f093fa2d 100644 --- a/sims/verilator/Makefile +++ b/sims/verilator/Makefile @@ -28,7 +28,7 @@ sim_prefix = simulator sim = $(sim_dir)/$(sim_prefix)-$(MODEL_PACKAGE)-$(CONFIG) sim_debug = $(sim_dir)/$(sim_prefix)-$(MODEL_PACKAGE)-$(CONFIG)-debug -WAVEFORM_FLAG=-v$(sim_out_name).vcd +WAVEFORM_FLAG=-v $(sim_out_name).vcd # If verilator seed unspecified, verilator uses srand as random seed ifdef RANDOM_SEED From 5243ee2a35fd1ee2c3caba15df4e7eb0cc34d7a9 Mon Sep 17 00:00:00 2001 From: Zitao Fang Date: Fri, 25 Sep 2020 20:36:07 -0700 Subject: [PATCH 2/8] Add HTIF args back to emulator.cc --- generators/utilities/src/main/resources/csrc/emulator.cc | 9 ++++++++- sims/verilator/Makefile | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/generators/utilities/src/main/resources/csrc/emulator.cc b/generators/utilities/src/main/resources/csrc/emulator.cc index 5e0ea38b..88a6b26d 100644 --- a/generators/utilities/src/main/resources/csrc/emulator.cc +++ b/generators/utilities/src/main/resources/csrc/emulator.cc @@ -163,6 +163,7 @@ int main(int argc, char** argv) #if VM_TRACE case 'v': { vcdfile_name = optarg; + // printf("%s\n", vcdfile_name); vcdfile = strcmp(optarg, "-") == 0 ? stdout : fopen(optarg, "w"); if (!vcdfile) { std::cerr << "Unable to open " << optarg << " for VCD write\n"; @@ -258,6 +259,11 @@ done_processing: return 1; } + int htif_argc = 1 + argc - optind; + htif_argv = (char **) malloc((htif_argc) * sizeof (char *)); + htif_argv[0] = argv[0]; + for (int i = 1; optind < argc;) htif_argv[i++] = argv[optind++]; + if (verbose) fprintf(stderr, "using random seed %u\n", random_seed); @@ -265,7 +271,7 @@ done_processing: srand48(random_seed); Verilated::randReset(2); - Verilated::commandArgs(argc, argv); + Verilated::commandArgs(htif_argc, htif_argv); TEST_HARNESS *tile = new TEST_HARNESS; #if VM_TRACE @@ -374,5 +380,6 @@ done_processing: if (tsi) delete tsi; if (jtag) delete jtag; if (tile) delete tile; + if (htif_argv) free(htif_argv); return ret; } diff --git a/sims/verilator/Makefile b/sims/verilator/Makefile index 8c51098f..211b5676 100644 --- a/sims/verilator/Makefile +++ b/sims/verilator/Makefile @@ -28,7 +28,7 @@ sim_prefix = simulator sim = $(sim_dir)/$(sim_prefix)-$(MODEL_PACKAGE)-$(CONFIG) sim_debug = $(sim_dir)/$(sim_prefix)-$(MODEL_PACKAGE)-$(CONFIG)-debug -WAVEFORM_FLAG=-v $(sim_out_name).vcd +WAVEFORM_FLAG=-v$(sim_out_name).vcd # If verilator seed unspecified, verilator uses srand as random seed ifdef RANDOM_SEED From 751c0c300ef9e50ecc0805c566865ea2d043dbe0 Mon Sep 17 00:00:00 2001 From: Zitao Fang Date: Fri, 25 Sep 2020 20:49:18 -0700 Subject: [PATCH 3/8] Remove comments --- generators/utilities/src/main/resources/csrc/emulator.cc | 1 - 1 file changed, 1 deletion(-) diff --git a/generators/utilities/src/main/resources/csrc/emulator.cc b/generators/utilities/src/main/resources/csrc/emulator.cc index 88a6b26d..d6bca76b 100644 --- a/generators/utilities/src/main/resources/csrc/emulator.cc +++ b/generators/utilities/src/main/resources/csrc/emulator.cc @@ -163,7 +163,6 @@ int main(int argc, char** argv) #if VM_TRACE case 'v': { vcdfile_name = optarg; - // printf("%s\n", vcdfile_name); vcdfile = strcmp(optarg, "-") == 0 ? stdout : fopen(optarg, "w"); if (!vcdfile) { std::cerr << "Unable to open " << optarg << " for VCD write\n"; From 2aac38b4c81b9623d0a9112ce2dd10949f60b417 Mon Sep 17 00:00:00 2001 From: Zitao Fang Date: Sun, 27 Sep 2020 23:15:10 -0700 Subject: [PATCH 4/8] Fix CI bug --- generators/utilities/src/main/resources/csrc/emulator.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generators/utilities/src/main/resources/csrc/emulator.cc b/generators/utilities/src/main/resources/csrc/emulator.cc index d6bca76b..a670147d 100644 --- a/generators/utilities/src/main/resources/csrc/emulator.cc +++ b/generators/utilities/src/main/resources/csrc/emulator.cc @@ -259,7 +259,7 @@ done_processing: } int htif_argc = 1 + argc - optind; - htif_argv = (char **) malloc((htif_argc) * sizeof (char *)); + char** htif_argv = (char **) malloc((htif_argc) * sizeof (char *)); htif_argv[0] = argv[0]; for (int i = 1; optind < argc;) htif_argv[i++] = argv[optind++]; From 355e4ba60640724c4325f248e19982ec4e8bf4f4 Mon Sep 17 00:00:00 2001 From: Zitao Fang Date: Mon, 5 Oct 2020 10:49:04 -0700 Subject: [PATCH 5/8] Change to filter all arguments that begin with a '-' --- generators/utilities/src/main/resources/csrc/emulator.cc | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/generators/utilities/src/main/resources/csrc/emulator.cc b/generators/utilities/src/main/resources/csrc/emulator.cc index a670147d..f3c6dbdb 100644 --- a/generators/utilities/src/main/resources/csrc/emulator.cc +++ b/generators/utilities/src/main/resources/csrc/emulator.cc @@ -258,10 +258,11 @@ done_processing: return 1; } - int htif_argc = 1 + argc - optind; - char** htif_argv = (char **) malloc((htif_argc) * sizeof (char *)); + int htif_argc = 1; + char** htif_argv = new char*[argc]; htif_argv[0] = argv[0]; - for (int i = 1; optind < argc;) htif_argv[i++] = argv[optind++]; + for (int i = 1; i < argc; i++) + if (argv[i][0] != '-') htif_argv[htif_argc++] = argv[i]; if (verbose) fprintf(stderr, "using random seed %u\n", random_seed); @@ -379,6 +380,6 @@ done_processing: if (tsi) delete tsi; if (jtag) delete jtag; if (tile) delete tile; - if (htif_argv) free(htif_argv); + if (htif_argv) delete[] htif_argv; return ret; } From 5282965b5b52da2ede3ee2ec0ac5093b93fccd6a Mon Sep 17 00:00:00 2001 From: Zitao Fang Date: Tue, 6 Oct 2020 15:50:11 -0700 Subject: [PATCH 6/8] Filter specified HTIF arguments and plusargs only --- .../src/main/resources/csrc/emulator.cc | 23 +++++++++++++------ 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/generators/utilities/src/main/resources/csrc/emulator.cc b/generators/utilities/src/main/resources/csrc/emulator.cc index f3c6dbdb..f42f5bce 100644 --- a/generators/utilities/src/main/resources/csrc/emulator.cc +++ b/generators/utilities/src/main/resources/csrc/emulator.cc @@ -123,6 +123,10 @@ int main(int argc, char** argv) #endif int verilog_plusargs_legal = 1; + int verilated_argc = 1; + char** verilated_argv = new char*[argc]; + verilated_argv[0] = argv[0]; + opterr = 1; while (1) { @@ -195,9 +199,15 @@ int main(int argc, char** argv) else if (arg.substr(0, 12) == "+cycle-count") c = 'c'; else if (arg == "+permissive") + { c = 'p'; + verilated_argv[verilated_argc++] = optarg; + } else if (arg == "+permissive-off") + { c = 'o'; + verilated_argv[verilated_argc++] = optarg; + } // If we don't find a legacy '+' EMULATOR argument, it still could be // a VERILOG_PLUSARG and not an error. else if (verilog_plusargs_legal) { @@ -213,6 +223,7 @@ int main(int argc, char** argv) verilog_plusargs_legal = 0; } else { c = 'P'; + verilated_argv[verilated_argc++] = optarg; } goto retry; } @@ -235,6 +246,7 @@ int main(int argc, char** argv) c = '?'; } else { c = 'p'; + verilated_argv[verilated_argc++] = optarg; } } goto retry; @@ -258,11 +270,8 @@ done_processing: return 1; } - int htif_argc = 1; - char** htif_argv = new char*[argc]; - htif_argv[0] = argv[0]; - for (int i = 1; i < argc; i++) - if (argv[i][0] != '-') htif_argv[htif_argc++] = argv[i]; + // Copy the binary file name into the verilator argument stack + while (optind < argc) verilated_argv[verilated_argc++] = argv[optind++]; if (verbose) fprintf(stderr, "using random seed %u\n", random_seed); @@ -271,7 +280,7 @@ done_processing: srand48(random_seed); Verilated::randReset(2); - Verilated::commandArgs(htif_argc, htif_argv); + Verilated::commandArgs(verilated_argc, verilated_argv); TEST_HARNESS *tile = new TEST_HARNESS; #if VM_TRACE @@ -380,6 +389,6 @@ done_processing: if (tsi) delete tsi; if (jtag) delete jtag; if (tile) delete tile; - if (htif_argv) delete[] htif_argv; + if (verilated_argv) delete[] verilated_argv; return ret; } From 0c4dcffb0d40fe0146b25fc4d7ad2dff94a0bd2c Mon Sep 17 00:00:00 2001 From: Zitao Fang Date: Fri, 23 Oct 2020 16:39:56 -0700 Subject: [PATCH 7/8] Fixed lowercase p bug --- generators/utilities/src/main/resources/csrc/emulator.cc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/generators/utilities/src/main/resources/csrc/emulator.cc b/generators/utilities/src/main/resources/csrc/emulator.cc index f42f5bce..d3813bbd 100644 --- a/generators/utilities/src/main/resources/csrc/emulator.cc +++ b/generators/utilities/src/main/resources/csrc/emulator.cc @@ -223,7 +223,6 @@ int main(int argc, char** argv) verilog_plusargs_legal = 0; } else { c = 'P'; - verilated_argv[verilated_argc++] = optarg; } goto retry; } @@ -245,13 +244,14 @@ int main(int argc, char** argv) << arg << "\"\n"; c = '?'; } else { - c = 'p'; - verilated_argv[verilated_argc++] = optarg; + c = 'P'; } } goto retry; } - case 'P': break; // Nothing to do here, Verilog PlusArg + case 'P': + verilated_argv[verilated_argc++] = optarg; + break; // Nothing to do here, Verilog PlusArg // Realize that we've hit HTIF (HOST) arguments or error out default: if (c >= HTIF_LONG_OPTIONS_OPTIND) { From abbeb2af9e18417dfc6a363a7463373fa6920db3 Mon Sep 17 00:00:00 2001 From: Zitao Fang Date: Fri, 23 Oct 2020 17:00:56 -0700 Subject: [PATCH 8/8] Fixed comments --- generators/utilities/src/main/resources/csrc/emulator.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/generators/utilities/src/main/resources/csrc/emulator.cc b/generators/utilities/src/main/resources/csrc/emulator.cc index d3813bbd..40b5a2fa 100644 --- a/generators/utilities/src/main/resources/csrc/emulator.cc +++ b/generators/utilities/src/main/resources/csrc/emulator.cc @@ -249,9 +249,9 @@ int main(int argc, char** argv) } goto retry; } - case 'P': + case 'P': // Verilog PlusArg, add to the argument list for verilator environment verilated_argv[verilated_argc++] = optarg; - break; // Nothing to do here, Verilog PlusArg + break; // Realize that we've hit HTIF (HOST) arguments or error out default: if (c >= HTIF_LONG_OPTIONS_OPTIND) { @@ -270,7 +270,7 @@ done_processing: return 1; } - // Copy the binary file name into the verilator argument stack + // Copy remaining HTIF arguments (if any) and the binary file name into the verilator argument stack while (optind < argc) verilated_argv[verilated_argc++] = argv[optind++]; if (verbose)