Unify code generation for trace declarations in both trace formats (#4612)

This patch adds some abstract enums to pass to the trace decl* APIs, so
the VCD/FST specific code can be kept in verilated_{vcd,fst}_*.cc, and
removed from V3Emit*. It also reworks the generation of the trace init
functions (those that call 'decl*' for the signals) such that the scope
hierarchy is traversed precisely once during initialization, which
simplifies the FST writer. This later change also has the side effect of
fixing tracing of nested interfaces when traced via an interface
reference - see the change in the expected t_interface_ref_trace - which
previously were missed.
This commit is contained in:
Geza Lore 2023-10-24 16:33:29 +01:00 committed by GitHub
parent 84125d7c92
commit 95c4ade718
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
69 changed files with 28535 additions and 28148 deletions

View File

@ -23,7 +23,6 @@
// clang-format off
#define __STDC_LIMIT_MACROS // UINT64_MAX
#include "verilated.h"
#include "verilated_fst_c.h"
@ -40,6 +39,7 @@
#include <algorithm>
#include <iterator>
#include <sstream>
#include <type_traits>
#if defined(_WIN32) && !defined(__MINGW32__) && !defined(__CYGWIN__)
# include <io.h>
@ -50,33 +50,10 @@
// clang-format on
//=============================================================================
// Check that vltscope_t matches fstScopeType
// Check that forward declared types matches the FST API types
static_assert(static_cast<int>(FST_ST_VCD_MODULE) == static_cast<int>(VLT_TRACE_SCOPE_MODULE),
"VLT_TRACE_SCOPE_MODULE mismatches");
static_assert(static_cast<int>(FST_ST_VCD_TASK) == static_cast<int>(VLT_TRACE_SCOPE_TASK),
"VLT_TRACE_SCOPE_TASK mismatches");
static_assert(static_cast<int>(FST_ST_VCD_FUNCTION) == static_cast<int>(VLT_TRACE_SCOPE_FUNCTION),
"VLT_TRACE_SCOPE_FUNCTION mismatches");
static_assert(static_cast<int>(FST_ST_VCD_BEGIN) == static_cast<int>(VLT_TRACE_SCOPE_BEGIN),
"VLT_TRACE_SCOPE_BEGIN mismatches");
static_assert(static_cast<int>(FST_ST_VCD_FORK) == static_cast<int>(VLT_TRACE_SCOPE_FORK),
"VLT_TRACE_SCOPE_FORK mismatches");
static_assert(static_cast<int>(FST_ST_VCD_GENERATE) == static_cast<int>(VLT_TRACE_SCOPE_GENERATE),
"VLT_TRACE_SCOPE_GENERATE mismatches");
static_assert(static_cast<int>(FST_ST_VCD_STRUCT) == static_cast<int>(VLT_TRACE_SCOPE_STRUCT),
"VLT_TRACE_SCOPE_STRUCT mismatches");
static_assert(static_cast<int>(FST_ST_VCD_UNION) == static_cast<int>(VLT_TRACE_SCOPE_UNION),
"VLT_TRACE_SCOPE_UNION mismatches");
static_assert(static_cast<int>(FST_ST_VCD_CLASS) == static_cast<int>(VLT_TRACE_SCOPE_CLASS),
"VLT_TRACE_SCOPE_CLASS mismatches");
static_assert(static_cast<int>(FST_ST_VCD_INTERFACE)
== static_cast<int>(VLT_TRACE_SCOPE_INTERFACE),
"VLT_TRACE_SCOPE_INTERFACE mismatches");
static_assert(static_cast<int>(FST_ST_VCD_PACKAGE) == static_cast<int>(VLT_TRACE_SCOPE_PACKAGE),
"VLT_TRACE_SCOPE_PACKAGE mismatches");
static_assert(static_cast<int>(FST_ST_VCD_PROGRAM) == static_cast<int>(VLT_TRACE_SCOPE_PROGRAM),
"VLT_TRACE_SCOPE_PROGRAM mismatches");
static_assert(std::is_same<vlFstHandle, fstHandle>::value, "vlFstHandle mismatch");
static_assert(std::is_same<vlFstEnumHandle, fstEnumHandle>::value, "vlFstHandle mismatch");
//=============================================================================
// Specialization of the generics for this trace format
@ -107,17 +84,8 @@ void VerilatedFst::open(const char* filename) VL_MT_SAFE_EXCLUDES(m_mutex) {
constDump(true); // First dump must contain the const signals
fullDump(true); // First dump must be full for fst
m_curScope.clear();
Super::traceInit();
// Clear the scope stack
auto it = m_curScope.begin();
while (it != m_curScope.end()) {
fstWriterSetUpscope(m_fst);
it = m_curScope.erase(it);
}
// convert m_code2symbol into an array for fast lookup
if (!m_symbolp) {
m_symbolp = new fstHandle[nextCode()]{0};
@ -155,99 +123,136 @@ void VerilatedFst::declDTypeEnum(int dtypenum, const char* name, uint32_t elemen
m_local2fstdtype[dtypenum] = enumNum;
}
void VerilatedFst::declare(uint32_t code, const char* name, int dtypenum, fstVarDir vardir,
fstVarType vartype, bool array, int arraynum, bool bussed, int msb,
int lsb) {
// TODO: should return std::optional<fstScopeType>, but I can't have C++17
static std::pair<bool, fstScopeType> toFstScopeType(VerilatedTracePrefixType type) {
switch (type) {
case VerilatedTracePrefixType::SCOPE_MODULE: return {true, FST_ST_VCD_MODULE};
case VerilatedTracePrefixType::SCOPE_INTERFACE: return {true, FST_ST_VCD_INTERFACE};
case VerilatedTracePrefixType::STRUCT_PACKED:
case VerilatedTracePrefixType::STRUCT_UNPACKED: return {true, FST_ST_VCD_STRUCT};
case VerilatedTracePrefixType::UNION_PACKED: return {true, FST_ST_VCD_UNION};
default: return {false, /* unused so whatever, just need a value */ FST_ST_VCD_SCOPE};
}
}
void VerilatedFst::pushPrefix(const std::string& name, VerilatedTracePrefixType type) {
const std::string newPrefix = m_prefixStack.back().first + name;
const auto pair = toFstScopeType(type);
const bool properScope = pair.first;
const fstScopeType scopeType = pair.second;
m_prefixStack.emplace_back(newPrefix + (properScope ? " " : ""), type);
if (properScope) {
const std::string scopeName = lastWord(newPrefix);
fstWriterSetScope(m_fst, scopeType, scopeName.c_str(), nullptr);
}
}
void VerilatedFst::popPrefix() {
const bool properScope = toFstScopeType(m_prefixStack.back().second).first;
if (properScope) fstWriterSetUpscope(m_fst);
m_prefixStack.pop_back();
assert(!m_prefixStack.empty());
}
void VerilatedFst::declare(uint32_t code, const char* name, int dtypenum,
VerilatedTraceSigDirection direction, VerilatedTraceSigKind kind,
VerilatedTraceSigType type, bool array, int arraynum, bool bussed,
int msb, int lsb) {
const int bits = ((msb > lsb) ? (msb - lsb) : (lsb - msb)) + 1;
const bool enabled = Super::declCode(code, name, bits, false);
const std::string hierarchicalName = m_prefixStack.back().first + name;
const bool enabled = Super::declCode(code, hierarchicalName, bits);
if (!enabled) return;
std::string nameasstr = namePrefix() + name;
std::istringstream nameiss{nameasstr};
std::istream_iterator<std::string> beg(nameiss);
std::istream_iterator<std::string> end;
std::list<std::string> tokens(beg, end); // Split name
std::string symbol_name{tokens.back()};
tokens.pop_back(); // Remove symbol name from hierarchy
std::string tmpModName;
// Find point where current and new scope diverge
auto cur_it = m_curScope.begin();
auto new_it = tokens.begin();
while (cur_it != m_curScope.end() && new_it != tokens.end()) {
if (*cur_it != *new_it) break;
++cur_it;
++new_it;
}
// Go back to the common point
while (cur_it != m_curScope.end()) {
fstWriterSetUpscope(m_fst);
cur_it = m_curScope.erase(cur_it);
}
// Follow the hierarchy of the new variable from the common scope point
while (new_it != tokens.end()) {
if ((new_it->back() & 0x80)) {
tmpModName = *new_it;
tmpModName.pop_back();
// If the scope ends with a non-ASCII character, it will be 0x80 + fstScopeType
fstWriterSetScope(m_fst, static_cast<fstScopeType>(new_it->back() & 0x7f),
tmpModName.c_str(), nullptr);
} else {
fstWriterSetScope(m_fst, FST_ST_VCD_SCOPE, new_it->c_str(), nullptr);
}
m_curScope.push_back(*new_it);
new_it = tokens.erase(new_it);
}
assert(hierarchicalName.rfind(' ') != std::string::npos);
std::stringstream name_ss;
name_ss << symbol_name;
name_ss << lastWord(hierarchicalName);
if (array) name_ss << "[" << arraynum << "]";
if (bussed) name_ss << " [" << msb << ":" << lsb << "]";
std::string name_str = name_ss.str();
const std::string name_str = name_ss.str();
if (dtypenum > 0) {
const fstEnumHandle enumNum = m_local2fstdtype[dtypenum];
fstWriterEmitEnumTableRef(m_fst, enumNum);
if (dtypenum > 0) fstWriterEmitEnumTableRef(m_fst, m_local2fstdtype[dtypenum]);
fstVarDir varDir;
switch (direction) {
case VerilatedTraceSigDirection::INOUT: varDir = FST_VD_INOUT; break;
case VerilatedTraceSigDirection::OUTPUT: varDir = FST_VD_OUTPUT; break;
case VerilatedTraceSigDirection::INPUT: varDir = FST_VD_INPUT; break;
case VerilatedTraceSigDirection::NONE: varDir = FST_VD_IMPLICIT; break;
}
fstVarType varType;
// Doubles have special decoding properties, so must indicate if a double
if (type == VerilatedTraceSigType::DOUBLE) {
if (kind == VerilatedTraceSigKind::PARAMETER) {
varType = FST_VT_VCD_REAL_PARAMETER;
} else {
varType = FST_VT_VCD_REAL;
}
}
// clang-format off
else if (kind == VerilatedTraceSigKind::PARAMETER) varType = FST_VT_VCD_PARAMETER;
else if (kind == VerilatedTraceSigKind::SUPPLY0) varType = FST_VT_VCD_SUPPLY0;
else if (kind == VerilatedTraceSigKind::SUPPLY1) varType = FST_VT_VCD_SUPPLY1;
else if (kind == VerilatedTraceSigKind::TRI) varType = FST_VT_VCD_TRI;
else if (kind == VerilatedTraceSigKind::TRI0) varType = FST_VT_VCD_TRI0;
else if (kind == VerilatedTraceSigKind::TRI1) varType = FST_VT_VCD_TRI1;
else if (kind == VerilatedTraceSigKind::WIRE) varType = FST_VT_VCD_WIRE;
//
else if (type == VerilatedTraceSigType::INTEGER) varType = FST_VT_VCD_INTEGER;
else if (type == VerilatedTraceSigType::BIT) varType = FST_VT_SV_BIT;
else if (type == VerilatedTraceSigType::LOGIC) varType = FST_VT_SV_LOGIC;
else if (type == VerilatedTraceSigType::INT) varType = FST_VT_SV_INT;
else if (type == VerilatedTraceSigType::SHORTINT) varType = FST_VT_SV_SHORTINT;
else if (type == VerilatedTraceSigType::LONGINT) varType = FST_VT_SV_LONGINT;
else if (type == VerilatedTraceSigType::BYTE) varType = FST_VT_SV_BYTE;
else if (type == VerilatedTraceSigType::EVENT) varType = FST_VT_VCD_EVENT;
else if (type == VerilatedTraceSigType::TIME) varType = FST_VT_VCD_TIME;
else { assert(0); /* Unreachable */ }
// clang-format on
const auto it = vlstd::as_const(m_code2symbol).find(code);
if (it == m_code2symbol.end()) { // New
m_code2symbol[code]
= fstWriterCreateVar(m_fst, vartype, vardir, bits, name_str.c_str(), 0);
= fstWriterCreateVar(m_fst, varType, varDir, bits, name_str.c_str(), 0);
} else { // Alias
fstWriterCreateVar(m_fst, vartype, vardir, bits, name_str.c_str(), it->second);
fstWriterCreateVar(m_fst, varType, varDir, bits, name_str.c_str(), it->second);
}
}
void VerilatedFst::declEvent(uint32_t code, uint32_t fidx, const char* name, int dtypenum,
fstVarDir vardir, fstVarType vartype, bool array, int arraynum) {
declare(code, name, dtypenum, vardir, vartype, array, arraynum, false, 0, 0);
VerilatedTraceSigDirection direction, VerilatedTraceSigKind kind,
VerilatedTraceSigType type, bool array, int arraynum) {
declare(code, name, dtypenum, direction, kind, type, array, arraynum, false, 0, 0);
}
void VerilatedFst::declBit(uint32_t code, uint32_t fidx, const char* name, int dtypenum,
fstVarDir vardir, fstVarType vartype, bool array, int arraynum) {
declare(code, name, dtypenum, vardir, vartype, array, arraynum, false, 0, 0);
VerilatedTraceSigDirection direction, VerilatedTraceSigKind kind,
VerilatedTraceSigType type, bool array, int arraynum) {
declare(code, name, dtypenum, direction, kind, type, array, arraynum, false, 0, 0);
}
void VerilatedFst::declBus(uint32_t code, uint32_t fidx, const char* name, int dtypenum,
fstVarDir vardir, fstVarType vartype, bool array, int arraynum, int msb,
VerilatedTraceSigDirection direction, VerilatedTraceSigKind kind,
VerilatedTraceSigType type, bool array, int arraynum, int msb,
int lsb) {
declare(code, name, dtypenum, vardir, vartype, array, arraynum, true, msb, lsb);
declare(code, name, dtypenum, direction, kind, type, array, arraynum, true, msb, lsb);
}
void VerilatedFst::declQuad(uint32_t code, uint32_t fidx, const char* name, int dtypenum,
fstVarDir vardir, fstVarType vartype, bool array, int arraynum,
int msb, int lsb) {
declare(code, name, dtypenum, vardir, vartype, array, arraynum, true, msb, lsb);
VerilatedTraceSigDirection direction, VerilatedTraceSigKind kind,
VerilatedTraceSigType type, bool array, int arraynum, int msb,
int lsb) {
declare(code, name, dtypenum, direction, kind, type, array, arraynum, true, msb, lsb);
}
void VerilatedFst::declArray(uint32_t code, uint32_t fidx, const char* name, int dtypenum,
fstVarDir vardir, fstVarType vartype, bool array, int arraynum,
int msb, int lsb) {
declare(code, name, dtypenum, vardir, vartype, array, arraynum, true, msb, lsb);
VerilatedTraceSigDirection direction, VerilatedTraceSigKind kind,
VerilatedTraceSigType type, bool array, int arraynum, int msb,
int lsb) {
declare(code, name, dtypenum, direction, kind, type, array, arraynum, true, msb, lsb);
}
void VerilatedFst::declDouble(uint32_t code, uint32_t fidx, const char* name, int dtypenum,
fstVarDir vardir, fstVarType vartype, bool array, int arraynum) {
declare(code, name, dtypenum, vardir, vartype, array, arraynum, false, 63, 0);
VerilatedTraceSigDirection direction, VerilatedTraceSigKind kind,
VerilatedTraceSigType type, bool array, int arraynum) {
declare(code, name, dtypenum, direction, kind, type, array, arraynum, false, 63, 0);
}
//=============================================================================

View File

@ -24,13 +24,14 @@
#include "verilated.h"
#include "verilated_trace.h"
#include "gtkwave/fstapi.h"
#include <list>
#include <map>
#include <string>
#include <vector>
typedef uint32_t vlFstHandle;
typedef uint32_t vlFstEnumHandle;
class VerilatedFstBuffer;
//=============================================================================
@ -49,18 +50,22 @@ private:
// FST specific internals
void* m_fst = nullptr;
std::map<uint32_t, fstHandle> m_code2symbol;
std::map<int, fstEnumHandle> m_local2fstdtype;
std::list<std::string> m_curScope;
fstHandle* m_symbolp = nullptr; // same as m_code2symbol, but as an array
std::map<uint32_t, vlFstHandle> m_code2symbol;
std::map<int, vlFstEnumHandle> m_local2fstdtype;
vlFstHandle* m_symbolp = nullptr; // same as m_code2symbol, but as an array
char* m_strbufp = nullptr; // String buffer long enough to hold maxBits() chars
bool m_useFstWriterThread = false; // Whether to use the separate FST writer thread
// Prefixes to add to signal names/scope types
std::vector<std::pair<std::string, VerilatedTracePrefixType>> m_prefixStack{
{"", VerilatedTracePrefixType::SCOPE_MODULE}};
// CONSTRUCTORS
VL_UNCOPYABLE(VerilatedFst);
void declare(uint32_t code, const char* name, int dtypenum, fstVarDir vardir,
fstVarType vartype, bool array, int arraynum, bool bussed, int msb, int lsb);
void declare(uint32_t code, const char* name, int dtypenum, VerilatedTraceSigDirection,
VerilatedTraceSigKind, VerilatedTraceSigType, bool array, int arraynum,
bool bussed, int msb, int lsb);
protected:
//=========================================================================
@ -101,18 +106,27 @@ public:
//=========================================================================
// Internal interface to Verilator generated code
void declEvent(uint32_t code, uint32_t fidx, const char* name, int dtypenum, fstVarDir vardir,
fstVarType vartype, bool array, int arraynum);
void declBit(uint32_t code, uint32_t fidx, const char* name, int dtypenum, fstVarDir vardir,
fstVarType vartype, bool array, int arraynum);
void declBus(uint32_t code, uint32_t fidx, const char* name, int dtypenum, fstVarDir vardir,
fstVarType vartype, bool array, int arraynum, int msb, int lsb);
void declQuad(uint32_t code, uint32_t fidx, const char* name, int dtypenum, fstVarDir vardir,
fstVarType vartype, bool array, int arraynum, int msb, int lsb);
void declArray(uint32_t code, uint32_t fidx, const char* name, int dtypenum, fstVarDir vardir,
fstVarType vartype, bool array, int arraynum, int msb, int lsb);
void declDouble(uint32_t code, uint32_t fidx, const char* name, int dtypenum, fstVarDir vardir,
fstVarType vartype, bool array, int arraynum);
void pushPrefix(const std::string&, VerilatedTracePrefixType);
void popPrefix();
void declEvent(uint32_t code, uint32_t fidx, const char* name, int dtypenum,
VerilatedTraceSigDirection, VerilatedTraceSigKind, VerilatedTraceSigType,
bool array, int arraynum);
void declBit(uint32_t code, uint32_t fidx, const char* name, int dtypenum,
VerilatedTraceSigDirection, VerilatedTraceSigKind, VerilatedTraceSigType,
bool array, int arraynum);
void declBus(uint32_t code, uint32_t fidx, const char* name, int dtypenum,
VerilatedTraceSigDirection, VerilatedTraceSigKind, VerilatedTraceSigType,
bool array, int arraynum, int msb, int lsb);
void declQuad(uint32_t code, uint32_t fidx, const char* name, int dtypenum,
VerilatedTraceSigDirection, VerilatedTraceSigKind, VerilatedTraceSigType,
bool array, int arraynum, int msb, int lsb);
void declArray(uint32_t code, uint32_t fidx, const char* name, int dtypenum,
VerilatedTraceSigDirection, VerilatedTraceSigKind, VerilatedTraceSigType,
bool array, int arraynum, int msb, int lsb);
void declDouble(uint32_t code, uint32_t fidx, const char* name, int dtypenum,
VerilatedTraceSigDirection, VerilatedTraceSigKind, VerilatedTraceSigType,
bool array, int arraynum);
void declDTypeEnum(int dtypenum, const char* name, uint32_t elements, unsigned int minValbits,
const char** itemNamesp, const char** itemValuesp);
@ -149,7 +163,7 @@ class VerilatedFstBuffer VL_NOT_FINAL {
// The FST file handle
void* const m_fst = m_owner.m_fst;
// code to fstHande map, as an array
const fstHandle* const m_symbolp = m_owner.m_symbolp;
const vlFstHandle* const m_symbolp = m_owner.m_symbolp;
// String buffer long enough to hold maxBits() chars
char* const m_strbufp = m_owner.m_strbufp;

View File

@ -25,7 +25,6 @@
// clang-format off
#include "verilated.h"
#include "verilated_trace_defs.h"
#include <bitset>
#include <condition_variable>
@ -46,6 +45,54 @@ class VerilatedTraceBuffer;
template <class T_Buffer>
class VerilatedTraceOffloadBuffer;
//=============================================================================
// Common enumerations
enum class VerilatedTracePrefixType : uint32_t {
// Note: Entries must match VTracePrefixType (by name, not necessarily by value)
ARRAY_PACKED,
ARRAY_UNPACKED,
SCOPE_MODULE,
SCOPE_INTERFACE,
STRUCT_PACKED,
STRUCT_UNPACKED,
UNION_PACKED
};
// Direction attribute for ports
enum class VerilatedTraceSigDirection : uint32_t {
NONE,
INPUT,
OUTPUT,
INOUT,
};
// Kind of signal. Similar to nettype but with a few more alternatives
enum class VerilatedTraceSigKind : uint32_t {
PARAMETER,
SUPPLY0,
SUPPLY1,
TRI,
TRI0,
TRI1,
WIRE,
VAR,
};
// Base data type of signal
enum class VerilatedTraceSigType : uint32_t {
DOUBLE,
INTEGER,
BIT,
LOGIC,
INT,
SHORTINT,
LONGINT,
BYTE,
EVENT,
TIME,
};
//=============================================================================
// Offloaded tracing
@ -229,9 +276,8 @@ private:
uint32_t m_nextCode = 0; // Next code number to assign
uint32_t m_numSignals = 0; // Number of distinct signals
uint32_t m_maxBits = 0; // Number of bits in the widest signal
std::vector<std::string> m_namePrefixStack{""}; // Path prefixes to add to signal names
// TODO: Should keep this as a Trie, that is how it's accessed all the time.
std::vector<std::pair<int, std::string>> m_dumpvars; // dumpvar() entries
char m_scopeEscape = '.';
double m_timeRes = 1e-9; // Time resolution (ns/ms etc)
double m_timeUnit = 1e-0; // Time units (ns/ms etc)
uint64_t m_timeLastDump = 0; // Last time we did a dump
@ -307,14 +353,7 @@ protected:
void traceInit() VL_MT_UNSAFE;
// Declare new signal and return true if enabled
bool declCode(uint32_t code, const char* namep, uint32_t bits, bool tri);
// Is this an escape?
bool isScopeEscape(char c) { return std::isspace(c) || c == m_scopeEscape; }
// Character that splits scopes. Note whitespace are ALWAYS escapes.
char scopeEscape() { return m_scopeEscape; }
// Prefix to assume in signal declarations
const std::string& namePrefix() const { return m_namePrefixStack.back(); }
bool declCode(uint32_t code, const std::string& declName, uint32_t bits);
void closeBase();
void flushBase();
@ -322,6 +361,13 @@ protected:
bool offload() const { return m_offload; }
bool parallel() const { return m_parallel; }
// Return last ' ' separated word. Assumes string does not end in ' '.
static std::string lastWord(const std::string& str) {
const size_t idx = str.rfind(' ');
if (idx == std::string::npos) return str;
return str.substr(idx + 1);
}
//=========================================================================
// Virtual functions to be provided by the format specific implementation
@ -375,11 +421,6 @@ public:
void addChgCb(dumpCb_t cb, uint32_t fidx, void* userp) VL_MT_SAFE;
void addChgCb(dumpOffloadCb_t cb, uint32_t fidx, void* userp) VL_MT_SAFE;
void addCleanupCb(cleanupCb_t cb, void* userp) VL_MT_SAFE;
void scopeEscape(char flag) { m_scopeEscape = flag; }
void pushNamePrefix(const std::string&);
void popNamePrefix(unsigned count = 1);
};
//=============================================================================

View File

@ -1,42 +0,0 @@
// -*- mode: C++; c-file-style: "cc-mode" -*-
//=============================================================================
//
// Code available from: https://verilator.org
//
// Copyright 2001-2023 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 types
///
/// This file is not part of the Verilated public-facing API.
/// It is only for internal use by Verilated tracing routines.
///
//=============================================================================
#ifndef VERILATOR_VERILATED_TRACE_DEFS_H_
#define VERILATOR_VERILATED_TRACE_DEFS_H_
// Verilator tracing scope types:
// The values should match FST_ST_VCD_* from fstScopeType in gtkwave/fstapi.h
// verilated_fst_c.cpp contains assertions to enforce this
enum VltTraceScope {
VLT_TRACE_SCOPE_MODULE = 0,
VLT_TRACE_SCOPE_TASK = 1,
VLT_TRACE_SCOPE_FUNCTION = 2,
VLT_TRACE_SCOPE_BEGIN = 3,
VLT_TRACE_SCOPE_FORK = 4,
VLT_TRACE_SCOPE_GENERATE = 5,
VLT_TRACE_SCOPE_STRUCT = 6,
VLT_TRACE_SCOPE_UNION = 7,
VLT_TRACE_SCOPE_CLASS = 8,
VLT_TRACE_SCOPE_INTERFACE = 9,
VLT_TRACE_SCOPE_PACKAGE = 10,
VLT_TRACE_SCOPE_PROGRAM = 11
};
#endif // guard

View File

@ -378,13 +378,12 @@ void VerilatedTrace<VL_SUB_T, VL_BUF_T>::traceInit() VL_MT_UNSAFE {
}
template <>
bool VerilatedTrace<VL_SUB_T, VL_BUF_T>::declCode(uint32_t code, const char* namep, uint32_t bits,
bool tri) {
bool VerilatedTrace<VL_SUB_T, VL_BUF_T>::declCode(uint32_t code, const std::string& declName,
uint32_t bits) {
if (VL_UNCOVERABLE(!code)) {
VL_FATAL_MT(__FILE__, __LINE__, "", "Internal: internal trace problem, code 0 is illegal");
}
// To keep it simple, this is O(enables * signals), but we expect few enables
std::string declName = namePrefix() + namep;
bool enabled = false;
if (m_dumpvars.empty()) enabled = true;
for (const auto& item : m_dumpvars) {
@ -410,10 +409,7 @@ bool VerilatedTrace<VL_SUB_T, VL_BUF_T>::declCode(uint32_t code, const char* nam
break;
}
// Note: The tri-state flag is not used by Verilator, but is here for
// compatibility with some foreign code.
int codesNeeded = VL_WORDS_I(bits);
if (tri) codesNeeded *= 2;
m_nextCode = std::max(m_nextCode, code + codesNeeded);
++m_numSignals;
m_maxBits = std::max(m_maxBits, bits);
@ -737,17 +733,6 @@ void VerilatedTrace<VL_SUB_T, VL_BUF_T>::addCleanupCb(cleanupCb_t cb, void* user
addCallbackRecord(m_cleanupCbs, CallbackRecord{cb, userp});
}
template <>
void VerilatedTrace<VL_SUB_T, VL_BUF_T>::pushNamePrefix(const std::string& prefix) {
m_namePrefixStack.push_back(m_namePrefixStack.back() + prefix);
}
template <>
void VerilatedTrace<VL_SUB_T, VL_BUF_T>::popNamePrefix(unsigned count) {
while (count--) m_namePrefixStack.pop_back();
assert(!m_namePrefixStack.empty());
}
//=========================================================================
// Primitives converting binary values to strings...

View File

@ -112,7 +112,19 @@ void VerilatedVcd::open(const char* filename) VL_MT_SAFE_EXCLUDES(m_mutex) {
openNextImp(m_rolloverSize != 0);
if (!isOpen()) return;
dumpHeader();
printStr("$version Generated by VerilatedVcd $end\n");
printStr("$timescale ");
printStr(timeResStr().c_str()); // lintok-begin-on-ref
printStr(" $end\n");
// Scope and signal definitions
assert(m_indent == 0);
++m_indent;
Super::traceInit();
--m_indent;
assert(m_indent == 0);
printStr("$enddefinitions $end\n\n\n");
// When using rollover, the first chunk contains the header only.
if (m_rolloverSize) openNextImp(true);
@ -176,49 +188,14 @@ bool VerilatedVcd::preChangeDump() {
void VerilatedVcd::emitTimeChange(uint64_t timeui) {
printStr("#");
printQuad(timeui);
const std::string str = std::to_string(timeui);
printStr(str.c_str());
printStr("\n");
}
void VerilatedVcd::makeNameMap() {
// Take signal information from each module and build m_namemapp
deleteNameMap();
m_namemapp = new NameMap;
Super::traceInit();
// Though not speced, it's illegal to generate a vcd with signals
// not under any module - it crashes at least two viewers.
// If no scope was specified, prefix everything with a "top"
// This comes from user instantiations with no name - IE Vtop("").
bool nullScope = false;
for (const auto& i : *m_namemapp) {
const std::string& hiername = i.first;
if (!hiername.empty() && hiername[0] == '\t') nullScope = true;
}
if (nullScope) {
NameMap* const newmapp = new NameMap;
for (const auto& i : *m_namemapp) {
const std::string& hiername = i.first;
const std::string& decl = i.second;
std::string newname{"top"};
if (hiername[0] != '\t') newname += ' ';
newname += hiername;
newmapp->emplace(newname, decl);
}
deleteNameMap();
m_namemapp = newmapp;
}
}
void VerilatedVcd::deleteNameMap() {
if (m_namemapp) VL_DO_CLEAR(delete m_namemapp, m_namemapp = nullptr);
}
VerilatedVcd::~VerilatedVcd() {
close();
if (m_wrBufp) VL_DO_CLEAR(delete[] m_wrBufp, m_wrBufp = nullptr);
deleteNameMap();
if (m_filep && m_fileNewed) VL_DO_CLEAR(delete m_filep, m_filep = nullptr);
if (parallel()) {
assert(m_numBuffers == m_freeBuffers.size());
@ -271,13 +248,6 @@ void VerilatedVcd::printStr(const char* str) {
}
}
void VerilatedVcd::printQuad(uint64_t n) {
constexpr size_t LEN_STR_QUAD = 40;
char buf[LEN_STR_QUAD];
VL_SNPRINTF(buf, LEN_STR_QUAD, "%" PRIu64, n);
printStr(buf);
}
void VerilatedVcd::bufferResize(size_t minsize) {
// minsize is size of largest write. We buffer at least 8 times as much data,
// writing when we are 3/4 full (with thus 2*minsize remaining free)
@ -326,127 +296,59 @@ void VerilatedVcd::bufferFlush() VL_MT_UNSAFE_ONE {
m_writep = m_wrBufp;
}
//=============================================================================
// VCD string code
char* VerilatedVcd::writeCode(char* writep, uint32_t code) {
*writep++ = static_cast<char>('!' + code % 94);
code /= 94;
while (code) {
--code;
*writep++ = static_cast<char>('!' + code % 94);
code /= 94;
}
return writep;
}
//=============================================================================
// Definitions
void VerilatedVcd::printIndent(int level_change) {
if (level_change < 0) m_modDepth += level_change;
assert(m_modDepth >= 0);
for (int i = 0; i < m_modDepth; i++) printStr(" ");
if (level_change > 0) m_modDepth += level_change;
if (level_change < 0) m_indent += level_change;
for (int i = 0; i < m_indent; i++) printStr(" ");
if (level_change > 0) m_indent += level_change;
}
void VerilatedVcd::dumpHeader() {
printStr("$version Generated by VerilatedVcd $end\n");
// Verilator used to put in a $date here. Although $date is shown in
// IEEE examples, and it is common in VCD writers, VCD readers don't
// seem to care about it. Thus, we omit the $date so artifacts are
// more likely to be reproducible. If use cases show up that require
// the $date command to be present, it could be re-added with support
// for the SOURCE_DATE_EPOCH hook.
printStr("$timescale ");
printStr(timeResStr().c_str()); // lintok-begin-on-ref
printStr(" $end\n");
makeNameMap();
// Signal header
assert(m_modDepth == 0);
printIndent(1);
printStr("\n");
// We detect the spaces in module names to determine hierarchy. This
// allows signals to be declared without fixed ordering, which is
// required as Verilog signals might be separately declared from
// SC module signals.
// Print the signal names
const char* lastName = "";
for (const auto& i : *m_namemapp) {
const std::string& hiernamestr = i.first;
const std::string& decl = i.second;
// Determine difference between the old and new names
const char* const hiername = hiernamestr.c_str();
const char* lp = lastName;
const char* np = hiername;
lastName = hiername;
// Skip common prefix, it must break at a space or tab
for (; *np && (*np == *lp); np++, lp++) {}
while (np != hiername && *np && *np != ' ' && *np != '\t') {
--np;
--lp;
}
// printf("hier %s\n lp=%s\n np=%s\n",hiername,lp,np);
// Any extra spaces in last name are scope ups we need to do
bool first = true;
for (; *lp; lp++) {
if (*lp == ' ' || (first && *lp != '\t')) {
printIndent(-1);
printStr("$upscope $end\n");
}
first = false;
}
// Any new spaces are scope downs we need to do
while (*np) {
if (*np == ' ') np++;
if (*np == '\t') break; // tab means signal name starts
printIndent(1);
printStr("$scope module ");
for (; *np && *np != ' ' && *np != '\t'; np++) {
if (*np == '[') {
printStr("[");
} else if (*np == ']') {
printStr("]");
} else {
*m_writep++ = *np;
}
}
printStr(" $end\n");
}
printIndent(0);
printStr(decl.c_str());
void VerilatedVcd::pushPrefix(const std::string& name, VerilatedTracePrefixType type) {
std::string newPrefix = m_prefixStack.back().first + name;
switch (type) {
case VerilatedTracePrefixType::SCOPE_MODULE:
case VerilatedTracePrefixType::SCOPE_INTERFACE:
case VerilatedTracePrefixType::STRUCT_PACKED:
case VerilatedTracePrefixType::STRUCT_UNPACKED:
case VerilatedTracePrefixType::UNION_PACKED: {
printIndent(1);
printStr("$scope module ");
const std::string n = lastWord(newPrefix);
printStr(n.c_str());
printStr(" $end\n");
newPrefix += ' ';
break;
}
default: break;
}
m_prefixStack.emplace_back(newPrefix, type);
}
while (m_modDepth > 1) {
void VerilatedVcd::popPrefix() {
switch (m_prefixStack.back().second) {
case VerilatedTracePrefixType::SCOPE_MODULE:
case VerilatedTracePrefixType::SCOPE_INTERFACE:
case VerilatedTracePrefixType::STRUCT_PACKED:
case VerilatedTracePrefixType::STRUCT_UNPACKED:
case VerilatedTracePrefixType::UNION_PACKED:
printIndent(-1);
printStr("$upscope $end\n");
break;
default: break;
}
printIndent(-1);
printStr("$enddefinitions $end\n\n\n");
assert(m_modDepth == 0);
// Reclaim storage
deleteNameMap();
m_prefixStack.pop_back();
assert(!m_prefixStack.empty());
}
void VerilatedVcd::declare(uint32_t code, const char* name, const char* wirep, bool array,
int arraynum, bool tri, bool bussed, int msb, int lsb) {
int arraynum, bool bussed, int msb, int lsb) {
const int bits = ((msb > lsb) ? (msb - lsb) : (lsb - msb)) + 1;
const bool enabled = Super::declCode(code, name, bits, tri);
const std::string hierarchicalName = m_prefixStack.back().first + name;
const bool enabled = Super::declCode(code, hierarchicalName, bits);
if (m_suffixes.size() <= nextCode() * VL_TRACE_SUFFIX_ENTRY_SIZE) {
m_suffixes.resize(nextCode() * VL_TRACE_SUFFIX_ENTRY_SIZE * 2, 0);
@ -459,90 +361,89 @@ void VerilatedVcd::declare(uint32_t code, const char* name, const char* wirep, b
if (!enabled) return;
// Split name into basename
// Spaces and tabs aren't legal in VCD signal names, so:
// Space separates each level of scope
// Tab separates final scope from signal name
// Tab sorts before spaces, so signals nicely will print before scopes
// Note the hiername may be nothing, if so we'll add "\t{name}"
std::string nameasstr = namePrefix() + name;
std::string hiername;
std::string basename;
for (const char* cp = nameasstr.c_str(); *cp; cp++) {
if (isScopeEscape(*cp)) {
// Ahh, we've just read a scope, not a basename
if (!hiername.empty()) hiername += " ";
hiername += basename;
basename = "";
} else {
basename += *cp;
}
// Create the VCD code and build the suffix array entry
char vcdCode[VL_TRACE_SUFFIX_ENTRY_SIZE];
{
// Render the VCD code
char* vcdCodeWritep = vcdCode;
uint32_t codeEnc = code;
do {
*vcdCodeWritep++ = static_cast<char>('!' + codeEnc % 94);
codeEnc /= 94;
} while (codeEnc--);
*vcdCodeWritep = '\0';
const size_t vcdCodeLength = vcdCodeWritep - vcdCode;
assert(vcdCodeLength <= VL_TRACE_MAX_VCD_CODE_SIZE);
// Build suffix array entry
char* const entryBeginp = &m_suffixes[code * VL_TRACE_SUFFIX_ENTRY_SIZE];
entryBeginp[0] = ' '; // Separator
// 1 bit values don't have a ' ' separator between value and string code
char* entryWritep = bits == 1 ? entryBeginp : entryBeginp + 1;
// Use memcpy as we know the size, and strcpy is flagged unsafe
std::memcpy(entryWritep, vcdCode, vcdCodeLength);
entryWritep += vcdCodeLength;
// Line terminator
*entryWritep++ = '\n';
// Set length of suffix (used to increment write pointer)
assert(entryWritep <= entryBeginp + VL_TRACE_SUFFIX_ENTRY_SIZE - 1);
entryBeginp[VL_TRACE_SUFFIX_ENTRY_SIZE - 1] = static_cast<char>(entryWritep - entryBeginp);
}
hiername += "\t" + basename;
// Print reference
// Assemble the declaration
std::string decl = "$var ";
decl += wirep; // usually "wire"
constexpr size_t bufsize = 1000;
char buf[bufsize];
VL_SNPRINTF(buf, bufsize, " %2d ", bits);
decl += buf;
// Add string code to decl
char* const endp = writeCode(buf, code);
*endp = '\0';
decl += buf;
// Build suffix array entry
char* const entryp = &m_suffixes[code * VL_TRACE_SUFFIX_ENTRY_SIZE];
const size_t length = endp - buf;
assert(length <= VL_TRACE_MAX_VCD_CODE_SIZE);
// 1 bit values don't have a ' ' separator between value and string code
const bool isBit = bits == 1;
entryp[0] = ' '; // Separator
// Use memcpy as we checked size above, and strcpy is flagged unsafe
std::memcpy(entryp + !isBit, buf,
std::strlen(buf)); // Code (overwrite separator if isBit)
entryp[length + !isBit] = '\n'; // Replace '\0' with line termination '\n'
// Set length of suffix (used to increment write pointer)
entryp[VL_TRACE_SUFFIX_ENTRY_SIZE - 1] = static_cast<char>(length + !isBit + 1);
decl += " ";
decl += basename;
decl += wirep;
decl += ' ';
decl += std::to_string(bits);
decl += ' ';
decl += vcdCode;
decl += ' ';
decl += lastWord(hierarchicalName);
if (array) {
VL_SNPRINTF(buf, bufsize, "[%d]", arraynum);
decl += buf;
hiername += buf;
decl += '[';
decl += std::to_string(arraynum);
decl += ']';
}
if (bussed) {
VL_SNPRINTF(buf, bufsize, " [%d:%d]", msb, lsb);
decl += buf;
decl += " [";
decl += std::to_string(msb);
decl += ':';
decl += std::to_string(lsb);
decl += ']';
}
decl += " $end\n";
m_namemapp->emplace(hiername, decl);
printIndent(0);
printStr(decl.c_str());
}
void VerilatedVcd::declEvent(uint32_t code, uint32_t fidx, const char* name, bool array,
int arraynum) {
declare(code, name, "event", array, arraynum, false, false, 0, 0);
void VerilatedVcd::declEvent(uint32_t code, uint32_t fidx, const char* name, int dtypenum,
VerilatedTraceSigDirection, VerilatedTraceSigKind,
VerilatedTraceSigType, bool array, int arraynum) {
declare(code, name, "event", array, arraynum, false, 0, 0);
}
void VerilatedVcd::declBit(uint32_t code, uint32_t fidx, const char* name, bool array,
int arraynum) {
declare(code, name, "wire", array, arraynum, false, false, 0, 0);
void VerilatedVcd::declBit(uint32_t code, uint32_t fidx, const char* name, int dtypenum,
VerilatedTraceSigDirection, VerilatedTraceSigKind,
VerilatedTraceSigType, bool array, int arraynum) {
declare(code, name, "wire", array, arraynum, false, 0, 0);
}
void VerilatedVcd::declBus(uint32_t code, uint32_t fidx, const char* name, bool array,
int arraynum, int msb, int lsb) {
declare(code, name, "wire", array, arraynum, false, true, msb, lsb);
void VerilatedVcd::declBus(uint32_t code, uint32_t fidx, const char* name, int dtypenum,
VerilatedTraceSigDirection, VerilatedTraceSigKind,
VerilatedTraceSigType, bool array, int arraynum, int msb, int lsb) {
declare(code, name, "wire", array, arraynum, true, msb, lsb);
}
void VerilatedVcd::declQuad(uint32_t code, uint32_t fidx, const char* name, bool array,
int arraynum, int msb, int lsb) {
declare(code, name, "wire", array, arraynum, false, true, msb, lsb);
void VerilatedVcd::declQuad(uint32_t code, uint32_t fidx, const char* name, int dtypenum,
VerilatedTraceSigDirection, VerilatedTraceSigKind,
VerilatedTraceSigType, bool array, int arraynum, int msb, int lsb) {
declare(code, name, "wire", array, arraynum, true, msb, lsb);
}
void VerilatedVcd::declArray(uint32_t code, uint32_t fidx, const char* name, bool array,
int arraynum, int msb, int lsb) {
declare(code, name, "wire", array, arraynum, false, true, msb, lsb);
void VerilatedVcd::declArray(uint32_t code, uint32_t fidx, const char* name, int dtypenum,
VerilatedTraceSigDirection, VerilatedTraceSigKind,
VerilatedTraceSigType, bool array, int arraynum, int msb, int lsb) {
declare(code, name, "wire", array, arraynum, true, msb, lsb);
}
void VerilatedVcd::declDouble(uint32_t code, uint32_t fidx, const char* name, bool array,
int arraynum) {
declare(code, name, "real", array, arraynum, false, false, 63, 0);
void VerilatedVcd::declDouble(uint32_t code, uint32_t fidx, const char* name, int dtypenum,
VerilatedTraceSigDirection, VerilatedTraceSigKind,
VerilatedTraceSigType, bool array, int arraynum) {
declare(code, name, "real", array, arraynum, false, 63, 0);
}
//=============================================================================

View File

@ -24,7 +24,6 @@
#include "verilated.h"
#include "verilated_trace.h"
#include <map>
#include <string>
#include <vector>
@ -51,7 +50,7 @@ private:
bool m_isOpen = false; // True indicates open file
std::string m_filename; // Filename we're writing to (if open)
uint64_t m_rolloverSize = 0; // File size to rollover at
int m_modDepth = 0; // Depth of module hierarchy
unsigned m_indent = 0; // Indentation depth
char* m_wrBufp; // Output buffer
char* m_wrFlushp; // Output buffer flush trigger location
@ -62,8 +61,9 @@ private:
std::vector<char> m_suffixes; // VCD line end string codes + metadata
using NameMap = std::map<const std::string, const std::string>;
NameMap* m_namemapp = nullptr; // List of names for the header
// Prefixes to add to signal names/scope types
std::vector<std::pair<std::string, VerilatedTracePrefixType>> m_prefixStack{
{"", VerilatedTracePrefixType::SCOPE_MODULE}};
// Vector of free trace buffers as (pointer, size) pairs.
std::vector<std::pair<char*, size_t>> m_freeBuffers;
@ -79,18 +79,10 @@ private:
void openNextImp(bool incFilename);
void closePrev();
void closeErr();
void makeNameMap();
void deleteNameMap();
void printIndent(int level_change);
void printStr(const char* str);
void printQuad(uint64_t n);
void printTime(uint64_t timeui);
void declare(uint32_t code, const char* name, const char* wirep, bool array, int arraynum,
bool tri, bool bussed, int msb, int lsb);
void dumpHeader();
static char* writeCode(char* writep, uint32_t code);
bool bussed, int msb, int lsb);
// CONSTRUCTORS
VL_UNCOPYABLE(VerilatedVcd);
@ -140,15 +132,27 @@ public:
//=========================================================================
// Internal interface to Verilator generated code
void declEvent(uint32_t code, uint32_t fidx, const char* name, bool array, int arraynum);
void declBit(uint32_t code, uint32_t fidx, const char* name, bool array, int arraynum);
void declBus(uint32_t code, uint32_t fidx, const char* name, bool array, int arraynum, int msb,
int lsb);
void declQuad(uint32_t code, uint32_t fidx, const char* name, bool array, int arraynum,
int msb, int lsb);
void declArray(uint32_t code, uint32_t fidx, const char* name, bool array, int arraynum,
int msb, int lsb);
void declDouble(uint32_t code, uint32_t fidx, const char* name, bool array, int arraynum);
void pushPrefix(const std::string&, VerilatedTracePrefixType);
void popPrefix();
void declEvent(uint32_t code, uint32_t fidx, const char* name, int dtypenum,
VerilatedTraceSigDirection, VerilatedTraceSigKind, VerilatedTraceSigType,
bool array, int arraynum);
void declBit(uint32_t code, uint32_t fidx, const char* name, int dtypenum,
VerilatedTraceSigDirection, VerilatedTraceSigKind, VerilatedTraceSigType,
bool array, int arraynum);
void declBus(uint32_t code, uint32_t fidx, const char* name, int dtypenum,
VerilatedTraceSigDirection, VerilatedTraceSigKind, VerilatedTraceSigType,
bool array, int arraynum, int msb, int lsb);
void declQuad(uint32_t code, uint32_t fidx, const char* name, int dtypenum,
VerilatedTraceSigDirection, VerilatedTraceSigKind, VerilatedTraceSigType,
bool array, int arraynum, int msb, int lsb);
void declArray(uint32_t code, uint32_t fidx, const char* name, int dtypenum,
VerilatedTraceSigDirection, VerilatedTraceSigKind, VerilatedTraceSigType,
bool array, int arraynum, int msb, int lsb);
void declDouble(uint32_t code, uint32_t fidx, const char* name, int dtypenum,
VerilatedTraceSigDirection, VerilatedTraceSigKind, VerilatedTraceSigType,
bool array, int arraynum);
};
#ifndef DOXYGEN

View File

@ -675,6 +675,39 @@ public:
default: return false;
}
}
const char* traceSigType() const {
// VerilatedTraceSigType to used in trace signal declaration
static const char* const lut[] = {
/* UNKNOWN: */ "", // Should not be traced
/* BIT: */ "BIT",
/* BYTE: */ "BYTE",
/* CHANDLE: */ "",
/* EVENT: */ "EVENT",
/* INT: */ "INT",
/* INTEGER: */ "INTEGER",
/* LOGIC: */ "LOGIC",
/* LONGINT: */ "LONGINT",
/* DOUBLE: */ "DOUBLE",
/* SHORTINT: */ "SHORTINT",
/* TIME: */ "TIME",
/* STRING: */ "",
/* UNTYPED: */ "", // Should not be traced
/* SCOPEPTR: */ "", // Should not be traced
/* CHARPTR: */ "", // Should not be traced
/* MTASKSTATE: */ "", // Should not be traced
/* TRIGGERVEC: */ "", // Should not be traced
/* DELAY_SCHEDULER: */ "", // Should not be traced
/* TRIGGER_SCHEDULER: */ "", // Should not be traced
/* DYNAMIC_TRIGGER_SCHEDULER: */ "", // Should not be traced
/* FORK_SYNC: */ "", // Should not be traced
/* PROCESS_REFERENCE: */ "", // Should not be traced
/* UINT32: */ "BIT",
/* UINT64: */ "BIT",
/* LOGIC_IMPLICIT: */ "", // Should not be traced
};
return lut[m_e];
}
};
constexpr bool operator==(const VBasicDTypeKwd& lhs, const VBasicDTypeKwd& rhs) VL_MT_SAFE {
return lhs.m_e == rhs.m_e;
@ -873,6 +906,32 @@ public:
return (m_e == VAR || m_e == GPARAM || m_e == LPARAM || m_e == PORT || m_e == WIRE
|| m_e == TRI0 || m_e == TRI1);
}
const char* traceSigKind() const {
// VerilatedTraceSigKind to used in trace signal declaration
static const char* const lut[] = {
/* UNKNOWN: */ "", // Should not be traced
/* GPARAM: */ "PARAMETER",
/* LPARAM: */ "PARAMETER",
/* GENVAR: */ "PARAMETER",
/* VAR: */ "VAR",
/* SUPPLY0: */ "SUPPLY0",
/* SUPPLY1: */ "SUPPLY1",
/* WIRE: */ "WIRE",
/* WREAL: */ "WIRE",
/* TRIWIRE: */ "TRI",
/* TRI0: */ "TRI0",
/* TRI1: */ "TRI1",
/* PORT: */ "WIRE",
/* BLOCKTEMP: */ "VAR",
/* MODULETEMP: */ "VAR",
/* STMTTEMP: */ "VAR",
/* XTEMP: */ "VAR",
/* IFACEREF: */ "", // Should not be traced directly
/* MEMBER: */ "VAR",
};
return lut[m_e];
}
};
constexpr bool operator==(const VVarType& lhs, const VVarType& rhs) VL_MT_SAFE {
return lhs.m_e == rhs.m_e;
@ -1277,6 +1336,45 @@ inline std::ostream& operator<<(std::ostream& os, const VTraceType& rhs) {
return os << rhs.ascii();
}
//######################################################################
class VTracePrefixType final {
public:
enum en : uint8_t {
// Note: Entries must match VerilatedTracePrefixType
ARRAY_PACKED,
ARRAY_UNPACKED,
SCOPE_MODULE,
SCOPE_INTERFACE,
STRUCT_PACKED,
STRUCT_UNPACKED,
UNION_PACKED,
};
enum en m_e;
// cppcheck-suppress noExplicitConstructor
constexpr VTracePrefixType(en _e)
: m_e{_e} {}
constexpr operator en() const { return m_e; }
const char* ascii() const {
static const char* const names[]
= {"ARRAY_PACKED", "ARRAY_UNPACKED", "SCOPE_MODULE", "SCOPE_INTERFACE",
"STRUCT_PACKED", "STRUCT_UNPACKED", "UNION_PACKED"};
return names[m_e];
}
};
constexpr bool operator==(const VTracePrefixType& lhs, const VTracePrefixType& rhs) {
return lhs.m_e == rhs.m_e;
}
constexpr bool operator==(const VTracePrefixType& lhs, VTracePrefixType::en rhs) {
return lhs.m_e == rhs;
}
constexpr bool operator==(VTracePrefixType::en lhs, const VTracePrefixType& rhs) {
return lhs == rhs.m_e;
}
inline std::ostream& operator<<(std::ostream& os, const VTracePrefixType& rhs) {
return os << rhs.ascii();
}
// ######################################################################
class VCastable final {

View File

@ -773,7 +773,7 @@ class AstCell final : public AstNode {
// @astgen op1 := pinsp : List[AstPin] // List of port assignments
// @astgen op2 := paramsp : List[AstPin] // List of parameter assignments
// @astgen op3 := rangep : Optional[AstRange] // Range for arrayed instances
// @astgen op4 := intfRefsp : List[AstIntfRef] // List of interface references
// @astgen op4 := intfRefsp : List[AstIntfRef] // List of interface references, for tracing
FileLine* m_modNameFileline; // Where module the cell instances token was
string m_name; // Cell name
string m_origName; // Original name before dot addition
@ -1673,7 +1673,6 @@ class AstVar final : public AstNode {
VVarType m_varType; // Type of variable
VDirection m_direction; // Direction input/output etc
VDirection m_declDirection; // Declared direction input/output etc
VBasicDTypeKwd m_declKwd; // Keyword at declaration time
VLifetime m_lifetime; // Lifetime
VVarAttrClocker m_attrClocker;
MTaskIdSet m_mtaskIds; // MTaskID's that read or write this var
@ -1780,11 +1779,6 @@ public:
combineType(type);
childDTypep(dtp); // Only for parser
dtypep(nullptr); // V3Width will resolve
if (dtp->basicp()) {
m_declKwd = dtp->basicp()->keyword();
} else {
m_declKwd = VBasicDTypeKwd::LOGIC;
}
}
AstVar(FileLine* fl, VVarType type, const string& name, AstNodeDType* dtp)
: ASTGEN_SUPER_Var(fl)
@ -1794,11 +1788,6 @@ public:
combineType(type);
UASSERT(dtp, "AstVar created with no dtype");
dtypep(dtp);
if (dtp->basicp()) {
m_declKwd = dtp->basicp()->keyword();
} else {
m_declKwd = VBasicDTypeKwd::LOGIC;
}
}
AstVar(FileLine* fl, VVarType type, const string& name, VFlagLogicPacked, int wantwidth)
: ASTGEN_SUPER_Var(fl)
@ -1807,7 +1796,6 @@ public:
init();
combineType(type);
dtypeSetLogicSized(wantwidth, VSigning::UNSIGNED);
m_declKwd = VBasicDTypeKwd::LOGIC;
}
AstVar(FileLine* fl, VVarType type, const string& name, VFlagBitPacked, int wantwidth)
: ASTGEN_SUPER_Var(fl)
@ -1816,7 +1804,6 @@ public:
init();
combineType(type);
dtypeSetBitSized(wantwidth, VSigning::UNSIGNED);
m_declKwd = VBasicDTypeKwd::BIT;
}
AstVar(FileLine* fl, VVarType type, const string& name, AstVar* examplep)
: ASTGEN_SUPER_Var(fl)
@ -1826,7 +1813,6 @@ public:
combineType(type);
if (examplep->childDTypep()) childDTypep(examplep->childDTypep()->cloneTree(true));
dtypeFrom(examplep);
m_declKwd = examplep->declKwd();
}
ASTGEN_MEMBERS_AstVar;
void dump(std::ostream& str) const override;
@ -1854,7 +1840,6 @@ public:
m_tristate = false;
m_direction = VDirection::INPUT;
}
VBasicDTypeKwd declKwd() const { return m_declKwd; }
string scType() const; // Return SysC type: bool, uint32_t, uint64_t, sc_bv
// Return C /*public*/ type for argument: bool, uint32_t, uint64_t, etc.
string cPubArgType(bool named, bool forReturn) const;
@ -3199,7 +3184,6 @@ private:
const VNumRange m_arrayRange; // Property of var the trace details
const uint32_t m_codeInc; // Code increment
const VVarType m_varType; // Type of variable (for localparam vs. param)
const VBasicDTypeKwd m_declKwd; // Keyword at declaration time
const VDirection m_declDirection; // Declared direction input/output etc
public:
AstTraceDecl(FileLine* fl, const string& showname,
@ -3213,7 +3197,6 @@ public:
((arrayRange.ranged() ? arrayRange.elements() : 1) * valuep->dtypep()->widthWords()
* (VL_EDATASIZE / 32))) // A code is always 32-bits
, m_varType{varp->varType()}
, m_declKwd{varp->declKwd()}
, m_declDirection{varp->declDirection()} {
dtypeFrom(valuep);
this->valuep(valuep);
@ -3235,7 +3218,6 @@ public:
const VNumRange& bitRange() const { return m_bitRange; }
const VNumRange& arrayRange() const { return m_arrayRange; }
VVarType varType() const { return m_varType; }
VBasicDTypeKwd declKwd() const { return m_declKwd; }
VDirection declDirection() const { return m_declDirection; }
};
class AstTraceInc final : public AstNodeStmt {
@ -3280,25 +3262,25 @@ public:
VTraceType traceType() const { return m_traceType; }
uint32_t baseCode() const { return m_baseCode; }
};
class AstTracePopNamePrefix final : public AstNodeStmt {
const unsigned m_count; // How many levels to pop
class AstTracePopPrefix final : public AstNodeStmt {
public:
AstTracePopNamePrefix(FileLine* fl, unsigned count)
: ASTGEN_SUPER_TracePopNamePrefix(fl)
, m_count{count} {}
ASTGEN_MEMBERS_AstTracePopNamePrefix;
AstTracePopPrefix(FileLine* fl)
: ASTGEN_SUPER_TracePopPrefix(fl) {}
ASTGEN_MEMBERS_AstTracePopPrefix;
bool same(const AstNode* samep) const override { return false; }
unsigned count() const { return m_count; }
};
class AstTracePushNamePrefix final : public AstNodeStmt {
class AstTracePushPrefix final : public AstNodeStmt {
const string m_prefix; // Prefix to add to signal names
const VTracePrefixType m_prefixType; // Type of prefix being pushed
public:
AstTracePushNamePrefix(FileLine* fl, const string& prefix)
: ASTGEN_SUPER_TracePushNamePrefix(fl)
, m_prefix{prefix} {}
ASTGEN_MEMBERS_AstTracePushNamePrefix;
AstTracePushPrefix(FileLine* fl, const string& prefix, VTracePrefixType prefixType)
: ASTGEN_SUPER_TracePushPrefix(fl)
, m_prefix{prefix}
, m_prefixType{prefixType} {}
ASTGEN_MEMBERS_AstTracePushPrefix;
bool same(const AstNode* samep) const override { return false; }
string prefix() const { return m_prefix; }
VTracePrefixType prefixType() const { return m_prefixType; }
};
class AstUCStmt final : public AstNodeStmt {
// User $c statement

View File

@ -633,97 +633,67 @@ class EmitCTrace final : EmitCFunc {
void emitTraceInitOne(AstTraceDecl* nodep, int enumNum) {
if (nodep->dtypep()->basicp()->isDouble()) {
puts("tracep->declDouble");
puts("tracep->declDouble(");
} else if (nodep->isWide()) {
puts("tracep->declArray");
puts("tracep->declArray(");
} else if (nodep->isQuad()) {
puts("tracep->declQuad");
puts("tracep->declQuad(");
} else if (nodep->bitRange().ranged()) {
puts("tracep->declBus");
puts("tracep->declBus(");
} else if (nodep->dtypep()->basicp()->isEvent()) {
puts("tracep->declEvent");
puts("tracep->declEvent(");
} else {
puts("tracep->declBit");
puts("tracep->declBit(");
}
puts("(c+" + cvtToStr(nodep->code()));
// Code
puts("c+" + cvtToStr(nodep->code()));
if (nodep->arrayRange().ranged()) puts("+i*" + cvtToStr(nodep->widthWords()));
// Function index
puts(",");
puts(cvtToStr(nodep->fidx()));
// Name
puts(",");
putsQuoted(VIdProtect::protectWordsIf(nodep->showname(), nodep->protect()));
// Enum number
puts("," + cvtToStr(enumNum));
// Direction
if (v3Global.opt.traceFormat().fst()) {
puts("," + cvtToStr(enumNum));
// fstVarDir
if (nodep->declDirection().isInoutish()) {
puts(",FST_VD_INOUT");
} else if (nodep->declDirection().isWritable()) {
puts(",FST_VD_OUTPUT");
} else if (nodep->declDirection().isNonOutput()) {
puts(",FST_VD_INPUT");
} else {
puts(", FST_VD_IMPLICIT");
}
//
// fstVarType
const VVarType vartype = nodep->varType();
const VBasicDTypeKwd kwd = nodep->declKwd();
string fstvt;
// Doubles have special decoding properties, so must indicate if a double
if (nodep->dtypep()->basicp()->isDouble()) {
if (vartype.isParam()) {
fstvt = "FST_VT_VCD_REAL_PARAMETER";
} else {
fstvt = "FST_VT_VCD_REAL";
}
}
// clang-format off
else if (vartype == VVarType::GPARAM) { fstvt = "FST_VT_VCD_PARAMETER"; }
else if (vartype == VVarType::LPARAM) { fstvt = "FST_VT_VCD_PARAMETER"; }
else if (vartype == VVarType::SUPPLY0) { fstvt = "FST_VT_VCD_SUPPLY0"; }
else if (vartype == VVarType::SUPPLY1) { fstvt = "FST_VT_VCD_SUPPLY1"; }
else if (vartype == VVarType::TRI0) { fstvt = "FST_VT_VCD_TRI0"; }
else if (vartype == VVarType::TRI1) { fstvt = "FST_VT_VCD_TRI1"; }
else if (vartype == VVarType::TRIWIRE) { fstvt = "FST_VT_VCD_TRI"; }
else if (vartype == VVarType::WIRE) { fstvt = "FST_VT_VCD_WIRE"; }
else if (vartype == VVarType::PORT) { fstvt = "FST_VT_VCD_WIRE"; }
//
else if (kwd == VBasicDTypeKwd::INTEGER) { fstvt = "FST_VT_VCD_INTEGER"; }
else if (kwd == VBasicDTypeKwd::BIT) { fstvt = "FST_VT_SV_BIT"; }
else if (kwd == VBasicDTypeKwd::LOGIC) { fstvt = "FST_VT_SV_LOGIC"; }
else if (kwd == VBasicDTypeKwd::INT) { fstvt = "FST_VT_SV_INT"; }
else if (kwd == VBasicDTypeKwd::SHORTINT) { fstvt = "FST_VT_SV_SHORTINT"; }
else if (kwd == VBasicDTypeKwd::LONGINT) { fstvt = "FST_VT_SV_LONGINT"; }
else if (kwd == VBasicDTypeKwd::BYTE) { fstvt = "FST_VT_SV_BYTE"; }
else if (kwd == VBasicDTypeKwd::EVENT) { fstvt = "FST_VT_VCD_EVENT"; }
else { fstvt = "FST_VT_SV_BIT"; }
// clang-format on
//
// Not currently supported
// FST_VT_VCD_PORT
// FST_VT_VCD_SHORTREAL
// FST_VT_VCD_REALTIME
// FST_VT_VCD_SPARRAY
// FST_VT_VCD_TRIAND
// FST_VT_VCD_TRIOR
// FST_VT_VCD_TRIREG
// FST_VT_VCD_WAND
// FST_VT_VCD_WOR
// FST_VT_SV_ENUM
// FST_VT_GEN_STRING
puts("," + fstvt);
if (nodep->declDirection().isInoutish()) {
puts(", VerilatedTraceSigDirection::INOUT");
} else if (nodep->declDirection().isWritable()) {
puts(", VerilatedTraceSigDirection::OUTPUT");
} else if (nodep->declDirection().isNonOutput()) {
puts(", VerilatedTraceSigDirection::INPUT");
} else {
puts(", VerilatedTraceSigDirection::NONE");
}
// Range
// Kind
puts(", VerilatedTraceSigKind::");
puts(nodep->varType().traceSigKind());
// Type
puts(", VerilatedTraceSigType::");
puts(nodep->dtypep()->basicp()->keyword().traceSigType());
// Array range
if (nodep->arrayRange().ranged()) {
puts(", true,(i+" + cvtToStr(nodep->arrayRange().lo()) + ")");
} else {
puts(", false,-1");
}
// Bit range
if (!nodep->dtypep()->basicp()->isDouble() && nodep->bitRange().ranged()) {
puts(", " + cvtToStr(nodep->bitRange().left()) + ","
+ cvtToStr(nodep->bitRange().right()));
}
//
puts(");");
}
@ -861,15 +831,15 @@ class EmitCTrace final : EmitCFunc {
EmitCFunc::visit(nodep);
}
void visit(AstTracePushNamePrefix* nodep) override {
puts("tracep->pushNamePrefix(");
void visit(AstTracePushPrefix* nodep) override {
puts("tracep->pushPrefix(");
putsQuoted(VIdProtect::protectWordsIf(nodep->prefix(), nodep->protect()));
puts(", VerilatedTracePrefixType::");
puts(nodep->prefixType().ascii());
puts(");\n");
}
void visit(AstTracePopNamePrefix* nodep) override { //
puts("tracep->popNamePrefix(");
puts(cvtToStr(nodep->count()));
puts(");\n");
void visit(AstTracePopPrefix* nodep) override { //
puts("tracep->popPrefix();\n");
}
void visit(AstTraceDecl* nodep) override {
const int enumNum = emitTraceDeclDType(nodep->dtypep());

View File

@ -517,11 +517,10 @@ class EmitCModel final : public EmitCFunc {
"0.\");\n");
puts("}\n");
puts("vlSymsp->__Vm_baseCode = code;\n");
puts("tracep->scopeEscape(' ');\n");
puts("tracep->pushNamePrefix(std::string{vlSymsp->name()} + ' ');\n");
puts("tracep->pushPrefix(std::string{vlSymsp->name()}, "
"VerilatedTracePrefixType::SCOPE_MODULE);\n");
puts(topModNameProtected + "__" + protect("trace_init_top") + "(vlSelf, tracep);\n");
puts("tracep->popNamePrefix();\n");
puts("tracep->scopeEscape('.');\n"); // Restore so later traced files won't break
puts("tracep->popPrefix();\n");
puts("}\n");
// Forward declaration

View File

@ -51,30 +51,25 @@ private:
m_scope += "__DOT__" + nodep->name();
}
if (VN_IS(nodep->modp(), Iface)) {
nodep->addIntfRefsp(new AstIntfRef{nodep->fileline(), m_scope});
}
{
AstNodeModule* const modp = nodep->modp();
// Pass Cell pointers down to the next module
for (AstPin* pinp = nodep->pinsp(); pinp; pinp = VN_AS(pinp->nextp(), Pin)) {
AstVar* const varp = pinp->modVarp();
const AstVarRef* const varrefp = VN_CAST(pinp->exprp(), VarRef);
if (!varrefp) continue;
const AstVar* const fromVarp = varrefp->varp();
const AstIfaceRefDType* const irdtp = VN_CAST(fromVarp->dtypep(), IfaceRefDType);
if (!irdtp) continue;
AstNodeModule* const modp = nodep->modp();
// Pass Cell pointers down to the next module
for (AstPin* pinp = nodep->pinsp(); pinp; pinp = VN_AS(pinp->nextp(), Pin)) {
AstVar* const varp = pinp->modVarp();
const AstVarRef* const varrefp = VN_CAST(pinp->exprp(), VarRef);
if (!varrefp) continue;
const AstVar* const fromVarp = varrefp->varp();
const AstIfaceRefDType* const irdtp = VN_CAST(fromVarp->dtypep(), IfaceRefDType);
if (!irdtp) continue;
AstCell* cellp;
if ((cellp = VN_CAST(fromVarp->user1p(), Cell)) || (cellp = irdtp->cellp())) {
varp->user1p(cellp);
const string alias = m_scope + "__DOT__" + pinp->name();
cellp->addIntfRefsp(new AstIntfRef{pinp->fileline(), alias});
}
AstCell* cellp;
if ((cellp = VN_CAST(fromVarp->user1p(), Cell)) || (cellp = irdtp->cellp())) {
varp->user1p(cellp);
const string alias = m_scope + "__DOT__" + pinp->name();
cellp->addIntfRefsp(new AstIntfRef{pinp->fileline(), alias});
}
iterateChildren(modp);
}
iterateChildren(modp);
}
void visit(AstAssignVarScope* nodep) override {
// Reference

View File

@ -24,14 +24,13 @@
#include "V3TraceDecl.h"
#include "verilated_trace_defs.h" // For VLT_TRACE_SCOPE_*
#include "V3Config.h"
#include "V3EmitCBase.h"
#include "V3Stats.h"
#include <functional>
#include <limits>
#include <tuple>
#include <vector>
VL_DEFINE_DEBUG_FUNCTIONS;
@ -59,7 +58,7 @@ public:
++toPop;
m_stack.pop_back();
}
if (toPop) m_emit(new AstTracePopNamePrefix{m_flp, toPop});
while (toPop--) m_emit(new AstTracePopPrefix{m_flp});
// Move down, one path element at a time
if (newPath != m_stack.back()) {
const string& extraPrefix = newPath.substr(m_stack.back().size());
@ -67,14 +66,14 @@ public:
while (true) {
const size_t end = extraPrefix.find(SEPARATOR, begin);
if (end == string::npos) break;
const string& extra = extraPrefix.substr(begin, end + 1 - begin);
m_emit(new AstTracePushNamePrefix{m_flp, extra});
m_stack.push_back(m_stack.back() + extra);
const string& extra = extraPrefix.substr(begin, end - begin);
m_emit(new AstTracePushPrefix{m_flp, extra, VTracePrefixType::SCOPE_MODULE});
m_stack.push_back(m_stack.back() + extra + SEPARATOR);
begin = end + 1;
}
const string& extra = extraPrefix.substr(begin);
if (!extra.empty()) {
m_emit(new AstTracePushNamePrefix{m_flp, extra + SEPARATOR});
m_emit(new AstTracePushPrefix{m_flp, extra, VTracePrefixType::SCOPE_MODULE});
m_stack.push_back(m_stack.back() + extra);
}
}
@ -82,8 +81,8 @@ public:
// Emit Prefix adjustments to unwind the path back to its original state
void unwind() {
const unsigned toPop = m_stack.size() - 1;
if (toPop) m_emit(new AstTracePopNamePrefix{m_flp, toPop});
unsigned toPop = m_stack.size() - 1;
while (toPop--) m_emit(new AstTracePopPrefix{m_flp});
}
};
@ -105,25 +104,58 @@ private:
const int m_funcSizeLimit // Maximum size of a function
= v3Global.opt.outputSplitCTrace() ? v3Global.opt.outputSplitCTrace()
: std::numeric_limits<int>::max();
// Trace init sub functions to invoke for path names in the hierarchy. Note path names and
// AstScope instances are not one to one due to the presence of AstIntfRef.
std::map<std::string, std::vector<AstCFunc*>> m_scopeSubFuncps;
// Trace init functions to for each scope
std::unordered_map<const AstScope*, std::vector<AstCFunc*>> m_scopeInitFuncps;
// Map from hierarchical scope name to the corresponding AstScope. Note that
// this is a many-to-one mapping for interfaces, due to interface refs.
std::unordered_map<std::string, const AstScope*> m_pathToScopep;
// Cell initialization placeholders:
// (parent scope, cell under parent scope, statement)
std::vector<std::tuple<AstScope*, AstCell*, AstNodeStmt*>> m_cellInitPlaceholders;
// Interface refs initialization placeholders:
// (Interface ref variable, placeholder statement)
std::vector<std::tuple<AstVarScope*, AstNodeStmt*>> m_ifaceRefInitPlaceholders;
struct Signal final {
AstVarScope* m_vscp; // AstVarScope being traced (non const to allow copy during sorting)
std::string m_path; // Path to enclosing module in hierarchy
std::string m_name; // Name of signal
explicit Signal(AstVarScope* vscp)
: m_vscp{vscp} {
// Compute path in hierarchy and signal name
const string& vcdName = AstNode::vcdName(vscp->varp()->name());
// A trace entry under a scope is either:
// - A variable (including interface references)
// - A sub scope (stored as the cell corresponding to the sub scope)
// Note: members are non-const to allow copy during sorting
class TraceEntry final {
// AstVarScope under scope being traced
AstVarScope* m_vscp{nullptr};
// Sub scope (as AstCell) under scope being traced
AstCell* m_cellp{nullptr};
// Path to enclosing module in original hierarchy (non-trivail due to inlining)
std::string m_path;
// Name of signal/subscope
std::string m_name;
void init(const std::string& name) {
// Compute path in hierarchy and item name
const std::string& vcdName = AstNode::vcdName(name);
const size_t pos = vcdName.rfind(' ');
const size_t pathLen = pos == string::npos ? 0 : pos + 1;
const size_t pathLen = pos == std::string::npos ? 0 : pos + 1;
m_path = vcdName.substr(0, pathLen);
m_name = vcdName.substr(pathLen);
}
public:
explicit TraceEntry(AstVarScope* vscp)
: m_vscp{vscp} {
init(vscp->varp()->name());
}
explicit TraceEntry(AstCell* cellp)
: m_cellp{cellp} {
init(cellp->name());
}
AstVarScope* vscp() const { return m_vscp; }
AstCell* cellp() const { return m_cellp; }
const std::string& path() const { return m_path; }
const std::string& name() const { return m_name; }
FileLine& fileline() const { return m_vscp ? *m_vscp->fileline() : *m_cellp->fileline(); }
};
std::vector<Signal> m_signals; // Signals under current scope
std::vector<TraceEntry> m_entries; // Trace entries under current scope
AstVarScope* m_traVscp = nullptr; // Current AstVarScope we are constructing AstTraceDecls for
AstNodeExpr* m_traValuep = nullptr; // Value expression for current signal
string m_traName; // Name component for current signal
@ -192,35 +224,6 @@ private:
m_subFuncSize += stmtp->nodeCount();
}
std::string getScopeChar(VltTraceScope sct) {
if (v3Global.opt.traceFormat().fst()) {
return std::string(1, static_cast<char>(0x80 + sct));
} else {
return std::string();
}
}
std::string addAboveInterface(const std::string& scopeName) {
std::string out;
// Hierarchical interfaces didn't know if interface vs module
// above them. so convert a scope string to have the interface character.
// Uses list of scopes to see what's an interface above.
size_t begin = 0;
while (true) {
const size_t end = scopeName.find(' ', begin);
if (end == string::npos) break;
const string& extra = scopeName.substr(begin, end - begin);
out += extra;
if (m_scopeSubFuncps.count(out + getScopeChar(VLT_TRACE_SCOPE_INTERFACE) + " ")) {
out += getScopeChar(VLT_TRACE_SCOPE_INTERFACE) + " ";
} else {
out += " ";
}
begin = end + 1;
}
return out;
}
void addTraceDecl(const VNumRange& arrayRange,
int widthOverride) { // If !=0, is packed struct/array where basicp size
// misreflects one element
@ -240,97 +243,202 @@ private:
++m_statIgnSigs;
std::string cmt = std::string{"Tracing: "} + m_traName + " // Ignored: " + why;
if (debug() > 3 && m_traVscp) std::cout << "- " << m_traVscp->fileline() << cmt << endl;
addToSubFunc(new AstComment{m_traVscp->fileline(), cmt, true});
}
void fixupPlaceholder(const std::string& path, AstNodeStmt* placeholderp) {
// Find the scope for the path. As we are working based on cell names,
// it is possible there is no corresponding scope (e.g.: for an empty
// module).
const auto it = m_pathToScopep.find(path);
if (it != m_pathToScopep.end()) {
const AstScope* const scopep = it->second;
FileLine* const flp = placeholderp->fileline();
// Pick up the last path element. The prefixes have already been pushed
// when building the initialization functions
const size_t pos = path.rfind('.');
const std::string name = path.substr(pos == string::npos ? 0 : pos + 1);
// Compute the type of the scope beign fixed up
AstNodeModule* const modp = scopep->aboveCellp()->modp();
const VTracePrefixType scopeType = VN_IS(modp, Iface)
? VTracePrefixType::SCOPE_INTERFACE
: VTracePrefixType::SCOPE_MODULE;
// Push the scope prefix
AstNodeStmt* const pushp = new AstTracePushPrefix{flp, name, scopeType};
// Call the initialization functions for the scope
for (AstCFunc* const subFuncp : m_scopeInitFuncps.at(scopep)) {
AstCCall* const callp = new AstCCall{flp, subFuncp};
callp->dtypeSetVoid();
callp->argTypes("tracep");
pushp->addNext(callp->makeStmt());
}
// Pop the scope prefix
pushp->addNext(new AstTracePopPrefix{flp});
// Add after the placeholder
placeholderp->addNextHere(pushp);
}
// Delete the placeholder
placeholderp->unlinkFrBack();
VL_DO_DANGLING(placeholderp->deleteTree(), placeholderp);
}
void fixupPlaceholders() {
// Fix up cell initialization placehodlers
for (const auto& item : m_cellInitPlaceholders) {
const AstScope* const parentp = std::get<0>(item);
const AstCell* const cellp = std::get<1>(item);
AstNodeStmt* const placeholderp = std::get<2>(item);
const std::string path = AstNode::prettyName(parentp->name() + "." + cellp->name());
fixupPlaceholder(path, placeholderp);
}
// Fix up interface reference initialization placeholders
for (const auto& item : m_ifaceRefInitPlaceholders) {
const AstVarScope* const vscp = std::get<0>(item);
AstNodeStmt* const placeholderp = std::get<1>(item);
const std::string path = vscp->prettyName();
fixupPlaceholder(path, placeholderp);
}
}
void removeRedundantPrefixPushPop() {
for (const auto& pair : m_scopeInitFuncps) {
for (AstCFunc* const funcp : pair.second) {
AstNode* prevp = nullptr;
AstNode* currp = funcp->stmtsp();
while (true) {
AstNode* const nextp = currp->nextp();
if (VN_IS(prevp, TracePushPrefix) && VN_IS(currp, TracePopPrefix)) {
VL_DO_DANGLING(prevp->unlinkFrBack()->deleteTree(), prevp);
VL_DO_DANGLING(currp->unlinkFrBack()->deleteTree(), currp);
}
if (!nextp) break;
prevp = nextp->backp();
currp = nextp;
}
}
}
}
// VISITORS
void visit(AstScope* nodep) override {
UASSERT_OBJ(!m_currScopep, nodep, "Should not nest");
UASSERT_OBJ(m_subFuncps.empty(), nodep, "Should not nest");
UASSERT_OBJ(m_signals.empty(), nodep, "Should not nest");
UASSERT_OBJ(m_entries.empty(), nodep, "Should not nest");
UASSERT_OBJ(!m_traVscp, nodep, "Should not nest");
UASSERT_OBJ(!m_traValuep, nodep, "Should not nest");
UASSERT_OBJ(m_traName.empty(), nodep, "Should not nest");
VL_RESTORER(m_currScopep);
m_currScopep = nodep;
// Gather all signals under this AstScope
// Gather signals under this scope
iterateChildrenConst(nodep);
// If nothing to trace in this scope, then job done
if (m_signals.empty()) return;
// Sort signals, first by enclosing instance, then by source location, then by name
std::stable_sort(m_signals.begin(), m_signals.end(), [](const Signal& a, const Signal& b) {
if (const int cmp = a.m_path.compare(b.m_path)) return cmp < 0;
const FileLine* const aflp = a.m_vscp->fileline();
const FileLine* const bflp = b.m_vscp->fileline();
if (const int cmp = aflp->operatorCompare(*bflp)) return cmp < 0;
return a.m_name < b.m_name;
});
// Build trace initialization functions for this AstScope
FileLine* const flp = nodep->fileline();
PathAdjustor pathAdjustor{flp, [&](AstNodeStmt* stmtp) { addToSubFunc(stmtp); }};
for (const Signal& signal : m_signals) {
// Adjust name prefix based on path in hierarchy
pathAdjustor.adjust(signal.m_path);
// Build AstTraceDecl for this signal
m_traVscp = signal.m_vscp;
m_traName = signal.m_name;
if (const char* const ignoreReasonp = vscIgnoreTrace(m_traVscp)) {
addIgnore(ignoreReasonp);
} else {
++m_statSigs;
m_traValuep = new AstVarRef{m_traVscp->fileline(), m_traVscp, VAccess::READ};
// Recurse into data type of the signal. The visit methods will add AstTraceDecls.
iterate(m_traVscp->varp()->dtypep()->skipRefToEnump());
// Cleanup
if (m_traValuep) VL_DO_CLEAR(m_traValuep->deleteTree(), m_traValuep = nullptr);
}
// Gather cells under this scope
for (AstNode* stmtp = nodep->modp()->stmtsp(); stmtp; stmtp = stmtp->nextp()) {
if (AstCell* const cellp = VN_CAST(stmtp, Cell)) { m_entries.emplace_back(cellp); }
}
pathAdjustor.unwind();
m_traVscp = nullptr;
m_traName.clear();
UASSERT_OBJ(!m_traValuep, nodep, "Should have been deleted");
m_signals.clear();
// Add sub functions to m_scopeSubFuncps
if (!m_entries.empty()) {
// Sort trace entries, first by enclosing instance (necessary for
// single traversal of hierarchy during initialization), then by
// source location, then by name.
std::stable_sort(m_entries.begin(), m_entries.end(),
[](const TraceEntry& a, const TraceEntry& b) {
if (const int cmp = a.path().compare(b.path())) return cmp < 0;
if (const int cmp = a.fileline().operatorCompare(b.fileline()))
return cmp < 0;
return a.name() < b.name();
});
// Build trace initialization functions for this AstScope
FileLine* const flp = nodep->fileline();
PathAdjustor pathAdjustor{flp, [&](AstNodeStmt* stmtp) { addToSubFunc(stmtp); }};
for (const TraceEntry& entry : m_entries) {
// Adjust name prefix based on path in hierarchy
pathAdjustor.adjust(entry.path());
m_traName = entry.name();
if (AstVarScope* const vscp = entry.vscp()) {
// This is a signal: build AstTraceDecl for it
m_traVscp = vscp;
if (const char* const ignoreReasonp = vscIgnoreTrace(m_traVscp)) {
addIgnore(ignoreReasonp);
} else {
++m_statSigs;
// Create reference to whole signal. We will operate on this during the
// traversal.
m_traValuep
= new AstVarRef{m_traVscp->fileline(), m_traVscp, VAccess::READ};
// Recurse into data type of the signal. The visit methods will add
// AstTraceDecls.
iterate(m_traVscp->varp()->dtypep()->skipRefToEnump());
// Delete reference created above. Traversal cloned it as required.
if (m_traValuep) {
VL_DO_DANGLING(m_traValuep->deleteTree(), m_traValuep);
// Note: Sometimes VL_DANGLING is a no-op, but we have assertions
// on m_traValuep being nullptr, so make sure it is.
m_traValuep = nullptr;
}
}
} else {
// This is a subscope: insert a placeholder to be fixed up later
AstCell* const cellp = entry.cellp();
FileLine* const flp = cellp->fileline();
AstNodeStmt* const stmtp
= new AstComment{flp, "Cell init for: " + cellp->prettyName()};
addToSubFunc(stmtp);
m_cellInitPlaceholders.emplace_back(nodep, cellp, stmtp);
}
}
pathAdjustor.unwind();
m_traVscp = nullptr;
m_traName.clear();
UASSERT_OBJ(!m_traValuep, nodep, "Should have been deleted");
m_entries.clear();
}
// Save the initialization functions of this scope
m_scopeInitFuncps.emplace(nodep, std::move(m_subFuncps));
// Save the hierarchical name of this scope
const std::string path = nodep->prettyName();
m_pathToScopep.emplace(path, nodep);
// Save the hierarchical names of interface references that reference this scope
const AstCell* const cellp = nodep->aboveCellp();
if (cellp && VN_IS(cellp->modp(), Iface)) {
string scopeName = nodep->prettyName();
const size_t lastDot = scopeName.find_last_of('.');
const size_t lastDot = path.find_last_of('.');
UASSERT_OBJ(lastDot != string::npos, nodep,
"Expected an interface scope name to have at least one dot");
scopeName = scopeName.substr(0, lastDot + 1);
const size_t scopeLen = scopeName.length();
const std::string parentPath = path.substr(0, lastDot + 1);
UASSERT_OBJ(cellp->intfRefsp(), cellp, "Interface without tracing reference");
for (AstIntfRef *irp = cellp->intfRefsp(), *nextIrp; irp; irp = nextIrp) {
nextIrp = VN_AS(irp->nextp(), IntfRef);
for (AstIntfRef *intfRefp = cellp->intfRefsp(), *nextp; intfRefp; intfRefp = nextp) {
nextp = VN_AS(intfRefp->nextp(), IntfRef);
const string irpName = irp->prettyName();
if (scopeLen > irpName.length()) continue;
const string intfScopeName = irpName.substr(0, scopeLen);
if (scopeName != intfScopeName) continue;
const std::string refName = intfRefp->prettyName();
string iscopeName = AstNode::vcdName(irp->name());
if (iscopeName.substr(0, 4) == "TOP ") iscopeName.erase(0, 4);
// Note this insert doesn't know what above is interfaces.
// Perhaps all scopes should be changed to include the VLT_TRACE_SCOPE characters.
// Instead we fix up when printing m_scopeSubFuncps
iscopeName += getScopeChar(VLT_TRACE_SCOPE_INTERFACE) + ' ';
m_scopeSubFuncps.emplace(iscopeName, m_subFuncps);
// Assume only references under the same parent scope reference
// the same interface.
// TODO: This is not actually correct. An inteface can propagate
// upwards and sideways when passed to a port via a downward
// hierarchical reference, which we will miss here.
if (!VString::startsWith(refName, parentPath)) continue;
VL_DO_DANGLING(irp->unlinkFrBack(), irp);
// Save the mapping from the path of the reference to the scope
m_pathToScopep.emplace(refName, nodep);
// No more need for AstIntfRef
intfRefp->unlinkFrBack();
VL_DO_DANGLING(intfRefp->deleteTree(), intfRefp);
}
m_subFuncps.clear();
} else {
string scopeName = AstNode::vcdName(nodep->name()) + ' ';
if (VString::startsWith(scopeName, "TOP ")) scopeName.erase(0, 4);
m_scopeSubFuncps.emplace(scopeName, std::move(m_subFuncps));
}
}
void visit(AstVarScope* nodep) override {
@ -344,142 +452,174 @@ private:
if (nodep->varp()->isFuncLocal()) return;
// Add to traced signal list
m_signals.emplace_back(nodep);
m_entries.emplace_back(nodep);
}
// VISITORS - Data types when tracing
void visit(AstConstDType* nodep) override {
if (m_traVscp) iterate(nodep->subDTypep()->skipRefToEnump());
if (!m_traVscp) return;
iterate(nodep->subDTypep()->skipRefToEnump());
}
void visit(AstRefDType* nodep) override {
if (m_traVscp) iterate(nodep->subDTypep()->skipRefToEnump());
if (!m_traVscp) return;
iterate(nodep->subDTypep()->skipRefToEnump());
}
void visit(AstIfaceRefDType* nodep) override {
if (!m_traVscp) return;
// Insert a placeholder to be fixed up later
FileLine* const flp = m_traVscp->fileline();
AstNodeStmt* const stmtp
= new AstComment{flp, "Interface ref init for: " + m_traVscp->prettyName()};
addToSubFunc(stmtp);
m_ifaceRefInitPlaceholders.emplace_back(m_traVscp, stmtp);
}
void visit(AstUnpackArrayDType* nodep) override {
// Note more specific dtypes above
if (m_traVscp) {
if (static_cast<int>(nodep->arrayUnpackedElements()) > v3Global.opt.traceMaxArray()) {
addIgnore("Wide memory > --trace-max-array ents");
} else if (VN_IS(nodep->subDTypep()->skipRefToEnump(),
BasicDType) // Nothing lower than this array
&& m_traVscp->dtypep()->skipRefToEnump()
== nodep) { // Nothing above this array
// Simple 1-D array, use existing V3EmitC runtime loop rather than unrolling
// This will put "(index)" at end of signal name for us
if (m_traVscp->dtypep()->skipRefToEnump()->isString()) {
addIgnore("Unsupported: strings");
} else {
addTraceDecl(nodep->declRange(), 0);
}
if (!m_traVscp) return;
if (static_cast<int>(nodep->arrayUnpackedElements()) > v3Global.opt.traceMaxArray()) {
addIgnore("Wide memory > --trace-max-array ents");
return;
}
VL_RESTORER(m_traName);
FileLine* const flp = nodep->fileline();
addToSubFunc(new AstTracePushPrefix{flp, m_traName, VTracePrefixType::ARRAY_UNPACKED});
if (VN_IS(nodep->subDTypep()->skipRefToEnump(),
BasicDType) // Nothing lower than this array
&& m_traVscp->dtypep()->skipRefToEnump() == nodep) { // Nothing above this array
// Simple 1-D array, use existing V3EmitC runtime loop rather than unrolling
// This will put "(index)" at end of signal name for us
if (m_traVscp->dtypep()->skipRefToEnump()->isString()) {
addIgnore("Unsupported: strings");
} else {
// Unroll now, as have no other method to get right signal names
FileLine* const flp = nodep->fileline();
AstNodeDType* const subtypep = nodep->subDTypep()->skipRefToEnump();
VL_RESTORER(m_traName);
addToSubFunc(new AstTracePushNamePrefix{flp, m_traName});
for (int i = nodep->lo(); i <= nodep->hi(); ++i) {
VL_RESTORER(m_traValuep);
m_traName = std::string{"["} + cvtToStr(i) + std::string{"]"};
m_traValuep = m_traValuep->cloneTree(false);
m_traValuep = new AstArraySel{flp, m_traValuep, i - nodep->lo()};
m_traValuep->dtypep(subtypep);
iterate(subtypep);
VL_DO_CLEAR(m_traValuep->deleteTree(), m_traValuep = nullptr);
}
addToSubFunc(new AstTracePopNamePrefix{flp, 1});
m_traName = "";
addTraceDecl(nodep->declRange(), 0);
}
} else {
AstNodeDType* const subtypep = nodep->subDTypep()->skipRefToEnump();
for (int i = nodep->lo(); i <= nodep->hi(); ++i) {
VL_RESTORER(m_traValuep);
m_traName = '[' + std::to_string(i) + ']';
m_traValuep = m_traValuep->cloneTree(false);
m_traValuep = new AstArraySel{flp, m_traValuep, i - nodep->lo()};
m_traValuep->dtypep(subtypep);
iterate(subtypep);
VL_DO_DANGLING(m_traValuep->deleteTree(), m_traValuep);
}
}
addToSubFunc(new AstTracePopPrefix{flp});
}
void visit(AstPackArrayDType* nodep) override {
if (m_traVscp) {
if (!v3Global.opt.traceStructs()) {
// Everything downstream is packed, so deal with as one trace unit.
// This may not be the nicest for user presentation, but is
// a much faster way to trace
addTraceDecl(VNumRange{}, nodep->width());
} else {
FileLine* const flp = nodep->fileline();
AstNodeDType* const subtypep = nodep->subDTypep()->skipRefToEnump();
VL_RESTORER(m_traName);
addToSubFunc(new AstTracePushNamePrefix{flp, m_traName});
for (int i = nodep->lo(); i <= nodep->hi(); ++i) {
VL_RESTORER(m_traValuep);
m_traName = std::string{"["} + cvtToStr(i) + std::string{"]"};
const int lsb = (i - nodep->lo()) * subtypep->width();
m_traValuep = m_traValuep->cloneTree(false);
m_traValuep = new AstSel{flp, m_traValuep, lsb, subtypep->width()};
m_traValuep->dtypep(subtypep);
iterate(subtypep);
VL_DO_CLEAR(m_traValuep->deleteTree(), m_traValuep = nullptr);
}
addToSubFunc(new AstTracePopNamePrefix{flp, 1});
if (!m_traVscp) return;
if (!v3Global.opt.traceStructs()) {
// Everything downstream is packed, so deal with as one trace unit.
// This may not be the nicest for user presentation, but is
// a much faster way to trace
addTraceDecl(VNumRange{}, nodep->width());
return;
}
VL_RESTORER(m_traName);
FileLine* const flp = nodep->fileline();
addToSubFunc(new AstTracePushPrefix{flp, m_traName, VTracePrefixType::ARRAY_PACKED});
AstNodeDType* const subtypep = nodep->subDTypep()->skipRefToEnump();
for (int i = nodep->lo(); i <= nodep->hi(); ++i) {
VL_RESTORER(m_traValuep);
m_traName = '[' + std::to_string(i) + ']';
const int lsb = (i - nodep->lo()) * subtypep->width();
m_traValuep = m_traValuep->cloneTree(false);
m_traValuep = new AstSel{flp, m_traValuep, lsb, subtypep->width()};
m_traValuep->dtypep(subtypep);
iterate(subtypep);
VL_DO_CLEAR(m_traValuep->deleteTree(), m_traValuep = nullptr);
}
addToSubFunc(new AstTracePopPrefix{flp});
}
void visit(AstStructDType* nodep) override {
if (!m_traVscp) return;
if (nodep->packed() && !v3Global.opt.traceStructs()) {
// Everything downstream is packed, so deal with as one trace unit
// This may not be the nicest for user presentation, but is
// a much faster way to trace
addTraceDecl(VNumRange{}, nodep->width());
return;
}
VL_RESTORER(m_traName);
FileLine* const flp = nodep->fileline();
if (!nodep->packed()) {
addToSubFunc(
new AstTracePushPrefix{flp, m_traName, VTracePrefixType::STRUCT_UNPACKED});
for (const AstMemberDType *itemp = nodep->membersp(), *nextp; itemp; itemp = nextp) {
nextp = VN_AS(itemp->nextp(), MemberDType);
AstNodeDType* const subtypep = itemp->subDTypep()->skipRefToEnump();
m_traName = itemp->prettyName();
VL_RESTORER(m_traValuep);
m_traValuep = m_traValuep->cloneTree(false);
m_traValuep = new AstStructSel{flp, m_traValuep, itemp->name()};
m_traValuep->dtypep(subtypep);
iterate(subtypep);
VL_DO_DANGLING(m_traValuep->deleteTree(), m_traValuep);
}
addToSubFunc(new AstTracePopPrefix{flp});
} else {
addToSubFunc(new AstTracePushPrefix{flp, m_traName, VTracePrefixType::STRUCT_PACKED});
for (const AstMemberDType *itemp = nodep->membersp(), *nextp; itemp; itemp = nextp) {
nextp = VN_AS(itemp->nextp(), MemberDType);
AstNodeDType* const subtypep = itemp->subDTypep()->skipRefToEnump();
m_traName = itemp->prettyName();
VL_RESTORER(m_traValuep);
m_traValuep = m_traValuep->cloneTree(false);
m_traValuep = new AstSel{flp, m_traValuep, itemp->lsb(), subtypep->width()};
m_traValuep->dtypep(subtypep);
iterate(subtypep);
VL_DO_DANGLING(m_traValuep->deleteTree(), m_traValuep);
}
addToSubFunc(new AstTracePopPrefix{flp});
}
}
void visit(AstNodeUOrStructDType* nodep) override {
if (m_traVscp) {
if (nodep->packed() && !v3Global.opt.traceStructs()) {
// Everything downstream is packed, so deal with as one trace unit
// This may not be the nicest for user presentation, but is
// a much faster way to trace
addTraceDecl(VNumRange{}, nodep->width());
} else if (!nodep->packed()) {
if (VN_IS(nodep, UnionDType)) {
addIgnore("Unsupported: Unpacked union");
} else {
FileLine* const flp = nodep->fileline();
VL_RESTORER(m_traName);
string prefix{m_traName};
prefix += getScopeChar(VLT_TRACE_SCOPE_STRUCT);
addToSubFunc(new AstTracePushNamePrefix{flp, prefix + ' '});
for (const AstMemberDType* itemp = nodep->membersp(); itemp;
itemp = VN_AS(itemp->nextp(), MemberDType)) {
AstNodeDType* const subtypep = itemp->subDTypep()->skipRefToEnump();
m_traName = itemp->prettyName();
VL_RESTORER(m_traValuep);
m_traValuep = m_traValuep->cloneTree(false);
m_traName = itemp->prettyName();
m_traValuep = new AstStructSel{flp, m_traValuep, itemp->name()};
m_traValuep->dtypep(subtypep);
iterate(subtypep);
VL_DO_CLEAR(m_traValuep->deleteTree(), m_traValuep = nullptr);
}
addToSubFunc(new AstTracePopNamePrefix{flp, 1});
}
} else {
FileLine* const flp = nodep->fileline();
const bool isStruct = VN_IS(nodep, StructDType); // Otherwise union
VL_RESTORER(m_traName);
string prefix{m_traName};
prefix += isStruct ? getScopeChar(VLT_TRACE_SCOPE_STRUCT) // Mark scope type
: getScopeChar(VLT_TRACE_SCOPE_UNION);
addToSubFunc(new AstTracePushNamePrefix{flp, prefix + ' '});
for (const AstMemberDType* itemp = nodep->membersp(); itemp;
itemp = VN_AS(itemp->nextp(), MemberDType)) {
AstNodeDType* const subtypep = itemp->subDTypep()->skipRefToEnump();
m_traName = itemp->prettyName();
if (isStruct) {
VL_RESTORER(m_traValuep);
m_traValuep = m_traValuep->cloneTree(false);
m_traValuep
= new AstSel{flp, m_traValuep, itemp->lsb(), subtypep->width()};
m_traValuep->dtypep(subtypep);
iterate(subtypep);
VL_DO_CLEAR(m_traValuep->deleteTree(), m_traValuep = nullptr);
} else { // Else union, replicate fields
iterate(subtypep);
}
}
addToSubFunc(new AstTracePopNamePrefix{flp, 1});
void visit(AstUnionDType* nodep) override {
if (!m_traVscp) return;
if (nodep->packed() && !v3Global.opt.traceStructs()) {
// Everything downstream is packed, so deal with as one trace unit
// This may not be the nicest for user presentation, but is
// a much faster way to trace
addTraceDecl(VNumRange{}, nodep->width());
return;
}
VL_RESTORER(m_traName);
FileLine* const flp = nodep->fileline();
if (!nodep->packed()) {
addIgnore("Unsupported: Unpacked union");
} else {
addToSubFunc(new AstTracePushPrefix{flp, m_traName, VTracePrefixType::UNION_PACKED});
for (const AstMemberDType *itemp = nodep->membersp(), *nextp; itemp; itemp = nextp) {
nextp = VN_AS(itemp->nextp(), MemberDType);
AstNodeDType* const subtypep = itemp->subDTypep()->skipRefToEnump();
m_traName = itemp->prettyName();
iterate(subtypep);
}
addToSubFunc(new AstTracePopPrefix{flp});
}
}
void visit(AstBasicDType* nodep) override {
if (m_traVscp) {
if (nodep->isString()) {
addIgnore("Unsupported: strings");
} else {
addTraceDecl(VNumRange{}, 0);
}
if (!m_traVscp) return;
if (nodep->isString()) {
addIgnore("Unsupported: strings");
} else {
addTraceDecl(VNumRange{}, 0);
}
}
void visit(AstEnumDType* nodep) override { iterate(nodep->skipRefp()); }
@ -498,26 +638,27 @@ public:
: m_topScopep{nodep->topScopep()} {
FileLine* const flp = nodep->fileline();
// Iterate modules to build per scope initialization sub functions
// Iterate modules to build per scope initialization functions
iterateAndNextConstNull(nodep->modulesp());
UASSERT_OBJ(m_subFuncps.empty(), nodep, "Should have been emptied");
// Build top level trace initialization functions
PathAdjustor pathAdjustor{flp, [&](AstNodeStmt* stmtp) { addToTopFunc(stmtp); }};
for (const auto& item : m_scopeSubFuncps) {
const std::string scopeName = item.first;
const std::string scopeNameInterfaced = addAboveInterface(scopeName);
// Adjust name prefix based on path in hierarchy
pathAdjustor.adjust(scopeNameInterfaced);
// Call all sub functions for this path
for (AstCFunc* const subFuncp : item.second) {
AstCCall* const callp = new AstCCall{flp, subFuncp};
callp->dtypeSetVoid();
callp->argTypes("tracep");
addToTopFunc(callp->makeStmt());
}
// Fix up the placeholders in the initialization functions
fixupPlaceholders();
// Now that we have everything ready, remove redundant pushPrefix/popPrefix
// pairs. While functionally this is not really necessary (the trace files
// might have some empty scope declarations), we do it to preserve previous
// behaviour. Note: unfortunately generating these without the redundant
// push/pop pairs is a bit hard. It is cleaner to remove them.
removeRedundantPrefixPushPop();
// Call the initialization functions of the root scope from the top function
for (AstCFunc* const funcp : m_scopeInitFuncps.at(m_topScopep->scopep())) {
AstCCall* const callp = new AstCCall{flp, funcp};
callp->dtypeSetVoid();
callp->argTypes("tracep");
addToTopFunc(callp->makeStmt());
}
pathAdjustor.unwind();
// Ensure a top function exists, in case there was nothing to trace at all
if (m_topFuncps.empty()) addToTopFunc(new AstComment{flp, "Empty"});

View File

@ -1,174 +1,172 @@
$version Generated by VerilatedVcd $end
$date Fri Jun 22 19:23:24 2018
$end
$timescale 1ps $end
$timescale 1ps $end
$scope module top $end
$var wire 1 $ clk $end
$var wire 1 % res $end
$var wire 16 ' res16 [15:0] $end
$var wire 8 & res8 [7:0] $end
$scope module $unit $end
$var wire 32 + ID_MSB [31:0] $end
$upscope $end
$var wire 1 # clk $end
$var wire 1 $ res $end
$var wire 8 % res8 [7:0] $end
$var wire 16 & res16 [15:0] $end
$scope module t $end
$var wire 1 $ clk $end
$var wire 8 ( clkSet [7:0] $end
$var wire 1 $ clk_1 $end
$var wire 3 ) clk_3 [2:0] $end
$var wire 4 * clk_4 [3:0] $end
$var wire 1 $ clk_final $end
$var wire 8 # count [7:0] $end
$var wire 1 % res $end
$var wire 16 ' res16 [15:0] $end
$var wire 8 & res8 [7:0] $end
$var wire 1 # clk $end
$var wire 1 $ res $end
$var wire 8 % res8 [7:0] $end
$var wire 16 & res16 [15:0] $end
$var wire 8 ' clkSet [7:0] $end
$var wire 1 # clk_1 $end
$var wire 3 ( clk_3 [2:0] $end
$var wire 4 ) clk_4 [3:0] $end
$var wire 1 # clk_final $end
$var wire 8 * count [7:0] $end
$upscope $end
$upscope $end
$enddefinitions $end
#0
b00000000 #
0#
0$
0%
b00000000 &
b0000000000000000 '
b00000000 (
b000 )
b0000 *
b00000000 %
b0000000000000000 &
b00000000 '
b000 (
b0000 )
b00000000 *
b00000000000000000000000000000001 +
#10
b00000001 #
1#
1$
1%
b11101111 &
b0000000111111111 '
b11111111 (
b111 )
b1111 *
b11101111 %
b0000000111111111 &
b11111111 '
b111 (
b1111 )
b00000001 *
#15
b00000010 #
0#
0$
0%
b00000000 &
b0000001000000000 '
b00000000 (
b000 )
b0000 *
b00000000 %
b0000001000000000 &
b00000000 '
b000 (
b0000 )
b00000010 *
#20
b00000011 #
1#
1$
1%
b11101111 &
b0000001111111111 '
b11111111 (
b111 )
b1111 *
b11101111 %
b0000001111111111 &
b11111111 '
b111 (
b1111 )
b00000011 *
#25
b00000100 #
0#
0$
0%
b00000000 &
b0000010000000000 '
b00000000 (
b000 )
b0000 *
b00000000 %
b0000010000000000 &
b00000000 '
b000 (
b0000 )
b00000100 *
#30
b00000101 #
1#
1$
1%
b11101111 &
b0000010111111111 '
b11111111 (
b111 )
b1111 *
b11101111 %
b0000010111111111 &
b11111111 '
b111 (
b1111 )
b00000101 *
#35
b00000110 #
0#
0$
0%
b00000000 &
b0000011000000000 '
b00000000 (
b000 )
b0000 *
b00000000 %
b0000011000000000 &
b00000000 '
b000 (
b0000 )
b00000110 *
#40
b00000111 #
1#
1$
1%
b11101111 &
b0000011111111111 '
b11111111 (
b111 )
b1111 *
b11101111 %
b0000011111111111 &
b11111111 '
b111 (
b1111 )
b00000111 *
#45
b00001000 #
0#
0$
0%
b00000000 &
b0000100000000000 '
b00000000 (
b000 )
b0000 *
b00000000 %
b0000100000000000 &
b00000000 '
b000 (
b0000 )
b00001000 *
#50
b00001001 #
1#
1$
1%
b11101111 &
b0000100111111111 '
b11111111 (
b111 )
b1111 *
b11101111 %
b0000100111111111 &
b11111111 '
b111 (
b1111 )
b00001001 *
#55
b00001010 #
0#
0$
0%
b00000000 &
b0000101000000000 '
b00000000 (
b000 )
b0000 *
b00000000 %
b0000101000000000 &
b00000000 '
b000 (
b0000 )
b00001010 *
#60
b00001011 #
1#
1$
1%
b11101111 &
b0000101111111111 '
b11111111 (
b111 )
b1111 *
b11101111 %
b0000101111111111 &
b11111111 '
b111 (
b1111 )
b00001011 *
#65
b00001100 #
0#
0$
0%
b00000000 &
b0000110000000000 '
b00000000 (
b000 )
b0000 *
b00000000 %
b0000110000000000 &
b00000000 '
b000 (
b0000 )
b00001100 *
#70
b00001101 #
1#
1$
1%
b11101111 &
b0000110111111111 '
b11111111 (
b111 )
b1111 *
b11101111 %
b0000110111111111 &
b11111111 '
b111 (
b1111 )
b00001101 *
#75
b00001110 #
0#
0$
0%
b00000000 &
b0000111000000000 '
b00000000 (
b000 )
b0000 *
b00000000 %
b0000111000000000 &
b00000000 '
b000 (
b0000 )
b00001110 *
#80
b00001111 #
1#
1$
1%
b11101111 &
b0000111111111111 '
b11111111 (
b111 )
b1111 *
b11101111 %
b0000111111111111 &
b11111111 '
b111 (
b1111 )
b00001111 *

View File

@ -2,19 +2,44 @@ $version Generated by VerilatedVcd $end
$timescale 1ps $end
$scope module top $end
$var wire 1 X clk $end
$scope module t $end
$var wire 1 X clk $end
$var wire 32 ' cyc [31:0] $end
$var wire 8 ( cyc_copy [7:0] $end
$var wire 1 & toggle $end
$var wire 32 < vlCoverageLineTrace_t_cover_line__102_elsif [31:0] $end
$var wire 32 = vlCoverageLineTrace_t_cover_line__105_elsif [31:0] $end
$var wire 32 > vlCoverageLineTrace_t_cover_line__112_else [31:0] $end
$var wire 32 ? vlCoverageLineTrace_t_cover_line__112_if [31:0] $end
$var wire 32 Y vlCoverageLineTrace_t_cover_line__119_block [31:0] $end
$var wire 1 X clk $end
$var wire 1 & toggle $end
$var wire 32 # vlCoverageLineTrace_t_cover_line__15_block [31:0] $end
$var wire 32 ' cyc [31:0] $end
$var wire 32 $ vlCoverageLineTrace_t_cover_line__18_block [31:0] $end
$var wire 8 ( cyc_copy [7:0] $end
$scope module b1 $end
$var wire 1 X clk $end
$var wire 1 & toggle $end
$var wire 32 L vlCoverageLineTrace_t_cover_line__156_block [31:0] $end
$var wire 32 M vlCoverageLineTrace_t_cover_line__158_else [31:0] $end
$var wire 32 c vlCoverageLineTrace_t_cover_line__158_if [31:0] $end
$var wire 32 N vlCoverageLineTrace_t_cover_line__162_else [31:0] $end
$var wire 32 O vlCoverageLineTrace_t_cover_line__162_if [31:0] $end
$var wire 32 P vlCoverageLineTrace_t_cover_line__166_else [31:0] $end
$upscope $end
$scope module b2 $end
$var wire 1 X clk $end
$var wire 1 & toggle $end
$var wire 32 Q vlCoverageLineTrace_t_cover_line__156_block [31:0] $end
$var wire 32 R vlCoverageLineTrace_t_cover_line__158_else [31:0] $end
$var wire 32 d vlCoverageLineTrace_t_cover_line__158_if [31:0] $end
$var wire 32 S vlCoverageLineTrace_t_cover_line__162_else [31:0] $end
$var wire 32 T vlCoverageLineTrace_t_cover_line__162_if [31:0] $end
$var wire 32 U vlCoverageLineTrace_t_cover_line__166_else [31:0] $end
$upscope $end
$scope module t1 $end
$var wire 1 X clk $end
$var wire 1 & toggle $end
$var wire 32 V vlCoverageLineTrace_t_cover_line__207_block [31:0] $end
$var wire 32 Z vlCoverageLineTrace_t_cover_line__211_block [31:0] $end
$var wire 32 [ vlCoverageLineTrace_t_cover_line__214_else [31:0] $end
$var wire 32 \ vlCoverageLineTrace_t_cover_line__214_if [31:0] $end
$var wire 32 W vlCoverageLineTrace_t_cover_line__217_else [31:0] $end
$var wire 32 ] vlCoverageLineTrace_t_cover_line__217_if [31:0] $end
$var wire 32 % vlCoverageLineTrace_t_cover_line__222_block [31:0] $end
$upscope $end
$var wire 32 ) vlCoverageLineTrace_t_cover_line__47_block [31:0] $end
$var wire 32 * vlCoverageLineTrace_t_cover_line__48_else [31:0] $end
$var wire 32 + vlCoverageLineTrace_t_cover_line__48_if [31:0] $end
@ -38,63 +63,38 @@ $timescale 1ps $end
$var wire 32 _ vlCoverageLineTrace_t_cover_line__93_block [31:0] $end
$var wire 32 ` vlCoverageLineTrace_t_cover_line__96_block [31:0] $end
$var wire 32 a vlCoverageLineTrace_t_cover_line__97_block [31:0] $end
$var wire 32 < vlCoverageLineTrace_t_cover_line__102_elsif [31:0] $end
$var wire 32 = vlCoverageLineTrace_t_cover_line__105_elsif [31:0] $end
$var wire 32 > vlCoverageLineTrace_t_cover_line__112_else [31:0] $end
$var wire 32 ? vlCoverageLineTrace_t_cover_line__112_if [31:0] $end
$var wire 32 Y vlCoverageLineTrace_t_cover_line__119_block [31:0] $end
$scope module a1 $end
$var wire 1 X clk $end
$var wire 1 & toggle $end
$var wire 1 X clk $end
$var wire 1 & toggle $end
$var wire 32 @ vlCoverageLineTrace_t_cover_line__132_block [31:0] $end
$var wire 32 A vlCoverageLineTrace_t_cover_line__133_else [31:0] $end
$var wire 32 B vlCoverageLineTrace_t_cover_line__133_if [31:0] $end
$var wire 32 C vlCoverageLineTrace_t_cover_line__137_else [31:0] $end
$upscope $end
$scope module a2 $end
$var wire 1 X clk $end
$var wire 1 & toggle $end
$var wire 1 X clk $end
$var wire 1 & toggle $end
$var wire 32 D vlCoverageLineTrace_t_cover_line__132_block [31:0] $end
$var wire 32 E vlCoverageLineTrace_t_cover_line__133_else [31:0] $end
$var wire 32 F vlCoverageLineTrace_t_cover_line__133_if [31:0] $end
$var wire 32 G vlCoverageLineTrace_t_cover_line__137_else [31:0] $end
$upscope $end
$scope module b1 $end
$var wire 1 X clk $end
$var wire 1 & toggle $end
$var wire 32 L vlCoverageLineTrace_t_cover_line__156_block [31:0] $end
$var wire 32 M vlCoverageLineTrace_t_cover_line__158_else [31:0] $end
$var wire 32 c vlCoverageLineTrace_t_cover_line__158_if [31:0] $end
$var wire 32 N vlCoverageLineTrace_t_cover_line__162_else [31:0] $end
$var wire 32 O vlCoverageLineTrace_t_cover_line__162_if [31:0] $end
$var wire 32 P vlCoverageLineTrace_t_cover_line__166_else [31:0] $end
$upscope $end
$scope module b2 $end
$var wire 1 X clk $end
$var wire 1 & toggle $end
$var wire 32 Q vlCoverageLineTrace_t_cover_line__156_block [31:0] $end
$var wire 32 R vlCoverageLineTrace_t_cover_line__158_else [31:0] $end
$var wire 32 d vlCoverageLineTrace_t_cover_line__158_if [31:0] $end
$var wire 32 S vlCoverageLineTrace_t_cover_line__162_else [31:0] $end
$var wire 32 T vlCoverageLineTrace_t_cover_line__162_if [31:0] $end
$var wire 32 U vlCoverageLineTrace_t_cover_line__166_else [31:0] $end
$upscope $end
$scope module o1 $end
$var wire 1 X clk $end
$var wire 1 & toggle $end
$var wire 1 X clk $end
$var wire 1 & toggle $end
$var wire 32 H vlCoverageLineTrace_t_cover_line__245_block [31:0] $end
$var wire 32 I vlCoverageLineTrace_t_cover_line__246_else [31:0] $end
$var wire 32 J vlCoverageLineTrace_t_cover_line__246_if [31:0] $end
$var wire 32 K vlCoverageLineTrace_t_cover_line__249_else [31:0] $end
$var wire 32 b vlCoverageLineTrace_t_cover_line__249_if [31:0] $end
$upscope $end
$scope module t1 $end
$var wire 1 X clk $end
$var wire 1 & toggle $end
$var wire 32 V vlCoverageLineTrace_t_cover_line__207_block [31:0] $end
$var wire 32 Z vlCoverageLineTrace_t_cover_line__211_block [31:0] $end
$var wire 32 [ vlCoverageLineTrace_t_cover_line__214_else [31:0] $end
$var wire 32 \ vlCoverageLineTrace_t_cover_line__214_if [31:0] $end
$var wire 32 W vlCoverageLineTrace_t_cover_line__217_else [31:0] $end
$var wire 32 ] vlCoverageLineTrace_t_cover_line__217_if [31:0] $end
$var wire 32 % vlCoverageLineTrace_t_cover_line__222_block [31:0] $end
$upscope $end
$upscope $end
$var wire 1 X clk $end
$upscope $end
$enddefinitions $end

View File

@ -1,31 +1,29 @@
$version Generated by VerilatedVcd $end
$date Thu Oct 24 09:44:07 2019
$end
$timescale 1ps $end
$timescale 1ps $end
$scope module top $end
$var wire 1 ) clk $end
$var wire 1 ) clk $end
$scope module t $end
$var wire 1 ) clk $end
$var wire 32 # cyc [31:0] $end
$var wire 1 % toggle $end
$var wire 1 ) clk $end
$var wire 1 # toggle $end
$var wire 32 $ cyc [31:0] $end
$scope module suba $end
$var wire 1 ) clk $end
$var wire 32 $ cyc [31:0] $end
$var wire 1 ) clk $end
$var wire 1 # toggle $end
$var wire 32 % cyc [31:0] $end
$var wire 32 & cyc_eq_5_vlCoverageUserTrace [31:0] $end
$var wire 1 % toggle $end
$upscope $end
$scope module subb $end
$var wire 1 ) clk $end
$var wire 32 $ cyc [31:0] $end
$var wire 1 ) clk $end
$var wire 1 # toggle $end
$var wire 32 % cyc [31:0] $end
$var wire 32 ' cyc_eq_5_vlCoverageUserTrace [31:0] $end
$var wire 1 % toggle $end
$upscope $end
$scope module subc $end
$var wire 1 ) clk $end
$var wire 32 $ cyc [31:0] $end
$var wire 1 ) clk $end
$var wire 1 # toggle $end
$var wire 32 % cyc [31:0] $end
$var wire 32 ( cyc_eq_5_vlCoverageUserTrace [31:0] $end
$var wire 1 % toggle $end
$upscope $end
$upscope $end
$upscope $end
@ -33,44 +31,44 @@ $enddefinitions $end
#0
b00000000000000000000000000000001 #
0#
b00000000000000000000000000000001 $
0%
b00000000000000000000000000000001 %
b00000000000000000000000000000000 &
b00000000000000000000000000000000 '
b00000000000000000000000000000000 (
0)
#10
b00000000000000000000000000000010 #
b00000000000000000000000000000010 $
b00000000000000000000000000000010 %
1)
#15
0)
#20
b00000000000000000000000000000011 #
1#
b00000000000000000000000000000011 $
1%
b00000000000000000000000000000011 %
1)
#25
0)
#30
b00000000000000000000000000000100 #
0#
b00000000000000000000000000000100 $
0%
b00000000000000000000000000000100 %
1)
#35
0)
#40
b00000000000000000000000000000101 #
1#
b00000000000000000000000000000101 $
1%
b00000000000000000000000000000101 %
1)
#45
0)
#50
b00000000000000000000000000000110 #
0#
b00000000000000000000000000000110 $
0%
b00000000000000000000000000000110 %
b00000000000000000000000000000001 &
b00000000000000000000000000000001 '
b00000000000000000000000000000001 (
@ -78,35 +76,35 @@ b00000000000000000000000000000001 (
#55
0)
#60
b00000000000000000000000000000111 #
1#
b00000000000000000000000000000111 $
1%
b00000000000000000000000000000111 %
1)
#65
0)
#70
b00000000000000000000000000001000 #
0#
b00000000000000000000000000001000 $
0%
b00000000000000000000000000001000 %
1)
#75
0)
#80
b00000000000000000000000000001001 #
1#
b00000000000000000000000000001001 $
1%
b00000000000000000000000000001001 %
1)
#85
0)
#90
b00000000000000000000000000001010 #
0#
b00000000000000000000000000001010 $
0%
b00000000000000000000000000001010 %
1)
#95
0)
#100
b00000000000000000000000000001011 #
1#
b00000000000000000000000000001011 $
1%
b00000000000000000000000000001011 %
1)

View File

@ -1,213 +1,212 @@
$version Generated by VerilatedVcd $end
$date Sun Dec 19 14:44:51 2021 $end
$timescale 1ps $end
$scope module top $end
$var wire 1 # clk $end
$var wire 1 & clk $end
$scope module t $end
$var wire 1 # clk $end
$var wire 32 $ cyc [31:0] $end
$var wire 1 % net_1 $end
$var wire 8 & net_8 [7:0] $end
$var wire 1 & clk $end
$var wire 32 # cyc [31:0] $end
$var wire 1 $ net_1 $end
$var wire 8 % net_8 [7:0] $end
$upscope $end
$upscope $end
$enddefinitions $end
#0
0#
b00000000000000000000000000000000 $
1%
b11111111 &
b00000000000000000000000000000000 #
1$
b11111111 %
0&
#10
1#
b00000000000000000000000000000001 $
0%
b00000000000000000000000000000001 #
0$
1&
#15
0#
0&
#20
1#
b00000000000000000000000000000010 $
1%
b11111110 &
b00000000000000000000000000000010 #
1$
b11111110 %
1&
#25
0#
0&
#30
1#
b00000000000000000000000000000011 $
0%
b00000000000000000000000000000011 #
0$
1&
#35
0#
0&
#40
1#
b00000000000000000000000000000100 $
b11111101 &
b00000000000000000000000000000100 #
b11111101 %
1&
#45
0#
0&
#50
1#
b00000000000000000000000000000101 $
b01011111 &
b00000000000000000000000000000101 #
b01011111 %
1&
#55
0#
0&
#60
1#
b00000000000000000000000000000110 $
1%
b00000000000000000000000000000110 #
1$
1&
#65
0#
0&
#70
1#
b00000000000000000000000000000111 $
b11110101 &
b00000000000000000000000000000111 #
b11110101 %
1&
#75
0#
0&
#80
1#
b00000000000000000000000000001000 $
b00000000000000000000000000001000 #
1&
#85
0#
0&
#90
1#
b00000000000000000000000000001001 $
0%
b00000000000000000000000000001001 #
0$
1&
#95
0#
0&
#100
1#
b00000000000000000000000000001010 $
1%
b11111010 &
b00000000000000000000000000001010 #
1$
b11111010 %
1&
#105
0#
0&
#110
1#
b00000000000000000000000000001011 $
b01011010 &
b00000000000000000000000000001011 #
b01011010 %
1&
#115
0#
0&
#120
1#
b00000000000000000000000000001100 $
b00000000000000000000000000001100 #
1&
#125
0#
0&
#130
1#
b00000000000000000000000000001101 $
0%
b10100101 &
b00000000000000000000000000001101 #
0$
b10100101 %
1&
#135
0#
0&
#140
1#
b00000000000000000000000000001110 $
b00000000000000000000000000001110 #
1&
#145
0#
0&
#150
1#
b00000000000000000000000000001111 $
b11111000 &
b00000000000000000000000000001111 #
b11111000 %
1&
#155
0#
0&
#160
1#
b00000000000000000000000000010000 $
1%
b11110111 &
b00000000000000000000000000010000 #
1$
b11110111 %
1&
#165
0#
0&
#170
1#
b00000000000000000000000000010001 $
0%
b00000000000000000000000000010001 #
0$
1&
#175
0#
0&
#180
1#
b00000000000000000000000000010010 $
1%
b11110110 &
b00000000000000000000000000010010 #
1$
b11110110 %
1&
#185
0#
0&
#190
1#
b00000000000000000000000000010011 $
0%
b00000000000000000000000000010011 #
0$
1&
#195
0#
0&
#200
1#
b00000000000000000000000000010100 $
1%
b11110101 &
b00000000000000000000000000010100 #
1$
b11110101 %
1&
#205
0#
0&
#210
1#
b00000000000000000000000000010101 $
0%
b00000000000000000000000000010101 #
0$
1&
#215
0#
0&
#220
1#
b00000000000000000000000000010110 $
1%
b11110100 &
b00000000000000000000000000010110 #
1$
b11110100 %
1&
#225
0#
0&
#230
1#
b00000000000000000000000000010111 $
0%
b00000000000000000000000000010111 #
0$
1&
#235
0#
0&
#240
1#
b00000000000000000000000000011000 $
1%
b11110011 &
b00000000000000000000000000011000 #
1$
b11110011 %
1&
#245
0#
0&
#250
1#
b00000000000000000000000000011001 $
0%
b00000000000000000000000000011001 #
0$
1&
#255
0#
0&
#260
1#
b00000000000000000000000000011010 $
1%
b11110010 &
b00000000000000000000000000011010 #
1$
b11110010 %
1&
#265
0#
0&
#270
1#
b00000000000000000000000000011011 $
0%
b00000000000000000000000000011011 #
0$
1&
#275
0#
0&
#280
1#
b00000000000000000000000000011100 $
1%
b11110001 &
b00000000000000000000000000011100 #
1$
b11110001 %
1&
#285
0#
0&
#290
1#
b00000000000000000000000000011101 $
0%
b00000000000000000000000000011101 #
0$
1&
#295
0#
0&
#300
1#
b00000000000000000000000000011110 $
1%
b11110000 &
b00000000000000000000000000011110 #
1$
b11110000 %
1&
#305
0#
0&
#310
1#
b00000000000000000000000000011111 $
0%
b00000000000000000000000000011111 #
0$
1&

View File

@ -1,211 +1,210 @@
$version Generated by VerilatedVcd $end
$date Sun Dec 19 14:45:16 2021 $end
$timescale 1ps $end
$scope module top $end
$var wire 1 # clk $end
$var wire 1 & clk $end
$scope module t $end
$var wire 1 # clk $end
$var wire 32 $ cyc [31:0] $end
$var wire 1 % var_1 $end
$var wire 8 & var_8 [7:0] $end
$var wire 1 & clk $end
$var wire 32 # cyc [31:0] $end
$var wire 1 $ var_1 $end
$var wire 8 % var_8 [7:0] $end
$upscope $end
$upscope $end
$enddefinitions $end
#0
0#
b00000000000000000000000000000000 $
0%
b00000000 &
b00000000000000000000000000000000 #
0$
b00000000 %
0&
#10
1#
b00000000000000000000000000000001 $
b00000000000000000000000000000001 #
1&
#15
0#
0&
#20
1#
b00000000000000000000000000000010 $
1%
b00000000000000000000000000000010 #
1$
1&
#25
0#
0&
#30
1#
b00000000000000000000000000000011 $
0%
b00000001 &
b00000000000000000000000000000011 #
0$
b00000001 %
1&
#35
0#
0&
#40
1#
b00000000000000000000000000000100 $
1%
b00000000000000000000000000000100 #
1$
1&
#45
0#
0&
#50
1#
b00000000000000000000000000000101 $
0%
b00000010 &
b00000000000000000000000000000101 #
0$
b00000010 %
1&
#55
0#
0&
#60
1#
b00000000000000000000000000000110 $
1%
b00000000000000000000000000000110 #
1$
1&
#65
0#
0&
#70
1#
b00000000000000000000000000000111 $
0%
b00000011 &
b00000000000000000000000000000111 #
0$
b00000011 %
1&
#75
0#
0&
#80
1#
b00000000000000000000000000001000 $
1%
b00000000000000000000000000001000 #
1$
1&
#85
0#
0&
#90
1#
b00000000000000000000000000001001 $
0%
b00000100 &
b00000000000000000000000000001001 #
0$
b00000100 %
1&
#95
0#
0&
#100
1#
b00000000000000000000000000001010 $
1%
b00000000000000000000000000001010 #
1$
1&
#105
0#
0&
#110
1#
b00000000000000000000000000001011 $
0%
b00000101 &
b00000000000000000000000000001011 #
0$
b00000101 %
1&
#115
0#
0&
#120
1#
b00000000000000000000000000001100 $
1%
b00000000000000000000000000001100 #
1$
1&
#125
0#
0&
#130
1#
b00000000000000000000000000001101 $
0%
b00000110 &
b00000000000000000000000000001101 #
0$
b00000110 %
1&
#135
0#
0&
#140
1#
b00000000000000000000000000001110 $
1%
b00000000000000000000000000001110 #
1$
1&
#145
0#
0&
#150
1#
b00000000000000000000000000001111 $
b11110101 &
b00000000000000000000000000001111 #
b11110101 %
1&
#155
0#
0&
#160
1#
b00000000000000000000000000010000 $
0%
b00000000000000000000000000010000 #
0$
1&
#165
0#
0&
#170
1#
b00000000000000000000000000010001 $
b01011111 &
b00000000000000000000000000010001 #
b01011111 %
1&
#175
0#
0&
#180
1#
b00000000000000000000000000010010 $
b00000000000000000000000000010010 #
1&
#185
0#
0&
#190
1#
b00000000000000000000000000010011 $
b00000000000000000000000000010011 #
1&
#195
0#
0&
#200
1#
b00000000000000000000000000010100 $
1%
b00001001 &
b00000000000000000000000000010100 #
1$
b00001001 %
1&
#205
0#
0&
#210
1#
b00000000000000000000000000010101 $
b01011010 &
b00000000000000000000000000010101 #
b01011010 %
1&
#215
0#
0&
#220
1#
b00000000000000000000000000010110 $
b00000000000000000000000000010110 #
1&
#225
0#
0&
#230
1#
b00000000000000000000000000010111 $
0%
b10100101 &
b00000000000000000000000000010111 #
0$
b10100101 %
1&
#235
0#
0&
#240
1#
b00000000000000000000000000011000 $
b00000000000000000000000000011000 #
1&
#245
0#
0&
#250
1#
b00000000000000000000000000011001 $
b00001100 &
b00000000000000000000000000011001 #
b00001100 %
1&
#255
0#
0&
#260
1#
b00000000000000000000000000011010 $
1%
b00000000000000000000000000011010 #
1$
1&
#265
0#
0&
#270
1#
b00000000000000000000000000011011 $
0%
b00001101 &
b00000000000000000000000000011011 #
0$
b00001101 %
1&
#275
0#
0&
#280
1#
b00000000000000000000000000011100 $
1%
b00000000000000000000000000011100 #
1$
1&
#285
0#
0&
#290
1#
b00000000000000000000000000011101 $
0%
b00001110 &
b00000000000000000000000000011101 #
0$
b00001110 %
1&
#295
0#
0&
#300
1#
b00000000000000000000000000011110 $
1%
b00000000000000000000000000011110 #
1$
1&
#305
0#
0&
#310
1#
b00000000000000000000000000011111 $
0%
b00001111 &
b00000000000000000000000000011111 #
0$
b00001111 %
1&

View File

@ -1,17 +1,16 @@
$version Generated by VerilatedVcd $end
$date Sun Dec 19 19:39:17 2021 $end
$timescale 1ps $end
$scope module top $end
$var wire 1 # clk $end
$var wire 1 # clk $end
$var wire 1 $ rst $end
$var wire 32 % cyc [31:0] $end
$var wire 1 $ rst $end
$scope module t $end
$var wire 1 # clk $end
$var wire 1 # clk $end
$var wire 1 $ rst $end
$var wire 32 % cyc [31:0] $end
$var wire 1 & net_1 $end
$var wire 8 ' net_8 [7:0] $end
$var wire 1 $ rst $end
$var wire 1 & net_1 $end
$var wire 8 ' net_8 [7:0] $end
$upscope $end
$upscope $end
$enddefinitions $end

View File

@ -1,17 +1,16 @@
$version Generated by VerilatedVcd $end
$date Sun Dec 19 19:26:33 2021 $end
$timescale 1ps $end
$scope module top $end
$var wire 1 # clk $end
$var wire 1 # clk $end
$var wire 1 $ rst $end
$var wire 32 % cyc [31:0] $end
$var wire 1 $ rst $end
$scope module t $end
$var wire 1 # clk $end
$var wire 1 # clk $end
$var wire 1 $ rst $end
$var wire 32 % cyc [31:0] $end
$var wire 1 $ rst $end
$var wire 1 & var_1 $end
$var wire 8 ' var_8 [7:0] $end
$var wire 1 & var_1 $end
$var wire 8 ' var_8 [7:0] $end
$upscope $end
$upscope $end
$enddefinitions $end

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,234 +1,297 @@
$version Generated by VerilatedVcd $end
$date Thu Apr 14 07:06:40 2022 $end
$timescale 1ps $end
$scope module top $end
$var wire 1 0 clk $end
$var wire 1 0 clk $end
$scope module t $end
$var wire 1 0 clk $end
$var wire 1 0 clk $end
$var wire 32 # cyc [31:0] $end
$scope module a $end
$scope module ac1 $end
$scope module intf_for_check $end
$var wire 1 0 clk $end
$var wire 32 # cyc [31:0] $end
$var wire 32 $ value [31:0] $end
$scope module the_struct $end
$var wire 32 % val100 [31:0] $end
$var wire 32 & val200 [31:0] $end
$upscope $end
$upscope $end
$scope module intf_1 $end
$var wire 1 0 clk $end
$var wire 32 # cyc [31:0] $end
$var wire 32 $ value [31:0] $end
$scope module the_struct $end
$var wire 32 % val100 [31:0] $end
$var wire 32 & val200 [31:0] $end
$upscope $end
$scope module ac2 $end
$scope module intf_for_check $end
$var wire 1 0 clk $end
$var wire 32 # cyc [31:0] $end
$var wire 32 ' value [31:0] $end
$scope module the_struct $end
$var wire 32 ( val100 [31:0] $end
$var wire 32 ) val200 [31:0] $end
$upscope $end
$upscope $end
$upscope $end
$scope module ac3 $end
$scope module intf_for_check $end
$var wire 1 0 clk $end
$var wire 32 # cyc [31:0] $end
$var wire 32 * value [31:0] $end
$scope module the_struct $end
$var wire 32 + val100 [31:0] $end
$var wire 32 , val200 [31:0] $end
$upscope $end
$upscope $end
$upscope $end
$scope module as3 $end
$scope module intf_for_struct $end
$var wire 1 0 clk $end
$var wire 32 # cyc [31:0] $end
$var wire 32 * value [31:0] $end
$scope module the_struct $end
$var wire 32 + val100 [31:0] $end
$var wire 32 , val200 [31:0] $end
$upscope $end
$upscope $end
$upscope $end
$scope module intf_in_sub_all $end
$var wire 1 0 clk $end
$scope module inner $end
$var wire 32 # cyc [31:0] $end
$var wire 32 * value [31:0] $end
$scope module inner $end
$var wire 32 # cyc [31:0] $end
$var wire 32 3 value [31:0] $end
$upscope $end
$scope module the_struct $end
$var wire 32 + val100 [31:0] $end
$var wire 32 , val200 [31:0] $end
$upscope $end
$upscope $end
$scope module intf_one $end
$var wire 1 0 clk $end
$var wire 32 # cyc [31:0] $end
$var wire 32 $ value [31:0] $end
$scope module the_struct $end
$var wire 32 % val100 [31:0] $end
$var wire 32 & val200 [31:0] $end
$upscope $end
$upscope $end
$scope module intf_two $end
$var wire 1 0 clk $end
$var wire 32 # cyc [31:0] $end
$var wire 32 ' value [31:0] $end
$scope module the_struct $end
$var wire 32 ( val100 [31:0] $end
$var wire 32 ) val200 [31:0] $end
$upscope $end
$var wire 32 1 value [31:0] $end
$upscope $end
$upscope $end
$scope module abcdefghijklmnopqrstuvwxyz $end
$scope module ac1 $end
$scope module intf_for_check $end
$var wire 1 0 clk $end
$var wire 32 # cyc [31:0] $end
$var wire 32 ' value [31:0] $end
$scope module the_struct $end
$var wire 32 ( val100 [31:0] $end
$var wire 32 ) val200 [31:0] $end
$upscope $end
$upscope $end
$scope module intf_2 $end
$var wire 1 0 clk $end
$var wire 32 # cyc [31:0] $end
$var wire 32 ' value [31:0] $end
$scope module the_struct $end
$var wire 32 ( val100 [31:0] $end
$var wire 32 ) val200 [31:0] $end
$upscope $end
$scope module ac2 $end
$scope module intf_for_check $end
$var wire 1 0 clk $end
$var wire 32 # cyc [31:0] $end
$var wire 32 $ value [31:0] $end
$scope module the_struct $end
$var wire 32 % val100 [31:0] $end
$var wire 32 & val200 [31:0] $end
$upscope $end
$upscope $end
$upscope $end
$scope module ac3 $end
$scope module intf_for_check $end
$var wire 1 0 clk $end
$var wire 32 # cyc [31:0] $end
$var wire 32 - value [31:0] $end
$scope module the_struct $end
$var wire 32 . val100 [31:0] $end
$var wire 32 / val200 [31:0] $end
$upscope $end
$upscope $end
$upscope $end
$scope module as3 $end
$scope module intf_for_struct $end
$var wire 1 0 clk $end
$var wire 32 # cyc [31:0] $end
$var wire 32 - value [31:0] $end
$scope module the_struct $end
$var wire 32 . val100 [31:0] $end
$var wire 32 / val200 [31:0] $end
$upscope $end
$upscope $end
$upscope $end
$scope module intf_in_sub_all $end
$var wire 1 0 clk $end
$scope module inner $end
$var wire 32 # cyc [31:0] $end
$var wire 32 - value [31:0] $end
$scope module inner $end
$var wire 32 # cyc [31:0] $end
$var wire 32 4 value [31:0] $end
$upscope $end
$scope module the_struct $end
$var wire 32 . val100 [31:0] $end
$var wire 32 / val200 [31:0] $end
$upscope $end
$upscope $end
$scope module intf_one $end
$var wire 1 0 clk $end
$var wire 32 # cyc [31:0] $end
$var wire 32 ' value [31:0] $end
$scope module the_struct $end
$var wire 32 ( val100 [31:0] $end
$var wire 32 ) val200 [31:0] $end
$upscope $end
$upscope $end
$scope module intf_two $end
$var wire 1 0 clk $end
$var wire 32 # cyc [31:0] $end
$var wire 32 $ value [31:0] $end
$scope module the_struct $end
$var wire 32 % val100 [31:0] $end
$var wire 32 & val200 [31:0] $end
$upscope $end
$var wire 32 2 value [31:0] $end
$upscope $end
$upscope $end
$scope module c1 $end
$scope module intf_for_check $end
$var wire 1 0 clk $end
$var wire 1 0 clk $end
$var wire 32 # cyc [31:0] $end
$var wire 32 $ value [31:0] $end
$scope module the_struct $end
$var wire 32 % val100 [31:0] $end
$var wire 32 & val200 [31:0] $end
$upscope $end
$scope module inner $end
$var wire 32 # cyc [31:0] $end
$var wire 32 1 value [31:0] $end
$upscope $end
$upscope $end
$upscope $end
$scope module c2 $end
$scope module intf_for_check $end
$var wire 1 0 clk $end
$var wire 1 0 clk $end
$var wire 32 # cyc [31:0] $end
$var wire 32 ' value [31:0] $end
$scope module the_struct $end
$var wire 32 ( val100 [31:0] $end
$var wire 32 ) val200 [31:0] $end
$upscope $end
$scope module inner $end
$var wire 32 # cyc [31:0] $end
$var wire 32 2 value [31:0] $end
$upscope $end
$upscope $end
$upscope $end
$scope module intf_1 $end
$var wire 1 0 clk $end
$var wire 32 # cyc [31:0] $end
$var wire 32 $ value [31:0] $end
$scope module inner $end
$var wire 32 # cyc [31:0] $end
$var wire 32 1 value [31:0] $end
$upscope $end
$scope module the_struct $end
$var wire 32 % val100 [31:0] $end
$var wire 32 & val200 [31:0] $end
$upscope $end
$upscope $end
$scope module intf_2 $end
$var wire 1 0 clk $end
$var wire 32 # cyc [31:0] $end
$var wire 32 ' value [31:0] $end
$scope module inner $end
$var wire 32 # cyc [31:0] $end
$var wire 32 2 value [31:0] $end
$upscope $end
$scope module the_struct $end
$var wire 32 ( val100 [31:0] $end
$var wire 32 ) val200 [31:0] $end
$upscope $end
$upscope $end
$scope module s1 $end
$scope module intf_for_struct $end
$var wire 1 0 clk $end
$scope module a $end
$scope module intf_one $end
$var wire 1 0 clk $end
$var wire 32 # cyc [31:0] $end
$var wire 32 $ value [31:0] $end
$scope module the_struct $end
$var wire 32 % val100 [31:0] $end
$var wire 32 & val200 [31:0] $end
$upscope $end
$scope module inner $end
$var wire 32 # cyc [31:0] $end
$var wire 32 1 value [31:0] $end
$upscope $end
$upscope $end
$upscope $end
$scope module s2 $end
$scope module intf_for_struct $end
$var wire 1 0 clk $end
$scope module intf_two $end
$var wire 1 0 clk $end
$var wire 32 # cyc [31:0] $end
$var wire 32 ' value [31:0] $end
$scope module the_struct $end
$var wire 32 ( val100 [31:0] $end
$var wire 32 ) val200 [31:0] $end
$upscope $end
$scope module inner $end
$var wire 32 # cyc [31:0] $end
$var wire 32 2 value [31:0] $end
$upscope $end
$upscope $end
$scope module intf_in_sub_all $end
$var wire 1 0 clk $end
$var wire 32 # cyc [31:0] $end
$var wire 32 * value [31:0] $end
$scope module the_struct $end
$var wire 32 + val100 [31:0] $end
$var wire 32 , val200 [31:0] $end
$upscope $end
$scope module inner $end
$var wire 32 # cyc [31:0] $end
$var wire 32 3 value [31:0] $end
$upscope $end
$upscope $end
$scope module ac1 $end
$scope module intf_for_check $end
$var wire 1 0 clk $end
$var wire 32 # cyc [31:0] $end
$var wire 32 $ value [31:0] $end
$scope module the_struct $end
$var wire 32 % val100 [31:0] $end
$var wire 32 & val200 [31:0] $end
$upscope $end
$scope module inner $end
$var wire 32 # cyc [31:0] $end
$var wire 32 1 value [31:0] $end
$upscope $end
$upscope $end
$upscope $end
$scope module ac2 $end
$scope module intf_for_check $end
$var wire 1 0 clk $end
$var wire 32 # cyc [31:0] $end
$var wire 32 ' value [31:0] $end
$scope module the_struct $end
$var wire 32 ( val100 [31:0] $end
$var wire 32 ) val200 [31:0] $end
$upscope $end
$scope module inner $end
$var wire 32 # cyc [31:0] $end
$var wire 32 2 value [31:0] $end
$upscope $end
$upscope $end
$upscope $end
$scope module ac3 $end
$scope module intf_for_check $end
$var wire 1 0 clk $end
$var wire 32 # cyc [31:0] $end
$var wire 32 * value [31:0] $end
$scope module the_struct $end
$var wire 32 + val100 [31:0] $end
$var wire 32 , val200 [31:0] $end
$upscope $end
$scope module inner $end
$var wire 32 # cyc [31:0] $end
$var wire 32 3 value [31:0] $end
$upscope $end
$upscope $end
$upscope $end
$scope module as3 $end
$scope module intf_for_struct $end
$var wire 1 0 clk $end
$var wire 32 # cyc [31:0] $end
$var wire 32 * value [31:0] $end
$scope module the_struct $end
$var wire 32 + val100 [31:0] $end
$var wire 32 , val200 [31:0] $end
$upscope $end
$scope module inner $end
$var wire 32 # cyc [31:0] $end
$var wire 32 3 value [31:0] $end
$upscope $end
$upscope $end
$upscope $end
$upscope $end
$scope module abcdefghijklmnopqrstuvwxyz $end
$scope module intf_one $end
$var wire 1 0 clk $end
$var wire 32 # cyc [31:0] $end
$var wire 32 ' value [31:0] $end
$scope module the_struct $end
$var wire 32 ( val100 [31:0] $end
$var wire 32 ) val200 [31:0] $end
$upscope $end
$scope module inner $end
$var wire 32 # cyc [31:0] $end
$var wire 32 2 value [31:0] $end
$upscope $end
$upscope $end
$scope module intf_two $end
$var wire 1 0 clk $end
$var wire 32 # cyc [31:0] $end
$var wire 32 $ value [31:0] $end
$scope module the_struct $end
$var wire 32 % val100 [31:0] $end
$var wire 32 & val200 [31:0] $end
$upscope $end
$scope module inner $end
$var wire 32 # cyc [31:0] $end
$var wire 32 1 value [31:0] $end
$upscope $end
$upscope $end
$scope module intf_in_sub_all $end
$var wire 1 0 clk $end
$var wire 32 # cyc [31:0] $end
$var wire 32 - value [31:0] $end
$scope module the_struct $end
$var wire 32 . val100 [31:0] $end
$var wire 32 / val200 [31:0] $end
$upscope $end
$scope module inner $end
$var wire 32 # cyc [31:0] $end
$var wire 32 4 value [31:0] $end
$upscope $end
$upscope $end
$scope module ac1 $end
$scope module intf_for_check $end
$var wire 1 0 clk $end
$var wire 32 # cyc [31:0] $end
$var wire 32 ' value [31:0] $end
$scope module the_struct $end
$var wire 32 ( val100 [31:0] $end
$var wire 32 ) val200 [31:0] $end
$upscope $end
$scope module inner $end
$var wire 32 # cyc [31:0] $end
$var wire 32 2 value [31:0] $end
$upscope $end
$upscope $end
$upscope $end
$scope module ac2 $end
$scope module intf_for_check $end
$var wire 1 0 clk $end
$var wire 32 # cyc [31:0] $end
$var wire 32 $ value [31:0] $end
$scope module the_struct $end
$var wire 32 % val100 [31:0] $end
$var wire 32 & val200 [31:0] $end
$upscope $end
$scope module inner $end
$var wire 32 # cyc [31:0] $end
$var wire 32 1 value [31:0] $end
$upscope $end
$upscope $end
$upscope $end
$scope module ac3 $end
$scope module intf_for_check $end
$var wire 1 0 clk $end
$var wire 32 # cyc [31:0] $end
$var wire 32 - value [31:0] $end
$scope module the_struct $end
$var wire 32 . val100 [31:0] $end
$var wire 32 / val200 [31:0] $end
$upscope $end
$scope module inner $end
$var wire 32 # cyc [31:0] $end
$var wire 32 4 value [31:0] $end
$upscope $end
$upscope $end
$upscope $end
$scope module as3 $end
$scope module intf_for_struct $end
$var wire 1 0 clk $end
$var wire 32 # cyc [31:0] $end
$var wire 32 - value [31:0] $end
$scope module the_struct $end
$var wire 32 . val100 [31:0] $end
$var wire 32 / val200 [31:0] $end
$upscope $end
$scope module inner $end
$var wire 32 # cyc [31:0] $end
$var wire 32 4 value [31:0] $end
$upscope $end
$upscope $end
$upscope $end
$upscope $end
$scope module s1 $end
$scope module intf_for_struct $end
$var wire 1 0 clk $end
$var wire 32 # cyc [31:0] $end
$var wire 32 $ value [31:0] $end
$scope module the_struct $end
$var wire 32 % val100 [31:0] $end
$var wire 32 & val200 [31:0] $end
$upscope $end
$scope module inner $end
$var wire 32 # cyc [31:0] $end
$var wire 32 1 value [31:0] $end
$upscope $end
$upscope $end
$upscope $end
$scope module s2 $end
$scope module intf_for_struct $end
$var wire 1 0 clk $end
$var wire 32 # cyc [31:0] $end
$var wire 32 ' value [31:0] $end
$scope module the_struct $end
$var wire 32 ( val100 [31:0] $end
$var wire 32 ) val200 [31:0] $end
$upscope $end
$scope module inner $end
$var wire 32 # cyc [31:0] $end
$var wire 32 2 value [31:0] $end
$upscope $end
$upscope $end
$upscope $end
$upscope $end

View File

@ -1,5 +1,5 @@
$date
Thu Apr 14 07:06:50 2022
Tue Oct 24 11:00:16 2023
$end
$version
@ -13,15 +13,84 @@ $var wire 1 ! clk $end
$scope module t $end
$var wire 1 ! clk $end
$var integer 32 " cyc [31:0] $end
$scope interface intf_1 $end
$var wire 1 ! clk $end
$var wire 32 " cyc [31:0] $end
$var integer 32 # value [31:0] $end
$scope struct the_struct $end
$var integer 32 $ val100 [31:0] $end
$var integer 32 % val200 [31:0] $end
$upscope $end
$scope interface inner $end
$var wire 32 " cyc [31:0] $end
$var integer 32 & value [31:0] $end
$upscope $end
$upscope $end
$scope interface intf_2 $end
$var wire 1 ! clk $end
$var wire 32 " cyc [31:0] $end
$var integer 32 ' value [31:0] $end
$scope struct the_struct $end
$var integer 32 ( val100 [31:0] $end
$var integer 32 ) val200 [31:0] $end
$upscope $end
$scope interface inner $end
$var wire 32 " cyc [31:0] $end
$var integer 32 * value [31:0] $end
$upscope $end
$upscope $end
$scope module a $end
$scope interface intf_one $end
$var wire 1 ! clk $end
$var wire 32 " cyc [31:0] $end
$var integer 32 # value [31:0] $end
$scope struct the_struct $end
$var integer 32 $ val100 [31:0] $end
$var integer 32 % val200 [31:0] $end
$upscope $end
$scope interface inner $end
$var wire 32 " cyc [31:0] $end
$var integer 32 & value [31:0] $end
$upscope $end
$upscope $end
$scope interface intf_two $end
$var wire 1 ! clk $end
$var wire 32 " cyc [31:0] $end
$var integer 32 ' value [31:0] $end
$scope struct the_struct $end
$var integer 32 ( val100 [31:0] $end
$var integer 32 ) val200 [31:0] $end
$upscope $end
$scope interface inner $end
$var wire 32 " cyc [31:0] $end
$var integer 32 * value [31:0] $end
$upscope $end
$upscope $end
$scope interface intf_in_sub_all $end
$var wire 1 ! clk $end
$var wire 32 " cyc [31:0] $end
$var integer 32 + value [31:0] $end
$scope struct the_struct $end
$var integer 32 , val100 [31:0] $end
$var integer 32 - val200 [31:0] $end
$upscope $end
$scope interface inner $end
$var wire 32 " cyc [31:0] $end
$var integer 32 . value [31:0] $end
$upscope $end
$upscope $end
$scope module ac1 $end
$scope interface intf_for_check $end
$var wire 1 ! clk $end
$var wire 32 " cyc [31:0] $end
$var integer 32 # value [31:0] $end
$scope struct the_struct $end
$var logic 32 $ val100 [31:0] $end
$var logic 32 % val200 [31:0] $end
$var integer 32 $ val100 [31:0] $end
$var integer 32 % val200 [31:0] $end
$upscope $end
$scope interface inner $end
$var wire 32 " cyc [31:0] $end
$var integer 32 & value [31:0] $end
$upscope $end
$upscope $end
$upscope $end
@ -29,10 +98,14 @@ $scope module ac2 $end
$scope interface intf_for_check $end
$var wire 1 ! clk $end
$var wire 32 " cyc [31:0] $end
$var integer 32 & value [31:0] $end
$var integer 32 ' value [31:0] $end
$scope struct the_struct $end
$var logic 32 ' val100 [31:0] $end
$var logic 32 ( val200 [31:0] $end
$var integer 32 ( val100 [31:0] $end
$var integer 32 ) val200 [31:0] $end
$upscope $end
$scope interface inner $end
$var wire 32 " cyc [31:0] $end
$var integer 32 * value [31:0] $end
$upscope $end
$upscope $end
$upscope $end
@ -40,10 +113,14 @@ $scope module ac3 $end
$scope interface intf_for_check $end
$var wire 1 ! clk $end
$var wire 32 " cyc [31:0] $end
$var integer 32 ) value [31:0] $end
$var integer 32 + value [31:0] $end
$scope struct the_struct $end
$var logic 32 * val100 [31:0] $end
$var logic 32 + val200 [31:0] $end
$var integer 32 , val100 [31:0] $end
$var integer 32 - val200 [31:0] $end
$upscope $end
$scope interface inner $end
$var wire 32 " cyc [31:0] $end
$var integer 32 . value [31:0] $end
$upscope $end
$upscope $end
$upscope $end
@ -51,54 +128,70 @@ $scope module as3 $end
$scope interface intf_for_struct $end
$var wire 1 ! clk $end
$var wire 32 " cyc [31:0] $end
$var integer 32 ) value [31:0] $end
$var integer 32 + value [31:0] $end
$scope struct the_struct $end
$var logic 32 * val100 [31:0] $end
$var logic 32 + val200 [31:0] $end
$var integer 32 , val100 [31:0] $end
$var integer 32 - val200 [31:0] $end
$upscope $end
$upscope $end
$upscope $end
$scope interface intf_in_sub_all $end
$scope interface inner $end
$var wire 32 " cyc [31:0] $end
$var integer 32 , value [31:0] $end
$var integer 32 . value [31:0] $end
$upscope $end
$var wire 1 ! clk $end
$var wire 32 " cyc [31:0] $end
$var integer 32 ) value [31:0] $end
$scope struct the_struct $end
$var logic 32 * val100 [31:0] $end
$var logic 32 + val200 [31:0] $end
$upscope $end
$upscope $end
$scope interface intf_one $end
$var wire 1 ! clk $end
$var wire 32 " cyc [31:0] $end
$var integer 32 # value [31:0] $end
$scope struct the_struct $end
$var logic 32 $ val100 [31:0] $end
$var logic 32 % val200 [31:0] $end
$upscope $end
$upscope $end
$scope interface intf_two $end
$var wire 1 ! clk $end
$var wire 32 " cyc [31:0] $end
$var integer 32 & value [31:0] $end
$scope struct the_struct $end
$var logic 32 ' val100 [31:0] $end
$var logic 32 ( val200 [31:0] $end
$upscope $end
$upscope $end
$upscope $end
$scope module abcdefghijklmnopqrstuvwxyz $end
$scope interface intf_one $end
$var wire 1 ! clk $end
$var wire 32 " cyc [31:0] $end
$var integer 32 ' value [31:0] $end
$scope struct the_struct $end
$var integer 32 ( val100 [31:0] $end
$var integer 32 ) val200 [31:0] $end
$upscope $end
$scope interface inner $end
$var wire 32 " cyc [31:0] $end
$var integer 32 * value [31:0] $end
$upscope $end
$upscope $end
$scope interface intf_two $end
$var wire 1 ! clk $end
$var wire 32 " cyc [31:0] $end
$var integer 32 # value [31:0] $end
$scope struct the_struct $end
$var integer 32 $ val100 [31:0] $end
$var integer 32 % val200 [31:0] $end
$upscope $end
$scope interface inner $end
$var wire 32 " cyc [31:0] $end
$var integer 32 & value [31:0] $end
$upscope $end
$upscope $end
$scope interface intf_in_sub_all $end
$var wire 1 ! clk $end
$var wire 32 " cyc [31:0] $end
$var integer 32 / value [31:0] $end
$scope struct the_struct $end
$var integer 32 0 val100 [31:0] $end
$var integer 32 1 val200 [31:0] $end
$upscope $end
$scope interface inner $end
$var wire 32 " cyc [31:0] $end
$var integer 32 2 value [31:0] $end
$upscope $end
$upscope $end
$scope module ac1 $end
$scope interface intf_for_check $end
$var wire 1 ! clk $end
$var wire 32 " cyc [31:0] $end
$var integer 32 & value [31:0] $end
$var integer 32 ' value [31:0] $end
$scope struct the_struct $end
$var logic 32 ' val100 [31:0] $end
$var logic 32 ( val200 [31:0] $end
$var integer 32 ( val100 [31:0] $end
$var integer 32 ) val200 [31:0] $end
$upscope $end
$scope interface inner $end
$var wire 32 " cyc [31:0] $end
$var integer 32 * value [31:0] $end
$upscope $end
$upscope $end
$upscope $end
@ -108,8 +201,12 @@ $var wire 1 ! clk $end
$var wire 32 " cyc [31:0] $end
$var integer 32 # value [31:0] $end
$scope struct the_struct $end
$var logic 32 $ val100 [31:0] $end
$var logic 32 % val200 [31:0] $end
$var integer 32 $ val100 [31:0] $end
$var integer 32 % val200 [31:0] $end
$upscope $end
$scope interface inner $end
$var wire 32 " cyc [31:0] $end
$var integer 32 & value [31:0] $end
$upscope $end
$upscope $end
$upscope $end
@ -117,10 +214,14 @@ $scope module ac3 $end
$scope interface intf_for_check $end
$var wire 1 ! clk $end
$var wire 32 " cyc [31:0] $end
$var integer 32 - value [31:0] $end
$var integer 32 / value [31:0] $end
$scope struct the_struct $end
$var logic 32 . val100 [31:0] $end
$var logic 32 / val200 [31:0] $end
$var integer 32 0 val100 [31:0] $end
$var integer 32 1 val200 [31:0] $end
$upscope $end
$scope interface inner $end
$var wire 32 " cyc [31:0] $end
$var integer 32 2 value [31:0] $end
$upscope $end
$upscope $end
$upscope $end
@ -128,42 +229,15 @@ $scope module as3 $end
$scope interface intf_for_struct $end
$var wire 1 ! clk $end
$var wire 32 " cyc [31:0] $end
$var integer 32 - value [31:0] $end
$var integer 32 / value [31:0] $end
$scope struct the_struct $end
$var logic 32 . val100 [31:0] $end
$var logic 32 / val200 [31:0] $end
$var integer 32 0 val100 [31:0] $end
$var integer 32 1 val200 [31:0] $end
$upscope $end
$upscope $end
$upscope $end
$scope interface intf_in_sub_all $end
$scope interface inner $end
$var wire 32 " cyc [31:0] $end
$var integer 32 0 value [31:0] $end
$var integer 32 2 value [31:0] $end
$upscope $end
$var wire 1 ! clk $end
$var wire 32 " cyc [31:0] $end
$var integer 32 - value [31:0] $end
$scope struct the_struct $end
$var logic 32 . val100 [31:0] $end
$var logic 32 / val200 [31:0] $end
$upscope $end
$upscope $end
$scope interface intf_one $end
$var wire 1 ! clk $end
$var wire 32 " cyc [31:0] $end
$var integer 32 & value [31:0] $end
$scope struct the_struct $end
$var logic 32 ' val100 [31:0] $end
$var logic 32 ( val200 [31:0] $end
$upscope $end
$upscope $end
$scope interface intf_two $end
$var wire 1 ! clk $end
$var wire 32 " cyc [31:0] $end
$var integer 32 # value [31:0] $end
$scope struct the_struct $end
$var logic 32 $ val100 [31:0] $end
$var logic 32 % val200 [31:0] $end
$upscope $end
$upscope $end
$upscope $end
@ -173,8 +247,12 @@ $var wire 1 ! clk $end
$var wire 32 " cyc [31:0] $end
$var integer 32 # value [31:0] $end
$scope struct the_struct $end
$var logic 32 $ val100 [31:0] $end
$var logic 32 % val200 [31:0] $end
$var integer 32 $ val100 [31:0] $end
$var integer 32 % val200 [31:0] $end
$upscope $end
$scope interface inner $end
$var wire 32 " cyc [31:0] $end
$var integer 32 & value [31:0] $end
$upscope $end
$upscope $end
$upscope $end
@ -182,37 +260,15 @@ $scope module c2 $end
$scope interface intf_for_check $end
$var wire 1 ! clk $end
$var wire 32 " cyc [31:0] $end
$var integer 32 & value [31:0] $end
$var integer 32 ' value [31:0] $end
$scope struct the_struct $end
$var logic 32 ' val100 [31:0] $end
$var logic 32 ( val200 [31:0] $end
$var integer 32 ( val100 [31:0] $end
$var integer 32 ) val200 [31:0] $end
$upscope $end
$upscope $end
$upscope $end
$scope interface intf_1 $end
$scope interface inner $end
$var wire 32 " cyc [31:0] $end
$var integer 32 1 value [31:0] $end
$var integer 32 * value [31:0] $end
$upscope $end
$var wire 1 ! clk $end
$var wire 32 " cyc [31:0] $end
$var integer 32 # value [31:0] $end
$scope struct the_struct $end
$var logic 32 $ val100 [31:0] $end
$var logic 32 % val200 [31:0] $end
$upscope $end
$upscope $end
$scope interface intf_2 $end
$scope interface inner $end
$var wire 32 " cyc [31:0] $end
$var integer 32 2 value [31:0] $end
$upscope $end
$var wire 1 ! clk $end
$var wire 32 " cyc [31:0] $end
$var integer 32 & value [31:0] $end
$scope struct the_struct $end
$var logic 32 ' val100 [31:0] $end
$var logic 32 ( val200 [31:0] $end
$upscope $end
$upscope $end
$scope module s1 $end
@ -221,8 +277,12 @@ $var wire 1 ! clk $end
$var wire 32 " cyc [31:0] $end
$var integer 32 # value [31:0] $end
$scope struct the_struct $end
$var logic 32 $ val100 [31:0] $end
$var logic 32 % val200 [31:0] $end
$var integer 32 $ val100 [31:0] $end
$var integer 32 % val200 [31:0] $end
$upscope $end
$scope interface inner $end
$var wire 32 " cyc [31:0] $end
$var integer 32 & value [31:0] $end
$upscope $end
$upscope $end
$upscope $end
@ -230,10 +290,14 @@ $scope module s2 $end
$scope interface intf_for_struct $end
$var wire 1 ! clk $end
$var wire 32 " cyc [31:0] $end
$var integer 32 & value [31:0] $end
$var integer 32 ' value [31:0] $end
$scope struct the_struct $end
$var logic 32 ' val100 [31:0] $end
$var logic 32 ( val200 [31:0] $end
$var integer 32 ( val100 [31:0] $end
$var integer 32 ) val200 [31:0] $end
$upscope $end
$scope interface inner $end
$var wire 32 " cyc [31:0] $end
$var integer 32 * value [31:0] $end
$upscope $end
$upscope $end
$upscope $end
@ -243,18 +307,18 @@ $enddefinitions $end
#0
$dumpvars
b00000000000000000000000000000000 2
b00000000000000000000000000000000 1
b00000000000000000000000000000000 0
b00000000000000000000010010110010 /
b00000000000000000000010001001110 .
b00000000000000000000001111101010 -
b00000000000000000000000000000000 ,
b00000000000000000000010010110001 +
b00000000000000000000010001001101 *
b00000000000000000000001111101001 )
b00000000000000000000000011001010 (
b00000000000000000000000001100110 '
b00000000000000000000000000000010 &
b00000000000000000000010010110010 1
b00000000000000000000010001001110 0
b00000000000000000000001111101010 /
b00000000000000000000000000000000 .
b00000000000000000000010010110001 -
b00000000000000000000010001001101 ,
b00000000000000000000001111101001 +
b00000000000000000000000000000000 *
b00000000000000000000000011001010 )
b00000000000000000000000001100110 (
b00000000000000000000000000000010 '
b00000000000000000000000000000000 &
b00000000000000000000000011001001 %
b00000000000000000000000001100101 $
b00000000000000000000000000000001 #
@ -267,28 +331,28 @@ b00000000000000000000000000000001 "
b00000000000000000000000000000010 #
b00000000000000000000000001100110 $
b00000000000000000000000011001010 %
b00000000000000000000000000000011 &
b00000000000000000000000001100111 '
b00000000000000000000000011001011 (
b00000000000000000000001111101010 )
b00000000000000000000010001001110 *
b00000000000000000000010010110010 +
b00000000000000000000001111101011 -
b00000000000000000000010001001111 .
b00000000000000000000010010110011 /
b00000000000000000000000000000011 '
b00000000000000000000000001100111 (
b00000000000000000000000011001011 )
b00000000000000000000001111101010 +
b00000000000000000000010001001110 ,
b00000000000000000000010010110010 -
b00000000000000000000001111101011 /
b00000000000000000000010001001111 0
b00000000000000000000010010110011 1
#15
0!
#20
1!
b00000000000000000000010010110100 /
b00000000000000000000010001010000 .
b00000000000000000000001111101100 -
b00000000000000000000010010110011 +
b00000000000000000000010001001111 *
b00000000000000000000001111101011 )
b00000000000000000000000011001100 (
b00000000000000000000000001101000 '
b00000000000000000000000000000100 &
b00000000000000000000010010110100 1
b00000000000000000000010001010000 0
b00000000000000000000001111101100 /
b00000000000000000000010010110011 -
b00000000000000000000010001001111 ,
b00000000000000000000001111101011 +
b00000000000000000000000011001100 )
b00000000000000000000000001101000 (
b00000000000000000000000000000100 '
b00000000000000000000000011001011 %
b00000000000000000000000001100111 $
b00000000000000000000000000000011 #
@ -301,28 +365,28 @@ b00000000000000000000000000000011 "
b00000000000000000000000000000100 #
b00000000000000000000000001101000 $
b00000000000000000000000011001100 %
b00000000000000000000000000000101 &
b00000000000000000000000001101001 '
b00000000000000000000000011001101 (
b00000000000000000000001111101100 )
b00000000000000000000010001010000 *
b00000000000000000000010010110100 +
b00000000000000000000001111101101 -
b00000000000000000000010001010001 .
b00000000000000000000010010110101 /
b00000000000000000000000000000101 '
b00000000000000000000000001101001 (
b00000000000000000000000011001101 )
b00000000000000000000001111101100 +
b00000000000000000000010001010000 ,
b00000000000000000000010010110100 -
b00000000000000000000001111101101 /
b00000000000000000000010001010001 0
b00000000000000000000010010110101 1
#35
0!
#40
1!
b00000000000000000000010010110110 /
b00000000000000000000010001010010 .
b00000000000000000000001111101110 -
b00000000000000000000010010110101 +
b00000000000000000000010001010001 *
b00000000000000000000001111101101 )
b00000000000000000000000011001110 (
b00000000000000000000000001101010 '
b00000000000000000000000000000110 &
b00000000000000000000010010110110 1
b00000000000000000000010001010010 0
b00000000000000000000001111101110 /
b00000000000000000000010010110101 -
b00000000000000000000010001010001 ,
b00000000000000000000001111101101 +
b00000000000000000000000011001110 )
b00000000000000000000000001101010 (
b00000000000000000000000000000110 '
b00000000000000000000000011001101 %
b00000000000000000000000001101001 $
b00000000000000000000000000000101 #
@ -335,28 +399,28 @@ b00000000000000000000000000000101 "
b00000000000000000000000000000110 #
b00000000000000000000000001101010 $
b00000000000000000000000011001110 %
b00000000000000000000000000000111 &
b00000000000000000000000001101011 '
b00000000000000000000000011001111 (
b00000000000000000000001111101110 )
b00000000000000000000010001010010 *
b00000000000000000000010010110110 +
b00000000000000000000001111101111 -
b00000000000000000000010001010011 .
b00000000000000000000010010110111 /
b00000000000000000000000000000111 '
b00000000000000000000000001101011 (
b00000000000000000000000011001111 )
b00000000000000000000001111101110 +
b00000000000000000000010001010010 ,
b00000000000000000000010010110110 -
b00000000000000000000001111101111 /
b00000000000000000000010001010011 0
b00000000000000000000010010110111 1
#55
0!
#60
1!
b00000000000000000000010010111000 /
b00000000000000000000010001010100 .
b00000000000000000000001111110000 -
b00000000000000000000010010110111 +
b00000000000000000000010001010011 *
b00000000000000000000001111101111 )
b00000000000000000000000011010000 (
b00000000000000000000000001101100 '
b00000000000000000000000000001000 &
b00000000000000000000010010111000 1
b00000000000000000000010001010100 0
b00000000000000000000001111110000 /
b00000000000000000000010010110111 -
b00000000000000000000010001010011 ,
b00000000000000000000001111101111 +
b00000000000000000000000011010000 )
b00000000000000000000000001101100 (
b00000000000000000000000000001000 '
b00000000000000000000000011001111 %
b00000000000000000000000001101011 $
b00000000000000000000000000000111 #
@ -369,28 +433,28 @@ b00000000000000000000000000000111 "
b00000000000000000000000000001000 #
b00000000000000000000000001101100 $
b00000000000000000000000011010000 %
b00000000000000000000000000001001 &
b00000000000000000000000001101101 '
b00000000000000000000000011010001 (
b00000000000000000000001111110000 )
b00000000000000000000010001010100 *
b00000000000000000000010010111000 +
b00000000000000000000001111110001 -
b00000000000000000000010001010101 .
b00000000000000000000010010111001 /
b00000000000000000000000000001001 '
b00000000000000000000000001101101 (
b00000000000000000000000011010001 )
b00000000000000000000001111110000 +
b00000000000000000000010001010100 ,
b00000000000000000000010010111000 -
b00000000000000000000001111110001 /
b00000000000000000000010001010101 0
b00000000000000000000010010111001 1
#75
0!
#80
1!
b00000000000000000000010010111010 /
b00000000000000000000010001010110 .
b00000000000000000000001111110010 -
b00000000000000000000010010111001 +
b00000000000000000000010001010101 *
b00000000000000000000001111110001 )
b00000000000000000000000011010010 (
b00000000000000000000000001101110 '
b00000000000000000000000000001010 &
b00000000000000000000010010111010 1
b00000000000000000000010001010110 0
b00000000000000000000001111110010 /
b00000000000000000000010010111001 -
b00000000000000000000010001010101 ,
b00000000000000000000001111110001 +
b00000000000000000000000011010010 )
b00000000000000000000000001101110 (
b00000000000000000000000000001010 '
b00000000000000000000000011010001 %
b00000000000000000000000001101101 $
b00000000000000000000000000001001 #
@ -403,28 +467,28 @@ b00000000000000000000000000001001 "
b00000000000000000000000000001010 #
b00000000000000000000000001101110 $
b00000000000000000000000011010010 %
b00000000000000000000000000001011 &
b00000000000000000000000001101111 '
b00000000000000000000000011010011 (
b00000000000000000000001111110010 )
b00000000000000000000010001010110 *
b00000000000000000000010010111010 +
b00000000000000000000001111110011 -
b00000000000000000000010001010111 .
b00000000000000000000010010111011 /
b00000000000000000000000000001011 '
b00000000000000000000000001101111 (
b00000000000000000000000011010011 )
b00000000000000000000001111110010 +
b00000000000000000000010001010110 ,
b00000000000000000000010010111010 -
b00000000000000000000001111110011 /
b00000000000000000000010001010111 0
b00000000000000000000010010111011 1
#95
0!
#100
1!
b00000000000000000000010010111100 /
b00000000000000000000010001011000 .
b00000000000000000000001111110100 -
b00000000000000000000010010111011 +
b00000000000000000000010001010111 *
b00000000000000000000001111110011 )
b00000000000000000000000011010100 (
b00000000000000000000000001110000 '
b00000000000000000000000000001100 &
b00000000000000000000010010111100 1
b00000000000000000000010001011000 0
b00000000000000000000001111110100 /
b00000000000000000000010010111011 -
b00000000000000000000010001010111 ,
b00000000000000000000001111110011 +
b00000000000000000000000011010100 )
b00000000000000000000000001110000 (
b00000000000000000000000000001100 '
b00000000000000000000000011010011 %
b00000000000000000000000001101111 $
b00000000000000000000000000001011 #
@ -437,28 +501,28 @@ b00000000000000000000000000001011 "
b00000000000000000000000000001100 #
b00000000000000000000000001110000 $
b00000000000000000000000011010100 %
b00000000000000000000000000001101 &
b00000000000000000000000001110001 '
b00000000000000000000000011010101 (
b00000000000000000000001111110100 )
b00000000000000000000010001011000 *
b00000000000000000000010010111100 +
b00000000000000000000001111110101 -
b00000000000000000000010001011001 .
b00000000000000000000010010111101 /
b00000000000000000000000000001101 '
b00000000000000000000000001110001 (
b00000000000000000000000011010101 )
b00000000000000000000001111110100 +
b00000000000000000000010001011000 ,
b00000000000000000000010010111100 -
b00000000000000000000001111110101 /
b00000000000000000000010001011001 0
b00000000000000000000010010111101 1
#115
0!
#120
1!
b00000000000000000000010010111110 /
b00000000000000000000010001011010 .
b00000000000000000000001111110110 -
b00000000000000000000010010111101 +
b00000000000000000000010001011001 *
b00000000000000000000001111110101 )
b00000000000000000000000011010110 (
b00000000000000000000000001110010 '
b00000000000000000000000000001110 &
b00000000000000000000010010111110 1
b00000000000000000000010001011010 0
b00000000000000000000001111110110 /
b00000000000000000000010010111101 -
b00000000000000000000010001011001 ,
b00000000000000000000001111110101 +
b00000000000000000000000011010110 )
b00000000000000000000000001110010 (
b00000000000000000000000000001110 '
b00000000000000000000000011010101 %
b00000000000000000000000001110001 $
b00000000000000000000000000001101 #
@ -471,28 +535,28 @@ b00000000000000000000000000001101 "
b00000000000000000000000000001110 #
b00000000000000000000000001110010 $
b00000000000000000000000011010110 %
b00000000000000000000000000001111 &
b00000000000000000000000001110011 '
b00000000000000000000000011010111 (
b00000000000000000000001111110110 )
b00000000000000000000010001011010 *
b00000000000000000000010010111110 +
b00000000000000000000001111110111 -
b00000000000000000000010001011011 .
b00000000000000000000010010111111 /
b00000000000000000000000000001111 '
b00000000000000000000000001110011 (
b00000000000000000000000011010111 )
b00000000000000000000001111110110 +
b00000000000000000000010001011010 ,
b00000000000000000000010010111110 -
b00000000000000000000001111110111 /
b00000000000000000000010001011011 0
b00000000000000000000010010111111 1
#135
0!
#140
1!
b00000000000000000000010011000000 /
b00000000000000000000010001011100 .
b00000000000000000000001111111000 -
b00000000000000000000010010111111 +
b00000000000000000000010001011011 *
b00000000000000000000001111110111 )
b00000000000000000000000011011000 (
b00000000000000000000000001110100 '
b00000000000000000000000000010000 &
b00000000000000000000010011000000 1
b00000000000000000000010001011100 0
b00000000000000000000001111111000 /
b00000000000000000000010010111111 -
b00000000000000000000010001011011 ,
b00000000000000000000001111110111 +
b00000000000000000000000011011000 )
b00000000000000000000000001110100 (
b00000000000000000000000000010000 '
b00000000000000000000000011010111 %
b00000000000000000000000001110011 $
b00000000000000000000000000001111 #
@ -505,28 +569,28 @@ b00000000000000000000000000001111 "
b00000000000000000000000000010000 #
b00000000000000000000000001110100 $
b00000000000000000000000011011000 %
b00000000000000000000000000010001 &
b00000000000000000000000001110101 '
b00000000000000000000000011011001 (
b00000000000000000000001111111000 )
b00000000000000000000010001011100 *
b00000000000000000000010011000000 +
b00000000000000000000001111111001 -
b00000000000000000000010001011101 .
b00000000000000000000010011000001 /
b00000000000000000000000000010001 '
b00000000000000000000000001110101 (
b00000000000000000000000011011001 )
b00000000000000000000001111111000 +
b00000000000000000000010001011100 ,
b00000000000000000000010011000000 -
b00000000000000000000001111111001 /
b00000000000000000000010001011101 0
b00000000000000000000010011000001 1
#155
0!
#160
1!
b00000000000000000000010011000010 /
b00000000000000000000010001011110 .
b00000000000000000000001111111010 -
b00000000000000000000010011000001 +
b00000000000000000000010001011101 *
b00000000000000000000001111111001 )
b00000000000000000000000011011010 (
b00000000000000000000000001110110 '
b00000000000000000000000000010010 &
b00000000000000000000010011000010 1
b00000000000000000000010001011110 0
b00000000000000000000001111111010 /
b00000000000000000000010011000001 -
b00000000000000000000010001011101 ,
b00000000000000000000001111111001 +
b00000000000000000000000011011010 )
b00000000000000000000000001110110 (
b00000000000000000000000000010010 '
b00000000000000000000000011011001 %
b00000000000000000000000001110101 $
b00000000000000000000000000010001 #
@ -539,28 +603,28 @@ b00000000000000000000000000010001 "
b00000000000000000000000000010010 #
b00000000000000000000000001110110 $
b00000000000000000000000011011010 %
b00000000000000000000000000010011 &
b00000000000000000000000001110111 '
b00000000000000000000000011011011 (
b00000000000000000000001111111010 )
b00000000000000000000010001011110 *
b00000000000000000000010011000010 +
b00000000000000000000001111111011 -
b00000000000000000000010001011111 .
b00000000000000000000010011000011 /
b00000000000000000000000000010011 '
b00000000000000000000000001110111 (
b00000000000000000000000011011011 )
b00000000000000000000001111111010 +
b00000000000000000000010001011110 ,
b00000000000000000000010011000010 -
b00000000000000000000001111111011 /
b00000000000000000000010001011111 0
b00000000000000000000010011000011 1
#175
0!
#180
1!
b00000000000000000000010011000100 /
b00000000000000000000010001100000 .
b00000000000000000000001111111100 -
b00000000000000000000010011000011 +
b00000000000000000000010001011111 *
b00000000000000000000001111111011 )
b00000000000000000000000011011100 (
b00000000000000000000000001111000 '
b00000000000000000000000000010100 &
b00000000000000000000010011000100 1
b00000000000000000000010001100000 0
b00000000000000000000001111111100 /
b00000000000000000000010011000011 -
b00000000000000000000010001011111 ,
b00000000000000000000001111111011 +
b00000000000000000000000011011100 )
b00000000000000000000000001111000 (
b00000000000000000000000000010100 '
b00000000000000000000000011011011 %
b00000000000000000000000001110111 $
b00000000000000000000000000010011 #
@ -573,28 +637,28 @@ b00000000000000000000000000010011 "
b00000000000000000000000000010100 #
b00000000000000000000000001111000 $
b00000000000000000000000011011100 %
b00000000000000000000000000010101 &
b00000000000000000000000001111001 '
b00000000000000000000000011011101 (
b00000000000000000000001111111100 )
b00000000000000000000010001100000 *
b00000000000000000000010011000100 +
b00000000000000000000001111111101 -
b00000000000000000000010001100001 .
b00000000000000000000010011000101 /
b00000000000000000000000000010101 '
b00000000000000000000000001111001 (
b00000000000000000000000011011101 )
b00000000000000000000001111111100 +
b00000000000000000000010001100000 ,
b00000000000000000000010011000100 -
b00000000000000000000001111111101 /
b00000000000000000000010001100001 0
b00000000000000000000010011000101 1
#195
0!
#200
1!
b00000000000000000000010011000110 /
b00000000000000000000010001100010 .
b00000000000000000000001111111110 -
b00000000000000000000010011000101 +
b00000000000000000000010001100001 *
b00000000000000000000001111111101 )
b00000000000000000000000011011110 (
b00000000000000000000000001111010 '
b00000000000000000000000000010110 &
b00000000000000000000010011000110 1
b00000000000000000000010001100010 0
b00000000000000000000001111111110 /
b00000000000000000000010011000101 -
b00000000000000000000010001100001 ,
b00000000000000000000001111111101 +
b00000000000000000000000011011110 )
b00000000000000000000000001111010 (
b00000000000000000000000000010110 '
b00000000000000000000000011011101 %
b00000000000000000000000001111001 $
b00000000000000000000000000010101 #
@ -607,12 +671,12 @@ b00000000000000000000000000010101 "
b00000000000000000000000000010110 #
b00000000000000000000000001111010 $
b00000000000000000000000011011110 %
b00000000000000000000000000010111 &
b00000000000000000000000001111011 '
b00000000000000000000000011011111 (
b00000000000000000000001111111110 )
b00000000000000000000010001100010 *
b00000000000000000000010011000110 +
b00000000000000000000001111111111 -
b00000000000000000000010001100011 .
b00000000000000000000010011000111 /
b00000000000000000000000000010111 '
b00000000000000000000000001111011 (
b00000000000000000000000011011111 )
b00000000000000000000001111111110 +
b00000000000000000000010001100010 ,
b00000000000000000000010011000110 -
b00000000000000000000001111111111 /
b00000000000000000000010001100011 0
b00000000000000000000010011000111 1

View File

@ -1,5 +1,5 @@
$date
Thu Apr 14 07:06:59 2022
Tue Oct 24 11:06:23 2023
$end
$version
@ -12,15 +12,84 @@ $scope module top $end
$scope module t $end
$var wire 1 ! clk $end
$var integer 32 " cyc [31:0] $end
$scope interface intf_1 $end
$var wire 1 ! clk $end
$var wire 32 " cyc [31:0] $end
$var integer 32 # value [31:0] $end
$scope struct the_struct $end
$var integer 32 $ val100 [31:0] $end
$var integer 32 % val200 [31:0] $end
$upscope $end
$scope interface inner $end
$var wire 32 " cyc [31:0] $end
$var integer 32 & value [31:0] $end
$upscope $end
$upscope $end
$scope interface intf_2 $end
$var wire 1 ! clk $end
$var wire 32 " cyc [31:0] $end
$var integer 32 ' value [31:0] $end
$scope struct the_struct $end
$var integer 32 ( val100 [31:0] $end
$var integer 32 ) val200 [31:0] $end
$upscope $end
$scope interface inner $end
$var wire 32 " cyc [31:0] $end
$var integer 32 * value [31:0] $end
$upscope $end
$upscope $end
$scope module a $end
$scope interface intf_one $end
$var wire 1 ! clk $end
$var wire 32 " cyc [31:0] $end
$var integer 32 # value [31:0] $end
$scope struct the_struct $end
$var integer 32 $ val100 [31:0] $end
$var integer 32 % val200 [31:0] $end
$upscope $end
$scope interface inner $end
$var wire 32 " cyc [31:0] $end
$var integer 32 & value [31:0] $end
$upscope $end
$upscope $end
$scope interface intf_two $end
$var wire 1 ! clk $end
$var wire 32 " cyc [31:0] $end
$var integer 32 ' value [31:0] $end
$scope struct the_struct $end
$var integer 32 ( val100 [31:0] $end
$var integer 32 ) val200 [31:0] $end
$upscope $end
$scope interface inner $end
$var wire 32 " cyc [31:0] $end
$var integer 32 * value [31:0] $end
$upscope $end
$upscope $end
$scope interface intf_in_sub_all $end
$var wire 1 ! clk $end
$var wire 32 " cyc [31:0] $end
$var integer 32 + value [31:0] $end
$scope struct the_struct $end
$var integer 32 , val100 [31:0] $end
$var integer 32 - val200 [31:0] $end
$upscope $end
$scope interface inner $end
$var wire 32 " cyc [31:0] $end
$var integer 32 . value [31:0] $end
$upscope $end
$upscope $end
$scope module ac1 $end
$scope interface intf_for_check $end
$var wire 1 ! clk $end
$var wire 32 " cyc [31:0] $end
$var integer 32 # value [31:0] $end
$scope struct the_struct $end
$var logic 32 $ val100 [31:0] $end
$var logic 32 % val200 [31:0] $end
$var integer 32 $ val100 [31:0] $end
$var integer 32 % val200 [31:0] $end
$upscope $end
$scope interface inner $end
$var wire 32 " cyc [31:0] $end
$var integer 32 & value [31:0] $end
$upscope $end
$upscope $end
$upscope $end
@ -28,10 +97,14 @@ $scope module ac2 $end
$scope interface intf_for_check $end
$var wire 1 ! clk $end
$var wire 32 " cyc [31:0] $end
$var integer 32 & value [31:0] $end
$var integer 32 ' value [31:0] $end
$scope struct the_struct $end
$var logic 32 ' val100 [31:0] $end
$var logic 32 ( val200 [31:0] $end
$var integer 32 ( val100 [31:0] $end
$var integer 32 ) val200 [31:0] $end
$upscope $end
$scope interface inner $end
$var wire 32 " cyc [31:0] $end
$var integer 32 * value [31:0] $end
$upscope $end
$upscope $end
$upscope $end
@ -39,10 +112,14 @@ $scope module ac3 $end
$scope interface intf_for_check $end
$var wire 1 ! clk $end
$var wire 32 " cyc [31:0] $end
$var integer 32 ) value [31:0] $end
$var integer 32 + value [31:0] $end
$scope struct the_struct $end
$var logic 32 * val100 [31:0] $end
$var logic 32 + val200 [31:0] $end
$var integer 32 , val100 [31:0] $end
$var integer 32 - val200 [31:0] $end
$upscope $end
$scope interface inner $end
$var wire 32 " cyc [31:0] $end
$var integer 32 . value [31:0] $end
$upscope $end
$upscope $end
$upscope $end
@ -50,54 +127,70 @@ $scope module as3 $end
$scope interface intf_for_struct $end
$var wire 1 ! clk $end
$var wire 32 " cyc [31:0] $end
$var integer 32 ) value [31:0] $end
$var integer 32 + value [31:0] $end
$scope struct the_struct $end
$var logic 32 * val100 [31:0] $end
$var logic 32 + val200 [31:0] $end
$var integer 32 , val100 [31:0] $end
$var integer 32 - val200 [31:0] $end
$upscope $end
$upscope $end
$upscope $end
$scope interface intf_in_sub_all $end
$scope interface inner $end
$var wire 32 " cyc [31:0] $end
$var integer 32 , value [31:0] $end
$var integer 32 . value [31:0] $end
$upscope $end
$var wire 1 ! clk $end
$var wire 32 " cyc [31:0] $end
$var integer 32 ) value [31:0] $end
$scope struct the_struct $end
$var logic 32 * val100 [31:0] $end
$var logic 32 + val200 [31:0] $end
$upscope $end
$upscope $end
$scope interface intf_one $end
$var wire 1 ! clk $end
$var wire 32 " cyc [31:0] $end
$var integer 32 # value [31:0] $end
$scope struct the_struct $end
$var logic 32 $ val100 [31:0] $end
$var logic 32 % val200 [31:0] $end
$upscope $end
$upscope $end
$scope interface intf_two $end
$var wire 1 ! clk $end
$var wire 32 " cyc [31:0] $end
$var integer 32 & value [31:0] $end
$scope struct the_struct $end
$var logic 32 ' val100 [31:0] $end
$var logic 32 ( val200 [31:0] $end
$upscope $end
$upscope $end
$upscope $end
$scope module abcdefghijklmnopqrstuvwxyz $end
$scope interface intf_one $end
$var wire 1 ! clk $end
$var wire 32 " cyc [31:0] $end
$var integer 32 ' value [31:0] $end
$scope struct the_struct $end
$var integer 32 ( val100 [31:0] $end
$var integer 32 ) val200 [31:0] $end
$upscope $end
$scope interface inner $end
$var wire 32 " cyc [31:0] $end
$var integer 32 * value [31:0] $end
$upscope $end
$upscope $end
$scope interface intf_two $end
$var wire 1 ! clk $end
$var wire 32 " cyc [31:0] $end
$var integer 32 # value [31:0] $end
$scope struct the_struct $end
$var integer 32 $ val100 [31:0] $end
$var integer 32 % val200 [31:0] $end
$upscope $end
$scope interface inner $end
$var wire 32 " cyc [31:0] $end
$var integer 32 & value [31:0] $end
$upscope $end
$upscope $end
$scope interface intf_in_sub_all $end
$var wire 1 ! clk $end
$var wire 32 " cyc [31:0] $end
$var integer 32 / value [31:0] $end
$scope struct the_struct $end
$var integer 32 0 val100 [31:0] $end
$var integer 32 1 val200 [31:0] $end
$upscope $end
$scope interface inner $end
$var wire 32 " cyc [31:0] $end
$var integer 32 2 value [31:0] $end
$upscope $end
$upscope $end
$scope module ac1 $end
$scope interface intf_for_check $end
$var wire 1 ! clk $end
$var wire 32 " cyc [31:0] $end
$var integer 32 & value [31:0] $end
$var integer 32 ' value [31:0] $end
$scope struct the_struct $end
$var logic 32 ' val100 [31:0] $end
$var logic 32 ( val200 [31:0] $end
$var integer 32 ( val100 [31:0] $end
$var integer 32 ) val200 [31:0] $end
$upscope $end
$scope interface inner $end
$var wire 32 " cyc [31:0] $end
$var integer 32 * value [31:0] $end
$upscope $end
$upscope $end
$upscope $end
@ -107,8 +200,12 @@ $var wire 1 ! clk $end
$var wire 32 " cyc [31:0] $end
$var integer 32 # value [31:0] $end
$scope struct the_struct $end
$var logic 32 $ val100 [31:0] $end
$var logic 32 % val200 [31:0] $end
$var integer 32 $ val100 [31:0] $end
$var integer 32 % val200 [31:0] $end
$upscope $end
$scope interface inner $end
$var wire 32 " cyc [31:0] $end
$var integer 32 & value [31:0] $end
$upscope $end
$upscope $end
$upscope $end
@ -116,10 +213,14 @@ $scope module ac3 $end
$scope interface intf_for_check $end
$var wire 1 ! clk $end
$var wire 32 " cyc [31:0] $end
$var integer 32 - value [31:0] $end
$var integer 32 / value [31:0] $end
$scope struct the_struct $end
$var logic 32 . val100 [31:0] $end
$var logic 32 / val200 [31:0] $end
$var integer 32 0 val100 [31:0] $end
$var integer 32 1 val200 [31:0] $end
$upscope $end
$scope interface inner $end
$var wire 32 " cyc [31:0] $end
$var integer 32 2 value [31:0] $end
$upscope $end
$upscope $end
$upscope $end
@ -127,42 +228,15 @@ $scope module as3 $end
$scope interface intf_for_struct $end
$var wire 1 ! clk $end
$var wire 32 " cyc [31:0] $end
$var integer 32 - value [31:0] $end
$var integer 32 / value [31:0] $end
$scope struct the_struct $end
$var logic 32 . val100 [31:0] $end
$var logic 32 / val200 [31:0] $end
$var integer 32 0 val100 [31:0] $end
$var integer 32 1 val200 [31:0] $end
$upscope $end
$upscope $end
$upscope $end
$scope interface intf_in_sub_all $end
$scope interface inner $end
$var wire 32 " cyc [31:0] $end
$var integer 32 0 value [31:0] $end
$var integer 32 2 value [31:0] $end
$upscope $end
$var wire 1 ! clk $end
$var wire 32 " cyc [31:0] $end
$var integer 32 - value [31:0] $end
$scope struct the_struct $end
$var logic 32 . val100 [31:0] $end
$var logic 32 / val200 [31:0] $end
$upscope $end
$upscope $end
$scope interface intf_one $end
$var wire 1 ! clk $end
$var wire 32 " cyc [31:0] $end
$var integer 32 & value [31:0] $end
$scope struct the_struct $end
$var logic 32 ' val100 [31:0] $end
$var logic 32 ( val200 [31:0] $end
$upscope $end
$upscope $end
$scope interface intf_two $end
$var wire 1 ! clk $end
$var wire 32 " cyc [31:0] $end
$var integer 32 # value [31:0] $end
$scope struct the_struct $end
$var logic 32 $ val100 [31:0] $end
$var logic 32 % val200 [31:0] $end
$upscope $end
$upscope $end
$upscope $end
@ -172,8 +246,12 @@ $var wire 1 ! clk $end
$var wire 32 " cyc [31:0] $end
$var integer 32 # value [31:0] $end
$scope struct the_struct $end
$var logic 32 $ val100 [31:0] $end
$var logic 32 % val200 [31:0] $end
$var integer 32 $ val100 [31:0] $end
$var integer 32 % val200 [31:0] $end
$upscope $end
$scope interface inner $end
$var wire 32 " cyc [31:0] $end
$var integer 32 & value [31:0] $end
$upscope $end
$upscope $end
$upscope $end
@ -181,37 +259,15 @@ $scope module c2 $end
$scope interface intf_for_check $end
$var wire 1 ! clk $end
$var wire 32 " cyc [31:0] $end
$var integer 32 & value [31:0] $end
$var integer 32 ' value [31:0] $end
$scope struct the_struct $end
$var logic 32 ' val100 [31:0] $end
$var logic 32 ( val200 [31:0] $end
$var integer 32 ( val100 [31:0] $end
$var integer 32 ) val200 [31:0] $end
$upscope $end
$upscope $end
$upscope $end
$scope interface intf_1 $end
$scope interface inner $end
$var wire 32 " cyc [31:0] $end
$var integer 32 1 value [31:0] $end
$var integer 32 * value [31:0] $end
$upscope $end
$var wire 1 ! clk $end
$var wire 32 " cyc [31:0] $end
$var integer 32 # value [31:0] $end
$scope struct the_struct $end
$var logic 32 $ val100 [31:0] $end
$var logic 32 % val200 [31:0] $end
$upscope $end
$upscope $end
$scope interface intf_2 $end
$scope interface inner $end
$var wire 32 " cyc [31:0] $end
$var integer 32 2 value [31:0] $end
$upscope $end
$var wire 1 ! clk $end
$var wire 32 " cyc [31:0] $end
$var integer 32 & value [31:0] $end
$scope struct the_struct $end
$var logic 32 ' val100 [31:0] $end
$var logic 32 ( val200 [31:0] $end
$upscope $end
$upscope $end
$scope module s1 $end
@ -220,8 +276,12 @@ $var wire 1 ! clk $end
$var wire 32 " cyc [31:0] $end
$var integer 32 # value [31:0] $end
$scope struct the_struct $end
$var logic 32 $ val100 [31:0] $end
$var logic 32 % val200 [31:0] $end
$var integer 32 $ val100 [31:0] $end
$var integer 32 % val200 [31:0] $end
$upscope $end
$scope interface inner $end
$var wire 32 " cyc [31:0] $end
$var integer 32 & value [31:0] $end
$upscope $end
$upscope $end
$upscope $end
@ -229,10 +289,14 @@ $scope module s2 $end
$scope interface intf_for_struct $end
$var wire 1 ! clk $end
$var wire 32 " cyc [31:0] $end
$var integer 32 & value [31:0] $end
$var integer 32 ' value [31:0] $end
$scope struct the_struct $end
$var logic 32 ' val100 [31:0] $end
$var logic 32 ( val200 [31:0] $end
$var integer 32 ( val100 [31:0] $end
$var integer 32 ) val200 [31:0] $end
$upscope $end
$scope interface inner $end
$var wire 32 " cyc [31:0] $end
$var integer 32 * value [31:0] $end
$upscope $end
$upscope $end
$upscope $end
@ -242,18 +306,18 @@ $enddefinitions $end
#0
$dumpvars
b00000000000000000000000000000000 2
b00000000000000000000000000000000 1
b00000000000000000000000000000000 0
b00000000000000000000010010110010 /
b00000000000000000000010001001110 .
b00000000000000000000001111101010 -
b00000000000000000000000000000000 ,
b00000000000000000000010010110001 +
b00000000000000000000010001001101 *
b00000000000000000000001111101001 )
b00000000000000000000000011001010 (
b00000000000000000000000001100110 '
b00000000000000000000000000000010 &
b00000000000000000000010010110010 1
b00000000000000000000010001001110 0
b00000000000000000000001111101010 /
b00000000000000000000000000000000 .
b00000000000000000000010010110001 -
b00000000000000000000010001001101 ,
b00000000000000000000001111101001 +
b00000000000000000000000000000000 *
b00000000000000000000000011001010 )
b00000000000000000000000001100110 (
b00000000000000000000000000000010 '
b00000000000000000000000000000000 &
b00000000000000000000000011001001 %
b00000000000000000000000001100101 $
b00000000000000000000000000000001 #
@ -266,15 +330,15 @@ b00000000000000000000000000000001 "
b00000000000000000000000000000010 #
b00000000000000000000000001100110 $
b00000000000000000000000011001010 %
b00000000000000000000000000000011 &
b00000000000000000000000001100111 '
b00000000000000000000000011001011 (
b00000000000000000000001111101010 )
b00000000000000000000010001001110 *
b00000000000000000000010010110010 +
b00000000000000000000001111101011 -
b00000000000000000000010001001111 .
b00000000000000000000010010110011 /
b00000000000000000000000000000011 '
b00000000000000000000000001100111 (
b00000000000000000000000011001011 )
b00000000000000000000001111101010 +
b00000000000000000000010001001110 ,
b00000000000000000000010010110010 -
b00000000000000000000001111101011 /
b00000000000000000000010001001111 0
b00000000000000000000010010110011 1
#11
#12
#13
@ -287,15 +351,15 @@ b00000000000000000000010010110011 /
#19
#20
1!
b00000000000000000000010010110100 /
b00000000000000000000010001010000 .
b00000000000000000000001111101100 -
b00000000000000000000010010110011 +
b00000000000000000000010001001111 *
b00000000000000000000001111101011 )
b00000000000000000000000011001100 (
b00000000000000000000000001101000 '
b00000000000000000000000000000100 &
b00000000000000000000010010110100 1
b00000000000000000000010001010000 0
b00000000000000000000001111101100 /
b00000000000000000000010010110011 -
b00000000000000000000010001001111 ,
b00000000000000000000001111101011 +
b00000000000000000000000011001100 )
b00000000000000000000000001101000 (
b00000000000000000000000000000100 '
b00000000000000000000000011001011 %
b00000000000000000000000001100111 $
b00000000000000000000000000000011 #
@ -316,15 +380,15 @@ b00000000000000000000000000000011 "
b00000000000000000000000000000100 #
b00000000000000000000000001101000 $
b00000000000000000000000011001100 %
b00000000000000000000000000000101 &
b00000000000000000000000001101001 '
b00000000000000000000000011001101 (
b00000000000000000000001111101100 )
b00000000000000000000010001010000 *
b00000000000000000000010010110100 +
b00000000000000000000001111101101 -
b00000000000000000000010001010001 .
b00000000000000000000010010110101 /
b00000000000000000000000000000101 '
b00000000000000000000000001101001 (
b00000000000000000000000011001101 )
b00000000000000000000001111101100 +
b00000000000000000000010001010000 ,
b00000000000000000000010010110100 -
b00000000000000000000001111101101 /
b00000000000000000000010001010001 0
b00000000000000000000010010110101 1
#31
#32
#33
@ -337,15 +401,15 @@ b00000000000000000000010010110101 /
#39
#40
1!
b00000000000000000000010010110110 /
b00000000000000000000010001010010 .
b00000000000000000000001111101110 -
b00000000000000000000010010110101 +
b00000000000000000000010001010001 *
b00000000000000000000001111101101 )
b00000000000000000000000011001110 (
b00000000000000000000000001101010 '
b00000000000000000000000000000110 &
b00000000000000000000010010110110 1
b00000000000000000000010001010010 0
b00000000000000000000001111101110 /
b00000000000000000000010010110101 -
b00000000000000000000010001010001 ,
b00000000000000000000001111101101 +
b00000000000000000000000011001110 )
b00000000000000000000000001101010 (
b00000000000000000000000000000110 '
b00000000000000000000000011001101 %
b00000000000000000000000001101001 $
b00000000000000000000000000000101 #
@ -366,15 +430,15 @@ b00000000000000000000000000000101 "
b00000000000000000000000000000110 #
b00000000000000000000000001101010 $
b00000000000000000000000011001110 %
b00000000000000000000000000000111 &
b00000000000000000000000001101011 '
b00000000000000000000000011001111 (
b00000000000000000000001111101110 )
b00000000000000000000010001010010 *
b00000000000000000000010010110110 +
b00000000000000000000001111101111 -
b00000000000000000000010001010011 .
b00000000000000000000010010110111 /
b00000000000000000000000000000111 '
b00000000000000000000000001101011 (
b00000000000000000000000011001111 )
b00000000000000000000001111101110 +
b00000000000000000000010001010010 ,
b00000000000000000000010010110110 -
b00000000000000000000001111101111 /
b00000000000000000000010001010011 0
b00000000000000000000010010110111 1
#51
#52
#53
@ -387,15 +451,15 @@ b00000000000000000000010010110111 /
#59
#60
1!
b00000000000000000000010010111000 /
b00000000000000000000010001010100 .
b00000000000000000000001111110000 -
b00000000000000000000010010110111 +
b00000000000000000000010001010011 *
b00000000000000000000001111101111 )
b00000000000000000000000011010000 (
b00000000000000000000000001101100 '
b00000000000000000000000000001000 &
b00000000000000000000010010111000 1
b00000000000000000000010001010100 0
b00000000000000000000001111110000 /
b00000000000000000000010010110111 -
b00000000000000000000010001010011 ,
b00000000000000000000001111101111 +
b00000000000000000000000011010000 )
b00000000000000000000000001101100 (
b00000000000000000000000000001000 '
b00000000000000000000000011001111 %
b00000000000000000000000001101011 $
b00000000000000000000000000000111 #
@ -416,15 +480,15 @@ b00000000000000000000000000000111 "
b00000000000000000000000000001000 #
b00000000000000000000000001101100 $
b00000000000000000000000011010000 %
b00000000000000000000000000001001 &
b00000000000000000000000001101101 '
b00000000000000000000000011010001 (
b00000000000000000000001111110000 )
b00000000000000000000010001010100 *
b00000000000000000000010010111000 +
b00000000000000000000001111110001 -
b00000000000000000000010001010101 .
b00000000000000000000010010111001 /
b00000000000000000000000000001001 '
b00000000000000000000000001101101 (
b00000000000000000000000011010001 )
b00000000000000000000001111110000 +
b00000000000000000000010001010100 ,
b00000000000000000000010010111000 -
b00000000000000000000001111110001 /
b00000000000000000000010001010101 0
b00000000000000000000010010111001 1
#71
#72
#73
@ -437,15 +501,15 @@ b00000000000000000000010010111001 /
#79
#80
1!
b00000000000000000000010010111010 /
b00000000000000000000010001010110 .
b00000000000000000000001111110010 -
b00000000000000000000010010111001 +
b00000000000000000000010001010101 *
b00000000000000000000001111110001 )
b00000000000000000000000011010010 (
b00000000000000000000000001101110 '
b00000000000000000000000000001010 &
b00000000000000000000010010111010 1
b00000000000000000000010001010110 0
b00000000000000000000001111110010 /
b00000000000000000000010010111001 -
b00000000000000000000010001010101 ,
b00000000000000000000001111110001 +
b00000000000000000000000011010010 )
b00000000000000000000000001101110 (
b00000000000000000000000000001010 '
b00000000000000000000000011010001 %
b00000000000000000000000001101101 $
b00000000000000000000000000001001 #
@ -466,15 +530,15 @@ b00000000000000000000000000001001 "
b00000000000000000000000000001010 #
b00000000000000000000000001101110 $
b00000000000000000000000011010010 %
b00000000000000000000000000001011 &
b00000000000000000000000001101111 '
b00000000000000000000000011010011 (
b00000000000000000000001111110010 )
b00000000000000000000010001010110 *
b00000000000000000000010010111010 +
b00000000000000000000001111110011 -
b00000000000000000000010001010111 .
b00000000000000000000010010111011 /
b00000000000000000000000000001011 '
b00000000000000000000000001101111 (
b00000000000000000000000011010011 )
b00000000000000000000001111110010 +
b00000000000000000000010001010110 ,
b00000000000000000000010010111010 -
b00000000000000000000001111110011 /
b00000000000000000000010001010111 0
b00000000000000000000010010111011 1
#91
#92
#93
@ -487,15 +551,15 @@ b00000000000000000000010010111011 /
#99
#100
1!
b00000000000000000000010010111100 /
b00000000000000000000010001011000 .
b00000000000000000000001111110100 -
b00000000000000000000010010111011 +
b00000000000000000000010001010111 *
b00000000000000000000001111110011 )
b00000000000000000000000011010100 (
b00000000000000000000000001110000 '
b00000000000000000000000000001100 &
b00000000000000000000010010111100 1
b00000000000000000000010001011000 0
b00000000000000000000001111110100 /
b00000000000000000000010010111011 -
b00000000000000000000010001010111 ,
b00000000000000000000001111110011 +
b00000000000000000000000011010100 )
b00000000000000000000000001110000 (
b00000000000000000000000000001100 '
b00000000000000000000000011010011 %
b00000000000000000000000001101111 $
b00000000000000000000000000001011 #
@ -516,15 +580,15 @@ b00000000000000000000000000001011 "
b00000000000000000000000000001100 #
b00000000000000000000000001110000 $
b00000000000000000000000011010100 %
b00000000000000000000000000001101 &
b00000000000000000000000001110001 '
b00000000000000000000000011010101 (
b00000000000000000000001111110100 )
b00000000000000000000010001011000 *
b00000000000000000000010010111100 +
b00000000000000000000001111110101 -
b00000000000000000000010001011001 .
b00000000000000000000010010111101 /
b00000000000000000000000000001101 '
b00000000000000000000000001110001 (
b00000000000000000000000011010101 )
b00000000000000000000001111110100 +
b00000000000000000000010001011000 ,
b00000000000000000000010010111100 -
b00000000000000000000001111110101 /
b00000000000000000000010001011001 0
b00000000000000000000010010111101 1
#111
#112
#113
@ -537,15 +601,15 @@ b00000000000000000000010010111101 /
#119
#120
1!
b00000000000000000000010010111110 /
b00000000000000000000010001011010 .
b00000000000000000000001111110110 -
b00000000000000000000010010111101 +
b00000000000000000000010001011001 *
b00000000000000000000001111110101 )
b00000000000000000000000011010110 (
b00000000000000000000000001110010 '
b00000000000000000000000000001110 &
b00000000000000000000010010111110 1
b00000000000000000000010001011010 0
b00000000000000000000001111110110 /
b00000000000000000000010010111101 -
b00000000000000000000010001011001 ,
b00000000000000000000001111110101 +
b00000000000000000000000011010110 )
b00000000000000000000000001110010 (
b00000000000000000000000000001110 '
b00000000000000000000000011010101 %
b00000000000000000000000001110001 $
b00000000000000000000000000001101 #
@ -566,15 +630,15 @@ b00000000000000000000000000001101 "
b00000000000000000000000000001110 #
b00000000000000000000000001110010 $
b00000000000000000000000011010110 %
b00000000000000000000000000001111 &
b00000000000000000000000001110011 '
b00000000000000000000000011010111 (
b00000000000000000000001111110110 )
b00000000000000000000010001011010 *
b00000000000000000000010010111110 +
b00000000000000000000001111110111 -
b00000000000000000000010001011011 .
b00000000000000000000010010111111 /
b00000000000000000000000000001111 '
b00000000000000000000000001110011 (
b00000000000000000000000011010111 )
b00000000000000000000001111110110 +
b00000000000000000000010001011010 ,
b00000000000000000000010010111110 -
b00000000000000000000001111110111 /
b00000000000000000000010001011011 0
b00000000000000000000010010111111 1
#131
#132
#133
@ -587,15 +651,15 @@ b00000000000000000000010010111111 /
#139
#140
1!
b00000000000000000000010011000000 /
b00000000000000000000010001011100 .
b00000000000000000000001111111000 -
b00000000000000000000010010111111 +
b00000000000000000000010001011011 *
b00000000000000000000001111110111 )
b00000000000000000000000011011000 (
b00000000000000000000000001110100 '
b00000000000000000000000000010000 &
b00000000000000000000010011000000 1
b00000000000000000000010001011100 0
b00000000000000000000001111111000 /
b00000000000000000000010010111111 -
b00000000000000000000010001011011 ,
b00000000000000000000001111110111 +
b00000000000000000000000011011000 )
b00000000000000000000000001110100 (
b00000000000000000000000000010000 '
b00000000000000000000000011010111 %
b00000000000000000000000001110011 $
b00000000000000000000000000001111 #
@ -616,15 +680,15 @@ b00000000000000000000000000001111 "
b00000000000000000000000000010000 #
b00000000000000000000000001110100 $
b00000000000000000000000011011000 %
b00000000000000000000000000010001 &
b00000000000000000000000001110101 '
b00000000000000000000000011011001 (
b00000000000000000000001111111000 )
b00000000000000000000010001011100 *
b00000000000000000000010011000000 +
b00000000000000000000001111111001 -
b00000000000000000000010001011101 .
b00000000000000000000010011000001 /
b00000000000000000000000000010001 '
b00000000000000000000000001110101 (
b00000000000000000000000011011001 )
b00000000000000000000001111111000 +
b00000000000000000000010001011100 ,
b00000000000000000000010011000000 -
b00000000000000000000001111111001 /
b00000000000000000000010001011101 0
b00000000000000000000010011000001 1
#151
#152
#153
@ -637,15 +701,15 @@ b00000000000000000000010011000001 /
#159
#160
1!
b00000000000000000000010011000010 /
b00000000000000000000010001011110 .
b00000000000000000000001111111010 -
b00000000000000000000010011000001 +
b00000000000000000000010001011101 *
b00000000000000000000001111111001 )
b00000000000000000000000011011010 (
b00000000000000000000000001110110 '
b00000000000000000000000000010010 &
b00000000000000000000010011000010 1
b00000000000000000000010001011110 0
b00000000000000000000001111111010 /
b00000000000000000000010011000001 -
b00000000000000000000010001011101 ,
b00000000000000000000001111111001 +
b00000000000000000000000011011010 )
b00000000000000000000000001110110 (
b00000000000000000000000000010010 '
b00000000000000000000000011011001 %
b00000000000000000000000001110101 $
b00000000000000000000000000010001 #
@ -666,15 +730,15 @@ b00000000000000000000000000010001 "
b00000000000000000000000000010010 #
b00000000000000000000000001110110 $
b00000000000000000000000011011010 %
b00000000000000000000000000010011 &
b00000000000000000000000001110111 '
b00000000000000000000000011011011 (
b00000000000000000000001111111010 )
b00000000000000000000010001011110 *
b00000000000000000000010011000010 +
b00000000000000000000001111111011 -
b00000000000000000000010001011111 .
b00000000000000000000010011000011 /
b00000000000000000000000000010011 '
b00000000000000000000000001110111 (
b00000000000000000000000011011011 )
b00000000000000000000001111111010 +
b00000000000000000000010001011110 ,
b00000000000000000000010011000010 -
b00000000000000000000001111111011 /
b00000000000000000000010001011111 0
b00000000000000000000010011000011 1
#171
#172
#173
@ -687,15 +751,15 @@ b00000000000000000000010011000011 /
#179
#180
1!
b00000000000000000000010011000100 /
b00000000000000000000010001100000 .
b00000000000000000000001111111100 -
b00000000000000000000010011000011 +
b00000000000000000000010001011111 *
b00000000000000000000001111111011 )
b00000000000000000000000011011100 (
b00000000000000000000000001111000 '
b00000000000000000000000000010100 &
b00000000000000000000010011000100 1
b00000000000000000000010001100000 0
b00000000000000000000001111111100 /
b00000000000000000000010011000011 -
b00000000000000000000010001011111 ,
b00000000000000000000001111111011 +
b00000000000000000000000011011100 )
b00000000000000000000000001111000 (
b00000000000000000000000000010100 '
b00000000000000000000000011011011 %
b00000000000000000000000001110111 $
b00000000000000000000000000010011 #
@ -716,15 +780,15 @@ b00000000000000000000000000010011 "
b00000000000000000000000000010100 #
b00000000000000000000000001111000 $
b00000000000000000000000011011100 %
b00000000000000000000000000010101 &
b00000000000000000000000001111001 '
b00000000000000000000000011011101 (
b00000000000000000000001111111100 )
b00000000000000000000010001100000 *
b00000000000000000000010011000100 +
b00000000000000000000001111111101 -
b00000000000000000000010001100001 .
b00000000000000000000010011000101 /
b00000000000000000000000000010101 '
b00000000000000000000000001111001 (
b00000000000000000000000011011101 )
b00000000000000000000001111111100 +
b00000000000000000000010001100000 ,
b00000000000000000000010011000100 -
b00000000000000000000001111111101 /
b00000000000000000000010001100001 0
b00000000000000000000010011000101 1
#191
#192
#193
@ -737,15 +801,15 @@ b00000000000000000000010011000101 /
#199
#200
1!
b00000000000000000000010011000110 /
b00000000000000000000010001100010 .
b00000000000000000000001111111110 -
b00000000000000000000010011000101 +
b00000000000000000000010001100001 *
b00000000000000000000001111111101 )
b00000000000000000000000011011110 (
b00000000000000000000000001111010 '
b00000000000000000000000000010110 &
b00000000000000000000010011000110 1
b00000000000000000000010001100010 0
b00000000000000000000001111111110 /
b00000000000000000000010011000101 -
b00000000000000000000010001100001 ,
b00000000000000000000001111111101 +
b00000000000000000000000011011110 )
b00000000000000000000000001111010 (
b00000000000000000000000000010110 '
b00000000000000000000000011011101 %
b00000000000000000000000001111001 $
b00000000000000000000000000010101 #
@ -766,15 +830,15 @@ b00000000000000000000000000010101 "
b00000000000000000000000000010110 #
b00000000000000000000000001111010 $
b00000000000000000000000011011110 %
b00000000000000000000000000010111 &
b00000000000000000000000001111011 '
b00000000000000000000000011011111 (
b00000000000000000000001111111110 )
b00000000000000000000010001100010 *
b00000000000000000000010011000110 +
b00000000000000000000001111111111 -
b00000000000000000000010001100011 .
b00000000000000000000010011000111 /
b00000000000000000000000000010111 '
b00000000000000000000000001111011 (
b00000000000000000000000011011111 )
b00000000000000000000001111111110 +
b00000000000000000000010001100010 ,
b00000000000000000000010011000110 -
b00000000000000000000001111111111 /
b00000000000000000000010001100011 0
b00000000000000000000010011000111 1
#211
#212
#213

View File

@ -0,0 +1,675 @@
$version Generated by VerilatedVcd $end
$timescale 1ps $end
$scope module top $end
$scope module t $end
$var wire 1 0 clk $end
$var wire 32 # cyc [31:0] $end
$scope module intf_1 $end
$var wire 1 0 clk $end
$var wire 32 # cyc [31:0] $end
$var wire 32 $ value [31:0] $end
$scope module the_struct $end
$var wire 32 % val100 [31:0] $end
$var wire 32 & val200 [31:0] $end
$upscope $end
$scope module inner $end
$var wire 32 # cyc [31:0] $end
$var wire 32 1 value [31:0] $end
$upscope $end
$upscope $end
$scope module intf_2 $end
$var wire 1 0 clk $end
$var wire 32 # cyc [31:0] $end
$var wire 32 ' value [31:0] $end
$scope module the_struct $end
$var wire 32 ( val100 [31:0] $end
$var wire 32 ) val200 [31:0] $end
$upscope $end
$scope module inner $end
$var wire 32 # cyc [31:0] $end
$var wire 32 2 value [31:0] $end
$upscope $end
$upscope $end
$scope module s1 $end
$scope module intf_for_struct $end
$var wire 1 0 clk $end
$var wire 32 # cyc [31:0] $end
$var wire 32 $ value [31:0] $end
$scope module the_struct $end
$var wire 32 % val100 [31:0] $end
$var wire 32 & val200 [31:0] $end
$upscope $end
$scope module inner $end
$var wire 32 # cyc [31:0] $end
$var wire 32 1 value [31:0] $end
$upscope $end
$upscope $end
$upscope $end
$scope module s2 $end
$scope module intf_for_struct $end
$var wire 1 0 clk $end
$var wire 32 # cyc [31:0] $end
$var wire 32 ' value [31:0] $end
$scope module the_struct $end
$var wire 32 ( val100 [31:0] $end
$var wire 32 ) val200 [31:0] $end
$upscope $end
$scope module inner $end
$var wire 32 # cyc [31:0] $end
$var wire 32 2 value [31:0] $end
$upscope $end
$upscope $end
$upscope $end
$scope module c1 $end
$scope module intf_for_check $end
$var wire 1 0 clk $end
$var wire 32 # cyc [31:0] $end
$var wire 32 $ value [31:0] $end
$scope module the_struct $end
$var wire 32 % val100 [31:0] $end
$var wire 32 & val200 [31:0] $end
$upscope $end
$scope module inner $end
$var wire 32 # cyc [31:0] $end
$var wire 32 1 value [31:0] $end
$upscope $end
$upscope $end
$upscope $end
$scope module c2 $end
$scope module intf_for_check $end
$var wire 1 0 clk $end
$var wire 32 # cyc [31:0] $end
$var wire 32 ' value [31:0] $end
$scope module the_struct $end
$var wire 32 ( val100 [31:0] $end
$var wire 32 ) val200 [31:0] $end
$upscope $end
$scope module inner $end
$var wire 32 # cyc [31:0] $end
$var wire 32 2 value [31:0] $end
$upscope $end
$upscope $end
$upscope $end
$scope module a $end
$scope module intf_one $end
$var wire 1 0 clk $end
$var wire 32 # cyc [31:0] $end
$var wire 32 $ value [31:0] $end
$scope module the_struct $end
$var wire 32 % val100 [31:0] $end
$var wire 32 & val200 [31:0] $end
$upscope $end
$scope module inner $end
$var wire 32 # cyc [31:0] $end
$var wire 32 1 value [31:0] $end
$upscope $end
$upscope $end
$scope module intf_two $end
$var wire 1 0 clk $end
$var wire 32 # cyc [31:0] $end
$var wire 32 ' value [31:0] $end
$scope module the_struct $end
$var wire 32 ( val100 [31:0] $end
$var wire 32 ) val200 [31:0] $end
$upscope $end
$scope module inner $end
$var wire 32 # cyc [31:0] $end
$var wire 32 2 value [31:0] $end
$upscope $end
$upscope $end
$scope module intf_in_sub_all $end
$var wire 1 0 clk $end
$var wire 32 # cyc [31:0] $end
$var wire 32 * value [31:0] $end
$scope module the_struct $end
$var wire 32 + val100 [31:0] $end
$var wire 32 , val200 [31:0] $end
$upscope $end
$scope module inner $end
$var wire 32 # cyc [31:0] $end
$var wire 32 3 value [31:0] $end
$upscope $end
$upscope $end
$scope module ac1 $end
$scope module intf_for_check $end
$var wire 1 0 clk $end
$var wire 32 # cyc [31:0] $end
$var wire 32 $ value [31:0] $end
$scope module the_struct $end
$var wire 32 % val100 [31:0] $end
$var wire 32 & val200 [31:0] $end
$upscope $end
$scope module inner $end
$var wire 32 # cyc [31:0] $end
$var wire 32 1 value [31:0] $end
$upscope $end
$upscope $end
$upscope $end
$scope module ac2 $end
$scope module intf_for_check $end
$var wire 1 0 clk $end
$var wire 32 # cyc [31:0] $end
$var wire 32 ' value [31:0] $end
$scope module the_struct $end
$var wire 32 ( val100 [31:0] $end
$var wire 32 ) val200 [31:0] $end
$upscope $end
$scope module inner $end
$var wire 32 # cyc [31:0] $end
$var wire 32 2 value [31:0] $end
$upscope $end
$upscope $end
$upscope $end
$scope module as3 $end
$scope module intf_for_struct $end
$var wire 1 0 clk $end
$var wire 32 # cyc [31:0] $end
$var wire 32 * value [31:0] $end
$scope module the_struct $end
$var wire 32 + val100 [31:0] $end
$var wire 32 , val200 [31:0] $end
$upscope $end
$scope module inner $end
$var wire 32 # cyc [31:0] $end
$var wire 32 3 value [31:0] $end
$upscope $end
$upscope $end
$upscope $end
$scope module ac3 $end
$scope module intf_for_check $end
$var wire 1 0 clk $end
$var wire 32 # cyc [31:0] $end
$var wire 32 * value [31:0] $end
$scope module the_struct $end
$var wire 32 + val100 [31:0] $end
$var wire 32 , val200 [31:0] $end
$upscope $end
$scope module inner $end
$var wire 32 # cyc [31:0] $end
$var wire 32 3 value [31:0] $end
$upscope $end
$upscope $end
$upscope $end
$upscope $end
$scope module abcdefghijklmnopqrstuvwxyz $end
$scope module intf_one $end
$var wire 1 0 clk $end
$var wire 32 # cyc [31:0] $end
$var wire 32 ' value [31:0] $end
$scope module the_struct $end
$var wire 32 ( val100 [31:0] $end
$var wire 32 ) val200 [31:0] $end
$upscope $end
$scope module inner $end
$var wire 32 # cyc [31:0] $end
$var wire 32 2 value [31:0] $end
$upscope $end
$upscope $end
$scope module intf_two $end
$var wire 1 0 clk $end
$var wire 32 # cyc [31:0] $end
$var wire 32 $ value [31:0] $end
$scope module the_struct $end
$var wire 32 % val100 [31:0] $end
$var wire 32 & val200 [31:0] $end
$upscope $end
$scope module inner $end
$var wire 32 # cyc [31:0] $end
$var wire 32 1 value [31:0] $end
$upscope $end
$upscope $end
$scope module intf_in_sub_all $end
$var wire 1 0 clk $end
$var wire 32 # cyc [31:0] $end
$var wire 32 - value [31:0] $end
$scope module the_struct $end
$var wire 32 . val100 [31:0] $end
$var wire 32 / val200 [31:0] $end
$upscope $end
$scope module inner $end
$var wire 32 # cyc [31:0] $end
$var wire 32 4 value [31:0] $end
$upscope $end
$upscope $end
$scope module ac1 $end
$scope module intf_for_check $end
$var wire 1 0 clk $end
$var wire 32 # cyc [31:0] $end
$var wire 32 ' value [31:0] $end
$scope module the_struct $end
$var wire 32 ( val100 [31:0] $end
$var wire 32 ) val200 [31:0] $end
$upscope $end
$scope module inner $end
$var wire 32 # cyc [31:0] $end
$var wire 32 2 value [31:0] $end
$upscope $end
$upscope $end
$upscope $end
$scope module ac2 $end
$scope module intf_for_check $end
$var wire 1 0 clk $end
$var wire 32 # cyc [31:0] $end
$var wire 32 $ value [31:0] $end
$scope module the_struct $end
$var wire 32 % val100 [31:0] $end
$var wire 32 & val200 [31:0] $end
$upscope $end
$scope module inner $end
$var wire 32 # cyc [31:0] $end
$var wire 32 1 value [31:0] $end
$upscope $end
$upscope $end
$upscope $end
$scope module as3 $end
$scope module intf_for_struct $end
$var wire 1 0 clk $end
$var wire 32 # cyc [31:0] $end
$var wire 32 - value [31:0] $end
$scope module the_struct $end
$var wire 32 . val100 [31:0] $end
$var wire 32 / val200 [31:0] $end
$upscope $end
$scope module inner $end
$var wire 32 # cyc [31:0] $end
$var wire 32 4 value [31:0] $end
$upscope $end
$upscope $end
$upscope $end
$scope module ac3 $end
$scope module intf_for_check $end
$var wire 1 0 clk $end
$var wire 32 # cyc [31:0] $end
$var wire 32 - value [31:0] $end
$scope module the_struct $end
$var wire 32 . val100 [31:0] $end
$var wire 32 / val200 [31:0] $end
$upscope $end
$scope module inner $end
$var wire 32 # cyc [31:0] $end
$var wire 32 4 value [31:0] $end
$upscope $end
$upscope $end
$upscope $end
$upscope $end
$upscope $end
$var wire 1 0 clk $end
$upscope $end
$enddefinitions $end
#0
b00000000000000000000000000000000 #
b00000000000000000000000000000001 $
b00000000000000000000000001100101 %
b00000000000000000000000011001001 &
b00000000000000000000000000000010 '
b00000000000000000000000001100110 (
b00000000000000000000000011001010 )
b00000000000000000000001111101001 *
b00000000000000000000010001001101 +
b00000000000000000000010010110001 ,
b00000000000000000000001111101010 -
b00000000000000000000010001001110 .
b00000000000000000000010010110010 /
00
b00000000000000000000000000000000 1
b00000000000000000000000000000000 2
b00000000000000000000000000000000 3
b00000000000000000000000000000000 4
#10
b00000000000000000000000000000001 #
b00000000000000000000000000000010 $
b00000000000000000000000001100110 %
b00000000000000000000000011001010 &
b00000000000000000000000000000011 '
b00000000000000000000000001100111 (
b00000000000000000000000011001011 )
b00000000000000000000001111101010 *
b00000000000000000000010001001110 +
b00000000000000000000010010110010 ,
b00000000000000000000001111101011 -
b00000000000000000000010001001111 .
b00000000000000000000010010110011 /
10
#15
00
#20
b00000000000000000000000000000010 #
b00000000000000000000000000000011 $
b00000000000000000000000001100111 %
b00000000000000000000000011001011 &
b00000000000000000000000000000100 '
b00000000000000000000000001101000 (
b00000000000000000000000011001100 )
b00000000000000000000001111101011 *
b00000000000000000000010001001111 +
b00000000000000000000010010110011 ,
b00000000000000000000001111101100 -
b00000000000000000000010001010000 .
b00000000000000000000010010110100 /
10
#25
00
#30
b00000000000000000000000000000011 #
b00000000000000000000000000000100 $
b00000000000000000000000001101000 %
b00000000000000000000000011001100 &
b00000000000000000000000000000101 '
b00000000000000000000000001101001 (
b00000000000000000000000011001101 )
b00000000000000000000001111101100 *
b00000000000000000000010001010000 +
b00000000000000000000010010110100 ,
b00000000000000000000001111101101 -
b00000000000000000000010001010001 .
b00000000000000000000010010110101 /
10
#35
00
#40
b00000000000000000000000000000100 #
b00000000000000000000000000000101 $
b00000000000000000000000001101001 %
b00000000000000000000000011001101 &
b00000000000000000000000000000110 '
b00000000000000000000000001101010 (
b00000000000000000000000011001110 )
b00000000000000000000001111101101 *
b00000000000000000000010001010001 +
b00000000000000000000010010110101 ,
b00000000000000000000001111101110 -
b00000000000000000000010001010010 .
b00000000000000000000010010110110 /
10
#45
00
#50
b00000000000000000000000000000101 #
b00000000000000000000000000000110 $
b00000000000000000000000001101010 %
b00000000000000000000000011001110 &
b00000000000000000000000000000111 '
b00000000000000000000000001101011 (
b00000000000000000000000011001111 )
b00000000000000000000001111101110 *
b00000000000000000000010001010010 +
b00000000000000000000010010110110 ,
b00000000000000000000001111101111 -
b00000000000000000000010001010011 .
b00000000000000000000010010110111 /
10
#55
00
#60
b00000000000000000000000000000110 #
b00000000000000000000000000000111 $
b00000000000000000000000001101011 %
b00000000000000000000000011001111 &
b00000000000000000000000000001000 '
b00000000000000000000000001101100 (
b00000000000000000000000011010000 )
b00000000000000000000001111101111 *
b00000000000000000000010001010011 +
b00000000000000000000010010110111 ,
b00000000000000000000001111110000 -
b00000000000000000000010001010100 .
b00000000000000000000010010111000 /
10
#65
00
#70
b00000000000000000000000000000111 #
b00000000000000000000000000001000 $
b00000000000000000000000001101100 %
b00000000000000000000000011010000 &
b00000000000000000000000000001001 '
b00000000000000000000000001101101 (
b00000000000000000000000011010001 )
b00000000000000000000001111110000 *
b00000000000000000000010001010100 +
b00000000000000000000010010111000 ,
b00000000000000000000001111110001 -
b00000000000000000000010001010101 .
b00000000000000000000010010111001 /
10
#75
00
#80
b00000000000000000000000000001000 #
b00000000000000000000000000001001 $
b00000000000000000000000001101101 %
b00000000000000000000000011010001 &
b00000000000000000000000000001010 '
b00000000000000000000000001101110 (
b00000000000000000000000011010010 )
b00000000000000000000001111110001 *
b00000000000000000000010001010101 +
b00000000000000000000010010111001 ,
b00000000000000000000001111110010 -
b00000000000000000000010001010110 .
b00000000000000000000010010111010 /
10
#85
00
#90
b00000000000000000000000000001001 #
b00000000000000000000000000001010 $
b00000000000000000000000001101110 %
b00000000000000000000000011010010 &
b00000000000000000000000000001011 '
b00000000000000000000000001101111 (
b00000000000000000000000011010011 )
b00000000000000000000001111110010 *
b00000000000000000000010001010110 +
b00000000000000000000010010111010 ,
b00000000000000000000001111110011 -
b00000000000000000000010001010111 .
b00000000000000000000010010111011 /
10
#95
00
#100
b00000000000000000000000000001010 #
b00000000000000000000000000001011 $
b00000000000000000000000001101111 %
b00000000000000000000000011010011 &
b00000000000000000000000000001100 '
b00000000000000000000000001110000 (
b00000000000000000000000011010100 )
b00000000000000000000001111110011 *
b00000000000000000000010001010111 +
b00000000000000000000010010111011 ,
b00000000000000000000001111110100 -
b00000000000000000000010001011000 .
b00000000000000000000010010111100 /
10
#105
00
#110
b00000000000000000000000000001011 #
b00000000000000000000000000001100 $
b00000000000000000000000001110000 %
b00000000000000000000000011010100 &
b00000000000000000000000000001101 '
b00000000000000000000000001110001 (
b00000000000000000000000011010101 )
b00000000000000000000001111110100 *
b00000000000000000000010001011000 +
b00000000000000000000010010111100 ,
b00000000000000000000001111110101 -
b00000000000000000000010001011001 .
b00000000000000000000010010111101 /
10
#115
00
#120
b00000000000000000000000000001100 #
b00000000000000000000000000001101 $
b00000000000000000000000001110001 %
b00000000000000000000000011010101 &
b00000000000000000000000000001110 '
b00000000000000000000000001110010 (
b00000000000000000000000011010110 )
b00000000000000000000001111110101 *
b00000000000000000000010001011001 +
b00000000000000000000010010111101 ,
b00000000000000000000001111110110 -
b00000000000000000000010001011010 .
b00000000000000000000010010111110 /
10
#125
00
#130
b00000000000000000000000000001101 #
b00000000000000000000000000001110 $
b00000000000000000000000001110010 %
b00000000000000000000000011010110 &
b00000000000000000000000000001111 '
b00000000000000000000000001110011 (
b00000000000000000000000011010111 )
b00000000000000000000001111110110 *
b00000000000000000000010001011010 +
b00000000000000000000010010111110 ,
b00000000000000000000001111110111 -
b00000000000000000000010001011011 .
b00000000000000000000010010111111 /
10
#135
00
#140
b00000000000000000000000000001110 #
b00000000000000000000000000001111 $
b00000000000000000000000001110011 %
b00000000000000000000000011010111 &
b00000000000000000000000000010000 '
b00000000000000000000000001110100 (
b00000000000000000000000011011000 )
b00000000000000000000001111110111 *
b00000000000000000000010001011011 +
b00000000000000000000010010111111 ,
b00000000000000000000001111111000 -
b00000000000000000000010001011100 .
b00000000000000000000010011000000 /
10
#145
00
#150
b00000000000000000000000000001111 #
b00000000000000000000000000010000 $
b00000000000000000000000001110100 %
b00000000000000000000000011011000 &
b00000000000000000000000000010001 '
b00000000000000000000000001110101 (
b00000000000000000000000011011001 )
b00000000000000000000001111111000 *
b00000000000000000000010001011100 +
b00000000000000000000010011000000 ,
b00000000000000000000001111111001 -
b00000000000000000000010001011101 .
b00000000000000000000010011000001 /
10
#155
00
#160
b00000000000000000000000000010000 #
b00000000000000000000000000010001 $
b00000000000000000000000001110101 %
b00000000000000000000000011011001 &
b00000000000000000000000000010010 '
b00000000000000000000000001110110 (
b00000000000000000000000011011010 )
b00000000000000000000001111111001 *
b00000000000000000000010001011101 +
b00000000000000000000010011000001 ,
b00000000000000000000001111111010 -
b00000000000000000000010001011110 .
b00000000000000000000010011000010 /
10
#165
00
#170
b00000000000000000000000000010001 #
b00000000000000000000000000010010 $
b00000000000000000000000001110110 %
b00000000000000000000000011011010 &
b00000000000000000000000000010011 '
b00000000000000000000000001110111 (
b00000000000000000000000011011011 )
b00000000000000000000001111111010 *
b00000000000000000000010001011110 +
b00000000000000000000010011000010 ,
b00000000000000000000001111111011 -
b00000000000000000000010001011111 .
b00000000000000000000010011000011 /
10
#175
00
#180
b00000000000000000000000000010010 #
b00000000000000000000000000010011 $
b00000000000000000000000001110111 %
b00000000000000000000000011011011 &
b00000000000000000000000000010100 '
b00000000000000000000000001111000 (
b00000000000000000000000011011100 )
b00000000000000000000001111111011 *
b00000000000000000000010001011111 +
b00000000000000000000010011000011 ,
b00000000000000000000001111111100 -
b00000000000000000000010001100000 .
b00000000000000000000010011000100 /
10
#185
00
#190
b00000000000000000000000000010011 #
b00000000000000000000000000010100 $
b00000000000000000000000001111000 %
b00000000000000000000000011011100 &
b00000000000000000000000000010101 '
b00000000000000000000000001111001 (
b00000000000000000000000011011101 )
b00000000000000000000001111111100 *
b00000000000000000000010001100000 +
b00000000000000000000010011000100 ,
b00000000000000000000001111111101 -
b00000000000000000000010001100001 .
b00000000000000000000010011000101 /
10
#195
00
#200
b00000000000000000000000000010100 #
b00000000000000000000000000010101 $
b00000000000000000000000001111001 %
b00000000000000000000000011011101 &
b00000000000000000000000000010110 '
b00000000000000000000000001111010 (
b00000000000000000000000011011110 )
b00000000000000000000001111111101 *
b00000000000000000000010001100001 +
b00000000000000000000010011000101 ,
b00000000000000000000001111111110 -
b00000000000000000000010001100010 .
b00000000000000000000010011000110 /
10
#205
00
#210
b00000000000000000000000000010101 #
b00000000000000000000000000010110 $
b00000000000000000000000001111010 %
b00000000000000000000000011011110 &
b00000000000000000000000000010111 '
b00000000000000000000000001111011 (
b00000000000000000000000011011111 )
b00000000000000000000001111111110 *
b00000000000000000000010001100010 +
b00000000000000000000010011000110 ,
b00000000000000000000001111111111 -
b00000000000000000000010001100011 .
b00000000000000000000010011000111 /
10

View File

@ -11,7 +11,9 @@ if (!$::Driver) { use FindBin; exec("$FindBin::Bin/bootstrap.pl", @ARGV, $0); di
scenarios(simulator => 1);
top_filename("t/t_interface_ref_trace.v");
golden_filename("t/t_interface_ref_trace.out");
# Should be the same as the inlined version, but might have declarations
# in a different order. Sadly vcddiff can't check equivalence
# golden_filename("t/t_interface_ref_trace.out");
compile(
verilator_flags2 => ['-fno-inline --trace-structs --trace'],

View File

@ -3,7 +3,7 @@ $timescale 1ps $end
$scope module top $end
$scope module t $end
$var wire 1 # clk $end
$var wire 1 # clk $end
$var wire 32 $ cyc [31:0] $end
$upscope $end
$upscope $end

View File

@ -1,36 +1,34 @@
$version Generated by VerilatedVcd $end
$date Fri Jun 22 19:27:45 2018
$end
$timescale 1ps $end
$timescale 1ps $end
$scope module top $end
$var wire 1 / clk $end
$var wire 1 # clk $end
$scope module t $end
$var wire 1 # clk $end
$var wire 1 $ c1_start $end
$var wire 32 % c1_count [31:0] $end
$var wire 1 # c1_start $end
$var wire 32 ( c3_count [31:0] $end
$var wire 1 ' c3_start $end
$var wire 1 / clk $end
$var wire 8 $ cyc [7:0] $end
$var wire 1 $ s2_start $end
$var wire 32 & s2_count [31:0] $end
$var wire 1 # s2_start $end
$var wire 1 ' c3_start $end
$var wire 32 ( c3_count [31:0] $end
$var wire 8 ) cyc [7:0] $end
$scope module c1 $end
$var wire 1 $ start $end
$var wire 32 % count [31:0] $end
$var wire 32 * runner [31:0] $end
$var wire 32 ) runnerm1 [31:0] $end
$var wire 1 # start $end
$var wire 32 * runnerm1 [31:0] $end
$var wire 32 + runner [31:0] $end
$upscope $end
$scope module c3 $end
$var wire 1 ' start $end
$var wire 32 ( count [31:0] $end
$var wire 32 . runner [31:0] $end
$var wire 32 - runnerm1 [31:0] $end
$var wire 1 ' start $end
$var wire 32 , runnerm1 [31:0] $end
$var wire 32 - runner [31:0] $end
$upscope $end
$scope module s2 $end
$var wire 1 $ start $end
$var wire 32 & count [31:0] $end
$var wire 32 , runner [31:0] $end
$var wire 32 + runnerm1 [31:0] $end
$var wire 1 # start $end
$var wire 32 . runnerm1 [31:0] $end
$var wire 32 / runner [31:0] $end
$upscope $end
$upscope $end
$upscope $end
@ -39,38 +37,38 @@ $enddefinitions $end
#0
0#
b00000000 $
0$
b00000000000000000000000000000000 %
b00000000000000000000000000000000 &
0'
b00000000000000000000000000000000 (
b11111111111111111111111111111111 )
b00000000000000000000000000000000 *
b11111111111111111111111111111111 +
b00000000000000000000000000000000 ,
b11111111111111111111111111111111 -
b00000000000000000000000000000000 .
0/
b00000000 )
b11111111111111111111111111111111 *
b00000000000000000000000000000000 +
b11111111111111111111111111111111 ,
b00000000000000000000000000000000 -
b11111111111111111111111111111111 .
b00000000000000000000000000000000 /
#10
b00000001 $
1/
1#
b00000001 )
#15
0/
0#
#20
1#
b00000010 $
1$
b00000000000000000000000000000011 %
b00000000000000000000000000000011 &
1'
b00000000000000000000000000000011 (
1/
b00000010 )
#25
0/
0#
#30
b00000011 $
1/
1#
b00000011 )
#35
0/
0#
#40
1/
b00000100 $
1#
b00000100 )

File diff suppressed because it is too large Load Diff

View File

@ -3,15 +3,15 @@ $timescale 1ps $end
$scope module TOP $end
$scope module t $end
$var wire 32 + CLK_HALF_PERIOD [31:0] $end
$var wire 32 * CLK_PERIOD [31:0] $end
$var wire 1 $ a $end
$var wire 1 ) b $end
$var wire 1 % c $end
$var wire 1 ( clk $end
$var wire 1 & d $end
$var event 1 ' ev $end
$var wire 1 # rst $end
$var wire 32 + CLK_HALF_PERIOD [31:0] $end
$var wire 1 # rst $end
$var wire 1 ( clk $end
$var wire 1 $ a $end
$var wire 1 ) b $end
$var wire 1 % c $end
$var wire 1 & d $end
$var event 1 ' ev $end
$upscope $end
$upscope $end
$enddefinitions $end

View File

@ -1,13 +1,11 @@
$version Generated by VerilatedVcd $end
$date Wed Jun 10 17:27:15 2020
$end
$timescale 1ps $end
$timescale 1ps $end
$scope module top $end
$var wire 1 # clk $end
$var wire 1 # clk $end
$scope module t $end
$var wire 1 # clk $end
$var wire 3 $ cyc [2:0] $end
$var wire 1 # clk $end
$var wire 3 $ cyc [2:0] $end
$upscope $end
$upscope $end
$enddefinitions $end

View File

@ -1,11 +1,10 @@
$version Generated by VerilatedVcd $end
$date Thu Jul 1 22:52:39 2021 $end
$timescale 1ps $end
$scope module top $end
$var wire 1 ]b# clk $end
$var wire 1 ]b# clk $end
$scope module t $end
$var wire 1 ]b# clk $end
$var wire 1 ]b# clk $end
$var wire 32 # cyc [31:0] $end
$scope module biggie $end
$var wire 1048577 $ d [1048576:0] $end

View File

@ -1,19 +1,17 @@
$version Generated by VerilatedVcd $end
$date Sun May 3 21:38:46 2020
$end
$timescale 1ps $end
$timescale 1ps $end
$scope module top $end
$var wire 1 } clk $end
$var wire 1 } clk $end
$scope module t $end
$var wire 8 ~ P [0:7] $end
$var wire 8 !! Q [0:7] $end
$var wire 1 } clk $end
$var wire 8 ~ P [0:7] $end
$var wire 1 } clk $end
$var wire 32 # cyc [31:0] $end
$var wire 1 $ v_a [0:0] $end
$var wire 2 % v_b [0:1] $end
$var wire 8 & v_c [0:7] $end
$var wire 9 ' v_d [0:8] $end
$var wire 8 !! Q [0:7] $end
$var wire 1 $ v_a [0:0] $end
$var wire 2 % v_b [0:1] $end
$var wire 8 & v_c [0:7] $end
$var wire 9 ' v_d [0:8] $end
$var wire 16 ( v_e [0:15] $end
$var wire 17 ) v_f [0:16] $end
$var wire 32 * v_g [0:31] $end
@ -25,7 +23,7 @@ $timescale 1ps $end
$var wire 256 ; v_m [0:255] $end
$var wire 257 C v_n [0:256] $end
$var wire 512 L v_o [0:511] $end
$var wire 3 \ v_p [-1:1] $end
$var wire 3 \ v_p [-1:1] $end
$var wire 15 ] v_q [-7:7] $end
$var wire 31 ^ v_r [-15:15] $end
$var wire 63 _ v_s [-31:31] $end

View File

@ -1,490 +1,488 @@
$version Generated by VerilatedVcd $end
$date Thu Aug 30 16:11:10 2018
$end
$timescale 1ps $end
$timescale 1ps $end
$scope module top $end
$var wire 1 $ clk $end
$var wire 1 # clk $end
$scope module t $end
$var wire 1 $ clk $end
$var wire 32 # cyc [31:0] $end
$var wire 1 # clk $end
$var wire 32 $ cyc [31:0] $end
$upscope $end
$upscope $end
$enddefinitions $end
#0
b00000000000000000000000000000000 #
1$
1#
b00000000000000000000000000000000 $
#1
0$
0#
#2
b00000000000000000000000000000001 #
1$
1#
b00000000000000000000000000000001 $
#3
0$
0#
#4
b00000000000000000000000000000010 #
1$
1#
b00000000000000000000000000000010 $
#5
0$
0#
#6
b00000000000000000000000000000011 #
1$
1#
b00000000000000000000000000000011 $
#7
0$
0#
#8
b00000000000000000000000000000100 #
1$
1#
b00000000000000000000000000000100 $
#9
0$
0#
#10
b00000000000000000000000000000101 #
1$
1#
b00000000000000000000000000000101 $
#11
0$
0#
#12
b00000000000000000000000000000110 #
1$
1#
b00000000000000000000000000000110 $
#13
0$
0#
#14
b00000000000000000000000000000111 #
1$
1#
b00000000000000000000000000000111 $
#15
0$
0#
#16
b00000000000000000000000000001000 #
1$
1#
b00000000000000000000000000001000 $
#17
0$
0#
#18
b00000000000000000000000000001001 #
1$
1#
b00000000000000000000000000001001 $
#19
0$
0#
#20
b00000000000000000000000000001010 #
1$
1#
b00000000000000000000000000001010 $
#21
0$
0#
#22
b00000000000000000000000000001011 #
1$
1#
b00000000000000000000000000001011 $
#23
0$
0#
#24
b00000000000000000000000000001100 #
1$
1#
b00000000000000000000000000001100 $
#25
0$
0#
#26
b00000000000000000000000000001101 #
1$
1#
b00000000000000000000000000001101 $
#27
0$
0#
#28
b00000000000000000000000000001110 #
1$
1#
b00000000000000000000000000001110 $
#29
0$
0#
#30
b00000000000000000000000000001111 #
1$
1#
b00000000000000000000000000001111 $
#31
0$
0#
#32
b00000000000000000000000000010000 #
1$
1#
b00000000000000000000000000010000 $
#33
0$
0#
#34
b00000000000000000000000000010001 #
1$
1#
b00000000000000000000000000010001 $
#35
0$
0#
#36
b00000000000000000000000000010010 #
1$
1#
b00000000000000000000000000010010 $
#37
0$
0#
#38
b00000000000000000000000000010011 #
1$
1#
b00000000000000000000000000010011 $
#39
0$
0#
#40
b00000000000000000000000000010100 #
1$
1#
b00000000000000000000000000010100 $
#41
0$
0#
#42
b00000000000000000000000000010101 #
1$
1#
b00000000000000000000000000010101 $
#43
0$
0#
#44
b00000000000000000000000000010110 #
1$
1#
b00000000000000000000000000010110 $
#45
0$
0#
#46
b00000000000000000000000000010111 #
1$
1#
b00000000000000000000000000010111 $
#47
0$
0#
#48
b00000000000000000000000000011000 #
1$
1#
b00000000000000000000000000011000 $
#49
0$
0#
#50
b00000000000000000000000000011001 #
1$
1#
b00000000000000000000000000011001 $
#51
0$
0#
#52
b00000000000000000000000000011010 #
1$
1#
b00000000000000000000000000011010 $
#53
0$
0#
#54
b00000000000000000000000000011011 #
1$
1#
b00000000000000000000000000011011 $
#55
0$
0#
#56
b00000000000000000000000000011100 #
1$
1#
b00000000000000000000000000011100 $
#57
0$
0#
#58
b00000000000000000000000000011101 #
1$
1#
b00000000000000000000000000011101 $
#59
0$
0#
#60
b00000000000000000000000000011110 #
1$
1#
b00000000000000000000000000011110 $
#61
0$
0#
#62
b00000000000000000000000000011111 #
1$
1#
b00000000000000000000000000011111 $
#63
0$
0#
#64
b00000000000000000000000000100000 #
1$
1#
b00000000000000000000000000100000 $
#65
0$
0#
#66
b00000000000000000000000000100001 #
1$
1#
b00000000000000000000000000100001 $
#67
0$
0#
#68
b00000000000000000000000000100010 #
1$
1#
b00000000000000000000000000100010 $
#69
0$
0#
#70
b00000000000000000000000000100011 #
1$
1#
b00000000000000000000000000100011 $
#71
0$
0#
#72
b00000000000000000000000000100100 #
1$
1#
b00000000000000000000000000100100 $
#73
0$
0#
#74
b00000000000000000000000000100101 #
1$
1#
b00000000000000000000000000100101 $
#75
0$
0#
#76
b00000000000000000000000000100110 #
1$
1#
b00000000000000000000000000100110 $
#77
0$
0#
#78
b00000000000000000000000000100111 #
1$
1#
b00000000000000000000000000100111 $
#79
0$
0#
#80
b00000000000000000000000000101000 #
1$
1#
b00000000000000000000000000101000 $
#81
0$
0#
#82
b00000000000000000000000000101001 #
1$
1#
b00000000000000000000000000101001 $
#83
0$
0#
#84
b00000000000000000000000000101010 #
1$
1#
b00000000000000000000000000101010 $
#85
0$
0#
#86
b00000000000000000000000000101011 #
1$
1#
b00000000000000000000000000101011 $
#87
0$
0#
#88
b00000000000000000000000000101100 #
1$
1#
b00000000000000000000000000101100 $
#89
0$
0#
#90
b00000000000000000000000000101101 #
1$
1#
b00000000000000000000000000101101 $
#91
0$
0#
#92
b00000000000000000000000000101110 #
1$
1#
b00000000000000000000000000101110 $
#93
0$
0#
#94
b00000000000000000000000000101111 #
1$
1#
b00000000000000000000000000101111 $
#95
0$
0#
#96
b00000000000000000000000000110000 #
1$
1#
b00000000000000000000000000110000 $
#97
0$
0#
#98
b00000000000000000000000000110001 #
1$
1#
b00000000000000000000000000110001 $
#99
0$
0#
#100
b00000000000000000000000000110010 #
1$
1#
b00000000000000000000000000110010 $
#101
0$
0#
#102
b00000000000000000000000000110011 #
1$
1#
b00000000000000000000000000110011 $
#103
0$
0#
#104
b00000000000000000000000000110100 #
1$
1#
b00000000000000000000000000110100 $
#105
0$
0#
#106
b00000000000000000000000000110101 #
1$
1#
b00000000000000000000000000110101 $
#107
0$
0#
#108
b00000000000000000000000000110110 #
1$
1#
b00000000000000000000000000110110 $
#109
0$
0#
#110
b00000000000000000000000000110111 #
1$
1#
b00000000000000000000000000110111 $
#111
0$
0#
#112
b00000000000000000000000000111000 #
1$
1#
b00000000000000000000000000111000 $
#113
0$
0#
#114
b00000000000000000000000000111001 #
1$
1#
b00000000000000000000000000111001 $
#115
0$
0#
#116
b00000000000000000000000000111010 #
1$
1#
b00000000000000000000000000111010 $
#117
0$
0#
#118
b00000000000000000000000000111011 #
1$
1#
b00000000000000000000000000111011 $
#119
0$
0#
#120
b00000000000000000000000000111100 #
1$
1#
b00000000000000000000000000111100 $
#121
0$
0#
#122
b00000000000000000000000000111101 #
1$
1#
b00000000000000000000000000111101 $
#123
0$
0#
#124
b00000000000000000000000000111110 #
1$
1#
b00000000000000000000000000111110 $
#125
0$
0#
#126
b00000000000000000000000000111111 #
1$
1#
b00000000000000000000000000111111 $
#127
0$
0#
#128
b00000000000000000000000001000000 #
1$
1#
b00000000000000000000000001000000 $
#129
0$
0#
#130
b00000000000000000000000001000001 #
1$
1#
b00000000000000000000000001000001 $
#131
0$
0#
#132
b00000000000000000000000001000010 #
1$
1#
b00000000000000000000000001000010 $
#133
0$
0#
#134
b00000000000000000000000001000011 #
1$
1#
b00000000000000000000000001000011 $
#135
0$
0#
#136
b00000000000000000000000001000100 #
1$
1#
b00000000000000000000000001000100 $
#137
0$
0#
#138
b00000000000000000000000001000101 #
1$
1#
b00000000000000000000000001000101 $
#139
0$
0#
#140
b00000000000000000000000001000110 #
1$
1#
b00000000000000000000000001000110 $
#141
0$
0#
#142
b00000000000000000000000001000111 #
1$
1#
b00000000000000000000000001000111 $
#143
0$
0#
#144
b00000000000000000000000001001000 #
1$
1#
b00000000000000000000000001001000 $
#145
0$
0#
#146
b00000000000000000000000001001001 #
1$
1#
b00000000000000000000000001001001 $
#147
0$
0#
#148
b00000000000000000000000001001010 #
1$
1#
b00000000000000000000000001001010 $
#149
0$
0#
#150
b00000000000000000000000001001011 #
1$
1#
b00000000000000000000000001001011 $
#151
0$
0#
#152
b00000000000000000000000001001100 #
1$
1#
b00000000000000000000000001001100 $
#153
0$
0#
#154
b00000000000000000000000001001101 #
1$
1#
b00000000000000000000000001001101 $
#155
0$
0#
#156
b00000000000000000000000001001110 #
1$
1#
b00000000000000000000000001001110 $
#157
0$
0#
#158
b00000000000000000000000001001111 #
1$
1#
b00000000000000000000000001001111 $
#159
0$
0#
#160
b00000000000000000000000001010000 #
1$
1#
b00000000000000000000000001010000 $
#161
0$
0#
#162
b00000000000000000000000001010001 #
1$
1#
b00000000000000000000000001010001 $
#163
0$
0#
#164
b00000000000000000000000001010010 #
1$
1#
b00000000000000000000000001010010 $
#165
0$
0#
#166
b00000000000000000000000001010011 #
1$
1#
b00000000000000000000000001010011 $
#167
0$
0#
#168
b00000000000000000000000001010100 #
1$
1#
b00000000000000000000000001010100 $
#169
0$
0#
#170
b00000000000000000000000001010101 #
1$
1#
b00000000000000000000000001010101 $
#171
0$
0#
#172
b00000000000000000000000001010110 #
1$
1#
b00000000000000000000000001010110 $
#173
0$
0#
#174
b00000000000000000000000001010111 #
1$
1#
b00000000000000000000000001010111 $
#175
0$
0#
#176
b00000000000000000000000001011000 #
1$
1#
b00000000000000000000000001011000 $
#177
0$
0#
#178
b00000000000000000000000001011001 #
1$
1#
b00000000000000000000000001011001 $
#179
0$
0#
#180
b00000000000000000000000001011010 #
1$
1#
b00000000000000000000000001011010 $
#181
0$
0#
#182
b00000000000000000000000001011011 #
1$
1#
b00000000000000000000000001011011 $
#183
0$
0#
#184
b00000000000000000000000001011100 #
1$
1#
b00000000000000000000000001011100 $
#185
0$
0#
#186
b00000000000000000000000001011101 #
1$
1#
b00000000000000000000000001011101 $
#187
0$
0#
#188
b00000000000000000000000001011110 #
1$
1#
b00000000000000000000000001011110 $
#189
0$
0#

View File

@ -1,265 +1,263 @@
$version Generated by VerilatedVcd $end
$date Thu Aug 30 16:11:06 2018
$end
$timescale 1ps $end
$timescale 1ps $end
$scope module top $end
$var wire 1 $ clk $end
$var wire 1 # clk $end
$scope module t $end
$var wire 1 $ clk $end
$var wire 32 # cyc [31:0] $end
$var wire 1 # clk $end
$var wire 32 $ cyc [31:0] $end
$upscope $end
$upscope $end
$enddefinitions $end
#0
b00000000000000000000000000000000 #
1$
1#
b00000000000000000000000000000000 $
#1
0$
0#
#2
b00000000000000000000000000000001 #
1$
1#
b00000000000000000000000000000001 $
#3
0$
0#
#4
b00000000000000000000000000000010 #
1$
1#
b00000000000000000000000000000010 $
#5
0$
0#
#6
b00000000000000000000000000000011 #
1$
1#
b00000000000000000000000000000011 $
#7
0$
0#
#8
b00000000000000000000000000000100 #
1$
1#
b00000000000000000000000000000100 $
#9
0$
0#
#10
b00000000000000000000000000000101 #
1$
1#
b00000000000000000000000000000101 $
#11
0$
0#
#12
b00000000000000000000000000000110 #
1$
1#
b00000000000000000000000000000110 $
#13
0$
0#
#14
b00000000000000000000000000000111 #
1$
1#
b00000000000000000000000000000111 $
#15
0$
0#
#16
b00000000000000000000000000001000 #
1$
1#
b00000000000000000000000000001000 $
#17
0$
0#
#18
b00000000000000000000000000001001 #
1$
1#
b00000000000000000000000000001001 $
#19
0$
0#
#20
b00000000000000000000000000001010 #
1$
1#
b00000000000000000000000000001010 $
#21
0$
0#
#22
b00000000000000000000000000001011 #
1$
1#
b00000000000000000000000000001011 $
#23
0$
0#
#24
b00000000000000000000000000001100 #
1$
1#
b00000000000000000000000000001100 $
#25
0$
0#
#26
b00000000000000000000000000001101 #
1$
1#
b00000000000000000000000000001101 $
#27
0$
0#
#28
b00000000000000000000000000001110 #
1$
1#
b00000000000000000000000000001110 $
#29
0$
0#
#30
b00000000000000000000000000001111 #
1$
1#
b00000000000000000000000000001111 $
#31
0$
0#
#32
b00000000000000000000000000010000 #
1$
1#
b00000000000000000000000000010000 $
#33
0$
0#
#34
b00000000000000000000000000010001 #
1$
1#
b00000000000000000000000000010001 $
#35
0$
0#
#36
b00000000000000000000000000010010 #
1$
1#
b00000000000000000000000000010010 $
#37
0$
0#
#38
b00000000000000000000000000010011 #
1$
1#
b00000000000000000000000000010011 $
#39
0$
0#
#40
b00000000000000000000000000010100 #
1$
1#
b00000000000000000000000000010100 $
#41
0$
0#
#42
b00000000000000000000000000010101 #
1$
1#
b00000000000000000000000000010101 $
#43
0$
0#
#44
b00000000000000000000000000010110 #
1$
1#
b00000000000000000000000000010110 $
#45
0$
0#
#46
b00000000000000000000000000010111 #
1$
1#
b00000000000000000000000000010111 $
#47
0$
0#
#48
b00000000000000000000000000011000 #
1$
1#
b00000000000000000000000000011000 $
#49
0$
0#
#50
b00000000000000000000000000011001 #
1$
1#
b00000000000000000000000000011001 $
#51
0$
0#
#52
b00000000000000000000000000011010 #
1$
1#
b00000000000000000000000000011010 $
#53
0$
0#
#54
b00000000000000000000000000011011 #
1$
1#
b00000000000000000000000000011011 $
#55
0$
0#
#56
b00000000000000000000000000011100 #
1$
1#
b00000000000000000000000000011100 $
#57
0$
0#
#58
b00000000000000000000000000011101 #
1$
1#
b00000000000000000000000000011101 $
#59
0$
0#
#60
b00000000000000000000000000011110 #
1$
1#
b00000000000000000000000000011110 $
#61
0$
0#
#62
b00000000000000000000000000011111 #
1$
1#
b00000000000000000000000000011111 $
#63
0$
0#
#64
b00000000000000000000000000100000 #
1$
1#
b00000000000000000000000000100000 $
#65
0$
0#
#66
b00000000000000000000000000100001 #
1$
1#
b00000000000000000000000000100001 $
#67
0$
0#
#68
b00000000000000000000000000100010 #
1$
1#
b00000000000000000000000000100010 $
#69
0$
0#
#70
b00000000000000000000000000100011 #
1$
1#
b00000000000000000000000000100011 $
#71
0$
0#
#72
b00000000000000000000000000100100 #
1$
1#
b00000000000000000000000000100100 $
#73
0$
0#
#74
b00000000000000000000000000100101 #
1$
1#
b00000000000000000000000000100101 $
#75
0$
0#
#76
b00000000000000000000000000100110 #
1$
1#
b00000000000000000000000000100110 $
#77
0$
0#
#78
b00000000000000000000000000100111 #
1$
1#
b00000000000000000000000000100111 $
#79
0$
0#
#80
b00000000000000000000000000101000 #
1$
1#
b00000000000000000000000000101000 $
#81
0$
0#
#82
b00000000000000000000000000101001 #
1$
1#
b00000000000000000000000000101001 $
#83
0$
0#
#84
b00000000000000000000000000101010 #
1$
1#
b00000000000000000000000000101010 $
#85
0$
0#
#86
b00000000000000000000000000101011 #
1$
1#
b00000000000000000000000000101011 $
#87
0$
0#
#88
b00000000000000000000000000101100 #
1$
1#
b00000000000000000000000000101100 $
#89
0$
0#
#90
b00000000000000000000000000101101 #
1$
1#
b00000000000000000000000000101101 $
#91
0$
0#
#92
b00000000000000000000000000101110 #
1$
1#
b00000000000000000000000000101110 $
#93
0$
0#
#94
b00000000000000000000000000101111 #
1$
1#
b00000000000000000000000000101111 $
#95
0$
0#
#96
b00000000000000000000000000110000 #
1$
1#
b00000000000000000000000000110000 $
#97
0$
0#
#98
b00000000000000000000000000110001 #
1$
1#
b00000000000000000000000000110001 $
#99
0$
0#

View File

@ -1,240 +1,238 @@
$version Generated by VerilatedVcd $end
$date Thu Aug 30 16:11:06 2018
$end
$timescale 1ps $end
$timescale 1ps $end
$scope module top $end
$var wire 1 $ clk $end
$var wire 1 # clk $end
$scope module t $end
$var wire 1 $ clk $end
$var wire 32 # cyc [31:0] $end
$var wire 1 # clk $end
$var wire 32 $ cyc [31:0] $end
$upscope $end
$upscope $end
$enddefinitions $end
#100
b00000000000000000000000000110010 #
1$
1#
b00000000000000000000000000110010 $
#101
0$
0#
#102
b00000000000000000000000000110011 #
1$
1#
b00000000000000000000000000110011 $
#103
0$
0#
#104
b00000000000000000000000000110100 #
1$
1#
b00000000000000000000000000110100 $
#105
0$
0#
#106
b00000000000000000000000000110101 #
1$
1#
b00000000000000000000000000110101 $
#107
0$
0#
#108
b00000000000000000000000000110110 #
1$
1#
b00000000000000000000000000110110 $
#109
0$
0#
#110
b00000000000000000000000000110111 #
1$
1#
b00000000000000000000000000110111 $
#111
0$
0#
#112
b00000000000000000000000000111000 #
1$
1#
b00000000000000000000000000111000 $
#113
0$
0#
#114
b00000000000000000000000000111001 #
1$
1#
b00000000000000000000000000111001 $
#115
0$
0#
#116
b00000000000000000000000000111010 #
1$
1#
b00000000000000000000000000111010 $
#117
0$
0#
#118
b00000000000000000000000000111011 #
1$
1#
b00000000000000000000000000111011 $
#119
0$
0#
#120
b00000000000000000000000000111100 #
1$
1#
b00000000000000000000000000111100 $
#121
0$
0#
#122
b00000000000000000000000000111101 #
1$
1#
b00000000000000000000000000111101 $
#123
0$
0#
#124
b00000000000000000000000000111110 #
1$
1#
b00000000000000000000000000111110 $
#125
0$
0#
#126
b00000000000000000000000000111111 #
1$
1#
b00000000000000000000000000111111 $
#127
0$
0#
#128
b00000000000000000000000001000000 #
1$
1#
b00000000000000000000000001000000 $
#129
0$
0#
#130
b00000000000000000000000001000001 #
1$
1#
b00000000000000000000000001000001 $
#131
0$
0#
#132
b00000000000000000000000001000010 #
1$
1#
b00000000000000000000000001000010 $
#133
0$
0#
#134
b00000000000000000000000001000011 #
1$
1#
b00000000000000000000000001000011 $
#135
0$
0#
#136
b00000000000000000000000001000100 #
1$
1#
b00000000000000000000000001000100 $
#137
0$
0#
#138
b00000000000000000000000001000101 #
1$
1#
b00000000000000000000000001000101 $
#139
0$
0#
#140
b00000000000000000000000001000110 #
1$
1#
b00000000000000000000000001000110 $
#141
0$
0#
#142
b00000000000000000000000001000111 #
1$
1#
b00000000000000000000000001000111 $
#143
0$
0#
#144
b00000000000000000000000001001000 #
1$
1#
b00000000000000000000000001001000 $
#145
0$
0#
#146
b00000000000000000000000001001001 #
1$
1#
b00000000000000000000000001001001 $
#147
0$
0#
#148
b00000000000000000000000001001010 #
1$
1#
b00000000000000000000000001001010 $
#149
0$
0#
#150
b00000000000000000000000001001011 #
1$
1#
b00000000000000000000000001001011 $
#151
0$
0#
#152
b00000000000000000000000001001100 #
1$
1#
b00000000000000000000000001001100 $
#153
0$
0#
#154
b00000000000000000000000001001101 #
1$
1#
b00000000000000000000000001001101 $
#155
0$
0#
#156
b00000000000000000000000001001110 #
1$
1#
b00000000000000000000000001001110 $
#157
0$
0#
#158
b00000000000000000000000001001111 #
1$
1#
b00000000000000000000000001001111 $
#159
0$
0#
#160
b00000000000000000000000001010000 #
1$
1#
b00000000000000000000000001010000 $
#161
0$
0#
#162
b00000000000000000000000001010001 #
1$
1#
b00000000000000000000000001010001 $
#163
0$
0#
#164
b00000000000000000000000001010010 #
1$
1#
b00000000000000000000000001010010 $
#165
0$
0#
#166
b00000000000000000000000001010011 #
1$
1#
b00000000000000000000000001010011 $
#167
0$
0#
#168
b00000000000000000000000001010100 #
1$
1#
b00000000000000000000000001010100 $
#169
0$
0#
#170
b00000000000000000000000001010101 #
1$
1#
b00000000000000000000000001010101 $
#171
0$
0#
#172
b00000000000000000000000001010110 #
1$
1#
b00000000000000000000000001010110 $
#173
0$
0#
#174
b00000000000000000000000001010111 #
1$
1#
b00000000000000000000000001010111 $
#175
0$
0#
#176
b00000000000000000000000001011000 #
1$
1#
b00000000000000000000000001011000 $
#177
0$
0#
#178
b00000000000000000000000001011001 #
1$
1#
b00000000000000000000000001011001 $
#179
0$
0#
#180
b00000000000000000000000001011010 #
1$
1#
b00000000000000000000000001011010 $
#181
0$
0#
#182
b00000000000000000000000001011011 #
1$
1#
b00000000000000000000000001011011 $
#183
0$
0#
#184
b00000000000000000000000001011100 #
1$
1#
b00000000000000000000000001011100 $
#185
0$
0#
#186
b00000000000000000000000001011101 #
1$
1#
b00000000000000000000000001011101 $
#187
0$
0#
#188
b00000000000000000000000001011110 #
1$
1#
b00000000000000000000000001011110 $
#189
0$
0#

View File

@ -1,265 +1,263 @@
$version Generated by VerilatedVcd $end
$date Thu Aug 30 16:10:58 2018
$end
$timescale 1ps $end
$timescale 1ps $end
$scope module top $end
$var wire 1 $ clk $end
$var wire 1 # clk $end
$scope module t $end
$var wire 1 $ clk $end
$var wire 32 # cyc [31:0] $end
$var wire 1 # clk $end
$var wire 32 $ cyc [31:0] $end
$upscope $end
$upscope $end
$enddefinitions $end
#0
b00000000000000000000000000000000 #
1$
1#
b00000000000000000000000000000000 $
#1
0$
0#
#2
b00000000000000000000000000000001 #
1$
1#
b00000000000000000000000000000001 $
#3
0$
0#
#4
b00000000000000000000000000000010 #
1$
1#
b00000000000000000000000000000010 $
#5
0$
0#
#6
b00000000000000000000000000000011 #
1$
1#
b00000000000000000000000000000011 $
#7
0$
0#
#8
b00000000000000000000000000000100 #
1$
1#
b00000000000000000000000000000100 $
#9
0$
0#
#10
b00000000000000000000000000000101 #
1$
1#
b00000000000000000000000000000101 $
#11
0$
0#
#12
b00000000000000000000000000000110 #
1$
1#
b00000000000000000000000000000110 $
#13
0$
0#
#14
b00000000000000000000000000000111 #
1$
1#
b00000000000000000000000000000111 $
#15
0$
0#
#16
b00000000000000000000000000001000 #
1$
1#
b00000000000000000000000000001000 $
#17
0$
0#
#18
b00000000000000000000000000001001 #
1$
1#
b00000000000000000000000000001001 $
#19
0$
0#
#20
b00000000000000000000000000001010 #
1$
1#
b00000000000000000000000000001010 $
#21
0$
0#
#22
b00000000000000000000000000001011 #
1$
1#
b00000000000000000000000000001011 $
#23
0$
0#
#24
b00000000000000000000000000001100 #
1$
1#
b00000000000000000000000000001100 $
#25
0$
0#
#26
b00000000000000000000000000001101 #
1$
1#
b00000000000000000000000000001101 $
#27
0$
0#
#28
b00000000000000000000000000001110 #
1$
1#
b00000000000000000000000000001110 $
#29
0$
0#
#30
b00000000000000000000000000001111 #
1$
1#
b00000000000000000000000000001111 $
#31
0$
0#
#32
b00000000000000000000000000010000 #
1$
1#
b00000000000000000000000000010000 $
#33
0$
0#
#34
b00000000000000000000000000010001 #
1$
1#
b00000000000000000000000000010001 $
#35
0$
0#
#36
b00000000000000000000000000010010 #
1$
1#
b00000000000000000000000000010010 $
#37
0$
0#
#38
b00000000000000000000000000010011 #
1$
1#
b00000000000000000000000000010011 $
#39
0$
0#
#40
b00000000000000000000000000010100 #
1$
1#
b00000000000000000000000000010100 $
#41
0$
0#
#42
b00000000000000000000000000010101 #
1$
1#
b00000000000000000000000000010101 $
#43
0$
0#
#44
b00000000000000000000000000010110 #
1$
1#
b00000000000000000000000000010110 $
#45
0$
0#
#46
b00000000000000000000000000010111 #
1$
1#
b00000000000000000000000000010111 $
#47
0$
0#
#48
b00000000000000000000000000011000 #
1$
1#
b00000000000000000000000000011000 $
#49
0$
0#
#50
b00000000000000000000000000011001 #
1$
1#
b00000000000000000000000000011001 $
#51
0$
0#
#52
b00000000000000000000000000011010 #
1$
1#
b00000000000000000000000000011010 $
#53
0$
0#
#54
b00000000000000000000000000011011 #
1$
1#
b00000000000000000000000000011011 $
#55
0$
0#
#56
b00000000000000000000000000011100 #
1$
1#
b00000000000000000000000000011100 $
#57
0$
0#
#58
b00000000000000000000000000011101 #
1$
1#
b00000000000000000000000000011101 $
#59
0$
0#
#60
b00000000000000000000000000011110 #
1$
1#
b00000000000000000000000000011110 $
#61
0$
0#
#62
b00000000000000000000000000011111 #
1$
1#
b00000000000000000000000000011111 $
#63
0$
0#
#64
b00000000000000000000000000100000 #
1$
1#
b00000000000000000000000000100000 $
#65
0$
0#
#66
b00000000000000000000000000100001 #
1$
1#
b00000000000000000000000000100001 $
#67
0$
0#
#68
b00000000000000000000000000100010 #
1$
1#
b00000000000000000000000000100010 $
#69
0$
0#
#70
b00000000000000000000000000100011 #
1$
1#
b00000000000000000000000000100011 $
#71
0$
0#
#72
b00000000000000000000000000100100 #
1$
1#
b00000000000000000000000000100100 $
#73
0$
0#
#74
b00000000000000000000000000100101 #
1$
1#
b00000000000000000000000000100101 $
#75
0$
0#
#76
b00000000000000000000000000100110 #
1$
1#
b00000000000000000000000000100110 $
#77
0$
0#
#78
b00000000000000000000000000100111 #
1$
1#
b00000000000000000000000000100111 $
#79
0$
0#
#80
b00000000000000000000000000101000 #
1$
1#
b00000000000000000000000000101000 $
#81
0$
0#
#82
b00000000000000000000000000101001 #
1$
1#
b00000000000000000000000000101001 $
#83
0$
0#
#84
b00000000000000000000000000101010 #
1$
1#
b00000000000000000000000000101010 $
#85
0$
0#
#86
b00000000000000000000000000101011 #
1$
1#
b00000000000000000000000000101011 $
#87
0$
0#
#88
b00000000000000000000000000101100 #
1$
1#
b00000000000000000000000000101100 $
#89
0$
0#
#90
b00000000000000000000000000101101 #
1$
1#
b00000000000000000000000000101101 $
#91
0$
0#
#92
b00000000000000000000000000101110 #
1$
1#
b00000000000000000000000000101110 $
#93
0$
0#
#94
b00000000000000000000000000101111 #
1$
1#
b00000000000000000000000000101111 $
#95
0$
0#
#96
b00000000000000000000000000110000 #
1$
1#
b00000000000000000000000000110000 $
#97
0$
0#
#98
b00000000000000000000000000110001 #
1$
1#
b00000000000000000000000000110001 $
#99
0$
0#

View File

@ -1,240 +1,238 @@
$version Generated by VerilatedVcd $end
$date Thu Aug 30 16:10:58 2018
$end
$timescale 1ps $end
$timescale 1ps $end
$scope module top $end
$var wire 1 $ clk $end
$var wire 1 # clk $end
$scope module t $end
$var wire 1 $ clk $end
$var wire 32 # cyc [31:0] $end
$var wire 1 # clk $end
$var wire 32 $ cyc [31:0] $end
$upscope $end
$upscope $end
$enddefinitions $end
#100
b00000000000000000000000000110010 #
1$
1#
b00000000000000000000000000110010 $
#101
0$
0#
#102
b00000000000000000000000000110011 #
1$
1#
b00000000000000000000000000110011 $
#103
0$
0#
#104
b00000000000000000000000000110100 #
1$
1#
b00000000000000000000000000110100 $
#105
0$
0#
#106
b00000000000000000000000000110101 #
1$
1#
b00000000000000000000000000110101 $
#107
0$
0#
#108
b00000000000000000000000000110110 #
1$
1#
b00000000000000000000000000110110 $
#109
0$
0#
#110
b00000000000000000000000000110111 #
1$
1#
b00000000000000000000000000110111 $
#111
0$
0#
#112
b00000000000000000000000000111000 #
1$
1#
b00000000000000000000000000111000 $
#113
0$
0#
#114
b00000000000000000000000000111001 #
1$
1#
b00000000000000000000000000111001 $
#115
0$
0#
#116
b00000000000000000000000000111010 #
1$
1#
b00000000000000000000000000111010 $
#117
0$
0#
#118
b00000000000000000000000000111011 #
1$
1#
b00000000000000000000000000111011 $
#119
0$
0#
#120
b00000000000000000000000000111100 #
1$
1#
b00000000000000000000000000111100 $
#121
0$
0#
#122
b00000000000000000000000000111101 #
1$
1#
b00000000000000000000000000111101 $
#123
0$
0#
#124
b00000000000000000000000000111110 #
1$
1#
b00000000000000000000000000111110 $
#125
0$
0#
#126
b00000000000000000000000000111111 #
1$
1#
b00000000000000000000000000111111 $
#127
0$
0#
#128
b00000000000000000000000001000000 #
1$
1#
b00000000000000000000000001000000 $
#129
0$
0#
#130
b00000000000000000000000001000001 #
1$
1#
b00000000000000000000000001000001 $
#131
0$
0#
#132
b00000000000000000000000001000010 #
1$
1#
b00000000000000000000000001000010 $
#133
0$
0#
#134
b00000000000000000000000001000011 #
1$
1#
b00000000000000000000000001000011 $
#135
0$
0#
#136
b00000000000000000000000001000100 #
1$
1#
b00000000000000000000000001000100 $
#137
0$
0#
#138
b00000000000000000000000001000101 #
1$
1#
b00000000000000000000000001000101 $
#139
0$
0#
#140
b00000000000000000000000001000110 #
1$
1#
b00000000000000000000000001000110 $
#141
0$
0#
#142
b00000000000000000000000001000111 #
1$
1#
b00000000000000000000000001000111 $
#143
0$
0#
#144
b00000000000000000000000001001000 #
1$
1#
b00000000000000000000000001001000 $
#145
0$
0#
#146
b00000000000000000000000001001001 #
1$
1#
b00000000000000000000000001001001 $
#147
0$
0#
#148
b00000000000000000000000001001010 #
1$
1#
b00000000000000000000000001001010 $
#149
0$
0#
#150
b00000000000000000000000001001011 #
1$
1#
b00000000000000000000000001001011 $
#151
0$
0#
#152
b00000000000000000000000001001100 #
1$
1#
b00000000000000000000000001001100 $
#153
0$
0#
#154
b00000000000000000000000001001101 #
1$
1#
b00000000000000000000000001001101 $
#155
0$
0#
#156
b00000000000000000000000001001110 #
1$
1#
b00000000000000000000000001001110 $
#157
0$
0#
#158
b00000000000000000000000001001111 #
1$
1#
b00000000000000000000000001001111 $
#159
0$
0#
#160
b00000000000000000000000001010000 #
1$
1#
b00000000000000000000000001010000 $
#161
0$
0#
#162
b00000000000000000000000001010001 #
1$
1#
b00000000000000000000000001010001 $
#163
0$
0#
#164
b00000000000000000000000001010010 #
1$
1#
b00000000000000000000000001010010 $
#165
0$
0#
#166
b00000000000000000000000001010011 #
1$
1#
b00000000000000000000000001010011 $
#167
0$
0#
#168
b00000000000000000000000001010100 #
1$
1#
b00000000000000000000000001010100 $
#169
0$
0#
#170
b00000000000000000000000001010101 #
1$
1#
b00000000000000000000000001010101 $
#171
0$
0#
#172
b00000000000000000000000001010110 #
1$
1#
b00000000000000000000000001010110 $
#173
0$
0#
#174
b00000000000000000000000001010111 #
1$
1#
b00000000000000000000000001010111 $
#175
0$
0#
#176
b00000000000000000000000001011000 #
1$
1#
b00000000000000000000000001011000 $
#177
0$
0#
#178
b00000000000000000000000001011001 #
1$
1#
b00000000000000000000000001011001 $
#179
0$
0#
#180
b00000000000000000000000001011010 #
1$
1#
b00000000000000000000000001011010 $
#181
0$
0#
#182
b00000000000000000000000001011011 #
1$
1#
b00000000000000000000000001011011 $
#183
0$
0#
#184
b00000000000000000000000001011100 #
1$
1#
b00000000000000000000000001011100 $
#185
0$
0#
#186
b00000000000000000000000001011101 #
1$
1#
b00000000000000000000000001011101 $
#187
0$
0#
#188
b00000000000000000000000001011110 #
1$
1#
b00000000000000000000000001011110 $
#189
0$
0#

View File

@ -1,43 +1,42 @@
$version Generated by VerilatedVcd $end
$date Sun May 8 19:00:11 2022 $end
$timescale 1ps $end
$scope module top $end
$var wire 1 $ clk $end
$scope module $unit $end
$var wire 1 # global_bit $end
$var wire 1 # global_bit $end
$upscope $end
$var wire 1 = clk $end
$scope module t $end
$var wire 1 G LONGSTART_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_LONGEND $end
$var wire 1 $ clk $end
$var wire 32 % cyc [31:0] $end
$var wire 8 E unpacked_array[-1] [7:0] $end
$var wire 8 D unpacked_array[-2] [7:0] $end
$var wire 8 F unpacked_array[0] [7:0] $end
$var real 64 2 v_arr_real[0] $end
$var real 64 4 v_arr_real[1] $end
$var wire 2 ) v_arrp [2:1] $end
$var wire 4 * v_arrp_arrp [3:0] $end
$var wire 4 + v_arrp_strp [3:0] $end
$var wire 1 > v_arru[1] $end
$var wire 1 ? v_arru[2] $end
$var wire 2 , v_arru_arrp[3] [2:1] $end
$var wire 2 - v_arru_arrp[4] [2:1] $end
$var wire 1 @ v_arru_arru[3][1] $end
$var wire 1 A v_arru_arru[3][2] $end
$var wire 1 B v_arru_arru[4][1] $end
$var wire 1 C v_arru_arru[4][2] $end
$var wire 2 . v_arru_strp[3] [1:0] $end
$var wire 2 / v_arru_strp[4] [1:0] $end
$var wire 3 : v_enumb [2:0] $end
$var wire 6 ; v_enumb2_str [5:0] $end
$var wire 32 8 v_enumed [31:0] $end
$var wire 32 9 v_enumed2 [31:0] $end
$var real 64 0 v_real $end
$var wire 64 6 v_str32x2 [63:0] $end
$var wire 2 & v_strp [1:0] $end
$var wire 4 ' v_strp_strp [3:0] $end
$var wire 2 ( v_unip_strp [1:0] $end
$var wire 1 = clk $end
$var wire 32 $ cyc [31:0] $end
$var wire 2 % v_strp [1:0] $end
$var wire 4 & v_strp_strp [3:0] $end
$var wire 2 ' v_unip_strp [1:0] $end
$var wire 2 ( v_arrp [2:1] $end
$var wire 4 ) v_arrp_arrp [3:0] $end
$var wire 4 * v_arrp_strp [3:0] $end
$var wire 1 > v_arru[1] $end
$var wire 1 ? v_arru[2] $end
$var wire 1 @ v_arru_arru[3][1] $end
$var wire 1 A v_arru_arru[3][2] $end
$var wire 1 B v_arru_arru[4][1] $end
$var wire 1 C v_arru_arru[4][2] $end
$var wire 2 + v_arru_arrp[3] [2:1] $end
$var wire 2 , v_arru_arrp[4] [2:1] $end
$var wire 2 - v_arru_strp[3] [1:0] $end
$var wire 2 . v_arru_strp[4] [1:0] $end
$var real 64 / v_real $end
$var real 64 1 v_arr_real[0] $end
$var real 64 3 v_arr_real[1] $end
$var wire 64 5 v_str32x2 [63:0] $end
$var wire 32 7 v_enumed [31:0] $end
$var wire 32 8 v_enumed2 [31:0] $end
$var wire 3 9 v_enumb [2:0] $end
$var wire 6 : v_enumb2_str [5:0] $end
$var wire 8 D unpacked_array[-2] [7:0] $end
$var wire 8 E unpacked_array[-1] [7:0] $end
$var wire 8 F unpacked_array[0] [7:0] $end
$var wire 1 G LONGSTART_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_LONGEND $end
$scope module a_module_instantiation_with_a_very_long_name_that_once_its_signals_get_concatenated_and_inlined_will_almost_certainly_result_in_them_getting_hashed $end
$var wire 32 H PARAM [31:0] $end
$upscope $end
@ -48,9 +47,9 @@ $timescale 1ps $end
$var wire 32 J PARAM [31:0] $end
$upscope $end
$scope module unnamedblk1 $end
$var wire 32 < b [31:0] $end
$var wire 32 ; b [31:0] $end
$scope module unnamedblk2 $end
$var wire 32 = a [31:0] $end
$var wire 32 < a [31:0] $end
$upscope $end
$upscope $end
$upscope $end
@ -60,28 +59,28 @@ $enddefinitions $end
#0
1#
0$
b00000000000000000000000000000000 %
b00 &
b0000 '
b00000000000000000000000000000000 $
b00 %
b0000 &
b00 '
b00 (
b00 )
b0000 )
b0000 *
b0000 +
b00 +
b00 ,
b00 -
b00 .
b00 /
r0 0
r0 2
r0 4
b0000000000000000000000000000000000000000000000000000000011111111 6
r0 /
r0 1
r0 3
b0000000000000000000000000000000000000000000000000000000011111111 5
b00000000000000000000000000000000 7
b00000000000000000000000000000000 8
b00000000000000000000000000000000 9
b000 :
b000000 ;
b000 9
b000000 :
b00000000000000000000000000000000 ;
b00000000000000000000000000000000 <
b00000000000000000000000000000000 =
0=
0>
0?
0@
@ -96,139 +95,139 @@ b00000000000000000000000000000100 H
b00000000000000000000000000000010 I
b00000000000000000000000000000011 J
#10
1$
b00000000000000000000000000000001 %
b11 &
b1111 '
b00000000000000000000000000000001 $
b11 %
b1111 &
b11 '
b11 (
b11 )
b1111 )
b1111 *
b1111 +
b11 +
b11 ,
b11 -
b11 .
b11 /
r0.1 0
r0.2 2
r0.3 4
b0000000000000000000000000000000100000000000000000000000011111110 6
b00000000000000000000000000000001 8
b00000000000000000000000000000010 9
b111 :
b00000000000000000000000000000101 <
b00000000000000000000000000000101 =
#15
0$
#20
1$
b00000000000000000000000000000010 %
b00 &
b0000 '
b00 (
b00 )
b0000 *
b0000 +
b00 ,
b00 -
b00 .
b00 /
r0.2 0
r0.4 2
r0.6 4
b0000000000000000000000000000001000000000000000000000000011111101 6
r0.1 /
r0.2 1
r0.3 3
b0000000000000000000000000000000100000000000000000000000011111110 5
b00000000000000000000000000000001 7
b00000000000000000000000000000010 8
b00000000000000000000000000000100 9
b110 :
b111111 ;
#25
0$
#30
1$
b00000000000000000000000000000011 %
b11 &
b1111 '
b11 (
b11 )
b1111 *
b1111 +
b11 ,
b11 -
b11 .
b11 /
r0.3 0
r0.6000000000000001 2
r0.8999999999999999 4
b0000000000000000000000000000001100000000000000000000000011111100 6
b00000000000000000000000000000011 8
b00000000000000000000000000000110 9
b101 :
b110110 ;
#35
0$
#40
1$
b00000000000000000000000000000100 %
b00 &
b0000 '
b111 9
b00000000000000000000000000000101 ;
b00000000000000000000000000000101 <
1=
#15
0=
#20
b00000000000000000000000000000010 $
b00 %
b0000 &
b00 '
b00 (
b00 )
b0000 )
b0000 *
b0000 +
b00 +
b00 ,
b00 -
b00 .
b00 /
r0.4 0
r0.8 2
r1.2 4
b0000000000000000000000000000010000000000000000000000000011111011 6
r0.2 /
r0.4 1
r0.6 3
b0000000000000000000000000000001000000000000000000000000011111101 5
b00000000000000000000000000000010 7
b00000000000000000000000000000100 8
b00000000000000000000000000001000 9
b100 :
b101101 ;
#45
0$
#50
1$
b00000000000000000000000000000101 %
b11 &
b1111 '
b110 9
b111111 :
1=
#25
0=
#30
b00000000000000000000000000000011 $
b11 %
b1111 &
b11 '
b11 (
b11 )
b1111 )
b1111 *
b1111 +
b11 +
b11 ,
b11 -
b11 .
b11 /
r0.5 0
r1 2
r1.5 4
b0000000000000000000000000000010100000000000000000000000011111010 6
b00000000000000000000000000000101 8
b00000000000000000000000000001010 9
b011 :
b100100 ;
#55
0$
#60
1$
b00000000000000000000000000000110 %
b00 &
b0000 '
r0.3 /
r0.6000000000000001 1
r0.8999999999999999 3
b0000000000000000000000000000001100000000000000000000000011111100 5
b00000000000000000000000000000011 7
b00000000000000000000000000000110 8
b101 9
b110110 :
1=
#35
0=
#40
b00000000000000000000000000000100 $
b00 %
b0000 &
b00 '
b00 (
b00 )
b0000 )
b0000 *
b0000 +
b00 +
b00 ,
b00 -
b00 .
b00 /
r0.6 0
r1.2 2
r1.8 4
b0000000000000000000000000000011000000000000000000000000011111001 6
b00000000000000000000000000000110 8
b00000000000000000000000000001100 9
b010 :
b011011 ;
r0.4 /
r0.8 1
r1.2 3
b0000000000000000000000000000010000000000000000000000000011111011 5
b00000000000000000000000000000100 7
b00000000000000000000000000001000 8
b100 9
b101101 :
1=
#45
0=
#50
b00000000000000000000000000000101 $
b11 %
b1111 &
b11 '
b11 (
b1111 )
b1111 *
b11 +
b11 ,
b11 -
b11 .
r0.5 /
r1 1
r1.5 3
b0000000000000000000000000000010100000000000000000000000011111010 5
b00000000000000000000000000000101 7
b00000000000000000000000000001010 8
b011 9
b100100 :
1=
#55
0=
#60
b00000000000000000000000000000110 $
b00 %
b0000 &
b00 '
b00 (
b0000 )
b0000 *
b00 +
b00 ,
b00 -
b00 .
r0.6 /
r1.2 1
r1.8 3
b0000000000000000000000000000011000000000000000000000000011111001 5
b00000000000000000000000000000110 7
b00000000000000000000000000001100 8
b010 9
b011011 :
1=

View File

@ -1,5 +1,5 @@
$date
Wed Feb 23 00:01:04 2022
Tue Oct 24 11:00:03 2023
$end
$version
@ -9,237 +9,237 @@ $timescale
1ps
$end
$scope module top $end
$var wire 1 ! clk $end
$scope module $unit $end
$var bit 1 ! global_bit $end
$upscope $end
$var wire 1 " clk $end
$scope module t $end
$var wire 1 ! clk $end
$var integer 32 " cyc [31:0] $end
$var logic 2 # v_strp [1:0] $end
$var logic 4 $ v_strp_strp [3:0] $end
$var logic 2 % v_unip_strp [1:0] $end
$var logic 2 & v_arrp [2:1] $end
$var logic 4 ' v_arrp_arrp [3:0] $end
$var logic 4 ( v_arrp_strp [3:0] $end
$var logic 1 ) v_arru[1] $end
$var logic 1 * v_arru[2] $end
$var logic 1 + v_arru_arru[3][1] $end
$var logic 1 , v_arru_arru[3][2] $end
$var logic 1 - v_arru_arru[4][1] $end
$var logic 1 . v_arru_arru[4][2] $end
$var logic 2 / v_arru_arrp[3] [2:1] $end
$var logic 2 0 v_arru_arrp[4] [2:1] $end
$var logic 2 1 v_arru_strp[3] [1:0] $end
$var logic 2 2 v_arru_strp[4] [1:0] $end
$var real 64 3 v_real $end
$var real 64 4 v_arr_real[0] $end
$var real 64 5 v_arr_real[1] $end
$var logic 64 6 v_str32x2 [63:0] $end
$var wire 1 " clk $end
$var integer 32 # cyc [31:0] $end
$var bit 2 $ v_strp [1:0] $end
$var bit 4 % v_strp_strp [3:0] $end
$var bit 2 & v_unip_strp [1:0] $end
$var bit 2 ' v_arrp [2:1] $end
$var bit 4 ( v_arrp_arrp [3:0] $end
$var bit 4 ) v_arrp_strp [3:0] $end
$var bit 1 * v_arru[1] $end
$var bit 1 + v_arru[2] $end
$var bit 1 , v_arru_arru[3][1] $end
$var bit 1 - v_arru_arru[3][2] $end
$var bit 1 . v_arru_arru[4][1] $end
$var bit 1 / v_arru_arru[4][2] $end
$var bit 2 0 v_arru_arrp[3] [2:1] $end
$var bit 2 1 v_arru_arrp[4] [2:1] $end
$var bit 2 2 v_arru_strp[3] [1:0] $end
$var bit 2 3 v_arru_strp[4] [1:0] $end
$var real 64 4 v_real $end
$var real 64 5 v_arr_real[0] $end
$var real 64 6 v_arr_real[1] $end
$var logic 64 7 v_str32x2 [63:0] $end
$attrbegin misc 07 t.enumed_t 4 ZERO ONE TWO THREE 00000000000000000000000000000000 00000000000000000000000000000001 00000000000000000000000000000010 00000000000000000000000000000011 1 $end
$attrbegin misc 07 "" 1 $end
$var logic 32 7 v_enumed [31:0] $end
$var int 32 8 v_enumed [31:0] $end
$attrbegin misc 07 "" 1 $end
$var logic 32 8 v_enumed2 [31:0] $end
$var int 32 9 v_enumed2 [31:0] $end
$attrbegin misc 07 t.enumb_t 4 BZERO BONE BTWO BTHREE 000 001 010 011 2 $end
$attrbegin misc 07 "" 2 $end
$var logic 3 9 v_enumb [2:0] $end
$var logic 6 : v_enumb2_str [5:0] $end
$var logic 8 ; unpacked_array[-2] [7:0] $end
$var logic 8 < unpacked_array[-1] [7:0] $end
$var logic 8 = unpacked_array[0] [7:0] $end
$var bit 1 > LONGSTART_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_LONGEND $end
$var logic 3 : v_enumb [2:0] $end
$var logic 6 ; v_enumb2_str [5:0] $end
$var logic 8 < unpacked_array[-2] [7:0] $end
$var logic 8 = unpacked_array[-1] [7:0] $end
$var logic 8 > unpacked_array[0] [7:0] $end
$var bit 1 ? LONGSTART_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_LONGEND $end
$scope module a_module_instantiation_with_a_very_long_name_that_once_its_signals_get_concatenated_and_inlined_will_almost_certainly_result_in_them_getting_hashed $end
$var parameter 32 ? PARAM [31:0] $end
$upscope $end
$scope module p2 $end
$var parameter 32 @ PARAM [31:0] $end
$upscope $end
$scope module p3 $end
$scope module p2 $end
$var parameter 32 A PARAM [31:0] $end
$upscope $end
$scope module p3 $end
$var parameter 32 B PARAM [31:0] $end
$upscope $end
$scope module unnamedblk1 $end
$var integer 32 B b [31:0] $end
$var integer 32 C b [31:0] $end
$scope module unnamedblk2 $end
$var integer 32 C a [31:0] $end
$var integer 32 D a [31:0] $end
$upscope $end
$upscope $end
$upscope $end
$scope module $unit $end
$var bit 1 D global_bit $end
$upscope $end
$upscope $end
$enddefinitions $end
#0
$dumpvars
1D
b00000000000000000000000000000000 D
b00000000000000000000000000000000 C
b00000000000000000000000000000000 B
b00000000000000000000000000000011 A
b00000000000000000000000000000010 @
b00000000000000000000000000000100 ?
0>
b00000000000000000000000000000011 B
b00000000000000000000000000000010 A
b00000000000000000000000000000100 @
0?
b00000000 >
b00000000 =
b00000000 <
b00000000 ;
b000000 :
b000 9
b000000 ;
b000 :
b00000000000000000000000000000000 9
b00000000000000000000000000000000 8
b00000000000000000000000000000000 7
b0000000000000000000000000000000000000000000000000000000011111111 6
b0000000000000000000000000000000000000000000000000000000011111111 7
r0 6
r0 5
r0 4
r0 3
b00 3
b00 2
b00 1
b00 0
b00 /
0/
0.
0-
0,
0+
0*
0)
b0000 )
b0000 (
b0000 '
b00 '
b00 &
b00 %
b0000 $
b00 #
b00000000000000000000000000000000 "
0!
b0000 %
b00 $
b00000000000000000000000000000000 #
0"
1!
$end
#10
1!
b00000000000000000000000000000001 "
b11 #
b1111 $
b11 %
1"
b00000000000000000000000000000001 #
b11 $
b1111 %
b11 &
b1111 '
b11 '
b1111 (
b11 /
b1111 )
b11 0
b11 1
b11 2
r0.1 3
r0.2 4
r0.3 5
b0000000000000000000000000000000100000000000000000000000011111110 6
b00000000000000000000000000000001 7
b00000000000000000000000000000010 8
b111 9
b00000000000000000000000000000101 B
b11 3
r0.1 4
r0.2 5
r0.3 6
b0000000000000000000000000000000100000000000000000000000011111110 7
b00000000000000000000000000000001 8
b00000000000000000000000000000010 9
b111 :
b00000000000000000000000000000101 C
b00000000000000000000000000000101 D
#15
0!
0"
#20
1!
b110 9
b00000000000000000000000000000100 8
b00000000000000000000000000000010 7
b0000000000000000000000000000001000000000000000000000000011111101 6
r0.6 5
r0.4 4
r0.2 3
1"
b110 :
b00000000000000000000000000000100 9
b00000000000000000000000000000010 8
b0000000000000000000000000000001000000000000000000000000011111101 7
r0.6 6
r0.4 5
r0.2 4
b00 3
b00 2
b00 1
b00 0
b00 /
b0000 )
b0000 (
b0000 '
b00 '
b00 &
b00 %
b0000 $
b00 #
b00000000000000000000000000000010 "
b111111 :
b0000 %
b00 $
b00000000000000000000000000000010 #
b111111 ;
#25
0!
0"
#30
1!
b110110 :
b00000000000000000000000000000011 "
b11 #
b1111 $
b11 %
1"
b110110 ;
b00000000000000000000000000000011 #
b11 $
b1111 %
b11 &
b1111 '
b11 '
b1111 (
b11 /
b1111 )
b11 0
b11 1
b11 2
r0.3 3
r0.6000000000000001 4
r0.8999999999999999 5
b0000000000000000000000000000001100000000000000000000000011111100 6
b00000000000000000000000000000011 7
b00000000000000000000000000000110 8
b101 9
b11 3
r0.3 4
r0.6000000000000001 5
r0.8999999999999999 6
b0000000000000000000000000000001100000000000000000000000011111100 7
b00000000000000000000000000000011 8
b00000000000000000000000000000110 9
b101 :
#35
0!
0"
#40
1!
b100 9
b00000000000000000000000000001000 8
b00000000000000000000000000000100 7
b0000000000000000000000000000010000000000000000000000000011111011 6
r1.2 5
r0.8 4
r0.4 3
1"
b100 :
b00000000000000000000000000001000 9
b00000000000000000000000000000100 8
b0000000000000000000000000000010000000000000000000000000011111011 7
r1.2 6
r0.8 5
r0.4 4
b00 3
b00 2
b00 1
b00 0
b00 /
b0000 )
b0000 (
b0000 '
b00 '
b00 &
b00 %
b0000 $
b00 #
b00000000000000000000000000000100 "
b101101 :
b0000 %
b00 $
b00000000000000000000000000000100 #
b101101 ;
#45
0!
0"
#50
1!
b100100 :
b00000000000000000000000000000101 "
b11 #
b1111 $
b11 %
1"
b100100 ;
b00000000000000000000000000000101 #
b11 $
b1111 %
b11 &
b1111 '
b11 '
b1111 (
b11 /
b1111 )
b11 0
b11 1
b11 2
r0.5 3
r1 4
r1.5 5
b0000000000000000000000000000010100000000000000000000000011111010 6
b00000000000000000000000000000101 7
b00000000000000000000000000001010 8
b011 9
b11 3
r0.5 4
r1 5
r1.5 6
b0000000000000000000000000000010100000000000000000000000011111010 7
b00000000000000000000000000000101 8
b00000000000000000000000000001010 9
b011 :
#55
0!
0"
#60
1!
b010 9
b00000000000000000000000000001100 8
b00000000000000000000000000000110 7
b0000000000000000000000000000011000000000000000000000000011111001 6
r1.8 5
r1.2 4
r0.6 3
1"
b010 :
b00000000000000000000000000001100 9
b00000000000000000000000000000110 8
b0000000000000000000000000000011000000000000000000000000011111001 7
r1.8 6
r1.2 5
r0.6 4
b00 3
b00 2
b00 1
b00 0
b00 /
b0000 )
b0000 (
b0000 '
b00 '
b00 &
b00 %
b0000 $
b00 #
b00000000000000000000000000000110 "
b011011 :
b0000 %
b00 $
b00000000000000000000000000000110 #
b011011 ;

View File

@ -1,5 +1,5 @@
$date
Wed Feb 23 00:01:09 2022
Tue Oct 24 11:09:24 2023
$end
$version
@ -9,279 +9,279 @@ $timescale
1ps
$end
$scope module top $end
$scope module $unit $end
$var bit 1 ! global_bit $end
$upscope $end
$scope module t $end
$var wire 1 ! clk $end
$var integer 32 " cyc [31:0] $end
$var logic 2 # v_strp [1:0] $end
$var logic 4 $ v_strp_strp [3:0] $end
$var logic 2 % v_unip_strp [1:0] $end
$var logic 2 & v_arrp [2:1] $end
$var logic 4 ' v_arrp_arrp [3:0] $end
$var logic 4 ( v_arrp_strp [3:0] $end
$var logic 1 ) v_arru[1] $end
$var logic 1 * v_arru[2] $end
$var logic 1 + v_arru_arru[3][1] $end
$var logic 1 , v_arru_arru[3][2] $end
$var logic 1 - v_arru_arru[4][1] $end
$var logic 1 . v_arru_arru[4][2] $end
$var logic 2 / v_arru_arrp[3] [2:1] $end
$var logic 2 0 v_arru_arrp[4] [2:1] $end
$var logic 2 1 v_arru_strp[3] [1:0] $end
$var logic 2 2 v_arru_strp[4] [1:0] $end
$var real 64 3 v_real $end
$var real 64 4 v_arr_real[0] $end
$var real 64 5 v_arr_real[1] $end
$var logic 64 6 v_str32x2 [63:0] $end
$var wire 1 " clk $end
$var integer 32 # cyc [31:0] $end
$var bit 2 $ v_strp [1:0] $end
$var bit 4 % v_strp_strp [3:0] $end
$var bit 2 & v_unip_strp [1:0] $end
$var bit 2 ' v_arrp [2:1] $end
$var bit 4 ( v_arrp_arrp [3:0] $end
$var bit 4 ) v_arrp_strp [3:0] $end
$var bit 1 * v_arru[1] $end
$var bit 1 + v_arru[2] $end
$var bit 1 , v_arru_arru[3][1] $end
$var bit 1 - v_arru_arru[3][2] $end
$var bit 1 . v_arru_arru[4][1] $end
$var bit 1 / v_arru_arru[4][2] $end
$var bit 2 0 v_arru_arrp[3] [2:1] $end
$var bit 2 1 v_arru_arrp[4] [2:1] $end
$var bit 2 2 v_arru_strp[3] [1:0] $end
$var bit 2 3 v_arru_strp[4] [1:0] $end
$var real 64 4 v_real $end
$var real 64 5 v_arr_real[0] $end
$var real 64 6 v_arr_real[1] $end
$var logic 64 7 v_str32x2 [63:0] $end
$attrbegin misc 07 t.enumed_t 4 ZERO ONE TWO THREE 00000000000000000000000000000000 00000000000000000000000000000001 00000000000000000000000000000010 00000000000000000000000000000011 1 $end
$attrbegin misc 07 "" 1 $end
$var logic 32 7 v_enumed [31:0] $end
$var int 32 8 v_enumed [31:0] $end
$attrbegin misc 07 "" 1 $end
$var logic 32 8 v_enumed2 [31:0] $end
$var int 32 9 v_enumed2 [31:0] $end
$attrbegin misc 07 t.enumb_t 4 BZERO BONE BTWO BTHREE 000 001 010 011 2 $end
$attrbegin misc 07 "" 2 $end
$var logic 3 9 v_enumb [2:0] $end
$var logic 6 : v_enumb2_str [5:0] $end
$var logic 8 ; unpacked_array[-2] [7:0] $end
$var logic 8 < unpacked_array[-1] [7:0] $end
$var logic 8 = unpacked_array[0] [7:0] $end
$var bit 1 > LONGSTART_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_LONGEND $end
$var logic 3 : v_enumb [2:0] $end
$var logic 6 ; v_enumb2_str [5:0] $end
$var logic 8 < unpacked_array[-2] [7:0] $end
$var logic 8 = unpacked_array[-1] [7:0] $end
$var logic 8 > unpacked_array[0] [7:0] $end
$var bit 1 ? LONGSTART_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_LONGEND $end
$scope module a_module_instantiation_with_a_very_long_name_that_once_its_signals_get_concatenated_and_inlined_will_almost_certainly_result_in_them_getting_hashed $end
$var parameter 32 ? PARAM [31:0] $end
$upscope $end
$scope module p2 $end
$var parameter 32 @ PARAM [31:0] $end
$upscope $end
$scope module p3 $end
$scope module p2 $end
$var parameter 32 A PARAM [31:0] $end
$upscope $end
$scope module p3 $end
$var parameter 32 B PARAM [31:0] $end
$upscope $end
$scope module unnamedblk1 $end
$var integer 32 B b [31:0] $end
$var integer 32 C b [31:0] $end
$scope module unnamedblk2 $end
$var integer 32 C a [31:0] $end
$var integer 32 D a [31:0] $end
$upscope $end
$upscope $end
$upscope $end
$scope module $unit $end
$var bit 1 D global_bit $end
$upscope $end
$upscope $end
$enddefinitions $end
#0
$dumpvars
1D
b00000000000000000000000000000000 D
b00000000000000000000000000000000 C
b00000000000000000000000000000000 B
b00000000000000000000000000000011 A
b00000000000000000000000000000010 @
b00000000000000000000000000000100 ?
0>
b00000000000000000000000000000011 B
b00000000000000000000000000000010 A
b00000000000000000000000000000100 @
0?
b00000000 >
b00000000 =
b00000000 <
b00000000 ;
b000000 :
b000 9
b000000 ;
b000 :
b00000000000000000000000000000000 9
b00000000000000000000000000000000 8
b00000000000000000000000000000000 7
b0000000000000000000000000000000000000000000000000000000011111111 6
b0000000000000000000000000000000000000000000000000000000011111111 7
r0 6
r0 5
r0 4
r0 3
b00 3
b00 2
b00 1
b00 0
b00 /
0/
0.
0-
0,
0+
0*
0)
b0000 )
b0000 (
b0000 '
b00 '
b00 &
b00 %
b0000 $
b00 #
b00000000000000000000000000000000 "
0!
b0000 %
b00 $
b00000000000000000000000000000000 #
0"
1!
$end
#10
1!
b00000000000000000000000000000001 "
b11 #
b1111 $
b11 %
1"
b00000000000000000000000000000001 #
b11 $
b1111 %
b11 &
b1111 '
b11 '
b1111 (
b11 /
b1111 )
b11 0
b11 1
b11 2
r0.1 3
r0.2 4
r0.3 5
b0000000000000000000000000000000100000000000000000000000011111110 6
b00000000000000000000000000000001 7
b00000000000000000000000000000010 8
b111 9
b00000000000000000000000000000101 B
b11 3
r0.1 4
r0.2 5
r0.3 6
b0000000000000000000000000000000100000000000000000000000011111110 7
b00000000000000000000000000000001 8
b00000000000000000000000000000010 9
b111 :
b00000000000000000000000000000101 C
b00000000000000000000000000000101 D
#11
#12
#13
#14
#15
0!
0"
#16
#17
#18
#19
#20
1!
b110 9
b00000000000000000000000000000100 8
b00000000000000000000000000000010 7
b0000000000000000000000000000001000000000000000000000000011111101 6
r0.6 5
r0.4 4
r0.2 3
1"
b110 :
b00000000000000000000000000000100 9
b00000000000000000000000000000010 8
b0000000000000000000000000000001000000000000000000000000011111101 7
r0.6 6
r0.4 5
r0.2 4
b00 3
b00 2
b00 1
b00 0
b00 /
b0000 )
b0000 (
b0000 '
b00 '
b00 &
b00 %
b0000 $
b00 #
b00000000000000000000000000000010 "
b111111 :
b0000 %
b00 $
b00000000000000000000000000000010 #
b111111 ;
#21
#22
#23
#24
#25
0!
0"
#26
#27
#28
#29
#30
1!
b110110 :
b00000000000000000000000000000011 "
b11 #
b1111 $
b11 %
1"
b110110 ;
b00000000000000000000000000000011 #
b11 $
b1111 %
b11 &
b1111 '
b11 '
b1111 (
b11 /
b1111 )
b11 0
b11 1
b11 2
r0.3 3
r0.6000000000000001 4
r0.8999999999999999 5
b0000000000000000000000000000001100000000000000000000000011111100 6
b00000000000000000000000000000011 7
b00000000000000000000000000000110 8
b101 9
b11 3
r0.3 4
r0.6000000000000001 5
r0.8999999999999999 6
b0000000000000000000000000000001100000000000000000000000011111100 7
b00000000000000000000000000000011 8
b00000000000000000000000000000110 9
b101 :
#31
#32
#33
#34
#35
0!
0"
#36
#37
#38
#39
#40
1!
b100 9
b00000000000000000000000000001000 8
b00000000000000000000000000000100 7
b0000000000000000000000000000010000000000000000000000000011111011 6
r1.2 5
r0.8 4
r0.4 3
1"
b100 :
b00000000000000000000000000001000 9
b00000000000000000000000000000100 8
b0000000000000000000000000000010000000000000000000000000011111011 7
r1.2 6
r0.8 5
r0.4 4
b00 3
b00 2
b00 1
b00 0
b00 /
b0000 )
b0000 (
b0000 '
b00 '
b00 &
b00 %
b0000 $
b00 #
b00000000000000000000000000000100 "
b101101 :
b0000 %
b00 $
b00000000000000000000000000000100 #
b101101 ;
#41
#42
#43
#44
#45
0!
0"
#46
#47
#48
#49
#50
1!
b100100 :
b00000000000000000000000000000101 "
b11 #
b1111 $
b11 %
1"
b100100 ;
b00000000000000000000000000000101 #
b11 $
b1111 %
b11 &
b1111 '
b11 '
b1111 (
b11 /
b1111 )
b11 0
b11 1
b11 2
r0.5 3
r1 4
r1.5 5
b0000000000000000000000000000010100000000000000000000000011111010 6
b00000000000000000000000000000101 7
b00000000000000000000000000001010 8
b011 9
b11 3
r0.5 4
r1 5
r1.5 6
b0000000000000000000000000000010100000000000000000000000011111010 7
b00000000000000000000000000000101 8
b00000000000000000000000000001010 9
b011 :
#51
#52
#53
#54
#55
0!
0"
#56
#57
#58
#59
#60
1!
b010 9
b00000000000000000000000000001100 8
b00000000000000000000000000000110 7
b0000000000000000000000000000011000000000000000000000000011111001 6
r1.8 5
r1.2 4
r0.6 3
1"
b010 :
b00000000000000000000000000001100 9
b00000000000000000000000000000110 8
b0000000000000000000000000000011000000000000000000000000011111001 7
r1.8 6
r1.2 5
r0.6 4
b00 3
b00 2
b00 1
b00 0
b00 /
b0000 )
b0000 (
b0000 '
b00 '
b00 &
b00 %
b0000 $
b00 #
b00000000000000000000000000000110 "
b011011 :
b0000 %
b00 $
b00000000000000000000000000000110 #
b011011 ;
#61
#62
#63

View File

@ -1,43 +1,42 @@
$version Generated by VerilatedVcd $end
$date Sun May 8 19:00:32 2022 $end
$timescale 1ps $end
$scope module top $end
$var wire 1 $ clk $end
$scope module $unit $end
$var wire 1 # global_bit $end
$var wire 1 # global_bit $end
$upscope $end
$var wire 1 = clk $end
$scope module t $end
$var wire 1 G LONGSTART_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_LONGEND $end
$var wire 1 $ clk $end
$var wire 32 % cyc [31:0] $end
$var wire 8 E unpacked_array[-1] [7:0] $end
$var wire 8 D unpacked_array[-2] [7:0] $end
$var wire 8 F unpacked_array[0] [7:0] $end
$var real 64 2 v_arr_real[0] $end
$var real 64 4 v_arr_real[1] $end
$var wire 2 ) v_arrp [2:1] $end
$var wire 4 * v_arrp_arrp [3:0] $end
$var wire 4 + v_arrp_strp [3:0] $end
$var wire 1 > v_arru[1] $end
$var wire 1 ? v_arru[2] $end
$var wire 2 , v_arru_arrp[3] [2:1] $end
$var wire 2 - v_arru_arrp[4] [2:1] $end
$var wire 1 @ v_arru_arru[3][1] $end
$var wire 1 A v_arru_arru[3][2] $end
$var wire 1 B v_arru_arru[4][1] $end
$var wire 1 C v_arru_arru[4][2] $end
$var wire 2 . v_arru_strp[3] [1:0] $end
$var wire 2 / v_arru_strp[4] [1:0] $end
$var wire 3 : v_enumb [2:0] $end
$var wire 6 ; v_enumb2_str [5:0] $end
$var wire 32 8 v_enumed [31:0] $end
$var wire 32 9 v_enumed2 [31:0] $end
$var real 64 0 v_real $end
$var wire 64 6 v_str32x2 [63:0] $end
$var wire 2 & v_strp [1:0] $end
$var wire 4 ' v_strp_strp [3:0] $end
$var wire 2 ( v_unip_strp [1:0] $end
$var wire 1 = clk $end
$var wire 32 $ cyc [31:0] $end
$var wire 2 % v_strp [1:0] $end
$var wire 4 & v_strp_strp [3:0] $end
$var wire 2 ' v_unip_strp [1:0] $end
$var wire 2 ( v_arrp [2:1] $end
$var wire 4 ) v_arrp_arrp [3:0] $end
$var wire 4 * v_arrp_strp [3:0] $end
$var wire 1 > v_arru[1] $end
$var wire 1 ? v_arru[2] $end
$var wire 1 @ v_arru_arru[3][1] $end
$var wire 1 A v_arru_arru[3][2] $end
$var wire 1 B v_arru_arru[4][1] $end
$var wire 1 C v_arru_arru[4][2] $end
$var wire 2 + v_arru_arrp[3] [2:1] $end
$var wire 2 , v_arru_arrp[4] [2:1] $end
$var wire 2 - v_arru_strp[3] [1:0] $end
$var wire 2 . v_arru_strp[4] [1:0] $end
$var real 64 / v_real $end
$var real 64 1 v_arr_real[0] $end
$var real 64 3 v_arr_real[1] $end
$var wire 64 5 v_str32x2 [63:0] $end
$var wire 32 7 v_enumed [31:0] $end
$var wire 32 8 v_enumed2 [31:0] $end
$var wire 3 9 v_enumb [2:0] $end
$var wire 6 : v_enumb2_str [5:0] $end
$var wire 8 D unpacked_array[-2] [7:0] $end
$var wire 8 E unpacked_array[-1] [7:0] $end
$var wire 8 F unpacked_array[0] [7:0] $end
$var wire 1 G LONGSTART_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_LONGEND $end
$scope module a_module_instantiation_with_a_very_long_name_that_once_its_signals_get_concatenated_and_inlined_will_almost_certainly_result_in_them_getting_hashed $end
$var wire 32 H PARAM [31:0] $end
$upscope $end
@ -48,9 +47,9 @@ $timescale 1ps $end
$var wire 32 J PARAM [31:0] $end
$upscope $end
$scope module unnamedblk1 $end
$var wire 32 < b [31:0] $end
$var wire 32 ; b [31:0] $end
$scope module unnamedblk2 $end
$var wire 32 = a [31:0] $end
$var wire 32 < a [31:0] $end
$upscope $end
$upscope $end
$upscope $end
@ -60,28 +59,28 @@ $enddefinitions $end
#0
1#
0$
b00000000000000000000000000000000 %
b00 &
b0000 '
b00000000000000000000000000000000 $
b00 %
b0000 &
b00 '
b00 (
b00 )
b0000 )
b0000 *
b0000 +
b00 +
b00 ,
b00 -
b00 .
b00 /
r0 0
r0 2
r0 4
b0000000000000000000000000000000000000000000000000000000011111111 6
r0 /
r0 1
r0 3
b0000000000000000000000000000000000000000000000000000000011111111 5
b00000000000000000000000000000000 7
b00000000000000000000000000000000 8
b00000000000000000000000000000000 9
b000 :
b000000 ;
b000 9
b000000 :
b00000000000000000000000000000000 ;
b00000000000000000000000000000000 <
b00000000000000000000000000000000 =
0=
0>
0?
0@
@ -96,139 +95,139 @@ b00000000000000000000000000000100 H
b00000000000000000000000000000010 I
b00000000000000000000000000000011 J
#10
1$
b00000000000000000000000000000001 %
b11 &
b1111 '
b00000000000000000000000000000001 $
b11 %
b1111 &
b11 '
b11 (
b11 )
b1111 )
b1111 *
b1111 +
b11 +
b11 ,
b11 -
b11 .
b11 /
r0.1 0
r0.2 2
r0.3 4
b0000000000000000000000000000000100000000000000000000000011111110 6
b00000000000000000000000000000001 8
b00000000000000000000000000000010 9
b111 :
b00000000000000000000000000000101 <
b00000000000000000000000000000101 =
#15
0$
#20
1$
b00000000000000000000000000000010 %
b00 &
b0000 '
b00 (
b00 )
b0000 *
b0000 +
b00 ,
b00 -
b00 .
b00 /
r0.2 0
r0.4 2
r0.6 4
b0000000000000000000000000000001000000000000000000000000011111101 6
r0.1 /
r0.2 1
r0.3 3
b0000000000000000000000000000000100000000000000000000000011111110 5
b00000000000000000000000000000001 7
b00000000000000000000000000000010 8
b00000000000000000000000000000100 9
b110 :
b111111 ;
#25
0$
#30
1$
b00000000000000000000000000000011 %
b11 &
b1111 '
b11 (
b11 )
b1111 *
b1111 +
b11 ,
b11 -
b11 .
b11 /
r0.3 0
r0.6000000000000001 2
r0.8999999999999999 4
b0000000000000000000000000000001100000000000000000000000011111100 6
b00000000000000000000000000000011 8
b00000000000000000000000000000110 9
b101 :
b110110 ;
#35
0$
#40
1$
b00000000000000000000000000000100 %
b00 &
b0000 '
b111 9
b00000000000000000000000000000101 ;
b00000000000000000000000000000101 <
1=
#15
0=
#20
b00000000000000000000000000000010 $
b00 %
b0000 &
b00 '
b00 (
b00 )
b0000 )
b0000 *
b0000 +
b00 +
b00 ,
b00 -
b00 .
b00 /
r0.4 0
r0.8 2
r1.2 4
b0000000000000000000000000000010000000000000000000000000011111011 6
r0.2 /
r0.4 1
r0.6 3
b0000000000000000000000000000001000000000000000000000000011111101 5
b00000000000000000000000000000010 7
b00000000000000000000000000000100 8
b00000000000000000000000000001000 9
b100 :
b101101 ;
#45
0$
#50
1$
b00000000000000000000000000000101 %
b11 &
b1111 '
b110 9
b111111 :
1=
#25
0=
#30
b00000000000000000000000000000011 $
b11 %
b1111 &
b11 '
b11 (
b11 )
b1111 )
b1111 *
b1111 +
b11 +
b11 ,
b11 -
b11 .
b11 /
r0.5 0
r1 2
r1.5 4
b0000000000000000000000000000010100000000000000000000000011111010 6
b00000000000000000000000000000101 8
b00000000000000000000000000001010 9
b011 :
b100100 ;
#55
0$
#60
1$
b00000000000000000000000000000110 %
b00 &
b0000 '
r0.3 /
r0.6000000000000001 1
r0.8999999999999999 3
b0000000000000000000000000000001100000000000000000000000011111100 5
b00000000000000000000000000000011 7
b00000000000000000000000000000110 8
b101 9
b110110 :
1=
#35
0=
#40
b00000000000000000000000000000100 $
b00 %
b0000 &
b00 '
b00 (
b00 )
b0000 )
b0000 *
b0000 +
b00 +
b00 ,
b00 -
b00 .
b00 /
r0.6 0
r1.2 2
r1.8 4
b0000000000000000000000000000011000000000000000000000000011111001 6
b00000000000000000000000000000110 8
b00000000000000000000000000001100 9
b010 :
b011011 ;
r0.4 /
r0.8 1
r1.2 3
b0000000000000000000000000000010000000000000000000000000011111011 5
b00000000000000000000000000000100 7
b00000000000000000000000000001000 8
b100 9
b101101 :
1=
#45
0=
#50
b00000000000000000000000000000101 $
b11 %
b1111 &
b11 '
b11 (
b1111 )
b1111 *
b11 +
b11 ,
b11 -
b11 .
r0.5 /
r1 1
r1.5 3
b0000000000000000000000000000010100000000000000000000000011111010 5
b00000000000000000000000000000101 7
b00000000000000000000000000001010 8
b011 9
b100100 :
1=
#55
0=
#60
b00000000000000000000000000000110 $
b00 %
b0000 &
b00 '
b00 (
b0000 )
b0000 *
b00 +
b00 ,
b00 -
b00 .
r0.6 /
r1.2 1
r1.8 3
b0000000000000000000000000000011000000000000000000000000011111001 5
b00000000000000000000000000000110 7
b00000000000000000000000000001100 8
b010 9
b011011 :
1=

View File

@ -1,5 +1,5 @@
$date
Wed Feb 23 00:01:11 2022
Tue Oct 24 11:02:57 2023
$end
$version
@ -9,237 +9,237 @@ $timescale
1ps
$end
$scope module top $end
$var wire 1 ! clk $end
$scope module $unit $end
$var bit 1 ! global_bit $end
$upscope $end
$var wire 1 " clk $end
$scope module t $end
$var wire 1 ! clk $end
$var integer 32 " cyc [31:0] $end
$var logic 2 # v_strp [1:0] $end
$var logic 4 $ v_strp_strp [3:0] $end
$var logic 2 % v_unip_strp [1:0] $end
$var logic 2 & v_arrp [2:1] $end
$var logic 4 ' v_arrp_arrp [3:0] $end
$var logic 4 ( v_arrp_strp [3:0] $end
$var logic 1 ) v_arru[1] $end
$var logic 1 * v_arru[2] $end
$var logic 1 + v_arru_arru[3][1] $end
$var logic 1 , v_arru_arru[3][2] $end
$var logic 1 - v_arru_arru[4][1] $end
$var logic 1 . v_arru_arru[4][2] $end
$var logic 2 / v_arru_arrp[3] [2:1] $end
$var logic 2 0 v_arru_arrp[4] [2:1] $end
$var logic 2 1 v_arru_strp[3] [1:0] $end
$var logic 2 2 v_arru_strp[4] [1:0] $end
$var real 64 3 v_real $end
$var real 64 4 v_arr_real[0] $end
$var real 64 5 v_arr_real[1] $end
$var logic 64 6 v_str32x2 [63:0] $end
$var wire 1 " clk $end
$var integer 32 # cyc [31:0] $end
$var bit 2 $ v_strp [1:0] $end
$var bit 4 % v_strp_strp [3:0] $end
$var bit 2 & v_unip_strp [1:0] $end
$var bit 2 ' v_arrp [2:1] $end
$var bit 4 ( v_arrp_arrp [3:0] $end
$var bit 4 ) v_arrp_strp [3:0] $end
$var bit 1 * v_arru[1] $end
$var bit 1 + v_arru[2] $end
$var bit 1 , v_arru_arru[3][1] $end
$var bit 1 - v_arru_arru[3][2] $end
$var bit 1 . v_arru_arru[4][1] $end
$var bit 1 / v_arru_arru[4][2] $end
$var bit 2 0 v_arru_arrp[3] [2:1] $end
$var bit 2 1 v_arru_arrp[4] [2:1] $end
$var bit 2 2 v_arru_strp[3] [1:0] $end
$var bit 2 3 v_arru_strp[4] [1:0] $end
$var real 64 4 v_real $end
$var real 64 5 v_arr_real[0] $end
$var real 64 6 v_arr_real[1] $end
$var logic 64 7 v_str32x2 [63:0] $end
$attrbegin misc 07 t.enumed_t 4 ZERO ONE TWO THREE 00000000000000000000000000000000 00000000000000000000000000000001 00000000000000000000000000000010 00000000000000000000000000000011 1 $end
$attrbegin misc 07 "" 1 $end
$var logic 32 7 v_enumed [31:0] $end
$var int 32 8 v_enumed [31:0] $end
$attrbegin misc 07 "" 1 $end
$var logic 32 8 v_enumed2 [31:0] $end
$var int 32 9 v_enumed2 [31:0] $end
$attrbegin misc 07 t.enumb_t 4 BZERO BONE BTWO BTHREE 000 001 010 011 2 $end
$attrbegin misc 07 "" 2 $end
$var logic 3 9 v_enumb [2:0] $end
$var logic 6 : v_enumb2_str [5:0] $end
$var logic 8 ; unpacked_array[-2] [7:0] $end
$var logic 8 < unpacked_array[-1] [7:0] $end
$var logic 8 = unpacked_array[0] [7:0] $end
$var bit 1 > LONGSTART_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_LONGEND $end
$var logic 3 : v_enumb [2:0] $end
$var logic 6 ; v_enumb2_str [5:0] $end
$var logic 8 < unpacked_array[-2] [7:0] $end
$var logic 8 = unpacked_array[-1] [7:0] $end
$var logic 8 > unpacked_array[0] [7:0] $end
$var bit 1 ? LONGSTART_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_LONGEND $end
$scope module a_module_instantiation_with_a_very_long_name_that_once_its_signals_get_concatenated_and_inlined_will_almost_certainly_result_in_them_getting_hashed $end
$var parameter 32 ? PARAM [31:0] $end
$upscope $end
$scope module p2 $end
$var parameter 32 @ PARAM [31:0] $end
$upscope $end
$scope module p3 $end
$scope module p2 $end
$var parameter 32 A PARAM [31:0] $end
$upscope $end
$scope module p3 $end
$var parameter 32 B PARAM [31:0] $end
$upscope $end
$scope module unnamedblk1 $end
$var integer 32 B b [31:0] $end
$var integer 32 C b [31:0] $end
$scope module unnamedblk2 $end
$var integer 32 C a [31:0] $end
$var integer 32 D a [31:0] $end
$upscope $end
$upscope $end
$upscope $end
$scope module $unit $end
$var bit 1 D global_bit $end
$upscope $end
$upscope $end
$enddefinitions $end
#0
$dumpvars
1D
b00000000000000000000000000000000 D
b00000000000000000000000000000000 C
b00000000000000000000000000000000 B
b00000000000000000000000000000011 A
b00000000000000000000000000000010 @
b00000000000000000000000000000100 ?
0>
b00000000000000000000000000000011 B
b00000000000000000000000000000010 A
b00000000000000000000000000000100 @
0?
b00000000 >
b00000000 =
b00000000 <
b00000000 ;
b000000 :
b000 9
b000000 ;
b000 :
b00000000000000000000000000000000 9
b00000000000000000000000000000000 8
b00000000000000000000000000000000 7
b0000000000000000000000000000000000000000000000000000000011111111 6
b0000000000000000000000000000000000000000000000000000000011111111 7
r0 6
r0 5
r0 4
r0 3
b00 3
b00 2
b00 1
b00 0
b00 /
0/
0.
0-
0,
0+
0*
0)
b0000 )
b0000 (
b0000 '
b00 '
b00 &
b00 %
b0000 $
b00 #
b00000000000000000000000000000000 "
0!
b0000 %
b00 $
b00000000000000000000000000000000 #
0"
1!
$end
#10
1!
b00000000000000000000000000000001 "
b11 #
b1111 $
b11 %
1"
b00000000000000000000000000000001 #
b11 $
b1111 %
b11 &
b1111 '
b11 '
b1111 (
b11 /
b1111 )
b11 0
b11 1
b11 2
r0.1 3
r0.2 4
r0.3 5
b0000000000000000000000000000000100000000000000000000000011111110 6
b00000000000000000000000000000001 7
b00000000000000000000000000000010 8
b111 9
b00000000000000000000000000000101 B
b11 3
r0.1 4
r0.2 5
r0.3 6
b0000000000000000000000000000000100000000000000000000000011111110 7
b00000000000000000000000000000001 8
b00000000000000000000000000000010 9
b111 :
b00000000000000000000000000000101 C
b00000000000000000000000000000101 D
#15
0!
0"
#20
1!
b110 9
b00000000000000000000000000000100 8
b00000000000000000000000000000010 7
b0000000000000000000000000000001000000000000000000000000011111101 6
r0.6 5
r0.4 4
r0.2 3
1"
b110 :
b00000000000000000000000000000100 9
b00000000000000000000000000000010 8
b0000000000000000000000000000001000000000000000000000000011111101 7
r0.6 6
r0.4 5
r0.2 4
b00 3
b00 2
b00 1
b00 0
b00 /
b0000 )
b0000 (
b0000 '
b00 '
b00 &
b00 %
b0000 $
b00 #
b00000000000000000000000000000010 "
b111111 :
b0000 %
b00 $
b00000000000000000000000000000010 #
b111111 ;
#25
0!
0"
#30
1!
b110110 :
b00000000000000000000000000000011 "
b11 #
b1111 $
b11 %
1"
b110110 ;
b00000000000000000000000000000011 #
b11 $
b1111 %
b11 &
b1111 '
b11 '
b1111 (
b11 /
b1111 )
b11 0
b11 1
b11 2
r0.3 3
r0.6000000000000001 4
r0.8999999999999999 5
b0000000000000000000000000000001100000000000000000000000011111100 6
b00000000000000000000000000000011 7
b00000000000000000000000000000110 8
b101 9
b11 3
r0.3 4
r0.6000000000000001 5
r0.8999999999999999 6
b0000000000000000000000000000001100000000000000000000000011111100 7
b00000000000000000000000000000011 8
b00000000000000000000000000000110 9
b101 :
#35
0!
0"
#40
1!
b100 9
b00000000000000000000000000001000 8
b00000000000000000000000000000100 7
b0000000000000000000000000000010000000000000000000000000011111011 6
r1.2 5
r0.8 4
r0.4 3
1"
b100 :
b00000000000000000000000000001000 9
b00000000000000000000000000000100 8
b0000000000000000000000000000010000000000000000000000000011111011 7
r1.2 6
r0.8 5
r0.4 4
b00 3
b00 2
b00 1
b00 0
b00 /
b0000 )
b0000 (
b0000 '
b00 '
b00 &
b00 %
b0000 $
b00 #
b00000000000000000000000000000100 "
b101101 :
b0000 %
b00 $
b00000000000000000000000000000100 #
b101101 ;
#45
0!
0"
#50
1!
b100100 :
b00000000000000000000000000000101 "
b11 #
b1111 $
b11 %
1"
b100100 ;
b00000000000000000000000000000101 #
b11 $
b1111 %
b11 &
b1111 '
b11 '
b1111 (
b11 /
b1111 )
b11 0
b11 1
b11 2
r0.5 3
r1 4
r1.5 5
b0000000000000000000000000000010100000000000000000000000011111010 6
b00000000000000000000000000000101 7
b00000000000000000000000000001010 8
b011 9
b11 3
r0.5 4
r1 5
r1.5 6
b0000000000000000000000000000010100000000000000000000000011111010 7
b00000000000000000000000000000101 8
b00000000000000000000000000001010 9
b011 :
#55
0!
0"
#60
1!
b010 9
b00000000000000000000000000001100 8
b00000000000000000000000000000110 7
b0000000000000000000000000000011000000000000000000000000011111001 6
r1.8 5
r1.2 4
r0.6 3
1"
b010 :
b00000000000000000000000000001100 9
b00000000000000000000000000000110 8
b0000000000000000000000000000011000000000000000000000000011111001 7
r1.8 6
r1.2 5
r0.6 4
b00 3
b00 2
b00 1
b00 0
b00 /
b0000 )
b0000 (
b0000 '
b00 '
b00 &
b00 %
b0000 $
b00 #
b00000000000000000000000000000110 "
b011011 :
b0000 %
b00 $
b00000000000000000000000000000110 #
b011011 ;

View File

@ -1,5 +1,5 @@
$date
Wed Feb 23 00:01:18 2022
Tue Oct 24 11:09:58 2023
$end
$version
@ -9,279 +9,279 @@ $timescale
1ps
$end
$scope module top $end
$scope module $unit $end
$var bit 1 ! global_bit $end
$upscope $end
$scope module t $end
$var wire 1 ! clk $end
$var integer 32 " cyc [31:0] $end
$var logic 2 # v_strp [1:0] $end
$var logic 4 $ v_strp_strp [3:0] $end
$var logic 2 % v_unip_strp [1:0] $end
$var logic 2 & v_arrp [2:1] $end
$var logic 4 ' v_arrp_arrp [3:0] $end
$var logic 4 ( v_arrp_strp [3:0] $end
$var logic 1 ) v_arru[1] $end
$var logic 1 * v_arru[2] $end
$var logic 1 + v_arru_arru[3][1] $end
$var logic 1 , v_arru_arru[3][2] $end
$var logic 1 - v_arru_arru[4][1] $end
$var logic 1 . v_arru_arru[4][2] $end
$var logic 2 / v_arru_arrp[3] [2:1] $end
$var logic 2 0 v_arru_arrp[4] [2:1] $end
$var logic 2 1 v_arru_strp[3] [1:0] $end
$var logic 2 2 v_arru_strp[4] [1:0] $end
$var real 64 3 v_real $end
$var real 64 4 v_arr_real[0] $end
$var real 64 5 v_arr_real[1] $end
$var logic 64 6 v_str32x2 [63:0] $end
$var wire 1 " clk $end
$var integer 32 # cyc [31:0] $end
$var bit 2 $ v_strp [1:0] $end
$var bit 4 % v_strp_strp [3:0] $end
$var bit 2 & v_unip_strp [1:0] $end
$var bit 2 ' v_arrp [2:1] $end
$var bit 4 ( v_arrp_arrp [3:0] $end
$var bit 4 ) v_arrp_strp [3:0] $end
$var bit 1 * v_arru[1] $end
$var bit 1 + v_arru[2] $end
$var bit 1 , v_arru_arru[3][1] $end
$var bit 1 - v_arru_arru[3][2] $end
$var bit 1 . v_arru_arru[4][1] $end
$var bit 1 / v_arru_arru[4][2] $end
$var bit 2 0 v_arru_arrp[3] [2:1] $end
$var bit 2 1 v_arru_arrp[4] [2:1] $end
$var bit 2 2 v_arru_strp[3] [1:0] $end
$var bit 2 3 v_arru_strp[4] [1:0] $end
$var real 64 4 v_real $end
$var real 64 5 v_arr_real[0] $end
$var real 64 6 v_arr_real[1] $end
$var logic 64 7 v_str32x2 [63:0] $end
$attrbegin misc 07 t.enumed_t 4 ZERO ONE TWO THREE 00000000000000000000000000000000 00000000000000000000000000000001 00000000000000000000000000000010 00000000000000000000000000000011 1 $end
$attrbegin misc 07 "" 1 $end
$var logic 32 7 v_enumed [31:0] $end
$var int 32 8 v_enumed [31:0] $end
$attrbegin misc 07 "" 1 $end
$var logic 32 8 v_enumed2 [31:0] $end
$var int 32 9 v_enumed2 [31:0] $end
$attrbegin misc 07 t.enumb_t 4 BZERO BONE BTWO BTHREE 000 001 010 011 2 $end
$attrbegin misc 07 "" 2 $end
$var logic 3 9 v_enumb [2:0] $end
$var logic 6 : v_enumb2_str [5:0] $end
$var logic 8 ; unpacked_array[-2] [7:0] $end
$var logic 8 < unpacked_array[-1] [7:0] $end
$var logic 8 = unpacked_array[0] [7:0] $end
$var bit 1 > LONGSTART_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_LONGEND $end
$var logic 3 : v_enumb [2:0] $end
$var logic 6 ; v_enumb2_str [5:0] $end
$var logic 8 < unpacked_array[-2] [7:0] $end
$var logic 8 = unpacked_array[-1] [7:0] $end
$var logic 8 > unpacked_array[0] [7:0] $end
$var bit 1 ? LONGSTART_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_LONGEND $end
$scope module a_module_instantiation_with_a_very_long_name_that_once_its_signals_get_concatenated_and_inlined_will_almost_certainly_result_in_them_getting_hashed $end
$var parameter 32 ? PARAM [31:0] $end
$upscope $end
$scope module p2 $end
$var parameter 32 @ PARAM [31:0] $end
$upscope $end
$scope module p3 $end
$scope module p2 $end
$var parameter 32 A PARAM [31:0] $end
$upscope $end
$scope module p3 $end
$var parameter 32 B PARAM [31:0] $end
$upscope $end
$scope module unnamedblk1 $end
$var integer 32 B b [31:0] $end
$var integer 32 C b [31:0] $end
$scope module unnamedblk2 $end
$var integer 32 C a [31:0] $end
$var integer 32 D a [31:0] $end
$upscope $end
$upscope $end
$upscope $end
$scope module $unit $end
$var bit 1 D global_bit $end
$upscope $end
$upscope $end
$enddefinitions $end
#0
$dumpvars
1D
b00000000000000000000000000000000 D
b00000000000000000000000000000000 C
b00000000000000000000000000000000 B
b00000000000000000000000000000011 A
b00000000000000000000000000000010 @
b00000000000000000000000000000100 ?
0>
b00000000000000000000000000000011 B
b00000000000000000000000000000010 A
b00000000000000000000000000000100 @
0?
b00000000 >
b00000000 =
b00000000 <
b00000000 ;
b000000 :
b000 9
b000000 ;
b000 :
b00000000000000000000000000000000 9
b00000000000000000000000000000000 8
b00000000000000000000000000000000 7
b0000000000000000000000000000000000000000000000000000000011111111 6
b0000000000000000000000000000000000000000000000000000000011111111 7
r0 6
r0 5
r0 4
r0 3
b00 3
b00 2
b00 1
b00 0
b00 /
0/
0.
0-
0,
0+
0*
0)
b0000 )
b0000 (
b0000 '
b00 '
b00 &
b00 %
b0000 $
b00 #
b00000000000000000000000000000000 "
0!
b0000 %
b00 $
b00000000000000000000000000000000 #
0"
1!
$end
#10
1!
b00000000000000000000000000000001 "
b11 #
b1111 $
b11 %
1"
b00000000000000000000000000000001 #
b11 $
b1111 %
b11 &
b1111 '
b11 '
b1111 (
b11 /
b1111 )
b11 0
b11 1
b11 2
r0.1 3
r0.2 4
r0.3 5
b0000000000000000000000000000000100000000000000000000000011111110 6
b00000000000000000000000000000001 7
b00000000000000000000000000000010 8
b111 9
b00000000000000000000000000000101 B
b11 3
r0.1 4
r0.2 5
r0.3 6
b0000000000000000000000000000000100000000000000000000000011111110 7
b00000000000000000000000000000001 8
b00000000000000000000000000000010 9
b111 :
b00000000000000000000000000000101 C
b00000000000000000000000000000101 D
#11
#12
#13
#14
#15
0!
0"
#16
#17
#18
#19
#20
1!
b110 9
b00000000000000000000000000000100 8
b00000000000000000000000000000010 7
b0000000000000000000000000000001000000000000000000000000011111101 6
r0.6 5
r0.4 4
r0.2 3
1"
b110 :
b00000000000000000000000000000100 9
b00000000000000000000000000000010 8
b0000000000000000000000000000001000000000000000000000000011111101 7
r0.6 6
r0.4 5
r0.2 4
b00 3
b00 2
b00 1
b00 0
b00 /
b0000 )
b0000 (
b0000 '
b00 '
b00 &
b00 %
b0000 $
b00 #
b00000000000000000000000000000010 "
b111111 :
b0000 %
b00 $
b00000000000000000000000000000010 #
b111111 ;
#21
#22
#23
#24
#25
0!
0"
#26
#27
#28
#29
#30
1!
b110110 :
b00000000000000000000000000000011 "
b11 #
b1111 $
b11 %
1"
b110110 ;
b00000000000000000000000000000011 #
b11 $
b1111 %
b11 &
b1111 '
b11 '
b1111 (
b11 /
b1111 )
b11 0
b11 1
b11 2
r0.3 3
r0.6000000000000001 4
r0.8999999999999999 5
b0000000000000000000000000000001100000000000000000000000011111100 6
b00000000000000000000000000000011 7
b00000000000000000000000000000110 8
b101 9
b11 3
r0.3 4
r0.6000000000000001 5
r0.8999999999999999 6
b0000000000000000000000000000001100000000000000000000000011111100 7
b00000000000000000000000000000011 8
b00000000000000000000000000000110 9
b101 :
#31
#32
#33
#34
#35
0!
0"
#36
#37
#38
#39
#40
1!
b100 9
b00000000000000000000000000001000 8
b00000000000000000000000000000100 7
b0000000000000000000000000000010000000000000000000000000011111011 6
r1.2 5
r0.8 4
r0.4 3
1"
b100 :
b00000000000000000000000000001000 9
b00000000000000000000000000000100 8
b0000000000000000000000000000010000000000000000000000000011111011 7
r1.2 6
r0.8 5
r0.4 4
b00 3
b00 2
b00 1
b00 0
b00 /
b0000 )
b0000 (
b0000 '
b00 '
b00 &
b00 %
b0000 $
b00 #
b00000000000000000000000000000100 "
b101101 :
b0000 %
b00 $
b00000000000000000000000000000100 #
b101101 ;
#41
#42
#43
#44
#45
0!
0"
#46
#47
#48
#49
#50
1!
b100100 :
b00000000000000000000000000000101 "
b11 #
b1111 $
b11 %
1"
b100100 ;
b00000000000000000000000000000101 #
b11 $
b1111 %
b11 &
b1111 '
b11 '
b1111 (
b11 /
b1111 )
b11 0
b11 1
b11 2
r0.5 3
r1 4
r1.5 5
b0000000000000000000000000000010100000000000000000000000011111010 6
b00000000000000000000000000000101 7
b00000000000000000000000000001010 8
b011 9
b11 3
r0.5 4
r1 5
r1.5 6
b0000000000000000000000000000010100000000000000000000000011111010 7
b00000000000000000000000000000101 8
b00000000000000000000000000001010 9
b011 :
#51
#52
#53
#54
#55
0!
0"
#56
#57
#58
#59
#60
1!
b010 9
b00000000000000000000000000001100 8
b00000000000000000000000000000110 7
b0000000000000000000000000000011000000000000000000000000011111001 6
r1.8 5
r1.2 4
r0.6 3
1"
b010 :
b00000000000000000000000000001100 9
b00000000000000000000000000000110 8
b0000000000000000000000000000011000000000000000000000000011111001 7
r1.8 6
r1.2 5
r0.6 4
b00 3
b00 2
b00 1
b00 0
b00 /
b0000 )
b0000 (
b0000 '
b00 '
b00 &
b00 %
b0000 $
b00 #
b00000000000000000000000000000110 "
b011011 :
b0000 %
b00 $
b00000000000000000000000000000110 #
b011011 ;
#61
#62
#63

View File

@ -1,90 +1,89 @@
$version Generated by VerilatedVcd $end
$date Wed Aug 11 12:41:22 2021 $end
$timescale 1ps $end
$scope module top $end
$var wire 1 I clk $end
$scope module $unit $end
$var wire 1 # global_bit $end
$var wire 1 # global_bit $end
$upscope $end
$var wire 1 I clk $end
$scope module t $end
$var wire 1 S LONGSTART_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_LONGEND $end
$var wire 1 I clk $end
$var wire 1 I clk $end
$var wire 32 $ cyc [31:0] $end
$var wire 8 Q unpacked_array[-1] [7:0] $end
$var wire 8 P unpacked_array[-2] [7:0] $end
$var wire 8 R unpacked_array[0] [7:0] $end
$var real 64 < v_arr_real[0] $end
$var real 64 > v_arr_real[1] $end
$var wire 2 - v_arrp [2:1] $end
$var wire 2 . v_arrp_arrp[3] [2:1] $end
$var wire 2 / v_arrp_arrp[4] [2:1] $end
$var wire 1 J v_arru[1] $end
$var wire 1 K v_arru[2] $end
$var wire 2 4 v_arru_arrp[3] [2:1] $end
$var wire 2 5 v_arru_arrp[4] [2:1] $end
$var wire 1 L v_arru_arru[3][1] $end
$var wire 1 M v_arru_arru[3][2] $end
$var wire 1 N v_arru_arru[4][1] $end
$var wire 1 O v_arru_arru[4][2] $end
$var wire 3 D v_enumb [2:0] $end
$var wire 32 B v_enumed [31:0] $end
$var wire 32 C v_enumed2 [31:0] $end
$var real 64 : v_real $end
$scope module unnamedblk1 $end
$var wire 32 G b [31:0] $end
$scope module unnamedblk2 $end
$var wire 32 H a [31:0] $end
$scope module v_strp $end
$var wire 1 % b1 $end
$var wire 1 & b0 $end
$upscope $end
$scope module v_strp_strp $end
$scope module x1 $end
$var wire 1 ' b1 $end
$var wire 1 ( b0 $end
$upscope $end
$scope module x0 $end
$var wire 1 ) b1 $end
$var wire 1 * b0 $end
$upscope $end
$upscope $end
$scope module v_unip_strp $end
$scope module x1 $end
$var wire 1 + b1 $end
$var wire 1 , b0 $end
$upscope $end
$scope module x0 $end
$var wire 1 + b1 $end
$var wire 1 , b0 $end
$upscope $end
$upscope $end
$var wire 2 - v_arrp [2:1] $end
$var wire 2 . v_arrp_arrp[3] [2:1] $end
$var wire 2 / v_arrp_arrp[4] [2:1] $end
$scope module v_arrp_strp[3] $end
$var wire 1 1 b0 $end
$var wire 1 0 b1 $end
$var wire 1 0 b1 $end
$var wire 1 1 b0 $end
$upscope $end
$scope module v_arrp_strp[4] $end
$var wire 1 3 b0 $end
$var wire 1 2 b1 $end
$var wire 1 2 b1 $end
$var wire 1 3 b0 $end
$upscope $end
$var wire 1 J v_arru[1] $end
$var wire 1 K v_arru[2] $end
$var wire 1 L v_arru_arru[3][1] $end
$var wire 1 M v_arru_arru[3][2] $end
$var wire 1 N v_arru_arru[4][1] $end
$var wire 1 O v_arru_arru[4][2] $end
$var wire 2 4 v_arru_arrp[3] [2:1] $end
$var wire 2 5 v_arru_arrp[4] [2:1] $end
$scope module v_arru_strp[3] $end
$var wire 1 7 b0 $end
$var wire 1 6 b1 $end
$var wire 1 6 b1 $end
$var wire 1 7 b0 $end
$upscope $end
$scope module v_arru_strp[4] $end
$var wire 1 9 b0 $end
$var wire 1 8 b1 $end
$upscope $end
$scope module v_enumb2_str $end
$var wire 3 E a [2:0] $end
$var wire 3 F b [2:0] $end
$var wire 1 8 b1 $end
$var wire 1 9 b0 $end
$upscope $end
$var real 64 : v_real $end
$var real 64 < v_arr_real[0] $end
$var real 64 > v_arr_real[1] $end
$scope module v_str32x2[0] $end
$var wire 32 @ data [31:0] $end
$upscope $end
$scope module v_str32x2[1] $end
$var wire 32 A data [31:0] $end
$upscope $end
$scope module v_strp_strp $end
$scope module x0 $end
$var wire 1 * b0 $end
$var wire 1 ) b1 $end
$upscope $end
$scope module x1 $end
$var wire 1 ( b0 $end
$var wire 1 ' b1 $end
$upscope $end
$var wire 32 B v_enumed [31:0] $end
$var wire 32 C v_enumed2 [31:0] $end
$var wire 3 D v_enumb [2:0] $end
$scope module v_enumb2_str $end
$var wire 3 E a [2:0] $end
$var wire 3 F b [2:0] $end
$upscope $end
$scope module v_strp $end
$var wire 1 & b0 $end
$var wire 1 % b1 $end
$upscope $end
$scope module v_unip_strp $end
$scope module x0 $end
$var wire 1 , b0 $end
$var wire 1 + b1 $end
$upscope $end
$scope module x1 $end
$var wire 1 , b0 $end
$var wire 1 + b1 $end
$var wire 8 P unpacked_array[-2] [7:0] $end
$var wire 8 Q unpacked_array[-1] [7:0] $end
$var wire 8 R unpacked_array[0] [7:0] $end
$var wire 1 S LONGSTART_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_LONGEND $end
$scope module unnamedblk1 $end
$var wire 32 G b [31:0] $end
$scope module unnamedblk2 $end
$var wire 32 H a [31:0] $end
$upscope $end
$upscope $end
$upscope $end

View File

@ -1,5 +1,5 @@
$date
Wed Feb 23 00:01:19 2022
Tue Oct 24 11:01:27 2023
$end
$version
@ -9,125 +9,125 @@ $timescale
1ps
$end
$scope module top $end
$var wire 1 ! clk $end
$scope module $unit $end
$var bit 1 ! global_bit $end
$upscope $end
$var wire 1 " clk $end
$scope module t $end
$var wire 1 ! clk $end
$var integer 32 " cyc [31:0] $end
$var wire 1 " clk $end
$var integer 32 # cyc [31:0] $end
$scope struct v_strp $end
$var logic 1 # b1 $end
$var logic 1 $ b0 $end
$var bit 1 $ b1 $end
$var bit 1 % b0 $end
$upscope $end
$scope struct v_strp_strp $end
$scope struct x1 $end
$var logic 1 % b1 $end
$var logic 1 & b0 $end
$var bit 1 & b1 $end
$var bit 1 ' b0 $end
$upscope $end
$scope struct x0 $end
$var logic 1 ' b1 $end
$var logic 1 ( b0 $end
$var bit 1 ( b1 $end
$var bit 1 ) b0 $end
$upscope $end
$upscope $end
$scope union v_unip_strp $end
$scope struct x1 $end
$var logic 1 ) b1 $end
$var logic 1 * b0 $end
$var bit 1 * b1 $end
$var bit 1 + b0 $end
$upscope $end
$scope struct x0 $end
$var logic 1 ) b1 $end
$var logic 1 * b0 $end
$var bit 1 * b1 $end
$var bit 1 + b0 $end
$upscope $end
$upscope $end
$var logic 2 + v_arrp [2:1] $end
$var logic 2 , v_arrp_arrp[3] [2:1] $end
$var logic 2 - v_arrp_arrp[4] [2:1] $end
$var bit 2 , v_arrp [2:1] $end
$var bit 2 - v_arrp_arrp[3] [2:1] $end
$var bit 2 . v_arrp_arrp[4] [2:1] $end
$scope struct v_arrp_strp[3] $end
$var logic 1 . b1 $end
$var logic 1 / b0 $end
$var bit 1 / b1 $end
$var bit 1 0 b0 $end
$upscope $end
$scope struct v_arrp_strp[4] $end
$var logic 1 0 b1 $end
$var logic 1 1 b0 $end
$var bit 1 1 b1 $end
$var bit 1 2 b0 $end
$upscope $end
$var logic 1 2 v_arru[1] $end
$var logic 1 3 v_arru[2] $end
$var logic 1 4 v_arru_arru[3][1] $end
$var logic 1 5 v_arru_arru[3][2] $end
$var logic 1 6 v_arru_arru[4][1] $end
$var logic 1 7 v_arru_arru[4][2] $end
$var logic 2 8 v_arru_arrp[3] [2:1] $end
$var logic 2 9 v_arru_arrp[4] [2:1] $end
$var bit 1 3 v_arru[1] $end
$var bit 1 4 v_arru[2] $end
$var bit 1 5 v_arru_arru[3][1] $end
$var bit 1 6 v_arru_arru[3][2] $end
$var bit 1 7 v_arru_arru[4][1] $end
$var bit 1 8 v_arru_arru[4][2] $end
$var bit 2 9 v_arru_arrp[3] [2:1] $end
$var bit 2 : v_arru_arrp[4] [2:1] $end
$scope struct v_arru_strp[3] $end
$var logic 1 : b1 $end
$var logic 1 ; b0 $end
$var bit 1 ; b1 $end
$var bit 1 < b0 $end
$upscope $end
$scope struct v_arru_strp[4] $end
$var logic 1 < b1 $end
$var logic 1 = b0 $end
$var bit 1 = b1 $end
$var bit 1 > b0 $end
$upscope $end
$var real 64 > v_real $end
$var real 64 ? v_arr_real[0] $end
$var real 64 @ v_arr_real[1] $end
$var real 64 ? v_real $end
$var real 64 @ v_arr_real[0] $end
$var real 64 A v_arr_real[1] $end
$scope struct v_str32x2[0] $end
$var logic 32 A data [31:0] $end
$var logic 32 B data [31:0] $end
$upscope $end
$scope struct v_str32x2[1] $end
$var logic 32 B data [31:0] $end
$attrbegin misc 07 t.enumed_t 4 ZERO ONE TWO THREE 00000000000000000000000000000000 00000000000000000000000000000001 00000000000000000000000000000010 00000000000000000000000000000011 1 $end
$var logic 32 C data [31:0] $end
$upscope $end
$attrbegin misc 07 t.enumed_t 4 ZERO ONE TWO THREE 00000000000000000000000000000000 00000000000000000000000000000001 00000000000000000000000000000010 00000000000000000000000000000011 1 $end
$attrbegin misc 07 "" 1 $end
$var logic 32 C v_enumed [31:0] $end
$var int 32 D v_enumed [31:0] $end
$attrbegin misc 07 "" 1 $end
$var logic 32 D v_enumed2 [31:0] $end
$var int 32 E v_enumed2 [31:0] $end
$attrbegin misc 07 t.enumb_t 4 BZERO BONE BTWO BTHREE 000 001 010 011 2 $end
$attrbegin misc 07 "" 2 $end
$var logic 3 E v_enumb [2:0] $end
$var logic 3 F v_enumb [2:0] $end
$scope struct v_enumb2_str $end
$attrbegin misc 07 "" 2 $end
$var logic 3 F a [2:0] $end
$var logic 3 G a [2:0] $end
$attrbegin misc 07 "" 2 $end
$var logic 3 G b [2:0] $end
$var logic 3 H b [2:0] $end
$upscope $end
$var logic 8 H unpacked_array[-2] [7:0] $end
$var logic 8 I unpacked_array[-1] [7:0] $end
$var logic 8 J unpacked_array[0] [7:0] $end
$var bit 1 K LONGSTART_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_LONGEND $end
$var logic 8 I unpacked_array[-2] [7:0] $end
$var logic 8 J unpacked_array[-1] [7:0] $end
$var logic 8 K unpacked_array[0] [7:0] $end
$var bit 1 L LONGSTART_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_LONGEND $end
$scope module unnamedblk1 $end
$var integer 32 L b [31:0] $end
$var integer 32 M b [31:0] $end
$scope module unnamedblk2 $end
$var integer 32 M a [31:0] $end
$var integer 32 N a [31:0] $end
$upscope $end
$upscope $end
$upscope $end
$scope module $unit $end
$var bit 1 N global_bit $end
$upscope $end
$upscope $end
$enddefinitions $end
#0
$dumpvars
1N
b00000000000000000000000000000000 N
b00000000000000000000000000000000 M
b00000000000000000000000000000000 L
0K
0L
b00000000 K
b00000000 J
b00000000 I
b00000000 H
b000 H
b000 G
b000 F
b000 E
b00000000000000000000000000000000 E
b00000000000000000000000000000000 D
b00000000000000000000000000000000 C
b00000000000000000000000000000000 B
b00000000000000000000000011111111 A
b00000000000000000000000011111111 B
r0 A
r0 @
r0 ?
r0 >
0>
0=
0<
0;
0:
b00 :
b00 9
b00 8
08
07
06
05
@ -137,10 +137,10 @@ b00 8
01
00
0/
0.
b00 .
b00 -
b00 ,
b00 +
0+
0*
0)
0(
@ -148,14 +148,13 @@ b00 +
0&
0%
0$
0#
b00000000000000000000000000000000 "
0!
b00000000000000000000000000000000 #
0"
1!
$end
#10
1!
b00000000000000000000000000000001 "
1#
1"
b00000000000000000000000000000001 #
1$
1%
1&
@ -163,73 +162,73 @@ b00000000000000000000000000000001 "
1(
1)
1*
b11 +
1+
b11 ,
b11 -
1.
b11 .
1/
10
11
b11 8
12
b11 9
1:
b11 :
1;
1<
1=
r0.1 >
r0.2 ?
r0.3 @
b00000000000000000000000011111110 A
b00000000000000000000000000000001 B
1>
r0.1 ?
r0.2 @
r0.3 A
b00000000000000000000000011111110 B
b00000000000000000000000000000001 C
b00000000000000000000000000000010 D
b111 E
b00000000000000000000000000000101 L
b00000000000000000000000000000101 M
#15
0!
#20
1!
b110 E
b00000000000000000000000000000100 D
b00000000000000000000000000000010 C
b00000000000000000000000000000010 B
b00000000000000000000000011111101 A
r0.6 @
r0.4 ?
r0.2 >
0=
0<
0;
0:
b00 9
b00 8
01
00
0/
0.
b00 -
b00 ,
b00 +
0*
0)
0(
0'
0&
0%
0$
0#
b00000000000000000000000000000010 "
b00000000000000000000000000000001 D
b00000000000000000000000000000010 E
b111 F
b111 G
#25
0!
#30
1!
b110 G
b00000000000000000000000000000101 M
b00000000000000000000000000000101 N
#15
0"
#20
1"
b110 F
b00000000000000000000000000000011 "
1#
b00000000000000000000000000000100 E
b00000000000000000000000000000010 D
b00000000000000000000000000000010 C
b00000000000000000000000011111101 B
r0.6 A
r0.4 @
r0.2 ?
0>
0=
0<
0;
b00 :
b00 9
02
01
00
0/
b00 .
b00 -
b00 ,
0+
0*
0)
0(
0'
0&
0%
0$
b00000000000000000000000000000010 #
b111 G
b111 H
#25
0"
#30
1"
b110 H
b110 G
b00000000000000000000000000000011 #
1$
1%
1&
@ -237,52 +236,54 @@ b00000000000000000000000000000011 "
1(
1)
1*
b11 +
1+
b11 ,
b11 -
1.
b11 .
1/
10
11
b11 8
12
b11 9
1:
b11 :
1;
1<
1=
r0.3 >
r0.6000000000000001 ?
r0.8999999999999999 @
b00000000000000000000000011111100 A
b00000000000000000000000000000011 B
1>
r0.3 ?
r0.6000000000000001 @
r0.8999999999999999 A
b00000000000000000000000011111100 B
b00000000000000000000000000000011 C
b00000000000000000000000000000110 D
b101 E
b00000000000000000000000000000011 D
b00000000000000000000000000000110 E
b101 F
#35
0!
0"
#40
1!
b100 E
b00000000000000000000000000001000 D
1"
b100 F
b00000000000000000000000000001000 E
b00000000000000000000000000000100 D
b00000000000000000000000000000100 C
b00000000000000000000000000000100 B
b00000000000000000000000011111011 A
r1.2 @
r0.8 ?
r0.4 >
b00000000000000000000000011111011 B
r1.2 A
r0.8 @
r0.4 ?
0>
0=
0<
0;
0:
b00 :
b00 9
b00 8
02
01
00
0/
0.
b00 .
b00 -
b00 ,
b00 +
0+
0*
0)
0(
@ -290,18 +291,16 @@ b00 +
0&
0%
0$
0#
b00000000000000000000000000000100 "
b101 F
b00000000000000000000000000000100 #
b101 G
b101 H
#45
0!
0"
#50
1!
1"
b100 H
b100 G
b100 F
b00000000000000000000000000000101 "
1#
b00000000000000000000000000000101 #
1$
1%
1&
@ -309,52 +308,54 @@ b00000000000000000000000000000101 "
1(
1)
1*
b11 +
1+
b11 ,
b11 -
1.
b11 .
1/
10
11
b11 8
12
b11 9
1:
b11 :
1;
1<
1=
r0.5 >
r1 ?
r1.5 @
b00000000000000000000000011111010 A
b00000000000000000000000000000101 B
1>
r0.5 ?
r1 @
r1.5 A
b00000000000000000000000011111010 B
b00000000000000000000000000000101 C
b00000000000000000000000000001010 D
b011 E
b00000000000000000000000000000101 D
b00000000000000000000000000001010 E
b011 F
#55
0!
0"
#60
1!
b010 E
b00000000000000000000000000001100 D
1"
b010 F
b00000000000000000000000000001100 E
b00000000000000000000000000000110 D
b00000000000000000000000000000110 C
b00000000000000000000000000000110 B
b00000000000000000000000011111001 A
r1.8 @
r1.2 ?
r0.6 >
b00000000000000000000000011111001 B
r1.8 A
r1.2 @
r0.6 ?
0>
0=
0<
0;
0:
b00 :
b00 9
b00 8
02
01
00
0/
0.
b00 .
b00 -
b00 ,
b00 +
0+
0*
0)
0(
@ -362,7 +363,6 @@ b00 +
0&
0%
0$
0#
b00000000000000000000000000000110 "
b011 F
b00000000000000000000000000000110 #
b011 G
b011 H

View File

@ -1,5 +1,5 @@
$date
Wed Feb 23 00:01:26 2022
Tue Oct 24 11:01:32 2023
$end
$version
@ -9,124 +9,124 @@ $timescale
1ps
$end
$scope module top $end
$scope module $unit $end
$var bit 1 ! global_bit $end
$upscope $end
$scope module t $end
$var wire 1 ! clk $end
$var integer 32 " cyc [31:0] $end
$var wire 1 " clk $end
$var integer 32 # cyc [31:0] $end
$scope struct v_strp $end
$var logic 1 # b1 $end
$var logic 1 $ b0 $end
$var bit 1 $ b1 $end
$var bit 1 % b0 $end
$upscope $end
$scope struct v_strp_strp $end
$scope struct x1 $end
$var logic 1 % b1 $end
$var logic 1 & b0 $end
$var bit 1 & b1 $end
$var bit 1 ' b0 $end
$upscope $end
$scope struct x0 $end
$var logic 1 ' b1 $end
$var logic 1 ( b0 $end
$var bit 1 ( b1 $end
$var bit 1 ) b0 $end
$upscope $end
$upscope $end
$scope union v_unip_strp $end
$scope struct x1 $end
$var logic 1 ) b1 $end
$var logic 1 * b0 $end
$var bit 1 * b1 $end
$var bit 1 + b0 $end
$upscope $end
$scope struct x0 $end
$var logic 1 ) b1 $end
$var logic 1 * b0 $end
$var bit 1 * b1 $end
$var bit 1 + b0 $end
$upscope $end
$upscope $end
$var logic 2 + v_arrp [2:1] $end
$var logic 2 , v_arrp_arrp[3] [2:1] $end
$var logic 2 - v_arrp_arrp[4] [2:1] $end
$var bit 2 , v_arrp [2:1] $end
$var bit 2 - v_arrp_arrp[3] [2:1] $end
$var bit 2 . v_arrp_arrp[4] [2:1] $end
$scope struct v_arrp_strp[3] $end
$var logic 1 . b1 $end
$var logic 1 / b0 $end
$var bit 1 / b1 $end
$var bit 1 0 b0 $end
$upscope $end
$scope struct v_arrp_strp[4] $end
$var logic 1 0 b1 $end
$var logic 1 1 b0 $end
$var bit 1 1 b1 $end
$var bit 1 2 b0 $end
$upscope $end
$var logic 1 2 v_arru[1] $end
$var logic 1 3 v_arru[2] $end
$var logic 1 4 v_arru_arru[3][1] $end
$var logic 1 5 v_arru_arru[3][2] $end
$var logic 1 6 v_arru_arru[4][1] $end
$var logic 1 7 v_arru_arru[4][2] $end
$var logic 2 8 v_arru_arrp[3] [2:1] $end
$var logic 2 9 v_arru_arrp[4] [2:1] $end
$var bit 1 3 v_arru[1] $end
$var bit 1 4 v_arru[2] $end
$var bit 1 5 v_arru_arru[3][1] $end
$var bit 1 6 v_arru_arru[3][2] $end
$var bit 1 7 v_arru_arru[4][1] $end
$var bit 1 8 v_arru_arru[4][2] $end
$var bit 2 9 v_arru_arrp[3] [2:1] $end
$var bit 2 : v_arru_arrp[4] [2:1] $end
$scope struct v_arru_strp[3] $end
$var logic 1 : b1 $end
$var logic 1 ; b0 $end
$var bit 1 ; b1 $end
$var bit 1 < b0 $end
$upscope $end
$scope struct v_arru_strp[4] $end
$var logic 1 < b1 $end
$var logic 1 = b0 $end
$var bit 1 = b1 $end
$var bit 1 > b0 $end
$upscope $end
$var real 64 > v_real $end
$var real 64 ? v_arr_real[0] $end
$var real 64 @ v_arr_real[1] $end
$var real 64 ? v_real $end
$var real 64 @ v_arr_real[0] $end
$var real 64 A v_arr_real[1] $end
$scope struct v_str32x2[0] $end
$var logic 32 A data [31:0] $end
$var logic 32 B data [31:0] $end
$upscope $end
$scope struct v_str32x2[1] $end
$var logic 32 B data [31:0] $end
$attrbegin misc 07 t.enumed_t 4 ZERO ONE TWO THREE 00000000000000000000000000000000 00000000000000000000000000000001 00000000000000000000000000000010 00000000000000000000000000000011 1 $end
$var logic 32 C data [31:0] $end
$upscope $end
$attrbegin misc 07 t.enumed_t 4 ZERO ONE TWO THREE 00000000000000000000000000000000 00000000000000000000000000000001 00000000000000000000000000000010 00000000000000000000000000000011 1 $end
$attrbegin misc 07 "" 1 $end
$var logic 32 C v_enumed [31:0] $end
$var int 32 D v_enumed [31:0] $end
$attrbegin misc 07 "" 1 $end
$var logic 32 D v_enumed2 [31:0] $end
$var int 32 E v_enumed2 [31:0] $end
$attrbegin misc 07 t.enumb_t 4 BZERO BONE BTWO BTHREE 000 001 010 011 2 $end
$attrbegin misc 07 "" 2 $end
$var logic 3 E v_enumb [2:0] $end
$var logic 3 F v_enumb [2:0] $end
$scope struct v_enumb2_str $end
$attrbegin misc 07 "" 2 $end
$var logic 3 F a [2:0] $end
$var logic 3 G a [2:0] $end
$attrbegin misc 07 "" 2 $end
$var logic 3 G b [2:0] $end
$var logic 3 H b [2:0] $end
$upscope $end
$var logic 8 H unpacked_array[-2] [7:0] $end
$var logic 8 I unpacked_array[-1] [7:0] $end
$var logic 8 J unpacked_array[0] [7:0] $end
$var bit 1 K LONGSTART_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_LONGEND $end
$var logic 8 I unpacked_array[-2] [7:0] $end
$var logic 8 J unpacked_array[-1] [7:0] $end
$var logic 8 K unpacked_array[0] [7:0] $end
$var bit 1 L LONGSTART_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_LONGEND $end
$scope module unnamedblk1 $end
$var integer 32 L b [31:0] $end
$var integer 32 M b [31:0] $end
$scope module unnamedblk2 $end
$var integer 32 M a [31:0] $end
$var integer 32 N a [31:0] $end
$upscope $end
$upscope $end
$upscope $end
$scope module $unit $end
$var bit 1 N global_bit $end
$upscope $end
$upscope $end
$enddefinitions $end
#0
$dumpvars
1N
b00000000000000000000000000000000 N
b00000000000000000000000000000000 M
b00000000000000000000000000000000 L
0K
0L
b00000000 K
b00000000 J
b00000000 I
b00000000 H
b000 H
b000 G
b000 F
b000 E
b00000000000000000000000000000000 E
b00000000000000000000000000000000 D
b00000000000000000000000000000000 C
b00000000000000000000000000000000 B
b00000000000000000000000011111111 A
b00000000000000000000000011111111 B
r0 A
r0 @
r0 ?
r0 >
0>
0=
0<
0;
0:
b00 :
b00 9
b00 8
08
07
06
05
@ -136,10 +136,10 @@ b00 8
01
00
0/
0.
b00 .
b00 -
b00 ,
b00 +
0+
0*
0)
0(
@ -147,14 +147,13 @@ b00 +
0&
0%
0$
0#
b00000000000000000000000000000000 "
0!
b00000000000000000000000000000000 #
0"
1!
$end
#10
1!
b00000000000000000000000000000001 "
1#
1"
b00000000000000000000000000000001 #
1$
1%
1&
@ -162,62 +161,64 @@ b00000000000000000000000000000001 "
1(
1)
1*
b11 +
1+
b11 ,
b11 -
1.
b11 .
1/
10
11
b11 8
12
b11 9
1:
b11 :
1;
1<
1=
r0.1 >
r0.2 ?
r0.3 @
b00000000000000000000000011111110 A
b00000000000000000000000000000001 B
1>
r0.1 ?
r0.2 @
r0.3 A
b00000000000000000000000011111110 B
b00000000000000000000000000000001 C
b00000000000000000000000000000010 D
b111 E
b00000000000000000000000000000101 L
b00000000000000000000000000000001 D
b00000000000000000000000000000010 E
b111 F
b00000000000000000000000000000101 M
b00000000000000000000000000000101 N
#11
#12
#13
#14
#15
0!
0"
#16
#17
#18
#19
#20
1!
b110 E
b00000000000000000000000000000100 D
1"
b110 F
b00000000000000000000000000000100 E
b00000000000000000000000000000010 D
b00000000000000000000000000000010 C
b00000000000000000000000000000010 B
b00000000000000000000000011111101 A
r0.6 @
r0.4 ?
r0.2 >
b00000000000000000000000011111101 B
r0.6 A
r0.4 @
r0.2 ?
0>
0=
0<
0;
0:
b00 :
b00 9
b00 8
02
01
00
0/
0.
b00 .
b00 -
b00 ,
b00 +
0+
0*
0)
0(
@ -225,26 +226,24 @@ b00 +
0&
0%
0$
0#
b00000000000000000000000000000010 "
b111 F
b00000000000000000000000000000010 #
b111 G
b111 H
#21
#22
#23
#24
#25
0!
0"
#26
#27
#28
#29
#30
1!
1"
b110 H
b110 G
b110 F
b00000000000000000000000000000011 "
1#
b00000000000000000000000000000011 #
1$
1%
1&
@ -252,60 +251,62 @@ b00000000000000000000000000000011 "
1(
1)
1*
b11 +
1+
b11 ,
b11 -
1.
b11 .
1/
10
11
b11 8
12
b11 9
1:
b11 :
1;
1<
1=
r0.3 >
r0.6000000000000001 ?
r0.8999999999999999 @
b00000000000000000000000011111100 A
b00000000000000000000000000000011 B
1>
r0.3 ?
r0.6000000000000001 @
r0.8999999999999999 A
b00000000000000000000000011111100 B
b00000000000000000000000000000011 C
b00000000000000000000000000000110 D
b101 E
b00000000000000000000000000000011 D
b00000000000000000000000000000110 E
b101 F
#31
#32
#33
#34
#35
0!
0"
#36
#37
#38
#39
#40
1!
b100 E
b00000000000000000000000000001000 D
1"
b100 F
b00000000000000000000000000001000 E
b00000000000000000000000000000100 D
b00000000000000000000000000000100 C
b00000000000000000000000000000100 B
b00000000000000000000000011111011 A
r1.2 @
r0.8 ?
r0.4 >
b00000000000000000000000011111011 B
r1.2 A
r0.8 @
r0.4 ?
0>
0=
0<
0;
0:
b00 :
b00 9
b00 8
02
01
00
0/
0.
b00 .
b00 -
b00 ,
b00 +
0+
0*
0)
0(
@ -313,26 +314,24 @@ b00 +
0&
0%
0$
0#
b00000000000000000000000000000100 "
b101 F
b00000000000000000000000000000100 #
b101 G
b101 H
#41
#42
#43
#44
#45
0!
0"
#46
#47
#48
#49
#50
1!
1"
b100 H
b100 G
b100 F
b00000000000000000000000000000101 "
1#
b00000000000000000000000000000101 #
1$
1%
1&
@ -340,60 +339,62 @@ b00000000000000000000000000000101 "
1(
1)
1*
b11 +
1+
b11 ,
b11 -
1.
b11 .
1/
10
11
b11 8
12
b11 9
1:
b11 :
1;
1<
1=
r0.5 >
r1 ?
r1.5 @
b00000000000000000000000011111010 A
b00000000000000000000000000000101 B
1>
r0.5 ?
r1 @
r1.5 A
b00000000000000000000000011111010 B
b00000000000000000000000000000101 C
b00000000000000000000000000001010 D
b011 E
b00000000000000000000000000000101 D
b00000000000000000000000000001010 E
b011 F
#51
#52
#53
#54
#55
0!
0"
#56
#57
#58
#59
#60
1!
b010 E
b00000000000000000000000000001100 D
1"
b010 F
b00000000000000000000000000001100 E
b00000000000000000000000000000110 D
b00000000000000000000000000000110 C
b00000000000000000000000000000110 B
b00000000000000000000000011111001 A
r1.8 @
r1.2 ?
r0.6 >
b00000000000000000000000011111001 B
r1.8 A
r1.2 @
r0.6 ?
0>
0=
0<
0;
0:
b00 :
b00 9
b00 8
02
01
00
0/
0.
b00 .
b00 -
b00 ,
b00 +
0+
0*
0)
0(
@ -401,10 +402,9 @@ b00 +
0&
0%
0$
0#
b00000000000000000000000000000110 "
b011 F
b00000000000000000000000000000110 #
b011 G
b011 H
#61
#62
#63

View File

@ -1,11 +1,10 @@
$version Generated by VerilatedVcd $end
$date Sat Mar 5 13:48:47 2022 $end
$timescale 1ps $end
$scope module top $end
$var wire 1 , clk $end
$var wire 1 , clk $end
$scope module t $end
$var wire 1 , clk $end
$var wire 1 , clk $end
$var wire 32 # cyc [31:0] $end
$scope module sub1a $end
$var wire 32 - ADD [31:0] $end

View File

@ -18,8 +18,6 @@ execute(
check_finished => 1,
);
file_grep_not("$Self->{obj_dir}/simx.vcd", qr/scope/);
file_grep_not("$Self->{obj_dir}/simx.vcd", qr/upscope/);
file_grep_not("$Self->{obj_dir}/simx.vcd", qr/var/);
ok(1);

View File

@ -1,14 +1,12 @@
$version Generated by VerilatedVcd $end
$date Sat Jan 27 15:03:24 2018
$end
$timescale 1ps $end
$timescale 1ps $end
$scope module top $end
$var wire 1 ' clk $end
$var wire 1 ' clk $end
$scope module t $end
$var wire 32 $ c_trace_on [31:0] $end
$var wire 1 ' clk $end
$var wire 1 ' clk $end
$var wire 32 # cyc [31:0] $end
$var wire 32 $ c_trace_on [31:0] $end
$var real 64 % r $end
$upscope $end
$upscope $end
@ -83,7 +81,7 @@ r0.8999999999999999 %
#95
0'
#100
1'
b00000000000000000000000000001011 #
b00000000000000000000000000001001 $
r0.9999999999999999 %
1'

View File

@ -1,163 +1,161 @@
$version Generated by VerilatedVcd $end
$date Tue Apr 7 19:56:41 2020
$end
$timescale 1ps $end
$timescale 1ps $end
$scope module top $end
$scope module t $end
$var wire 32 3 c_trace_on [31:0] $end
$var wire 1 # clk $end
$var wire 32 + cyc [31:0] $end
$var real 64 ; r $end
$var wire 1 ' clk $end
$var wire 32 # cyc [31:0] $end
$var wire 32 $ c_trace_on [31:0] $end
$var real 64 % r $end
$upscope $end
$upscope $end
$enddefinitions $end
#0
0#
b00000000000000000000000000000001 +
b00000000000000000000000000000000 3
r0 ;
b00000000000000000000000000000001 #
b00000000000000000000000000000000 $
r0 %
0'
#10
1#
b00000000000000000000000000000010 +
r0.1 ;
b00000000000000000000000000000010 #
r0.1 %
1'
#11
#12
#13
#14
#15
0#
0'
#16
#17
#18
#19
#20
1#
b00000000000000000000000000000011 +
b00000000000000000000000000000001 3
r0.2 ;
b00000000000000000000000000000011 #
b00000000000000000000000000000001 $
r0.2 %
1'
#21
#22
#23
#24
#25
0#
0'
#26
#27
#28
#29
#30
1#
b00000000000000000000000000000100 +
b00000000000000000000000000000010 3
r0.3 ;
b00000000000000000000000000000100 #
b00000000000000000000000000000010 $
r0.3 %
1'
#31
#32
#33
#34
#35
0#
0'
#36
#37
#38
#39
#40
1#
b00000000000000000000000000000101 +
b00000000000000000000000000000011 3
r0.4 ;
b00000000000000000000000000000101 #
b00000000000000000000000000000011 $
r0.4 %
1'
#41
#42
#43
#44
#45
0#
0'
#46
#47
#48
#49
#50
1#
b00000000000000000000000000000110 +
b00000000000000000000000000000100 3
r0.5 ;
b00000000000000000000000000000110 #
b00000000000000000000000000000100 $
r0.5 %
1'
#51
#52
#53
#54
#55
0#
0'
#56
#57
#58
#59
#60
1#
b00000000000000000000000000000111 +
b00000000000000000000000000000101 3
r0.6 ;
b00000000000000000000000000000111 #
b00000000000000000000000000000101 $
r0.6 %
1'
#61
#62
#63
#64
#65
0#
0'
#66
#67
#68
#69
#70
1#
b00000000000000000000000000001000 +
b00000000000000000000000000000110 3
r0.7 ;
b00000000000000000000000000001000 #
b00000000000000000000000000000110 $
r0.7 %
1'
#71
#72
#73
#74
#75
0#
0'
#76
#77
#78
#79
#80
1#
b00000000000000000000000000001001 +
b00000000000000000000000000000111 3
r0.7999999999999999 ;
b00000000000000000000000000001001 #
b00000000000000000000000000000111 $
r0.7999999999999999 %
1'
#81
#82
#83
#84
#85
0#
0'
#86
#87
#88
#89
#90
1#
b00000000000000000000000000001010 +
b00000000000000000000000000001000 3
r0.8999999999999999 ;
b00000000000000000000000000001010 #
b00000000000000000000000000001000 $
r0.8999999999999999 %
1'
#91
#92
#93
#94
#95
0#
0'
#96
#97
#98
#99
#100
1#
b00000000000000000000000000001011 +
b00000000000000000000000000001001 3
r0.9999999999999999 ;
b00000000000000000000000000001011 #
b00000000000000000000000000001001 $
r0.9999999999999999 %
1'
#101
#102
#103

View File

@ -1,32 +1,31 @@
$version Generated by VerilatedVcd $end
$date Tue Aug 10 15:49:51 2021 $end
$timescale 1ps $end
$scope module top $end
$var wire 1 5 CLK $end
$var wire 1 6 RESET $end
$scope module t $end
$var wire 1 5 CLK $end
$var wire 1 # RESET $end
$var wire 32 & val [31:0] $end
$var wire 2 $ vec[3] [2:1] $end
$var wire 2 % vec[4] [2:1] $end
$var wire 1 5 CLK $end
$var wire 1 # RESET $end
$scope module glbl $end
$var wire 1 7 GSR $end
$var wire 1 7 GSR $end
$upscope $end
$var wire 2 $ vec[3] [2:1] $end
$var wire 2 % vec[4] [2:1] $end
$var wire 32 & val [31:0] $end
$scope module little $end
$var wire 1 5 clk $end
$var wire 128 1 i128 [63:190] $end
$var wire 49 / i48 [1:49] $end
$var wire 8 . i8 [0:7] $end
$var wire 1 5 clk $end
$var wire 8 ' i8 [0:7] $end
$var wire 49 ( i48 [1:49] $end
$var wire 128 * i128 [63:190] $end
$upscope $end
$scope module neg $end
$var wire 1 5 clk $end
$var wire 128 * i128 [63:-64] $end
$var wire 48 ( i48 [-1:-48] $end
$var wire 8 ' i8 [0:-7] $end
$var wire 1 5 clk $end
$var wire 8 . i8 [0:-7] $end
$var wire 48 / i48 [-1:-48] $end
$var wire 128 1 i128 [63:-64] $end
$upscope $end
$upscope $end
$var wire 1 5 CLK $end
$var wire 1 6 RESET $end
$upscope $end
$enddefinitions $end
@ -37,10 +36,10 @@ b00 $
b00 %
b00000000000000000000000000000000 &
b00000000 '
b000000000000000000000000000000000000000000000000 (
b0000000000000000000000000000000000000000000000000 (
b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 *
b00000000 .
b0000000000000000000000000000000000000000000000000 /
b000000000000000000000000000000000000000000000000 /
b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 1
05
16
@ -49,10 +48,10 @@ b0000000000000000000000000000000000000000000000000000000000000000000000000000000
#2
#3
b11111111 '
b111111111111111111111111111111111111111111111111 (
b1111111111111111111111111111111111111111111111111 (
b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 *
b11111111 .
b1111111111111111111111111111111111111111111111111 /
b111111111111111111111111111111111111111111111111 /
b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 1
15
#4
@ -65,10 +64,10 @@ b1111111111111111111111111111111111111111111111111111111111111111111111111111111
#9
0#
b00000000 '
b000000000000000000000000000000000000000000000000 (
b0000000000000000000000000000000000000000000000000 (
b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 *
b00000000 .
b0000000000000000000000000000000000000000000000000 /
b000000000000000000000000000000000000000000000000 /
b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 1
15
06
@ -81,10 +80,10 @@ b0000000000000000000000000000000000000000000000000000000000000000000000000000000
#15
b00000000000000000000000000000001 &
b11111111 '
b111111111111111111111111111111111111111111111111 (
b1111111111111111111111111111111111111111111111111 (
b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 *
b11111111 .
b1111111111111111111111111111111111111111111111111 /
b111111111111111111111111111111111111111111111111 /
b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 1
15
#16

View File

@ -1,11 +1,10 @@
$version Generated by VerilatedVcd $end
$date Sun Aug 28 08:18:01 2022 $end
$timescale 1ps $end
$scope module top $end
$var wire 1 # clk $end
$var wire 1 # clk $end
$scope module t $end
$var wire 1 # clk $end
$var wire 1 # clk $end
$var wire 32 $ cyc [31:0] $end
$upscope $end
$upscope $end

View File

@ -1,11 +1,10 @@
$version Generated by VerilatedVcd $end
$date Thu May 12 22:13:21 2022 $end
$timescale 1ps $end
$scope module top $end
$var wire 1 ) clk $end
$var wire 1 ) clk $end
$scope module t $end
$var wire 1 ) clk $end
$var wire 1 ) clk $end
$scope module sub1a $end
$var wire 32 * ADD [31:0] $end
$var wire 32 # cyc [31:0] $end

View File

@ -1,71 +1,69 @@
$version Generated by VerilatedVcd $end
$date Tue Apr 7 21:19:07 2020
$end
$timescale 1ms $end
$timescale 1ms $end
$scope module top $end
$var wire 1 + clk $end
$var wire 1 # clk $end
$scope module t $end
$var wire 1 + clk $end
$var wire 32 # cyc [31:0] $end
$var wire 1 # clk $end
$var wire 32 $ cyc [31:0] $end
$upscope $end
$upscope $end
$enddefinitions $end
#0
b00000000000000000000000000000000 #
0+
0#
b00000000000000000000000000000000 $
#10
b00000000000000000000000000000001 #
1+
1#
b00000000000000000000000000000001 $
#15
0+
0#
#20
b00000000000000000000000000000010 #
1+
1#
b00000000000000000000000000000010 $
#25
0+
0#
#30
b00000000000000000000000000000011 #
1+
1#
b00000000000000000000000000000011 $
#35
0+
0#
#40
b00000000000000000000000000000100 #
1+
1#
b00000000000000000000000000000100 $
#45
0+
0#
#50
b00000000000000000000000000000101 #
1+
1#
b00000000000000000000000000000101 $
#55
0+
0#
#60
b00000000000000000000000000000110 #
1+
1#
b00000000000000000000000000000110 $
#65
0+
0#
#70
b00000000000000000000000000000111 #
1+
1#
b00000000000000000000000000000111 $
#75
0+
0#
#80
b00000000000000000000000000001000 #
1+
1#
b00000000000000000000000000001000 $
#85
0+
0#
#90
b00000000000000000000000000001001 #
1+
1#
b00000000000000000000000000001001 $
#95
0+
0#
#100
b00000000000000000000000000001010 #
1+
1#
b00000000000000000000000000001010 $
#105
0+
0#
#110
1+
b00000000000000000000000000001011 #
1#
b00000000000000000000000000001011 $

View File

@ -1,12 +1,11 @@
$version Generated by VerilatedVcd $end
$date Sat Oct 15 13:17:45 2022 $end
$timescale 1ps $end
$scope module TOP $end
$scope module t $end
$var wire 32 % CLOCK_CYCLE [31:0] $end
$var wire 1 $ clk $end
$var wire 1 # rst $end
$var wire 1 # rst $end
$var wire 1 $ clk $end
$upscope $end
$upscope $end
$enddefinitions $end

View File

@ -1,16 +1,14 @@
$version Generated by VerilatedVcd $end
$date Sat Mar 7 18:39:02 2020
$end
$timescale 1ps $end
$timescale 1ps $end
$scope module topa $end
$var wire 1 3 clk $end
$var wire 1 # clk $end
$scope module t $end
$var wire 32 + c_trace_on [31:0] $end
$var wire 1 3 clk $end
$var wire 32 # cyc [31:0] $end
$var wire 1 # clk $end
$var wire 32 $ cyc [31:0] $end
$var wire 32 % c_trace_on [31:0] $end
$scope module sub $end
$var wire 32 ; inside_sub_a [31:0] $end
$var wire 32 & inside_sub_a [31:0] $end
$upscope $end
$upscope $end
$upscope $end
@ -18,88 +16,67 @@ $enddefinitions $end
#10
b00000000000000000000000000000001 #
b00000000000000000000000000000000 +
13
b00000000000000000000000000000001 ;
#10
1#
b00000000000000000000000000000001 $
b00000000000000000000000000000000 %
b00000000000000000000000000000001 &
#15
#15
03
0#
#20
#20
b00000000000000000000000000000010 #
b00000000000000000000000000000011 +
13
1#
b00000000000000000000000000000010 $
b00000000000000000000000000000011 %
#25
#25
03
0#
#30
#30
b00000000000000000000000000000011 #
b00000000000000000000000000000100 +
13
1#
b00000000000000000000000000000011 $
b00000000000000000000000000000100 %
#35
#35
03
0#
#40
#40
b00000000000000000000000000000100 #
b00000000000000000000000000000101 +
13
1#
b00000000000000000000000000000100 $
b00000000000000000000000000000101 %
#45
#45
03
0#
#50
#50
b00000000000000000000000000000101 #
b00000000000000000000000000000110 +
13
1#
b00000000000000000000000000000101 $
b00000000000000000000000000000110 %
#55
#55
03
0#
#60
#60
b00000000000000000000000000000110 #
b00000000000000000000000000000111 +
13
1#
b00000000000000000000000000000110 $
b00000000000000000000000000000111 %
#65
#65
03
0#
#70
#70
b00000000000000000000000000000111 #
b00000000000000000000000000001000 +
13
1#
b00000000000000000000000000000111 $
b00000000000000000000000000001000 %
#75
#75
03
0#
#80
#80
b00000000000000000000000000001000 #
b00000000000000000000000000001001 +
13
1#
b00000000000000000000000000001000 $
b00000000000000000000000000001001 %
#85
#85
03
0#
#90
#90
b00000000000000000000000000001001 #
b00000000000000000000000000001010 +
13
1#
b00000000000000000000000000001001 $
b00000000000000000000000000001010 %
#95
#95
03
0#
#100
#100
b00000000000000000000000000001010 #
b00000000000000000000000000001011 +
13
1#
b00000000000000000000000000001010 $
b00000000000000000000000000001011 %
#105
#105
03
0#
#110
#110
13
b00000000000000000000000000001011 #
b00000000000000000000000000001100 +
1#
b00000000000000000000000000001011 $
b00000000000000000000000000001100 %

View File

@ -1,15 +1,13 @@
$version Generated by VerilatedVcd $end
$date Sun Mar 1 20:49:13 2020
$end
$timescale 1ps $end
$timescale 1ps $end
$scope module topa $end
$scope module t $end
$var wire 32 3 c_trace_on [31:0] $end
$var wire 1 # clk $end
$var wire 32 + cyc [31:0] $end
$var wire 1 # clk $end
$var wire 32 $ cyc [31:0] $end
$var wire 32 % c_trace_on [31:0] $end
$scope module sub $end
$var wire 32 ; inside_sub_a [31:0] $end
$var wire 32 & inside_sub_a [31:0] $end
$upscope $end
$upscope $end
$upscope $end
@ -18,64 +16,64 @@ $enddefinitions $end
#0
0#
b00000000000000000000000000000001 +
b00000000000000000000000000000000 3
b00000000000000000000000000000001 ;
b00000000000000000000000000000001 $
b00000000000000000000000000000000 %
b00000000000000000000000000000001 &
#10000
1#
b00000000000000000000000000000010 +
b00000000000000000000000000000011 3
b00000000000000000000000000000010 $
b00000000000000000000000000000011 %
#15000
0#
#20000
1#
b00000000000000000000000000000011 +
b00000000000000000000000000000100 3
b00000000000000000000000000000011 $
b00000000000000000000000000000100 %
#25000
0#
#30000
1#
b00000000000000000000000000000100 +
b00000000000000000000000000000101 3
b00000000000000000000000000000100 $
b00000000000000000000000000000101 %
#35000
0#
#40000
1#
b00000000000000000000000000000101 +
b00000000000000000000000000000110 3
b00000000000000000000000000000101 $
b00000000000000000000000000000110 %
#45000
0#
#50000
1#
b00000000000000000000000000000110 +
b00000000000000000000000000000111 3
b00000000000000000000000000000110 $
b00000000000000000000000000000111 %
#55000
0#
#60000
1#
b00000000000000000000000000000111 +
b00000000000000000000000000001000 3
b00000000000000000000000000000111 $
b00000000000000000000000000001000 %
#65000
0#
#70000
1#
b00000000000000000000000000001000 +
b00000000000000000000000000001001 3
b00000000000000000000000000001000 $
b00000000000000000000000000001001 %
#75000
0#
#80000
1#
b00000000000000000000000000001001 +
b00000000000000000000000000001010 3
b00000000000000000000000000001001 $
b00000000000000000000000000001010 %
#85000
0#
#90000
1#
b00000000000000000000000000001010 +
b00000000000000000000000000001011 3
b00000000000000000000000000001010 $
b00000000000000000000000000001011 %
#95000
0#
#100000
1#
b00000000000000000000000000001011 +
b00000000000000000000000000001100 3
b00000000000000000000000000001011 $
b00000000000000000000000000001100 %

View File

@ -1,28 +1,26 @@
$version Generated by VerilatedVcd $end
$date Sat Feb 29 09:09:40 2020
$end
$timescale 1ps $end
$timescale 1ps $end
$scope module topa $end
$var wire 1 3 clk $end
$var wire 1 # clk $end
$scope module t $end
$var wire 32 + c_trace_on [31:0] $end
$var wire 1 3 clk $end
$var wire 32 # cyc [31:0] $end
$var wire 1 # clk $end
$var wire 32 $ cyc [31:0] $end
$var wire 32 % c_trace_on [31:0] $end
$scope module sub $end
$var wire 32 ; inside_sub_a [31:0] $end
$var wire 32 & inside_sub_a [31:0] $end
$upscope $end
$upscope $end
$upscope $end
$scope module topb $end
$var wire 1 N clk $end
$var wire 1 ( clk $end
$scope module t $end
$var wire 32 ^ c_trace_on [31:0] $end
$var wire 1 N clk $end
$var wire 32 V cyc [31:0] $end
$var real 64 > r $end
$var wire 1 ( clk $end
$var wire 32 + cyc [31:0] $end
$var wire 32 , c_trace_on [31:0] $end
$var real 64 ) r $end
$scope module sub $end
$var wire 32 f inside_sub_a [31:0] $end
$var wire 32 - inside_sub_a [31:0] $end
$upscope $end
$upscope $end
$upscope $end
@ -30,99 +28,99 @@ $enddefinitions $end
#0
b00000000000000000000000000000001 #
b00000000000000000000000000000000 +
03
b00000000000000000000000000000001 ;
r0 >
0N
b00000000000000000000000000000001 V
b00000000000000000000000000000000 ^
b00000000000000000000000000000010 f
0#
b00000000000000000000000000000001 $
b00000000000000000000000000000000 %
0(
r0 )
b00000000000000000000000000000001 &
b00000000000000000000000000000001 +
b00000000000000000000000000000000 ,
b00000000000000000000000000000010 -
#10
b00000000000000000000000000000010 #
b00000000000000000000000000000011 +
13
r0.1 >
1N
1#
b00000000000000000000000000000010 $
b00000000000000000000000000000011 %
1(
r0.1 )
#15
03
0N
0#
0(
#20
b00000000000000000000000000000011 #
b00000000000000000000000000000100 +
13
r0.2 >
1N
1#
b00000000000000000000000000000011 $
b00000000000000000000000000000100 %
1(
r0.2 )
#25
03
0N
0#
0(
#30
b00000000000000000000000000000100 #
b00000000000000000000000000000101 +
13
r0.3 >
1N
1#
b00000000000000000000000000000100 $
b00000000000000000000000000000101 %
1(
r0.3 )
#35
03
0N
0#
0(
#40
b00000000000000000000000000000101 #
b00000000000000000000000000000110 +
13
r0.4 >
1N
1#
b00000000000000000000000000000101 $
b00000000000000000000000000000110 %
1(
r0.4 )
#45
03
0N
0#
0(
#50
b00000000000000000000000000000110 #
b00000000000000000000000000000111 +
13
r0.5 >
1N
1#
b00000000000000000000000000000110 $
b00000000000000000000000000000111 %
1(
r0.5 )
#55
03
0N
0#
0(
#60
b00000000000000000000000000000111 #
b00000000000000000000000000001000 +
13
r0.6 >
1N
1#
b00000000000000000000000000000111 $
b00000000000000000000000000001000 %
1(
r0.6 )
#65
03
0N
0#
0(
#70
b00000000000000000000000000001000 #
b00000000000000000000000000001001 +
13
r0.7 >
1N
1#
b00000000000000000000000000001000 $
b00000000000000000000000000001001 %
1(
r0.7 )
#75
03
0N
0#
0(
#80
b00000000000000000000000000001001 #
b00000000000000000000000000001010 +
13
r0.7999999999999999 >
1N
1#
b00000000000000000000000000001001 $
b00000000000000000000000000001010 %
1(
r0.7999999999999999 )
#85
03
0N
0#
0(
#90
b00000000000000000000000000001010 #
b00000000000000000000000000001011 +
13
r0.8999999999999999 >
1N
1#
b00000000000000000000000000001010 $
b00000000000000000000000000001011 %
1(
r0.8999999999999999 )
#95
03
0N
0#
0(
#100
b00000000000000000000000000001011 #
b00000000000000000000000000001100 +
13
r0.9999999999999999 >
1N
1#
b00000000000000000000000000001011 $
b00000000000000000000000000001100 %
1(
r0.9999999999999999 )

View File

@ -1,26 +1,24 @@
$version Generated by VerilatedVcd $end
$date Sat Feb 29 09:18:19 2020
$end
$timescale 1ps $end
$timescale 1ps $end
$scope module topa $end
$scope module t $end
$var wire 32 3 c_trace_on [31:0] $end
$var wire 1 # clk $end
$var wire 32 + cyc [31:0] $end
$var wire 1 # clk $end
$var wire 32 $ cyc [31:0] $end
$var wire 32 % c_trace_on [31:0] $end
$scope module sub $end
$var wire 32 ; inside_sub_a [31:0] $end
$var wire 32 & inside_sub_a [31:0] $end
$upscope $end
$upscope $end
$upscope $end
$scope module topb $end
$scope module t $end
$var wire 32 ^ c_trace_on [31:0] $end
$var wire 1 > clk $end
$var wire 32 V cyc [31:0] $end
$var real 64 F r $end
$var wire 1 ( clk $end
$var wire 32 + cyc [31:0] $end
$var wire 32 , c_trace_on [31:0] $end
$var real 64 ) r $end
$scope module sub $end
$var wire 32 f inside_sub_a [31:0] $end
$var wire 32 - inside_sub_a [31:0] $end
$upscope $end
$upscope $end
$upscope $end
@ -29,98 +27,98 @@ $enddefinitions $end
#0
0#
b00000000000000000000000000000001 $
b00000000000000000000000000000000 %
0(
r0 )
b00000000000000000000000000000001 &
b00000000000000000000000000000001 +
b00000000000000000000000000000000 3
b00000000000000000000000000000001 ;
0>
r0 F
b00000000000000000000000000000001 V
b00000000000000000000000000000000 ^
b00000000000000000000000000000010 f
b00000000000000000000000000000000 ,
b00000000000000000000000000000010 -
#10000
1#
b00000000000000000000000000000010 +
b00000000000000000000000000000011 3
1>
r0.1 F
b00000000000000000000000000000010 $
b00000000000000000000000000000011 %
1(
r0.1 )
#15000
0#
0>
0(
#20000
1#
b00000000000000000000000000000011 +
b00000000000000000000000000000100 3
1>
r0.2 F
b00000000000000000000000000000011 $
b00000000000000000000000000000100 %
1(
r0.2 )
#25000
0#
0>
0(
#30000
1#
b00000000000000000000000000000100 +
b00000000000000000000000000000101 3
1>
r0.3 F
b00000000000000000000000000000100 $
b00000000000000000000000000000101 %
1(
r0.3 )
#35000
0#
0>
0(
#40000
1#
b00000000000000000000000000000101 +
b00000000000000000000000000000110 3
1>
r0.4 F
b00000000000000000000000000000101 $
b00000000000000000000000000000110 %
1(
r0.4 )
#45000
0#
0>
0(
#50000
1#
b00000000000000000000000000000110 +
b00000000000000000000000000000111 3
1>
r0.5 F
b00000000000000000000000000000110 $
b00000000000000000000000000000111 %
1(
r0.5 )
#55000
0#
0>
0(
#60000
1#
b00000000000000000000000000000111 +
b00000000000000000000000000001000 3
1>
r0.6 F
b00000000000000000000000000000111 $
b00000000000000000000000000001000 %
1(
r0.6 )
#65000
0#
0>
0(
#70000
1#
b00000000000000000000000000001000 +
b00000000000000000000000000001001 3
1>
r0.7 F
b00000000000000000000000000001000 $
b00000000000000000000000000001001 %
1(
r0.7 )
#75000
0#
0>
0(
#80000
1#
b00000000000000000000000000001001 +
b00000000000000000000000000001010 3
1>
r0.7999999999999999 F
b00000000000000000000000000001001 $
b00000000000000000000000000001010 %
1(
r0.7999999999999999 )
#85000
0#
0>
0(
#90000
1#
b00000000000000000000000000001010 +
b00000000000000000000000000001011 3
1>
r0.8999999999999999 F
b00000000000000000000000000001010 $
b00000000000000000000000000001011 %
1(
r0.8999999999999999 )
#95000
0#
0>
0(
#100000
1#
1>
b00000000000000000000000000001011 +
b00000000000000000000000000001100 3
r0.9999999999999999 F
b00000000000000000000000000001011 $
b00000000000000000000000000001100 %
1(
r0.9999999999999999 )

View File

@ -1,16 +1,14 @@
$version Generated by VerilatedVcd $end
$date Sat Mar 7 18:38:11 2020
$end
$timescale 1ps $end
$timescale 1ps $end
$scope module topa $end
$var wire 1 3 clk $end
$var wire 1 # clk $end
$scope module t $end
$var wire 32 + c_trace_on [31:0] $end
$var wire 1 3 clk $end
$var wire 32 # cyc [31:0] $end
$var wire 1 # clk $end
$var wire 32 $ cyc [31:0] $end
$var wire 32 % c_trace_on [31:0] $end
$scope module sub $end
$var wire 32 ; inside_sub_a [31:0] $end
$var wire 32 & inside_sub_a [31:0] $end
$upscope $end
$upscope $end
$upscope $end
@ -18,88 +16,67 @@ $enddefinitions $end
#10
b00000000000000000000000000000001 #
b00000000000000000000000000000000 +
13
b00000000000000000000000000000001 ;
#10
1#
b00000000000000000000000000000001 $
b00000000000000000000000000000000 %
b00000000000000000000000000000001 &
#15
#15
03
0#
#20
#20
b00000000000000000000000000000010 #
b00000000000000000000000000000011 +
13
1#
b00000000000000000000000000000010 $
b00000000000000000000000000000011 %
#25
#25
03
0#
#30
#30
b00000000000000000000000000000011 #
b00000000000000000000000000000100 +
13
1#
b00000000000000000000000000000011 $
b00000000000000000000000000000100 %
#35
#35
03
0#
#40
#40
b00000000000000000000000000000100 #
b00000000000000000000000000000101 +
13
1#
b00000000000000000000000000000100 $
b00000000000000000000000000000101 %
#45
#45
03
0#
#50
#50
b00000000000000000000000000000101 #
b00000000000000000000000000000110 +
13
1#
b00000000000000000000000000000101 $
b00000000000000000000000000000110 %
#55
#55
03
0#
#60
#60
b00000000000000000000000000000110 #
b00000000000000000000000000000111 +
13
1#
b00000000000000000000000000000110 $
b00000000000000000000000000000111 %
#65
#65
03
0#
#70
#70
b00000000000000000000000000000111 #
b00000000000000000000000000001000 +
13
1#
b00000000000000000000000000000111 $
b00000000000000000000000000001000 %
#75
#75
03
0#
#80
#80
b00000000000000000000000000001000 #
b00000000000000000000000000001001 +
13
1#
b00000000000000000000000000001000 $
b00000000000000000000000000001001 %
#85
#85
03
0#
#90
#90
b00000000000000000000000000001001 #
b00000000000000000000000000001010 +
13
1#
b00000000000000000000000000001001 $
b00000000000000000000000000001010 %
#95
#95
03
0#
#100
#100
b00000000000000000000000000001010 #
b00000000000000000000000000001011 +
13
1#
b00000000000000000000000000001010 $
b00000000000000000000000000001011 %
#105
#105
03
0#
#110
#110
13
b00000000000000000000000000001011 #
b00000000000000000000000000001100 +
1#
b00000000000000000000000000001011 $
b00000000000000000000000000001100 %

View File

@ -1,15 +1,13 @@
$version Generated by VerilatedVcd $end
$date Sun Mar 1 21:32:22 2020
$end
$timescale 1ps $end
$timescale 1ps $end
$scope module topa $end
$scope module t $end
$var wire 32 3 c_trace_on [31:0] $end
$var wire 1 # clk $end
$var wire 32 + cyc [31:0] $end
$var wire 1 # clk $end
$var wire 32 $ cyc [31:0] $end
$var wire 32 % c_trace_on [31:0] $end
$scope module sub $end
$var wire 32 ; inside_sub_a [31:0] $end
$var wire 32 & inside_sub_a [31:0] $end
$upscope $end
$upscope $end
$upscope $end
@ -18,64 +16,64 @@ $enddefinitions $end
#0
0#
b00000000000000000000000000000001 +
b00000000000000000000000000000000 3
b00000000000000000000000000000001 ;
b00000000000000000000000000000001 $
b00000000000000000000000000000000 %
b00000000000000000000000000000001 &
#10000
1#
b00000000000000000000000000000010 +
b00000000000000000000000000000011 3
b00000000000000000000000000000010 $
b00000000000000000000000000000011 %
#15000
0#
#20000
1#
b00000000000000000000000000000011 +
b00000000000000000000000000000100 3
b00000000000000000000000000000011 $
b00000000000000000000000000000100 %
#25000
0#
#30000
1#
b00000000000000000000000000000100 +
b00000000000000000000000000000101 3
b00000000000000000000000000000100 $
b00000000000000000000000000000101 %
#35000
0#
#40000
1#
b00000000000000000000000000000101 +
b00000000000000000000000000000110 3
b00000000000000000000000000000101 $
b00000000000000000000000000000110 %
#45000
0#
#50000
1#
b00000000000000000000000000000110 +
b00000000000000000000000000000111 3
b00000000000000000000000000000110 $
b00000000000000000000000000000111 %
#55000
0#
#60000
1#
b00000000000000000000000000000111 +
b00000000000000000000000000001000 3
b00000000000000000000000000000111 $
b00000000000000000000000000001000 %
#65000
0#
#70000
1#
b00000000000000000000000000001000 +
b00000000000000000000000000001001 3
b00000000000000000000000000001000 $
b00000000000000000000000000001001 %
#75000
0#
#80000
1#
b00000000000000000000000000001001 +
b00000000000000000000000000001010 3
b00000000000000000000000000001001 $
b00000000000000000000000000001010 %
#85000
0#
#90000
1#
b00000000000000000000000000001010 +
b00000000000000000000000000001011 3
b00000000000000000000000000001010 $
b00000000000000000000000000001011 %
#95000
0#
#100000
1#
b00000000000000000000000000001011 +
b00000000000000000000000000001100 3
b00000000000000000000000000001011 $
b00000000000000000000000000001100 %

View File

@ -1,26 +1,25 @@
$version Generated by VerilatedVcd $end
$date Thu Sep 22 13:02:07 2022 $end
$timescale 1ps $end
$scope module top $end
$var wire 1 & 9num $end
$var wire 1 ' bra[ket]slash/dash-colon:9backslash\done $end
$var wire 1 # clk $end
$var wire 1 % double__underscore $end
$var wire 1 $ escaped_normal $end
$var wire 1 # clk $end
$var wire 1 $ escaped_normal $end
$var wire 1 % double__underscore $end
$var wire 1 & 9num $end
$var wire 1 ' bra[ket]slash/dash-colon:9backslash\done $end
$scope module t $end
$var wire 1 $ 9num $end
$var wire 32 * a0.cyc [31:0] $end
$var wire 1 $ bra[ket]slash/dash-colon:9backslash\done $end
$var wire 1 $ check:alias $end
$var wire 1 ) check;alias $end
$var wire 1 $ check_alias $end
$var wire 1 # clk $end
$var wire 1 # clk $end
$var wire 32 ( cyc [31:0] $end
$var wire 1 $ double__underscore $end
$var wire 1 $ escaped_normal $end
$var wire 1 $ escaped_normal $end
$var wire 1 $ double__underscore $end
$var wire 1 $ 9num $end
$var wire 1 $ bra[ket]slash/dash-colon:9backslash\done $end
$var wire 1 $ wire $end
$var wire 1 $ check_alias $end
$var wire 1 $ check:alias $end
$var wire 1 ) check;alias $end
$var wire 32 * a0.cyc [31:0] $end
$var wire 32 * other.cyc [31:0] $end
$var wire 1 $ wire $end
$scope module a0 $end
$var wire 32 ( cyc [31:0] $end
$upscope $end

View File

@ -1,16 +1,14 @@
$version Generated by VerilatedVcd $end
$date Tue Jul 24 18:46:01 2012
$end
$timescale 1ps $end
$scope module top $end
$var wire 1 # clk $end
$var wire 1 $ reset_l $end
$var wire 1 # clk $end
$var wire 1 $ reset_l $end
$scope module t $end
$var wire 1 # clk $end
$var wire 1 % inmod $end
$var wire 1 # clk $end
$var wire 1 $ reset_l $end
$var wire 1 % inmod $end
$var wire 32 & rawmod [31:0] $end
$var wire 1 $ reset_l $end
$scope module genblk1 $end
$var wire 32 ' ingen [31:0] $end
$upscope $end

View File

@ -1,21 +1,20 @@
$version Generated by VerilatedVcd $end
$date Sat Mar 6 21:09:45 2021 $end
$timescale 1ps $end
$scope module top1 $end
$var wire 1 # clk $end
$var wire 32 ' counter [31:0] $end
$var wire 1 ( done_o $end
$var wire 1 $ rst $end
$var wire 1 & stop $end
$var wire 1 # clk $end
$var wire 1 $ rst $end
$var wire 32 % trace_number [31:0] $end
$var wire 1 & stop $end
$var wire 32 ' counter [31:0] $end
$var wire 1 ( done_o $end
$scope module top $end
$var wire 1 # clk $end
$var wire 32 ' counter [31:0] $end
$var wire 1 ( done_o $end
$var wire 1 $ rst $end
$var wire 1 & stop $end
$var wire 1 # clk $end
$var wire 1 $ rst $end
$var wire 32 % trace_number [31:0] $end
$var wire 1 & stop $end
$var wire 32 ' counter [31:0] $end
$var wire 1 ( done_o $end
$upscope $end
$upscope $end
$enddefinitions $end

View File

@ -1,21 +1,20 @@
$version Generated by VerilatedVcd $end
$date Sat Mar 6 21:09:47 2021 $end
$timescale 1ps $end
$scope module top0 $end
$var wire 1 # clk $end
$var wire 32 ' counter [31:0] $end
$var wire 1 ( done_o $end
$var wire 1 $ rst $end
$var wire 1 & stop $end
$var wire 1 # clk $end
$var wire 1 $ rst $end
$var wire 32 % trace_number [31:0] $end
$var wire 1 & stop $end
$var wire 32 ' counter [31:0] $end
$var wire 1 ( done_o $end
$scope module top $end
$var wire 1 # clk $end
$var wire 32 ' counter [31:0] $end
$var wire 1 ( done_o $end
$var wire 1 $ rst $end
$var wire 1 & stop $end
$var wire 1 # clk $end
$var wire 1 $ rst $end
$var wire 32 % trace_number [31:0] $end
$var wire 1 & stop $end
$var wire 32 ' counter [31:0] $end
$var wire 1 ( done_o $end
$upscope $end
$upscope $end
$enddefinitions $end