Fix including verilated_sc in Syms to fix compile order problem exposed in #2237.
This commit is contained in:
parent
4c1ae4701a
commit
343db78c03
|
|
@ -3110,7 +3110,11 @@ class EmitCTrace : EmitCStmts {
|
||||||
cfilep->support(true);
|
cfilep->support(true);
|
||||||
|
|
||||||
if (m_ofp) v3fatalSrc("Previous file not closed");
|
if (m_ofp) v3fatalSrc("Previous file not closed");
|
||||||
m_ofp = new V3OutCFile(filename);
|
if (optSystemC()) {
|
||||||
|
m_ofp = new V3OutScFile(filename);
|
||||||
|
} else {
|
||||||
|
m_ofp = new V3OutCFile(filename);
|
||||||
|
}
|
||||||
m_ofp->putsHeader();
|
m_ofp->putsHeader();
|
||||||
m_ofp->puts("// DESCR" "IPTION: Verilator output: Tracing implementation internals\n");
|
m_ofp->puts("// DESCR" "IPTION: Verilator output: Tracing implementation internals\n");
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -360,8 +360,12 @@ void EmitCSyms::emitSymHdr() {
|
||||||
UINFO(6,__FUNCTION__<<": "<<endl);
|
UINFO(6,__FUNCTION__<<": "<<endl);
|
||||||
string filename = v3Global.opt.makeDir()+"/"+symClassName()+".h";
|
string filename = v3Global.opt.makeDir()+"/"+symClassName()+".h";
|
||||||
newCFile(filename, true/*slow*/, false/*source*/);
|
newCFile(filename, true/*slow*/, false/*source*/);
|
||||||
V3OutCFile hf (filename);
|
|
||||||
m_ofp = &hf;
|
if (v3Global.opt.systemC()) {
|
||||||
|
m_ofp = new V3OutScFile(filename);
|
||||||
|
} else {
|
||||||
|
m_ofp = new V3OutCFile(filename);
|
||||||
|
}
|
||||||
|
|
||||||
ofp()->putsHeader();
|
ofp()->putsHeader();
|
||||||
puts("// DESCR" "IPTION: Verilator output: Symbol table internal header\n");
|
puts("// DESCR" "IPTION: Verilator output: Symbol table internal header\n");
|
||||||
|
|
@ -482,6 +486,7 @@ void EmitCSyms::emitSymHdr() {
|
||||||
puts("} VL_ATTR_ALIGNED(VL_CACHE_LINE_BYTES);\n");
|
puts("} VL_ATTR_ALIGNED(VL_CACHE_LINE_BYTES);\n");
|
||||||
|
|
||||||
ofp()->putsEndGuard();
|
ofp()->putsEndGuard();
|
||||||
|
VL_DO_CLEAR(delete m_ofp, m_ofp = NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
void EmitCSyms::closeSplit() {
|
void EmitCSyms::closeSplit() {
|
||||||
|
|
@ -502,7 +507,11 @@ void EmitCSyms::checkSplit(bool usesVfinal) {
|
||||||
m_usesVfinal[m_funcNum] = usesVfinal;
|
m_usesVfinal[m_funcNum] = usesVfinal;
|
||||||
closeSplit();
|
closeSplit();
|
||||||
|
|
||||||
m_ofp = new V3OutCFile(filename);
|
if (v3Global.opt.systemC()) {
|
||||||
|
m_ofp = new V3OutScFile(filename);
|
||||||
|
} else {
|
||||||
|
m_ofp = new V3OutCFile(filename);
|
||||||
|
}
|
||||||
|
|
||||||
m_ofpBase->puts(symClassName()+"_"+cvtToStr(m_funcNum)+"(");
|
m_ofpBase->puts(symClassName()+"_"+cvtToStr(m_funcNum)+"(");
|
||||||
if (usesVfinal) {
|
if (usesVfinal) {
|
||||||
|
|
@ -541,8 +550,13 @@ void EmitCSyms::emitSymImp() {
|
||||||
string filename = v3Global.opt.makeDir()+"/"+symClassName()+".cpp";
|
string filename = v3Global.opt.makeDir()+"/"+symClassName()+".cpp";
|
||||||
AstCFile* cfilep = newCFile(filename, true/*slow*/, true/*source*/);
|
AstCFile* cfilep = newCFile(filename, true/*slow*/, true/*source*/);
|
||||||
cfilep->support(true);
|
cfilep->support(true);
|
||||||
V3OutCFile cf (filename);
|
|
||||||
m_ofp = &cf;
|
if (v3Global.opt.systemC()) {
|
||||||
|
m_ofp = new V3OutScFile(filename);
|
||||||
|
} else {
|
||||||
|
m_ofp = new V3OutCFile(filename);
|
||||||
|
}
|
||||||
|
|
||||||
m_ofpBase = m_ofp;
|
m_ofpBase = m_ofp;
|
||||||
emitSymImpPreamble();
|
emitSymImpPreamble();
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue