diff --git a/ivtest/Makefile.in b/ivtest/Makefile.in index a68469b04..4b2fa2b5d 100644 --- a/ivtest/Makefile.in +++ b/ivtest/Makefile.in @@ -40,9 +40,9 @@ check-installed: check-installed-vpi: @echo "Running vpi_reg.pl" ifeq (@LIBVERIUSER@,yes) - cd $(abs_srcdir); perl vpi_reg.pl --with-pli1 $(opts) + cd $(abs_srcdir); perl vpi_reg.pl --with-pli1 $(opts) --verbose else - cd $(abs_srcdir); perl vpi_reg.pl $(opts) + cd $(abs_srcdir); perl vpi_reg.pl $(opts) --verbose endif check-installed-vvp: diff --git a/ivtest/perl-lib/Environment.pm b/ivtest/perl-lib/Environment.pm index f5103744b..ab8bc2c83 100644 --- a/ivtest/perl-lib/Environment.pm +++ b/ivtest/perl-lib/Environment.pm @@ -108,7 +108,7 @@ sub get_ivl_version { # is redirected to a log file. # sub run_program { - my ($cmd, $log_mode, $log_file) = @_; + my ($cmd, $log_mode, $log_file, $verbose) = @_; my $ret; if ($log_mode) { @@ -122,6 +122,9 @@ sub run_program { } else { $ret = system($cmd); } + if ($verbose) { + print "running: '$cmd' -> $ret\n"; + } $ret; } diff --git a/ivtest/vpi_reg.pl b/ivtest/vpi_reg.pl index 71418cd79..6cb49753b 100755 --- a/ivtest/vpi_reg.pl +++ b/ivtest/vpi_reg.pl @@ -13,9 +13,11 @@ use Getopt::Long; $sfx = ""; # Default suffix. $with_pli1 = 0; # Default PLI 1 support (keep this off). $with_valg = 0; # Default valgrind usage (keep this off). +$verbose = 0; # Verbose mode if (!GetOptions("suffix=s" => \$sfx, "with-pli1" => \$with_pli1, "with-valgrind" => \$with_valg, + "verbose" => \$verbose, "help" => \&usage)) { die "Error: Invalid argument(s).\n"; } @@ -28,6 +30,8 @@ sub usage { "default \"off\".\n" . " --with-valgrind # Run the test suite with valgrind, " . "default \"off\".\n" . + " --verbose # Be verbose when running commands, " . + "default \"off\".\n" . " # The regression file, " . "default \"./vpi_regress.list\".\n\n"; exit; @@ -157,6 +161,15 @@ sub read_regression_list { close (REGRESS_LIST); } +sub print_log { + my ($filename) = @_; + open(my $fh, '<', $filename) or die $!; + my $content = do { local $/; <$fh> }; + close($fh); + open(my $fh, '<', $filename) or die "Datei '$filename' konnte nicht geƶffnet werden: $!"; + print "content of '$filename': $content"; +} + # # execute_regression sequentially compiles and executes each test in # the regression. It then checks that the output matched the gold file. @@ -198,16 +211,19 @@ sub execute_regression { $cmd = "iverilog-vpi$sfx --name=$tname $cargs{$tname} " . "vpi/$ccode{$tname}"; - if (run_program($cmd, '>', "vpi_log/$tname.log")) { + if (run_program($cmd, '>', "vpi_log/$tname.log", $verbose)) { print "==> Failed - running iverilog-vpi.\n"; + print_log("vpi_log/$tname.log"); $failed++; next; } + $vflag = $verbose ? " -v" : ""; $cmd = $with_valg ? "valgrind --trace-children=yes " : ""; - $cmd .= "iverilog$sfx $args{$tname} -L . -m $tname -o vsim vpi/$tname.v"; - if (run_program($cmd, '>>', "vpi_log/$tname.log")) { + $cmd .= "iverilog$sfx $vflag $args{$tname} -L . -m $tname -o vsim vpi/$tname.v"; + if (run_program($cmd, '>>', "vpi_log/$tname.log", $verbose)) { print "==> Failed - running iverilog.\n"; + print_log("vpi_log/$tname.log"); $failed++; next; } @@ -215,14 +231,16 @@ sub execute_regression { $cmd = $with_valg ? "valgrind --leak-check=full " . "--show-reachable=yes " : ""; $cmd .= "vvp$sfx vsim"; - if (run_program($cmd, '>>', "vpi_log/$tname.log")) { + if (run_program($cmd, '>>', "vpi_log/$tname.log", $verbose)) { print "==> Failed - running vvp.\n"; + print_log("vpi_log/$tname.log"); $failed++; next; } if (diff("vpi_gold/$goldfile{$tname}", "vpi_log/$tname.log")) { print "==> Failed - output does not match gold file.\n"; + print_log("vpi_log/$tname.log"); $failed++; next; } @@ -237,7 +255,7 @@ sub execute_regression { if ($tname ne "" and $ccode{$tname} ne "") { my $doto = $ccode{$tname}; $doto =~ s/\.(c|cc|cpp)$/.o/; - run_program("rm -f $doto $tname.vpi vsim") and + run_program("rm -f $doto $tname.vpi vsim", '', '', $verbose) and die "Error: failed to remove temporary files.\n"; } }