Commentary

This commit is contained in:
Wilson Snyder 2024-09-10 19:04:55 -04:00
parent 4a58997604
commit 3525484730
15 changed files with 41 additions and 41 deletions

View File

@ -584,7 +584,7 @@ Verilator 5.012 2023-06-13
* Fix wide structure VL_TOSTRING_W generation (#4188) (#4189). [Aylon Chaim Porat] * Fix wide structure VL_TOSTRING_W generation (#4188) (#4189). [Aylon Chaim Porat]
* Fix references to members of parameterized base classes (#4196). [Ryszard Rozak, Antmicro Ltd] * Fix references to members of parameterized base classes (#4196). [Ryszard Rozak, Antmicro Ltd]
* Fix tracing undefined alignment (#4201) (#4288) [John Wehle] * Fix tracing undefined alignment (#4201) (#4288) [John Wehle]
* Fix class specific same methods for AstVarScope, AstVar, and AstScope (#4203) (#4250). [John Wehle] * Fix class-specific same methods for AstVarScope, AstVar, and AstScope (#4203) (#4250). [John Wehle]
* Fix dotted references in parameterized classes (#4206). [Ryszard Rozak, Antmicro Ltd] * Fix dotted references in parameterized classes (#4206). [Ryszard Rozak, Antmicro Ltd]
* Fix bit selections under parameterized classes (#4210). [Ryszard Rozak, Antmicro Ltd] * Fix bit selections under parameterized classes (#4210). [Ryszard Rozak, Antmicro Ltd]
* Fix duplicate std:: declaration with -I (#4215). [Harald Pretl] * Fix duplicate std:: declaration with -I (#4215). [Harald Pretl]

View File

@ -77,7 +77,7 @@ datadir = @datadir@
# Directory in which to install documentation info files. # Directory in which to install documentation info files.
infodir = @infodir@ infodir = @infodir@
# Directory in which to install package specific files # Directory in which to install package-specific files
# Generally ${prefix}/share/verilator # Generally ${prefix}/share/verilator
pkgdatadir = @pkgdatadir@ pkgdatadir = @pkgdatadir@

View File

@ -2100,13 +2100,13 @@ driver.py Non-Scenario Arguments
memory leaks. memory leaks.
--site --site
Run site specific tests also. Run site-specific tests also.
--stop --stop
Stop on the first error. Stop on the first error.
--trace --trace
Set the simulator specific flags to request waveform tracing. Set the simulator-specific flags to request waveform tracing.
--valgrind --valgrind
Same as ``verilator --valgrind``: Run Verilator under `Valgrind <https://valgrind.org/>`_. Same as ``verilator --valgrind``: Run Verilator under `Valgrind <https://valgrind.org/>`_.

View File

@ -294,7 +294,7 @@ void VerilatedFst::configure(const VerilatedTraceConfig& config) {
// so always inline them. // so always inline them.
VL_ATTR_ALWINLINE VL_ATTR_ALWINLINE
void VerilatedFstBuffer::emitEvent(uint32_t code, const VlEventBase* newval) { void VerilatedFstBuffer::emitEvent(uint32_t code, const VlEventBase* newvalp) {
VL_DEBUG_IFDEF(assert(m_symbolp[code]);); VL_DEBUG_IFDEF(assert(m_symbolp[code]););
fstWriterEmitValueChange(m_fst, m_symbolp[code], "1"); fstWriterEmitValueChange(m_fst, m_symbolp[code], "1");
} }

View File

@ -47,7 +47,7 @@ private:
friend VerilatedFstBuffer; // Give the buffer access to the private bits friend VerilatedFstBuffer; // Give the buffer access to the private bits
//========================================================================= //=========================================================================
// FST specific internals // FST-specific internals
void* m_fst = nullptr; void* m_fst = nullptr;
std::map<uint32_t, vlFstHandle> m_code2symbol; std::map<uint32_t, vlFstHandle> m_code2symbol;
@ -177,7 +177,7 @@ class VerilatedFstBuffer VL_NOT_FINAL {
// Implementations of duck-typed methods for VerilatedTraceBuffer. These are // Implementations of duck-typed methods for VerilatedTraceBuffer. These are
// called from only one place (the full* methods), so always inline them. // called from only one place (the full* methods), so always inline them.
VL_ATTR_ALWINLINE void emitEvent(uint32_t code, const VlEventBase* newval); VL_ATTR_ALWINLINE void emitEvent(uint32_t code, const VlEventBase* newvalp);
VL_ATTR_ALWINLINE void emitBit(uint32_t code, CData newval); VL_ATTR_ALWINLINE void emitBit(uint32_t code, CData newval);
VL_ATTR_ALWINLINE void emitCData(uint32_t code, CData newval, int bits); VL_ATTR_ALWINLINE void emitCData(uint32_t code, CData newval, int bits);
VL_ATTR_ALWINLINE void emitSData(uint32_t code, SData newval, int bits); VL_ATTR_ALWINLINE void emitSData(uint32_t code, SData newval, int bits);

View File

@ -12,13 +12,13 @@
//************************************************************************* //*************************************************************************
/// ///
/// \file /// \file
/// \brief Verilator common target specific intrinsics header /// \brief Verilator common target-specific intrinsics header
/// ///
/// This file is not part of the Verilated public-facing API. /// This file is not part of the Verilated public-facing API.
/// ///
/// It is only for internal use; code using machine specific intrinsics for /// It is only for internal use; code using machine-specific intrinsics for
/// optimization should include this header rather than directly including /// optimization should include this header rather than directly including
/// he target specific headers. We provide macros to check for availability /// the target-specific headers. We provide macros to check for availability
/// of instruction sets, and a common mechanism to disable them. /// of instruction sets, and a common mechanism to disable them.
/// ///
//************************************************************************* //*************************************************************************

View File

@ -198,8 +198,8 @@ public:
//============================================================================= //=============================================================================
// VerilatedTrace // VerilatedTrace
// T_Trace is the format specific subclass of VerilatedTrace. // T_Trace is the format-specific subclass of VerilatedTrace.
// T_Buffer is the format specific base class of VerilatedTraceBuffer. // T_Buffer is the format-specific base class of VerilatedTraceBuffer.
template <class T_Trace, class T_Buffer> template <class T_Trace, class T_Buffer>
class VerilatedTrace VL_NOT_FINAL { class VerilatedTrace VL_NOT_FINAL {
public: public:
@ -348,7 +348,7 @@ private:
protected: protected:
//========================================================================= //=========================================================================
// Internals available to format specific implementations // Internals available to format-specific implementations
mutable VerilatedMutex m_mutex; // Ensure dump() etc only called from single thread mutable VerilatedMutex m_mutex; // Ensure dump() etc only called from single thread
@ -381,7 +381,7 @@ protected:
} }
//========================================================================= //=========================================================================
// Virtual functions to be provided by the format specific implementation // Virtual functions to be provided by the format-specific implementation
// Called when the trace moves forward to a new time point // Called when the trace moves forward to a new time point
virtual void emitTimeChange(uint64_t timeui) = 0; virtual void emitTimeChange(uint64_t timeui) = 0;
@ -438,7 +438,7 @@ public:
//============================================================================= //=============================================================================
// VerilatedTraceBuffer // VerilatedTraceBuffer
// T_Buffer is the format specific base class of VerilatedTraceBuffer. // T_Buffer is the format-specific base class of VerilatedTraceBuffer.
// The format-specific hot-path methods use duck-typing via T_Buffer for performance. // The format-specific hot-path methods use duck-typing via T_Buffer for performance.
template <class T_Buffer> template <class T_Buffer>
class VerilatedTraceBuffer VL_NOT_FINAL : public T_Buffer { class VerilatedTraceBuffer VL_NOT_FINAL : public T_Buffer {
@ -464,7 +464,7 @@ public:
// Hot path internal interface to Verilator generated code // Hot path internal interface to Verilator generated code
// Implementation note: We rely on the following duck-typed implementations // Implementation note: We rely on the following duck-typed implementations
// in the derived class T_Derived. These emit* functions record a format // in the derived class T_Derived. These emit* functions record a format-
// specific trace entry. Normally one would use pure virtual functions for // specific trace entry. Normally one would use pure virtual functions for
// these here, but we cannot afford dynamic dispatch for calling these as // these here, but we cannot afford dynamic dispatch for calling these as
// this is very hot code during tracing. // this is very hot code during tracing.
@ -487,7 +487,7 @@ public:
void fullQData(uint32_t* oldp, QData newval, int bits); void fullQData(uint32_t* oldp, QData newval, int bits);
void fullWData(uint32_t* oldp, const WData* newvalp, int bits); void fullWData(uint32_t* oldp, const WData* newvalp, int bits);
void fullDouble(uint32_t* oldp, double newval); void fullDouble(uint32_t* oldp, double newval);
void fullEvent(uint32_t* oldp, const VlEventBase* newval); void fullEvent(uint32_t* oldp, const VlEventBase* newvalp);
// In non-offload mode, these are called directly by the trace callbacks, // In non-offload mode, these are called directly by the trace callbacks,
// and are called chg*. In offload mode, they are called by the worker // and are called chg*. In offload mode, they are called by the worker
@ -524,8 +524,8 @@ public:
} }
} }
} }
VL_ATTR_ALWINLINE void chgEvent(uint32_t* oldp, const VlEventBase* newval) { VL_ATTR_ALWINLINE void chgEvent(uint32_t* oldp, const VlEventBase* newvalp) {
fullEvent(oldp, newval); fullEvent(oldp, newvalp);
} }
VL_ATTR_ALWINLINE void chgDouble(uint32_t* oldp, double newval) { VL_ATTR_ALWINLINE void chgDouble(uint32_t* oldp, double newval) {
double old; double old;
@ -537,7 +537,7 @@ public:
//============================================================================= //=============================================================================
// VerilatedTraceOffloadBuffer // VerilatedTraceOffloadBuffer
// T_Buffer is the format specific base class of VerilatedTraceBuffer. // T_Buffer is the format-specific base class of VerilatedTraceBuffer.
// The format-specific hot-path methods use duck-typing via T_Buffer for performance. // The format-specific hot-path methods use duck-typing via T_Buffer for performance.
template <class T_Buffer> template <class T_Buffer>
class VerilatedTraceOffloadBuffer final : public VerilatedTraceBuffer<T_Buffer> { class VerilatedTraceOffloadBuffer final : public VerilatedTraceBuffer<T_Buffer> {
@ -605,7 +605,7 @@ public:
m_offloadBufferWritep += 4; m_offloadBufferWritep += 4;
VL_DEBUG_IF(assert(m_offloadBufferWritep <= m_offloadBufferEndp);); VL_DEBUG_IF(assert(m_offloadBufferWritep <= m_offloadBufferEndp););
} }
void chgEvent(uint32_t code, const VlEventBase* newval) { void chgEvent(uint32_t code, const VlEventBase* newvalp) {
m_offloadBufferWritep[0] = VerilatedTraceOffloadCommand::CHG_EVENT; m_offloadBufferWritep[0] = VerilatedTraceOffloadCommand::CHG_EVENT;
m_offloadBufferWritep[1] = code; m_offloadBufferWritep[1] = code;
m_offloadBufferWritep += 2; m_offloadBufferWritep += 2;

View File

@ -12,7 +12,7 @@
//============================================================================= //=============================================================================
// //
// Verilated tracing implementation code template common to all formats. // Verilated tracing implementation code template common to all formats.
// This file is included by the format specific implementations and // This file is included by the format-specific implementations and
// should not be used otherwise. // should not be used otherwise.
// //
//============================================================================= //=============================================================================
@ -299,7 +299,7 @@ VerilatedTrace<VL_SUB_T, VL_BUF_T>::~VerilatedTrace() {
} }
//========================================================================= //=========================================================================
// Internals available to format specific implementations // Internals available to format-specific implementations
template <> template <>
void VerilatedTrace<VL_SUB_T, VL_BUF_T>::traceInit() VL_MT_UNSAFE { void VerilatedTrace<VL_SUB_T, VL_BUF_T>::traceInit() VL_MT_UNSAFE {
@ -401,7 +401,7 @@ bool VerilatedTrace<VL_SUB_T, VL_BUF_T>::declCode(uint32_t code, const std::stri
} }
//========================================================================= //=========================================================================
// Internals available to format specific implementations // Internals available to format-specific implementations
template <> template <>
std::string VerilatedTrace<VL_SUB_T, VL_BUF_T>::timeResStr() const { std::string VerilatedTrace<VL_SUB_T, VL_BUF_T>::timeResStr() const {
@ -543,7 +543,7 @@ void VerilatedTrace<VL_SUB_T, VL_BUF_T>::dump(uint64_t timeui) VL_MT_SAFE_EXCLUD
Verilated::quiesce(); Verilated::quiesce();
// Call hook for format specific behaviour // Call hook for format-specific behaviour
if (VL_UNLIKELY(m_fullDump)) { if (VL_UNLIKELY(m_fullDump)) {
if (!preFullDump()) return; if (!preFullDump()) return;
} else { } else {
@ -667,7 +667,7 @@ void VerilatedTrace<VL_SUB_T, VL_BUF_T>::addModel(VerilatedModel* modelp)
VL_FATAL_MT(__FILE__, __LINE__, "", "Cannot use parallel tracing with offloading"); VL_FATAL_MT(__FILE__, __LINE__, "", "Cannot use parallel tracing with offloading");
} // LCOV_EXCL_STOP } // LCOV_EXCL_STOP
// Configure format specific sub class // Configure format-specific sub class
configure(*(configp.get())); configure(*(configp.get()));
} }
@ -818,8 +818,8 @@ VerilatedTraceBuffer<VL_BUF_T>::VerilatedTraceBuffer(Trace& owner)
, m_sigs_enabledp{owner.m_sigs_enabledp} {} , m_sigs_enabledp{owner.m_sigs_enabledp} {}
// These functions must write the new value back into the old value store, // These functions must write the new value back into the old value store,
// and subsequently call the format specific emit* implementations. Note // and subsequently call the format-specific emit* implementations. Note
// that this file must be included in the format specific implementation, so // that this file must be included in the format-specific implementation, so
// the emit* functions can be inlined for performance. // the emit* functions can be inlined for performance.
template <> template <>
@ -831,10 +831,10 @@ void VerilatedTraceBuffer<VL_BUF_T>::fullBit(uint32_t* oldp, CData newval) {
} }
template <> template <>
void VerilatedTraceBuffer<VL_BUF_T>::fullEvent(uint32_t* oldp, const VlEventBase* newval) { void VerilatedTraceBuffer<VL_BUF_T>::fullEvent(uint32_t* oldp, const VlEventBase* newvalp) {
const uint32_t code = oldp - m_sigs_oldvalp; const uint32_t code = oldp - m_sigs_oldvalp;
*oldp = 1; // Do we really store an "event" ? *oldp = 1; // Do we really store an "event" ?
emitEvent(code, newval); emitEvent(code, newvalp);
} }
template <> template <>

View File

@ -573,8 +573,8 @@ void VerilatedVcdBuffer::finishLine(uint32_t code, char* writep) {
// so always inline them. // so always inline them.
VL_ATTR_ALWINLINE VL_ATTR_ALWINLINE
void VerilatedVcdBuffer::emitEvent(uint32_t code, const VlEventBase* newval) { void VerilatedVcdBuffer::emitEvent(uint32_t code, const VlEventBase* newvalp) {
const bool triggered = newval->isTriggered(); const bool triggered = newvalp->isTriggered();
// TODO : It seems that untriggered events are not filtered // TODO : It seems that untriggered events are not filtered
// should be tested before this last step // should be tested before this last step
if (triggered) { if (triggered) {

View File

@ -43,7 +43,7 @@ private:
friend VerilatedVcdBuffer; // Give the buffer access to the private bits friend VerilatedVcdBuffer; // Give the buffer access to the private bits
//========================================================================= //=========================================================================
// VCD specific internals // VCD-specific internals
VerilatedVcdFile* m_filep; // File we're writing to VerilatedVcdFile* m_filep; // File we're writing to
bool m_fileNewed; // m_filep needs destruction bool m_fileNewed; // m_filep needs destruction
@ -214,7 +214,7 @@ class VerilatedVcdBuffer VL_NOT_FINAL {
// Implementation of VerilatedTraceBuffer interface // Implementation of VerilatedTraceBuffer interface
// Implementations of duck-typed methods for VerilatedTraceBuffer. These are // Implementations of duck-typed methods for VerilatedTraceBuffer. These are
// called from only one place (the full* methods), so always inline them. // called from only one place (the full* methods), so always inline them.
VL_ATTR_ALWINLINE void emitEvent(uint32_t code, const VlEventBase* newval); VL_ATTR_ALWINLINE void emitEvent(uint32_t code, const VlEventBase* newvalp);
VL_ATTR_ALWINLINE void emitBit(uint32_t code, CData newval); VL_ATTR_ALWINLINE void emitBit(uint32_t code, CData newval);
VL_ATTR_ALWINLINE void emitCData(uint32_t code, CData newval, int bits); VL_ATTR_ALWINLINE void emitCData(uint32_t code, CData newval, int bits);
VL_ATTR_ALWINLINE void emitSData(uint32_t code, SData newval, int bits); VL_ATTR_ALWINLINE void emitSData(uint32_t code, SData newval, int bits);

View File

@ -593,9 +593,9 @@ static inline double VL_ROUND(double n) {
#endif #endif
//========================================================================= //=========================================================================
// Macros controlling target specific optimizations // Macros controlling target-specific optimizations
// Define VL_PORTABLE_ONLY to disable all target specific optimizations // Define VL_PORTABLE_ONLY to disable all target-specific optimizations
#ifndef VL_PORTABLE_ONLY #ifndef VL_PORTABLE_ONLY
# ifdef __x86_64__ # ifdef __x86_64__
# define VL_X86_64 1 # define VL_X86_64 1

View File

@ -49,7 +49,7 @@ prefix = @prefix@
# Directory in which to install data across multiple architectures # Directory in which to install data across multiple architectures
datarootdir = @datarootdir@ datarootdir = @datarootdir@
# Directory in which to install package specific files # Directory in which to install package-specific files
# Generally ${prefix}/share/verilator # Generally ${prefix}/share/verilator
pkgdatadir = @pkgdatadir@ pkgdatadir = @pkgdatadir@

View File

@ -2440,7 +2440,7 @@ public:
static void dumpTreeFileGdb(const AstNode* nodep, const char* filenamep = nullptr); static void dumpTreeFileGdb(const AstNode* nodep, const char* filenamep = nullptr);
void dumpTreeDot(std::ostream& os = std::cout) const; void dumpTreeDot(std::ostream& os = std::cout) const;
void dumpTreeDotFile(const string& filename, bool doDump = true); void dumpTreeDotFile(const string& filename, bool doDump = true);
virtual void dumpJson(std::ostream& os) const { dumpJsonGen(os); }; // node specific fields virtual void dumpJson(std::ostream& os) const { dumpJsonGen(os); }; // node-specific fields
// Generated by 'astgen'. Dumps node-specific pointers and calls 'dumpJson()' of parent class // Generated by 'astgen'. Dumps node-specific pointers and calls 'dumpJson()' of parent class
// Note that we don't make it virtual as it would result in infinite recursion // Note that we don't make it virtual as it would result in infinite recursion
void dumpJsonGen(std::ostream& os) const {}; void dumpJsonGen(std::ostream& os) const {};

View File

@ -60,7 +60,7 @@ class HasherVisitor final : public VNVisitorConst {
VL_RESTORER(m_hash); VL_RESTORER(m_hash);
// Reset accumulator // Reset accumulator
m_hash = V3Hash{nodep->type()}; // Node type m_hash = V3Hash{nodep->type()}; // Node type
f(); // Node specific hash f(); // Node-specific hash
if (hashDType && nodep != nodep->dtypep()) if (hashDType && nodep != nodep->dtypep())
iterateConstNull(nodep->dtypep()); // Node dtype iterateConstNull(nodep->dtypep()); // Node dtype
if (hashChildren) iterateChildrenConst(nodep); // Children if (hashChildren) iterateChildrenConst(nodep); // Children
@ -74,7 +74,7 @@ class HasherVisitor final : public VNVisitorConst {
constexpr static bool HASH_DTYPE = true; constexpr static bool HASH_DTYPE = true;
constexpr static bool HASH_CHILDREN = true; constexpr static bool HASH_CHILDREN = true;
// Each visitor below contributes to the hash any node specific content // Each visitor below contributes to the hash any node-specific content
// that is not dependent on either of the following, as these are // that is not dependent on either of the following, as these are
// included by default by hashNode: // included by default by hashNode:
// - Node type (as given by AstNode::type()) // - Node type (as given by AstNode::type())

View File

@ -1024,7 +1024,7 @@ sub lint {
my $self = (ref $_[0] ? shift : $Self); my $self = (ref $_[0] ? shift : $Self);
my %param = (# my %param = (#
%{$self}, # Default arguments are from $self %{$self}, # Default arguments are from $self
# Lint specific default overrides # Lint-specific default overrides
make_main => 0, make_main => 0,
make_top_shell => 0, make_top_shell => 0,
verilator_flags2 => ["--lint-only"], verilator_flags2 => ["--lint-only"],