This commit is contained in:
parent
74430611a3
commit
8895f96e41
|
|
@ -121,6 +121,8 @@ class TraceTraceVertex final : public V3GraphVertex {
|
|||
AstTraceDecl* const m_nodep; // TRACEINC this represents
|
||||
// nullptr, or other vertex with the real code() that duplicates this one
|
||||
TraceTraceVertex* m_duplicatep = nullptr;
|
||||
// When aliasing to a dtype parent, offset of the member within the dtype
|
||||
uint32_t m_dtypeAliasOffset = 0;
|
||||
|
||||
public:
|
||||
TraceTraceVertex(V3Graph* graphp, AstTraceDecl* nodep)
|
||||
|
|
@ -137,6 +139,9 @@ public:
|
|||
UASSERT_OBJ(!duplicatep(), nodep(), "Assigning duplicatep() to already duplicated node");
|
||||
m_duplicatep = dupp;
|
||||
}
|
||||
void redirectDuplicatep(TraceTraceVertex* dupp) { m_duplicatep = dupp; }
|
||||
uint32_t dtypeAliasOffset() const { return m_dtypeAliasOffset; }
|
||||
void dtypeAliasOffset(uint32_t offset) { m_dtypeAliasOffset = offset; }
|
||||
};
|
||||
|
||||
class TraceVarVertex final : public V3GraphVertex {
|
||||
|
|
@ -217,27 +222,70 @@ class TraceVisitor final : public VNVisitor {
|
|||
UINFO(9, "Finding duplicates");
|
||||
// Note uses user4
|
||||
V3DupFinder dupFinder; // Duplicate code detection
|
||||
|
||||
// Compute member offsets within dtype instances incrementally.
|
||||
// For each dtype member TraceDecl, stores its code offset within the
|
||||
// dtype parent's code range.
|
||||
std::unordered_map<const AstTraceDecl*, uint32_t> memberOffsets;
|
||||
std::unordered_map<const AstTraceDecl*, uint32_t> runningOffset;
|
||||
|
||||
// For fixup pass: track dups redirected to dtype parents, so we can
|
||||
// fix them if the parent's user2 is later set during the loop.
|
||||
// Maps dup vertex -> original canonical member vertex.
|
||||
std::vector<std::pair<TraceTraceVertex*, TraceTraceVertex*>> dtypeParentRedirects;
|
||||
|
||||
// Hash all of the traced values and find if there are any duplicates
|
||||
for (V3GraphVertex& vtx : m_graph.vertices()) {
|
||||
if (TraceTraceVertex* const vvertexp = vtx.cast<TraceTraceVertex>()) {
|
||||
AstTraceDecl* const nodep = vvertexp->nodep();
|
||||
if (nodep->dtypeCallp()) continue;
|
||||
|
||||
if (nodep->dtypeDeclp()) {
|
||||
uint32_t& offset = runningOffset[nodep->dtypeDeclp()];
|
||||
memberOffsets[nodep] = offset;
|
||||
offset += nodep->codeInc();
|
||||
}
|
||||
|
||||
UASSERT_OBJ(!vvertexp->duplicatep(), nodep, "Should not be a duplicate");
|
||||
const auto dupit = dupFinder.findDuplicate(nodep);
|
||||
if (dupit == dupFinder.end()) {
|
||||
dupFinder.insert(nodep);
|
||||
} else {
|
||||
const AstTraceDecl* const dupDeclp = VN_AS(dupit->second, TraceDecl);
|
||||
AstTraceDecl* const dupDeclp = VN_AS(dupit->second, TraceDecl);
|
||||
UASSERT_OBJ(dupDeclp, nodep, "Trace duplicate of wrong type");
|
||||
TraceTraceVertex* const dupvertexp
|
||||
= dupDeclp->user1u().toGraphVertex()->cast<TraceTraceVertex>();
|
||||
UINFO(8, " Orig " << nodep);
|
||||
UINFO(8, " dup " << dupDeclp);
|
||||
// Mark the hashed node as the original and our
|
||||
// iterating node as duplicated
|
||||
vvertexp->duplicatep(dupvertexp);
|
||||
UINFO(8, " Orig " << dupDeclp << endl);
|
||||
UINFO(8, " dup " << nodep << endl);
|
||||
|
||||
if (dupDeclp->dtypeDeclp() && !dupDeclp->dtypeDeclp()->user2()) {
|
||||
AstTraceDecl* const dtypeParentp = dupDeclp->dtypeDeclp();
|
||||
TraceTraceVertex* const dtypeVtxp
|
||||
= dtypeParentp->user1u().toGraphVertex()->cast<TraceTraceVertex>();
|
||||
const auto it2 = memberOffsets.find(dupDeclp);
|
||||
UASSERT_OBJ(it2 != memberOffsets.end(), dupDeclp,
|
||||
"Member offset not precomputed");
|
||||
vvertexp->duplicatep(dtypeVtxp);
|
||||
vvertexp->dtypeAliasOffset(it2->second);
|
||||
dtypeParentRedirects.emplace_back(vvertexp, dupvertexp);
|
||||
} else {
|
||||
vvertexp->duplicatep(dupvertexp);
|
||||
}
|
||||
if (nodep->dtypeDeclp()) nodep->dtypeDeclp()->user2(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (const auto& pair : dtypeParentRedirects) {
|
||||
TraceTraceVertex* const dupVtxp = pair.first;
|
||||
TraceTraceVertex* const memberVtxp = pair.second;
|
||||
const AstTraceDecl* const parentDeclp = dupVtxp->duplicatep()->nodep();
|
||||
if (parentDeclp->user2()) {
|
||||
dupVtxp->redirectDuplicatep(memberVtxp);
|
||||
dupVtxp->dtypeAliasOffset(0);
|
||||
}
|
||||
}
|
||||
|
||||
if (dumpLevel() || debug() >= 9)
|
||||
dupFinder.dumpFile(v3Global.debugFilename("trace") + ".hash", false);
|
||||
}
|
||||
|
|
@ -689,18 +737,12 @@ class TraceVisitor final : public VNVisitor {
|
|||
uint32_t subFuncNum = 0;
|
||||
AstCFunc* subFuncp = nullptr;
|
||||
int subStmts = 0;
|
||||
std::vector<const TraceTraceVertex*> duplicates;
|
||||
for (auto it = traces.cbegin(); it != traces.end(); ++it) {
|
||||
const TraceTraceVertex* const vtxp = it->second;
|
||||
AstTraceDecl* const declp = vtxp->nodep();
|
||||
if (const TraceTraceVertex* const canonVtxp = vtxp->duplicatep()) {
|
||||
// This is a duplicate trace node. We will assign the signal
|
||||
// number to the canonical node, and emit this as an alias, so
|
||||
// no need to create a TraceInc node.
|
||||
const AstTraceDecl* const canonDeclp = canonVtxp->nodep();
|
||||
UASSERT_OBJ(!canonVtxp->duplicatep(), canonDeclp, "Canonical node is a duplicate");
|
||||
UASSERT_OBJ(canonDeclp->codeAssigned(), canonDeclp,
|
||||
"Canonical node should have code assigned already");
|
||||
declp->code(canonDeclp->code());
|
||||
if (vtxp->duplicatep()) {
|
||||
duplicates.push_back(vtxp);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
@ -739,6 +781,17 @@ class TraceVisitor final : public VNVisitor {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Assign codes to duplicate nodes from their canonicals
|
||||
for (const TraceTraceVertex* const vtxp : duplicates) {
|
||||
AstTraceDecl* const declp = vtxp->nodep();
|
||||
const TraceTraceVertex* const canonVtxp = vtxp->duplicatep();
|
||||
const AstTraceDecl* const canonDeclp = canonVtxp->nodep();
|
||||
UASSERT_OBJ(!canonVtxp->duplicatep(), canonDeclp, "Canonical node is a duplicate");
|
||||
UASSERT_OBJ(canonDeclp->codeAssigned(), canonDeclp,
|
||||
"Canonical node should have code assigned already");
|
||||
declp->code(canonDeclp->code() + vtxp->dtypeAliasOffset());
|
||||
}
|
||||
}
|
||||
|
||||
DtypeFuncs createNonConstDtypeTraceFunctions(const AstTraceDecl* declp) {
|
||||
|
|
@ -934,10 +987,10 @@ class TraceVisitor final : public VNVisitor {
|
|||
}
|
||||
|
||||
void createTraceFunctions() {
|
||||
graphDtypePrune();
|
||||
|
||||
// Detect and remove duplicate values
|
||||
detectDuplicates();
|
||||
|
||||
graphDtypePrune();
|
||||
m_graph.removeRedundantEdgesMax(&V3GraphEdge::followAlwaysTrue);
|
||||
|
||||
// Simplify & optimize the graph
|
||||
|
|
|
|||
|
|
@ -444,6 +444,166 @@ class TraceDeclVisitor final : public VNVisitor {
|
|||
});
|
||||
}
|
||||
|
||||
bool isBasicIO() { return m_traVscp->varp()->isVLIO(); }
|
||||
void newDeclSubFunc() {
|
||||
FileLine* const flp = m_dtypeFuncp->fileline();
|
||||
AstCFunc* const subFuncp = newCFunc(flp, m_dtypeNames.get("trace_init_dtype_sub__"));
|
||||
subFuncp->argTypes(subFuncp->argTypes() + m_dtypeArgs);
|
||||
AstCCall* const subCallp = new AstCCall{flp, subFuncp};
|
||||
subCallp->dtypeSetVoid();
|
||||
subCallp->argTypes("tracep, name, fidx, c, direction");
|
||||
m_dtypeFuncp->addStmtsp(subCallp->makeStmt());
|
||||
m_dtypeSubFuncp = subFuncp;
|
||||
m_subFuncSize = 0;
|
||||
}
|
||||
void newDeclFunc(AstNodeDType* nodep) {
|
||||
AstNodeDType* const skipTypep = nodep->skipRefp();
|
||||
// offset and direction args added in EmitCImp
|
||||
std::string callArgs{"tracep, \"" + VIdProtect::protect(m_traName) + "\""};
|
||||
VL_RESTORER(m_traName);
|
||||
FileLine* const flp = skipTypep->fileline();
|
||||
|
||||
auto pair = m_dtypeFuncs.emplace(skipTypep, nullptr);
|
||||
AstCFunc** funcpp = &pair.first->second;
|
||||
if (pair.second) {
|
||||
*funcpp = newCFunc(flp, m_dtypeNames.get("trace_init_dtype__"));
|
||||
(*funcpp)->argTypes((*funcpp)->argTypes() + m_dtypeArgs);
|
||||
(*funcpp)->user2p(m_traVscp);
|
||||
}
|
||||
|
||||
AstCCall* const callp = new AstCCall{flp, *funcpp};
|
||||
callp->dtypeSetVoid();
|
||||
callp->argTypes(callArgs);
|
||||
m_dtypeDeclp = addTraceDecl(VNumRange{}, skipTypep->width(), callp);
|
||||
addToSubFunc(callp->makeStmt());
|
||||
|
||||
if (pair.second) {
|
||||
VL_RESTORER(m_offset);
|
||||
m_offset = 0;
|
||||
|
||||
VL_RESTORER(m_dtypeFuncp);
|
||||
VL_RESTORER(m_dtypeSubFuncp);
|
||||
VL_RESTORER(m_subFuncSize);
|
||||
m_dtypeFuncp = *funcpp;
|
||||
newDeclSubFunc();
|
||||
if (AstStructDType* const dtypep = VN_CAST(skipTypep, StructDType)) {
|
||||
declStruct(dtypep, true);
|
||||
} else if (AstUnpackArrayDType* const dtypep = VN_CAST(skipTypep, UnpackArrayDType)) {
|
||||
declUnpackedArray(dtypep, true);
|
||||
} else if (AstPackArrayDType* const dtypep = VN_CAST(skipTypep, PackArrayDType)) {
|
||||
declPackedArray(dtypep, true);
|
||||
} else {
|
||||
UASSERT_OBJ(false, skipTypep, "Creating a trace function for an unexpected type");
|
||||
}
|
||||
m_dtypeFuncp->user1(m_offset);
|
||||
}
|
||||
|
||||
m_dtypeDeclp->codeInc((*funcpp)->user1());
|
||||
m_offset += m_dtypeDeclp->codeInc();
|
||||
}
|
||||
void declUnpackedArray(AstUnpackArrayDType* const nodep, bool newFunc) {
|
||||
string prefixName(newFunc ? "name" : m_traName);
|
||||
|
||||
VL_RESTORER(m_traName);
|
||||
FileLine* const flp = nodep->fileline();
|
||||
|
||||
addToSubFunc(new AstTracePushPrefix{flp, prefixName, VTracePrefixType::ARRAY_UNPACKED,
|
||||
nodep->left(), nodep->right(), !newFunc});
|
||||
|
||||
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 {
|
||||
m_traName = "";
|
||||
addTraceDecl(nodep->declRange(), 0);
|
||||
}
|
||||
} else {
|
||||
AstNodeDType* const subtypep = nodep->subDTypep()->skipRefToEnump();
|
||||
// Always iterate left index to right index
|
||||
const int inc = nodep->rangep()->ascending() ? 1 : -1;
|
||||
for (int i = nodep->left(); i != nodep->right() + inc; i += inc) {
|
||||
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 declPackedArray(AstPackArrayDType* const nodep, bool newFunc) {
|
||||
string prefixName(newFunc ? "name" : m_traName);
|
||||
AstNodeDType* const subtypep = nodep->subDTypep()->skipRefToEnump();
|
||||
|
||||
VL_RESTORER(m_traName);
|
||||
FileLine* const flp = nodep->fileline();
|
||||
|
||||
addToSubFunc(new AstTracePushPrefix{flp, prefixName, VTracePrefixType::ARRAY_PACKED,
|
||||
nodep->left(), nodep->right(), !newFunc});
|
||||
|
||||
// Always iterate left index to right index
|
||||
const int inc = nodep->rangep()->ascending() ? 1 : -1;
|
||||
for (int i = nodep->left(); i != nodep->right() + inc; i += inc) {
|
||||
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 declStruct(AstStructDType* const nodep, bool newFunc) {
|
||||
FileLine* const flp = nodep->fileline();
|
||||
string prefixName(newFunc ? "name" : m_traName);
|
||||
int nMembers = 0;
|
||||
for (AstNode* mp = nodep->membersp(); mp; mp = mp->nextp()) ++nMembers;
|
||||
|
||||
if (!nodep->packed()) {
|
||||
addToSubFunc(new AstTracePushPrefix{flp, prefixName, //
|
||||
VTracePrefixType::STRUCT_UNPACKED, nMembers, 0,
|
||||
!newFunc});
|
||||
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, prefixName, //
|
||||
VTracePrefixType::STRUCT_PACKED, nMembers, 0,
|
||||
!newFunc});
|
||||
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});
|
||||
}
|
||||
}
|
||||
|
||||
// VISITORS
|
||||
void visit(AstScope* nodep) override {
|
||||
UINFO(9, "visit " << nodep);
|
||||
|
|
@ -610,100 +770,6 @@ class TraceDeclVisitor final : public VNVisitor {
|
|||
addToSubFunc(stmtp);
|
||||
m_ifaceRefInitPlaceholders.emplace_back(m_traVscp, stmtp);
|
||||
}
|
||||
void newDeclSubFunc() {
|
||||
FileLine* const flp = m_dtypeFuncp->fileline();
|
||||
AstCFunc* const subFuncp = newCFunc(flp, m_dtypeNames.get("trace_init_dtype_sub__"));
|
||||
subFuncp->argTypes(subFuncp->argTypes() + m_dtypeArgs);
|
||||
AstCCall* const subCallp = new AstCCall{flp, subFuncp};
|
||||
subCallp->dtypeSetVoid();
|
||||
subCallp->argTypes("tracep, name, fidx, c, direction");
|
||||
m_dtypeFuncp->addStmtsp(subCallp->makeStmt());
|
||||
m_dtypeSubFuncp = subFuncp;
|
||||
m_subFuncSize = 0;
|
||||
}
|
||||
void newDeclFunc(AstNodeDType* nodep) {
|
||||
AstNodeDType* const skipTypep = nodep->skipRefp();
|
||||
// offset and direction args added in EmitCImp
|
||||
std::string callArgs{"tracep, \"" + VIdProtect::protect(m_traName) + "\""};
|
||||
VL_RESTORER(m_traName);
|
||||
FileLine* const flp = skipTypep->fileline();
|
||||
|
||||
auto pair = m_dtypeFuncs.emplace(skipTypep, nullptr);
|
||||
AstCFunc** funcpp = &pair.first->second;
|
||||
if (pair.second) {
|
||||
*funcpp = newCFunc(flp, m_dtypeNames.get("trace_init_dtype__"));
|
||||
(*funcpp)->argTypes((*funcpp)->argTypes() + m_dtypeArgs);
|
||||
(*funcpp)->user2p(m_traVscp);
|
||||
}
|
||||
|
||||
AstCCall* const callp = new AstCCall{flp, *funcpp};
|
||||
callp->dtypeSetVoid();
|
||||
callp->argTypes(callArgs);
|
||||
m_dtypeDeclp = addTraceDecl(VNumRange{}, skipTypep->width(), callp);
|
||||
addToSubFunc(callp->makeStmt());
|
||||
|
||||
if (pair.second) {
|
||||
VL_RESTORER(m_offset);
|
||||
m_offset = 0;
|
||||
|
||||
VL_RESTORER(m_dtypeFuncp);
|
||||
VL_RESTORER(m_dtypeSubFuncp);
|
||||
VL_RESTORER(m_subFuncSize);
|
||||
m_dtypeFuncp = *funcpp;
|
||||
newDeclSubFunc();
|
||||
if (AstStructDType* const dtypep = VN_CAST(skipTypep, StructDType)) {
|
||||
declStruct(dtypep, true);
|
||||
} else if (AstUnpackArrayDType* const dtypep = VN_CAST(skipTypep, UnpackArrayDType)) {
|
||||
declUnpackedArray(dtypep, true);
|
||||
} else if (AstPackArrayDType* const dtypep = VN_CAST(skipTypep, PackArrayDType)) {
|
||||
declPackedArray(dtypep, true);
|
||||
} else {
|
||||
UASSERT_OBJ(false, skipTypep, "Creating a trace function for an unexpected type");
|
||||
}
|
||||
m_dtypeFuncp->user1(m_offset);
|
||||
}
|
||||
|
||||
m_dtypeDeclp->codeInc((*funcpp)->user1());
|
||||
m_offset += m_dtypeDeclp->codeInc();
|
||||
}
|
||||
void declUnpackedArray(AstUnpackArrayDType* const nodep, bool newFunc) {
|
||||
string prefixName(newFunc ? "name" : m_traName);
|
||||
|
||||
VL_RESTORER(m_traName);
|
||||
FileLine* const flp = nodep->fileline();
|
||||
|
||||
addToSubFunc(new AstTracePushPrefix{flp, prefixName, VTracePrefixType::ARRAY_UNPACKED,
|
||||
nodep->left(), nodep->right(), !newFunc});
|
||||
|
||||
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 {
|
||||
m_traName = "";
|
||||
addTraceDecl(nodep->declRange(), 0);
|
||||
}
|
||||
} else {
|
||||
AstNodeDType* const subtypep = nodep->subDTypep()->skipRefToEnump();
|
||||
// Always iterate left index to right index
|
||||
const int inc = nodep->rangep()->ascending() ? 1 : -1;
|
||||
for (int i = nodep->left(); i != nodep->right() + inc; i += inc) {
|
||||
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});
|
||||
}
|
||||
bool isBasicIO() { return m_traVscp->varp()->isVLIO(); }
|
||||
void visit(AstUnpackArrayDType* nodep) override {
|
||||
// Note more specific dtypes above
|
||||
if (!m_traVscp) return;
|
||||
|
|
@ -724,31 +790,6 @@ class TraceDeclVisitor final : public VNVisitor {
|
|||
}
|
||||
declUnpackedArray(nodep, false);
|
||||
}
|
||||
void declPackedArray(AstPackArrayDType* const nodep, bool newFunc) {
|
||||
string prefixName(newFunc ? "name" : m_traName);
|
||||
AstNodeDType* const subtypep = nodep->subDTypep()->skipRefToEnump();
|
||||
|
||||
VL_RESTORER(m_traName);
|
||||
FileLine* const flp = nodep->fileline();
|
||||
|
||||
addToSubFunc(new AstTracePushPrefix{flp, prefixName, VTracePrefixType::ARRAY_PACKED,
|
||||
nodep->left(), nodep->right(), !newFunc});
|
||||
|
||||
// Always iterate left index to right index
|
||||
const int inc = nodep->rangep()->ascending() ? 1 : -1;
|
||||
for (int i = nodep->left(); i != nodep->right() + inc; i += inc) {
|
||||
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(AstPackArrayDType* nodep) override {
|
||||
if (!m_traVscp) return;
|
||||
|
||||
|
|
@ -780,46 +821,6 @@ class TraceDeclVisitor final : public VNVisitor {
|
|||
}
|
||||
declPackedArray(nodep, false);
|
||||
}
|
||||
void declStruct(AstStructDType* const nodep, bool newFunc) {
|
||||
FileLine* const flp = nodep->fileline();
|
||||
string prefixName(newFunc ? "name" : m_traName);
|
||||
int nMembers = 0;
|
||||
for (AstNode* mp = nodep->membersp(); mp; mp = mp->nextp()) ++nMembers;
|
||||
|
||||
if (!nodep->packed()) {
|
||||
addToSubFunc(new AstTracePushPrefix{flp, prefixName, //
|
||||
VTracePrefixType::STRUCT_UNPACKED, nMembers, 0,
|
||||
!newFunc});
|
||||
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, prefixName, //
|
||||
VTracePrefixType::STRUCT_PACKED, nMembers, 0,
|
||||
!newFunc});
|
||||
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(AstStructDType* nodep) override {
|
||||
if (!m_traVscp) return;
|
||||
|
||||
|
|
|
|||
|
|
@ -2634,49 +2634,86 @@ class VlTest:
|
|||
case _:
|
||||
self.error("Unknown trace file format " + traceFn)
|
||||
|
||||
def _vcd_read(self, filename: str) -> dict:
|
||||
data = {}
|
||||
@staticmethod
|
||||
def _vcd_parse_header(filename: str,
|
||||
root_scope: 'str | None' = None) -> 'tuple[dict, dict]':
|
||||
"""Parse VCD header into hierarchy data and signal-code mapping.
|
||||
|
||||
Returns (hier_data, var_codes) where:
|
||||
hier_data: dict used by _vcd_read for hierarchy comparison
|
||||
(scope paths -> scope description, var paths -> $var prefix,
|
||||
attr paths -> $attrbegin text)
|
||||
var_codes: dict mapping 'scope.signal' -> VCD code identifier
|
||||
"""
|
||||
hier_data: dict = {}
|
||||
var_codes: dict = {}
|
||||
hier_stack = [root_scope] if root_scope else []
|
||||
attr: list = []
|
||||
with open(filename, 'r', encoding='latin-1') as fh:
|
||||
hier_stack = ["TOP"]
|
||||
var = []
|
||||
attr = []
|
||||
for line in fh:
|
||||
match1 = re.search(r'\$scope (\S*)\s+(\S+)', line)
|
||||
match2 = re.search(r'(\$var \S+\s+\d+\s+)\S+\s+(.+)\s+\$end', line)
|
||||
match3 = re.search(r'(\$attrbegin .* \$end)', line)
|
||||
line = line.rstrip()
|
||||
# print("VR"+ ' '*len(hier_stack) +" L " + line)
|
||||
if match1: # $scope
|
||||
name = match1.group(2)
|
||||
# print("VR"+ ' '*len(hier_stack) +" scope " + line)
|
||||
hier_stack += [name]
|
||||
m_scope = re.search(r'\$scope\s+(\S*)\s+(\S+)', line)
|
||||
m_var = re.search(r'(\$var\s+\S+\s+\d+\s+)(\S+)\s+(.+)\s+\$end', line)
|
||||
m_attr = re.search(r'(\$attrbegin .* \$end)', line)
|
||||
if m_scope:
|
||||
scope_type = m_scope.group(1)
|
||||
name = m_scope.group(2)
|
||||
hier_stack.append(name)
|
||||
scope = '.'.join(hier_stack)
|
||||
data[scope] = match1.group(1) + " " + name
|
||||
hier_data[scope] = scope_type + " " + name
|
||||
if attr:
|
||||
data[scope + "#"] = " ".join(attr)
|
||||
hier_data[scope + "#"] = " ".join(attr)
|
||||
attr = []
|
||||
elif match2: # $var
|
||||
# print("VR"+ ' '*len(hier_stack) +" var " + line)
|
||||
elif m_var:
|
||||
scope = '.'.join(hier_stack)
|
||||
var = match2.group(2)
|
||||
data[scope + "." + var] = match2.group(1)
|
||||
decl_prefix = m_var.group(1)
|
||||
code = m_var.group(2)
|
||||
var_name = m_var.group(3)
|
||||
hier_data[scope + "." + var_name] = decl_prefix
|
||||
if attr:
|
||||
data[scope + "." + var + "#"] = " ".join(attr)
|
||||
hier_data[scope + "." + var_name + "#"] = " ".join(attr)
|
||||
attr = []
|
||||
elif match3: # $attrbegin
|
||||
# print("VR"+ ' '*len(hier_stack) +" attr " + line)
|
||||
attr.append(match3.group(1))
|
||||
bare_name = var_name.split()[0]
|
||||
var_codes[scope + "." + bare_name] = code
|
||||
elif m_attr:
|
||||
attr.append(m_attr.group(1))
|
||||
elif re.search(r'\$enddefinitions', line):
|
||||
break
|
||||
n = len(re.findall(r'\$upscope', line))
|
||||
if n:
|
||||
for i in range(0, n): # pylint: disable=unused-variable
|
||||
# print("VR"+ ' '*len(hier_stack) +" upscope " + line)
|
||||
for _i in range(0, n):
|
||||
hier_stack.pop()
|
||||
if attr:
|
||||
self.error(f"Unhandled attribute: {attr}")
|
||||
return hier_data, var_codes
|
||||
|
||||
def _vcd_read(self, filename: str) -> dict:
|
||||
data, _ = self._vcd_parse_header(filename, root_scope="TOP")
|
||||
return data
|
||||
|
||||
def vcd_extract_codes(self, filename: str) -> dict:
|
||||
_, codes = self._vcd_parse_header(filename)
|
||||
return codes
|
||||
|
||||
def vcd_check_aliased(self, codes: dict, sig_a: str, sig_b: str) -> None:
|
||||
code_a = codes.get(sig_a)
|
||||
code_b = codes.get(sig_b)
|
||||
if code_a is None:
|
||||
self.error(f"Signal '{sig_a}' not found in VCD")
|
||||
if code_b is None:
|
||||
self.error(f"Signal '{sig_b}' not found in VCD")
|
||||
if code_a != code_b:
|
||||
self.error(f"Expected '{sig_a}' (code {code_a}) to alias "
|
||||
f"'{sig_b}' (code {code_b})")
|
||||
|
||||
def vcd_check_not_aliased(self, codes: dict, sig_a: str, sig_b: str) -> None:
|
||||
code_a = codes.get(sig_a)
|
||||
code_b = codes.get(sig_b)
|
||||
if code_a is None:
|
||||
self.error(f"Signal '{sig_a}' not found in VCD")
|
||||
if code_b is None:
|
||||
self.error(f"Signal '{sig_b}' not found in VCD")
|
||||
if code_a == code_b:
|
||||
self.error(f"Expected '{sig_a}' and '{sig_b}' to have different codes, "
|
||||
f"both have code {code_a}")
|
||||
|
||||
def inline_checks(self) -> None:
|
||||
covfn = self.coverage_filename
|
||||
contents = self.file_contents(covfn)
|
||||
|
|
|
|||
|
|
@ -38,6 +38,7 @@ module t (
|
|||
typedef strp_t arru_strp_t[4:3];
|
||||
|
||||
strp_t v_strp;
|
||||
strp_t v_strp2;
|
||||
strp_strp_t v_strp_strp;
|
||||
unip_strp_t v_unip_strp;
|
||||
arrp_t v_arrp;
|
||||
|
|
@ -98,6 +99,7 @@ module t (
|
|||
always @(posedge clk) begin
|
||||
cyc <= cyc + 1;
|
||||
v_strp <= ~v_strp;
|
||||
v_strp2 <= ~v_strp2;
|
||||
v_strp_strp <= ~v_strp_strp;
|
||||
v_unip_strp <= ~v_unip_strp;
|
||||
v_arrp_strp <= ~v_arrp_strp;
|
||||
|
|
|
|||
|
|
@ -1,105 +0,0 @@
|
|||
$version Generated by VerilatedVcd $end
|
||||
$timescale 1ps $end
|
||||
$scope module top $end
|
||||
$var wire 1 . clk $end
|
||||
$var wire 1 / clk2 $end
|
||||
$scope module $unit $end
|
||||
$var wire 1 2 global_bit $end
|
||||
$upscope $end
|
||||
$scope module t $end
|
||||
$var wire 1 . clk $end
|
||||
$var wire 1 / clk2 $end
|
||||
$var wire 32 0 cyc [31:0] $end
|
||||
$scope module v_strp $end
|
||||
$var wire 1 1 b1 $end
|
||||
$var wire 1 " b0 $end
|
||||
$upscope $end
|
||||
$scope module v_strp2 $end
|
||||
$var wire 1 # b1 $end
|
||||
$var wire 1 $ b0 $end
|
||||
$upscope $end
|
||||
$var wire 1 % foo $end
|
||||
$var wire 8 & unpacked_array[-7] [7:0] $end
|
||||
$var wire 8 ' unpacked_array[-6] [7:0] $end
|
||||
$var wire 8 ( unpacked_array[-5] [7:0] $end
|
||||
$var wire 8 ) unpacked_array[-4] [7:0] $end
|
||||
$var wire 8 * unpacked_array[-3] [7:0] $end
|
||||
$var wire 8 + unpacked_array[-2] [7:0] $end
|
||||
$var wire 8 , unpacked_array[-1] [7:0] $end
|
||||
$var wire 8 - unpacked_array[0] [7:0] $end
|
||||
$upscope $end
|
||||
$upscope $end
|
||||
$enddefinitions $end
|
||||
|
||||
|
||||
#0
|
||||
0"
|
||||
0#
|
||||
0$
|
||||
0%
|
||||
b00000000 &
|
||||
b00000000 '
|
||||
b00000000 (
|
||||
b00000000 )
|
||||
b00000000 *
|
||||
b00000000 +
|
||||
b00000000 ,
|
||||
b00000000 -
|
||||
0.
|
||||
0/
|
||||
b00000000000000000000000000000000 0
|
||||
01
|
||||
02
|
||||
#10
|
||||
1#
|
||||
1$
|
||||
1%
|
||||
1.
|
||||
b00000000000000000000000000000001 0
|
||||
#15
|
||||
0.
|
||||
#20
|
||||
1"
|
||||
0#
|
||||
0$
|
||||
0%
|
||||
1.
|
||||
b00000000000000000000000000000010 0
|
||||
#25
|
||||
0.
|
||||
#30
|
||||
0"
|
||||
1#
|
||||
1$
|
||||
1%
|
||||
b00000001 -
|
||||
1.
|
||||
b00000000000000000000000000000011 0
|
||||
#35
|
||||
0.
|
||||
#40
|
||||
1"
|
||||
0#
|
||||
0$
|
||||
0%
|
||||
1.
|
||||
b00000000000000000000000000000100 0
|
||||
#45
|
||||
0.
|
||||
#50
|
||||
0"
|
||||
1#
|
||||
1$
|
||||
1%
|
||||
b00000010 -
|
||||
1.
|
||||
b00000000000000000000000000000101 0
|
||||
#55
|
||||
0.
|
||||
#60
|
||||
1"
|
||||
0#
|
||||
0$
|
||||
0%
|
||||
1.
|
||||
b00000000000000000000000000000110 0
|
||||
|
|
@ -1,41 +0,0 @@
|
|||
// DESCRIPTION: Verilator: Verilog Test module
|
||||
//
|
||||
// This file ONLY is placed under the Creative Commons Public Domain.
|
||||
// SPDX-FileCopyrightText: 2026 Wilson Snyder
|
||||
// SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
bit global_bit;
|
||||
|
||||
module t (clk, clk2);
|
||||
input clk;
|
||||
input clk2;
|
||||
integer cyc = 0;
|
||||
|
||||
typedef struct packed {
|
||||
bit b1;
|
||||
bit b0;
|
||||
} strp_t;
|
||||
|
||||
strp_t v_strp, v_strp2;
|
||||
logic foo;
|
||||
|
||||
logic [7:0] unpacked_array[-7:0];
|
||||
|
||||
always @ (posedge clk) begin
|
||||
cyc <= cyc + 1;
|
||||
foo <= ~foo;
|
||||
v_strp.b0 <= cyc[0];
|
||||
v_strp2 <= ~v_strp2;
|
||||
unpacked_array[0] = cyc[8:1];
|
||||
if (cyc == 5) begin
|
||||
$write("*-* All Finished *-*\n");
|
||||
$finish;
|
||||
end
|
||||
end
|
||||
|
||||
always @(posedge clk2) begin
|
||||
v_strp.b1 <= cyc[1];
|
||||
for (int i = -1; i > -8; i--)
|
||||
unpacked_array[i] = cyc[7:0];
|
||||
end
|
||||
endmodule
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
$date
|
||||
Sat Mar 14 09:16:56 2026
|
||||
Tue Mar 31 17:14:29 2026
|
||||
|
||||
$end
|
||||
$version
|
||||
|
|
@ -19,106 +19,108 @@ $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 2 % v_strp2 [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
|
||||
$attrbegin array unpacked bounds 8589934593 $end
|
||||
$scope sv_array v_arru $end
|
||||
$var bit 1 * v_arru[2] $end
|
||||
$var bit 1 + v_arru[1] $end
|
||||
$var bit 1 + v_arru[2] $end
|
||||
$var bit 1 , v_arru[1] $end
|
||||
$upscope $end
|
||||
$attrbegin array unpacked bounds 17179869187 $end
|
||||
$scope sv_array v_arru_arru $end
|
||||
$attrbegin array unpacked bounds 8589934593 $end
|
||||
$scope sv_array [4] $end
|
||||
$var bit 1 , v_arru_arru[4][2] $end
|
||||
$var bit 1 - v_arru_arru[4][1] $end
|
||||
$var bit 1 - v_arru_arru[4][2] $end
|
||||
$var bit 1 . v_arru_arru[4][1] $end
|
||||
$upscope $end
|
||||
$attrbegin array unpacked bounds 8589934593 $end
|
||||
$scope sv_array [3] $end
|
||||
$var bit 1 . v_arru_arru[3][2] $end
|
||||
$var bit 1 / v_arru_arru[3][1] $end
|
||||
$var bit 1 / v_arru_arru[3][2] $end
|
||||
$var bit 1 0 v_arru_arru[3][1] $end
|
||||
$upscope $end
|
||||
$upscope $end
|
||||
$attrbegin array unpacked bounds 17179869187 $end
|
||||
$scope sv_array v_arru_arrp $end
|
||||
$var bit 2 0 v_arru_arrp[4] [2:1] $end
|
||||
$var bit 2 1 v_arru_arrp[3] [2:1] $end
|
||||
$var bit 2 1 v_arru_arrp[4] [2:1] $end
|
||||
$var bit 2 2 v_arru_arrp[3] [2:1] $end
|
||||
$upscope $end
|
||||
$attrbegin array unpacked bounds 17179869187 $end
|
||||
$scope sv_array v_arru_strp $end
|
||||
$var bit 2 2 v_arru_strp[4] [1:0] $end
|
||||
$var bit 2 3 v_arru_strp[3] [1:0] $end
|
||||
$var bit 2 3 v_arru_strp[4] [1:0] $end
|
||||
$var bit 2 4 v_arru_strp[3] [1:0] $end
|
||||
$upscope $end
|
||||
$var real 64 4 v_real $end
|
||||
$var real 64 5 v_real $end
|
||||
$attrbegin array unpacked bounds 1 $end
|
||||
$scope sv_array v_arr_real $end
|
||||
$var real 64 5 v_arr_real[0] $end
|
||||
$var real 64 6 v_arr_real[1] $end
|
||||
$var real 64 6 v_arr_real[0] $end
|
||||
$var real 64 7 v_arr_real[1] $end
|
||||
$upscope $end
|
||||
$var longint 64 7 v_chandle [63:0] $end
|
||||
$var logic 64 8 v_str32x2 [63:0] $end
|
||||
$var longint 64 8 v_chandle [63:0] $end
|
||||
$var logic 64 9 v_str32x2 [63:0] $end
|
||||
$attrbegin misc 07 "" 1 $end
|
||||
$var int 32 9 v_enumed [31:0] $end
|
||||
$var int 32 : v_enumed [31:0] $end
|
||||
$attrbegin misc 07 "" 1 $end
|
||||
$var int 32 : v_enumed2 [31:0] $end
|
||||
$var int 32 ; v_enumed2 [31:0] $end
|
||||
$attrbegin misc 07 "" 2 $end
|
||||
$var logic 3 ; v_enumb [2:0] $end
|
||||
$var logic 6 < v_enumb2_str [5:0] $end
|
||||
$var logic 3 < v_enumb [2:0] $end
|
||||
$var logic 6 = v_enumb2_str [5:0] $end
|
||||
$attrbegin array unpacked bounds -8589934592 $end
|
||||
$scope sv_array unpacked_array $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 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
|
||||
$upscope $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 bit 1 A 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 A PARAM [31:0] $end
|
||||
$upscope $end
|
||||
$scope module p2 $end
|
||||
$var parameter 32 B PARAM [31:0] $end
|
||||
$upscope $end
|
||||
$scope module p3 $end
|
||||
$scope module p2 $end
|
||||
$var parameter 32 C PARAM [31:0] $end
|
||||
$upscope $end
|
||||
$scope module p3 $end
|
||||
$var parameter 32 D PARAM [31:0] $end
|
||||
$upscope $end
|
||||
$upscope $end
|
||||
$upscope $end
|
||||
$enddefinitions $end
|
||||
#0
|
||||
$dumpvars
|
||||
b00000000000000000000000000000011 C
|
||||
b00000000000000000000000000000010 B
|
||||
b00000000000000000000000000000100 A
|
||||
0@
|
||||
b00000000000000000000000000000011 D
|
||||
b00000000000000000000000000000010 C
|
||||
b00000000000000000000000000000100 B
|
||||
0A
|
||||
b00000000 @
|
||||
b00000000 ?
|
||||
b00000000 >
|
||||
b00000000 =
|
||||
b000000 <
|
||||
b000 ;
|
||||
b000000 =
|
||||
b000 <
|
||||
b00000000000000000000000000000000 ;
|
||||
b00000000000000000000000000000000 :
|
||||
b00000000000000000000000000000000 9
|
||||
b0000000000000000000000000000000000000000000000000000000011111111 8
|
||||
b0000000000000000000000000000000000000000000000000000000000000000 7
|
||||
b0000000000000000000000000000000000000000000000000000000011111111 9
|
||||
b0000000000000000000000000000000000000000000000000000000000000000 8
|
||||
r0 7
|
||||
r0 6
|
||||
r0 5
|
||||
r0 4
|
||||
b00 4
|
||||
b00 3
|
||||
b00 2
|
||||
b00 1
|
||||
b00 0
|
||||
00
|
||||
0/
|
||||
0.
|
||||
0-
|
||||
0,
|
||||
0+
|
||||
0*
|
||||
b0000 *
|
||||
b0000 )
|
||||
b0000 (
|
||||
b00 (
|
||||
b00 '
|
||||
b00 &
|
||||
b0000 %
|
||||
b0000 &
|
||||
b00 %
|
||||
b00 $
|
||||
b00000000000000000000000000000000 #
|
||||
1"
|
||||
|
|
@ -128,134 +130,140 @@ $end
|
|||
1!
|
||||
b00000000000000000000000000000001 #
|
||||
b11 $
|
||||
b1111 %
|
||||
b11 &
|
||||
b11 %
|
||||
b1111 &
|
||||
b11 '
|
||||
b1111 (
|
||||
b11 (
|
||||
b1111 )
|
||||
b11 0
|
||||
b1111 *
|
||||
b11 1
|
||||
b11 2
|
||||
b11 3
|
||||
r0.1 4
|
||||
r0.2 5
|
||||
r0.3 6
|
||||
b0000000000000000000000000000000100000000000000000000000011111110 8
|
||||
b00000000000000000000000000000001 9
|
||||
b00000000000000000000000000000010 :
|
||||
b111 ;
|
||||
b11 4
|
||||
r0.1 5
|
||||
r0.2 6
|
||||
r0.3 7
|
||||
b0000000000000000000000000000000100000000000000000000000011111110 9
|
||||
b00000000000000000000000000000001 :
|
||||
b00000000000000000000000000000010 ;
|
||||
b111 <
|
||||
#15
|
||||
0!
|
||||
#20
|
||||
1!
|
||||
b110 ;
|
||||
b00000000000000000000000000000100 :
|
||||
b00000000000000000000000000000010 9
|
||||
b0000000000000000000000000000001000000000000000000000000011111101 8
|
||||
r0.6 6
|
||||
r0.4 5
|
||||
r0.2 4
|
||||
b110 <
|
||||
b00000000000000000000000000000100 ;
|
||||
b00000000000000000000000000000010 :
|
||||
b0000000000000000000000000000001000000000000000000000000011111101 9
|
||||
r0.6 7
|
||||
r0.4 6
|
||||
r0.2 5
|
||||
b00 4
|
||||
b00 3
|
||||
b00 2
|
||||
b00 1
|
||||
b00 0
|
||||
b0000 *
|
||||
b0000 )
|
||||
b0000 (
|
||||
b00 (
|
||||
b00 '
|
||||
b00 &
|
||||
b0000 %
|
||||
b0000 &
|
||||
b00 %
|
||||
b00 $
|
||||
b00000000000000000000000000000010 #
|
||||
b111111 <
|
||||
b111111 =
|
||||
#25
|
||||
0!
|
||||
#30
|
||||
1!
|
||||
b110110 <
|
||||
b110110 =
|
||||
b00000000000000000000000000000011 #
|
||||
b11 $
|
||||
b1111 %
|
||||
b11 &
|
||||
b11 %
|
||||
b1111 &
|
||||
b11 '
|
||||
b1111 (
|
||||
b11 (
|
||||
b1111 )
|
||||
b11 0
|
||||
b1111 *
|
||||
b11 1
|
||||
b11 2
|
||||
b11 3
|
||||
r0.3 4
|
||||
r0.6000000000000001 5
|
||||
r0.8999999999999999 6
|
||||
b0000000000000000000000000000001100000000000000000000000011111100 8
|
||||
b00000000000000000000000000000011 9
|
||||
b00000000000000000000000000000110 :
|
||||
b101 ;
|
||||
b11 4
|
||||
r0.3 5
|
||||
r0.6000000000000001 6
|
||||
r0.8999999999999999 7
|
||||
b0000000000000000000000000000001100000000000000000000000011111100 9
|
||||
b00000000000000000000000000000011 :
|
||||
b00000000000000000000000000000110 ;
|
||||
b101 <
|
||||
#35
|
||||
0!
|
||||
#40
|
||||
1!
|
||||
b100 ;
|
||||
b00000000000000000000000000001000 :
|
||||
b00000000000000000000000000000100 9
|
||||
b0000000000000000000000000000010000000000000000000000000011111011 8
|
||||
r1.2 6
|
||||
r0.8 5
|
||||
r0.4 4
|
||||
b100 <
|
||||
b00000000000000000000000000001000 ;
|
||||
b00000000000000000000000000000100 :
|
||||
b0000000000000000000000000000010000000000000000000000000011111011 9
|
||||
r1.2 7
|
||||
r0.8 6
|
||||
r0.4 5
|
||||
b00 4
|
||||
b00 3
|
||||
b00 2
|
||||
b00 1
|
||||
b00 0
|
||||
b0000 *
|
||||
b0000 )
|
||||
b0000 (
|
||||
b00 (
|
||||
b00 '
|
||||
b00 &
|
||||
b0000 %
|
||||
b0000 &
|
||||
b00 %
|
||||
b00 $
|
||||
b00000000000000000000000000000100 #
|
||||
b101101 <
|
||||
b101101 =
|
||||
#45
|
||||
0!
|
||||
#50
|
||||
1!
|
||||
b100100 <
|
||||
b100100 =
|
||||
b00000000000000000000000000000101 #
|
||||
b11 $
|
||||
b1111 %
|
||||
b11 &
|
||||
b11 %
|
||||
b1111 &
|
||||
b11 '
|
||||
b1111 (
|
||||
b11 (
|
||||
b1111 )
|
||||
b11 0
|
||||
b1111 *
|
||||
b11 1
|
||||
b11 2
|
||||
b11 3
|
||||
r0.5 4
|
||||
r1 5
|
||||
r1.5 6
|
||||
b0000000000000000000000000000010100000000000000000000000011111010 8
|
||||
b00000000000000000000000000000101 9
|
||||
b00000000000000000000000000001010 :
|
||||
b011 ;
|
||||
b11 4
|
||||
r0.5 5
|
||||
r1 6
|
||||
r1.5 7
|
||||
b0000000000000000000000000000010100000000000000000000000011111010 9
|
||||
b00000000000000000000000000000101 :
|
||||
b00000000000000000000000000001010 ;
|
||||
b011 <
|
||||
#55
|
||||
0!
|
||||
#60
|
||||
1!
|
||||
b010 ;
|
||||
b00000000000000000000000000001100 :
|
||||
b00000000000000000000000000000110 9
|
||||
b0000000000000000000000000000011000000000000000000000000011111001 8
|
||||
r1.8 6
|
||||
r1.2 5
|
||||
r0.6 4
|
||||
b010 <
|
||||
b00000000000000000000000000001100 ;
|
||||
b00000000000000000000000000000110 :
|
||||
b0000000000000000000000000000011000000000000000000000000011111001 9
|
||||
r1.8 7
|
||||
r1.2 6
|
||||
r0.6 5
|
||||
b00 4
|
||||
b00 3
|
||||
b00 2
|
||||
b00 1
|
||||
b00 0
|
||||
b0000 *
|
||||
b0000 )
|
||||
b0000 (
|
||||
b00 (
|
||||
b00 '
|
||||
b00 &
|
||||
b0000 %
|
||||
b0000 &
|
||||
b00 %
|
||||
b00 $
|
||||
b00000000000000000000000000000110 #
|
||||
b011011 <
|
||||
b011011 =
|
||||
|
|
|
|||
|
|
@ -52,6 +52,8 @@
|
|||
(cyc\[31\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(v_strp\[0\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(v_strp\[1\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(v_strp2\[0\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(v_strp2\[1\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(v_strp_strp\[0\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(v_strp_strp\[1\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(v_strp_strp\[2\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
|
|
@ -68,20 +70,20 @@
|
|||
(v_arrp_strp\[1\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(v_arrp_strp\[2\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(v_arrp_strp\[3\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(v_arru[1] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(v_arru[2] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(v_arru_arru[3][1] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(v_arru_arru[3][2] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(v_arru_arru[4][1] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(v_arru[1] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(v_arru_arru[4][2] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(v_arru_arrp[3]\[0\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(v_arru_arrp[3]\[1\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(v_arru_arru[4][1] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(v_arru_arru[3][2] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(v_arru_arru[3][1] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(v_arru_arrp[4]\[0\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(v_arru_arrp[4]\[1\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(v_arru_strp[3]\[0\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(v_arru_strp[3]\[1\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(v_arru_arrp[3]\[0\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(v_arru_arrp[3]\[1\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(v_arru_strp[4]\[0\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(v_arru_strp[4]\[1\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(v_arru_strp[3]\[0\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(v_arru_strp[3]\[1\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(v_real\[0\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(v_real\[1\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(v_real\[2\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
|
|
|
|||
|
|
@ -1,51 +1,52 @@
|
|||
$version Generated by VerilatedVcd $end
|
||||
$timescale 1ps $end
|
||||
$scope module top $end
|
||||
$var wire 1 : clk $end
|
||||
$var wire 1 ; clk $end
|
||||
$scope module $unit $end
|
||||
$var wire 1 " global_bit $end
|
||||
$upscope $end
|
||||
$scope module t $end
|
||||
$var wire 1 : clk $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 2 % v_strp2 [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[2] $end
|
||||
$var wire 1 = v_arru_arru[3][1] $end
|
||||
$var wire 1 > v_arru_arru[3][2] $end
|
||||
$var wire 1 = v_arru[1] $end
|
||||
$var wire 1 > v_arru_arru[4][2] $end
|
||||
$var wire 1 ? v_arru_arru[4][1] $end
|
||||
$var wire 1 @ v_arru_arru[4][2] $end
|
||||
$var wire 2 * v_arru_arrp[3] [2:1] $end
|
||||
$var wire 1 @ v_arru_arru[3][2] $end
|
||||
$var wire 1 A v_arru_arru[3][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_arrp[3] [2:1] $end
|
||||
$var wire 2 - v_arru_strp[4] [1:0] $end
|
||||
$var real 64 . v_real $end
|
||||
$var real 64 0 v_arr_real[0] $end
|
||||
$var real 64 2 v_arr_real[1] $end
|
||||
$var wire 64 A v_chandle [63:0] $end
|
||||
$var wire 64 4 v_str32x2 [63:0] $end
|
||||
$var wire 32 6 v_enumed [31:0] $end
|
||||
$var wire 32 7 v_enumed2 [31:0] $end
|
||||
$var wire 3 8 v_enumb [2:0] $end
|
||||
$var wire 6 9 v_enumb2_str [5:0] $end
|
||||
$var wire 8 C unpacked_array[-2] [7:0] $end
|
||||
$var wire 8 D unpacked_array[-1] [7:0] $end
|
||||
$var wire 8 E unpacked_array[0] [7:0] $end
|
||||
$var wire 1 F 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 2 . v_arru_strp[3] [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 B v_chandle [63:0] $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 G PARAM [31:0] $end
|
||||
$upscope $end
|
||||
$scope module p2 $end
|
||||
$var wire 32 H PARAM [31:0] $end
|
||||
$upscope $end
|
||||
$scope module p3 $end
|
||||
$scope module p2 $end
|
||||
$var wire 32 I PARAM [31:0] $end
|
||||
$upscope $end
|
||||
$scope module p3 $end
|
||||
$var wire 32 J PARAM [31:0] $end
|
||||
$upscope $end
|
||||
$upscope $end
|
||||
$upscope $end
|
||||
$enddefinitions $end
|
||||
|
|
@ -55,170 +56,177 @@ $enddefinitions $end
|
|||
1"
|
||||
b00000000000000000000000000000000 #
|
||||
b00 $
|
||||
b0000 %
|
||||
b00 &
|
||||
b00 %
|
||||
b0000 &
|
||||
b00 '
|
||||
b0000 (
|
||||
b00 (
|
||||
b0000 )
|
||||
b00 *
|
||||
b0000 *
|
||||
b00 +
|
||||
b00 ,
|
||||
b00 -
|
||||
r0 .
|
||||
r0 0
|
||||
r0 2
|
||||
b0000000000000000000000000000000000000000000000000000000011111111 4
|
||||
b00000000000000000000000000000000 6
|
||||
b00 .
|
||||
r0 /
|
||||
r0 1
|
||||
r0 3
|
||||
b0000000000000000000000000000000000000000000000000000000011111111 5
|
||||
b00000000000000000000000000000000 7
|
||||
b000 8
|
||||
b000000 9
|
||||
0:
|
||||
b00000000000000000000000000000000 8
|
||||
b000 9
|
||||
b000000 :
|
||||
0;
|
||||
0<
|
||||
0=
|
||||
0>
|
||||
0?
|
||||
0@
|
||||
b0000000000000000000000000000000000000000000000000000000000000000 A
|
||||
b00000000 C
|
||||
0A
|
||||
b0000000000000000000000000000000000000000000000000000000000000000 B
|
||||
b00000000 D
|
||||
b00000000 E
|
||||
0F
|
||||
b00000000000000000000000000000100 G
|
||||
b00000000000000000000000000000010 H
|
||||
b00000000000000000000000000000011 I
|
||||
b00000000 F
|
||||
0G
|
||||
b00000000000000000000000000000100 H
|
||||
b00000000000000000000000000000010 I
|
||||
b00000000000000000000000000000011 J
|
||||
#10
|
||||
b00000000000000000000000000000001 #
|
||||
b11 $
|
||||
b1111 %
|
||||
b11 &
|
||||
b11 %
|
||||
b1111 &
|
||||
b11 '
|
||||
b1111 (
|
||||
b11 (
|
||||
b1111 )
|
||||
b11 *
|
||||
b1111 *
|
||||
b11 +
|
||||
b11 ,
|
||||
b11 -
|
||||
r0.1 .
|
||||
r0.2 0
|
||||
r0.3 2
|
||||
b0000000000000000000000000000000100000000000000000000000011111110 4
|
||||
b00000000000000000000000000000001 6
|
||||
b00000000000000000000000000000010 7
|
||||
b111 8
|
||||
1:
|
||||
b11 .
|
||||
r0.1 /
|
||||
r0.2 1
|
||||
r0.3 3
|
||||
b0000000000000000000000000000000100000000000000000000000011111110 5
|
||||
b00000000000000000000000000000001 7
|
||||
b00000000000000000000000000000010 8
|
||||
b111 9
|
||||
1;
|
||||
#15
|
||||
0:
|
||||
0;
|
||||
#20
|
||||
b00000000000000000000000000000010 #
|
||||
b00 $
|
||||
b0000 %
|
||||
b00 &
|
||||
b00 %
|
||||
b0000 &
|
||||
b00 '
|
||||
b0000 (
|
||||
b00 (
|
||||
b0000 )
|
||||
b00 *
|
||||
b0000 *
|
||||
b00 +
|
||||
b00 ,
|
||||
b00 -
|
||||
r0.2 .
|
||||
r0.4 0
|
||||
r0.6 2
|
||||
b0000000000000000000000000000001000000000000000000000000011111101 4
|
||||
b00000000000000000000000000000010 6
|
||||
b00000000000000000000000000000100 7
|
||||
b110 8
|
||||
b111111 9
|
||||
1:
|
||||
b00 .
|
||||
r0.2 /
|
||||
r0.4 1
|
||||
r0.6 3
|
||||
b0000000000000000000000000000001000000000000000000000000011111101 5
|
||||
b00000000000000000000000000000010 7
|
||||
b00000000000000000000000000000100 8
|
||||
b110 9
|
||||
b111111 :
|
||||
1;
|
||||
#25
|
||||
0:
|
||||
0;
|
||||
#30
|
||||
b00000000000000000000000000000011 #
|
||||
b11 $
|
||||
b1111 %
|
||||
b11 &
|
||||
b11 %
|
||||
b1111 &
|
||||
b11 '
|
||||
b1111 (
|
||||
b11 (
|
||||
b1111 )
|
||||
b11 *
|
||||
b1111 *
|
||||
b11 +
|
||||
b11 ,
|
||||
b11 -
|
||||
r0.3 .
|
||||
r0.6000000000000001 0
|
||||
r0.8999999999999999 2
|
||||
b0000000000000000000000000000001100000000000000000000000011111100 4
|
||||
b00000000000000000000000000000011 6
|
||||
b00000000000000000000000000000110 7
|
||||
b101 8
|
||||
b110110 9
|
||||
1:
|
||||
b11 .
|
||||
r0.3 /
|
||||
r0.6000000000000001 1
|
||||
r0.8999999999999999 3
|
||||
b0000000000000000000000000000001100000000000000000000000011111100 5
|
||||
b00000000000000000000000000000011 7
|
||||
b00000000000000000000000000000110 8
|
||||
b101 9
|
||||
b110110 :
|
||||
1;
|
||||
#35
|
||||
0:
|
||||
0;
|
||||
#40
|
||||
b00000000000000000000000000000100 #
|
||||
b00 $
|
||||
b0000 %
|
||||
b00 &
|
||||
b00 %
|
||||
b0000 &
|
||||
b00 '
|
||||
b0000 (
|
||||
b00 (
|
||||
b0000 )
|
||||
b00 *
|
||||
b0000 *
|
||||
b00 +
|
||||
b00 ,
|
||||
b00 -
|
||||
r0.4 .
|
||||
r0.8 0
|
||||
r1.2 2
|
||||
b0000000000000000000000000000010000000000000000000000000011111011 4
|
||||
b00000000000000000000000000000100 6
|
||||
b00000000000000000000000000001000 7
|
||||
b100 8
|
||||
b101101 9
|
||||
1:
|
||||
b00 .
|
||||
r0.4 /
|
||||
r0.8 1
|
||||
r1.2 3
|
||||
b0000000000000000000000000000010000000000000000000000000011111011 5
|
||||
b00000000000000000000000000000100 7
|
||||
b00000000000000000000000000001000 8
|
||||
b100 9
|
||||
b101101 :
|
||||
1;
|
||||
#45
|
||||
0:
|
||||
0;
|
||||
#50
|
||||
b00000000000000000000000000000101 #
|
||||
b11 $
|
||||
b1111 %
|
||||
b11 &
|
||||
b11 %
|
||||
b1111 &
|
||||
b11 '
|
||||
b1111 (
|
||||
b11 (
|
||||
b1111 )
|
||||
b11 *
|
||||
b1111 *
|
||||
b11 +
|
||||
b11 ,
|
||||
b11 -
|
||||
r0.5 .
|
||||
r1 0
|
||||
r1.5 2
|
||||
b0000000000000000000000000000010100000000000000000000000011111010 4
|
||||
b00000000000000000000000000000101 6
|
||||
b00000000000000000000000000001010 7
|
||||
b011 8
|
||||
b100100 9
|
||||
1:
|
||||
b11 .
|
||||
r0.5 /
|
||||
r1 1
|
||||
r1.5 3
|
||||
b0000000000000000000000000000010100000000000000000000000011111010 5
|
||||
b00000000000000000000000000000101 7
|
||||
b00000000000000000000000000001010 8
|
||||
b011 9
|
||||
b100100 :
|
||||
1;
|
||||
#55
|
||||
0:
|
||||
0;
|
||||
#60
|
||||
b00000000000000000000000000000110 #
|
||||
b00 $
|
||||
b0000 %
|
||||
b00 &
|
||||
b00 %
|
||||
b0000 &
|
||||
b00 '
|
||||
b0000 (
|
||||
b00 (
|
||||
b0000 )
|
||||
b00 *
|
||||
b0000 *
|
||||
b00 +
|
||||
b00 ,
|
||||
b00 -
|
||||
r0.6 .
|
||||
r1.2 0
|
||||
r1.8 2
|
||||
b0000000000000000000000000000011000000000000000000000000011111001 4
|
||||
b00000000000000000000000000000110 6
|
||||
b00000000000000000000000000001100 7
|
||||
b010 8
|
||||
b011011 9
|
||||
1:
|
||||
b00 .
|
||||
r0.6 /
|
||||
r1.2 1
|
||||
r1.8 3
|
||||
b0000000000000000000000000000011000000000000000000000000011111001 5
|
||||
b00000000000000000000000000000110 7
|
||||
b00000000000000000000000000001100 8
|
||||
b010 9
|
||||
b011011 :
|
||||
1;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
$date
|
||||
Sat Mar 14 09:16:46 2026
|
||||
Tue Mar 31 17:14:34 2026
|
||||
|
||||
$end
|
||||
$version
|
||||
|
|
@ -18,106 +18,108 @@ $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 2 % v_strp2 [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
|
||||
$attrbegin array unpacked bounds 8589934593 $end
|
||||
$scope sv_array v_arru $end
|
||||
$var bit 1 * v_arru[2] $end
|
||||
$var bit 1 + v_arru[1] $end
|
||||
$var bit 1 + v_arru[2] $end
|
||||
$var bit 1 , v_arru[1] $end
|
||||
$upscope $end
|
||||
$attrbegin array unpacked bounds 17179869187 $end
|
||||
$scope sv_array v_arru_arru $end
|
||||
$attrbegin array unpacked bounds 8589934593 $end
|
||||
$scope sv_array [4] $end
|
||||
$var bit 1 , v_arru_arru[4][2] $end
|
||||
$var bit 1 - v_arru_arru[4][1] $end
|
||||
$var bit 1 - v_arru_arru[4][2] $end
|
||||
$var bit 1 . v_arru_arru[4][1] $end
|
||||
$upscope $end
|
||||
$attrbegin array unpacked bounds 8589934593 $end
|
||||
$scope sv_array [3] $end
|
||||
$var bit 1 . v_arru_arru[3][2] $end
|
||||
$var bit 1 / v_arru_arru[3][1] $end
|
||||
$var bit 1 / v_arru_arru[3][2] $end
|
||||
$var bit 1 0 v_arru_arru[3][1] $end
|
||||
$upscope $end
|
||||
$upscope $end
|
||||
$attrbegin array unpacked bounds 17179869187 $end
|
||||
$scope sv_array v_arru_arrp $end
|
||||
$var bit 2 0 v_arru_arrp[4] [2:1] $end
|
||||
$var bit 2 1 v_arru_arrp[3] [2:1] $end
|
||||
$var bit 2 1 v_arru_arrp[4] [2:1] $end
|
||||
$var bit 2 2 v_arru_arrp[3] [2:1] $end
|
||||
$upscope $end
|
||||
$attrbegin array unpacked bounds 17179869187 $end
|
||||
$scope sv_array v_arru_strp $end
|
||||
$var bit 2 2 v_arru_strp[4] [1:0] $end
|
||||
$var bit 2 3 v_arru_strp[3] [1:0] $end
|
||||
$var bit 2 3 v_arru_strp[4] [1:0] $end
|
||||
$var bit 2 4 v_arru_strp[3] [1:0] $end
|
||||
$upscope $end
|
||||
$var real 64 4 v_real $end
|
||||
$var real 64 5 v_real $end
|
||||
$attrbegin array unpacked bounds 1 $end
|
||||
$scope sv_array v_arr_real $end
|
||||
$var real 64 5 v_arr_real[0] $end
|
||||
$var real 64 6 v_arr_real[1] $end
|
||||
$var real 64 6 v_arr_real[0] $end
|
||||
$var real 64 7 v_arr_real[1] $end
|
||||
$upscope $end
|
||||
$var longint 64 7 v_chandle [63:0] $end
|
||||
$var logic 64 8 v_str32x2 [63:0] $end
|
||||
$var longint 64 8 v_chandle [63:0] $end
|
||||
$var logic 64 9 v_str32x2 [63:0] $end
|
||||
$attrbegin misc 07 "" 1 $end
|
||||
$var int 32 9 v_enumed [31:0] $end
|
||||
$var int 32 : v_enumed [31:0] $end
|
||||
$attrbegin misc 07 "" 1 $end
|
||||
$var int 32 : v_enumed2 [31:0] $end
|
||||
$var int 32 ; v_enumed2 [31:0] $end
|
||||
$attrbegin misc 07 "" 2 $end
|
||||
$var logic 3 ; v_enumb [2:0] $end
|
||||
$var logic 6 < v_enumb2_str [5:0] $end
|
||||
$var logic 3 < v_enumb [2:0] $end
|
||||
$var logic 6 = v_enumb2_str [5:0] $end
|
||||
$attrbegin array unpacked bounds -8589934592 $end
|
||||
$scope sv_array unpacked_array $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 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
|
||||
$upscope $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 bit 1 A 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 A PARAM [31:0] $end
|
||||
$upscope $end
|
||||
$scope module p2 $end
|
||||
$var parameter 32 B PARAM [31:0] $end
|
||||
$upscope $end
|
||||
$scope module p3 $end
|
||||
$scope module p2 $end
|
||||
$var parameter 32 C PARAM [31:0] $end
|
||||
$upscope $end
|
||||
$scope module p3 $end
|
||||
$var parameter 32 D PARAM [31:0] $end
|
||||
$upscope $end
|
||||
$upscope $end
|
||||
$upscope $end
|
||||
$enddefinitions $end
|
||||
#0
|
||||
$dumpvars
|
||||
b00000000000000000000000000000011 C
|
||||
b00000000000000000000000000000010 B
|
||||
b00000000000000000000000000000100 A
|
||||
0@
|
||||
b00000000000000000000000000000011 D
|
||||
b00000000000000000000000000000010 C
|
||||
b00000000000000000000000000000100 B
|
||||
0A
|
||||
b00000000 @
|
||||
b00000000 ?
|
||||
b00000000 >
|
||||
b00000000 =
|
||||
b000000 <
|
||||
b000 ;
|
||||
b000000 =
|
||||
b000 <
|
||||
b00000000000000000000000000000000 ;
|
||||
b00000000000000000000000000000000 :
|
||||
b00000000000000000000000000000000 9
|
||||
b0000000000000000000000000000000000000000000000000000000011111111 8
|
||||
b0000000000000000000000000000000000000000000000000000000000000000 7
|
||||
b0000000000000000000000000000000000000000000000000000000011111111 9
|
||||
b0000000000000000000000000000000000000000000000000000000000000000 8
|
||||
r0 7
|
||||
r0 6
|
||||
r0 5
|
||||
r0 4
|
||||
b00 4
|
||||
b00 3
|
||||
b00 2
|
||||
b00 1
|
||||
b00 0
|
||||
00
|
||||
0/
|
||||
0.
|
||||
0-
|
||||
0,
|
||||
0+
|
||||
0*
|
||||
b0000 *
|
||||
b0000 )
|
||||
b0000 (
|
||||
b00 (
|
||||
b00 '
|
||||
b00 &
|
||||
b0000 %
|
||||
b0000 &
|
||||
b00 %
|
||||
b00 $
|
||||
b00000000000000000000000000000000 #
|
||||
0"
|
||||
|
|
@ -127,135 +129,141 @@ $end
|
|||
1"
|
||||
b00000000000000000000000000000001 #
|
||||
b11 $
|
||||
b1111 %
|
||||
b11 &
|
||||
b11 %
|
||||
b1111 &
|
||||
b11 '
|
||||
b1111 (
|
||||
b11 (
|
||||
b1111 )
|
||||
b11 0
|
||||
b1111 *
|
||||
b11 1
|
||||
b11 2
|
||||
b11 3
|
||||
r0.1 4
|
||||
r0.2 5
|
||||
r0.3 6
|
||||
b0000000000000000000000000000000100000000000000000000000011111110 8
|
||||
b00000000000000000000000000000001 9
|
||||
b00000000000000000000000000000010 :
|
||||
b111 ;
|
||||
b11 4
|
||||
r0.1 5
|
||||
r0.2 6
|
||||
r0.3 7
|
||||
b0000000000000000000000000000000100000000000000000000000011111110 9
|
||||
b00000000000000000000000000000001 :
|
||||
b00000000000000000000000000000010 ;
|
||||
b111 <
|
||||
#15
|
||||
0"
|
||||
#20
|
||||
1"
|
||||
b110 ;
|
||||
b00000000000000000000000000000100 :
|
||||
b00000000000000000000000000000010 9
|
||||
b0000000000000000000000000000001000000000000000000000000011111101 8
|
||||
r0.6 6
|
||||
r0.4 5
|
||||
r0.2 4
|
||||
b110 <
|
||||
b00000000000000000000000000000100 ;
|
||||
b00000000000000000000000000000010 :
|
||||
b0000000000000000000000000000001000000000000000000000000011111101 9
|
||||
r0.6 7
|
||||
r0.4 6
|
||||
r0.2 5
|
||||
b00 4
|
||||
b00 3
|
||||
b00 2
|
||||
b00 1
|
||||
b00 0
|
||||
b0000 *
|
||||
b0000 )
|
||||
b0000 (
|
||||
b00 (
|
||||
b00 '
|
||||
b00 &
|
||||
b0000 %
|
||||
b0000 &
|
||||
b00 %
|
||||
b00 $
|
||||
b00000000000000000000000000000010 #
|
||||
b111111 <
|
||||
b111111 =
|
||||
#25
|
||||
0"
|
||||
#30
|
||||
1"
|
||||
b110110 <
|
||||
b110110 =
|
||||
b00000000000000000000000000000011 #
|
||||
b11 $
|
||||
b1111 %
|
||||
b11 &
|
||||
b11 %
|
||||
b1111 &
|
||||
b11 '
|
||||
b1111 (
|
||||
b11 (
|
||||
b1111 )
|
||||
b11 0
|
||||
b1111 *
|
||||
b11 1
|
||||
b11 2
|
||||
b11 3
|
||||
r0.3 4
|
||||
r0.6000000000000001 5
|
||||
r0.8999999999999999 6
|
||||
b0000000000000000000000000000001100000000000000000000000011111100 8
|
||||
b00000000000000000000000000000011 9
|
||||
b00000000000000000000000000000110 :
|
||||
b101 ;
|
||||
b11 4
|
||||
r0.3 5
|
||||
r0.6000000000000001 6
|
||||
r0.8999999999999999 7
|
||||
b0000000000000000000000000000001100000000000000000000000011111100 9
|
||||
b00000000000000000000000000000011 :
|
||||
b00000000000000000000000000000110 ;
|
||||
b101 <
|
||||
#35
|
||||
0"
|
||||
#40
|
||||
1"
|
||||
b100 ;
|
||||
b00000000000000000000000000001000 :
|
||||
b00000000000000000000000000000100 9
|
||||
b0000000000000000000000000000010000000000000000000000000011111011 8
|
||||
r1.2 6
|
||||
r0.8 5
|
||||
r0.4 4
|
||||
b100 <
|
||||
b00000000000000000000000000001000 ;
|
||||
b00000000000000000000000000000100 :
|
||||
b0000000000000000000000000000010000000000000000000000000011111011 9
|
||||
r1.2 7
|
||||
r0.8 6
|
||||
r0.4 5
|
||||
b00 4
|
||||
b00 3
|
||||
b00 2
|
||||
b00 1
|
||||
b00 0
|
||||
b0000 *
|
||||
b0000 )
|
||||
b0000 (
|
||||
b00 (
|
||||
b00 '
|
||||
b00 &
|
||||
b0000 %
|
||||
b0000 &
|
||||
b00 %
|
||||
b00 $
|
||||
b00000000000000000000000000000100 #
|
||||
b101101 <
|
||||
b101101 =
|
||||
#45
|
||||
0"
|
||||
#50
|
||||
1"
|
||||
b100100 <
|
||||
b100100 =
|
||||
b00000000000000000000000000000101 #
|
||||
b11 $
|
||||
b1111 %
|
||||
b11 &
|
||||
b11 %
|
||||
b1111 &
|
||||
b11 '
|
||||
b1111 (
|
||||
b11 (
|
||||
b1111 )
|
||||
b11 0
|
||||
b1111 *
|
||||
b11 1
|
||||
b11 2
|
||||
b11 3
|
||||
r0.5 4
|
||||
r1 5
|
||||
r1.5 6
|
||||
b0000000000000000000000000000010100000000000000000000000011111010 8
|
||||
b00000000000000000000000000000101 9
|
||||
b00000000000000000000000000001010 :
|
||||
b011 ;
|
||||
b11 4
|
||||
r0.5 5
|
||||
r1 6
|
||||
r1.5 7
|
||||
b0000000000000000000000000000010100000000000000000000000011111010 9
|
||||
b00000000000000000000000000000101 :
|
||||
b00000000000000000000000000001010 ;
|
||||
b011 <
|
||||
#55
|
||||
0"
|
||||
#60
|
||||
1"
|
||||
b010 ;
|
||||
b00000000000000000000000000001100 :
|
||||
b00000000000000000000000000000110 9
|
||||
b0000000000000000000000000000011000000000000000000000000011111001 8
|
||||
r1.8 6
|
||||
r1.2 5
|
||||
r0.6 4
|
||||
b010 <
|
||||
b00000000000000000000000000001100 ;
|
||||
b00000000000000000000000000000110 :
|
||||
b0000000000000000000000000000011000000000000000000000000011111001 9
|
||||
r1.8 7
|
||||
r1.2 6
|
||||
r0.6 5
|
||||
b00 4
|
||||
b00 3
|
||||
b00 2
|
||||
b00 1
|
||||
b00 0
|
||||
b0000 *
|
||||
b0000 )
|
||||
b0000 (
|
||||
b00 (
|
||||
b00 '
|
||||
b00 &
|
||||
b0000 %
|
||||
b0000 &
|
||||
b00 %
|
||||
b00 $
|
||||
b00000000000000000000000000000110 #
|
||||
b011011 <
|
||||
b011011 =
|
||||
#64
|
||||
|
|
|
|||
|
|
@ -5,46 +5,47 @@ $timescale 1ps $end
|
|||
$var wire 1 " global_bit $end
|
||||
$upscope $end
|
||||
$scope module t $end
|
||||
$var wire 1 : clk $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[2] $end
|
||||
$var wire 1 < v_arru[1] $end
|
||||
$var wire 1 = v_arru_arru[4][2] $end
|
||||
$var wire 1 > v_arru_arru[4][1] $end
|
||||
$var wire 1 ? v_arru_arru[3][2] $end
|
||||
$var wire 1 @ v_arru_arru[3][1] $end
|
||||
$var wire 2 * v_arru_arrp[4] [2:1] $end
|
||||
$var wire 2 + v_arru_arrp[3] [2:1] $end
|
||||
$var wire 2 , v_arru_strp[4] [1:0] $end
|
||||
$var wire 2 - v_arru_strp[3] [1:0] $end
|
||||
$var real 64 . v_real $end
|
||||
$var real 64 0 v_arr_real[0] $end
|
||||
$var real 64 2 v_arr_real[1] $end
|
||||
$var wire 64 A v_chandle [63:0] $end
|
||||
$var wire 64 4 v_str32x2 [63:0] $end
|
||||
$var wire 32 6 v_enumed [31:0] $end
|
||||
$var wire 32 7 v_enumed2 [31:0] $end
|
||||
$var wire 3 8 v_enumb [2:0] $end
|
||||
$var wire 6 9 v_enumb2_str [5:0] $end
|
||||
$var wire 8 C unpacked_array[-2] [7:0] $end
|
||||
$var wire 8 D unpacked_array[-1] [7:0] $end
|
||||
$var wire 8 E unpacked_array[0] [7:0] $end
|
||||
$var wire 1 F 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 2 % v_strp2 [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[2] $end
|
||||
$var wire 1 = v_arru[1] $end
|
||||
$var wire 1 > v_arru_arru[4][2] $end
|
||||
$var wire 1 ? v_arru_arru[4][1] $end
|
||||
$var wire 1 @ v_arru_arru[3][2] $end
|
||||
$var wire 1 A v_arru_arru[3][1] $end
|
||||
$var wire 2 + v_arru_arrp[4] [2:1] $end
|
||||
$var wire 2 , v_arru_arrp[3] [2:1] $end
|
||||
$var wire 2 - v_arru_strp[4] [1:0] $end
|
||||
$var wire 2 . v_arru_strp[3] [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 B v_chandle [63:0] $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 G PARAM [31:0] $end
|
||||
$upscope $end
|
||||
$scope module p2 $end
|
||||
$var wire 32 H PARAM [31:0] $end
|
||||
$upscope $end
|
||||
$scope module p3 $end
|
||||
$scope module p2 $end
|
||||
$var wire 32 I PARAM [31:0] $end
|
||||
$upscope $end
|
||||
$scope module p3 $end
|
||||
$var wire 32 J PARAM [31:0] $end
|
||||
$upscope $end
|
||||
$upscope $end
|
||||
$upscope $end
|
||||
$enddefinitions $end
|
||||
|
|
@ -54,171 +55,178 @@ $enddefinitions $end
|
|||
1"
|
||||
b00000000000000000000000000000000 #
|
||||
b00 $
|
||||
b0000 %
|
||||
b00 &
|
||||
b00 %
|
||||
b0000 &
|
||||
b00 '
|
||||
b0000 (
|
||||
b00 (
|
||||
b0000 )
|
||||
b00 *
|
||||
b0000 *
|
||||
b00 +
|
||||
b00 ,
|
||||
b00 -
|
||||
r0 .
|
||||
r0 0
|
||||
r0 2
|
||||
b0000000000000000000000000000000000000000000000000000000011111111 4
|
||||
b00000000000000000000000000000000 6
|
||||
b00 .
|
||||
r0 /
|
||||
r0 1
|
||||
r0 3
|
||||
b0000000000000000000000000000000000000000000000000000000011111111 5
|
||||
b00000000000000000000000000000000 7
|
||||
b000 8
|
||||
b000000 9
|
||||
0:
|
||||
b00000000000000000000000000000000 8
|
||||
b000 9
|
||||
b000000 :
|
||||
0;
|
||||
0<
|
||||
0=
|
||||
0>
|
||||
0?
|
||||
0@
|
||||
b0000000000000000000000000000000000000000000000000000000000000000 A
|
||||
b00000000 C
|
||||
0A
|
||||
b0000000000000000000000000000000000000000000000000000000000000000 B
|
||||
b00000000 D
|
||||
b00000000 E
|
||||
0F
|
||||
b00000000000000000000000000000100 G
|
||||
b00000000000000000000000000000010 H
|
||||
b00000000000000000000000000000011 I
|
||||
b00000000 F
|
||||
0G
|
||||
b00000000000000000000000000000100 H
|
||||
b00000000000000000000000000000010 I
|
||||
b00000000000000000000000000000011 J
|
||||
#10
|
||||
b00000000000000000000000000000001 #
|
||||
b11 $
|
||||
b1111 %
|
||||
b11 &
|
||||
b11 %
|
||||
b1111 &
|
||||
b11 '
|
||||
b1111 (
|
||||
b11 (
|
||||
b1111 )
|
||||
b11 *
|
||||
b1111 *
|
||||
b11 +
|
||||
b11 ,
|
||||
b11 -
|
||||
r0.1 .
|
||||
r0.2 0
|
||||
r0.3 2
|
||||
b0000000000000000000000000000000100000000000000000000000011111110 4
|
||||
b00000000000000000000000000000001 6
|
||||
b00000000000000000000000000000010 7
|
||||
b111 8
|
||||
1:
|
||||
b11 .
|
||||
r0.1 /
|
||||
r0.2 1
|
||||
r0.3 3
|
||||
b0000000000000000000000000000000100000000000000000000000011111110 5
|
||||
b00000000000000000000000000000001 7
|
||||
b00000000000000000000000000000010 8
|
||||
b111 9
|
||||
1;
|
||||
#15
|
||||
0:
|
||||
0;
|
||||
#20
|
||||
b00000000000000000000000000000010 #
|
||||
b00 $
|
||||
b0000 %
|
||||
b00 &
|
||||
b00 %
|
||||
b0000 &
|
||||
b00 '
|
||||
b0000 (
|
||||
b00 (
|
||||
b0000 )
|
||||
b00 *
|
||||
b0000 *
|
||||
b00 +
|
||||
b00 ,
|
||||
b00 -
|
||||
r0.2 .
|
||||
r0.4 0
|
||||
r0.6 2
|
||||
b0000000000000000000000000000001000000000000000000000000011111101 4
|
||||
b00000000000000000000000000000010 6
|
||||
b00000000000000000000000000000100 7
|
||||
b110 8
|
||||
b111111 9
|
||||
1:
|
||||
b00 .
|
||||
r0.2 /
|
||||
r0.4 1
|
||||
r0.6 3
|
||||
b0000000000000000000000000000001000000000000000000000000011111101 5
|
||||
b00000000000000000000000000000010 7
|
||||
b00000000000000000000000000000100 8
|
||||
b110 9
|
||||
b111111 :
|
||||
1;
|
||||
#25
|
||||
0:
|
||||
0;
|
||||
#30
|
||||
b00000000000000000000000000000011 #
|
||||
b11 $
|
||||
b1111 %
|
||||
b11 &
|
||||
b11 %
|
||||
b1111 &
|
||||
b11 '
|
||||
b1111 (
|
||||
b11 (
|
||||
b1111 )
|
||||
b11 *
|
||||
b1111 *
|
||||
b11 +
|
||||
b11 ,
|
||||
b11 -
|
||||
r0.3 .
|
||||
r0.6000000000000001 0
|
||||
r0.8999999999999999 2
|
||||
b0000000000000000000000000000001100000000000000000000000011111100 4
|
||||
b00000000000000000000000000000011 6
|
||||
b00000000000000000000000000000110 7
|
||||
b101 8
|
||||
b110110 9
|
||||
1:
|
||||
b11 .
|
||||
r0.3 /
|
||||
r0.6000000000000001 1
|
||||
r0.8999999999999999 3
|
||||
b0000000000000000000000000000001100000000000000000000000011111100 5
|
||||
b00000000000000000000000000000011 7
|
||||
b00000000000000000000000000000110 8
|
||||
b101 9
|
||||
b110110 :
|
||||
1;
|
||||
#35
|
||||
0:
|
||||
0;
|
||||
#40
|
||||
b00000000000000000000000000000100 #
|
||||
b00 $
|
||||
b0000 %
|
||||
b00 &
|
||||
b00 %
|
||||
b0000 &
|
||||
b00 '
|
||||
b0000 (
|
||||
b00 (
|
||||
b0000 )
|
||||
b00 *
|
||||
b0000 *
|
||||
b00 +
|
||||
b00 ,
|
||||
b00 -
|
||||
r0.4 .
|
||||
r0.8 0
|
||||
r1.2 2
|
||||
b0000000000000000000000000000010000000000000000000000000011111011 4
|
||||
b00000000000000000000000000000100 6
|
||||
b00000000000000000000000000001000 7
|
||||
b100 8
|
||||
b101101 9
|
||||
1:
|
||||
b00 .
|
||||
r0.4 /
|
||||
r0.8 1
|
||||
r1.2 3
|
||||
b0000000000000000000000000000010000000000000000000000000011111011 5
|
||||
b00000000000000000000000000000100 7
|
||||
b00000000000000000000000000001000 8
|
||||
b100 9
|
||||
b101101 :
|
||||
1;
|
||||
#45
|
||||
0:
|
||||
0;
|
||||
#50
|
||||
b00000000000000000000000000000101 #
|
||||
b11 $
|
||||
b1111 %
|
||||
b11 &
|
||||
b11 %
|
||||
b1111 &
|
||||
b11 '
|
||||
b1111 (
|
||||
b11 (
|
||||
b1111 )
|
||||
b11 *
|
||||
b1111 *
|
||||
b11 +
|
||||
b11 ,
|
||||
b11 -
|
||||
r0.5 .
|
||||
r1 0
|
||||
r1.5 2
|
||||
b0000000000000000000000000000010100000000000000000000000011111010 4
|
||||
b00000000000000000000000000000101 6
|
||||
b00000000000000000000000000001010 7
|
||||
b011 8
|
||||
b100100 9
|
||||
1:
|
||||
b11 .
|
||||
r0.5 /
|
||||
r1 1
|
||||
r1.5 3
|
||||
b0000000000000000000000000000010100000000000000000000000011111010 5
|
||||
b00000000000000000000000000000101 7
|
||||
b00000000000000000000000000001010 8
|
||||
b011 9
|
||||
b100100 :
|
||||
1;
|
||||
#55
|
||||
0:
|
||||
0;
|
||||
#60
|
||||
b00000000000000000000000000000110 #
|
||||
b00 $
|
||||
b0000 %
|
||||
b00 &
|
||||
b00 %
|
||||
b0000 &
|
||||
b00 '
|
||||
b0000 (
|
||||
b00 (
|
||||
b0000 )
|
||||
b00 *
|
||||
b0000 *
|
||||
b00 +
|
||||
b00 ,
|
||||
b00 -
|
||||
r0.6 .
|
||||
r1.2 0
|
||||
r1.8 2
|
||||
b0000000000000000000000000000011000000000000000000000000011111001 4
|
||||
b00000000000000000000000000000110 6
|
||||
b00000000000000000000000000001100 7
|
||||
b010 8
|
||||
b011011 9
|
||||
1:
|
||||
b00 .
|
||||
r0.6 /
|
||||
r1.2 1
|
||||
r1.8 3
|
||||
b0000000000000000000000000000011000000000000000000000000011111001 5
|
||||
b00000000000000000000000000000110 7
|
||||
b00000000000000000000000000001100 8
|
||||
b010 9
|
||||
b011011 :
|
||||
1;
|
||||
#64
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
$date
|
||||
Sat Mar 14 09:16:42 2026
|
||||
Tue Mar 31 17:14:36 2026
|
||||
|
||||
$end
|
||||
$version
|
||||
|
|
@ -19,106 +19,108 @@ $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 2 % v_strp2 [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
|
||||
$attrbegin array unpacked bounds 8589934593 $end
|
||||
$scope sv_array v_arru $end
|
||||
$var bit 1 * v_arru[2] $end
|
||||
$var bit 1 + v_arru[1] $end
|
||||
$var bit 1 + v_arru[2] $end
|
||||
$var bit 1 , v_arru[1] $end
|
||||
$upscope $end
|
||||
$attrbegin array unpacked bounds 17179869187 $end
|
||||
$scope sv_array v_arru_arru $end
|
||||
$attrbegin array unpacked bounds 8589934593 $end
|
||||
$scope sv_array [4] $end
|
||||
$var bit 1 , v_arru_arru[4][2] $end
|
||||
$var bit 1 - v_arru_arru[4][1] $end
|
||||
$var bit 1 - v_arru_arru[4][2] $end
|
||||
$var bit 1 . v_arru_arru[4][1] $end
|
||||
$upscope $end
|
||||
$attrbegin array unpacked bounds 8589934593 $end
|
||||
$scope sv_array [3] $end
|
||||
$var bit 1 . v_arru_arru[3][2] $end
|
||||
$var bit 1 / v_arru_arru[3][1] $end
|
||||
$var bit 1 / v_arru_arru[3][2] $end
|
||||
$var bit 1 0 v_arru_arru[3][1] $end
|
||||
$upscope $end
|
||||
$upscope $end
|
||||
$attrbegin array unpacked bounds 17179869187 $end
|
||||
$scope sv_array v_arru_arrp $end
|
||||
$var bit 2 0 v_arru_arrp[4] [2:1] $end
|
||||
$var bit 2 1 v_arru_arrp[3] [2:1] $end
|
||||
$var bit 2 1 v_arru_arrp[4] [2:1] $end
|
||||
$var bit 2 2 v_arru_arrp[3] [2:1] $end
|
||||
$upscope $end
|
||||
$attrbegin array unpacked bounds 17179869187 $end
|
||||
$scope sv_array v_arru_strp $end
|
||||
$var bit 2 2 v_arru_strp[4] [1:0] $end
|
||||
$var bit 2 3 v_arru_strp[3] [1:0] $end
|
||||
$var bit 2 3 v_arru_strp[4] [1:0] $end
|
||||
$var bit 2 4 v_arru_strp[3] [1:0] $end
|
||||
$upscope $end
|
||||
$var real 64 4 v_real $end
|
||||
$var real 64 5 v_real $end
|
||||
$attrbegin array unpacked bounds 1 $end
|
||||
$scope sv_array v_arr_real $end
|
||||
$var real 64 5 v_arr_real[0] $end
|
||||
$var real 64 6 v_arr_real[1] $end
|
||||
$var real 64 6 v_arr_real[0] $end
|
||||
$var real 64 7 v_arr_real[1] $end
|
||||
$upscope $end
|
||||
$var longint 64 7 v_chandle [63:0] $end
|
||||
$var logic 64 8 v_str32x2 [63:0] $end
|
||||
$var longint 64 8 v_chandle [63:0] $end
|
||||
$var logic 64 9 v_str32x2 [63:0] $end
|
||||
$attrbegin misc 07 "" 1 $end
|
||||
$var int 32 9 v_enumed [31:0] $end
|
||||
$var int 32 : v_enumed [31:0] $end
|
||||
$attrbegin misc 07 "" 1 $end
|
||||
$var int 32 : v_enumed2 [31:0] $end
|
||||
$var int 32 ; v_enumed2 [31:0] $end
|
||||
$attrbegin misc 07 "" 2 $end
|
||||
$var logic 3 ; v_enumb [2:0] $end
|
||||
$var logic 6 < v_enumb2_str [5:0] $end
|
||||
$var logic 3 < v_enumb [2:0] $end
|
||||
$var logic 6 = v_enumb2_str [5:0] $end
|
||||
$attrbegin array unpacked bounds -8589934592 $end
|
||||
$scope sv_array unpacked_array $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 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
|
||||
$upscope $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 bit 1 A 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 A PARAM [31:0] $end
|
||||
$upscope $end
|
||||
$scope module p2 $end
|
||||
$var parameter 32 B PARAM [31:0] $end
|
||||
$upscope $end
|
||||
$scope module p3 $end
|
||||
$scope module p2 $end
|
||||
$var parameter 32 C PARAM [31:0] $end
|
||||
$upscope $end
|
||||
$scope module p3 $end
|
||||
$var parameter 32 D PARAM [31:0] $end
|
||||
$upscope $end
|
||||
$upscope $end
|
||||
$upscope $end
|
||||
$enddefinitions $end
|
||||
#0
|
||||
$dumpvars
|
||||
b00000000000000000000000000000011 C
|
||||
b00000000000000000000000000000010 B
|
||||
b00000000000000000000000000000100 A
|
||||
0@
|
||||
b00000000000000000000000000000011 D
|
||||
b00000000000000000000000000000010 C
|
||||
b00000000000000000000000000000100 B
|
||||
0A
|
||||
b00000000 @
|
||||
b00000000 ?
|
||||
b00000000 >
|
||||
b00000000 =
|
||||
b000000 <
|
||||
b000 ;
|
||||
b000000 =
|
||||
b000 <
|
||||
b00000000000000000000000000000000 ;
|
||||
b00000000000000000000000000000000 :
|
||||
b00000000000000000000000000000000 9
|
||||
b0000000000000000000000000000000000000000000000000000000011111111 8
|
||||
b0000000000000000000000000000000000000000000000000000000000000000 7
|
||||
b0000000000000000000000000000000000000000000000000000000011111111 9
|
||||
b0000000000000000000000000000000000000000000000000000000000000000 8
|
||||
r0 7
|
||||
r0 6
|
||||
r0 5
|
||||
r0 4
|
||||
b00 4
|
||||
b00 3
|
||||
b00 2
|
||||
b00 1
|
||||
b00 0
|
||||
00
|
||||
0/
|
||||
0.
|
||||
0-
|
||||
0,
|
||||
0+
|
||||
0*
|
||||
b0000 *
|
||||
b0000 )
|
||||
b0000 (
|
||||
b00 (
|
||||
b00 '
|
||||
b00 &
|
||||
b0000 %
|
||||
b0000 &
|
||||
b00 %
|
||||
b00 $
|
||||
b00000000000000000000000000000000 #
|
||||
1"
|
||||
|
|
@ -128,134 +130,140 @@ $end
|
|||
1!
|
||||
b00000000000000000000000000000001 #
|
||||
b11 $
|
||||
b1111 %
|
||||
b11 &
|
||||
b11 %
|
||||
b1111 &
|
||||
b11 '
|
||||
b1111 (
|
||||
b11 (
|
||||
b1111 )
|
||||
b11 0
|
||||
b1111 *
|
||||
b11 1
|
||||
b11 2
|
||||
b11 3
|
||||
r0.1 4
|
||||
r0.2 5
|
||||
r0.3 6
|
||||
b0000000000000000000000000000000100000000000000000000000011111110 8
|
||||
b00000000000000000000000000000001 9
|
||||
b00000000000000000000000000000010 :
|
||||
b111 ;
|
||||
b11 4
|
||||
r0.1 5
|
||||
r0.2 6
|
||||
r0.3 7
|
||||
b0000000000000000000000000000000100000000000000000000000011111110 9
|
||||
b00000000000000000000000000000001 :
|
||||
b00000000000000000000000000000010 ;
|
||||
b111 <
|
||||
#15
|
||||
0!
|
||||
#20
|
||||
1!
|
||||
b110 ;
|
||||
b00000000000000000000000000000100 :
|
||||
b00000000000000000000000000000010 9
|
||||
b0000000000000000000000000000001000000000000000000000000011111101 8
|
||||
r0.6 6
|
||||
r0.4 5
|
||||
r0.2 4
|
||||
b110 <
|
||||
b00000000000000000000000000000100 ;
|
||||
b00000000000000000000000000000010 :
|
||||
b0000000000000000000000000000001000000000000000000000000011111101 9
|
||||
r0.6 7
|
||||
r0.4 6
|
||||
r0.2 5
|
||||
b00 4
|
||||
b00 3
|
||||
b00 2
|
||||
b00 1
|
||||
b00 0
|
||||
b0000 *
|
||||
b0000 )
|
||||
b0000 (
|
||||
b00 (
|
||||
b00 '
|
||||
b00 &
|
||||
b0000 %
|
||||
b0000 &
|
||||
b00 %
|
||||
b00 $
|
||||
b00000000000000000000000000000010 #
|
||||
b111111 <
|
||||
b111111 =
|
||||
#25
|
||||
0!
|
||||
#30
|
||||
1!
|
||||
b110110 <
|
||||
b110110 =
|
||||
b00000000000000000000000000000011 #
|
||||
b11 $
|
||||
b1111 %
|
||||
b11 &
|
||||
b11 %
|
||||
b1111 &
|
||||
b11 '
|
||||
b1111 (
|
||||
b11 (
|
||||
b1111 )
|
||||
b11 0
|
||||
b1111 *
|
||||
b11 1
|
||||
b11 2
|
||||
b11 3
|
||||
r0.3 4
|
||||
r0.6000000000000001 5
|
||||
r0.8999999999999999 6
|
||||
b0000000000000000000000000000001100000000000000000000000011111100 8
|
||||
b00000000000000000000000000000011 9
|
||||
b00000000000000000000000000000110 :
|
||||
b101 ;
|
||||
b11 4
|
||||
r0.3 5
|
||||
r0.6000000000000001 6
|
||||
r0.8999999999999999 7
|
||||
b0000000000000000000000000000001100000000000000000000000011111100 9
|
||||
b00000000000000000000000000000011 :
|
||||
b00000000000000000000000000000110 ;
|
||||
b101 <
|
||||
#35
|
||||
0!
|
||||
#40
|
||||
1!
|
||||
b100 ;
|
||||
b00000000000000000000000000001000 :
|
||||
b00000000000000000000000000000100 9
|
||||
b0000000000000000000000000000010000000000000000000000000011111011 8
|
||||
r1.2 6
|
||||
r0.8 5
|
||||
r0.4 4
|
||||
b100 <
|
||||
b00000000000000000000000000001000 ;
|
||||
b00000000000000000000000000000100 :
|
||||
b0000000000000000000000000000010000000000000000000000000011111011 9
|
||||
r1.2 7
|
||||
r0.8 6
|
||||
r0.4 5
|
||||
b00 4
|
||||
b00 3
|
||||
b00 2
|
||||
b00 1
|
||||
b00 0
|
||||
b0000 *
|
||||
b0000 )
|
||||
b0000 (
|
||||
b00 (
|
||||
b00 '
|
||||
b00 &
|
||||
b0000 %
|
||||
b0000 &
|
||||
b00 %
|
||||
b00 $
|
||||
b00000000000000000000000000000100 #
|
||||
b101101 <
|
||||
b101101 =
|
||||
#45
|
||||
0!
|
||||
#50
|
||||
1!
|
||||
b100100 <
|
||||
b100100 =
|
||||
b00000000000000000000000000000101 #
|
||||
b11 $
|
||||
b1111 %
|
||||
b11 &
|
||||
b11 %
|
||||
b1111 &
|
||||
b11 '
|
||||
b1111 (
|
||||
b11 (
|
||||
b1111 )
|
||||
b11 0
|
||||
b1111 *
|
||||
b11 1
|
||||
b11 2
|
||||
b11 3
|
||||
r0.5 4
|
||||
r1 5
|
||||
r1.5 6
|
||||
b0000000000000000000000000000010100000000000000000000000011111010 8
|
||||
b00000000000000000000000000000101 9
|
||||
b00000000000000000000000000001010 :
|
||||
b011 ;
|
||||
b11 4
|
||||
r0.5 5
|
||||
r1 6
|
||||
r1.5 7
|
||||
b0000000000000000000000000000010100000000000000000000000011111010 9
|
||||
b00000000000000000000000000000101 :
|
||||
b00000000000000000000000000001010 ;
|
||||
b011 <
|
||||
#55
|
||||
0!
|
||||
#60
|
||||
1!
|
||||
b010 ;
|
||||
b00000000000000000000000000001100 :
|
||||
b00000000000000000000000000000110 9
|
||||
b0000000000000000000000000000011000000000000000000000000011111001 8
|
||||
r1.8 6
|
||||
r1.2 5
|
||||
r0.6 4
|
||||
b010 <
|
||||
b00000000000000000000000000001100 ;
|
||||
b00000000000000000000000000000110 :
|
||||
b0000000000000000000000000000011000000000000000000000000011111001 9
|
||||
r1.8 7
|
||||
r1.2 6
|
||||
r0.6 5
|
||||
b00 4
|
||||
b00 3
|
||||
b00 2
|
||||
b00 1
|
||||
b00 0
|
||||
b0000 *
|
||||
b0000 )
|
||||
b0000 (
|
||||
b00 (
|
||||
b00 '
|
||||
b00 &
|
||||
b0000 %
|
||||
b0000 &
|
||||
b00 %
|
||||
b00 $
|
||||
b00000000000000000000000000000110 #
|
||||
b011011 <
|
||||
b011011 =
|
||||
|
|
|
|||
|
|
@ -52,6 +52,8 @@
|
|||
(cyc\[31\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(v_strp\[0\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(v_strp\[1\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(v_strp2\[0\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(v_strp2\[1\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(v_strp_strp\[0\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(v_strp_strp\[1\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(v_strp_strp\[2\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
|
|
@ -68,20 +70,20 @@
|
|||
(v_arrp_strp\[1\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(v_arrp_strp\[2\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(v_arrp_strp\[3\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(v_arru[1] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(v_arru[2] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(v_arru_arru[3][1] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(v_arru_arru[3][2] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(v_arru_arru[4][1] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(v_arru[1] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(v_arru_arru[4][2] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(v_arru_arrp[3]\[0\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(v_arru_arrp[3]\[1\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(v_arru_arru[4][1] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(v_arru_arru[3][2] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(v_arru_arru[3][1] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(v_arru_arrp[4]\[0\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(v_arru_arrp[4]\[1\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(v_arru_strp[3]\[0\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(v_arru_strp[3]\[1\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(v_arru_arrp[3]\[0\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(v_arru_arrp[3]\[1\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(v_arru_strp[4]\[0\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(v_arru_strp[4]\[1\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(v_arru_strp[3]\[0\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(v_arru_strp[3]\[1\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(v_real\[0\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(v_real\[1\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(v_real\[2\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
|
|
|
|||
|
|
@ -1,51 +1,52 @@
|
|||
$version Generated by VerilatedVcd $end
|
||||
$timescale 1ps $end
|
||||
$scope module top $end
|
||||
$var wire 1 : clk $end
|
||||
$var wire 1 ; clk $end
|
||||
$scope module $unit $end
|
||||
$var wire 1 " global_bit $end
|
||||
$upscope $end
|
||||
$scope module t $end
|
||||
$var wire 1 : clk $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 2 % v_strp2 [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[2] $end
|
||||
$var wire 1 = v_arru_arru[3][1] $end
|
||||
$var wire 1 > v_arru_arru[3][2] $end
|
||||
$var wire 1 = v_arru[1] $end
|
||||
$var wire 1 > v_arru_arru[4][2] $end
|
||||
$var wire 1 ? v_arru_arru[4][1] $end
|
||||
$var wire 1 @ v_arru_arru[4][2] $end
|
||||
$var wire 2 * v_arru_arrp[3] [2:1] $end
|
||||
$var wire 1 @ v_arru_arru[3][2] $end
|
||||
$var wire 1 A v_arru_arru[3][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_arrp[3] [2:1] $end
|
||||
$var wire 2 - v_arru_strp[4] [1:0] $end
|
||||
$var real 64 . v_real $end
|
||||
$var real 64 0 v_arr_real[0] $end
|
||||
$var real 64 2 v_arr_real[1] $end
|
||||
$var wire 64 A v_chandle [63:0] $end
|
||||
$var wire 64 4 v_str32x2 [63:0] $end
|
||||
$var wire 32 6 v_enumed [31:0] $end
|
||||
$var wire 32 7 v_enumed2 [31:0] $end
|
||||
$var wire 3 8 v_enumb [2:0] $end
|
||||
$var wire 6 9 v_enumb2_str [5:0] $end
|
||||
$var wire 8 C unpacked_array[-2] [7:0] $end
|
||||
$var wire 8 D unpacked_array[-1] [7:0] $end
|
||||
$var wire 8 E unpacked_array[0] [7:0] $end
|
||||
$var wire 1 F 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 2 . v_arru_strp[3] [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 B v_chandle [63:0] $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 G PARAM [31:0] $end
|
||||
$upscope $end
|
||||
$scope module p2 $end
|
||||
$var wire 32 H PARAM [31:0] $end
|
||||
$upscope $end
|
||||
$scope module p3 $end
|
||||
$scope module p2 $end
|
||||
$var wire 32 I PARAM [31:0] $end
|
||||
$upscope $end
|
||||
$scope module p3 $end
|
||||
$var wire 32 J PARAM [31:0] $end
|
||||
$upscope $end
|
||||
$upscope $end
|
||||
$upscope $end
|
||||
$enddefinitions $end
|
||||
|
|
@ -55,170 +56,177 @@ $enddefinitions $end
|
|||
1"
|
||||
b00000000000000000000000000000000 #
|
||||
b00 $
|
||||
b0000 %
|
||||
b00 &
|
||||
b00 %
|
||||
b0000 &
|
||||
b00 '
|
||||
b0000 (
|
||||
b00 (
|
||||
b0000 )
|
||||
b00 *
|
||||
b0000 *
|
||||
b00 +
|
||||
b00 ,
|
||||
b00 -
|
||||
r0 .
|
||||
r0 0
|
||||
r0 2
|
||||
b0000000000000000000000000000000000000000000000000000000011111111 4
|
||||
b00000000000000000000000000000000 6
|
||||
b00 .
|
||||
r0 /
|
||||
r0 1
|
||||
r0 3
|
||||
b0000000000000000000000000000000000000000000000000000000011111111 5
|
||||
b00000000000000000000000000000000 7
|
||||
b000 8
|
||||
b000000 9
|
||||
0:
|
||||
b00000000000000000000000000000000 8
|
||||
b000 9
|
||||
b000000 :
|
||||
0;
|
||||
0<
|
||||
0=
|
||||
0>
|
||||
0?
|
||||
0@
|
||||
b0000000000000000000000000000000000000000000000000000000000000000 A
|
||||
b00000000 C
|
||||
0A
|
||||
b0000000000000000000000000000000000000000000000000000000000000000 B
|
||||
b00000000 D
|
||||
b00000000 E
|
||||
0F
|
||||
b00000000000000000000000000000100 G
|
||||
b00000000000000000000000000000010 H
|
||||
b00000000000000000000000000000011 I
|
||||
b00000000 F
|
||||
0G
|
||||
b00000000000000000000000000000100 H
|
||||
b00000000000000000000000000000010 I
|
||||
b00000000000000000000000000000011 J
|
||||
#10
|
||||
b00000000000000000000000000000001 #
|
||||
b11 $
|
||||
b1111 %
|
||||
b11 &
|
||||
b11 %
|
||||
b1111 &
|
||||
b11 '
|
||||
b1111 (
|
||||
b11 (
|
||||
b1111 )
|
||||
b11 *
|
||||
b1111 *
|
||||
b11 +
|
||||
b11 ,
|
||||
b11 -
|
||||
r0.1 .
|
||||
r0.2 0
|
||||
r0.3 2
|
||||
b0000000000000000000000000000000100000000000000000000000011111110 4
|
||||
b00000000000000000000000000000001 6
|
||||
b00000000000000000000000000000010 7
|
||||
b111 8
|
||||
1:
|
||||
b11 .
|
||||
r0.1 /
|
||||
r0.2 1
|
||||
r0.3 3
|
||||
b0000000000000000000000000000000100000000000000000000000011111110 5
|
||||
b00000000000000000000000000000001 7
|
||||
b00000000000000000000000000000010 8
|
||||
b111 9
|
||||
1;
|
||||
#15
|
||||
0:
|
||||
0;
|
||||
#20
|
||||
b00000000000000000000000000000010 #
|
||||
b00 $
|
||||
b0000 %
|
||||
b00 &
|
||||
b00 %
|
||||
b0000 &
|
||||
b00 '
|
||||
b0000 (
|
||||
b00 (
|
||||
b0000 )
|
||||
b00 *
|
||||
b0000 *
|
||||
b00 +
|
||||
b00 ,
|
||||
b00 -
|
||||
r0.2 .
|
||||
r0.4 0
|
||||
r0.6 2
|
||||
b0000000000000000000000000000001000000000000000000000000011111101 4
|
||||
b00000000000000000000000000000010 6
|
||||
b00000000000000000000000000000100 7
|
||||
b110 8
|
||||
b111111 9
|
||||
1:
|
||||
b00 .
|
||||
r0.2 /
|
||||
r0.4 1
|
||||
r0.6 3
|
||||
b0000000000000000000000000000001000000000000000000000000011111101 5
|
||||
b00000000000000000000000000000010 7
|
||||
b00000000000000000000000000000100 8
|
||||
b110 9
|
||||
b111111 :
|
||||
1;
|
||||
#25
|
||||
0:
|
||||
0;
|
||||
#30
|
||||
b00000000000000000000000000000011 #
|
||||
b11 $
|
||||
b1111 %
|
||||
b11 &
|
||||
b11 %
|
||||
b1111 &
|
||||
b11 '
|
||||
b1111 (
|
||||
b11 (
|
||||
b1111 )
|
||||
b11 *
|
||||
b1111 *
|
||||
b11 +
|
||||
b11 ,
|
||||
b11 -
|
||||
r0.3 .
|
||||
r0.6000000000000001 0
|
||||
r0.8999999999999999 2
|
||||
b0000000000000000000000000000001100000000000000000000000011111100 4
|
||||
b00000000000000000000000000000011 6
|
||||
b00000000000000000000000000000110 7
|
||||
b101 8
|
||||
b110110 9
|
||||
1:
|
||||
b11 .
|
||||
r0.3 /
|
||||
r0.6000000000000001 1
|
||||
r0.8999999999999999 3
|
||||
b0000000000000000000000000000001100000000000000000000000011111100 5
|
||||
b00000000000000000000000000000011 7
|
||||
b00000000000000000000000000000110 8
|
||||
b101 9
|
||||
b110110 :
|
||||
1;
|
||||
#35
|
||||
0:
|
||||
0;
|
||||
#40
|
||||
b00000000000000000000000000000100 #
|
||||
b00 $
|
||||
b0000 %
|
||||
b00 &
|
||||
b00 %
|
||||
b0000 &
|
||||
b00 '
|
||||
b0000 (
|
||||
b00 (
|
||||
b0000 )
|
||||
b00 *
|
||||
b0000 *
|
||||
b00 +
|
||||
b00 ,
|
||||
b00 -
|
||||
r0.4 .
|
||||
r0.8 0
|
||||
r1.2 2
|
||||
b0000000000000000000000000000010000000000000000000000000011111011 4
|
||||
b00000000000000000000000000000100 6
|
||||
b00000000000000000000000000001000 7
|
||||
b100 8
|
||||
b101101 9
|
||||
1:
|
||||
b00 .
|
||||
r0.4 /
|
||||
r0.8 1
|
||||
r1.2 3
|
||||
b0000000000000000000000000000010000000000000000000000000011111011 5
|
||||
b00000000000000000000000000000100 7
|
||||
b00000000000000000000000000001000 8
|
||||
b100 9
|
||||
b101101 :
|
||||
1;
|
||||
#45
|
||||
0:
|
||||
0;
|
||||
#50
|
||||
b00000000000000000000000000000101 #
|
||||
b11 $
|
||||
b1111 %
|
||||
b11 &
|
||||
b11 %
|
||||
b1111 &
|
||||
b11 '
|
||||
b1111 (
|
||||
b11 (
|
||||
b1111 )
|
||||
b11 *
|
||||
b1111 *
|
||||
b11 +
|
||||
b11 ,
|
||||
b11 -
|
||||
r0.5 .
|
||||
r1 0
|
||||
r1.5 2
|
||||
b0000000000000000000000000000010100000000000000000000000011111010 4
|
||||
b00000000000000000000000000000101 6
|
||||
b00000000000000000000000000001010 7
|
||||
b011 8
|
||||
b100100 9
|
||||
1:
|
||||
b11 .
|
||||
r0.5 /
|
||||
r1 1
|
||||
r1.5 3
|
||||
b0000000000000000000000000000010100000000000000000000000011111010 5
|
||||
b00000000000000000000000000000101 7
|
||||
b00000000000000000000000000001010 8
|
||||
b011 9
|
||||
b100100 :
|
||||
1;
|
||||
#55
|
||||
0:
|
||||
0;
|
||||
#60
|
||||
b00000000000000000000000000000110 #
|
||||
b00 $
|
||||
b0000 %
|
||||
b00 &
|
||||
b00 %
|
||||
b0000 &
|
||||
b00 '
|
||||
b0000 (
|
||||
b00 (
|
||||
b0000 )
|
||||
b00 *
|
||||
b0000 *
|
||||
b00 +
|
||||
b00 ,
|
||||
b00 -
|
||||
r0.6 .
|
||||
r1.2 0
|
||||
r1.8 2
|
||||
b0000000000000000000000000000011000000000000000000000000011111001 4
|
||||
b00000000000000000000000000000110 6
|
||||
b00000000000000000000000000001100 7
|
||||
b010 8
|
||||
b011011 9
|
||||
1:
|
||||
b00 .
|
||||
r0.6 /
|
||||
r1.2 1
|
||||
r1.8 3
|
||||
b0000000000000000000000000000011000000000000000000000000011111001 5
|
||||
b00000000000000000000000000000110 7
|
||||
b00000000000000000000000000001100 8
|
||||
b010 9
|
||||
b011011 :
|
||||
1;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
$date
|
||||
Sat Mar 14 09:17:23 2026
|
||||
Tue Mar 31 17:14:39 2026
|
||||
|
||||
$end
|
||||
$version
|
||||
|
|
@ -18,106 +18,108 @@ $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 2 % v_strp2 [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
|
||||
$attrbegin array unpacked bounds 8589934593 $end
|
||||
$scope sv_array v_arru $end
|
||||
$var bit 1 * v_arru[2] $end
|
||||
$var bit 1 + v_arru[1] $end
|
||||
$var bit 1 + v_arru[2] $end
|
||||
$var bit 1 , v_arru[1] $end
|
||||
$upscope $end
|
||||
$attrbegin array unpacked bounds 17179869187 $end
|
||||
$scope sv_array v_arru_arru $end
|
||||
$attrbegin array unpacked bounds 8589934593 $end
|
||||
$scope sv_array [4] $end
|
||||
$var bit 1 , v_arru_arru[4][2] $end
|
||||
$var bit 1 - v_arru_arru[4][1] $end
|
||||
$var bit 1 - v_arru_arru[4][2] $end
|
||||
$var bit 1 . v_arru_arru[4][1] $end
|
||||
$upscope $end
|
||||
$attrbegin array unpacked bounds 8589934593 $end
|
||||
$scope sv_array [3] $end
|
||||
$var bit 1 . v_arru_arru[3][2] $end
|
||||
$var bit 1 / v_arru_arru[3][1] $end
|
||||
$var bit 1 / v_arru_arru[3][2] $end
|
||||
$var bit 1 0 v_arru_arru[3][1] $end
|
||||
$upscope $end
|
||||
$upscope $end
|
||||
$attrbegin array unpacked bounds 17179869187 $end
|
||||
$scope sv_array v_arru_arrp $end
|
||||
$var bit 2 0 v_arru_arrp[4] [2:1] $end
|
||||
$var bit 2 1 v_arru_arrp[3] [2:1] $end
|
||||
$var bit 2 1 v_arru_arrp[4] [2:1] $end
|
||||
$var bit 2 2 v_arru_arrp[3] [2:1] $end
|
||||
$upscope $end
|
||||
$attrbegin array unpacked bounds 17179869187 $end
|
||||
$scope sv_array v_arru_strp $end
|
||||
$var bit 2 2 v_arru_strp[4] [1:0] $end
|
||||
$var bit 2 3 v_arru_strp[3] [1:0] $end
|
||||
$var bit 2 3 v_arru_strp[4] [1:0] $end
|
||||
$var bit 2 4 v_arru_strp[3] [1:0] $end
|
||||
$upscope $end
|
||||
$var real 64 4 v_real $end
|
||||
$var real 64 5 v_real $end
|
||||
$attrbegin array unpacked bounds 1 $end
|
||||
$scope sv_array v_arr_real $end
|
||||
$var real 64 5 v_arr_real[0] $end
|
||||
$var real 64 6 v_arr_real[1] $end
|
||||
$var real 64 6 v_arr_real[0] $end
|
||||
$var real 64 7 v_arr_real[1] $end
|
||||
$upscope $end
|
||||
$var longint 64 7 v_chandle [63:0] $end
|
||||
$var logic 64 8 v_str32x2 [63:0] $end
|
||||
$var longint 64 8 v_chandle [63:0] $end
|
||||
$var logic 64 9 v_str32x2 [63:0] $end
|
||||
$attrbegin misc 07 "" 1 $end
|
||||
$var int 32 9 v_enumed [31:0] $end
|
||||
$var int 32 : v_enumed [31:0] $end
|
||||
$attrbegin misc 07 "" 1 $end
|
||||
$var int 32 : v_enumed2 [31:0] $end
|
||||
$var int 32 ; v_enumed2 [31:0] $end
|
||||
$attrbegin misc 07 "" 2 $end
|
||||
$var logic 3 ; v_enumb [2:0] $end
|
||||
$var logic 6 < v_enumb2_str [5:0] $end
|
||||
$var logic 3 < v_enumb [2:0] $end
|
||||
$var logic 6 = v_enumb2_str [5:0] $end
|
||||
$attrbegin array unpacked bounds -8589934592 $end
|
||||
$scope sv_array unpacked_array $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 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
|
||||
$upscope $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 bit 1 A 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 A PARAM [31:0] $end
|
||||
$upscope $end
|
||||
$scope module p2 $end
|
||||
$var parameter 32 B PARAM [31:0] $end
|
||||
$upscope $end
|
||||
$scope module p3 $end
|
||||
$scope module p2 $end
|
||||
$var parameter 32 C PARAM [31:0] $end
|
||||
$upscope $end
|
||||
$scope module p3 $end
|
||||
$var parameter 32 D PARAM [31:0] $end
|
||||
$upscope $end
|
||||
$upscope $end
|
||||
$upscope $end
|
||||
$enddefinitions $end
|
||||
#0
|
||||
$dumpvars
|
||||
b00000000000000000000000000000011 C
|
||||
b00000000000000000000000000000010 B
|
||||
b00000000000000000000000000000100 A
|
||||
0@
|
||||
b00000000000000000000000000000011 D
|
||||
b00000000000000000000000000000010 C
|
||||
b00000000000000000000000000000100 B
|
||||
0A
|
||||
b00000000 @
|
||||
b00000000 ?
|
||||
b00000000 >
|
||||
b00000000 =
|
||||
b000000 <
|
||||
b000 ;
|
||||
b000000 =
|
||||
b000 <
|
||||
b00000000000000000000000000000000 ;
|
||||
b00000000000000000000000000000000 :
|
||||
b00000000000000000000000000000000 9
|
||||
b0000000000000000000000000000000000000000000000000000000011111111 8
|
||||
b0000000000000000000000000000000000000000000000000000000000000000 7
|
||||
b0000000000000000000000000000000000000000000000000000000011111111 9
|
||||
b0000000000000000000000000000000000000000000000000000000000000000 8
|
||||
r0 7
|
||||
r0 6
|
||||
r0 5
|
||||
r0 4
|
||||
b00 4
|
||||
b00 3
|
||||
b00 2
|
||||
b00 1
|
||||
b00 0
|
||||
00
|
||||
0/
|
||||
0.
|
||||
0-
|
||||
0,
|
||||
0+
|
||||
0*
|
||||
b0000 *
|
||||
b0000 )
|
||||
b0000 (
|
||||
b00 (
|
||||
b00 '
|
||||
b00 &
|
||||
b0000 %
|
||||
b0000 &
|
||||
b00 %
|
||||
b00 $
|
||||
b00000000000000000000000000000000 #
|
||||
0"
|
||||
|
|
@ -127,135 +129,141 @@ $end
|
|||
1"
|
||||
b00000000000000000000000000000001 #
|
||||
b11 $
|
||||
b1111 %
|
||||
b11 &
|
||||
b11 %
|
||||
b1111 &
|
||||
b11 '
|
||||
b1111 (
|
||||
b11 (
|
||||
b1111 )
|
||||
b11 0
|
||||
b1111 *
|
||||
b11 1
|
||||
b11 2
|
||||
b11 3
|
||||
r0.1 4
|
||||
r0.2 5
|
||||
r0.3 6
|
||||
b0000000000000000000000000000000100000000000000000000000011111110 8
|
||||
b00000000000000000000000000000001 9
|
||||
b00000000000000000000000000000010 :
|
||||
b111 ;
|
||||
b11 4
|
||||
r0.1 5
|
||||
r0.2 6
|
||||
r0.3 7
|
||||
b0000000000000000000000000000000100000000000000000000000011111110 9
|
||||
b00000000000000000000000000000001 :
|
||||
b00000000000000000000000000000010 ;
|
||||
b111 <
|
||||
#15
|
||||
0"
|
||||
#20
|
||||
1"
|
||||
b110 ;
|
||||
b00000000000000000000000000000100 :
|
||||
b00000000000000000000000000000010 9
|
||||
b0000000000000000000000000000001000000000000000000000000011111101 8
|
||||
r0.6 6
|
||||
r0.4 5
|
||||
r0.2 4
|
||||
b110 <
|
||||
b00000000000000000000000000000100 ;
|
||||
b00000000000000000000000000000010 :
|
||||
b0000000000000000000000000000001000000000000000000000000011111101 9
|
||||
r0.6 7
|
||||
r0.4 6
|
||||
r0.2 5
|
||||
b00 4
|
||||
b00 3
|
||||
b00 2
|
||||
b00 1
|
||||
b00 0
|
||||
b0000 *
|
||||
b0000 )
|
||||
b0000 (
|
||||
b00 (
|
||||
b00 '
|
||||
b00 &
|
||||
b0000 %
|
||||
b0000 &
|
||||
b00 %
|
||||
b00 $
|
||||
b00000000000000000000000000000010 #
|
||||
b111111 <
|
||||
b111111 =
|
||||
#25
|
||||
0"
|
||||
#30
|
||||
1"
|
||||
b110110 <
|
||||
b110110 =
|
||||
b00000000000000000000000000000011 #
|
||||
b11 $
|
||||
b1111 %
|
||||
b11 &
|
||||
b11 %
|
||||
b1111 &
|
||||
b11 '
|
||||
b1111 (
|
||||
b11 (
|
||||
b1111 )
|
||||
b11 0
|
||||
b1111 *
|
||||
b11 1
|
||||
b11 2
|
||||
b11 3
|
||||
r0.3 4
|
||||
r0.6000000000000001 5
|
||||
r0.8999999999999999 6
|
||||
b0000000000000000000000000000001100000000000000000000000011111100 8
|
||||
b00000000000000000000000000000011 9
|
||||
b00000000000000000000000000000110 :
|
||||
b101 ;
|
||||
b11 4
|
||||
r0.3 5
|
||||
r0.6000000000000001 6
|
||||
r0.8999999999999999 7
|
||||
b0000000000000000000000000000001100000000000000000000000011111100 9
|
||||
b00000000000000000000000000000011 :
|
||||
b00000000000000000000000000000110 ;
|
||||
b101 <
|
||||
#35
|
||||
0"
|
||||
#40
|
||||
1"
|
||||
b100 ;
|
||||
b00000000000000000000000000001000 :
|
||||
b00000000000000000000000000000100 9
|
||||
b0000000000000000000000000000010000000000000000000000000011111011 8
|
||||
r1.2 6
|
||||
r0.8 5
|
||||
r0.4 4
|
||||
b100 <
|
||||
b00000000000000000000000000001000 ;
|
||||
b00000000000000000000000000000100 :
|
||||
b0000000000000000000000000000010000000000000000000000000011111011 9
|
||||
r1.2 7
|
||||
r0.8 6
|
||||
r0.4 5
|
||||
b00 4
|
||||
b00 3
|
||||
b00 2
|
||||
b00 1
|
||||
b00 0
|
||||
b0000 *
|
||||
b0000 )
|
||||
b0000 (
|
||||
b00 (
|
||||
b00 '
|
||||
b00 &
|
||||
b0000 %
|
||||
b0000 &
|
||||
b00 %
|
||||
b00 $
|
||||
b00000000000000000000000000000100 #
|
||||
b101101 <
|
||||
b101101 =
|
||||
#45
|
||||
0"
|
||||
#50
|
||||
1"
|
||||
b100100 <
|
||||
b100100 =
|
||||
b00000000000000000000000000000101 #
|
||||
b11 $
|
||||
b1111 %
|
||||
b11 &
|
||||
b11 %
|
||||
b1111 &
|
||||
b11 '
|
||||
b1111 (
|
||||
b11 (
|
||||
b1111 )
|
||||
b11 0
|
||||
b1111 *
|
||||
b11 1
|
||||
b11 2
|
||||
b11 3
|
||||
r0.5 4
|
||||
r1 5
|
||||
r1.5 6
|
||||
b0000000000000000000000000000010100000000000000000000000011111010 8
|
||||
b00000000000000000000000000000101 9
|
||||
b00000000000000000000000000001010 :
|
||||
b011 ;
|
||||
b11 4
|
||||
r0.5 5
|
||||
r1 6
|
||||
r1.5 7
|
||||
b0000000000000000000000000000010100000000000000000000000011111010 9
|
||||
b00000000000000000000000000000101 :
|
||||
b00000000000000000000000000001010 ;
|
||||
b011 <
|
||||
#55
|
||||
0"
|
||||
#60
|
||||
1"
|
||||
b010 ;
|
||||
b00000000000000000000000000001100 :
|
||||
b00000000000000000000000000000110 9
|
||||
b0000000000000000000000000000011000000000000000000000000011111001 8
|
||||
r1.8 6
|
||||
r1.2 5
|
||||
r0.6 4
|
||||
b010 <
|
||||
b00000000000000000000000000001100 ;
|
||||
b00000000000000000000000000000110 :
|
||||
b0000000000000000000000000000011000000000000000000000000011111001 9
|
||||
r1.8 7
|
||||
r1.2 6
|
||||
r0.6 5
|
||||
b00 4
|
||||
b00 3
|
||||
b00 2
|
||||
b00 1
|
||||
b00 0
|
||||
b0000 *
|
||||
b0000 )
|
||||
b0000 (
|
||||
b00 (
|
||||
b00 '
|
||||
b00 &
|
||||
b0000 %
|
||||
b0000 &
|
||||
b00 %
|
||||
b00 $
|
||||
b00000000000000000000000000000110 #
|
||||
b011011 <
|
||||
b011011 =
|
||||
#64
|
||||
|
|
|
|||
|
|
@ -5,46 +5,47 @@ $timescale 1ps $end
|
|||
$var wire 1 " global_bit $end
|
||||
$upscope $end
|
||||
$scope module t $end
|
||||
$var wire 1 : clk $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[2] $end
|
||||
$var wire 1 < v_arru[1] $end
|
||||
$var wire 1 = v_arru_arru[4][2] $end
|
||||
$var wire 1 > v_arru_arru[4][1] $end
|
||||
$var wire 1 ? v_arru_arru[3][2] $end
|
||||
$var wire 1 @ v_arru_arru[3][1] $end
|
||||
$var wire 2 * v_arru_arrp[4] [2:1] $end
|
||||
$var wire 2 + v_arru_arrp[3] [2:1] $end
|
||||
$var wire 2 , v_arru_strp[4] [1:0] $end
|
||||
$var wire 2 - v_arru_strp[3] [1:0] $end
|
||||
$var real 64 . v_real $end
|
||||
$var real 64 0 v_arr_real[0] $end
|
||||
$var real 64 2 v_arr_real[1] $end
|
||||
$var wire 64 A v_chandle [63:0] $end
|
||||
$var wire 64 4 v_str32x2 [63:0] $end
|
||||
$var wire 32 6 v_enumed [31:0] $end
|
||||
$var wire 32 7 v_enumed2 [31:0] $end
|
||||
$var wire 3 8 v_enumb [2:0] $end
|
||||
$var wire 6 9 v_enumb2_str [5:0] $end
|
||||
$var wire 8 C unpacked_array[-2] [7:0] $end
|
||||
$var wire 8 D unpacked_array[-1] [7:0] $end
|
||||
$var wire 8 E unpacked_array[0] [7:0] $end
|
||||
$var wire 1 F 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 2 % v_strp2 [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[2] $end
|
||||
$var wire 1 = v_arru[1] $end
|
||||
$var wire 1 > v_arru_arru[4][2] $end
|
||||
$var wire 1 ? v_arru_arru[4][1] $end
|
||||
$var wire 1 @ v_arru_arru[3][2] $end
|
||||
$var wire 1 A v_arru_arru[3][1] $end
|
||||
$var wire 2 + v_arru_arrp[4] [2:1] $end
|
||||
$var wire 2 , v_arru_arrp[3] [2:1] $end
|
||||
$var wire 2 - v_arru_strp[4] [1:0] $end
|
||||
$var wire 2 . v_arru_strp[3] [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 B v_chandle [63:0] $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 G PARAM [31:0] $end
|
||||
$upscope $end
|
||||
$scope module p2 $end
|
||||
$var wire 32 H PARAM [31:0] $end
|
||||
$upscope $end
|
||||
$scope module p3 $end
|
||||
$scope module p2 $end
|
||||
$var wire 32 I PARAM [31:0] $end
|
||||
$upscope $end
|
||||
$scope module p3 $end
|
||||
$var wire 32 J PARAM [31:0] $end
|
||||
$upscope $end
|
||||
$upscope $end
|
||||
$upscope $end
|
||||
$enddefinitions $end
|
||||
|
|
@ -54,171 +55,178 @@ $enddefinitions $end
|
|||
1"
|
||||
b00000000000000000000000000000000 #
|
||||
b00 $
|
||||
b0000 %
|
||||
b00 &
|
||||
b00 %
|
||||
b0000 &
|
||||
b00 '
|
||||
b0000 (
|
||||
b00 (
|
||||
b0000 )
|
||||
b00 *
|
||||
b0000 *
|
||||
b00 +
|
||||
b00 ,
|
||||
b00 -
|
||||
r0 .
|
||||
r0 0
|
||||
r0 2
|
||||
b0000000000000000000000000000000000000000000000000000000011111111 4
|
||||
b00000000000000000000000000000000 6
|
||||
b00 .
|
||||
r0 /
|
||||
r0 1
|
||||
r0 3
|
||||
b0000000000000000000000000000000000000000000000000000000011111111 5
|
||||
b00000000000000000000000000000000 7
|
||||
b000 8
|
||||
b000000 9
|
||||
0:
|
||||
b00000000000000000000000000000000 8
|
||||
b000 9
|
||||
b000000 :
|
||||
0;
|
||||
0<
|
||||
0=
|
||||
0>
|
||||
0?
|
||||
0@
|
||||
b0000000000000000000000000000000000000000000000000000000000000000 A
|
||||
b00000000 C
|
||||
0A
|
||||
b0000000000000000000000000000000000000000000000000000000000000000 B
|
||||
b00000000 D
|
||||
b00000000 E
|
||||
0F
|
||||
b00000000000000000000000000000100 G
|
||||
b00000000000000000000000000000010 H
|
||||
b00000000000000000000000000000011 I
|
||||
b00000000 F
|
||||
0G
|
||||
b00000000000000000000000000000100 H
|
||||
b00000000000000000000000000000010 I
|
||||
b00000000000000000000000000000011 J
|
||||
#10
|
||||
b00000000000000000000000000000001 #
|
||||
b11 $
|
||||
b1111 %
|
||||
b11 &
|
||||
b11 %
|
||||
b1111 &
|
||||
b11 '
|
||||
b1111 (
|
||||
b11 (
|
||||
b1111 )
|
||||
b11 *
|
||||
b1111 *
|
||||
b11 +
|
||||
b11 ,
|
||||
b11 -
|
||||
r0.1 .
|
||||
r0.2 0
|
||||
r0.3 2
|
||||
b0000000000000000000000000000000100000000000000000000000011111110 4
|
||||
b00000000000000000000000000000001 6
|
||||
b00000000000000000000000000000010 7
|
||||
b111 8
|
||||
1:
|
||||
b11 .
|
||||
r0.1 /
|
||||
r0.2 1
|
||||
r0.3 3
|
||||
b0000000000000000000000000000000100000000000000000000000011111110 5
|
||||
b00000000000000000000000000000001 7
|
||||
b00000000000000000000000000000010 8
|
||||
b111 9
|
||||
1;
|
||||
#15
|
||||
0:
|
||||
0;
|
||||
#20
|
||||
b00000000000000000000000000000010 #
|
||||
b00 $
|
||||
b0000 %
|
||||
b00 &
|
||||
b00 %
|
||||
b0000 &
|
||||
b00 '
|
||||
b0000 (
|
||||
b00 (
|
||||
b0000 )
|
||||
b00 *
|
||||
b0000 *
|
||||
b00 +
|
||||
b00 ,
|
||||
b00 -
|
||||
r0.2 .
|
||||
r0.4 0
|
||||
r0.6 2
|
||||
b0000000000000000000000000000001000000000000000000000000011111101 4
|
||||
b00000000000000000000000000000010 6
|
||||
b00000000000000000000000000000100 7
|
||||
b110 8
|
||||
b111111 9
|
||||
1:
|
||||
b00 .
|
||||
r0.2 /
|
||||
r0.4 1
|
||||
r0.6 3
|
||||
b0000000000000000000000000000001000000000000000000000000011111101 5
|
||||
b00000000000000000000000000000010 7
|
||||
b00000000000000000000000000000100 8
|
||||
b110 9
|
||||
b111111 :
|
||||
1;
|
||||
#25
|
||||
0:
|
||||
0;
|
||||
#30
|
||||
b00000000000000000000000000000011 #
|
||||
b11 $
|
||||
b1111 %
|
||||
b11 &
|
||||
b11 %
|
||||
b1111 &
|
||||
b11 '
|
||||
b1111 (
|
||||
b11 (
|
||||
b1111 )
|
||||
b11 *
|
||||
b1111 *
|
||||
b11 +
|
||||
b11 ,
|
||||
b11 -
|
||||
r0.3 .
|
||||
r0.6000000000000001 0
|
||||
r0.8999999999999999 2
|
||||
b0000000000000000000000000000001100000000000000000000000011111100 4
|
||||
b00000000000000000000000000000011 6
|
||||
b00000000000000000000000000000110 7
|
||||
b101 8
|
||||
b110110 9
|
||||
1:
|
||||
b11 .
|
||||
r0.3 /
|
||||
r0.6000000000000001 1
|
||||
r0.8999999999999999 3
|
||||
b0000000000000000000000000000001100000000000000000000000011111100 5
|
||||
b00000000000000000000000000000011 7
|
||||
b00000000000000000000000000000110 8
|
||||
b101 9
|
||||
b110110 :
|
||||
1;
|
||||
#35
|
||||
0:
|
||||
0;
|
||||
#40
|
||||
b00000000000000000000000000000100 #
|
||||
b00 $
|
||||
b0000 %
|
||||
b00 &
|
||||
b00 %
|
||||
b0000 &
|
||||
b00 '
|
||||
b0000 (
|
||||
b00 (
|
||||
b0000 )
|
||||
b00 *
|
||||
b0000 *
|
||||
b00 +
|
||||
b00 ,
|
||||
b00 -
|
||||
r0.4 .
|
||||
r0.8 0
|
||||
r1.2 2
|
||||
b0000000000000000000000000000010000000000000000000000000011111011 4
|
||||
b00000000000000000000000000000100 6
|
||||
b00000000000000000000000000001000 7
|
||||
b100 8
|
||||
b101101 9
|
||||
1:
|
||||
b00 .
|
||||
r0.4 /
|
||||
r0.8 1
|
||||
r1.2 3
|
||||
b0000000000000000000000000000010000000000000000000000000011111011 5
|
||||
b00000000000000000000000000000100 7
|
||||
b00000000000000000000000000001000 8
|
||||
b100 9
|
||||
b101101 :
|
||||
1;
|
||||
#45
|
||||
0:
|
||||
0;
|
||||
#50
|
||||
b00000000000000000000000000000101 #
|
||||
b11 $
|
||||
b1111 %
|
||||
b11 &
|
||||
b11 %
|
||||
b1111 &
|
||||
b11 '
|
||||
b1111 (
|
||||
b11 (
|
||||
b1111 )
|
||||
b11 *
|
||||
b1111 *
|
||||
b11 +
|
||||
b11 ,
|
||||
b11 -
|
||||
r0.5 .
|
||||
r1 0
|
||||
r1.5 2
|
||||
b0000000000000000000000000000010100000000000000000000000011111010 4
|
||||
b00000000000000000000000000000101 6
|
||||
b00000000000000000000000000001010 7
|
||||
b011 8
|
||||
b100100 9
|
||||
1:
|
||||
b11 .
|
||||
r0.5 /
|
||||
r1 1
|
||||
r1.5 3
|
||||
b0000000000000000000000000000010100000000000000000000000011111010 5
|
||||
b00000000000000000000000000000101 7
|
||||
b00000000000000000000000000001010 8
|
||||
b011 9
|
||||
b100100 :
|
||||
1;
|
||||
#55
|
||||
0:
|
||||
0;
|
||||
#60
|
||||
b00000000000000000000000000000110 #
|
||||
b00 $
|
||||
b0000 %
|
||||
b00 &
|
||||
b00 %
|
||||
b0000 &
|
||||
b00 '
|
||||
b0000 (
|
||||
b00 (
|
||||
b0000 )
|
||||
b00 *
|
||||
b0000 *
|
||||
b00 +
|
||||
b00 ,
|
||||
b00 -
|
||||
r0.6 .
|
||||
r1.2 0
|
||||
r1.8 2
|
||||
b0000000000000000000000000000011000000000000000000000000011111001 4
|
||||
b00000000000000000000000000000110 6
|
||||
b00000000000000000000000000001100 7
|
||||
b010 8
|
||||
b011011 9
|
||||
1:
|
||||
b00 .
|
||||
r0.6 /
|
||||
r1.2 1
|
||||
r1.8 3
|
||||
b0000000000000000000000000000011000000000000000000000000011111001 5
|
||||
b00000000000000000000000000000110 7
|
||||
b00000000000000000000000000001100 8
|
||||
b010 9
|
||||
b011011 :
|
||||
1;
|
||||
#64
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
$date
|
||||
Sat Mar 14 09:17:04 2026
|
||||
Tue Mar 31 17:14:42 2026
|
||||
|
||||
$end
|
||||
$version
|
||||
|
|
@ -24,150 +24,157 @@ $end
|
|||
$var bit 1 % b0 $end
|
||||
$upscope $end
|
||||
$attrbegin pack packed members 2 $end
|
||||
$scope struct v_strp2 $end
|
||||
$var bit 1 & b1 $end
|
||||
$var bit 1 ' b0 $end
|
||||
$upscope $end
|
||||
$attrbegin pack packed members 2 $end
|
||||
$scope struct v_strp_strp $end
|
||||
$attrbegin pack packed members 2 $end
|
||||
$scope struct x1 $end
|
||||
$var bit 1 & b1 $end
|
||||
$var bit 1 ' b0 $end
|
||||
$var bit 1 ( b1 $end
|
||||
$var bit 1 ) b0 $end
|
||||
$upscope $end
|
||||
$attrbegin pack packed members 2 $end
|
||||
$scope struct x0 $end
|
||||
$var bit 1 ( b1 $end
|
||||
$var bit 1 ) b0 $end
|
||||
$var bit 1 * b1 $end
|
||||
$var bit 1 + b0 $end
|
||||
$upscope $end
|
||||
$upscope $end
|
||||
$attrbegin pack packed members 2 $end
|
||||
$scope union v_unip_strp $end
|
||||
$attrbegin pack packed members 2 $end
|
||||
$scope struct x1 $end
|
||||
$var bit 1 * b1 $end
|
||||
$var bit 1 + b0 $end
|
||||
$var bit 1 , b1 $end
|
||||
$var bit 1 - b0 $end
|
||||
$upscope $end
|
||||
$attrbegin pack packed members 2 $end
|
||||
$scope struct x0 $end
|
||||
$var bit 1 * b1 $end
|
||||
$var bit 1 + b0 $end
|
||||
$var bit 1 , b1 $end
|
||||
$var bit 1 - b0 $end
|
||||
$upscope $end
|
||||
$upscope $end
|
||||
$var bit 2 , v_arrp [2:1] $end
|
||||
$var bit 2 . v_arrp [2:1] $end
|
||||
$attrbegin array packed bounds 17179869187 $end
|
||||
$scope sv_array v_arrp_arrp $end
|
||||
$var bit 2 - v_arrp_arrp[4] [2:1] $end
|
||||
$var bit 2 . v_arrp_arrp[3] [2:1] $end
|
||||
$var bit 2 / v_arrp_arrp[4] [2:1] $end
|
||||
$var bit 2 0 v_arrp_arrp[3] [2:1] $end
|
||||
$upscope $end
|
||||
$attrbegin array packed bounds 17179869187 $end
|
||||
$scope sv_array v_arrp_strp $end
|
||||
$attrbegin pack packed members 2 $end
|
||||
$scope struct [4] $end
|
||||
$var bit 1 / b1 $end
|
||||
$var bit 1 0 b0 $end
|
||||
$var bit 1 1 b1 $end
|
||||
$var bit 1 2 b0 $end
|
||||
$upscope $end
|
||||
$attrbegin pack packed members 2 $end
|
||||
$scope struct [3] $end
|
||||
$var bit 1 1 b1 $end
|
||||
$var bit 1 2 b0 $end
|
||||
$var bit 1 3 b1 $end
|
||||
$var bit 1 4 b0 $end
|
||||
$upscope $end
|
||||
$upscope $end
|
||||
$attrbegin array unpacked bounds 8589934593 $end
|
||||
$scope sv_array v_arru $end
|
||||
$var bit 1 3 v_arru[2] $end
|
||||
$var bit 1 4 v_arru[1] $end
|
||||
$var bit 1 5 v_arru[2] $end
|
||||
$var bit 1 6 v_arru[1] $end
|
||||
$upscope $end
|
||||
$attrbegin array unpacked bounds 17179869187 $end
|
||||
$scope sv_array v_arru_arru $end
|
||||
$attrbegin array unpacked bounds 8589934593 $end
|
||||
$scope sv_array [4] $end
|
||||
$var bit 1 5 v_arru_arru[4][2] $end
|
||||
$var bit 1 6 v_arru_arru[4][1] $end
|
||||
$var bit 1 7 v_arru_arru[4][2] $end
|
||||
$var bit 1 8 v_arru_arru[4][1] $end
|
||||
$upscope $end
|
||||
$attrbegin array unpacked bounds 8589934593 $end
|
||||
$scope sv_array [3] $end
|
||||
$var bit 1 7 v_arru_arru[3][2] $end
|
||||
$var bit 1 8 v_arru_arru[3][1] $end
|
||||
$var bit 1 9 v_arru_arru[3][2] $end
|
||||
$var bit 1 : v_arru_arru[3][1] $end
|
||||
$upscope $end
|
||||
$upscope $end
|
||||
$attrbegin array unpacked bounds 17179869187 $end
|
||||
$scope sv_array v_arru_arrp $end
|
||||
$var bit 2 9 v_arru_arrp[4] [2:1] $end
|
||||
$var bit 2 : v_arru_arrp[3] [2:1] $end
|
||||
$var bit 2 ; v_arru_arrp[4] [2:1] $end
|
||||
$var bit 2 < v_arru_arrp[3] [2:1] $end
|
||||
$upscope $end
|
||||
$attrbegin array unpacked bounds 17179869187 $end
|
||||
$scope sv_array v_arru_strp $end
|
||||
$attrbegin pack packed members 2 $end
|
||||
$scope struct [4] $end
|
||||
$var bit 1 ; b1 $end
|
||||
$var bit 1 < b0 $end
|
||||
$upscope $end
|
||||
$attrbegin pack packed members 2 $end
|
||||
$scope struct [3] $end
|
||||
$var bit 1 = b1 $end
|
||||
$var bit 1 > b0 $end
|
||||
$upscope $end
|
||||
$attrbegin pack packed members 2 $end
|
||||
$scope struct [3] $end
|
||||
$var bit 1 ? b1 $end
|
||||
$var bit 1 @ b0 $end
|
||||
$upscope $end
|
||||
$upscope $end
|
||||
$var real 64 ? v_real $end
|
||||
$var real 64 A v_real $end
|
||||
$attrbegin array unpacked bounds 1 $end
|
||||
$scope sv_array v_arr_real $end
|
||||
$var real 64 @ v_arr_real[0] $end
|
||||
$var real 64 A v_arr_real[1] $end
|
||||
$var real 64 B v_arr_real[0] $end
|
||||
$var real 64 C v_arr_real[1] $end
|
||||
$upscope $end
|
||||
$var longint 64 B v_chandle [63:0] $end
|
||||
$var longint 64 D v_chandle [63:0] $end
|
||||
$attrbegin array packed bounds 4294967296 $end
|
||||
$scope sv_array v_str32x2 $end
|
||||
$attrbegin pack packed members 1 $end
|
||||
$scope struct [1] $end
|
||||
$var logic 32 C data [31:0] $end
|
||||
$var logic 32 E data [31:0] $end
|
||||
$upscope $end
|
||||
$attrbegin pack packed members 1 $end
|
||||
$scope struct [0] $end
|
||||
$var logic 32 D data [31:0] $end
|
||||
$var logic 32 F data [31:0] $end
|
||||
$upscope $end
|
||||
$upscope $end
|
||||
$attrbegin misc 07 "" 1 $end
|
||||
$var int 32 E v_enumed [31:0] $end
|
||||
$var int 32 G v_enumed [31:0] $end
|
||||
$attrbegin misc 07 "" 1 $end
|
||||
$var int 32 F v_enumed2 [31:0] $end
|
||||
$var int 32 H v_enumed2 [31:0] $end
|
||||
$attrbegin misc 07 "" 2 $end
|
||||
$var logic 3 G v_enumb [2:0] $end
|
||||
$var logic 3 I v_enumb [2:0] $end
|
||||
$attrbegin pack packed members 2 $end
|
||||
$scope struct v_enumb2_str $end
|
||||
$attrbegin misc 07 "" 2 $end
|
||||
$var logic 3 H a [2:0] $end
|
||||
$var logic 3 J a [2:0] $end
|
||||
$attrbegin misc 07 "" 2 $end
|
||||
$var logic 3 I b [2:0] $end
|
||||
$var logic 3 K b [2:0] $end
|
||||
$upscope $end
|
||||
$attrbegin array unpacked bounds -8589934592 $end
|
||||
$scope sv_array unpacked_array $end
|
||||
$var logic 8 J unpacked_array[-2] [7:0] $end
|
||||
$var logic 8 K unpacked_array[-1] [7:0] $end
|
||||
$var logic 8 L unpacked_array[0] [7:0] $end
|
||||
$var logic 8 L unpacked_array[-2] [7:0] $end
|
||||
$var logic 8 M unpacked_array[-1] [7:0] $end
|
||||
$var logic 8 N unpacked_array[0] [7:0] $end
|
||||
$upscope $end
|
||||
$var bit 1 M 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 bit 1 O 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
|
||||
$upscope $end
|
||||
$upscope $end
|
||||
$enddefinitions $end
|
||||
#0
|
||||
$dumpvars
|
||||
0M
|
||||
0O
|
||||
b00000000 N
|
||||
b00000000 M
|
||||
b00000000 L
|
||||
b00000000 K
|
||||
b00000000 J
|
||||
b000 K
|
||||
b000 J
|
||||
b000 I
|
||||
b000 H
|
||||
b000 G
|
||||
b00000000000000000000000000000000 F
|
||||
b00000000000000000000000000000000 H
|
||||
b00000000000000000000000000000000 G
|
||||
b00000000000000000000000011111111 F
|
||||
b00000000000000000000000000000000 E
|
||||
b00000000000000000000000011111111 D
|
||||
b00000000000000000000000000000000 C
|
||||
b0000000000000000000000000000000000000000000000000000000000000000 B
|
||||
b0000000000000000000000000000000000000000000000000000000000000000 D
|
||||
r0 C
|
||||
r0 B
|
||||
r0 A
|
||||
r0 @
|
||||
r0 ?
|
||||
0@
|
||||
0?
|
||||
0>
|
||||
0=
|
||||
0<
|
||||
0;
|
||||
b00 :
|
||||
b00 9
|
||||
b00 <
|
||||
b00 ;
|
||||
0:
|
||||
09
|
||||
08
|
||||
07
|
||||
06
|
||||
|
|
@ -176,11 +183,11 @@ b00 9
|
|||
03
|
||||
02
|
||||
01
|
||||
00
|
||||
0/
|
||||
b00 0
|
||||
b00 /
|
||||
b00 .
|
||||
b00 -
|
||||
b00 ,
|
||||
0-
|
||||
0,
|
||||
0+
|
||||
0*
|
||||
0)
|
||||
|
|
@ -204,52 +211,56 @@ b00000000000000000000000000000001 #
|
|||
1)
|
||||
1*
|
||||
1+
|
||||
b11 ,
|
||||
b11 -
|
||||
1,
|
||||
1-
|
||||
b11 .
|
||||
1/
|
||||
10
|
||||
b11 /
|
||||
b11 0
|
||||
11
|
||||
12
|
||||
b11 9
|
||||
b11 :
|
||||
1;
|
||||
1<
|
||||
13
|
||||
14
|
||||
b11 ;
|
||||
b11 <
|
||||
1=
|
||||
1>
|
||||
r0.1 ?
|
||||
r0.2 @
|
||||
r0.3 A
|
||||
b00000000000000000000000000000001 C
|
||||
b00000000000000000000000011111110 D
|
||||
1?
|
||||
1@
|
||||
r0.1 A
|
||||
r0.2 B
|
||||
r0.3 C
|
||||
b00000000000000000000000000000001 E
|
||||
b00000000000000000000000000000010 F
|
||||
b111 G
|
||||
b00000000000000000000000011111110 F
|
||||
b00000000000000000000000000000001 G
|
||||
b00000000000000000000000000000010 H
|
||||
b111 I
|
||||
#15
|
||||
0!
|
||||
#20
|
||||
1!
|
||||
b110 G
|
||||
b00000000000000000000000000000100 F
|
||||
b110 I
|
||||
b00000000000000000000000000000100 H
|
||||
b00000000000000000000000000000010 G
|
||||
b00000000000000000000000011111101 F
|
||||
b00000000000000000000000000000010 E
|
||||
b00000000000000000000000011111101 D
|
||||
b00000000000000000000000000000010 C
|
||||
r0.6 A
|
||||
r0.4 @
|
||||
r0.2 ?
|
||||
r0.6 C
|
||||
r0.4 B
|
||||
r0.2 A
|
||||
0@
|
||||
0?
|
||||
0>
|
||||
0=
|
||||
0<
|
||||
0;
|
||||
b00 :
|
||||
b00 9
|
||||
b00 <
|
||||
b00 ;
|
||||
04
|
||||
03
|
||||
02
|
||||
01
|
||||
00
|
||||
0/
|
||||
b00 0
|
||||
b00 /
|
||||
b00 .
|
||||
b00 -
|
||||
b00 ,
|
||||
0-
|
||||
0,
|
||||
0+
|
||||
0*
|
||||
0)
|
||||
|
|
@ -259,14 +270,14 @@ b00 ,
|
|||
0%
|
||||
0$
|
||||
b00000000000000000000000000000010 #
|
||||
b111 H
|
||||
b111 I
|
||||
b111 J
|
||||
b111 K
|
||||
#25
|
||||
0!
|
||||
#30
|
||||
1!
|
||||
b110 I
|
||||
b110 H
|
||||
b110 K
|
||||
b110 J
|
||||
b00000000000000000000000000000011 #
|
||||
1$
|
||||
1%
|
||||
|
|
@ -276,52 +287,56 @@ b00000000000000000000000000000011 #
|
|||
1)
|
||||
1*
|
||||
1+
|
||||
b11 ,
|
||||
b11 -
|
||||
1,
|
||||
1-
|
||||
b11 .
|
||||
1/
|
||||
10
|
||||
b11 /
|
||||
b11 0
|
||||
11
|
||||
12
|
||||
b11 9
|
||||
b11 :
|
||||
1;
|
||||
1<
|
||||
13
|
||||
14
|
||||
b11 ;
|
||||
b11 <
|
||||
1=
|
||||
1>
|
||||
r0.3 ?
|
||||
r0.6000000000000001 @
|
||||
r0.8999999999999999 A
|
||||
b00000000000000000000000000000011 C
|
||||
b00000000000000000000000011111100 D
|
||||
1?
|
||||
1@
|
||||
r0.3 A
|
||||
r0.6000000000000001 B
|
||||
r0.8999999999999999 C
|
||||
b00000000000000000000000000000011 E
|
||||
b00000000000000000000000000000110 F
|
||||
b101 G
|
||||
b00000000000000000000000011111100 F
|
||||
b00000000000000000000000000000011 G
|
||||
b00000000000000000000000000000110 H
|
||||
b101 I
|
||||
#35
|
||||
0!
|
||||
#40
|
||||
1!
|
||||
b100 G
|
||||
b00000000000000000000000000001000 F
|
||||
b100 I
|
||||
b00000000000000000000000000001000 H
|
||||
b00000000000000000000000000000100 G
|
||||
b00000000000000000000000011111011 F
|
||||
b00000000000000000000000000000100 E
|
||||
b00000000000000000000000011111011 D
|
||||
b00000000000000000000000000000100 C
|
||||
r1.2 A
|
||||
r0.8 @
|
||||
r0.4 ?
|
||||
r1.2 C
|
||||
r0.8 B
|
||||
r0.4 A
|
||||
0@
|
||||
0?
|
||||
0>
|
||||
0=
|
||||
0<
|
||||
0;
|
||||
b00 :
|
||||
b00 9
|
||||
b00 <
|
||||
b00 ;
|
||||
04
|
||||
03
|
||||
02
|
||||
01
|
||||
00
|
||||
0/
|
||||
b00 0
|
||||
b00 /
|
||||
b00 .
|
||||
b00 -
|
||||
b00 ,
|
||||
0-
|
||||
0,
|
||||
0+
|
||||
0*
|
||||
0)
|
||||
|
|
@ -331,14 +346,14 @@ b00 ,
|
|||
0%
|
||||
0$
|
||||
b00000000000000000000000000000100 #
|
||||
b101 H
|
||||
b101 I
|
||||
b101 J
|
||||
b101 K
|
||||
#45
|
||||
0!
|
||||
#50
|
||||
1!
|
||||
b100 I
|
||||
b100 H
|
||||
b100 K
|
||||
b100 J
|
||||
b00000000000000000000000000000101 #
|
||||
1$
|
||||
1%
|
||||
|
|
@ -348,52 +363,56 @@ b00000000000000000000000000000101 #
|
|||
1)
|
||||
1*
|
||||
1+
|
||||
b11 ,
|
||||
b11 -
|
||||
1,
|
||||
1-
|
||||
b11 .
|
||||
1/
|
||||
10
|
||||
b11 /
|
||||
b11 0
|
||||
11
|
||||
12
|
||||
b11 9
|
||||
b11 :
|
||||
1;
|
||||
1<
|
||||
13
|
||||
14
|
||||
b11 ;
|
||||
b11 <
|
||||
1=
|
||||
1>
|
||||
r0.5 ?
|
||||
r1 @
|
||||
r1.5 A
|
||||
b00000000000000000000000000000101 C
|
||||
b00000000000000000000000011111010 D
|
||||
1?
|
||||
1@
|
||||
r0.5 A
|
||||
r1 B
|
||||
r1.5 C
|
||||
b00000000000000000000000000000101 E
|
||||
b00000000000000000000000000001010 F
|
||||
b011 G
|
||||
b00000000000000000000000011111010 F
|
||||
b00000000000000000000000000000101 G
|
||||
b00000000000000000000000000001010 H
|
||||
b011 I
|
||||
#55
|
||||
0!
|
||||
#60
|
||||
1!
|
||||
b010 G
|
||||
b00000000000000000000000000001100 F
|
||||
b010 I
|
||||
b00000000000000000000000000001100 H
|
||||
b00000000000000000000000000000110 G
|
||||
b00000000000000000000000011111001 F
|
||||
b00000000000000000000000000000110 E
|
||||
b00000000000000000000000011111001 D
|
||||
b00000000000000000000000000000110 C
|
||||
r1.8 A
|
||||
r1.2 @
|
||||
r0.6 ?
|
||||
r1.8 C
|
||||
r1.2 B
|
||||
r0.6 A
|
||||
0@
|
||||
0?
|
||||
0>
|
||||
0=
|
||||
0<
|
||||
0;
|
||||
b00 :
|
||||
b00 9
|
||||
b00 <
|
||||
b00 ;
|
||||
04
|
||||
03
|
||||
02
|
||||
01
|
||||
00
|
||||
0/
|
||||
b00 0
|
||||
b00 /
|
||||
b00 .
|
||||
b00 -
|
||||
b00 ,
|
||||
0-
|
||||
0,
|
||||
0+
|
||||
0*
|
||||
0)
|
||||
|
|
@ -403,5 +422,5 @@ b00 ,
|
|||
0%
|
||||
0$
|
||||
b00000000000000000000000000000110 #
|
||||
b011 H
|
||||
b011 I
|
||||
b011 J
|
||||
b011 K
|
||||
|
|
|
|||
|
|
@ -52,20 +52,20 @@
|
|||
(cyc\[31\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(v_arrp\[0\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(v_arrp\[1\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(v_arrp_arrp[3]\[0\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(v_arrp_arrp[3]\[1\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(v_arrp_arrp[4]\[0\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(v_arrp_arrp[4]\[1\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(v_arru[1] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(v_arrp_arrp[3]\[0\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(v_arrp_arrp[3]\[1\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(v_arru[2] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(v_arru_arru[3][1] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(v_arru_arru[3][2] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(v_arru_arru[4][1] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(v_arru[1] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(v_arru_arru[4][2] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(v_arru_arrp[3]\[0\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(v_arru_arrp[3]\[1\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(v_arru_arru[4][1] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(v_arru_arru[3][2] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(v_arru_arru[3][1] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(v_arru_arrp[4]\[0\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(v_arru_arrp[4]\[1\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(v_arru_arrp[3]\[0\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(v_arru_arrp[3]\[1\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(v_real\[0\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(v_real\[1\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(v_real\[2\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
|
|
@ -421,6 +421,12 @@
|
|||
(b0 (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
)
|
||||
)
|
||||
(INSTANCE v_strp2
|
||||
(NET
|
||||
(b1 (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(b0 (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
)
|
||||
)
|
||||
(INSTANCE v_strp_strp
|
||||
(INSTANCE x1
|
||||
(NET
|
||||
|
|
@ -449,19 +455,13 @@
|
|||
)
|
||||
)
|
||||
)
|
||||
(INSTANCE v_arrp_strp[3]
|
||||
(NET
|
||||
(b1 (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(b0 (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
)
|
||||
)
|
||||
(INSTANCE v_arrp_strp[4]
|
||||
(NET
|
||||
(b1 (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(b0 (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
)
|
||||
)
|
||||
(INSTANCE v_arru_strp[3]
|
||||
(INSTANCE v_arrp_strp[3]
|
||||
(NET
|
||||
(b1 (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(b0 (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
|
|
@ -473,16 +473,22 @@
|
|||
(b0 (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
)
|
||||
)
|
||||
(INSTANCE v_str32x2[0]
|
||||
(INSTANCE v_arru_strp[3]
|
||||
(NET
|
||||
(data\[0\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 7))
|
||||
(data\[1\] (T0 20) (T1 40) (TZ 0) (TX 0) (TB 0) (TC 4))
|
||||
(data\[2\] (T0 20) (T1 40) (TZ 0) (TX 0) (TB 0) (TC 2))
|
||||
(data\[3\] (T0 0) (T1 60) (TZ 0) (TX 0) (TB 0) (TC 1))
|
||||
(data\[4\] (T0 0) (T1 60) (TZ 0) (TX 0) (TB 0) (TC 1))
|
||||
(data\[5\] (T0 0) (T1 60) (TZ 0) (TX 0) (TB 0) (TC 1))
|
||||
(data\[6\] (T0 0) (T1 60) (TZ 0) (TX 0) (TB 0) (TC 1))
|
||||
(data\[7\] (T0 0) (T1 60) (TZ 0) (TX 0) (TB 0) (TC 1))
|
||||
(b1 (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(b0 (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
)
|
||||
)
|
||||
(INSTANCE v_str32x2[1]
|
||||
(NET
|
||||
(data\[0\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(data\[1\] (T0 40) (T1 20) (TZ 0) (TX 0) (TB 0) (TC 3))
|
||||
(data\[2\] (T0 40) (T1 20) (TZ 0) (TX 0) (TB 0) (TC 1))
|
||||
(data\[3\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(data\[4\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(data\[5\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(data\[6\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(data\[7\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(data\[8\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(data\[9\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(data\[10\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
|
|
@ -509,16 +515,16 @@
|
|||
(data\[31\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
)
|
||||
)
|
||||
(INSTANCE v_str32x2[1]
|
||||
(INSTANCE v_str32x2[0]
|
||||
(NET
|
||||
(data\[0\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(data\[1\] (T0 40) (T1 20) (TZ 0) (TX 0) (TB 0) (TC 3))
|
||||
(data\[2\] (T0 40) (T1 20) (TZ 0) (TX 0) (TB 0) (TC 1))
|
||||
(data\[3\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(data\[4\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(data\[5\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(data\[6\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(data\[7\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(data\[0\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 7))
|
||||
(data\[1\] (T0 20) (T1 40) (TZ 0) (TX 0) (TB 0) (TC 4))
|
||||
(data\[2\] (T0 20) (T1 40) (TZ 0) (TX 0) (TB 0) (TC 2))
|
||||
(data\[3\] (T0 0) (T1 60) (TZ 0) (TX 0) (TB 0) (TC 1))
|
||||
(data\[4\] (T0 0) (T1 60) (TZ 0) (TX 0) (TB 0) (TC 1))
|
||||
(data\[5\] (T0 0) (T1 60) (TZ 0) (TX 0) (TB 0) (TC 1))
|
||||
(data\[6\] (T0 0) (T1 60) (TZ 0) (TX 0) (TB 0) (TC 1))
|
||||
(data\[7\] (T0 0) (T1 60) (TZ 0) (TX 0) (TB 0) (TC 1))
|
||||
(data\[8\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(data\[9\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(data\[10\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
|
|
|
|||
|
|
@ -1,85 +1,89 @@
|
|||
$version Generated by VerilatedVcd $end
|
||||
$timescale 1ps $end
|
||||
$scope module top $end
|
||||
$var wire 1 F clk $end
|
||||
$var wire 1 H clk $end
|
||||
$scope module $unit $end
|
||||
$var wire 1 " global_bit $end
|
||||
$upscope $end
|
||||
$scope module t $end
|
||||
$var wire 1 F clk $end
|
||||
$var wire 1 H clk $end
|
||||
$var wire 32 # cyc [31:0] $end
|
||||
$scope module v_strp $end
|
||||
$var wire 1 $ b1 $end
|
||||
$var wire 1 % b0 $end
|
||||
$upscope $end
|
||||
$scope module v_strp2 $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
|
||||
$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
|
||||
$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
|
||||
$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 / b1 $end
|
||||
$var wire 1 0 b0 $end
|
||||
$upscope $end
|
||||
$var wire 2 . v_arrp [2:1] $end
|
||||
$var wire 2 / v_arrp_arrp[4] [2:1] $end
|
||||
$var wire 2 0 v_arrp_arrp[3] [2:1] $end
|
||||
$scope module v_arrp_strp[4] $end
|
||||
$var wire 1 1 b1 $end
|
||||
$var wire 1 2 b0 $end
|
||||
$upscope $end
|
||||
$var wire 1 G v_arru[1] $end
|
||||
$var wire 1 H v_arru[2] $end
|
||||
$var wire 1 I v_arru_arru[3][1] $end
|
||||
$var wire 1 J v_arru_arru[3][2] $end
|
||||
$var wire 1 K v_arru_arru[4][1] $end
|
||||
$var wire 1 L v_arru_arru[4][2] $end
|
||||
$var wire 2 3 v_arru_arrp[3] [2:1] $end
|
||||
$var wire 2 4 v_arru_arrp[4] [2:1] $end
|
||||
$scope module v_arru_strp[3] $end
|
||||
$var wire 1 5 b1 $end
|
||||
$var wire 1 6 b0 $end
|
||||
$scope module v_arrp_strp[3] $end
|
||||
$var wire 1 3 b1 $end
|
||||
$var wire 1 4 b0 $end
|
||||
$upscope $end
|
||||
$var wire 1 I v_arru[2] $end
|
||||
$var wire 1 J v_arru[1] $end
|
||||
$var wire 1 K v_arru_arru[4][2] $end
|
||||
$var wire 1 L v_arru_arru[4][1] $end
|
||||
$var wire 1 M v_arru_arru[3][2] $end
|
||||
$var wire 1 N v_arru_arru[3][1] $end
|
||||
$var wire 2 5 v_arru_arrp[4] [2:1] $end
|
||||
$var wire 2 6 v_arru_arrp[3] [2:1] $end
|
||||
$scope module v_arru_strp[4] $end
|
||||
$var wire 1 7 b1 $end
|
||||
$var wire 1 8 b0 $end
|
||||
$upscope $end
|
||||
$var real 64 9 v_real $end
|
||||
$var real 64 ; v_arr_real[0] $end
|
||||
$var real 64 = v_arr_real[1] $end
|
||||
$var wire 64 M v_chandle [63:0] $end
|
||||
$scope module v_str32x2[0] $end
|
||||
$var wire 32 ? data [31:0] $end
|
||||
$scope module v_arru_strp[3] $end
|
||||
$var wire 1 9 b1 $end
|
||||
$var wire 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 wire 64 O v_chandle [63:0] $end
|
||||
$scope module v_str32x2[1] $end
|
||||
$var wire 32 @ data [31:0] $end
|
||||
$var wire 32 A data [31:0] $end
|
||||
$upscope $end
|
||||
$var wire 32 A v_enumed [31:0] $end
|
||||
$var wire 32 B v_enumed2 [31:0] $end
|
||||
$var wire 3 C v_enumb [2:0] $end
|
||||
$scope module v_str32x2[0] $end
|
||||
$var wire 32 B data [31:0] $end
|
||||
$upscope $end
|
||||
$var wire 32 C v_enumed [31:0] $end
|
||||
$var wire 32 D v_enumed2 [31:0] $end
|
||||
$var wire 3 E v_enumb [2:0] $end
|
||||
$scope module v_enumb2_str $end
|
||||
$var wire 3 D a [2:0] $end
|
||||
$var wire 3 E b [2:0] $end
|
||||
$var wire 3 F a [2:0] $end
|
||||
$var wire 3 G b [2:0] $end
|
||||
$upscope $end
|
||||
$var wire 8 O unpacked_array[-2] [7:0] $end
|
||||
$var wire 8 P unpacked_array[-1] [7:0] $end
|
||||
$var wire 8 Q unpacked_array[0] [7:0] $end
|
||||
$var wire 1 R 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 8 Q unpacked_array[-2] [7:0] $end
|
||||
$var wire 8 R unpacked_array[-1] [7:0] $end
|
||||
$var wire 8 S unpacked_array[0] [7:0] $end
|
||||
$var wire 1 T 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
|
||||
$upscope $end
|
||||
$upscope $end
|
||||
$enddefinitions $end
|
||||
|
|
@ -96,41 +100,43 @@ b00000000000000000000000000000000 #
|
|||
0)
|
||||
0*
|
||||
0+
|
||||
b00 ,
|
||||
b00 -
|
||||
0,
|
||||
0-
|
||||
b00 .
|
||||
0/
|
||||
00
|
||||
b00 /
|
||||
b00 0
|
||||
01
|
||||
02
|
||||
b00 3
|
||||
b00 4
|
||||
05
|
||||
06
|
||||
03
|
||||
04
|
||||
b00 5
|
||||
b00 6
|
||||
07
|
||||
08
|
||||
r0 9
|
||||
09
|
||||
0:
|
||||
r0 ;
|
||||
r0 =
|
||||
b00000000000000000000000011111111 ?
|
||||
b00000000000000000000000000000000 @
|
||||
r0 ?
|
||||
b00000000000000000000000000000000 A
|
||||
b00000000000000000000000000000000 B
|
||||
b000 C
|
||||
b000 D
|
||||
b00000000000000000000000011111111 B
|
||||
b00000000000000000000000000000000 C
|
||||
b00000000000000000000000000000000 D
|
||||
b000 E
|
||||
0F
|
||||
0G
|
||||
b000 F
|
||||
b000 G
|
||||
0H
|
||||
0I
|
||||
0J
|
||||
0K
|
||||
0L
|
||||
b0000000000000000000000000000000000000000000000000000000000000000 M
|
||||
b00000000 O
|
||||
b00000000 P
|
||||
0M
|
||||
0N
|
||||
b0000000000000000000000000000000000000000000000000000000000000000 O
|
||||
b00000000 Q
|
||||
0R
|
||||
b00000000 R
|
||||
b00000000 S
|
||||
0T
|
||||
#10
|
||||
b00000000000000000000000000000001 #
|
||||
1$
|
||||
|
|
@ -141,30 +147,32 @@ b00000000000000000000000000000001 #
|
|||
1)
|
||||
1*
|
||||
1+
|
||||
b11 ,
|
||||
b11 -
|
||||
1,
|
||||
1-
|
||||
b11 .
|
||||
1/
|
||||
10
|
||||
b11 /
|
||||
b11 0
|
||||
11
|
||||
12
|
||||
b11 3
|
||||
b11 4
|
||||
15
|
||||
16
|
||||
13
|
||||
14
|
||||
b11 5
|
||||
b11 6
|
||||
17
|
||||
18
|
||||
r0.1 9
|
||||
r0.2 ;
|
||||
r0.3 =
|
||||
b00000000000000000000000011111110 ?
|
||||
b00000000000000000000000000000001 @
|
||||
19
|
||||
1:
|
||||
r0.1 ;
|
||||
r0.2 =
|
||||
r0.3 ?
|
||||
b00000000000000000000000000000001 A
|
||||
b00000000000000000000000000000010 B
|
||||
b111 C
|
||||
1F
|
||||
b00000000000000000000000011111110 B
|
||||
b00000000000000000000000000000001 C
|
||||
b00000000000000000000000000000010 D
|
||||
b111 E
|
||||
1H
|
||||
#15
|
||||
0F
|
||||
0H
|
||||
#20
|
||||
b00000000000000000000000000000010 #
|
||||
0$
|
||||
|
|
@ -175,32 +183,34 @@ b00000000000000000000000000000010 #
|
|||
0)
|
||||
0*
|
||||
0+
|
||||
b00 ,
|
||||
b00 -
|
||||
0,
|
||||
0-
|
||||
b00 .
|
||||
0/
|
||||
00
|
||||
b00 /
|
||||
b00 0
|
||||
01
|
||||
02
|
||||
b00 3
|
||||
b00 4
|
||||
05
|
||||
06
|
||||
03
|
||||
04
|
||||
b00 5
|
||||
b00 6
|
||||
07
|
||||
08
|
||||
r0.2 9
|
||||
r0.4 ;
|
||||
r0.6 =
|
||||
b00000000000000000000000011111101 ?
|
||||
b00000000000000000000000000000010 @
|
||||
09
|
||||
0:
|
||||
r0.2 ;
|
||||
r0.4 =
|
||||
r0.6 ?
|
||||
b00000000000000000000000000000010 A
|
||||
b00000000000000000000000000000100 B
|
||||
b110 C
|
||||
b111 D
|
||||
b111 E
|
||||
1F
|
||||
b00000000000000000000000011111101 B
|
||||
b00000000000000000000000000000010 C
|
||||
b00000000000000000000000000000100 D
|
||||
b110 E
|
||||
b111 F
|
||||
b111 G
|
||||
1H
|
||||
#25
|
||||
0F
|
||||
0H
|
||||
#30
|
||||
b00000000000000000000000000000011 #
|
||||
1$
|
||||
|
|
@ -211,32 +221,34 @@ b00000000000000000000000000000011 #
|
|||
1)
|
||||
1*
|
||||
1+
|
||||
b11 ,
|
||||
b11 -
|
||||
1,
|
||||
1-
|
||||
b11 .
|
||||
1/
|
||||
10
|
||||
b11 /
|
||||
b11 0
|
||||
11
|
||||
12
|
||||
b11 3
|
||||
b11 4
|
||||
15
|
||||
16
|
||||
13
|
||||
14
|
||||
b11 5
|
||||
b11 6
|
||||
17
|
||||
18
|
||||
r0.3 9
|
||||
r0.6000000000000001 ;
|
||||
r0.8999999999999999 =
|
||||
b00000000000000000000000011111100 ?
|
||||
b00000000000000000000000000000011 @
|
||||
19
|
||||
1:
|
||||
r0.3 ;
|
||||
r0.6000000000000001 =
|
||||
r0.8999999999999999 ?
|
||||
b00000000000000000000000000000011 A
|
||||
b00000000000000000000000000000110 B
|
||||
b101 C
|
||||
b110 D
|
||||
b110 E
|
||||
1F
|
||||
b00000000000000000000000011111100 B
|
||||
b00000000000000000000000000000011 C
|
||||
b00000000000000000000000000000110 D
|
||||
b101 E
|
||||
b110 F
|
||||
b110 G
|
||||
1H
|
||||
#35
|
||||
0F
|
||||
0H
|
||||
#40
|
||||
b00000000000000000000000000000100 #
|
||||
0$
|
||||
|
|
@ -247,32 +259,34 @@ b00000000000000000000000000000100 #
|
|||
0)
|
||||
0*
|
||||
0+
|
||||
b00 ,
|
||||
b00 -
|
||||
0,
|
||||
0-
|
||||
b00 .
|
||||
0/
|
||||
00
|
||||
b00 /
|
||||
b00 0
|
||||
01
|
||||
02
|
||||
b00 3
|
||||
b00 4
|
||||
05
|
||||
06
|
||||
03
|
||||
04
|
||||
b00 5
|
||||
b00 6
|
||||
07
|
||||
08
|
||||
r0.4 9
|
||||
r0.8 ;
|
||||
r1.2 =
|
||||
b00000000000000000000000011111011 ?
|
||||
b00000000000000000000000000000100 @
|
||||
09
|
||||
0:
|
||||
r0.4 ;
|
||||
r0.8 =
|
||||
r1.2 ?
|
||||
b00000000000000000000000000000100 A
|
||||
b00000000000000000000000000001000 B
|
||||
b100 C
|
||||
b101 D
|
||||
b101 E
|
||||
1F
|
||||
b00000000000000000000000011111011 B
|
||||
b00000000000000000000000000000100 C
|
||||
b00000000000000000000000000001000 D
|
||||
b100 E
|
||||
b101 F
|
||||
b101 G
|
||||
1H
|
||||
#45
|
||||
0F
|
||||
0H
|
||||
#50
|
||||
b00000000000000000000000000000101 #
|
||||
1$
|
||||
|
|
@ -283,32 +297,34 @@ b00000000000000000000000000000101 #
|
|||
1)
|
||||
1*
|
||||
1+
|
||||
b11 ,
|
||||
b11 -
|
||||
1,
|
||||
1-
|
||||
b11 .
|
||||
1/
|
||||
10
|
||||
b11 /
|
||||
b11 0
|
||||
11
|
||||
12
|
||||
b11 3
|
||||
b11 4
|
||||
15
|
||||
16
|
||||
13
|
||||
14
|
||||
b11 5
|
||||
b11 6
|
||||
17
|
||||
18
|
||||
r0.5 9
|
||||
r1 ;
|
||||
r1.5 =
|
||||
b00000000000000000000000011111010 ?
|
||||
b00000000000000000000000000000101 @
|
||||
19
|
||||
1:
|
||||
r0.5 ;
|
||||
r1 =
|
||||
r1.5 ?
|
||||
b00000000000000000000000000000101 A
|
||||
b00000000000000000000000000001010 B
|
||||
b011 C
|
||||
b100 D
|
||||
b100 E
|
||||
1F
|
||||
b00000000000000000000000011111010 B
|
||||
b00000000000000000000000000000101 C
|
||||
b00000000000000000000000000001010 D
|
||||
b011 E
|
||||
b100 F
|
||||
b100 G
|
||||
1H
|
||||
#55
|
||||
0F
|
||||
0H
|
||||
#60
|
||||
b00000000000000000000000000000110 #
|
||||
0$
|
||||
|
|
@ -319,27 +335,29 @@ b00000000000000000000000000000110 #
|
|||
0)
|
||||
0*
|
||||
0+
|
||||
b00 ,
|
||||
b00 -
|
||||
0,
|
||||
0-
|
||||
b00 .
|
||||
0/
|
||||
00
|
||||
b00 /
|
||||
b00 0
|
||||
01
|
||||
02
|
||||
b00 3
|
||||
b00 4
|
||||
05
|
||||
06
|
||||
03
|
||||
04
|
||||
b00 5
|
||||
b00 6
|
||||
07
|
||||
08
|
||||
r0.6 9
|
||||
r1.2 ;
|
||||
r1.8 =
|
||||
b00000000000000000000000011111001 ?
|
||||
b00000000000000000000000000000110 @
|
||||
09
|
||||
0:
|
||||
r0.6 ;
|
||||
r1.2 =
|
||||
r1.8 ?
|
||||
b00000000000000000000000000000110 A
|
||||
b00000000000000000000000000001100 B
|
||||
b010 C
|
||||
b011 D
|
||||
b011 E
|
||||
1F
|
||||
b00000000000000000000000011111001 B
|
||||
b00000000000000000000000000000110 C
|
||||
b00000000000000000000000000001100 D
|
||||
b010 E
|
||||
b011 F
|
||||
b011 G
|
||||
1H
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
$date
|
||||
Sat Mar 14 09:16:58 2026
|
||||
Tue Mar 31 17:14:45 2026
|
||||
|
||||
$end
|
||||
$version
|
||||
|
|
@ -23,150 +23,157 @@ $end
|
|||
$var bit 1 % b0 $end
|
||||
$upscope $end
|
||||
$attrbegin pack packed members 2 $end
|
||||
$scope struct v_strp2 $end
|
||||
$var bit 1 & b1 $end
|
||||
$var bit 1 ' b0 $end
|
||||
$upscope $end
|
||||
$attrbegin pack packed members 2 $end
|
||||
$scope struct v_strp_strp $end
|
||||
$attrbegin pack packed members 2 $end
|
||||
$scope struct x1 $end
|
||||
$var bit 1 & b1 $end
|
||||
$var bit 1 ' b0 $end
|
||||
$var bit 1 ( b1 $end
|
||||
$var bit 1 ) b0 $end
|
||||
$upscope $end
|
||||
$attrbegin pack packed members 2 $end
|
||||
$scope struct x0 $end
|
||||
$var bit 1 ( b1 $end
|
||||
$var bit 1 ) b0 $end
|
||||
$var bit 1 * b1 $end
|
||||
$var bit 1 + b0 $end
|
||||
$upscope $end
|
||||
$upscope $end
|
||||
$attrbegin pack packed members 2 $end
|
||||
$scope union v_unip_strp $end
|
||||
$attrbegin pack packed members 2 $end
|
||||
$scope struct x1 $end
|
||||
$var bit 1 * b1 $end
|
||||
$var bit 1 + b0 $end
|
||||
$var bit 1 , b1 $end
|
||||
$var bit 1 - b0 $end
|
||||
$upscope $end
|
||||
$attrbegin pack packed members 2 $end
|
||||
$scope struct x0 $end
|
||||
$var bit 1 * b1 $end
|
||||
$var bit 1 + b0 $end
|
||||
$var bit 1 , b1 $end
|
||||
$var bit 1 - b0 $end
|
||||
$upscope $end
|
||||
$upscope $end
|
||||
$var bit 2 , v_arrp [2:1] $end
|
||||
$var bit 2 . v_arrp [2:1] $end
|
||||
$attrbegin array packed bounds 17179869187 $end
|
||||
$scope sv_array v_arrp_arrp $end
|
||||
$var bit 2 - v_arrp_arrp[4] [2:1] $end
|
||||
$var bit 2 . v_arrp_arrp[3] [2:1] $end
|
||||
$var bit 2 / v_arrp_arrp[4] [2:1] $end
|
||||
$var bit 2 0 v_arrp_arrp[3] [2:1] $end
|
||||
$upscope $end
|
||||
$attrbegin array packed bounds 17179869187 $end
|
||||
$scope sv_array v_arrp_strp $end
|
||||
$attrbegin pack packed members 2 $end
|
||||
$scope struct [4] $end
|
||||
$var bit 1 / b1 $end
|
||||
$var bit 1 0 b0 $end
|
||||
$var bit 1 1 b1 $end
|
||||
$var bit 1 2 b0 $end
|
||||
$upscope $end
|
||||
$attrbegin pack packed members 2 $end
|
||||
$scope struct [3] $end
|
||||
$var bit 1 1 b1 $end
|
||||
$var bit 1 2 b0 $end
|
||||
$var bit 1 3 b1 $end
|
||||
$var bit 1 4 b0 $end
|
||||
$upscope $end
|
||||
$upscope $end
|
||||
$attrbegin array unpacked bounds 8589934593 $end
|
||||
$scope sv_array v_arru $end
|
||||
$var bit 1 3 v_arru[2] $end
|
||||
$var bit 1 4 v_arru[1] $end
|
||||
$var bit 1 5 v_arru[2] $end
|
||||
$var bit 1 6 v_arru[1] $end
|
||||
$upscope $end
|
||||
$attrbegin array unpacked bounds 17179869187 $end
|
||||
$scope sv_array v_arru_arru $end
|
||||
$attrbegin array unpacked bounds 8589934593 $end
|
||||
$scope sv_array [4] $end
|
||||
$var bit 1 5 v_arru_arru[4][2] $end
|
||||
$var bit 1 6 v_arru_arru[4][1] $end
|
||||
$var bit 1 7 v_arru_arru[4][2] $end
|
||||
$var bit 1 8 v_arru_arru[4][1] $end
|
||||
$upscope $end
|
||||
$attrbegin array unpacked bounds 8589934593 $end
|
||||
$scope sv_array [3] $end
|
||||
$var bit 1 7 v_arru_arru[3][2] $end
|
||||
$var bit 1 8 v_arru_arru[3][1] $end
|
||||
$var bit 1 9 v_arru_arru[3][2] $end
|
||||
$var bit 1 : v_arru_arru[3][1] $end
|
||||
$upscope $end
|
||||
$upscope $end
|
||||
$attrbegin array unpacked bounds 17179869187 $end
|
||||
$scope sv_array v_arru_arrp $end
|
||||
$var bit 2 9 v_arru_arrp[4] [2:1] $end
|
||||
$var bit 2 : v_arru_arrp[3] [2:1] $end
|
||||
$var bit 2 ; v_arru_arrp[4] [2:1] $end
|
||||
$var bit 2 < v_arru_arrp[3] [2:1] $end
|
||||
$upscope $end
|
||||
$attrbegin array unpacked bounds 17179869187 $end
|
||||
$scope sv_array v_arru_strp $end
|
||||
$attrbegin pack packed members 2 $end
|
||||
$scope struct [4] $end
|
||||
$var bit 1 ; b1 $end
|
||||
$var bit 1 < b0 $end
|
||||
$upscope $end
|
||||
$attrbegin pack packed members 2 $end
|
||||
$scope struct [3] $end
|
||||
$var bit 1 = b1 $end
|
||||
$var bit 1 > b0 $end
|
||||
$upscope $end
|
||||
$attrbegin pack packed members 2 $end
|
||||
$scope struct [3] $end
|
||||
$var bit 1 ? b1 $end
|
||||
$var bit 1 @ b0 $end
|
||||
$upscope $end
|
||||
$upscope $end
|
||||
$var real 64 ? v_real $end
|
||||
$var real 64 A v_real $end
|
||||
$attrbegin array unpacked bounds 1 $end
|
||||
$scope sv_array v_arr_real $end
|
||||
$var real 64 @ v_arr_real[0] $end
|
||||
$var real 64 A v_arr_real[1] $end
|
||||
$var real 64 B v_arr_real[0] $end
|
||||
$var real 64 C v_arr_real[1] $end
|
||||
$upscope $end
|
||||
$var longint 64 B v_chandle [63:0] $end
|
||||
$var longint 64 D v_chandle [63:0] $end
|
||||
$attrbegin array packed bounds 4294967296 $end
|
||||
$scope sv_array v_str32x2 $end
|
||||
$attrbegin pack packed members 1 $end
|
||||
$scope struct [1] $end
|
||||
$var logic 32 C data [31:0] $end
|
||||
$var logic 32 E data [31:0] $end
|
||||
$upscope $end
|
||||
$attrbegin pack packed members 1 $end
|
||||
$scope struct [0] $end
|
||||
$var logic 32 D data [31:0] $end
|
||||
$var logic 32 F data [31:0] $end
|
||||
$upscope $end
|
||||
$upscope $end
|
||||
$attrbegin misc 07 "" 1 $end
|
||||
$var int 32 E v_enumed [31:0] $end
|
||||
$var int 32 G v_enumed [31:0] $end
|
||||
$attrbegin misc 07 "" 1 $end
|
||||
$var int 32 F v_enumed2 [31:0] $end
|
||||
$var int 32 H v_enumed2 [31:0] $end
|
||||
$attrbegin misc 07 "" 2 $end
|
||||
$var logic 3 G v_enumb [2:0] $end
|
||||
$var logic 3 I v_enumb [2:0] $end
|
||||
$attrbegin pack packed members 2 $end
|
||||
$scope struct v_enumb2_str $end
|
||||
$attrbegin misc 07 "" 2 $end
|
||||
$var logic 3 H a [2:0] $end
|
||||
$var logic 3 J a [2:0] $end
|
||||
$attrbegin misc 07 "" 2 $end
|
||||
$var logic 3 I b [2:0] $end
|
||||
$var logic 3 K b [2:0] $end
|
||||
$upscope $end
|
||||
$attrbegin array unpacked bounds -8589934592 $end
|
||||
$scope sv_array unpacked_array $end
|
||||
$var logic 8 J unpacked_array[-2] [7:0] $end
|
||||
$var logic 8 K unpacked_array[-1] [7:0] $end
|
||||
$var logic 8 L unpacked_array[0] [7:0] $end
|
||||
$var logic 8 L unpacked_array[-2] [7:0] $end
|
||||
$var logic 8 M unpacked_array[-1] [7:0] $end
|
||||
$var logic 8 N unpacked_array[0] [7:0] $end
|
||||
$upscope $end
|
||||
$var bit 1 M 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 bit 1 O 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
|
||||
$upscope $end
|
||||
$upscope $end
|
||||
$enddefinitions $end
|
||||
#0
|
||||
$dumpvars
|
||||
0M
|
||||
0O
|
||||
b00000000 N
|
||||
b00000000 M
|
||||
b00000000 L
|
||||
b00000000 K
|
||||
b00000000 J
|
||||
b000 K
|
||||
b000 J
|
||||
b000 I
|
||||
b000 H
|
||||
b000 G
|
||||
b00000000000000000000000000000000 F
|
||||
b00000000000000000000000000000000 H
|
||||
b00000000000000000000000000000000 G
|
||||
b00000000000000000000000011111111 F
|
||||
b00000000000000000000000000000000 E
|
||||
b00000000000000000000000011111111 D
|
||||
b00000000000000000000000000000000 C
|
||||
b0000000000000000000000000000000000000000000000000000000000000000 B
|
||||
b0000000000000000000000000000000000000000000000000000000000000000 D
|
||||
r0 C
|
||||
r0 B
|
||||
r0 A
|
||||
r0 @
|
||||
r0 ?
|
||||
0@
|
||||
0?
|
||||
0>
|
||||
0=
|
||||
0<
|
||||
0;
|
||||
b00 :
|
||||
b00 9
|
||||
b00 <
|
||||
b00 ;
|
||||
0:
|
||||
09
|
||||
08
|
||||
07
|
||||
06
|
||||
|
|
@ -175,11 +182,11 @@ b00 9
|
|||
03
|
||||
02
|
||||
01
|
||||
00
|
||||
0/
|
||||
b00 0
|
||||
b00 /
|
||||
b00 .
|
||||
b00 -
|
||||
b00 ,
|
||||
0-
|
||||
0,
|
||||
0+
|
||||
0*
|
||||
0)
|
||||
|
|
@ -203,52 +210,56 @@ b00000000000000000000000000000001 #
|
|||
1)
|
||||
1*
|
||||
1+
|
||||
b11 ,
|
||||
b11 -
|
||||
1,
|
||||
1-
|
||||
b11 .
|
||||
1/
|
||||
10
|
||||
b11 /
|
||||
b11 0
|
||||
11
|
||||
12
|
||||
b11 9
|
||||
b11 :
|
||||
1;
|
||||
1<
|
||||
13
|
||||
14
|
||||
b11 ;
|
||||
b11 <
|
||||
1=
|
||||
1>
|
||||
r0.1 ?
|
||||
r0.2 @
|
||||
r0.3 A
|
||||
b00000000000000000000000000000001 C
|
||||
b00000000000000000000000011111110 D
|
||||
1?
|
||||
1@
|
||||
r0.1 A
|
||||
r0.2 B
|
||||
r0.3 C
|
||||
b00000000000000000000000000000001 E
|
||||
b00000000000000000000000000000010 F
|
||||
b111 G
|
||||
b00000000000000000000000011111110 F
|
||||
b00000000000000000000000000000001 G
|
||||
b00000000000000000000000000000010 H
|
||||
b111 I
|
||||
#15
|
||||
0"
|
||||
#20
|
||||
1"
|
||||
b110 G
|
||||
b00000000000000000000000000000100 F
|
||||
b110 I
|
||||
b00000000000000000000000000000100 H
|
||||
b00000000000000000000000000000010 G
|
||||
b00000000000000000000000011111101 F
|
||||
b00000000000000000000000000000010 E
|
||||
b00000000000000000000000011111101 D
|
||||
b00000000000000000000000000000010 C
|
||||
r0.6 A
|
||||
r0.4 @
|
||||
r0.2 ?
|
||||
r0.6 C
|
||||
r0.4 B
|
||||
r0.2 A
|
||||
0@
|
||||
0?
|
||||
0>
|
||||
0=
|
||||
0<
|
||||
0;
|
||||
b00 :
|
||||
b00 9
|
||||
b00 <
|
||||
b00 ;
|
||||
04
|
||||
03
|
||||
02
|
||||
01
|
||||
00
|
||||
0/
|
||||
b00 0
|
||||
b00 /
|
||||
b00 .
|
||||
b00 -
|
||||
b00 ,
|
||||
0-
|
||||
0,
|
||||
0+
|
||||
0*
|
||||
0)
|
||||
|
|
@ -258,14 +269,14 @@ b00 ,
|
|||
0%
|
||||
0$
|
||||
b00000000000000000000000000000010 #
|
||||
b111 H
|
||||
b111 I
|
||||
b111 J
|
||||
b111 K
|
||||
#25
|
||||
0"
|
||||
#30
|
||||
1"
|
||||
b110 I
|
||||
b110 H
|
||||
b110 K
|
||||
b110 J
|
||||
b00000000000000000000000000000011 #
|
||||
1$
|
||||
1%
|
||||
|
|
@ -275,52 +286,56 @@ b00000000000000000000000000000011 #
|
|||
1)
|
||||
1*
|
||||
1+
|
||||
b11 ,
|
||||
b11 -
|
||||
1,
|
||||
1-
|
||||
b11 .
|
||||
1/
|
||||
10
|
||||
b11 /
|
||||
b11 0
|
||||
11
|
||||
12
|
||||
b11 9
|
||||
b11 :
|
||||
1;
|
||||
1<
|
||||
13
|
||||
14
|
||||
b11 ;
|
||||
b11 <
|
||||
1=
|
||||
1>
|
||||
r0.3 ?
|
||||
r0.6000000000000001 @
|
||||
r0.8999999999999999 A
|
||||
b00000000000000000000000000000011 C
|
||||
b00000000000000000000000011111100 D
|
||||
1?
|
||||
1@
|
||||
r0.3 A
|
||||
r0.6000000000000001 B
|
||||
r0.8999999999999999 C
|
||||
b00000000000000000000000000000011 E
|
||||
b00000000000000000000000000000110 F
|
||||
b101 G
|
||||
b00000000000000000000000011111100 F
|
||||
b00000000000000000000000000000011 G
|
||||
b00000000000000000000000000000110 H
|
||||
b101 I
|
||||
#35
|
||||
0"
|
||||
#40
|
||||
1"
|
||||
b100 G
|
||||
b00000000000000000000000000001000 F
|
||||
b100 I
|
||||
b00000000000000000000000000001000 H
|
||||
b00000000000000000000000000000100 G
|
||||
b00000000000000000000000011111011 F
|
||||
b00000000000000000000000000000100 E
|
||||
b00000000000000000000000011111011 D
|
||||
b00000000000000000000000000000100 C
|
||||
r1.2 A
|
||||
r0.8 @
|
||||
r0.4 ?
|
||||
r1.2 C
|
||||
r0.8 B
|
||||
r0.4 A
|
||||
0@
|
||||
0?
|
||||
0>
|
||||
0=
|
||||
0<
|
||||
0;
|
||||
b00 :
|
||||
b00 9
|
||||
b00 <
|
||||
b00 ;
|
||||
04
|
||||
03
|
||||
02
|
||||
01
|
||||
00
|
||||
0/
|
||||
b00 0
|
||||
b00 /
|
||||
b00 .
|
||||
b00 -
|
||||
b00 ,
|
||||
0-
|
||||
0,
|
||||
0+
|
||||
0*
|
||||
0)
|
||||
|
|
@ -330,14 +345,14 @@ b00 ,
|
|||
0%
|
||||
0$
|
||||
b00000000000000000000000000000100 #
|
||||
b101 H
|
||||
b101 I
|
||||
b101 J
|
||||
b101 K
|
||||
#45
|
||||
0"
|
||||
#50
|
||||
1"
|
||||
b100 I
|
||||
b100 H
|
||||
b100 K
|
||||
b100 J
|
||||
b00000000000000000000000000000101 #
|
||||
1$
|
||||
1%
|
||||
|
|
@ -347,52 +362,56 @@ b00000000000000000000000000000101 #
|
|||
1)
|
||||
1*
|
||||
1+
|
||||
b11 ,
|
||||
b11 -
|
||||
1,
|
||||
1-
|
||||
b11 .
|
||||
1/
|
||||
10
|
||||
b11 /
|
||||
b11 0
|
||||
11
|
||||
12
|
||||
b11 9
|
||||
b11 :
|
||||
1;
|
||||
1<
|
||||
13
|
||||
14
|
||||
b11 ;
|
||||
b11 <
|
||||
1=
|
||||
1>
|
||||
r0.5 ?
|
||||
r1 @
|
||||
r1.5 A
|
||||
b00000000000000000000000000000101 C
|
||||
b00000000000000000000000011111010 D
|
||||
1?
|
||||
1@
|
||||
r0.5 A
|
||||
r1 B
|
||||
r1.5 C
|
||||
b00000000000000000000000000000101 E
|
||||
b00000000000000000000000000001010 F
|
||||
b011 G
|
||||
b00000000000000000000000011111010 F
|
||||
b00000000000000000000000000000101 G
|
||||
b00000000000000000000000000001010 H
|
||||
b011 I
|
||||
#55
|
||||
0"
|
||||
#60
|
||||
1"
|
||||
b010 G
|
||||
b00000000000000000000000000001100 F
|
||||
b010 I
|
||||
b00000000000000000000000000001100 H
|
||||
b00000000000000000000000000000110 G
|
||||
b00000000000000000000000011111001 F
|
||||
b00000000000000000000000000000110 E
|
||||
b00000000000000000000000011111001 D
|
||||
b00000000000000000000000000000110 C
|
||||
r1.8 A
|
||||
r1.2 @
|
||||
r0.6 ?
|
||||
r1.8 C
|
||||
r1.2 B
|
||||
r0.6 A
|
||||
0@
|
||||
0?
|
||||
0>
|
||||
0=
|
||||
0<
|
||||
0;
|
||||
b00 :
|
||||
b00 9
|
||||
b00 <
|
||||
b00 ;
|
||||
04
|
||||
03
|
||||
02
|
||||
01
|
||||
00
|
||||
0/
|
||||
b00 0
|
||||
b00 /
|
||||
b00 .
|
||||
b00 -
|
||||
b00 ,
|
||||
0-
|
||||
0,
|
||||
0+
|
||||
0*
|
||||
0)
|
||||
|
|
@ -402,6 +421,6 @@ b00 ,
|
|||
0%
|
||||
0$
|
||||
b00000000000000000000000000000110 #
|
||||
b011 H
|
||||
b011 I
|
||||
b011 J
|
||||
b011 K
|
||||
#64
|
||||
|
|
|
|||
|
|
@ -5,80 +5,84 @@ $timescale 1ps $end
|
|||
$var wire 1 " global_bit $end
|
||||
$upscope $end
|
||||
$scope module t $end
|
||||
$var wire 1 F clk $end
|
||||
$var wire 1 H clk $end
|
||||
$var wire 32 # cyc [31:0] $end
|
||||
$scope module v_strp $end
|
||||
$var wire 1 $ b1 $end
|
||||
$var wire 1 % b0 $end
|
||||
$upscope $end
|
||||
$scope module v_strp2 $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
|
||||
$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
|
||||
$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
|
||||
$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[4] [2:1] $end
|
||||
$var wire 2 . v_arrp_arrp[3] [2:1] $end
|
||||
$var wire 2 . v_arrp [2:1] $end
|
||||
$var wire 2 / v_arrp_arrp[4] [2:1] $end
|
||||
$var wire 2 0 v_arrp_arrp[3] [2:1] $end
|
||||
$scope module v_arrp_strp[4] $end
|
||||
$var wire 1 / b1 $end
|
||||
$var wire 1 0 b0 $end
|
||||
$upscope $end
|
||||
$scope module v_arrp_strp[3] $end
|
||||
$var wire 1 1 b1 $end
|
||||
$var wire 1 2 b0 $end
|
||||
$upscope $end
|
||||
$var wire 1 G v_arru[2] $end
|
||||
$var wire 1 H v_arru[1] $end
|
||||
$var wire 1 I v_arru_arru[4][2] $end
|
||||
$var wire 1 J v_arru_arru[4][1] $end
|
||||
$var wire 1 K v_arru_arru[3][2] $end
|
||||
$var wire 1 L v_arru_arru[3][1] $end
|
||||
$var wire 2 3 v_arru_arrp[4] [2:1] $end
|
||||
$var wire 2 4 v_arru_arrp[3] [2:1] $end
|
||||
$scope module v_arru_strp[4] $end
|
||||
$var wire 1 5 b1 $end
|
||||
$var wire 1 6 b0 $end
|
||||
$scope module v_arrp_strp[3] $end
|
||||
$var wire 1 3 b1 $end
|
||||
$var wire 1 4 b0 $end
|
||||
$upscope $end
|
||||
$scope module v_arru_strp[3] $end
|
||||
$var wire 1 I v_arru[2] $end
|
||||
$var wire 1 J v_arru[1] $end
|
||||
$var wire 1 K v_arru_arru[4][2] $end
|
||||
$var wire 1 L v_arru_arru[4][1] $end
|
||||
$var wire 1 M v_arru_arru[3][2] $end
|
||||
$var wire 1 N v_arru_arru[3][1] $end
|
||||
$var wire 2 5 v_arru_arrp[4] [2:1] $end
|
||||
$var wire 2 6 v_arru_arrp[3] [2:1] $end
|
||||
$scope module v_arru_strp[4] $end
|
||||
$var wire 1 7 b1 $end
|
||||
$var wire 1 8 b0 $end
|
||||
$upscope $end
|
||||
$var real 64 9 v_real $end
|
||||
$var real 64 ; v_arr_real[0] $end
|
||||
$var real 64 = v_arr_real[1] $end
|
||||
$var wire 64 M v_chandle [63:0] $end
|
||||
$scope module v_arru_strp[3] $end
|
||||
$var wire 1 9 b1 $end
|
||||
$var wire 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 wire 64 O v_chandle [63:0] $end
|
||||
$scope module v_str32x2[1] $end
|
||||
$var wire 32 ? data [31:0] $end
|
||||
$var wire 32 A data [31:0] $end
|
||||
$upscope $end
|
||||
$scope module v_str32x2[0] $end
|
||||
$var wire 32 @ data [31:0] $end
|
||||
$var wire 32 B data [31:0] $end
|
||||
$upscope $end
|
||||
$var wire 32 A v_enumed [31:0] $end
|
||||
$var wire 32 B v_enumed2 [31:0] $end
|
||||
$var wire 3 C v_enumb [2:0] $end
|
||||
$var wire 32 C v_enumed [31:0] $end
|
||||
$var wire 32 D v_enumed2 [31:0] $end
|
||||
$var wire 3 E v_enumb [2:0] $end
|
||||
$scope module v_enumb2_str $end
|
||||
$var wire 3 D a [2:0] $end
|
||||
$var wire 3 E b [2:0] $end
|
||||
$var wire 3 F a [2:0] $end
|
||||
$var wire 3 G b [2:0] $end
|
||||
$upscope $end
|
||||
$var wire 8 O unpacked_array[-2] [7:0] $end
|
||||
$var wire 8 P unpacked_array[-1] [7:0] $end
|
||||
$var wire 8 Q unpacked_array[0] [7:0] $end
|
||||
$var wire 1 R 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 8 Q unpacked_array[-2] [7:0] $end
|
||||
$var wire 8 R unpacked_array[-1] [7:0] $end
|
||||
$var wire 8 S unpacked_array[0] [7:0] $end
|
||||
$var wire 1 T 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
|
||||
$upscope $end
|
||||
$upscope $end
|
||||
$enddefinitions $end
|
||||
|
|
@ -95,41 +99,43 @@ b00000000000000000000000000000000 #
|
|||
0)
|
||||
0*
|
||||
0+
|
||||
b00 ,
|
||||
b00 -
|
||||
0,
|
||||
0-
|
||||
b00 .
|
||||
0/
|
||||
00
|
||||
b00 /
|
||||
b00 0
|
||||
01
|
||||
02
|
||||
b00 3
|
||||
b00 4
|
||||
05
|
||||
06
|
||||
03
|
||||
04
|
||||
b00 5
|
||||
b00 6
|
||||
07
|
||||
08
|
||||
r0 9
|
||||
09
|
||||
0:
|
||||
r0 ;
|
||||
r0 =
|
||||
b00000000000000000000000000000000 ?
|
||||
b00000000000000000000000011111111 @
|
||||
r0 ?
|
||||
b00000000000000000000000000000000 A
|
||||
b00000000000000000000000000000000 B
|
||||
b000 C
|
||||
b000 D
|
||||
b00000000000000000000000011111111 B
|
||||
b00000000000000000000000000000000 C
|
||||
b00000000000000000000000000000000 D
|
||||
b000 E
|
||||
0F
|
||||
0G
|
||||
b000 F
|
||||
b000 G
|
||||
0H
|
||||
0I
|
||||
0J
|
||||
0K
|
||||
0L
|
||||
b0000000000000000000000000000000000000000000000000000000000000000 M
|
||||
b00000000 O
|
||||
b00000000 P
|
||||
0M
|
||||
0N
|
||||
b0000000000000000000000000000000000000000000000000000000000000000 O
|
||||
b00000000 Q
|
||||
0R
|
||||
b00000000 R
|
||||
b00000000 S
|
||||
0T
|
||||
#10
|
||||
b00000000000000000000000000000001 #
|
||||
1$
|
||||
|
|
@ -140,30 +146,32 @@ b00000000000000000000000000000001 #
|
|||
1)
|
||||
1*
|
||||
1+
|
||||
b11 ,
|
||||
b11 -
|
||||
1,
|
||||
1-
|
||||
b11 .
|
||||
1/
|
||||
10
|
||||
b11 /
|
||||
b11 0
|
||||
11
|
||||
12
|
||||
b11 3
|
||||
b11 4
|
||||
15
|
||||
16
|
||||
13
|
||||
14
|
||||
b11 5
|
||||
b11 6
|
||||
17
|
||||
18
|
||||
r0.1 9
|
||||
r0.2 ;
|
||||
r0.3 =
|
||||
b00000000000000000000000000000001 ?
|
||||
b00000000000000000000000011111110 @
|
||||
19
|
||||
1:
|
||||
r0.1 ;
|
||||
r0.2 =
|
||||
r0.3 ?
|
||||
b00000000000000000000000000000001 A
|
||||
b00000000000000000000000000000010 B
|
||||
b111 C
|
||||
1F
|
||||
b00000000000000000000000011111110 B
|
||||
b00000000000000000000000000000001 C
|
||||
b00000000000000000000000000000010 D
|
||||
b111 E
|
||||
1H
|
||||
#15
|
||||
0F
|
||||
0H
|
||||
#20
|
||||
b00000000000000000000000000000010 #
|
||||
0$
|
||||
|
|
@ -174,32 +182,34 @@ b00000000000000000000000000000010 #
|
|||
0)
|
||||
0*
|
||||
0+
|
||||
b00 ,
|
||||
b00 -
|
||||
0,
|
||||
0-
|
||||
b00 .
|
||||
0/
|
||||
00
|
||||
b00 /
|
||||
b00 0
|
||||
01
|
||||
02
|
||||
b00 3
|
||||
b00 4
|
||||
05
|
||||
06
|
||||
03
|
||||
04
|
||||
b00 5
|
||||
b00 6
|
||||
07
|
||||
08
|
||||
r0.2 9
|
||||
r0.4 ;
|
||||
r0.6 =
|
||||
b00000000000000000000000000000010 ?
|
||||
b00000000000000000000000011111101 @
|
||||
09
|
||||
0:
|
||||
r0.2 ;
|
||||
r0.4 =
|
||||
r0.6 ?
|
||||
b00000000000000000000000000000010 A
|
||||
b00000000000000000000000000000100 B
|
||||
b110 C
|
||||
b111 D
|
||||
b111 E
|
||||
1F
|
||||
b00000000000000000000000011111101 B
|
||||
b00000000000000000000000000000010 C
|
||||
b00000000000000000000000000000100 D
|
||||
b110 E
|
||||
b111 F
|
||||
b111 G
|
||||
1H
|
||||
#25
|
||||
0F
|
||||
0H
|
||||
#30
|
||||
b00000000000000000000000000000011 #
|
||||
1$
|
||||
|
|
@ -210,32 +220,34 @@ b00000000000000000000000000000011 #
|
|||
1)
|
||||
1*
|
||||
1+
|
||||
b11 ,
|
||||
b11 -
|
||||
1,
|
||||
1-
|
||||
b11 .
|
||||
1/
|
||||
10
|
||||
b11 /
|
||||
b11 0
|
||||
11
|
||||
12
|
||||
b11 3
|
||||
b11 4
|
||||
15
|
||||
16
|
||||
13
|
||||
14
|
||||
b11 5
|
||||
b11 6
|
||||
17
|
||||
18
|
||||
r0.3 9
|
||||
r0.6000000000000001 ;
|
||||
r0.8999999999999999 =
|
||||
b00000000000000000000000000000011 ?
|
||||
b00000000000000000000000011111100 @
|
||||
19
|
||||
1:
|
||||
r0.3 ;
|
||||
r0.6000000000000001 =
|
||||
r0.8999999999999999 ?
|
||||
b00000000000000000000000000000011 A
|
||||
b00000000000000000000000000000110 B
|
||||
b101 C
|
||||
b110 D
|
||||
b110 E
|
||||
1F
|
||||
b00000000000000000000000011111100 B
|
||||
b00000000000000000000000000000011 C
|
||||
b00000000000000000000000000000110 D
|
||||
b101 E
|
||||
b110 F
|
||||
b110 G
|
||||
1H
|
||||
#35
|
||||
0F
|
||||
0H
|
||||
#40
|
||||
b00000000000000000000000000000100 #
|
||||
0$
|
||||
|
|
@ -246,32 +258,34 @@ b00000000000000000000000000000100 #
|
|||
0)
|
||||
0*
|
||||
0+
|
||||
b00 ,
|
||||
b00 -
|
||||
0,
|
||||
0-
|
||||
b00 .
|
||||
0/
|
||||
00
|
||||
b00 /
|
||||
b00 0
|
||||
01
|
||||
02
|
||||
b00 3
|
||||
b00 4
|
||||
05
|
||||
06
|
||||
03
|
||||
04
|
||||
b00 5
|
||||
b00 6
|
||||
07
|
||||
08
|
||||
r0.4 9
|
||||
r0.8 ;
|
||||
r1.2 =
|
||||
b00000000000000000000000000000100 ?
|
||||
b00000000000000000000000011111011 @
|
||||
09
|
||||
0:
|
||||
r0.4 ;
|
||||
r0.8 =
|
||||
r1.2 ?
|
||||
b00000000000000000000000000000100 A
|
||||
b00000000000000000000000000001000 B
|
||||
b100 C
|
||||
b101 D
|
||||
b101 E
|
||||
1F
|
||||
b00000000000000000000000011111011 B
|
||||
b00000000000000000000000000000100 C
|
||||
b00000000000000000000000000001000 D
|
||||
b100 E
|
||||
b101 F
|
||||
b101 G
|
||||
1H
|
||||
#45
|
||||
0F
|
||||
0H
|
||||
#50
|
||||
b00000000000000000000000000000101 #
|
||||
1$
|
||||
|
|
@ -282,32 +296,34 @@ b00000000000000000000000000000101 #
|
|||
1)
|
||||
1*
|
||||
1+
|
||||
b11 ,
|
||||
b11 -
|
||||
1,
|
||||
1-
|
||||
b11 .
|
||||
1/
|
||||
10
|
||||
b11 /
|
||||
b11 0
|
||||
11
|
||||
12
|
||||
b11 3
|
||||
b11 4
|
||||
15
|
||||
16
|
||||
13
|
||||
14
|
||||
b11 5
|
||||
b11 6
|
||||
17
|
||||
18
|
||||
r0.5 9
|
||||
r1 ;
|
||||
r1.5 =
|
||||
b00000000000000000000000000000101 ?
|
||||
b00000000000000000000000011111010 @
|
||||
19
|
||||
1:
|
||||
r0.5 ;
|
||||
r1 =
|
||||
r1.5 ?
|
||||
b00000000000000000000000000000101 A
|
||||
b00000000000000000000000000001010 B
|
||||
b011 C
|
||||
b100 D
|
||||
b100 E
|
||||
1F
|
||||
b00000000000000000000000011111010 B
|
||||
b00000000000000000000000000000101 C
|
||||
b00000000000000000000000000001010 D
|
||||
b011 E
|
||||
b100 F
|
||||
b100 G
|
||||
1H
|
||||
#55
|
||||
0F
|
||||
0H
|
||||
#60
|
||||
b00000000000000000000000000000110 #
|
||||
0$
|
||||
|
|
@ -318,28 +334,30 @@ b00000000000000000000000000000110 #
|
|||
0)
|
||||
0*
|
||||
0+
|
||||
b00 ,
|
||||
b00 -
|
||||
0,
|
||||
0-
|
||||
b00 .
|
||||
0/
|
||||
00
|
||||
b00 /
|
||||
b00 0
|
||||
01
|
||||
02
|
||||
b00 3
|
||||
b00 4
|
||||
05
|
||||
06
|
||||
03
|
||||
04
|
||||
b00 5
|
||||
b00 6
|
||||
07
|
||||
08
|
||||
r0.6 9
|
||||
r1.2 ;
|
||||
r1.8 =
|
||||
b00000000000000000000000000000110 ?
|
||||
b00000000000000000000000011111001 @
|
||||
09
|
||||
0:
|
||||
r0.6 ;
|
||||
r1.2 =
|
||||
r1.8 ?
|
||||
b00000000000000000000000000000110 A
|
||||
b00000000000000000000000000001100 B
|
||||
b010 C
|
||||
b011 D
|
||||
b011 E
|
||||
1F
|
||||
b00000000000000000000000011111001 B
|
||||
b00000000000000000000000000000110 C
|
||||
b00000000000000000000000000001100 D
|
||||
b010 E
|
||||
b011 F
|
||||
b011 G
|
||||
1H
|
||||
#64
|
||||
|
|
|
|||
|
|
@ -4,6 +4,9 @@
|
|||
// SPDX-FileCopyrightText: 2026 Wilson Snyder
|
||||
// SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
// Test that when struct fields are driven from different clocks,
|
||||
// no trace_chg_dtype function is created (fields must be traced individually).
|
||||
|
||||
bit global_bit;
|
||||
|
||||
module t (clk, clk2);
|
||||
|
|
@ -0,0 +1,107 @@
|
|||
$date
|
||||
Tue Mar 31 17:23:31 2026
|
||||
|
||||
$end
|
||||
$version
|
||||
Generated by VerilatedFst
|
||||
$end
|
||||
$timescale
|
||||
1ps
|
||||
$end
|
||||
$scope module top $end
|
||||
$var wire 1 ! clk $end
|
||||
$var wire 1 " clk2 $end
|
||||
$scope module $unit $end
|
||||
$var bit 1 # global_bit $end
|
||||
$upscope $end
|
||||
$scope module t $end
|
||||
$var wire 1 ! clk $end
|
||||
$var wire 1 " clk2 $end
|
||||
$var integer 32 $ cyc [31:0] $end
|
||||
$attrbegin pack packed members 2 $end
|
||||
$scope struct v_strp $end
|
||||
$var bit 1 % b1 $end
|
||||
$var bit 1 & b0 $end
|
||||
$upscope $end
|
||||
$attrbegin pack packed members 2 $end
|
||||
$scope struct v_strp2 $end
|
||||
$var bit 1 ' b1 $end
|
||||
$var bit 1 ( b0 $end
|
||||
$upscope $end
|
||||
$var logic 1 ) foo $end
|
||||
$attrbegin array unpacked bounds -30064771072 $end
|
||||
$scope sv_array unpacked_array $end
|
||||
$var logic 8 * unpacked_array[-7] [7:0] $end
|
||||
$var logic 8 + unpacked_array[-6] [7:0] $end
|
||||
$var logic 8 , unpacked_array[-5] [7:0] $end
|
||||
$var logic 8 - unpacked_array[-4] [7:0] $end
|
||||
$var logic 8 . unpacked_array[-3] [7:0] $end
|
||||
$var logic 8 / unpacked_array[-2] [7:0] $end
|
||||
$var logic 8 0 unpacked_array[-1] [7:0] $end
|
||||
$var logic 8 1 unpacked_array[0] [7:0] $end
|
||||
$upscope $end
|
||||
$upscope $end
|
||||
$upscope $end
|
||||
$enddefinitions $end
|
||||
#0
|
||||
$dumpvars
|
||||
b00000000 1
|
||||
b00000000 0
|
||||
b00000000 /
|
||||
b00000000 .
|
||||
b00000000 -
|
||||
b00000000 ,
|
||||
b00000000 +
|
||||
b00000000 *
|
||||
0)
|
||||
0(
|
||||
0'
|
||||
0&
|
||||
0%
|
||||
b00000000000000000000000000000000 $
|
||||
0#
|
||||
0"
|
||||
0!
|
||||
$end
|
||||
#10
|
||||
1!
|
||||
b00000000000000000000000000000001 $
|
||||
1)
|
||||
#15
|
||||
0!
|
||||
#20
|
||||
1!
|
||||
0)
|
||||
b00000000000000000000000000000010 $
|
||||
1&
|
||||
#25
|
||||
0!
|
||||
#30
|
||||
1!
|
||||
0&
|
||||
b00000000000000000000000000000011 $
|
||||
1)
|
||||
b00000001 1
|
||||
#35
|
||||
0!
|
||||
#40
|
||||
1!
|
||||
0)
|
||||
b00000000000000000000000000000100 $
|
||||
1&
|
||||
#45
|
||||
0!
|
||||
#50
|
||||
1!
|
||||
0&
|
||||
b00000000000000000000000000000101 $
|
||||
1)
|
||||
b00000010 1
|
||||
1(
|
||||
#55
|
||||
0!
|
||||
#60
|
||||
1!
|
||||
0)
|
||||
b00000000000000000000000000000110 $
|
||||
1&
|
||||
|
|
@ -8,13 +8,8 @@
|
|||
# SPDX-License-Identifier: LGPL-3.0-only OR Artistic-2.0
|
||||
|
||||
import vltest_bootstrap
|
||||
import trace_split_struct_common
|
||||
|
||||
test.scenarios("simulator_st")
|
||||
test.scenarios('vlt_all')
|
||||
|
||||
test.compile(verilator_flags2=["--trace"])
|
||||
|
||||
test.execute()
|
||||
|
||||
test.vcd_identical(test.trace_filename, test.golden_filename)
|
||||
|
||||
test.passes()
|
||||
trace_split_struct_common.run(test)
|
||||
|
|
@ -0,0 +1,135 @@
|
|||
// Generated by verilated_saif
|
||||
(SAIFILE
|
||||
(SAIFVERSION "2.0")
|
||||
(DIRECTION "backward")
|
||||
(PROGRAM_NAME "Verilator")
|
||||
(DIVIDER / )
|
||||
(TIMESCALE 1ps)
|
||||
(DURATION 60)
|
||||
(INSTANCE top
|
||||
(NET
|
||||
(clk (T0 35) (T1 25) (TZ 0) (TX 0) (TB 0) (TC 11))
|
||||
(clk2 (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
)
|
||||
(INSTANCE $unit
|
||||
(NET
|
||||
(global_bit (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
)
|
||||
)
|
||||
(INSTANCE t
|
||||
(NET
|
||||
(clk (T0 35) (T1 25) (TZ 0) (TX 0) (TB 0) (TC 11))
|
||||
(clk2 (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(cyc\[0\] (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(cyc\[1\] (T0 40) (T1 20) (TZ 0) (TX 0) (TB 0) (TC 3))
|
||||
(cyc\[2\] (T0 40) (T1 20) (TZ 0) (TX 0) (TB 0) (TC 1))
|
||||
(cyc\[3\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(cyc\[4\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(cyc\[5\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(cyc\[6\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(cyc\[7\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(cyc\[8\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(cyc\[9\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(cyc\[10\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(cyc\[11\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(cyc\[12\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(cyc\[13\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(cyc\[14\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(cyc\[15\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(cyc\[16\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(cyc\[17\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(cyc\[18\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(cyc\[19\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(cyc\[20\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(cyc\[21\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(cyc\[22\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(cyc\[23\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(cyc\[24\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(cyc\[25\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(cyc\[26\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(cyc\[27\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(cyc\[28\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(cyc\[29\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(cyc\[30\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(cyc\[31\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(foo (T0 30) (T1 30) (TZ 0) (TX 0) (TB 0) (TC 6))
|
||||
(unpacked_array[-7]\[0\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(unpacked_array[-7]\[1\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(unpacked_array[-7]\[2\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(unpacked_array[-7]\[3\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(unpacked_array[-7]\[4\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(unpacked_array[-7]\[5\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(unpacked_array[-7]\[6\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(unpacked_array[-7]\[7\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(unpacked_array[-6]\[0\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(unpacked_array[-6]\[1\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(unpacked_array[-6]\[2\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(unpacked_array[-6]\[3\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(unpacked_array[-6]\[4\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(unpacked_array[-6]\[5\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(unpacked_array[-6]\[6\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(unpacked_array[-6]\[7\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(unpacked_array[-5]\[0\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(unpacked_array[-5]\[1\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(unpacked_array[-5]\[2\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(unpacked_array[-5]\[3\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(unpacked_array[-5]\[4\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(unpacked_array[-5]\[5\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(unpacked_array[-5]\[6\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(unpacked_array[-5]\[7\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(unpacked_array[-4]\[0\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(unpacked_array[-4]\[1\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(unpacked_array[-4]\[2\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(unpacked_array[-4]\[3\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(unpacked_array[-4]\[4\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(unpacked_array[-4]\[5\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(unpacked_array[-4]\[6\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(unpacked_array[-4]\[7\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(unpacked_array[-3]\[0\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(unpacked_array[-3]\[1\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(unpacked_array[-3]\[2\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(unpacked_array[-3]\[3\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(unpacked_array[-3]\[4\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(unpacked_array[-3]\[5\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(unpacked_array[-3]\[6\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(unpacked_array[-3]\[7\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(unpacked_array[-2]\[0\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(unpacked_array[-2]\[1\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(unpacked_array[-2]\[2\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(unpacked_array[-2]\[3\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(unpacked_array[-2]\[4\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(unpacked_array[-2]\[5\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(unpacked_array[-2]\[6\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(unpacked_array[-2]\[7\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(unpacked_array[-1]\[0\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(unpacked_array[-1]\[1\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(unpacked_array[-1]\[2\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(unpacked_array[-1]\[3\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(unpacked_array[-1]\[4\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(unpacked_array[-1]\[5\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(unpacked_array[-1]\[6\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(unpacked_array[-1]\[7\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(unpacked_array[0]\[0\] (T0 40) (T1 20) (TZ 0) (TX 0) (TB 0) (TC 2))
|
||||
(unpacked_array[0]\[1\] (T0 50) (T1 10) (TZ 0) (TX 0) (TB 0) (TC 1))
|
||||
(unpacked_array[0]\[2\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(unpacked_array[0]\[3\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(unpacked_array[0]\[4\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(unpacked_array[0]\[5\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(unpacked_array[0]\[6\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(unpacked_array[0]\[7\] (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
)
|
||||
(INSTANCE v_strp
|
||||
(NET
|
||||
(b1 (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(b0 (T0 40) (T1 20) (TZ 0) (TX 0) (TB 0) (TC 5))
|
||||
)
|
||||
)
|
||||
(INSTANCE v_strp2
|
||||
(NET
|
||||
(b1 (T0 60) (T1 0) (TZ 0) (TX 0) (TB 0) (TC 0))
|
||||
(b0 (T0 50) (T1 10) (TZ 0) (TX 0) (TB 0) (TC 1))
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
|
@ -8,16 +8,8 @@
|
|||
# SPDX-License-Identifier: LGPL-3.0-only OR Artistic-2.0
|
||||
|
||||
import vltest_bootstrap
|
||||
import trace_split_struct_common
|
||||
|
||||
test.scenarios("simulator")
|
||||
test.scenarios('vlt_all')
|
||||
|
||||
test.compile(verilator_flags2=["--cc --trace-vcd --trace-structs --no-trace-params"])
|
||||
|
||||
trace_cpp = test.obj_dir + "/" + test.vm_prefix + "__Trace__0.cpp"
|
||||
test.file_grep_count(trace_cpp, r"^ *Vt_.*trace_chg_dtype", 0)
|
||||
|
||||
test.execute()
|
||||
|
||||
test.vcd_identical(test.trace_filename, test.golden_filename)
|
||||
|
||||
test.passes()
|
||||
trace_split_struct_common.run(test)
|
||||
|
|
@ -8,17 +8,8 @@
|
|||
# SPDX-License-Identifier: LGPL-3.0-only OR Artistic-2.0
|
||||
|
||||
import vltest_bootstrap
|
||||
import trace_split_struct_common
|
||||
|
||||
test.scenarios("simulator_st")
|
||||
test.top_filename = "t/t_trace_type_dupes.v"
|
||||
test.scenarios('vlt_all')
|
||||
|
||||
test.compile(
|
||||
# artificially low trace splitting for force cross-split type function usage
|
||||
verilator_flags2=["--trace", "--trace-structs", "--output-split-ctrace 10"]
|
||||
)
|
||||
|
||||
test.execute()
|
||||
|
||||
test.vcd_identical(test.trace_filename, test.golden_filename)
|
||||
|
||||
test.passes()
|
||||
trace_split_struct_common.run(test)
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
// DESCRIPTION: Verilator: Verilog Test module
|
||||
//
|
||||
// This file ONLY is placed under the Creative Commons Public Domain.
|
||||
// SPDX-FileCopyrightText: 2026 Wilson Snyder
|
||||
// SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
module t (/*AUTOARG*/
|
||||
// Inputs
|
||||
clk
|
||||
);
|
||||
input clk;
|
||||
int cyc;
|
||||
|
||||
typedef struct packed {
|
||||
logic [7:0] a;
|
||||
logic [7:0] b;
|
||||
} strp_t;
|
||||
|
||||
strp_t s1;
|
||||
strp_t s2;
|
||||
|
||||
strp_t s3;
|
||||
logic [7:0] alias_of_s3a;
|
||||
assign alias_of_s3a = s3.a;
|
||||
|
||||
strp_t s4;
|
||||
strp_t s5;
|
||||
assign s5 = s4;
|
||||
|
||||
logic [7:0] source_val;
|
||||
strp_t s6;
|
||||
assign s6.a = source_val;
|
||||
|
||||
always @(posedge clk) begin
|
||||
cyc <= cyc + 1;
|
||||
s1 <= {8'(cyc), 8'(cyc + 1)};
|
||||
s2 <= {8'(cyc + 2), 8'(cyc + 3)};
|
||||
s3 <= {8'(cyc + 4), 8'(cyc + 5)};
|
||||
s4 <= {8'(cyc + 6), 8'(cyc + 7)};
|
||||
source_val <= 8'(cyc + 8);
|
||||
s6.b <= 8'(cyc + 9);
|
||||
if (cyc == 9) begin
|
||||
$write("*-* All Finished *-*\n");
|
||||
$finish;
|
||||
end
|
||||
end
|
||||
endmodule
|
||||
|
|
@ -0,0 +1,212 @@
|
|||
$date
|
||||
Tue Mar 31 17:14:59 2026
|
||||
|
||||
$end
|
||||
$version
|
||||
Generated by VerilatedFst
|
||||
$end
|
||||
$timescale
|
||||
1ps
|
||||
$end
|
||||
$scope module top $end
|
||||
$var wire 1 ! clk $end
|
||||
$scope module t $end
|
||||
$var wire 1 ! clk $end
|
||||
$var int 32 " cyc [31:0] $end
|
||||
$attrbegin pack packed members 2 $end
|
||||
$scope struct s1 $end
|
||||
$var logic 8 # a [7:0] $end
|
||||
$var logic 8 $ b [7:0] $end
|
||||
$upscope $end
|
||||
$attrbegin pack packed members 2 $end
|
||||
$scope struct s2 $end
|
||||
$var logic 8 % a [7:0] $end
|
||||
$var logic 8 & b [7:0] $end
|
||||
$upscope $end
|
||||
$attrbegin pack packed members 2 $end
|
||||
$scope struct s3 $end
|
||||
$var logic 8 ' a [7:0] $end
|
||||
$var logic 8 ( b [7:0] $end
|
||||
$upscope $end
|
||||
$var logic 8 ' alias_of_s3a [7:0] $end
|
||||
$attrbegin pack packed members 2 $end
|
||||
$scope struct s4 $end
|
||||
$var logic 8 ) a [7:0] $end
|
||||
$var logic 8 * b [7:0] $end
|
||||
$upscope $end
|
||||
$attrbegin pack packed members 2 $end
|
||||
$scope struct s5 $end
|
||||
$var logic 8 ) a [7:0] $end
|
||||
$var logic 8 * b [7:0] $end
|
||||
$upscope $end
|
||||
$var logic 8 + source_val [7:0] $end
|
||||
$attrbegin pack packed members 2 $end
|
||||
$scope struct s6 $end
|
||||
$var logic 8 + a [7:0] $end
|
||||
$var logic 8 , b [7:0] $end
|
||||
$upscope $end
|
||||
$upscope $end
|
||||
$upscope $end
|
||||
$enddefinitions $end
|
||||
#0
|
||||
$dumpvars
|
||||
b00000000 ,
|
||||
b00000000 +
|
||||
b00000000 *
|
||||
b00000000 )
|
||||
b00000000 (
|
||||
b00000000 '
|
||||
b00000000 &
|
||||
b00000000 %
|
||||
b00000000 $
|
||||
b00000000 #
|
||||
b00000000000000000000000000000000 "
|
||||
0!
|
||||
$end
|
||||
#10
|
||||
1!
|
||||
b00000000000000000000000000000001 "
|
||||
b00000001 $
|
||||
b00000010 %
|
||||
b00000011 &
|
||||
b00000100 '
|
||||
b00000101 (
|
||||
b00000110 )
|
||||
b00000111 *
|
||||
b00001000 +
|
||||
b00001001 ,
|
||||
#15
|
||||
0!
|
||||
#20
|
||||
1!
|
||||
b00001010 ,
|
||||
b00001001 +
|
||||
b00001000 *
|
||||
b00000111 )
|
||||
b00000110 (
|
||||
b00000101 '
|
||||
b00000100 &
|
||||
b00000011 %
|
||||
b00000010 $
|
||||
b00000000000000000000000000000010 "
|
||||
b00000001 #
|
||||
#25
|
||||
0!
|
||||
#30
|
||||
1!
|
||||
b00000010 #
|
||||
b00000000000000000000000000000011 "
|
||||
b00000011 $
|
||||
b00000100 %
|
||||
b00000101 &
|
||||
b00000110 '
|
||||
b00000111 (
|
||||
b00001000 )
|
||||
b00001001 *
|
||||
b00001010 +
|
||||
b00001011 ,
|
||||
#35
|
||||
0!
|
||||
#40
|
||||
1!
|
||||
b00001100 ,
|
||||
b00001011 +
|
||||
b00001010 *
|
||||
b00001001 )
|
||||
b00001000 (
|
||||
b00000111 '
|
||||
b00000110 &
|
||||
b00000101 %
|
||||
b00000100 $
|
||||
b00000000000000000000000000000100 "
|
||||
b00000011 #
|
||||
#45
|
||||
0!
|
||||
#50
|
||||
1!
|
||||
b00000100 #
|
||||
b00000000000000000000000000000101 "
|
||||
b00000101 $
|
||||
b00000110 %
|
||||
b00000111 &
|
||||
b00001000 '
|
||||
b00001001 (
|
||||
b00001010 )
|
||||
b00001011 *
|
||||
b00001100 +
|
||||
b00001101 ,
|
||||
#55
|
||||
0!
|
||||
#60
|
||||
1!
|
||||
b00001110 ,
|
||||
b00001101 +
|
||||
b00001100 *
|
||||
b00001011 )
|
||||
b00001010 (
|
||||
b00001001 '
|
||||
b00001000 &
|
||||
b00000111 %
|
||||
b00000110 $
|
||||
b00000000000000000000000000000110 "
|
||||
b00000101 #
|
||||
#65
|
||||
0!
|
||||
#70
|
||||
1!
|
||||
b00000110 #
|
||||
b00000000000000000000000000000111 "
|
||||
b00000111 $
|
||||
b00001000 %
|
||||
b00001001 &
|
||||
b00001010 '
|
||||
b00001011 (
|
||||
b00001100 )
|
||||
b00001101 *
|
||||
b00001110 +
|
||||
b00001111 ,
|
||||
#75
|
||||
0!
|
||||
#80
|
||||
1!
|
||||
b00010000 ,
|
||||
b00001111 +
|
||||
b00001110 *
|
||||
b00001101 )
|
||||
b00001100 (
|
||||
b00001011 '
|
||||
b00001010 &
|
||||
b00001001 %
|
||||
b00001000 $
|
||||
b00000000000000000000000000001000 "
|
||||
b00000111 #
|
||||
#85
|
||||
0!
|
||||
#90
|
||||
1!
|
||||
b00001000 #
|
||||
b00000000000000000000000000001001 "
|
||||
b00001001 $
|
||||
b00001010 %
|
||||
b00001011 &
|
||||
b00001100 '
|
||||
b00001101 (
|
||||
b00001110 )
|
||||
b00001111 *
|
||||
b00010000 +
|
||||
b00010001 ,
|
||||
#95
|
||||
0!
|
||||
#100
|
||||
1!
|
||||
b00010010 ,
|
||||
b00010001 +
|
||||
b00010000 *
|
||||
b00001111 )
|
||||
b00001110 (
|
||||
b00001101 '
|
||||
b00001100 &
|
||||
b00001011 %
|
||||
b00001010 $
|
||||
b00000000000000000000000000001010 "
|
||||
b00001001 #
|
||||
|
|
@ -8,17 +8,8 @@
|
|||
# SPDX-License-Identifier: LGPL-3.0-only OR Artistic-2.0
|
||||
|
||||
import vltest_bootstrap
|
||||
import trace_struct_alias_common
|
||||
|
||||
test.scenarios("simulator")
|
||||
test.scenarios('vlt_all')
|
||||
|
||||
test.compile(verilator_flags2=["--cc --trace-vcd --trace-structs --no-trace-params"])
|
||||
|
||||
trace_cpp = test.obj_dir + "/" + test.vm_prefix + "__Trace__0.cpp"
|
||||
test.file_grep(trace_cpp, r"^ *Vt_.*trace_chg_dtype.*t__DOT__v_strp2")
|
||||
test.file_grep_count(trace_cpp, r"^ *Vt_.*trace_chg_dtype", 1)
|
||||
|
||||
test.execute()
|
||||
|
||||
test.vcd_identical(test.trace_filename, test.golden_filename)
|
||||
|
||||
test.passes()
|
||||
trace_struct_alias_common.run(test)
|
||||
|
|
@ -0,0 +1,198 @@
|
|||
$version Generated by VerilatedVcd $end
|
||||
$timescale 1ps $end
|
||||
$scope module top $end
|
||||
$var wire 1 - clk $end
|
||||
$scope module t $end
|
||||
$var wire 1 - clk $end
|
||||
$var wire 32 " cyc [31:0] $end
|
||||
$scope module s1 $end
|
||||
$var wire 8 # a [7:0] $end
|
||||
$var wire 8 $ b [7:0] $end
|
||||
$upscope $end
|
||||
$scope module s2 $end
|
||||
$var wire 8 % a [7:0] $end
|
||||
$var wire 8 & b [7:0] $end
|
||||
$upscope $end
|
||||
$scope module s3 $end
|
||||
$var wire 8 ' a [7:0] $end
|
||||
$var wire 8 ( b [7:0] $end
|
||||
$upscope $end
|
||||
$var wire 8 ' alias_of_s3a [7:0] $end
|
||||
$scope module s4 $end
|
||||
$var wire 8 ) a [7:0] $end
|
||||
$var wire 8 * b [7:0] $end
|
||||
$upscope $end
|
||||
$scope module s5 $end
|
||||
$var wire 8 ) a [7:0] $end
|
||||
$var wire 8 * b [7:0] $end
|
||||
$upscope $end
|
||||
$var wire 8 + source_val [7:0] $end
|
||||
$scope module s6 $end
|
||||
$var wire 8 + a [7:0] $end
|
||||
$var wire 8 , b [7:0] $end
|
||||
$upscope $end
|
||||
$upscope $end
|
||||
$upscope $end
|
||||
$enddefinitions $end
|
||||
|
||||
|
||||
#0
|
||||
b00000000000000000000000000000000 "
|
||||
b00000000 #
|
||||
b00000000 $
|
||||
b00000000 %
|
||||
b00000000 &
|
||||
b00000000 '
|
||||
b00000000 (
|
||||
b00000000 )
|
||||
b00000000 *
|
||||
b00000000 +
|
||||
b00000000 ,
|
||||
0-
|
||||
#10
|
||||
b00000000000000000000000000000001 "
|
||||
b00000001 $
|
||||
b00000010 %
|
||||
b00000011 &
|
||||
b00000100 '
|
||||
b00000101 (
|
||||
b00000110 )
|
||||
b00000111 *
|
||||
b00001000 +
|
||||
b00001001 ,
|
||||
1-
|
||||
#15
|
||||
0-
|
||||
#20
|
||||
b00000000000000000000000000000010 "
|
||||
b00000001 #
|
||||
b00000010 $
|
||||
b00000011 %
|
||||
b00000100 &
|
||||
b00000101 '
|
||||
b00000110 (
|
||||
b00000111 )
|
||||
b00001000 *
|
||||
b00001001 +
|
||||
b00001010 ,
|
||||
1-
|
||||
#25
|
||||
0-
|
||||
#30
|
||||
b00000000000000000000000000000011 "
|
||||
b00000010 #
|
||||
b00000011 $
|
||||
b00000100 %
|
||||
b00000101 &
|
||||
b00000110 '
|
||||
b00000111 (
|
||||
b00001000 )
|
||||
b00001001 *
|
||||
b00001010 +
|
||||
b00001011 ,
|
||||
1-
|
||||
#35
|
||||
0-
|
||||
#40
|
||||
b00000000000000000000000000000100 "
|
||||
b00000011 #
|
||||
b00000100 $
|
||||
b00000101 %
|
||||
b00000110 &
|
||||
b00000111 '
|
||||
b00001000 (
|
||||
b00001001 )
|
||||
b00001010 *
|
||||
b00001011 +
|
||||
b00001100 ,
|
||||
1-
|
||||
#45
|
||||
0-
|
||||
#50
|
||||
b00000000000000000000000000000101 "
|
||||
b00000100 #
|
||||
b00000101 $
|
||||
b00000110 %
|
||||
b00000111 &
|
||||
b00001000 '
|
||||
b00001001 (
|
||||
b00001010 )
|
||||
b00001011 *
|
||||
b00001100 +
|
||||
b00001101 ,
|
||||
1-
|
||||
#55
|
||||
0-
|
||||
#60
|
||||
b00000000000000000000000000000110 "
|
||||
b00000101 #
|
||||
b00000110 $
|
||||
b00000111 %
|
||||
b00001000 &
|
||||
b00001001 '
|
||||
b00001010 (
|
||||
b00001011 )
|
||||
b00001100 *
|
||||
b00001101 +
|
||||
b00001110 ,
|
||||
1-
|
||||
#65
|
||||
0-
|
||||
#70
|
||||
b00000000000000000000000000000111 "
|
||||
b00000110 #
|
||||
b00000111 $
|
||||
b00001000 %
|
||||
b00001001 &
|
||||
b00001010 '
|
||||
b00001011 (
|
||||
b00001100 )
|
||||
b00001101 *
|
||||
b00001110 +
|
||||
b00001111 ,
|
||||
1-
|
||||
#75
|
||||
0-
|
||||
#80
|
||||
b00000000000000000000000000001000 "
|
||||
b00000111 #
|
||||
b00001000 $
|
||||
b00001001 %
|
||||
b00001010 &
|
||||
b00001011 '
|
||||
b00001100 (
|
||||
b00001101 )
|
||||
b00001110 *
|
||||
b00001111 +
|
||||
b00010000 ,
|
||||
1-
|
||||
#85
|
||||
0-
|
||||
#90
|
||||
b00000000000000000000000000001001 "
|
||||
b00001000 #
|
||||
b00001001 $
|
||||
b00001010 %
|
||||
b00001011 &
|
||||
b00001100 '
|
||||
b00001101 (
|
||||
b00001110 )
|
||||
b00001111 *
|
||||
b00010000 +
|
||||
b00010001 ,
|
||||
1-
|
||||
#95
|
||||
0-
|
||||
#100
|
||||
b00000000000000000000000000001010 "
|
||||
b00001001 #
|
||||
b00001010 $
|
||||
b00001011 %
|
||||
b00001100 &
|
||||
b00001101 '
|
||||
b00001110 (
|
||||
b00001111 )
|
||||
b00010000 *
|
||||
b00010001 +
|
||||
b00010010 ,
|
||||
1-
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
#!/usr/bin/env python3
|
||||
# DESCRIPTION: Verilator: Verilog Test driver/expect definition
|
||||
#
|
||||
# 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-FileCopyrightText: 2026 Wilson Snyder
|
||||
# SPDX-License-Identifier: LGPL-3.0-only OR Artistic-2.0
|
||||
|
||||
import vltest_bootstrap
|
||||
import trace_struct_alias_common
|
||||
|
||||
test.scenarios('vlt_all')
|
||||
|
||||
trace_struct_alias_common.run(test)
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,15 @@
|
|||
#!/usr/bin/env python3
|
||||
# DESCRIPTION: Verilator: Verilog Test driver/expect definition
|
||||
#
|
||||
# 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-FileCopyrightText: 2026 Wilson Snyder
|
||||
# SPDX-License-Identifier: LGPL-3.0-only OR Artistic-2.0
|
||||
|
||||
import vltest_bootstrap
|
||||
import trace_type_dupes_common
|
||||
|
||||
test.scenarios('vlt_all')
|
||||
|
||||
trace_type_dupes_common.run(test)
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,15 @@
|
|||
#!/usr/bin/env python3
|
||||
# DESCRIPTION: Verilator: Verilog Test driver/expect definition
|
||||
#
|
||||
# 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-FileCopyrightText: 2026 Wilson Snyder
|
||||
# SPDX-License-Identifier: LGPL-3.0-only OR Artistic-2.0
|
||||
|
||||
import vltest_bootstrap
|
||||
import trace_type_dupes_common
|
||||
|
||||
test.scenarios('vlt_all')
|
||||
|
||||
trace_type_dupes_common.run(test)
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
#!/usr/bin/env python3
|
||||
# DESCRIPTION: Verilator: Verilog Test driver/expect definition
|
||||
#
|
||||
# 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-FileCopyrightText: 2026 Wilson Snyder
|
||||
# SPDX-License-Identifier: LGPL-3.0-only OR Artistic-2.0
|
||||
|
||||
import vltest_bootstrap
|
||||
import trace_type_dupes_common
|
||||
|
||||
test.scenarios('vlt_all')
|
||||
|
||||
trace_type_dupes_common.run(test)
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,15 @@
|
|||
#!/usr/bin/env python3
|
||||
# DESCRIPTION: Verilator: Verilog Test driver/expect definition
|
||||
#
|
||||
# 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-FileCopyrightText: 2026 Wilson Snyder
|
||||
# SPDX-License-Identifier: LGPL-3.0-only OR Artistic-2.0
|
||||
|
||||
import vltest_bootstrap
|
||||
import trace_type_dupes_common
|
||||
|
||||
test.scenarios('vlt_all')
|
||||
|
||||
trace_type_dupes_common.run(test)
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,15 @@
|
|||
#!/usr/bin/env python3
|
||||
# DESCRIPTION: Verilator: Verilog Test driver/expect definition
|
||||
#
|
||||
# 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-FileCopyrightText: 2026 Wilson Snyder
|
||||
# SPDX-License-Identifier: LGPL-3.0-only OR Artistic-2.0
|
||||
|
||||
import vltest_bootstrap
|
||||
import trace_type_dupes_common
|
||||
|
||||
test.scenarios('vlt_all')
|
||||
|
||||
trace_type_dupes_common.run(test)
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
#!/usr/bin/env python3
|
||||
# DESCRIPTION: Verilator: Verilog Test driver/expect definition
|
||||
#
|
||||
# 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-FileCopyrightText: 2026 Wilson Snyder
|
||||
# SPDX-License-Identifier: LGPL-3.0-only OR Artistic-2.0
|
||||
|
||||
import vltest_bootstrap
|
||||
import trace_type_dupes_common
|
||||
|
||||
test.scenarios('vlt_all')
|
||||
|
||||
trace_type_dupes_common.run(test)
|
||||
|
|
@ -34,6 +34,10 @@ def run(test, *, verilator_flags2=()):
|
|||
# Run test
|
||||
test.compile(verilator_flags2=flags)
|
||||
|
||||
if variant == "structs":
|
||||
trace_cpp = test.obj_dir + "/" + test.vm_prefix + "__Trace__0.cpp"
|
||||
test.file_grep(trace_cpp, r"^ *Vt_.*trace_chg_dtype.*v_strp2")
|
||||
|
||||
test.execute()
|
||||
|
||||
test.trace_identical(test.trace_filename, test.golden_filename)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,29 @@
|
|||
# DESCRIPTION: Verilator: Verilog Test driver/expect definition
|
||||
#
|
||||
# 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-FileCopyrightText: 2026 Wilson Snyder
|
||||
# SPDX-License-Identifier: LGPL-3.0-only OR Artistic-2.0
|
||||
|
||||
|
||||
def run(test):
|
||||
(fmt,) = test.parse_name(r"t_trace_split_struct_([a-z]+)")
|
||||
|
||||
test.top_filename = "t/t_trace_split_struct.v"
|
||||
test.golden_filename = test.py_filename.rpartition(fmt)[0] + fmt + ".out"
|
||||
|
||||
flags = ["--cc", f"--trace-{fmt}", "--trace-structs", "--no-trace-params"]
|
||||
|
||||
test.compile(verilator_flags2=flags)
|
||||
|
||||
# When struct fields are driven from different clocks, the dtype
|
||||
# optimization cannot be applied -- no trace_chg_dtype functions should exist
|
||||
trace_cpp = test.obj_dir + "/" + test.vm_prefix + "__Trace__0.cpp"
|
||||
test.file_grep_count(trace_cpp, r"^ *Vt_.*trace_chg_dtype", 0)
|
||||
|
||||
test.execute()
|
||||
|
||||
test.trace_identical(test.trace_filename, test.golden_filename)
|
||||
|
||||
test.passes()
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
# DESCRIPTION: Verilator: Verilog Test driver/expect definition
|
||||
#
|
||||
# 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-FileCopyrightText: 2026 Wilson Snyder
|
||||
# SPDX-License-Identifier: LGPL-3.0-only OR Artistic-2.0
|
||||
|
||||
|
||||
def run(test):
|
||||
(fmt,) = test.parse_name(r"t_trace_struct_alias_([a-z]+)")
|
||||
|
||||
test.top_filename = "t/t_trace_struct_alias.v"
|
||||
test.golden_filename = test.py_filename.rpartition(fmt)[0] + fmt + ".out"
|
||||
|
||||
flags = ["--cc", f"--trace-{fmt}", "--trace-structs"]
|
||||
|
||||
test.compile(verilator_flags2=flags)
|
||||
|
||||
test.execute()
|
||||
|
||||
if fmt == "vcd":
|
||||
codes = test.vcd_extract_codes(test.trace_filename)
|
||||
|
||||
test.vcd_check_not_aliased(codes, "top.t.s1.a", "top.t.s2.a")
|
||||
|
||||
test.vcd_check_aliased(codes, "top.t.s3.a", "top.t.alias_of_s3a")
|
||||
|
||||
test.vcd_check_aliased(codes, "top.t.s4.a", "top.t.s5.a")
|
||||
test.vcd_check_aliased(codes, "top.t.s4.b", "top.t.s5.b")
|
||||
|
||||
test.vcd_check_aliased(codes, "top.t.s6.a", "top.t.source_val")
|
||||
|
||||
test.trace_identical(test.trace_filename, test.golden_filename)
|
||||
|
||||
test.passes()
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
# DESCRIPTION: Verilator: Verilog Test driver/expect definition
|
||||
#
|
||||
# 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-FileCopyrightText: 2026 Wilson Snyder
|
||||
# SPDX-License-Identifier: LGPL-3.0-only OR Artistic-2.0
|
||||
|
||||
|
||||
def run(test):
|
||||
variant, fmt = test.parse_name(r"t_trace_type_dupes_([a-z]+)_([a-z]+)")
|
||||
|
||||
test.top_filename = "t/t_trace_type_dupes.v"
|
||||
test.golden_filename = test.py_filename.rpartition(fmt)[0] + fmt + ".out"
|
||||
|
||||
flags = ["--cc", f"--trace-{fmt}"]
|
||||
match variant:
|
||||
case "default":
|
||||
pass
|
||||
case "structs":
|
||||
flags.extend(["--trace-structs", "--output-split-ctrace 10"])
|
||||
case _:
|
||||
test.error(f"Unhandled test variant '{variant}'")
|
||||
|
||||
test.compile(verilator_flags2=flags)
|
||||
|
||||
test.execute()
|
||||
|
||||
test.trace_identical(test.trace_filename, test.golden_filename)
|
||||
|
||||
test.passes()
|
||||
Loading…
Reference in New Issue