mirror of
https://github.com/verilator/verilator.git
synced 2025-01-01 04:07:34 +00:00
Fix dumping waveforms to multiple FST files (#2889)
This commit is contained in:
parent
f579e55706
commit
f5ad5cf034
@ -11,6 +11,7 @@ Chris Randall
|
||||
Conor McCullough
|
||||
Dan Petrisko
|
||||
David Horton
|
||||
David Metz
|
||||
David Stanford
|
||||
David Turner
|
||||
Drew Taussig
|
||||
|
@ -105,6 +105,7 @@ void VerilatedFst::open(const char* filename) VL_MT_SAFE_EXCLUDES(m_mutex) {
|
||||
#ifdef VL_TRACE_FST_WRITER_THREAD
|
||||
fstWriterSetParallelMode(m_fst, 1);
|
||||
#endif
|
||||
fullDump(true); // First dump must be full for fst
|
||||
|
||||
m_curScope.clear();
|
||||
|
||||
|
54
test_regress/t/t_trace_cat_fst.cpp
Normal file
54
test_regress/t/t_trace_cat_fst.cpp
Normal file
@ -0,0 +1,54 @@
|
||||
// -*- mode: C++; c-file-style: "cc-mode" -*-
|
||||
//
|
||||
// DESCRIPTION: Verilator: Verilog Test module
|
||||
//
|
||||
// This file ONLY is placed under the Creative Commons Public Domain, for
|
||||
// any use, without warranty, 2008 by Wilson Snyder.
|
||||
// SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
#include <memory>
|
||||
#include <verilated.h>
|
||||
#include <verilated_fst_c.h>
|
||||
|
||||
#include VM_PREFIX_INCLUDE
|
||||
|
||||
unsigned long long main_time = 0;
|
||||
double sc_time_stamp() { return (double)main_time; }
|
||||
|
||||
const char* trace_name() {
|
||||
static char name[1000];
|
||||
VL_SNPRINTF(name, 1000, VL_STRINGIFY(TEST_OBJ_DIR) "/simpart_%04d.fst", (int)main_time);
|
||||
return name;
|
||||
}
|
||||
|
||||
int main(int argc, char** argv, char** env) {
|
||||
std::unique_ptr<VM_PREFIX> top{new VM_PREFIX("top")};
|
||||
|
||||
Verilated::debug(0);
|
||||
Verilated::traceEverOn(true);
|
||||
|
||||
std::unique_ptr<VerilatedFstC> tfp{new VerilatedFstC};
|
||||
top->trace(tfp.get(), 99);
|
||||
|
||||
tfp->open(trace_name());
|
||||
|
||||
top->clk = 0;
|
||||
|
||||
while (main_time < 190) { // Creates 2 files
|
||||
top->clk = !top->clk;
|
||||
top->eval();
|
||||
|
||||
if ((main_time % 100) == 0) {
|
||||
tfp->close();
|
||||
tfp->open(trace_name());
|
||||
}
|
||||
tfp->dump((unsigned int)(main_time));
|
||||
++main_time;
|
||||
}
|
||||
tfp->close();
|
||||
top->final();
|
||||
tfp.reset();
|
||||
top.reset();
|
||||
printf("*-* All Finished *-*\n");
|
||||
return 0;
|
||||
}
|
29
test_regress/t/t_trace_cat_fst.pl
Executable file
29
test_regress/t/t_trace_cat_fst.pl
Executable file
@ -0,0 +1,29 @@
|
||||
#!/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-2013 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(vlt_all => 1);
|
||||
|
||||
compile(
|
||||
make_top_shell => 0,
|
||||
make_main => 0,
|
||||
v_flags2 => ["--trace-fst --exe $Self->{t_dir}/t_trace_cat_fst.cpp"],
|
||||
);
|
||||
|
||||
execute(
|
||||
check_finished => 1,
|
||||
);
|
||||
|
||||
fst_identical("$Self->{obj_dir}/simpart_0000.fst",
|
||||
"t/$Self->{name}_0000.out");
|
||||
fst_identical("$Self->{obj_dir}/simpart_0100.fst",
|
||||
"t/$Self->{name}_0100.out");
|
||||
|
||||
ok(1);
|
||||
1;
|
18
test_regress/t/t_trace_cat_fst.v
Normal file
18
test_regress/t/t_trace_cat_fst.v
Normal file
@ -0,0 +1,18 @@
|
||||
// DESCRIPTION: Verilator: Verilog Test module
|
||||
//
|
||||
// This file ONLY is placed under the Creative Commons Public Domain, for
|
||||
// any use, without warranty, 2013 by Wilson Snyder.
|
||||
// SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
module t
|
||||
(
|
||||
input wire clk
|
||||
);
|
||||
|
||||
integer cyc; initial cyc = 0;
|
||||
integer unchanged; initial unchanged = 42;
|
||||
|
||||
always @ (posedge clk) begin
|
||||
cyc <= cyc + 1;
|
||||
end
|
||||
endmodule
|
272
test_regress/t/t_trace_cat_fst_0000.out
Normal file
272
test_regress/t/t_trace_cat_fst_0000.out
Normal file
@ -0,0 +1,272 @@
|
||||
$date
|
||||
Wed Apr 14 17:11:07 2021
|
||||
|
||||
$end
|
||||
$version
|
||||
fstWriter
|
||||
$end
|
||||
$timescale
|
||||
1ps
|
||||
$end
|
||||
$scope module top $end
|
||||
$var wire 1 ! clk $end
|
||||
$scope module t $end
|
||||
$var wire 1 ! clk $end
|
||||
$var integer 32 " cyc $end
|
||||
$var integer 32 # unchanged $end
|
||||
$upscope $end
|
||||
$upscope $end
|
||||
$enddefinitions $end
|
||||
#0
|
||||
$dumpvars
|
||||
b00000000000000000000000000101010 #
|
||||
b00000000000000000000000000000000 "
|
||||
1!
|
||||
$end
|
||||
#1
|
||||
0!
|
||||
#2
|
||||
1!
|
||||
b00000000000000000000000000000001 "
|
||||
#3
|
||||
0!
|
||||
#4
|
||||
1!
|
||||
b00000000000000000000000000000010 "
|
||||
#5
|
||||
0!
|
||||
#6
|
||||
1!
|
||||
b00000000000000000000000000000011 "
|
||||
#7
|
||||
0!
|
||||
#8
|
||||
1!
|
||||
b00000000000000000000000000000100 "
|
||||
#9
|
||||
0!
|
||||
#10
|
||||
1!
|
||||
b00000000000000000000000000000101 "
|
||||
#11
|
||||
0!
|
||||
#12
|
||||
1!
|
||||
b00000000000000000000000000000110 "
|
||||
#13
|
||||
0!
|
||||
#14
|
||||
1!
|
||||
b00000000000000000000000000000111 "
|
||||
#15
|
||||
0!
|
||||
#16
|
||||
1!
|
||||
b00000000000000000000000000001000 "
|
||||
#17
|
||||
0!
|
||||
#18
|
||||
1!
|
||||
b00000000000000000000000000001001 "
|
||||
#19
|
||||
0!
|
||||
#20
|
||||
1!
|
||||
b00000000000000000000000000001010 "
|
||||
#21
|
||||
0!
|
||||
#22
|
||||
1!
|
||||
b00000000000000000000000000001011 "
|
||||
#23
|
||||
0!
|
||||
#24
|
||||
1!
|
||||
b00000000000000000000000000001100 "
|
||||
#25
|
||||
0!
|
||||
#26
|
||||
1!
|
||||
b00000000000000000000000000001101 "
|
||||
#27
|
||||
0!
|
||||
#28
|
||||
1!
|
||||
b00000000000000000000000000001110 "
|
||||
#29
|
||||
0!
|
||||
#30
|
||||
1!
|
||||
b00000000000000000000000000001111 "
|
||||
#31
|
||||
0!
|
||||
#32
|
||||
1!
|
||||
b00000000000000000000000000010000 "
|
||||
#33
|
||||
0!
|
||||
#34
|
||||
1!
|
||||
b00000000000000000000000000010001 "
|
||||
#35
|
||||
0!
|
||||
#36
|
||||
1!
|
||||
b00000000000000000000000000010010 "
|
||||
#37
|
||||
0!
|
||||
#38
|
||||
1!
|
||||
b00000000000000000000000000010011 "
|
||||
#39
|
||||
0!
|
||||
#40
|
||||
1!
|
||||
b00000000000000000000000000010100 "
|
||||
#41
|
||||
0!
|
||||
#42
|
||||
1!
|
||||
b00000000000000000000000000010101 "
|
||||
#43
|
||||
0!
|
||||
#44
|
||||
1!
|
||||
b00000000000000000000000000010110 "
|
||||
#45
|
||||
0!
|
||||
#46
|
||||
1!
|
||||
b00000000000000000000000000010111 "
|
||||
#47
|
||||
0!
|
||||
#48
|
||||
1!
|
||||
b00000000000000000000000000011000 "
|
||||
#49
|
||||
0!
|
||||
#50
|
||||
1!
|
||||
b00000000000000000000000000011001 "
|
||||
#51
|
||||
0!
|
||||
#52
|
||||
1!
|
||||
b00000000000000000000000000011010 "
|
||||
#53
|
||||
0!
|
||||
#54
|
||||
1!
|
||||
b00000000000000000000000000011011 "
|
||||
#55
|
||||
0!
|
||||
#56
|
||||
1!
|
||||
b00000000000000000000000000011100 "
|
||||
#57
|
||||
0!
|
||||
#58
|
||||
1!
|
||||
b00000000000000000000000000011101 "
|
||||
#59
|
||||
0!
|
||||
#60
|
||||
1!
|
||||
b00000000000000000000000000011110 "
|
||||
#61
|
||||
0!
|
||||
#62
|
||||
1!
|
||||
b00000000000000000000000000011111 "
|
||||
#63
|
||||
0!
|
||||
#64
|
||||
1!
|
||||
b00000000000000000000000000100000 "
|
||||
#65
|
||||
0!
|
||||
#66
|
||||
1!
|
||||
b00000000000000000000000000100001 "
|
||||
#67
|
||||
0!
|
||||
#68
|
||||
1!
|
||||
b00000000000000000000000000100010 "
|
||||
#69
|
||||
0!
|
||||
#70
|
||||
1!
|
||||
b00000000000000000000000000100011 "
|
||||
#71
|
||||
0!
|
||||
#72
|
||||
1!
|
||||
b00000000000000000000000000100100 "
|
||||
#73
|
||||
0!
|
||||
#74
|
||||
1!
|
||||
b00000000000000000000000000100101 "
|
||||
#75
|
||||
0!
|
||||
#76
|
||||
1!
|
||||
b00000000000000000000000000100110 "
|
||||
#77
|
||||
0!
|
||||
#78
|
||||
1!
|
||||
b00000000000000000000000000100111 "
|
||||
#79
|
||||
0!
|
||||
#80
|
||||
1!
|
||||
b00000000000000000000000000101000 "
|
||||
#81
|
||||
0!
|
||||
#82
|
||||
1!
|
||||
b00000000000000000000000000101001 "
|
||||
#83
|
||||
0!
|
||||
#84
|
||||
1!
|
||||
b00000000000000000000000000101010 "
|
||||
#85
|
||||
0!
|
||||
#86
|
||||
1!
|
||||
b00000000000000000000000000101011 "
|
||||
#87
|
||||
0!
|
||||
#88
|
||||
1!
|
||||
b00000000000000000000000000101100 "
|
||||
#89
|
||||
0!
|
||||
#90
|
||||
1!
|
||||
b00000000000000000000000000101101 "
|
||||
#91
|
||||
0!
|
||||
#92
|
||||
1!
|
||||
b00000000000000000000000000101110 "
|
||||
#93
|
||||
0!
|
||||
#94
|
||||
1!
|
||||
b00000000000000000000000000101111 "
|
||||
#95
|
||||
0!
|
||||
#96
|
||||
1!
|
||||
b00000000000000000000000000110000 "
|
||||
#97
|
||||
0!
|
||||
#98
|
||||
1!
|
||||
b00000000000000000000000000110001 "
|
||||
#99
|
||||
0!
|
247
test_regress/t/t_trace_cat_fst_0100.out
Normal file
247
test_regress/t/t_trace_cat_fst_0100.out
Normal file
@ -0,0 +1,247 @@
|
||||
$date
|
||||
Wed Apr 14 17:04:26 2021
|
||||
|
||||
$end
|
||||
$version
|
||||
fstWriter
|
||||
$end
|
||||
$timescale
|
||||
1ps
|
||||
$end
|
||||
$scope module top $end
|
||||
$var wire 1 ! clk $end
|
||||
$scope module t $end
|
||||
$var wire 1 ! clk $end
|
||||
$var integer 32 " cyc $end
|
||||
$var integer 32 # unchanged $end
|
||||
$upscope $end
|
||||
$upscope $end
|
||||
$enddefinitions $end
|
||||
#100
|
||||
$dumpvars
|
||||
b00000000000000000000000000101010 #
|
||||
b00000000000000000000000000110010 "
|
||||
1!
|
||||
$end
|
||||
#101
|
||||
0!
|
||||
#102
|
||||
1!
|
||||
b00000000000000000000000000110011 "
|
||||
#103
|
||||
0!
|
||||
#104
|
||||
1!
|
||||
b00000000000000000000000000110100 "
|
||||
#105
|
||||
0!
|
||||
#106
|
||||
1!
|
||||
b00000000000000000000000000110101 "
|
||||
#107
|
||||
0!
|
||||
#108
|
||||
1!
|
||||
b00000000000000000000000000110110 "
|
||||
#109
|
||||
0!
|
||||
#110
|
||||
1!
|
||||
b00000000000000000000000000110111 "
|
||||
#111
|
||||
0!
|
||||
#112
|
||||
1!
|
||||
b00000000000000000000000000111000 "
|
||||
#113
|
||||
0!
|
||||
#114
|
||||
1!
|
||||
b00000000000000000000000000111001 "
|
||||
#115
|
||||
0!
|
||||
#116
|
||||
1!
|
||||
b00000000000000000000000000111010 "
|
||||
#117
|
||||
0!
|
||||
#118
|
||||
1!
|
||||
b00000000000000000000000000111011 "
|
||||
#119
|
||||
0!
|
||||
#120
|
||||
1!
|
||||
b00000000000000000000000000111100 "
|
||||
#121
|
||||
0!
|
||||
#122
|
||||
1!
|
||||
b00000000000000000000000000111101 "
|
||||
#123
|
||||
0!
|
||||
#124
|
||||
1!
|
||||
b00000000000000000000000000111110 "
|
||||
#125
|
||||
0!
|
||||
#126
|
||||
1!
|
||||
b00000000000000000000000000111111 "
|
||||
#127
|
||||
0!
|
||||
#128
|
||||
1!
|
||||
b00000000000000000000000001000000 "
|
||||
#129
|
||||
0!
|
||||
#130
|
||||
1!
|
||||
b00000000000000000000000001000001 "
|
||||
#131
|
||||
0!
|
||||
#132
|
||||
1!
|
||||
b00000000000000000000000001000010 "
|
||||
#133
|
||||
0!
|
||||
#134
|
||||
1!
|
||||
b00000000000000000000000001000011 "
|
||||
#135
|
||||
0!
|
||||
#136
|
||||
1!
|
||||
b00000000000000000000000001000100 "
|
||||
#137
|
||||
0!
|
||||
#138
|
||||
1!
|
||||
b00000000000000000000000001000101 "
|
||||
#139
|
||||
0!
|
||||
#140
|
||||
1!
|
||||
b00000000000000000000000001000110 "
|
||||
#141
|
||||
0!
|
||||
#142
|
||||
1!
|
||||
b00000000000000000000000001000111 "
|
||||
#143
|
||||
0!
|
||||
#144
|
||||
1!
|
||||
b00000000000000000000000001001000 "
|
||||
#145
|
||||
0!
|
||||
#146
|
||||
1!
|
||||
b00000000000000000000000001001001 "
|
||||
#147
|
||||
0!
|
||||
#148
|
||||
1!
|
||||
b00000000000000000000000001001010 "
|
||||
#149
|
||||
0!
|
||||
#150
|
||||
1!
|
||||
b00000000000000000000000001001011 "
|
||||
#151
|
||||
0!
|
||||
#152
|
||||
1!
|
||||
b00000000000000000000000001001100 "
|
||||
#153
|
||||
0!
|
||||
#154
|
||||
1!
|
||||
b00000000000000000000000001001101 "
|
||||
#155
|
||||
0!
|
||||
#156
|
||||
1!
|
||||
b00000000000000000000000001001110 "
|
||||
#157
|
||||
0!
|
||||
#158
|
||||
1!
|
||||
b00000000000000000000000001001111 "
|
||||
#159
|
||||
0!
|
||||
#160
|
||||
1!
|
||||
b00000000000000000000000001010000 "
|
||||
#161
|
||||
0!
|
||||
#162
|
||||
1!
|
||||
b00000000000000000000000001010001 "
|
||||
#163
|
||||
0!
|
||||
#164
|
||||
1!
|
||||
b00000000000000000000000001010010 "
|
||||
#165
|
||||
0!
|
||||
#166
|
||||
1!
|
||||
b00000000000000000000000001010011 "
|
||||
#167
|
||||
0!
|
||||
#168
|
||||
1!
|
||||
b00000000000000000000000001010100 "
|
||||
#169
|
||||
0!
|
||||
#170
|
||||
1!
|
||||
b00000000000000000000000001010101 "
|
||||
#171
|
||||
0!
|
||||
#172
|
||||
1!
|
||||
b00000000000000000000000001010110 "
|
||||
#173
|
||||
0!
|
||||
#174
|
||||
1!
|
||||
b00000000000000000000000001010111 "
|
||||
#175
|
||||
0!
|
||||
#176
|
||||
1!
|
||||
b00000000000000000000000001011000 "
|
||||
#177
|
||||
0!
|
||||
#178
|
||||
1!
|
||||
b00000000000000000000000001011001 "
|
||||
#179
|
||||
0!
|
||||
#180
|
||||
1!
|
||||
b00000000000000000000000001011010 "
|
||||
#181
|
||||
0!
|
||||
#182
|
||||
1!
|
||||
b00000000000000000000000001011011 "
|
||||
#183
|
||||
0!
|
||||
#184
|
||||
1!
|
||||
b00000000000000000000000001011100 "
|
||||
#185
|
||||
0!
|
||||
#186
|
||||
1!
|
||||
b00000000000000000000000001011101 "
|
||||
#187
|
||||
0!
|
||||
#188
|
||||
1!
|
||||
b00000000000000000000000001011110 "
|
||||
#189
|
||||
0!
|
Loading…
Reference in New Issue
Block a user