mirror of
https://github.com/verilator/verilator.git
synced 2024-12-28 18:27:34 +00:00
57 lines
1.9 KiB
C++
57 lines
1.9 KiB
C++
// -*- mode: C++; c-file-style: "cc-mode" -*-
|
|
//=============================================================================
|
|
//
|
|
// Copyright 2001-2024 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
|
|
//
|
|
//=============================================================================
|
|
///
|
|
/// \file
|
|
/// \brief Verilated tracing in FST format for SystemC header
|
|
///
|
|
/// User wrapper code should use this header when creating FST SystemC traces.
|
|
///
|
|
/// This class is not threadsafe, as the SystemC kernel is not threadsafe.
|
|
///
|
|
//=============================================================================
|
|
|
|
#ifndef VERILATOR_VERILATED_FST_SC_H_
|
|
#define VERILATOR_VERILATED_FST_SC_H_
|
|
|
|
#include "verilatedos.h"
|
|
|
|
#include "verilated_fst_c.h"
|
|
#include "verilated_sc_trace.h"
|
|
|
|
//=============================================================================
|
|
// VerilatedFstSc
|
|
/// Trace file used to create FST dump for SystemC version of Verilated models. It's very similar
|
|
/// to its C version (see the class VerilatedFstC)
|
|
|
|
class VerilatedFstSc final : VerilatedScTraceBase, public VerilatedFstC {
|
|
// CONSTRUCTORS
|
|
VL_UNCOPYABLE(VerilatedFstSc);
|
|
|
|
public:
|
|
VerilatedFstSc() {
|
|
spTrace()->set_time_unit(VerilatedScTraceBase::getScTimeUnit());
|
|
spTrace()->set_time_resolution(VerilatedScTraceBase::getScTimeResolution());
|
|
}
|
|
|
|
// METHODS
|
|
// Override VerilatedFstC. Must be called after starting simulation.
|
|
void open(const char* filename) override VL_MT_SAFE {
|
|
VerilatedScTraceBase::checkScElaborationDone();
|
|
VerilatedFstC::open(filename);
|
|
}
|
|
|
|
// METHODS - for SC kernel
|
|
// Called from SystemC kernel
|
|
void cycle() override { VerilatedFstC::dump(sc_core::sc_time_stamp().to_double()); }
|
|
};
|
|
|
|
#endif // Guard
|