Tests: Add t_gantt_io test

This commit is contained in:
Wilson Snyder 2021-09-04 12:44:13 -04:00
parent 1cb8091125
commit 72f198d79e
6 changed files with 255 additions and 2 deletions

View File

@ -8,7 +8,7 @@ if (!$::Driver) { use FindBin; exec("$FindBin::Bin/bootstrap.pl", @ARGV, $0); di
# Version 2.0.
# SPDX-License-Identifier: LGPL-3.0-only OR Artistic-2.0
scenarios(vlt_all => 1);
scenarios(dist => 1);
run(cmd => ["cd $Self->{obj_dir} && $ENV{VERILATOR_ROOT}/bin/verilator_difftree"
." $Self->{t_dir}/t_difftree.a.tree $Self->{t_dir}/t_difftree.b.tree > diff.log"],

View File

@ -0,0 +1,20 @@
VLPROFTHREAD 1.0 # Verilator thread profile dump version 1.0
VLPROF arg --threads 2
VLPROF arg +verilator+prof+threads+start+2
VLPROF arg +verilator+prof+threads+window+2
VLPROF stat yields 1
VLPROF mtask 6 start 595 end 735 elapsed 140 predict_time 30 cpu 1 on thread 1
VLPROF mtask 10 start 8120 end 8260 elapsed 140 predict_time 30 cpu 1 on thread 1
VLPROF mtask 6 start 11970 end 12075 elapsed 105 predict_time 30 cpu 1 on thread 1
VLPROF mtask 10 start 15925 end 16065 elapsed 140 predict_time 30 cpu 1 on thread 1
VLPROF mtask 5 start 5110 end 5530 elapsed 420 predict_time 30 cpu 16 on thread 2
VLPROF mtask 7 start 5740 end 5845 elapsed 105 predict_time 30 cpu 16 on thread 2
VLPROF mtask 8 start 6125 end 7140 elapsed 1015 predict_time 107 cpu 16 on thread 2
VLPROF mtask 9 start 8820 end 9380 elapsed 560 predict_time 30 cpu 16 on thread 2
VLPROF mtask 11 start 9940 end 10045 elapsed 105 predict_time 30 cpu 16 on thread 2
VLPROF mtask 5 start 14175 end 14595 elapsed 420 predict_time 30 cpu 16 on thread 2
VLPROF mtask 7 start 15120 end 15190 elapsed 70 predict_time 30 cpu 16 on thread 2
VLPROF mtask 8 start 15365 end 15435 elapsed 70 predict_time 107 cpu 16 on thread 2
VLPROF mtask 9 start 15680 end 15750 elapsed 70 predict_time 30 cpu 16 on thread 2
VLPROF mtask 11 start 15925 end 15995 elapsed 70 predict_time 30 cpu 16 on thread 2
VLPROF stat ticks 17220

View File

@ -0,0 +1,38 @@
Verilator Gantt report
Argument settings:
+verilator+prof+threads+start+2
+verilator+prof+threads+window+2
--threads 2
Thread gantt graph:
Legend: One character width = 200 rdtsc ticks
Legend: '&' = multiple mtasks in this period (character width)
<-16065 rdtsc total------------------------------------------------------------>
t: [1] [1] [1] [1]
t: [xx[x[16--] [16] [16] [16] [[x[[16]
Analysis:
Total threads = 2
Total mtasks = 7
Total cpus used = 2
Total yields = 1
Total eval time = 16065 rdtsc ticks
Longest mtask time = 1085 rdtsc ticks
All-thread mtask time = 3430 rdtsc ticks
Longest-thread efficiency = 6.8%
All-thread efficiency = 10.7%
All-thread speedup = 0.2
Statistics:
min log(p2e) = -3.332 from mtask 5 (predict 30, elapsed 840)
max log(p2e) = -1.764 from mtask 11 (predict 30, elapsed 175)
mean = -2.365
stddev = 0.562
e ^ stddev = 1.754
CPUs:
cpu 1: cpu_time=525 socket=0 core=1 AMD Ryzen 9 3950X 16-Core Processor
cpu 16: cpu_time=2905 socket=0 core=0 AMD Ryzen 9 3950X 16-Core Processor
Writing profile_threads.vcd

22
test_regress/t/t_gantt_io.pl Executable file
View File

@ -0,0 +1,22 @@
#!/usr/bin/env 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.
# SPDX-License-Identifier: LGPL-3.0-only OR Artistic-2.0
scenarios(dist => 1);
run(cmd => ["cd $Self->{obj_dir} && $ENV{VERILATOR_ROOT}/bin/verilator_gantt $Self->{t_dir}/t_gantt_io.dat > gantt.log"],
check_finished => 0);
files_identical("$Self->{obj_dir}/gantt.log", $Self->{golden_filename});
vcd_identical("$Self->{obj_dir}/profile_threads.vcd", "$Self->{t_dir}/t_gantt_io_vcd.out");
ok(1);
1;

View File

@ -0,0 +1,173 @@
$version Generated by verilator_gantt $end
$timescale 1ns $end
$scope module gantt $end
$scope module Stats $end
$var wire 32 vb parallelism [31:0] $end
$upscope $end
$scope module cpus $end
$var wire 32 v1 cpu16_thread [31:0] $end
$var wire 32 v8 cpu1_thread [31:0] $end
$upscope $end
$scope module mtasks $end
$var wire 32 va mtask10_cpu [31:0] $end
$var wire 32 v6 mtask11_cpu [31:0] $end
$var wire 32 v2 mtask5_cpu [31:0] $end
$var wire 32 v9 mtask6_cpu [31:0] $end
$var wire 32 v3 mtask7_cpu [31:0] $end
$var wire 32 v4 mtask8_cpu [31:0] $end
$var wire 32 v5 mtask9_cpu [31:0] $end
$upscope $end
$scope module threads $end
$var wire 32 v7 thread1_mtask [31:0] $end
$var wire 32 v0 thread2_mtask [31:0] $end
$upscope $end
$upscope $end
$enddefinitions $end
#595
bz v0
bz v1
bz va
b1 vb
bz v2
bz v3
bz v4
bz v5
bz v6
b110 v7
b1 v8
b1 v9
#735
b0 vb
bz v7
bz v8
bz v9
#5110
b101 v0
b10 v1
b1 vb
b10000 v2
#5530
bz v0
bz v1
b0 vb
bz v2
#5740
b111 v0
b10 v1
b1 vb
b10000 v3
#5845
bz v0
bz v1
b0 vb
bz v3
#6125
b1000 v0
b10 v1
b1 vb
b10000 v4
#7140
bz v0
bz v1
b0 vb
bz v4
#8120
b1 va
b1 vb
b1010 v7
b1 v8
#8260
bz va
b0 vb
bz v7
bz v8
#8820
b1001 v0
b10 v1
b1 vb
b10000 v5
#9380
bz v0
bz v1
b0 vb
bz v5
#9940
b1011 v0
b10 v1
b1 vb
b10000 v6
#10045
bz v0
bz v1
b0 vb
bz v6
#11970
b1 vb
b110 v7
b1 v8
b1 v9
#12075
b0 vb
bz v7
bz v8
bz v9
#14175
b101 v0
b10 v1
b1 vb
b10000 v2
#14595
bz v0
bz v1
b0 vb
bz v2
#15120
b111 v0
b10 v1
b1 vb
b10000 v3
#15190
bz v0
bz v1
b0 vb
bz v3
#15365
b1000 v0
b10 v1
b1 vb
b10000 v4
#15435
bz v0
bz v1
b0 vb
bz v4
#15680
b1001 v0
b10 v1
b1 vb
b10000 v5
#15750
bz v0
bz v1
b0 vb
bz v5
#15925
b1011 v0
b10 v1
b1 va
b10 vb
b10000 v6
b1010 v7
b1 v8
#15995
bz v0
bz v1
b1 vb
bz v6
#16065
bz va
b0 vb
bz v7
bz v8

View File

@ -8,7 +8,7 @@ if (!$::Driver) { use FindBin; exec("$FindBin::Bin/bootstrap.pl", @ARGV, $0); di
# Version 2.0.
# SPDX-License-Identifier: LGPL-3.0-only OR Artistic-2.0
scenarios(vlt_all => 1);
scenarios(dist => 1);
run(cmd => ["cd $Self->{obj_dir} && $ENV{VERILATOR_ROOT}/bin/verilator_profcfunc $Self->{t_dir}/t_profcfunc.gprof > cfuncs.out"],
check_finished => 0);