From d68ffba8cd2a084e2755e0218aaaf5b0bf1a6bbc Mon Sep 17 00:00:00 2001 From: Wilson Snyder Date: Sat, 25 Jan 2020 09:16:00 -0500 Subject: [PATCH] Internals: Rename to prefixNameProtect. No functional change intended. --- src/V3EmitC.cpp | 96 ++++++++++++++++++++++++--------------------- src/V3EmitCBase.h | 7 ++-- src/V3EmitCSyms.cpp | 17 ++++---- src/V3EmitV.cpp | 14 +++---- 4 files changed, 70 insertions(+), 64 deletions(-) diff --git a/src/V3EmitC.cpp b/src/V3EmitC.cpp index aef949fe5..47e786e97 100644 --- a/src/V3EmitC.cpp +++ b/src/V3EmitC.cpp @@ -1095,9 +1095,9 @@ class EmitCImp : EmitCStmts { } V3OutCFile* newOutCFile(AstNodeModule* modp, bool slow, bool source, int filenum=0) { - string filenameNoExt = v3Global.opt.makeDir()+"/"+ modClassName(modp); - if (filenum) filenameNoExt += "__"+cvtToStr(filenum); - filenameNoExt += (slow ? "__Slow":""); + string filenameNoExt = v3Global.opt.makeDir() + "/" + prefixNameProtect(modp); + if (filenum) filenameNoExt += "__" + cvtToStr(filenum); + filenameNoExt += (slow ? "__Slow" : ""); V3OutCFile* ofp = NULL; if (v3Global.opt.lintOnly()) { // Unfortunately we have some lint checks here, so we can't just skip processing. @@ -1208,7 +1208,7 @@ class EmitCImp : EmitCStmts { ExecMTask* mtp = nodep->execMTaskp(); puts("\n"); puts("void "); - puts(modClassName(m_modp)+"::"+protect(mtp->cFuncName())); + puts(prefixNameProtect(m_modp) + "::" + protect(mtp->cFuncName())); puts("(bool even_cycle, void* symtab) {\n"); // Declare and set vlSymsp @@ -1237,14 +1237,13 @@ class EmitCImp : EmitCStmts { if (nodep->ifdef()!="") puts("#ifdef "+nodep->ifdef()+"\n"); if (nodep->isInline()) puts("VL_INLINE_OPT "); puts(nodep->rtnTypeVoid()); puts(" "); - puts(modClassName(m_modp)+"::"+nodep->nameProtect() - +"("+cFuncArgs(nodep)+") {\n"); + puts(prefixNameProtect(m_modp) + "::" + nodep->nameProtect() + "(" + cFuncArgs(nodep) + + ") {\n"); // "+" in the debug indicates a print from the model puts("VL_DEBUG_IF(VL_DBG_MSGF(\"+ "); for (int i=0; ilevel(); ++i) { puts(" "); } - puts(modClassName(m_modp)+"::"+nodep->nameProtect() - +"\\n\"); );\n"); + puts(prefixNameProtect(m_modp) + "::" + nodep->nameProtect() + "\\n\"); );\n"); // Declare and set vlTOPp if (nodep->symProlog()) puts(EmitCBaseVisitor::symTopAssign()+"\n"); @@ -1949,9 +1948,9 @@ void EmitCImp::emitCtorImp(AstNodeModule* modp) { puts("\n"); bool first = true; if (optSystemC() && modp->isTop()) { - puts("VL_SC_CTOR_IMP("+modClassName(modp)+")"); + puts("VL_SC_CTOR_IMP(" + prefixNameProtect(modp) + ")"); } else { - puts("VL_CTOR_IMP("+modClassName(modp)+")"); + puts("VL_CTOR_IMP(" + prefixNameProtect(modp) + ")"); first = false; // VL_CTOR_IMP includes the first ':' } emitVarCtors(&first); @@ -2007,8 +2006,8 @@ void EmitCImp::emitCtorImp(AstNodeModule* modp) { } void EmitCImp::emitConfigureImp(AstNodeModule* modp) { - puts("\nvoid "+modClassName(modp)+"::"+protect("__Vconfigure") - +"("+symClassName()+"* vlSymsp, bool first) {\n"); + puts("\nvoid " + prefixNameProtect(modp) + "::" + protect("__Vconfigure") + "(" + + symClassName() + "* vlSymsp, bool first) {\n"); puts( "if (0 && first) {} // Prevent unused\n"); puts( "this->__VlSymsp = vlSymsp;\n"); // First, as later stuff needs it. if (v3Global.opt.coverage() ) { @@ -2023,8 +2022,9 @@ void EmitCImp::emitCoverageImp(AstNodeModule* modp) { puts("\n// Coverage\n"); // Rather than putting out VL_COVER_INSERT calls directly, we do it via this function // This gets around gcc slowness constructing all of the template arguments. - puts("void "+modClassName(m_modp)+"::__vlCoverInsert(uint32_t* countp, bool enable," - " const char* filenamep, int lineno, int column,\n"); + puts("void " + prefixNameProtect(m_modp) + + "::__vlCoverInsert(uint32_t* countp, bool enable," + + " const char* filenamep, int lineno, int column,\n"); puts( "const char* hierp, const char* pagep, const char* commentp) {\n"); puts( "static uint32_t fake_zero_count = 0;\n"); // static doesn't need save-restore as constant puts( "if (!enable) countp = &fake_zero_count;\n"); // Used for second++ instantiation of identical bin @@ -2045,7 +2045,7 @@ void EmitCImp::emitCoverageImp(AstNodeModule* modp) { void EmitCImp::emitDestructorImp(AstNodeModule* modp) { puts("\n"); - puts(modClassName(modp)+"::~"+modClassName(modp)+"() {\n"); + puts(prefixNameProtect(modp) + "::~" + prefixNameProtect(modp) + "() {\n"); if (modp->isTop() && v3Global.opt.mtasks()) { puts("delete __Vm_threadPoolp; __Vm_threadPoolp = NULL;\n"); } @@ -2063,7 +2063,8 @@ void EmitCImp::emitSavableImp(AstNodeModule* modp) { string funcname = de ? "__Vdeserialize" : "__Vserialize"; string op = de ? ">>" : "<<"; // NOLINTNEXTLINE(performance-inefficient-string-concatenation) - puts("void "+modClassName(modp)+"::"+protect(funcname)+"("+classname+"& os) {\n"); + puts("void " + prefixNameProtect(modp) + "::" + protect(funcname) + "(" + classname + + "& os) {\n"); // Place a computed checksum to ensure proper structure save/restore formatting // OK if this hash includes some things we won't dump, since // just looking for loading the wrong model @@ -2167,7 +2168,8 @@ void EmitCImp::emitCellCtors(AstNodeModule* modp) { } for (AstNode* nodep = modp->stmtsp(); nodep; nodep = nodep->nextp()) { if (AstCell* cellp = VN_CAST(nodep, Cell)) { - puts("VL_CELL("+cellp->nameProtect()+", "+modClassName(cellp->modp())+");\n"); + puts("VL_CELL(" + cellp->nameProtect() + ", " + prefixNameProtect(cellp->modp()) + + ");\n"); } } } @@ -2238,8 +2240,9 @@ void EmitCImp::emitSettleLoop(const std::string& eval_call, bool initial) { } void EmitCImp::emitWrapEval(AstNodeModule* modp) { - puts("\nvoid "+modClassName(modp)+"::eval() {\n"); - puts("VL_DEBUG_IF(VL_DBG_MSGF(\"+++++TOP Evaluate "+modClassName(modp)+"::eval\\n\"); );\n"); + puts("\nvoid " + prefixNameProtect(modp) + "::eval() {\n"); + puts("VL_DEBUG_IF(VL_DBG_MSGF(\"+++++TOP Evaluate " + prefixNameProtect(modp) + + "::eval\\n\"); );\n"); puts(EmitCBaseVisitor::symClassVar()+" = this->__VlSymsp; // Setup global symbol table\n"); puts(EmitCBaseVisitor::symTopAssign()+"\n"); puts("#ifdef VL_DEBUG\n"); @@ -2311,8 +2314,8 @@ void EmitCImp::emitWrapEval(AstNodeModule* modp) { splitSizeInc(10); // - puts("\nvoid "+modClassName(modp)+"::"+protect("_eval_initial_loop") - +"("+EmitCBaseVisitor::symClassVar()+") {\n"); + puts("\nvoid " + prefixNameProtect(modp) + "::" + protect("_eval_initial_loop") + "(" + + EmitCBaseVisitor::symClassVar() + ") {\n"); puts("vlSymsp->__Vm_didInit = true;\n"); puts(protect("_eval_initial")+"(vlSymsp);\n"); if (v3Global.opt.trace()) { @@ -2571,9 +2574,9 @@ void EmitCImp::emitInt(AstNodeModule* modp) { vl_unordered_set didClassName; for (AstNode* nodep = modp->stmtsp(); nodep; nodep = nodep->nextp()) { if (AstCell* cellp = VN_CAST(nodep, Cell)) { - string className = modClassName(cellp->modp()); - if (didClassName.find(className)==didClassName.end()) { - puts("class "+className+";\n"); + string className = prefixNameProtect(cellp->modp()); + if (didClassName.find(className) == didClassName.end()) { + puts("class " + className + ";\n"); didClassName.insert(className); } } @@ -2586,9 +2589,9 @@ void EmitCImp::emitInt(AstNodeModule* modp) { emitTextSection(AstType::atScHdr); if (optSystemC() && modp->isTop()) { - puts("SC_MODULE("+modClassName(modp)+") {\n"); + puts("SC_MODULE(" + prefixNameProtect(modp) + ") {\n"); } else { - puts("VL_MODULE("+modClassName(modp)+") {\n"); + puts("VL_MODULE(" + prefixNameProtect(modp) + ") {\n"); } ofp()->resetPrivate(); ofp()->putsPrivate(false); // public: @@ -2603,7 +2606,7 @@ void EmitCImp::emitInt(AstNodeModule* modp) { if (modp->isTop()) puts("// Public to allow access to /*verilator_public*/ items;\n"); if (modp->isTop()) puts("// otherwise the application code can consider these internals.\n"); } - puts(modClassName(cellp->modp())+"* "+cellp->nameProtect()+";\n"); + puts(prefixNameProtect(cellp->modp()) + "* " + cellp->nameProtect() + ";\n"); } } } @@ -2671,24 +2674,26 @@ void EmitCImp::emitInt(AstNodeModule* modp) { ofp()->resetPrivate(); // We don't need a private copy constructor, as VerilatedModule has one for us. ofp()->putsPrivate(true); - puts("VL_UNCOPYABLE("+modClassName(modp)+"); ///< Copying not allowed\n"); + puts("VL_UNCOPYABLE(" + prefixNameProtect(modp) + "); ///< Copying not allowed\n"); ofp()->putsPrivate(false); // public: if (optSystemC() && modp->isTop()) { - puts("SC_CTOR("+modClassName(modp)+");\n"); - puts("virtual ~"+modClassName(modp)+"();\n"); + puts("SC_CTOR(" + prefixNameProtect(modp) + ");\n"); + puts("virtual ~" + prefixNameProtect(modp) + "();\n"); } else if (optSystemC()) { - puts("VL_CTOR("+modClassName(modp)+");\n"); - puts("~"+modClassName(modp)+"();\n"); + puts("VL_CTOR(" + prefixNameProtect(modp) + ");\n"); + puts("~" + prefixNameProtect(modp) + "();\n"); } else { if (modp->isTop()) { puts("/// Construct the model; called by application code\n"); puts("/// The special name "" may be used to make a wrapper with a\n"); puts("/// single model invisible with respect to DPI scope names.\n"); } - puts(modClassName(modp)+"(const char* name = \"TOP\");\n"); - if (modp->isTop()) puts("/// Destroy the model; called (often implicitly) by application code\n"); - puts("~"+modClassName(modp)+"();\n"); + puts(prefixNameProtect(modp) + "(const char* name = \"TOP\");\n"); + if (modp->isTop()) { + puts("/// Destroy the model; called (often implicitly) by application code\n"); + } + puts("~" + prefixNameProtect(modp) + "();\n"); } if (v3Global.opt.trace() && modp->isTop()) { puts("/// Trace signals in the model; called by application code\n"); @@ -2747,11 +2752,14 @@ void EmitCImp::emitInt(AstNodeModule* modp) { if (v3Global.opt.savable() && modp->isTop()) { puts("\n"); puts("inline VerilatedSerialize& operator<<(VerilatedSerialize& os, " - +modClassName(modp)+"& rhs) {\n" - "Verilated::quiesce(); rhs."+protect("__Vserialize")+"(os); return os; }\n"); + + prefixNameProtect(modp) + "& rhs) {\n" + + "Verilated::quiesce(); rhs." + + protect("__Vserialize") + "(os); return os; }\n"); puts("inline VerilatedDeserialize& operator>>(VerilatedDeserialize& os, " - +modClassName(modp)+"& rhs) {\n" - "Verilated::quiesce(); rhs."+protect("__Vdeserialize")+"(os); return os; }\n"); + + prefixNameProtect(modp) + + "& rhs) {\n" + + "Verilated::quiesce(); rhs." + + protect("__Vdeserialize") + "(os); return os; }\n"); } // finish up h-file @@ -2762,8 +2770,8 @@ void EmitCImp::emitInt(AstNodeModule* modp) { void EmitCImp::emitImp(AstNodeModule* modp) { puts("\n"); - puts("#include \""+modClassName(modp)+".h\"\n"); - puts("#include \""+symClassName()+".h\"\n"); + puts("#include \"" + prefixNameProtect(modp) + ".h\"\n"); + puts("#include \"" + symClassName() + ".h\"\n"); if (v3Global.dpi()) { puts("\n"); @@ -2776,7 +2784,7 @@ void EmitCImp::emitImp(AstNodeModule* modp) { if (m_slow && splitFilenum()==0) { puts("\n//--------------------\n"); puts("// STATIC VARIABLES\n\n"); - emitVarList(modp->stmtsp(), EVL_CLASS_ALL, modClassName(modp)); + emitVarList(modp->stmtsp(), EVL_CLASS_ALL, prefixNameProtect(modp)); } if (m_fast && splitFilenum()==0) { @@ -2824,9 +2832,7 @@ void EmitCImp::main(AstNodeModule* modp, bool slow, bool fast) { m_slow = slow; m_fast = fast; - if (debug()>=5) { - UINFO(0," Emitting "<TOPp;"; } - static string modClassName(AstNodeModule* modp) { // Return name of current module being processed - if (modp->isTop()) { + static string prefixNameProtect(const AstNode* nodep) { // C++ name with prefix + const AstNodeModule* modp = VN_CAST_CONST(nodep, NodeModule); + if (modp && modp->isTop()) { return v3Global.opt.prefix(); } else { - return v3Global.opt.modPrefix()+"_"+protect(modp->name()); + return v3Global.opt.modPrefix() + "_" + protect(nodep->name()); } } static string topClassName() { // Return name of top wrapper module diff --git a/src/V3EmitCSyms.cpp b/src/V3EmitCSyms.cpp index 912cbfbb4..5699ac9d5 100644 --- a/src/V3EmitCSyms.cpp +++ b/src/V3EmitCSyms.cpp @@ -391,7 +391,7 @@ void EmitCSyms::emitSymHdr() { puts("\n// INCLUDE MODULE CLASSES\n"); for (AstNodeModule* nodep = v3Global.rootp()->modulesp(); nodep; nodep=VN_CAST(nodep->nextp(), NodeModule)) { - puts("#include \""+modClassName(nodep)+".h\"\n"); + puts("#include \"" + prefixNameProtect(nodep) + ".h\"\n"); } if (v3Global.dpi()) { @@ -425,12 +425,11 @@ void EmitCSyms::emitSymHdr() { AstScope* scopep = it->first; AstNodeModule* modp = it->second; if (modp->isTop()) { - ofp()->printf("%-30s ", (modClassName(modp)+"*").c_str()); - puts(protectIf(scopep->nameDotless()+"p", scopep->protect())+";\n"); - } - else { - ofp()->printf("%-30s ", (modClassName(modp)+"").c_str()); - puts(protectIf(scopep->nameDotless(), scopep->protect())+";\n"); + ofp()->printf("%-30s ", (prefixNameProtect(modp) + "*").c_str()); + puts(protectIf(scopep->nameDotless() + "p", scopep->protect()) + ";\n"); + } else { + ofp()->printf("%-30s ", (prefixNameProtect(modp) + "").c_str()); + puts(protectIf(scopep->nameDotless(), scopep->protect()) + ";\n"); } } @@ -528,7 +527,7 @@ void EmitCSyms::emitSymImpPreamble() { puts("#include \""+symClassName()+".h\"\n"); for (AstNodeModule* nodep = v3Global.rootp()->modulesp(); nodep; nodep = VN_CAST(nodep->nextp(), NodeModule)) { - puts("#include \"" + modClassName(nodep) + ".h\"\n"); + puts("#include \"" + prefixNameProtect(nodep) + ".h\"\n"); } } @@ -699,7 +698,7 @@ void EmitCSyms::emitSymImp() { puts(protect("__Vscope_"+scopep->scopeSymName())+".exportInsert(__Vfinal, "); putsQuoted(funcp->cname()); // Not protected - user asked for import/export puts(", (void*)(&"); - puts(modClassName(modp)); + puts(prefixNameProtect(modp)); puts("::"); puts(funcp->nameProtect()); puts("));\n"); diff --git a/src/V3EmitV.cpp b/src/V3EmitV.cpp index 47a3ac5e8..a07f6d477 100644 --- a/src/V3EmitV.cpp +++ b/src/V3EmitV.cpp @@ -61,9 +61,9 @@ class EmitVBaseVisitor : public EmitCBaseVisitor { iterateChildren(nodep); } virtual void visit(AstNodeModule* nodep) VL_OVERRIDE { - putfs(nodep, nodep->verilogKwd()+" "+modClassName(nodep)+";\n"); + putfs(nodep, nodep->verilogKwd() + " " + prefixNameProtect(nodep) + ";\n"); iterateChildren(nodep); - putqs(nodep, "end"+nodep->verilogKwd()+"\n"); + putqs(nodep, "end" + nodep->verilogKwd() + "\n"); } virtual void visit(AstNodeFTask* nodep) VL_OVERRIDE { putfs(nodep, nodep->isFunction() ? "function":"task"); @@ -757,12 +757,12 @@ void V3EmitV::emitv() { EmitVFileVisitor visitor (v3Global.rootp(), &of); } else { // Process each module in turn - for (AstNodeModule* modp = v3Global.rootp()->modulesp(); - modp; modp=VN_CAST(modp->nextp(), NodeModule)) { - V3OutVFile of (v3Global.opt.makeDir() - +"/"+EmitCBaseVisitor::modClassName(modp)+"__Vout.v"); + for (AstNodeModule* modp = v3Global.rootp()->modulesp(); modp; + modp = VN_CAST(modp->nextp(), NodeModule)) { + V3OutVFile of(v3Global.opt.makeDir() + "/" + EmitCBaseVisitor::prefixNameProtect(modp) + + "__Vout.v"); of.putsHeader(); - EmitVFileVisitor visitor (modp, &of); + EmitVFileVisitor visitor(modp, &of); } } }