mirror of
https://github.com/verilator/verilator.git
synced 2026-10-06 01:54:01 +02:00
Internals: Rename AstSenTree pointers to sentreep. No functional change intended except JSON.
This commit is contained in:
+27
-27
@@ -240,7 +240,7 @@ public:
|
||||
// Make a new AstActive sensitive to the given sentree and return it
|
||||
AstActive* makeActive(FileLine* const fl, AstSenTree* const senTreep) {
|
||||
AstActive* const activep = new AstActive{fl, "", senTreep};
|
||||
activep->sensesStorep(activep->sensesp());
|
||||
activep->senTreeStorep(activep->sentreep());
|
||||
addActive(activep);
|
||||
return activep;
|
||||
}
|
||||
@@ -261,17 +261,17 @@ public:
|
||||
}
|
||||
|
||||
// Return an AstActive that is sensitive to a SenTree equivalent to the given sentreep.
|
||||
AstActive* getActive(FileLine* fl, AstSenTree* sensesp) {
|
||||
UASSERT(sensesp, "Must be non-null");
|
||||
AstActive* getActive(FileLine* fl, AstSenTree* sentreep) {
|
||||
UASSERT(sentreep, "Must be non-null");
|
||||
|
||||
auto it = m_activeMap.find(*sensesp);
|
||||
auto it = m_activeMap.find(*sentreep);
|
||||
// If found matching AstActive, return it
|
||||
if (it != m_activeMap.end()) return it->second;
|
||||
|
||||
// No such AstActive yet, creat it, and add to map.
|
||||
AstSenTree* const newsenp = sensesp->cloneTree(false);
|
||||
AstSenTree* const newsenp = sentreep->cloneTree(false);
|
||||
AstActive* const activep = new AstActive{fl, "sequent", newsenp};
|
||||
activep->sensesStorep(activep->sensesp());
|
||||
activep->senTreeStorep(activep->sentreep());
|
||||
addActive(activep);
|
||||
m_activeMap.emplace(*newsenp, activep);
|
||||
return activep;
|
||||
@@ -441,11 +441,11 @@ class ActiveVisitor final : public VNVisitor {
|
||||
wantactivep->addStmtsp(nodep);
|
||||
}
|
||||
|
||||
void visitAlways(AstNode* nodep, AstSenTree* oldsensesp, VAlwaysKwd kwd) {
|
||||
void visitAlways(AstNode* nodep, AstSenTree* oldsentreep, VAlwaysKwd kwd) {
|
||||
// Move always to appropriate ACTIVE based on its sense list
|
||||
if (oldsensesp && oldsensesp->sensesp() && oldsensesp->sensesp()->isNever()) {
|
||||
if (oldsentreep && oldsentreep->sensesp() && oldsentreep->sensesp()->isNever()) {
|
||||
// Never executing. Kill it.
|
||||
UASSERT_OBJ(!oldsensesp->sensesp()->nextp(), nodep,
|
||||
UASSERT_OBJ(!oldsentreep->sensesp()->nextp(), nodep,
|
||||
"Never senitem should be alone, else the never should be eliminated.");
|
||||
VL_DO_DANGLING(nodep->unlinkFrBack()->deleteTree(), nodep);
|
||||
return;
|
||||
@@ -457,9 +457,9 @@ class ActiveVisitor final : public VNVisitor {
|
||||
// Walk sensitivity list
|
||||
m_clockedProcess = false;
|
||||
m_allChanged = true;
|
||||
if (oldsensesp) {
|
||||
oldsensesp->unlinkFrBack();
|
||||
iterateChildrenConst(oldsensesp);
|
||||
if (oldsentreep) {
|
||||
oldsentreep->unlinkFrBack();
|
||||
iterateChildrenConst(oldsentreep);
|
||||
}
|
||||
|
||||
// If all SenItems are ET_CHANGE, then walk the body to determine if this process
|
||||
@@ -476,9 +476,9 @@ class ActiveVisitor final : public VNVisitor {
|
||||
|
||||
AstActive* const wantactivep
|
||||
= !m_clockedProcess ? m_namer.getSpecialActive<AstSenItem::Combo>(nodep->fileline())
|
||||
: oldsensesp ? m_namer.getActive(nodep->fileline(), oldsensesp)
|
||||
// Clocked, no sensitivity lists, it's a suspendable, put it in initial
|
||||
: m_namer.getSpecialActive<AstSenItem::Initial>(nodep->fileline());
|
||||
: oldsentreep ? m_namer.getActive(nodep->fileline(), oldsentreep)
|
||||
// Clocked, no sensitivity lists, it's a suspendable, put it in initial
|
||||
: m_namer.getSpecialActive<AstSenItem::Initial>(nodep->fileline());
|
||||
|
||||
// Move node to new active
|
||||
nodep->unlinkFrBack();
|
||||
@@ -487,12 +487,12 @@ class ActiveVisitor final : public VNVisitor {
|
||||
// Warn and convert any delayed assignments
|
||||
{
|
||||
ActiveDlyVisitor{nodep, !m_clockedProcess ? ActiveDlyVisitor::CT_COMB
|
||||
: oldsensesp ? ActiveDlyVisitor::CT_SEQ
|
||||
: oldsentreep ? ActiveDlyVisitor::CT_SEQ
|
||||
: ActiveDlyVisitor::CT_SUSPENDABLE};
|
||||
}
|
||||
|
||||
// Delete sensitivity list
|
||||
if (oldsensesp) VL_DO_DANGLING(oldsensesp->deleteTree(), oldsensesp);
|
||||
if (oldsentreep) VL_DO_DANGLING(oldsentreep->deleteTree(), oldsentreep);
|
||||
|
||||
// check combinational processes for latches
|
||||
if (!m_clockedProcess || kwd == VAlwaysKwd::ALWAYS_LATCH) {
|
||||
@@ -534,7 +534,7 @@ class ActiveVisitor final : public VNVisitor {
|
||||
return;
|
||||
}
|
||||
visitSenItems(nodep);
|
||||
visitAlways(nodep, nodep->sensesp(), nodep->keyword());
|
||||
visitAlways(nodep, nodep->sentreep(), nodep->keyword());
|
||||
}
|
||||
void visit(AstAlwaysPostponed* nodep) override {
|
||||
// Might be empty with later optimizations, so this assertion can be removed,
|
||||
@@ -545,23 +545,23 @@ class ActiveVisitor final : public VNVisitor {
|
||||
activep->addStmtsp(nodep->unlinkFrBack());
|
||||
}
|
||||
void visit(AstAlwaysObserved* nodep) override {
|
||||
UASSERT_OBJ(nodep->sensesp(), nodep, "Should have a sentree");
|
||||
AstSenTree* const sensesp = nodep->sensesp();
|
||||
sensesp->unlinkFrBack();
|
||||
UASSERT_OBJ(nodep->sentreep(), nodep, "Should have a sentree");
|
||||
AstSenTree* const sentreep = nodep->sentreep();
|
||||
sentreep->unlinkFrBack();
|
||||
// Make a new active for it, needs to be the only item under the active for V3Sched
|
||||
AstActive* const activep = m_namer.makeActive(nodep->fileline(), sensesp);
|
||||
AstActive* const activep = m_namer.makeActive(nodep->fileline(), sentreep);
|
||||
activep->addStmtsp(nodep->unlinkFrBack());
|
||||
}
|
||||
void visit(AstAlwaysReactive* nodep) override {
|
||||
UASSERT_OBJ(nodep->sensesp(), nodep, "Should have a sentree");
|
||||
AstSenTree* const sensesp = nodep->sensesp();
|
||||
sensesp->unlinkFrBack();
|
||||
UASSERT_OBJ(nodep->sentreep(), nodep, "Should have a sentree");
|
||||
AstSenTree* const sentreep = nodep->sentreep();
|
||||
sentreep->unlinkFrBack();
|
||||
// Make a new active for it, needs to be the only item under the active for V3Sched
|
||||
AstActive* const activep = m_namer.makeActive(nodep->fileline(), sensesp);
|
||||
AstActive* const activep = m_namer.makeActive(nodep->fileline(), sentreep);
|
||||
activep->addStmtsp(nodep->unlinkFrBack());
|
||||
}
|
||||
void visit(AstAlwaysPublic* nodep) override {
|
||||
visitAlways(nodep, nodep->sensesp(), VAlwaysKwd::ALWAYS);
|
||||
visitAlways(nodep, nodep->sentreep(), VAlwaysKwd::ALWAYS);
|
||||
}
|
||||
void visit(AstCFunc* nodep) override { visitSenItems(nodep); }
|
||||
void visit(AstSenItem* nodep) override {
|
||||
|
||||
Reference in New Issue
Block a user