Fix scope tree in traces in hierarchical mode (#7042)

This commit is contained in:
Geza Lore
2026-02-12 20:54:03 -05:00
committed by GitHub
parent b84466ec10
commit 3dd2b762e7
35 changed files with 39586 additions and 46566 deletions
+13 -4
View File
@@ -549,10 +549,14 @@ class EmitCModel final : public EmitCFunc {
"0.\");\n");
puts("}\n");
puts("vlSymsp->__Vm_baseCode = code;\n");
puts("tracep->pushPrefix(vlSymsp->name(), VerilatedTracePrefixType::SCOPE_MODULE);\n");
if (v3Global.opt.libCreate().empty()) {
puts("tracep->pushPrefix(vlSymsp->name(), VerilatedTracePrefixType::SCOPE_MODULE);\n");
}
puts(topModNameProtected + "__" + protect("trace_decl_types") + "(tracep);\n");
puts(topModNameProtected + "__" + protect("trace_init_top") + "(vlSelf, tracep);\n");
puts("tracep->popPrefix();\n");
if (v3Global.opt.libCreate().empty()) { //
puts("tracep->popPrefix();\n");
}
puts("}\n");
// Forward declaration
@@ -583,8 +587,13 @@ class EmitCModel final : public EmitCFunc {
+ " and --trace-vcd with VerilatedVcd object\");\n");
puts(/**/ "}\n");
puts(/**/ "stfp->spTrace()->addModel(this);\n");
puts(/**/ "stfp->spTrace()->addInitCb(&" + protect("trace_init")
+ ", &(vlSymsp->TOP));\n");
puts(/**/ "stfp->spTrace()->addInitCb("s //
+ "&" + protect("trace_init") //
+ ", &(vlSymsp->TOP)" //
+ ", name()" //
+ ", " + (v3Global.opt.libCreate().empty() ? "false" : "true") //
+ ", " + std::to_string(v3Global.rootp()->nTraceCodes()) //
+ ");\n");
puts(/**/ topModNameProtected + "__" + protect("trace_register")
+ "(&(vlSymsp->TOP), stfp->spTrace());\n");
puts("}\n");