mirror of
https://github.com/verilator/verilator.git
synced 2025-04-12 07:56:53 +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
|
Conor McCullough
|
||||||
Dan Petrisko
|
Dan Petrisko
|
||||||
David Horton
|
David Horton
|
||||||
|
David Metz
|
||||||
David Stanford
|
David Stanford
|
||||||
David Turner
|
David Turner
|
||||||
Drew Taussig
|
Drew Taussig
|
||||||
|
@ -105,6 +105,7 @@ void VerilatedFst::open(const char* filename) VL_MT_SAFE_EXCLUDES(m_mutex) {
|
|||||||
#ifdef VL_TRACE_FST_WRITER_THREAD
|
#ifdef VL_TRACE_FST_WRITER_THREAD
|
||||||
fstWriterSetParallelMode(m_fst, 1);
|
fstWriterSetParallelMode(m_fst, 1);
|
||||||
#endif
|
#endif
|
||||||
|
fullDump(true); // First dump must be full for fst
|
||||||
|
|
||||||
m_curScope.clear();
|
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