#!/usr/bin/perl if (!$::Driver) { use FindBin; exec("$FindBin::Bin/bootstrap.pl", @ARGV, $0); die; } # DESCRIPTION: Verilator: Verilog Test driver/expect definition # # Copyright 2003 by Wilson Snyder. This program is free software; you can # redistribute it and/or modify it under the terms of either the GNU # Lesser General Public License Version 3 or the Perl Artistic License # Version 2.0. scenarios(vlt_all => 1); # Use --debug-protect to assist debug # This test makes randomly named .cpp/.h files, which tend to collect, so remove them first foreach my $filename (glob ("$Self->{obj_dir}/*_PS*.cpp" ." $Self->{obj_dir}/*_PS*.h" ." $Self->{obj_dir}/*.d" )) { print "rm $filename\n" if $Self->{verbose}; unlink $filename; } compile( verilator_flags2 => ["--protect-ids", "--trace", "--coverage", "-Wno-INSECURE", "t/t_protect_ids_c.cpp"], ); execute( check_finished => 1, ); # 'to="PS"' indicates means we probably mis-protected something already protected # Use --debug-protect to assist debugging these file_grep_not("$Self->{obj_dir}/$Self->{VM_PREFIX}__idmap.xml", qr/to="PS/); if ($Self->{vlt_all}) { # Check for secret in any outputs my $any; foreach my $filename (glob $Self->{obj_dir}."/*.[ch]*") { if ($filename =~ /secret/) { $Self->error("Secret found in a filename: ".$filename); } file_grep_not($filename, qr/secret/); $any = 1; } $any or $Self->error("No outputs found"); } ok(1); 1;