Cleanup misc spacing and unneeded stuff in emitted headers.

This commit is contained in:
Wilson Snyder 2017-09-22 22:27:03 -04:00
parent b64e1b4a49
commit 5d3fef21b0
3 changed files with 70 additions and 48 deletions

View File

@ -1741,11 +1741,13 @@ void EmitCImp::emitWrapEval(AstNodeModule* modp) {
puts("QData __Vchange = 1;\n"); puts("QData __Vchange = 1;\n");
puts("while (VL_LIKELY(__Vchange)) {\n"); puts("while (VL_LIKELY(__Vchange)) {\n");
puts( "VL_DEBUG_IF(VL_PRINTF(\" Clock loop\\n\"););\n"); puts( "VL_DEBUG_IF(VL_PRINTF(\" Clock loop\\n\"););\n");
if (v3Global.opt.trace()) {
puts("vlSymsp->__Vm_activity = true;\n"); puts("vlSymsp->__Vm_activity = true;\n");
}
puts( "_eval(vlSymsp);\n"); puts( "_eval(vlSymsp);\n");
puts( "__Vchange = _change_request(vlSymsp);\n"); puts( "__Vchange = _change_request(vlSymsp);\n");
puts( "if (++__VclockLoop > "+cvtToStr(v3Global.opt.convergeLimit()) puts( "if (VL_UNLIKELY(++__VclockLoop > "+cvtToStr(v3Global.opt.convergeLimit())
+") vl_fatal(__FILE__,__LINE__,__FILE__,\"Verilated model didn't converge\");\n"); +")) vl_fatal(__FILE__,__LINE__,__FILE__,\"Verilated model didn't converge\");\n");
puts("}\n"); puts("}\n");
puts("}\n"); puts("}\n");
splitSizeInc(10); splitSizeInc(10);
@ -1754,15 +1756,17 @@ void EmitCImp::emitWrapEval(AstNodeModule* modp) {
puts("\nvoid "+modClassName(modp)+"::_eval_initial_loop("+EmitCBaseVisitor::symClassVar()+") {\n"); puts("\nvoid "+modClassName(modp)+"::_eval_initial_loop("+EmitCBaseVisitor::symClassVar()+") {\n");
puts("vlSymsp->__Vm_didInit = true;\n"); puts("vlSymsp->__Vm_didInit = true;\n");
puts("_eval_initial(vlSymsp);\n"); puts("_eval_initial(vlSymsp);\n");
if (v3Global.opt.trace()) {
puts("vlSymsp->__Vm_activity = true;\n"); puts("vlSymsp->__Vm_activity = true;\n");
}
puts( "int __VclockLoop = 0;\n"); puts( "int __VclockLoop = 0;\n");
puts( "QData __Vchange = 1;\n"); puts( "QData __Vchange = 1;\n");
puts( "while (VL_LIKELY(__Vchange)) {\n"); puts( "while (VL_LIKELY(__Vchange)) {\n");
puts( "_eval_settle(vlSymsp);\n"); puts( "_eval_settle(vlSymsp);\n");
puts( "_eval(vlSymsp);\n"); puts( "_eval(vlSymsp);\n");
puts( "__Vchange = _change_request(vlSymsp);\n"); puts( "__Vchange = _change_request(vlSymsp);\n");
puts( "if (++__VclockLoop > "+cvtToStr(v3Global.opt.convergeLimit()) puts( "if (VL_UNLIKELY(++__VclockLoop > "+cvtToStr(v3Global.opt.convergeLimit())
+") vl_fatal(__FILE__,__LINE__,__FILE__,\"Verilated model didn't DC converge\");\n"); +")) vl_fatal(__FILE__,__LINE__,__FILE__,\"Verilated model didn't DC converge\");\n");
puts( "}\n"); puts( "}\n");
puts("}\n"); puts("}\n");
splitSizeInc(10); splitSizeInc(10);
@ -1839,7 +1843,7 @@ void EmitCImp::emitIntFuncDecls(AstNodeModule* modp) {
if (!funcp->dpiImport()) { // DPI is prototyped in __Dpi.h if (!funcp->dpiImport()) { // DPI is prototyped in __Dpi.h
ofp()->putsPrivate(funcp->declPrivate()); ofp()->putsPrivate(funcp->declPrivate());
if (funcp->isStatic()) puts("static "); if (funcp->isStatic()) puts("static ");
puts(funcp->rtnTypeVoid()); puts("\t"); puts(funcp->rtnTypeVoid()); puts(" ");
puts(funcp->name()); puts("("+cFuncArgs(funcp)+");\n"); puts(funcp->name()); puts("("+cFuncArgs(funcp)+");\n");
} }
} }
@ -1871,8 +1875,8 @@ void EmitCImp::emitInt(AstNodeModule* modp) {
// do this before including our main .h file so that any references to // do this before including our main .h file so that any references to
// types defined in svdpi.h are available // types defined in svdpi.h are available
puts("#include \""+ topClassName() +"__Dpi.h\"\n"); puts("#include \""+ topClassName() +"__Dpi.h\"\n");
puts("\n");
} }
puts("\n");
// Declare foreign instances up front to make C++ happy // Declare foreign instances up front to make C++ happy
puts("class "+symClassName()+";\n"); puts("class "+symClassName()+";\n");
@ -1896,15 +1900,19 @@ void EmitCImp::emitInt(AstNodeModule* modp) {
ofp()->resetPrivate(); ofp()->resetPrivate();
ofp()->putsPrivate(false); // public: ofp()->putsPrivate(false); // public:
// Instantiated modules { // Instantiated cells
bool did = false;
for (AstNode* nodep=modp->stmtsp(); nodep; nodep = nodep->nextp()) {
if (AstCell* cellp=nodep->castCell()) {
if (!did++) {
putsDecoration("// CELLS\n"); putsDecoration("// CELLS\n");
if (modp->isTop()) puts("// Public to allow access to /*verilator_public*/ items;\n"); 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"); if (modp->isTop()) puts("// otherwise the application code can consider these internals.\n");
for (AstNode* nodep=modp->stmtsp(); nodep; nodep = nodep->nextp()) { }
if (AstCell* cellp=nodep->castCell()) {
ofp()->putsCellDecl(modClassName(cellp->modp()), cellp->name()); ofp()->putsCellDecl(modClassName(cellp->modp()), cellp->name());
} }
} }
}
emitTypedefs(modp->stmtsp()); emitTypedefs(modp->stmtsp());
@ -1924,11 +1932,11 @@ void EmitCImp::emitInt(AstNodeModule* modp) {
puts("\n// INTERNAL VARIABLES\n"); puts("\n// INTERNAL VARIABLES\n");
if (modp->isTop()) puts("// Internals; generally not touched by application code\n"); if (modp->isTop()) puts("// Internals; generally not touched by application code\n");
ofp()->putsPrivate(!modp->isTop()); // private: unless top ofp()->putsPrivate(!modp->isTop()); // private: unless top
puts(symClassName()+"*\t__VlSymsp;\t\t// Symbol table\n"); puts(symClassName()+"* __VlSymsp; // Symbol table\n");
ofp()->putsPrivate(false); // public: ofp()->putsPrivate(false); // public:
if (modp->isTop()) { if (modp->isTop()) {
if (v3Global.opt.inhibitSim()) { if (v3Global.opt.inhibitSim()) {
puts("bool\t__Vm_inhibitSim;\t///< Set true to disable evaluation of module\n"); puts("bool __Vm_inhibitSim; ///< Set true to disable evaluation of module\n");
} }
} }
emitCoverageDecl(modp); // may flip public/private emitCoverageDecl(modp); // may flip public/private
@ -1963,8 +1971,8 @@ void EmitCImp::emitInt(AstNodeModule* modp) {
ofp()->resetPrivate(); ofp()->resetPrivate();
// We don't need a private copy constructor, as VerilatedModule has one for us. // We don't need a private copy constructor, as VerilatedModule has one for us.
ofp()->putsPrivate(true); ofp()->putsPrivate(true);
puts(modClassName(modp)+"& operator= (const "+modClassName(modp)+"&);\t///< Copying not allowed\n"); puts(modClassName(modp)+"& operator= (const "+modClassName(modp)+"&); ///< Copying not allowed\n");
puts(modClassName(modp)+"(const "+modClassName(modp)+"&);\t///< Copying not allowed\n"); puts(modClassName(modp)+"(const "+modClassName(modp)+"&); ///< Copying not allowed\n");
ofp()->putsPrivate(false); // public: ofp()->putsPrivate(false); // public:
if (optSystemC() && modp->isTop()) { if (optSystemC() && modp->isTop()) {
@ -1992,7 +2000,6 @@ void EmitCImp::emitInt(AstNodeModule* modp) {
} }
} }
puts("\n// USER METHODS\n");
emitTextSection(AstType::atScInt); emitTextSection(AstType::atScInt);
puts("\n// API METHODS\n"); puts("\n// API METHODS\n");
@ -2004,7 +2011,7 @@ void EmitCImp::emitInt(AstNodeModule* modp) {
if (!optSystemC()) puts("/// Simulation complete, run final blocks. Application must call on completion.\n"); if (!optSystemC()) puts("/// Simulation complete, run final blocks. Application must call on completion.\n");
puts("void final();\n"); puts("void final();\n");
if (v3Global.opt.inhibitSim()) { if (v3Global.opt.inhibitSim()) {
puts("void inhibitSim(bool flag) { __Vm_inhibitSim=flag; }\t///< Set true to disable evaluation of module\n"); puts("void inhibitSim(bool flag) { __Vm_inhibitSim=flag; } ///< Set true to disable evaluation of module\n");
} }
} }
@ -2043,7 +2050,7 @@ void EmitCImp::emitInt(AstNodeModule* modp) {
} }
// finish up h-file // finish up h-file
puts("#endif /*guard*/\n"); puts("#endif // guard\n");
} }
//---------------------------------------------------------------------- //----------------------------------------------------------------------
@ -2059,6 +2066,7 @@ void EmitCImp::emitImp(AstNodeModule* modp) {
puts("\n"); puts("\n");
puts("#include \"verilated_dpi.h\"\n"); puts("#include \"verilated_dpi.h\"\n");
} }
puts("\n");
emitTextSection(AstType::atScImpHdr); emitTextSection(AstType::atScImpHdr);

View File

@ -82,7 +82,7 @@ void EmitCInlines::emitInt() {
// Placeholder - v3Global.needHInlines(true) currently not used // Placeholder - v3Global.needHInlines(true) currently not used
puts("//======================\n\n"); puts("//======================\n\n");
puts("#endif /*guard*/\n"); puts("#endif // guard\n");
} }
//###################################################################### //######################################################################

View File

@ -303,8 +303,10 @@ void EmitCSyms::emitSymHdr() {
puts("\n// LOCAL STATE\n"); puts("\n// LOCAL STATE\n");
puts("const char* __Vm_namep;\n"); // Must be before subcells, as constructor order needed before _vlCoverInsert. puts("const char* __Vm_namep;\n"); // Must be before subcells, as constructor order needed before _vlCoverInsert.
puts("bool\t__Vm_activity;\t\t///< Used by trace routines to determine change occurred\n"); if (v3Global.opt.trace()) {
puts("bool\t__Vm_didInit;\n"); puts("bool __Vm_activity; ///< Used by trace routines to determine change occurred\n");
}
puts("bool __Vm_didInit;\n");
puts("\n// SUBCELL STATE\n"); puts("\n// SUBCELL STATE\n");
for (vector<ScopeModPair>::iterator it = m_scopes.begin(); it != m_scopes.end(); ++it) { for (vector<ScopeModPair>::iterator it = m_scopes.begin(); it != m_scopes.end(); ++it) {
@ -319,15 +321,18 @@ void EmitCSyms::emitSymHdr() {
} }
} }
puts("\n// COVERAGE\n");
if (m_coverBins) { if (m_coverBins) {
puts("uint32_t\t__Vcoverage["); puts(cvtToStr(m_coverBins)); puts("];\n"); puts("\n// COVERAGE\n");
puts("uint32_t __Vcoverage["); puts(cvtToStr(m_coverBins)); puts("];\n");
} }
puts("\n// SCOPE NAMES\n"); { // Scope names
bool did = false;
for (ScopeNames::iterator it = m_scopeNames.begin(); it != m_scopeNames.end(); ++it) { for (ScopeNames::iterator it = m_scopeNames.begin(); it != m_scopeNames.end(); ++it) {
if (!did++) puts("\n// SCOPE NAMES\n");
puts("VerilatedScope __Vscope_"+it->second.m_symName+";\n"); puts("VerilatedScope __Vscope_"+it->second.m_symName+";\n");
} }
}
puts("\n// CREATORS\n"); puts("\n// CREATORS\n");
puts(symClassName()+"("+topClassName()+"* topp, const char* namep);\n"); puts(symClassName()+"("+topClassName()+"* topp, const char* namep);\n");
@ -335,7 +340,9 @@ void EmitCSyms::emitSymHdr() {
puts("\n// METHODS\n"); puts("\n// METHODS\n");
puts("inline const char* name() { return __Vm_namep; }\n"); puts("inline const char* name() { return __Vm_namep; }\n");
if (v3Global.opt.trace()) {
puts("inline bool getClearActivity() { bool r=__Vm_activity; __Vm_activity=false; return r; }\n"); puts("inline bool getClearActivity() { bool r=__Vm_activity; __Vm_activity=false; return r; }\n");
}
if (v3Global.opt.savable() ) { if (v3Global.opt.savable() ) {
puts("void __Vserialize(VerilatedSerialize& os);\n"); puts("void __Vserialize(VerilatedSerialize& os);\n");
puts("void __Vdeserialize(VerilatedDeserialize& os);\n"); puts("void __Vdeserialize(VerilatedDeserialize& os);\n");
@ -343,7 +350,7 @@ void EmitCSyms::emitSymHdr() {
puts("\n"); puts("\n");
puts("} VL_ATTR_ALIGNED(64);\n"); puts("} VL_ATTR_ALIGNED(64);\n");
puts("\n"); puts("\n");
puts("#endif /*guard*/\n"); puts("#endif // guard\n");
} }
void EmitCSyms::emitSymImp() { void EmitCSyms::emitSymImp() {
@ -369,7 +376,9 @@ void EmitCSyms::emitSymImp() {
puts(symClassName()+"::"+symClassName()+"("+topClassName()+"* topp, const char* namep)\n"); puts(symClassName()+"::"+symClassName()+"("+topClassName()+"* topp, const char* namep)\n");
puts("\t// Setup locals\n"); puts("\t// Setup locals\n");
puts("\t: __Vm_namep(namep)\n"); // No leak, as we get destroyed when the top is destroyed puts("\t: __Vm_namep(namep)\n"); // No leak, as we get destroyed when the top is destroyed
if (v3Global.opt.trace()) {
puts("\t, __Vm_activity(false)\n"); puts("\t, __Vm_activity(false)\n");
}
puts("\t, __Vm_didInit(false)\n"); puts("\t, __Vm_didInit(false)\n");
puts("\t// Setup submodule names\n"); puts("\t// Setup submodule names\n");
char comma=','; char comma=',';
@ -420,12 +429,15 @@ void EmitCSyms::emitSymImp() {
} }
} }
puts("// Setup scope names\n"); { // Setup scope names
bool did = false;
for (ScopeNames::iterator it = m_scopeNames.begin(); it != m_scopeNames.end(); ++it) { for (ScopeNames::iterator it = m_scopeNames.begin(); it != m_scopeNames.end(); ++it) {
if (!did++) puts("// Setup scope names\n");
puts("__Vscope_"+it->second.m_symName+".configure(this,name(),"); puts("__Vscope_"+it->second.m_symName+".configure(this,name(),");
putsQuoted(it->second.m_prettyName); putsQuoted(it->second.m_prettyName);
puts(");\n"); puts(");\n");
} }
}
if (v3Global.dpi()) { if (v3Global.dpi()) {
puts("// Setup export functions\n"); puts("// Setup export functions\n");
@ -512,7 +524,9 @@ void EmitCSyms::emitSymImp() {
puts("void "+symClassName()+"::"+funcname+"("+classname+"& os) {\n"); puts("void "+symClassName()+"::"+funcname+"("+classname+"& os) {\n");
puts( "// LOCAL STATE\n"); puts( "// LOCAL STATE\n");
// __Vm_namep presumably already correct // __Vm_namep presumably already correct
if (v3Global.opt.trace()) {
puts( "os"+op+"__Vm_activity;\n"); puts( "os"+op+"__Vm_activity;\n");
}
puts( "os"+op+"__Vm_didInit;\n"); puts( "os"+op+"__Vm_didInit;\n");
puts( "// SUBCELL STATE\n"); puts( "// SUBCELL STATE\n");
for (vector<ScopeModPair>::iterator it = m_scopes.begin(); it != m_scopes.end(); ++it) { for (vector<ScopeModPair>::iterator it = m_scopes.begin(); it != m_scopes.end(); ++it) {