Internals: Put cell assigns near cell. No functional change intended except statement order.
This commit is contained in:
parent
3cd96cf558
commit
e49539fb4c
|
|
@ -49,8 +49,7 @@ private:
|
||||||
AstUser1InUse m_inuser1;
|
AstUser1InUse m_inuser1;
|
||||||
|
|
||||||
// STATE
|
// STATE
|
||||||
AstNodeModule* m_modp; // Current module
|
AstCell* m_cellp; // Current cell
|
||||||
AstCell* m_cellp; // Current cell
|
|
||||||
|
|
||||||
static int debug() {
|
static int debug() {
|
||||||
static int level = -1;
|
static int level = -1;
|
||||||
|
|
@ -60,13 +59,6 @@ private:
|
||||||
//int m_debug; int debug() { return m_debug; }
|
//int m_debug; int debug() { return m_debug; }
|
||||||
|
|
||||||
// VISITORS
|
// VISITORS
|
||||||
virtual void visit(AstNodeModule* nodep) {
|
|
||||||
UINFO(4," MOD "<<nodep<<endl);
|
|
||||||
//if (nodep->name() == "t_chg") m_debug = 9; else m_debug=0;
|
|
||||||
m_modp = nodep;
|
|
||||||
nodep->iterateChildren(*this);
|
|
||||||
m_modp = NULL;
|
|
||||||
}
|
|
||||||
virtual void visit(AstCell* nodep) {
|
virtual void visit(AstCell* nodep) {
|
||||||
UINFO(4," CELL "<<nodep<<endl);
|
UINFO(4," CELL "<<nodep<<endl);
|
||||||
m_cellp = nodep;
|
m_cellp = nodep;
|
||||||
|
|
@ -96,7 +88,7 @@ private:
|
||||||
} else if (nodep->modVarp()->isOutput()) {
|
} else if (nodep->modVarp()->isOutput()) {
|
||||||
AstNode* rhsp = new AstVarXRef (exprp->fileline(), nodep->modVarp(), m_cellp->name(), false);
|
AstNode* rhsp = new AstVarXRef (exprp->fileline(), nodep->modVarp(), m_cellp->name(), false);
|
||||||
AstAssignW* assp = new AstAssignW (exprp->fileline(), exprp, rhsp);
|
AstAssignW* assp = new AstAssignW (exprp->fileline(), exprp, rhsp);
|
||||||
m_modp->addStmtp(assp);
|
m_cellp->addNextHere(assp);
|
||||||
} else if (nodep->modVarp()->isInput()) {
|
} else if (nodep->modVarp()->isInput()) {
|
||||||
// Don't bother moving constants now,
|
// Don't bother moving constants now,
|
||||||
// we'll be pushing the const down to the cell soon enough.
|
// we'll be pushing the const down to the cell soon enough.
|
||||||
|
|
@ -104,7 +96,7 @@ private:
|
||||||
(exprp->fileline(),
|
(exprp->fileline(),
|
||||||
new AstVarXRef(exprp->fileline(), nodep->modVarp(), m_cellp->name(), true),
|
new AstVarXRef(exprp->fileline(), nodep->modVarp(), m_cellp->name(), true),
|
||||||
exprp);
|
exprp);
|
||||||
m_modp->addStmtp(assp);
|
m_cellp->addNextHere(assp);
|
||||||
if (debug()>=9) assp->dumpTree(cout," _new: ");
|
if (debug()>=9) assp->dumpTree(cout," _new: ");
|
||||||
} else if (nodep->modVarp()->isIfaceRef()
|
} else if (nodep->modVarp()->isIfaceRef()
|
||||||
|| (nodep->modVarp()->subDTypep()->castUnpackArrayDType()
|
|| (nodep->modVarp()->subDTypep()->castUnpackArrayDType()
|
||||||
|
|
@ -115,7 +107,7 @@ private:
|
||||||
AstVarXRef* xrefp = exprp->castVarXRef();
|
AstVarXRef* xrefp = exprp->castVarXRef();
|
||||||
if (!refp && !xrefp) exprp->v3fatalSrc("Interfaces: Pin is not connected to a VarRef or VarXRef");
|
if (!refp && !xrefp) exprp->v3fatalSrc("Interfaces: Pin is not connected to a VarRef or VarXRef");
|
||||||
AstAssignVarScope* assp = new AstAssignVarScope(exprp->fileline(), lhsp, exprp);
|
AstAssignVarScope* assp = new AstAssignVarScope(exprp->fileline(), lhsp, exprp);
|
||||||
m_modp->addStmtp(assp);
|
m_cellp->addNextHere(assp);
|
||||||
} else {
|
} else {
|
||||||
nodep->v3error("Assigned pin is neither input nor output");
|
nodep->v3error("Assigned pin is neither input nor output");
|
||||||
}
|
}
|
||||||
|
|
@ -145,7 +137,6 @@ private:
|
||||||
public:
|
public:
|
||||||
// CONSTUCTORS
|
// CONSTUCTORS
|
||||||
explicit InstVisitor(AstNetlist* nodep) {
|
explicit InstVisitor(AstNetlist* nodep) {
|
||||||
m_modp=NULL;
|
|
||||||
m_cellp=NULL;
|
m_cellp=NULL;
|
||||||
//
|
//
|
||||||
nodep->accept(*this);
|
nodep->accept(*this);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue