Internals: Move CReset under Assign (#6978)
This commit is contained in:
parent
d9234501e0
commit
07ce0ac2ea
|
|
@ -673,6 +673,32 @@ public:
|
||||||
private:
|
private:
|
||||||
void setPurity();
|
void setPurity();
|
||||||
};
|
};
|
||||||
|
class AstCReset final : public AstNodeExpr {
|
||||||
|
// Reset variable at startup
|
||||||
|
const bool m_constructing; // Previously cleared by constructor
|
||||||
|
public:
|
||||||
|
AstCReset(FileLine* fl, AstVar* varp, bool constructing)
|
||||||
|
: ASTGEN_SUPER_CReset(fl)
|
||||||
|
, m_constructing{constructing} {
|
||||||
|
dtypeFrom(varp);
|
||||||
|
}
|
||||||
|
ASTGEN_MEMBERS_AstCReset;
|
||||||
|
void dump(std::ostream& str) const override;
|
||||||
|
void dumpJson(std::ostream& str) const override;
|
||||||
|
bool isPure() override { return true; }
|
||||||
|
int instrCount() const override { return widthInstrs(); }
|
||||||
|
string emitVerilog() override { V3ERROR_NA_RETURN(""); }
|
||||||
|
string emitC() override { V3ERROR_NA_RETURN(""); }
|
||||||
|
bool cleanOut() const override { return true; }
|
||||||
|
const char* broken() const override {
|
||||||
|
BROKEN_RTN(!VN_IS(backp(), NodeAssign)); // V3Emit* assumption
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
bool sameNode(const AstNode* samep) const override {
|
||||||
|
return constructing() == VN_DBG_AS(samep, CReset)->constructing();
|
||||||
|
}
|
||||||
|
bool constructing() const { return m_constructing; }
|
||||||
|
};
|
||||||
class AstCast final : public AstNodeExpr {
|
class AstCast final : public AstNodeExpr {
|
||||||
// Cast to appropriate data type
|
// Cast to appropriate data type
|
||||||
// @astgen op1 := fromp : AstNodeExpr
|
// @astgen op1 := fromp : AstNodeExpr
|
||||||
|
|
|
||||||
|
|
@ -253,26 +253,6 @@ public:
|
||||||
string verilogKwd() const override { return "break"; }
|
string verilogKwd() const override { return "break"; }
|
||||||
bool isBrancher() const override { V3ERROR_NA_RETURN(true); } // Node removed early
|
bool isBrancher() const override { V3ERROR_NA_RETURN(true); } // Node removed early
|
||||||
};
|
};
|
||||||
class AstCReset final : public AstNodeStmt {
|
|
||||||
// Reset variable at startup
|
|
||||||
// @astgen op1 := varrefp : AstVarRef
|
|
||||||
const bool m_constructing; // Previously cleared by constructor
|
|
||||||
public:
|
|
||||||
AstCReset(FileLine* fl, AstVarRef* varrefp, bool constructing)
|
|
||||||
: ASTGEN_SUPER_CReset(fl)
|
|
||||||
, m_constructing{constructing} {
|
|
||||||
this->varrefp(varrefp);
|
|
||||||
}
|
|
||||||
ASTGEN_MEMBERS_AstCReset;
|
|
||||||
void dump(std::ostream& str) const override;
|
|
||||||
void dumpJson(std::ostream& str) const override;
|
|
||||||
bool isGateOptimizable() const override { return false; }
|
|
||||||
bool isPredictOptimizable() const override { return false; }
|
|
||||||
bool sameNode(const AstNode* samep) const override {
|
|
||||||
return constructing() == VN_DBG_AS(samep, CReset)->constructing();
|
|
||||||
}
|
|
||||||
bool constructing() const { return m_constructing; }
|
|
||||||
};
|
|
||||||
class AstCReturn final : public AstNodeStmt {
|
class AstCReturn final : public AstNodeStmt {
|
||||||
// C++ return from a function
|
// C++ return from a function
|
||||||
// @astgen op1 := lhsp : AstNodeExpr
|
// @astgen op1 := lhsp : AstNodeExpr
|
||||||
|
|
|
||||||
|
|
@ -192,12 +192,13 @@ class CCtorsVisitor final : public VNVisitor {
|
||||||
}
|
}
|
||||||
void visit(AstVar* nodep) override {
|
void visit(AstVar* nodep) override {
|
||||||
if (nodep->needsCReset()) {
|
if (nodep->needsCReset()) {
|
||||||
|
AstNode* const crstp = new AstAssign{
|
||||||
|
nodep->fileline(), new AstVarRef{nodep->fileline(), nodep, VAccess::WRITE},
|
||||||
|
new AstCReset{nodep->fileline(), nodep, true}};
|
||||||
if (m_varResetp) {
|
if (m_varResetp) {
|
||||||
AstVarRef* const vrefp = new AstVarRef{nodep->fileline(), nodep, VAccess::WRITE};
|
m_varResetp->add(crstp);
|
||||||
m_varResetp->add(new AstCReset{nodep->fileline(), vrefp, true});
|
|
||||||
} else if (m_cfuncp) {
|
} else if (m_cfuncp) {
|
||||||
AstVarRef* const vrefp = new AstVarRef{nodep->fileline(), nodep, VAccess::WRITE};
|
nodep->addNextHere(crstp);
|
||||||
nodep->addNextHere(new AstCReset{nodep->fileline(), vrefp, true});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -81,7 +81,6 @@ class CfgBuilder final : public VNVisitorConst {
|
||||||
// Non-representable statements
|
// Non-representable statements
|
||||||
void visit(AstAssignDly* nodep) override { nonRepresentable(nodep); }
|
void visit(AstAssignDly* nodep) override { nonRepresentable(nodep); }
|
||||||
void visit(AstCase* nodep) override { nonRepresentable(nodep); } // V3Case will eliminate
|
void visit(AstCase* nodep) override { nonRepresentable(nodep); } // V3Case will eliminate
|
||||||
void visit(AstCReset* nodep) override { nonRepresentable(nodep); }
|
|
||||||
void visit(AstDelay* nodep) override { nonRepresentable(nodep); }
|
void visit(AstDelay* nodep) override { nonRepresentable(nodep); }
|
||||||
|
|
||||||
// Representable non control-flow statements
|
// Representable non control-flow statements
|
||||||
|
|
|
||||||
|
|
@ -523,6 +523,11 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
void visit(AstNodeAssign* nodep) override {
|
void visit(AstNodeAssign* nodep) override {
|
||||||
|
if (AstCReset* const resetp = VN_CAST(nodep->rhsp(), CReset)) {
|
||||||
|
AstVar* const varp = VN_AS(nodep->lhsp(), NodeVarRef)->varp();
|
||||||
|
emitVarReset(varp, resetp->constructing());
|
||||||
|
return;
|
||||||
|
}
|
||||||
bool paren = true;
|
bool paren = true;
|
||||||
bool decind = false;
|
bool decind = false;
|
||||||
bool rhs = true;
|
bool rhs = true;
|
||||||
|
|
@ -1736,10 +1741,6 @@ public:
|
||||||
puts(")");
|
puts(")");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void visit(AstCReset* nodep) override {
|
|
||||||
AstVar* const varp = nodep->varrefp()->varp();
|
|
||||||
emitVarReset(varp, nodep->constructing());
|
|
||||||
}
|
|
||||||
void visit(AstExecGraph* nodep) override {
|
void visit(AstExecGraph* nodep) override {
|
||||||
// The location of the AstExecGraph within the containing AstCFunc is where we want to
|
// The location of the AstExecGraph within the containing AstCFunc is where we want to
|
||||||
// invoke the graph and wait for it to complete. Emitting the children does just that.
|
// invoke the graph and wait for it to complete. Emitting the children does just that.
|
||||||
|
|
|
||||||
|
|
@ -46,13 +46,11 @@ class LifeState final {
|
||||||
public:
|
public:
|
||||||
VDouble0 m_statAssnDel; // Statistic tracking
|
VDouble0 m_statAssnDel; // Statistic tracking
|
||||||
VDouble0 m_statAssnCon; // Statistic tracking
|
VDouble0 m_statAssnCon; // Statistic tracking
|
||||||
VDouble0 m_statCResetDel; // Statistic tracking
|
|
||||||
|
|
||||||
// CONSTRUCTORS
|
// CONSTRUCTORS
|
||||||
LifeState() = default;
|
LifeState() = default;
|
||||||
~LifeState() {
|
~LifeState() {
|
||||||
V3Stats::addStatSum("Optimizations, Lifetime assign deletions", m_statAssnDel);
|
V3Stats::addStatSum("Optimizations, Lifetime assign deletions", m_statAssnDel);
|
||||||
V3Stats::addStatSum("Optimizations, Lifetime creset deletions", m_statCResetDel);
|
|
||||||
V3Stats::addStatSum("Optimizations, Lifetime constant prop", m_statAssnCon);
|
V3Stats::addStatSum("Optimizations, Lifetime constant prop", m_statAssnCon);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
@ -87,12 +85,6 @@ public:
|
||||||
m_everSet = true;
|
m_everSet = true;
|
||||||
if (VN_IS(nodep->rhsp(), Const)) m_constp = VN_AS(nodep->rhsp(), Const);
|
if (VN_IS(nodep->rhsp(), Const)) m_constp = VN_AS(nodep->rhsp(), Const);
|
||||||
}
|
}
|
||||||
void resetStatement(AstCReset* nodep) { // New CReset(A) assignment
|
|
||||||
UASSERT_OBJ(!m_isNew, nodep, "Uninitialized new entry");
|
|
||||||
m_assignp = nodep;
|
|
||||||
m_constp = nullptr;
|
|
||||||
m_everSet = true;
|
|
||||||
}
|
|
||||||
void complexAssign() { // A[x]=... or some complicated assignment
|
void complexAssign() { // A[x]=... or some complicated assignment
|
||||||
UASSERT(!m_isNew, "Uninitialized new entry");
|
UASSERT(!m_isNew, "Uninitialized new entry");
|
||||||
m_assignp = nullptr;
|
m_assignp = nullptr;
|
||||||
|
|
@ -148,26 +140,9 @@ public:
|
||||||
UINFOTREE(7, oldassp, "", "REMOVE/SAMEBLK");
|
UINFOTREE(7, oldassp, "", "REMOVE/SAMEBLK");
|
||||||
entr.complexAssign();
|
entr.complexAssign();
|
||||||
oldassp->unlinkFrBack();
|
oldassp->unlinkFrBack();
|
||||||
if (VN_IS(oldassp, CReset)) {
|
++m_statep->m_statAssnDel;
|
||||||
++m_statep->m_statCResetDel;
|
|
||||||
} else {
|
|
||||||
++m_statep->m_statAssnDel;
|
|
||||||
}
|
|
||||||
VL_DO_DANGLING(m_deleter.pushDeletep(oldassp), oldassp);
|
VL_DO_DANGLING(m_deleter.pushDeletep(oldassp), oldassp);
|
||||||
}
|
}
|
||||||
void resetStatement(AstVarScope* nodep, AstCReset* rstp) {
|
|
||||||
// Do we have a old assignment we can nuke?
|
|
||||||
UINFO(4, " CRESETof: " << nodep);
|
|
||||||
UINFO(7, " new: " << rstp);
|
|
||||||
LifeVarEntry& entr = m_map[nodep];
|
|
||||||
if (entr.isNew()) {
|
|
||||||
entr.init(true);
|
|
||||||
} else {
|
|
||||||
checkRemoveAssign(nodep, entr);
|
|
||||||
}
|
|
||||||
entr.resetStatement(rstp);
|
|
||||||
// lifeDump();
|
|
||||||
}
|
|
||||||
void simpleAssign(AstVarScope* nodep, AstNodeAssign* assp) {
|
void simpleAssign(AstVarScope* nodep, AstNodeAssign* assp) {
|
||||||
// Do we have a old assignment we can nuke?
|
// Do we have a old assignment we can nuke?
|
||||||
UINFO(4, " ASSIGNof: " << nodep);
|
UINFO(4, " ASSIGNof: " << nodep);
|
||||||
|
|
@ -333,15 +308,6 @@ class LifeVisitor final : public VNVisitor {
|
||||||
iterateAndNextNull(nodep->lhsp());
|
iterateAndNextNull(nodep->lhsp());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void visit(AstCReset* nodep) override {
|
|
||||||
if (!m_noopt) {
|
|
||||||
AstVarScope* const vscp = nodep->varrefp()->varScopep();
|
|
||||||
UASSERT_OBJ(vscp, nodep, "Scope lost on variable");
|
|
||||||
m_lifep->resetStatement(vscp, nodep);
|
|
||||||
} else {
|
|
||||||
iterateAndNextNull(nodep->varrefp());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
void visit(AstAssignDly* nodep) override {
|
void visit(AstAssignDly* nodep) override {
|
||||||
// V3Life doesn't understand time sense
|
// V3Life doesn't understand time sense
|
||||||
if (nodep->isTimingControl()) {
|
if (nodep->isTimingControl()) {
|
||||||
|
|
|
||||||
|
|
@ -241,6 +241,7 @@ class SliceVisitor final : public VNVisitor {
|
||||||
const AstUnpackArrayDType* const arrayp = VN_CAST(dtp, UnpackArrayDType);
|
const AstUnpackArrayDType* const arrayp = VN_CAST(dtp, UnpackArrayDType);
|
||||||
if (!arrayp) return false;
|
if (!arrayp) return false;
|
||||||
if (VN_IS(stp, CvtPackedToArray)) return false;
|
if (VN_IS(stp, CvtPackedToArray)) return false;
|
||||||
|
if (VN_IS(stp, CReset)) return false;
|
||||||
|
|
||||||
// Any isSc variables must be expanded regardless of --fno-slice
|
// Any isSc variables must be expanded regardless of --fno-slice
|
||||||
const bool hasSc
|
const bool hasSc
|
||||||
|
|
|
||||||
|
|
@ -649,9 +649,11 @@ class TaskVisitor final : public VNVisitor {
|
||||||
if (portp->needsCReset() && portp->lifetime().isAutomatic()
|
if (portp->needsCReset() && portp->lifetime().isAutomatic()
|
||||||
&& !portp->valuep()) {
|
&& !portp->valuep()) {
|
||||||
// Reset automatic var to its default, on each invocation of function
|
// Reset automatic var to its default, on each invocation of function
|
||||||
AstVarRef* const vrefp
|
AstNode* const crstp = new AstAssign{
|
||||||
= new AstVarRef{portp->fileline(), portp, VAccess::WRITE};
|
portp->fileline(),
|
||||||
portp->replaceWith(new AstCReset{portp->fileline(), vrefp, false});
|
new AstVarRef{portp->fileline(), portp, VAccess::WRITE},
|
||||||
|
new AstCReset{portp->fileline(), portp, false}};
|
||||||
|
portp->replaceWith(crstp);
|
||||||
} else {
|
} else {
|
||||||
portp->unlinkFrBack();
|
portp->unlinkFrBack();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -82,212 +82,224 @@
|
||||||
"lhsp": [
|
"lhsp": [
|
||||||
{"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__0__val","addr":"(KC)","loc":"d,15:57,15:60","dtypep":"(H)","access":"WR","varp":"(SB)","varScopep":"(RB)","classOrPackagep":"UNLINKED"}
|
{"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__0__val","addr":"(KC)","loc":"d,15:57,15:60","dtypep":"(H)","access":"WR","varp":"(SB)","varScopep":"(RB)","classOrPackagep":"UNLINKED"}
|
||||||
],"timingControlp": []},
|
],"timingControlp": []},
|
||||||
{"type":"CRESET","name":"","addr":"(LC)","loc":"d,16:17,16:20","constructing":false,
|
{"type":"ASSIGN","name":"","addr":"(LC)","loc":"d,16:17,16:20","dtypep":"(K)",
|
||||||
"varrefp": [
|
|
||||||
{"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__0__ret","addr":"(MC)","loc":"d,16:17,16:20","dtypep":"(K)","access":"WR","varp":"(UB)","varScopep":"(TB)","classOrPackagep":"UNLINKED"}
|
|
||||||
]},
|
|
||||||
{"type":"CRESET","name":"","addr":"(NC)","loc":"d,17:13,17:14","constructing":false,
|
|
||||||
"varrefp": [
|
|
||||||
{"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__0__i","addr":"(OC)","loc":"d,17:13,17:14","dtypep":"(WB)","access":"WR","varp":"(XB)","varScopep":"(VB)","classOrPackagep":"UNLINKED"}
|
|
||||||
]},
|
|
||||||
{"type":"ASSIGN","name":"","addr":"(PC)","loc":"d,18:11,18:12","dtypep":"(WB)",
|
|
||||||
"rhsp": [
|
"rhsp": [
|
||||||
{"type":"CONST","name":"32'sh0","addr":"(QC)","loc":"d,18:12,18:13","dtypep":"(RC)"}
|
{"type":"CRESET","name":"","addr":"(MC)","loc":"d,16:17,16:20","dtypep":"(K)","constructing":false}
|
||||||
],
|
],
|
||||||
"lhsp": [
|
"lhsp": [
|
||||||
{"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__0__i","addr":"(SC)","loc":"d,18:10,18:11","dtypep":"(WB)","access":"WR","varp":"(XB)","varScopep":"(VB)","classOrPackagep":"UNLINKED"}
|
{"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__0__ret","addr":"(NC)","loc":"d,16:17,16:20","dtypep":"(K)","access":"WR","varp":"(UB)","varScopep":"(TB)","classOrPackagep":"UNLINKED"}
|
||||||
],"timingControlp": []},
|
],"timingControlp": []},
|
||||||
{"type":"LOOP","name":"","addr":"(TC)","loc":"d,18:5,18:8","unroll":"default",
|
{"type":"ASSIGN","name":"","addr":"(OC)","loc":"d,17:13,17:14","dtypep":"(WB)",
|
||||||
|
"rhsp": [
|
||||||
|
{"type":"CRESET","name":"","addr":"(PC)","loc":"d,17:13,17:14","dtypep":"(WB)","constructing":false}
|
||||||
|
],
|
||||||
|
"lhsp": [
|
||||||
|
{"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__0__i","addr":"(QC)","loc":"d,17:13,17:14","dtypep":"(WB)","access":"WR","varp":"(XB)","varScopep":"(VB)","classOrPackagep":"UNLINKED"}
|
||||||
|
],"timingControlp": []},
|
||||||
|
{"type":"ASSIGN","name":"","addr":"(RC)","loc":"d,18:11,18:12","dtypep":"(WB)",
|
||||||
|
"rhsp": [
|
||||||
|
{"type":"CONST","name":"32'sh0","addr":"(SC)","loc":"d,18:12,18:13","dtypep":"(TC)"}
|
||||||
|
],
|
||||||
|
"lhsp": [
|
||||||
|
{"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__0__i","addr":"(UC)","loc":"d,18:10,18:11","dtypep":"(WB)","access":"WR","varp":"(XB)","varScopep":"(VB)","classOrPackagep":"UNLINKED"}
|
||||||
|
],"timingControlp": []},
|
||||||
|
{"type":"LOOP","name":"","addr":"(VC)","loc":"d,18:5,18:8","unroll":"default",
|
||||||
"stmtsp": [
|
"stmtsp": [
|
||||||
{"type":"LOOPTEST","name":"","addr":"(UC)","loc":"d,18:16,18:17",
|
{"type":"LOOPTEST","name":"","addr":"(WC)","loc":"d,18:16,18:17",
|
||||||
"condp": [
|
"condp": [
|
||||||
{"type":"GTS","name":"","addr":"(VC)","loc":"d,18:18,18:19","dtypep":"(WC)",
|
{"type":"GTS","name":"","addr":"(XC)","loc":"d,18:18,18:19","dtypep":"(YC)",
|
||||||
"lhsp": [
|
"lhsp": [
|
||||||
{"type":"CONST","name":"32'sh7","addr":"(XC)","loc":"d,18:20,18:21","dtypep":"(RC)"}
|
{"type":"CONST","name":"32'sh7","addr":"(ZC)","loc":"d,18:20,18:21","dtypep":"(TC)"}
|
||||||
],
|
],
|
||||||
"rhsp": [
|
"rhsp": [
|
||||||
{"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__0__i","addr":"(YC)","loc":"d,18:16,18:17","dtypep":"(WB)","access":"RD","varp":"(XB)","varScopep":"(VB)","classOrPackagep":"UNLINKED"}
|
{"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__0__i","addr":"(AD)","loc":"d,18:16,18:17","dtypep":"(WB)","access":"RD","varp":"(XB)","varScopep":"(VB)","classOrPackagep":"UNLINKED"}
|
||||||
]}
|
]}
|
||||||
]},
|
]},
|
||||||
{"type":"ASSIGN","name":"","addr":"(ZC)","loc":"d,19:14,19:15","dtypep":"(WC)",
|
{"type":"ASSIGN","name":"","addr":"(BD)","loc":"d,19:14,19:15","dtypep":"(YC)",
|
||||||
"rhsp": [
|
"rhsp": [
|
||||||
{"type":"EQ","name":"","addr":"(AD)","loc":"d,19:31,19:33","dtypep":"(WC)",
|
{"type":"EQ","name":"","addr":"(CD)","loc":"d,19:31,19:33","dtypep":"(YC)",
|
||||||
"lhsp": [
|
"lhsp": [
|
||||||
{"type":"CONST","name":"2'h0","addr":"(BD)","loc":"d,19:34,19:39","dtypep":"(CD)"}
|
{"type":"CONST","name":"2'h0","addr":"(DD)","loc":"d,19:34,19:39","dtypep":"(ED)"}
|
||||||
],
|
],
|
||||||
"rhsp": [
|
"rhsp": [
|
||||||
{"type":"SEL","name":"","addr":"(DD)","loc":"d,19:20,19:21","dtypep":"(CD)","widthConst":2,"declRange":"[15:0]","declElWidth":1,
|
{"type":"SEL","name":"","addr":"(FD)","loc":"d,19:20,19:21","dtypep":"(ED)","widthConst":2,"declRange":"[15:0]","declElWidth":1,
|
||||||
"fromp": [
|
"fromp": [
|
||||||
{"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__0__val","addr":"(ED)","loc":"d,19:17,19:20","dtypep":"(H)","access":"RD","varp":"(SB)","varScopep":"(RB)","classOrPackagep":"UNLINKED"}
|
{"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__0__val","addr":"(GD)","loc":"d,19:17,19:20","dtypep":"(H)","access":"RD","varp":"(SB)","varScopep":"(RB)","classOrPackagep":"UNLINKED"}
|
||||||
],
|
],
|
||||||
"lsbp": [
|
"lsbp": [
|
||||||
{"type":"SEL","name":"","addr":"(FD)","loc":"d,19:22,19:23","dtypep":"(GD)","widthConst":4,
|
{"type":"SEL","name":"","addr":"(HD)","loc":"d,19:22,19:23","dtypep":"(ID)","widthConst":4,
|
||||||
"fromp": [
|
"fromp": [
|
||||||
{"type":"MULS","name":"","addr":"(HD)","loc":"d,19:22,19:23","dtypep":"(RC)",
|
{"type":"MULS","name":"","addr":"(JD)","loc":"d,19:22,19:23","dtypep":"(TC)",
|
||||||
"lhsp": [
|
"lhsp": [
|
||||||
{"type":"CONST","name":"32'sh2","addr":"(ID)","loc":"d,19:23,19:24","dtypep":"(RC)"}
|
{"type":"CONST","name":"32'sh2","addr":"(KD)","loc":"d,19:23,19:24","dtypep":"(TC)"}
|
||||||
],
|
],
|
||||||
"rhsp": [
|
"rhsp": [
|
||||||
{"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__0__i","addr":"(JD)","loc":"d,19:21,19:22","dtypep":"(WB)","access":"RD","varp":"(XB)","varScopep":"(VB)","classOrPackagep":"UNLINKED"}
|
{"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__0__i","addr":"(LD)","loc":"d,19:21,19:22","dtypep":"(WB)","access":"RD","varp":"(XB)","varScopep":"(VB)","classOrPackagep":"UNLINKED"}
|
||||||
]}
|
]}
|
||||||
],
|
],
|
||||||
"lsbp": [
|
"lsbp": [
|
||||||
{"type":"CONST","name":"32'h0","addr":"(KD)","loc":"d,19:22,19:23","dtypep":"(LD)"}
|
{"type":"CONST","name":"32'h0","addr":"(MD)","loc":"d,19:22,19:23","dtypep":"(ND)"}
|
||||||
]}
|
]}
|
||||||
]}
|
]}
|
||||||
]}
|
]}
|
||||||
],
|
],
|
||||||
"lhsp": [
|
"lhsp": [
|
||||||
{"type":"SEL","name":"","addr":"(MD)","loc":"d,19:10,19:11","dtypep":"(WC)","widthConst":1,"declRange":"[6:0]","declElWidth":1,
|
{"type":"SEL","name":"","addr":"(OD)","loc":"d,19:10,19:11","dtypep":"(YC)","widthConst":1,"declRange":"[6:0]","declElWidth":1,
|
||||||
"fromp": [
|
"fromp": [
|
||||||
{"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__0__ret","addr":"(ND)","loc":"d,19:7,19:10","dtypep":"(K)","access":"WR","varp":"(UB)","varScopep":"(TB)","classOrPackagep":"UNLINKED"}
|
{"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__0__ret","addr":"(PD)","loc":"d,19:7,19:10","dtypep":"(K)","access":"WR","varp":"(UB)","varScopep":"(TB)","classOrPackagep":"UNLINKED"}
|
||||||
],
|
],
|
||||||
"lsbp": [
|
"lsbp": [
|
||||||
{"type":"SEL","name":"","addr":"(OD)","loc":"d,19:11,19:12","dtypep":"(PD)","widthConst":3,
|
{"type":"SEL","name":"","addr":"(QD)","loc":"d,19:11,19:12","dtypep":"(RD)","widthConst":3,
|
||||||
"fromp": [
|
"fromp": [
|
||||||
{"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__0__i","addr":"(QD)","loc":"d,19:11,19:12","dtypep":"(WB)","access":"RD","varp":"(XB)","varScopep":"(VB)","classOrPackagep":"UNLINKED"}
|
{"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__0__i","addr":"(SD)","loc":"d,19:11,19:12","dtypep":"(WB)","access":"RD","varp":"(XB)","varScopep":"(VB)","classOrPackagep":"UNLINKED"}
|
||||||
],
|
],
|
||||||
"lsbp": [
|
"lsbp": [
|
||||||
{"type":"CONST","name":"32'h0","addr":"(RD)","loc":"d,19:11,19:12","dtypep":"(LD)"}
|
{"type":"CONST","name":"32'h0","addr":"(TD)","loc":"d,19:11,19:12","dtypep":"(ND)"}
|
||||||
]}
|
]}
|
||||||
]}
|
]}
|
||||||
],"timingControlp": []},
|
],"timingControlp": []},
|
||||||
{"type":"ASSIGN","name":"","addr":"(SD)","loc":"d,18:24,18:26","dtypep":"(WB)",
|
{"type":"ASSIGN","name":"","addr":"(UD)","loc":"d,18:24,18:26","dtypep":"(WB)",
|
||||||
"rhsp": [
|
"rhsp": [
|
||||||
{"type":"ADD","name":"","addr":"(TD)","loc":"d,18:24,18:26","dtypep":"(LD)",
|
{"type":"ADD","name":"","addr":"(VD)","loc":"d,18:24,18:26","dtypep":"(ND)",
|
||||||
"lhsp": [
|
"lhsp": [
|
||||||
{"type":"CONST","name":"32'h1","addr":"(UD)","loc":"d,18:24,18:26","dtypep":"(LD)"}
|
{"type":"CONST","name":"32'h1","addr":"(WD)","loc":"d,18:24,18:26","dtypep":"(ND)"}
|
||||||
],
|
],
|
||||||
"rhsp": [
|
"rhsp": [
|
||||||
{"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__0__i","addr":"(VD)","loc":"d,18:23,18:24","dtypep":"(WB)","access":"RD","varp":"(XB)","varScopep":"(VB)","classOrPackagep":"UNLINKED"}
|
{"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__0__i","addr":"(XD)","loc":"d,18:23,18:24","dtypep":"(WB)","access":"RD","varp":"(XB)","varScopep":"(VB)","classOrPackagep":"UNLINKED"}
|
||||||
]}
|
]}
|
||||||
],
|
],
|
||||||
"lhsp": [
|
"lhsp": [
|
||||||
{"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__0__i","addr":"(WD)","loc":"d,18:23,18:24","dtypep":"(WB)","access":"WR","varp":"(XB)","varScopep":"(VB)","classOrPackagep":"UNLINKED"}
|
{"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__0__i","addr":"(YD)","loc":"d,18:23,18:24","dtypep":"(WB)","access":"WR","varp":"(XB)","varScopep":"(VB)","classOrPackagep":"UNLINKED"}
|
||||||
],"timingControlp": []}
|
],"timingControlp": []}
|
||||||
],"contsp": []},
|
],"contsp": []},
|
||||||
{"type":"ASSIGN","name":"","addr":"(XD)","loc":"d,21:5,21:11","dtypep":"(K)",
|
{"type":"ASSIGN","name":"","addr":"(ZD)","loc":"d,21:5,21:11","dtypep":"(K)",
|
||||||
"rhsp": [
|
"rhsp": [
|
||||||
{"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__0__ret","addr":"(YD)","loc":"d,21:12,21:15","dtypep":"(K)","access":"RD","varp":"(UB)","varScopep":"(TB)","classOrPackagep":"UNLINKED"}
|
{"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__0__ret","addr":"(AE)","loc":"d,21:12,21:15","dtypep":"(K)","access":"RD","varp":"(UB)","varScopep":"(TB)","classOrPackagep":"UNLINKED"}
|
||||||
],
|
],
|
||||||
"lhsp": [
|
"lhsp": [
|
||||||
{"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__0__Vfuncout","addr":"(ZD)","loc":"d,21:5,21:11","dtypep":"(K)","access":"WR","varp":"(QB)","varScopep":"(PB)","classOrPackagep":"UNLINKED"}
|
{"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__0__Vfuncout","addr":"(BE)","loc":"d,21:5,21:11","dtypep":"(K)","access":"WR","varp":"(QB)","varScopep":"(PB)","classOrPackagep":"UNLINKED"}
|
||||||
],"timingControlp": []},
|
],"timingControlp": []},
|
||||||
{"type":"ASSIGNW","name":"","addr":"(AE)","loc":"d,24:14,24:15","dtypep":"(K)",
|
{"type":"ASSIGNW","name":"","addr":"(CE)","loc":"d,24:14,24:15","dtypep":"(K)",
|
||||||
"rhsp": [
|
"rhsp": [
|
||||||
{"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__0__Vfuncout","addr":"(BE)","loc":"d,24:16,24:19","dtypep":"(K)","access":"RD","varp":"(QB)","varScopep":"(PB)","classOrPackagep":"UNLINKED"}
|
{"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__0__Vfuncout","addr":"(DE)","loc":"d,24:16,24:19","dtypep":"(K)","access":"RD","varp":"(QB)","varScopep":"(PB)","classOrPackagep":"UNLINKED"}
|
||||||
],
|
],
|
||||||
"lhsp": [
|
"lhsp": [
|
||||||
{"type":"VARREF","name":"o_a","addr":"(CE)","loc":"d,24:10,24:13","dtypep":"(K)","access":"WR","varp":"(J)","varScopep":"(T)","classOrPackagep":"UNLINKED"}
|
{"type":"VARREF","name":"o_a","addr":"(EE)","loc":"d,24:10,24:13","dtypep":"(K)","access":"WR","varp":"(J)","varScopep":"(T)","classOrPackagep":"UNLINKED"}
|
||||||
],"timingControlp": [],"strengthSpecp": []}
|
],"timingControlp": [],"strengthSpecp": []}
|
||||||
]},
|
]},
|
||||||
{"type":"ALWAYS","name":"","addr":"(DE)","loc":"d,25:14,25:15","keyword":"cont_assign","isSuspendable":false,"needProcess":false,"sentreep": [],
|
{"type":"ALWAYS","name":"","addr":"(FE)","loc":"d,25:14,25:15","keyword":"cont_assign","isSuspendable":false,"needProcess":false,"sentreep": [],
|
||||||
"stmtsp": [
|
"stmtsp": [
|
||||||
{"type":"COMMENT","name":"Function: foo","addr":"(EE)","loc":"d,25:16,25:19"},
|
{"type":"COMMENT","name":"Function: foo","addr":"(GE)","loc":"d,25:16,25:19"},
|
||||||
{"type":"ASSIGN","name":"","addr":"(FE)","loc":"d,25:20,25:23","dtypep":"(H)",
|
{"type":"ASSIGN","name":"","addr":"(HE)","loc":"d,25:20,25:23","dtypep":"(H)",
|
||||||
"rhsp": [
|
"rhsp": [
|
||||||
{"type":"VARREF","name":"i_b","addr":"(GE)","loc":"d,25:20,25:23","dtypep":"(H)","access":"RD","varp":"(I)","varScopep":"(S)","classOrPackagep":"UNLINKED"}
|
{"type":"VARREF","name":"i_b","addr":"(IE)","loc":"d,25:20,25:23","dtypep":"(H)","access":"RD","varp":"(I)","varScopep":"(S)","classOrPackagep":"UNLINKED"}
|
||||||
],
|
],
|
||||||
"lhsp": [
|
"lhsp": [
|
||||||
{"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__1__val","addr":"(HE)","loc":"d,15:57,15:60","dtypep":"(H)","access":"WR","varp":"(BC)","varScopep":"(AC)","classOrPackagep":"UNLINKED"}
|
{"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__1__val","addr":"(JE)","loc":"d,15:57,15:60","dtypep":"(H)","access":"WR","varp":"(BC)","varScopep":"(AC)","classOrPackagep":"UNLINKED"}
|
||||||
],"timingControlp": []},
|
],"timingControlp": []},
|
||||||
{"type":"CRESET","name":"","addr":"(IE)","loc":"d,16:17,16:20","constructing":false,
|
{"type":"ASSIGN","name":"","addr":"(KE)","loc":"d,16:17,16:20","dtypep":"(K)",
|
||||||
"varrefp": [
|
|
||||||
{"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__1__ret","addr":"(JE)","loc":"d,16:17,16:20","dtypep":"(K)","access":"WR","varp":"(DC)","varScopep":"(CC)","classOrPackagep":"UNLINKED"}
|
|
||||||
]},
|
|
||||||
{"type":"CRESET","name":"","addr":"(KE)","loc":"d,17:13,17:14","constructing":false,
|
|
||||||
"varrefp": [
|
|
||||||
{"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__1__i","addr":"(LE)","loc":"d,17:13,17:14","dtypep":"(WB)","access":"WR","varp":"(FC)","varScopep":"(EC)","classOrPackagep":"UNLINKED"}
|
|
||||||
]},
|
|
||||||
{"type":"ASSIGN","name":"","addr":"(ME)","loc":"d,18:11,18:12","dtypep":"(WB)",
|
|
||||||
"rhsp": [
|
"rhsp": [
|
||||||
{"type":"CONST","name":"32'sh0","addr":"(NE)","loc":"d,18:12,18:13","dtypep":"(RC)"}
|
{"type":"CRESET","name":"","addr":"(LE)","loc":"d,16:17,16:20","dtypep":"(K)","constructing":false}
|
||||||
],
|
],
|
||||||
"lhsp": [
|
"lhsp": [
|
||||||
{"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__1__i","addr":"(OE)","loc":"d,18:10,18:11","dtypep":"(WB)","access":"WR","varp":"(FC)","varScopep":"(EC)","classOrPackagep":"UNLINKED"}
|
{"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__1__ret","addr":"(ME)","loc":"d,16:17,16:20","dtypep":"(K)","access":"WR","varp":"(DC)","varScopep":"(CC)","classOrPackagep":"UNLINKED"}
|
||||||
],"timingControlp": []},
|
],"timingControlp": []},
|
||||||
{"type":"LOOP","name":"","addr":"(PE)","loc":"d,18:5,18:8","unroll":"default",
|
{"type":"ASSIGN","name":"","addr":"(NE)","loc":"d,17:13,17:14","dtypep":"(WB)",
|
||||||
|
"rhsp": [
|
||||||
|
{"type":"CRESET","name":"","addr":"(OE)","loc":"d,17:13,17:14","dtypep":"(WB)","constructing":false}
|
||||||
|
],
|
||||||
|
"lhsp": [
|
||||||
|
{"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__1__i","addr":"(PE)","loc":"d,17:13,17:14","dtypep":"(WB)","access":"WR","varp":"(FC)","varScopep":"(EC)","classOrPackagep":"UNLINKED"}
|
||||||
|
],"timingControlp": []},
|
||||||
|
{"type":"ASSIGN","name":"","addr":"(QE)","loc":"d,18:11,18:12","dtypep":"(WB)",
|
||||||
|
"rhsp": [
|
||||||
|
{"type":"CONST","name":"32'sh0","addr":"(RE)","loc":"d,18:12,18:13","dtypep":"(TC)"}
|
||||||
|
],
|
||||||
|
"lhsp": [
|
||||||
|
{"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__1__i","addr":"(SE)","loc":"d,18:10,18:11","dtypep":"(WB)","access":"WR","varp":"(FC)","varScopep":"(EC)","classOrPackagep":"UNLINKED"}
|
||||||
|
],"timingControlp": []},
|
||||||
|
{"type":"LOOP","name":"","addr":"(TE)","loc":"d,18:5,18:8","unroll":"default",
|
||||||
"stmtsp": [
|
"stmtsp": [
|
||||||
{"type":"LOOPTEST","name":"","addr":"(QE)","loc":"d,18:16,18:17",
|
{"type":"LOOPTEST","name":"","addr":"(UE)","loc":"d,18:16,18:17",
|
||||||
"condp": [
|
"condp": [
|
||||||
{"type":"GTS","name":"","addr":"(RE)","loc":"d,18:18,18:19","dtypep":"(WC)",
|
{"type":"GTS","name":"","addr":"(VE)","loc":"d,18:18,18:19","dtypep":"(YC)",
|
||||||
"lhsp": [
|
"lhsp": [
|
||||||
{"type":"CONST","name":"32'sh7","addr":"(SE)","loc":"d,18:20,18:21","dtypep":"(RC)"}
|
{"type":"CONST","name":"32'sh7","addr":"(WE)","loc":"d,18:20,18:21","dtypep":"(TC)"}
|
||||||
],
|
],
|
||||||
"rhsp": [
|
"rhsp": [
|
||||||
{"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__1__i","addr":"(TE)","loc":"d,18:16,18:17","dtypep":"(WB)","access":"RD","varp":"(FC)","varScopep":"(EC)","classOrPackagep":"UNLINKED"}
|
{"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__1__i","addr":"(XE)","loc":"d,18:16,18:17","dtypep":"(WB)","access":"RD","varp":"(FC)","varScopep":"(EC)","classOrPackagep":"UNLINKED"}
|
||||||
]}
|
]}
|
||||||
]},
|
]},
|
||||||
{"type":"ASSIGN","name":"","addr":"(UE)","loc":"d,19:14,19:15","dtypep":"(WC)",
|
{"type":"ASSIGN","name":"","addr":"(YE)","loc":"d,19:14,19:15","dtypep":"(YC)",
|
||||||
"rhsp": [
|
"rhsp": [
|
||||||
{"type":"EQ","name":"","addr":"(VE)","loc":"d,19:31,19:33","dtypep":"(WC)",
|
{"type":"EQ","name":"","addr":"(ZE)","loc":"d,19:31,19:33","dtypep":"(YC)",
|
||||||
"lhsp": [
|
"lhsp": [
|
||||||
{"type":"CONST","name":"2'h0","addr":"(WE)","loc":"d,19:34,19:39","dtypep":"(CD)"}
|
{"type":"CONST","name":"2'h0","addr":"(AF)","loc":"d,19:34,19:39","dtypep":"(ED)"}
|
||||||
],
|
],
|
||||||
"rhsp": [
|
"rhsp": [
|
||||||
{"type":"SEL","name":"","addr":"(XE)","loc":"d,19:20,19:21","dtypep":"(CD)","widthConst":2,"declRange":"[15:0]","declElWidth":1,
|
{"type":"SEL","name":"","addr":"(BF)","loc":"d,19:20,19:21","dtypep":"(ED)","widthConst":2,"declRange":"[15:0]","declElWidth":1,
|
||||||
"fromp": [
|
"fromp": [
|
||||||
{"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__1__val","addr":"(YE)","loc":"d,19:17,19:20","dtypep":"(H)","access":"RD","varp":"(BC)","varScopep":"(AC)","classOrPackagep":"UNLINKED"}
|
{"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__1__val","addr":"(CF)","loc":"d,19:17,19:20","dtypep":"(H)","access":"RD","varp":"(BC)","varScopep":"(AC)","classOrPackagep":"UNLINKED"}
|
||||||
],
|
],
|
||||||
"lsbp": [
|
"lsbp": [
|
||||||
{"type":"SEL","name":"","addr":"(ZE)","loc":"d,19:22,19:23","dtypep":"(GD)","widthConst":4,
|
{"type":"SEL","name":"","addr":"(DF)","loc":"d,19:22,19:23","dtypep":"(ID)","widthConst":4,
|
||||||
"fromp": [
|
"fromp": [
|
||||||
{"type":"MULS","name":"","addr":"(AF)","loc":"d,19:22,19:23","dtypep":"(RC)",
|
{"type":"MULS","name":"","addr":"(EF)","loc":"d,19:22,19:23","dtypep":"(TC)",
|
||||||
"lhsp": [
|
"lhsp": [
|
||||||
{"type":"CONST","name":"32'sh2","addr":"(BF)","loc":"d,19:23,19:24","dtypep":"(RC)"}
|
{"type":"CONST","name":"32'sh2","addr":"(FF)","loc":"d,19:23,19:24","dtypep":"(TC)"}
|
||||||
],
|
],
|
||||||
"rhsp": [
|
"rhsp": [
|
||||||
{"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__1__i","addr":"(CF)","loc":"d,19:21,19:22","dtypep":"(WB)","access":"RD","varp":"(FC)","varScopep":"(EC)","classOrPackagep":"UNLINKED"}
|
{"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__1__i","addr":"(GF)","loc":"d,19:21,19:22","dtypep":"(WB)","access":"RD","varp":"(FC)","varScopep":"(EC)","classOrPackagep":"UNLINKED"}
|
||||||
]}
|
]}
|
||||||
],
|
],
|
||||||
"lsbp": [
|
"lsbp": [
|
||||||
{"type":"CONST","name":"32'h0","addr":"(DF)","loc":"d,19:22,19:23","dtypep":"(LD)"}
|
{"type":"CONST","name":"32'h0","addr":"(HF)","loc":"d,19:22,19:23","dtypep":"(ND)"}
|
||||||
]}
|
]}
|
||||||
]}
|
]}
|
||||||
]}
|
]}
|
||||||
],
|
],
|
||||||
"lhsp": [
|
"lhsp": [
|
||||||
{"type":"SEL","name":"","addr":"(EF)","loc":"d,19:10,19:11","dtypep":"(WC)","widthConst":1,"declRange":"[6:0]","declElWidth":1,
|
{"type":"SEL","name":"","addr":"(IF)","loc":"d,19:10,19:11","dtypep":"(YC)","widthConst":1,"declRange":"[6:0]","declElWidth":1,
|
||||||
"fromp": [
|
"fromp": [
|
||||||
{"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__1__ret","addr":"(FF)","loc":"d,19:7,19:10","dtypep":"(K)","access":"WR","varp":"(DC)","varScopep":"(CC)","classOrPackagep":"UNLINKED"}
|
{"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__1__ret","addr":"(JF)","loc":"d,19:7,19:10","dtypep":"(K)","access":"WR","varp":"(DC)","varScopep":"(CC)","classOrPackagep":"UNLINKED"}
|
||||||
],
|
],
|
||||||
"lsbp": [
|
"lsbp": [
|
||||||
{"type":"SEL","name":"","addr":"(GF)","loc":"d,19:11,19:12","dtypep":"(PD)","widthConst":3,
|
{"type":"SEL","name":"","addr":"(KF)","loc":"d,19:11,19:12","dtypep":"(RD)","widthConst":3,
|
||||||
"fromp": [
|
"fromp": [
|
||||||
{"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__1__i","addr":"(HF)","loc":"d,19:11,19:12","dtypep":"(WB)","access":"RD","varp":"(FC)","varScopep":"(EC)","classOrPackagep":"UNLINKED"}
|
{"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__1__i","addr":"(LF)","loc":"d,19:11,19:12","dtypep":"(WB)","access":"RD","varp":"(FC)","varScopep":"(EC)","classOrPackagep":"UNLINKED"}
|
||||||
],
|
],
|
||||||
"lsbp": [
|
"lsbp": [
|
||||||
{"type":"CONST","name":"32'h0","addr":"(IF)","loc":"d,19:11,19:12","dtypep":"(LD)"}
|
{"type":"CONST","name":"32'h0","addr":"(MF)","loc":"d,19:11,19:12","dtypep":"(ND)"}
|
||||||
]}
|
]}
|
||||||
]}
|
]}
|
||||||
],"timingControlp": []},
|
],"timingControlp": []},
|
||||||
{"type":"ASSIGN","name":"","addr":"(JF)","loc":"d,18:24,18:26","dtypep":"(WB)",
|
{"type":"ASSIGN","name":"","addr":"(NF)","loc":"d,18:24,18:26","dtypep":"(WB)",
|
||||||
"rhsp": [
|
"rhsp": [
|
||||||
{"type":"ADD","name":"","addr":"(KF)","loc":"d,18:24,18:26","dtypep":"(LD)",
|
{"type":"ADD","name":"","addr":"(OF)","loc":"d,18:24,18:26","dtypep":"(ND)",
|
||||||
"lhsp": [
|
"lhsp": [
|
||||||
{"type":"CONST","name":"32'h1","addr":"(LF)","loc":"d,18:24,18:26","dtypep":"(LD)"}
|
{"type":"CONST","name":"32'h1","addr":"(PF)","loc":"d,18:24,18:26","dtypep":"(ND)"}
|
||||||
],
|
],
|
||||||
"rhsp": [
|
"rhsp": [
|
||||||
{"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__1__i","addr":"(MF)","loc":"d,18:23,18:24","dtypep":"(WB)","access":"RD","varp":"(FC)","varScopep":"(EC)","classOrPackagep":"UNLINKED"}
|
{"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__1__i","addr":"(QF)","loc":"d,18:23,18:24","dtypep":"(WB)","access":"RD","varp":"(FC)","varScopep":"(EC)","classOrPackagep":"UNLINKED"}
|
||||||
]}
|
]}
|
||||||
],
|
],
|
||||||
"lhsp": [
|
"lhsp": [
|
||||||
{"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__1__i","addr":"(NF)","loc":"d,18:23,18:24","dtypep":"(WB)","access":"WR","varp":"(FC)","varScopep":"(EC)","classOrPackagep":"UNLINKED"}
|
{"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__1__i","addr":"(RF)","loc":"d,18:23,18:24","dtypep":"(WB)","access":"WR","varp":"(FC)","varScopep":"(EC)","classOrPackagep":"UNLINKED"}
|
||||||
],"timingControlp": []}
|
],"timingControlp": []}
|
||||||
],"contsp": []},
|
],"contsp": []},
|
||||||
{"type":"ASSIGN","name":"","addr":"(OF)","loc":"d,21:5,21:11","dtypep":"(K)",
|
{"type":"ASSIGN","name":"","addr":"(SF)","loc":"d,21:5,21:11","dtypep":"(K)",
|
||||||
"rhsp": [
|
"rhsp": [
|
||||||
{"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__1__ret","addr":"(PF)","loc":"d,21:12,21:15","dtypep":"(K)","access":"RD","varp":"(DC)","varScopep":"(CC)","classOrPackagep":"UNLINKED"}
|
{"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__1__ret","addr":"(TF)","loc":"d,21:12,21:15","dtypep":"(K)","access":"RD","varp":"(DC)","varScopep":"(CC)","classOrPackagep":"UNLINKED"}
|
||||||
],
|
],
|
||||||
"lhsp": [
|
"lhsp": [
|
||||||
{"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__1__Vfuncout","addr":"(QF)","loc":"d,21:5,21:11","dtypep":"(K)","access":"WR","varp":"(ZB)","varScopep":"(YB)","classOrPackagep":"UNLINKED"}
|
{"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__1__Vfuncout","addr":"(UF)","loc":"d,21:5,21:11","dtypep":"(K)","access":"WR","varp":"(ZB)","varScopep":"(YB)","classOrPackagep":"UNLINKED"}
|
||||||
],"timingControlp": []},
|
],"timingControlp": []},
|
||||||
{"type":"ASSIGNW","name":"","addr":"(RF)","loc":"d,25:14,25:15","dtypep":"(K)",
|
{"type":"ASSIGNW","name":"","addr":"(VF)","loc":"d,25:14,25:15","dtypep":"(K)",
|
||||||
"rhsp": [
|
"rhsp": [
|
||||||
{"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__1__Vfuncout","addr":"(SF)","loc":"d,25:16,25:19","dtypep":"(K)","access":"RD","varp":"(ZB)","varScopep":"(YB)","classOrPackagep":"UNLINKED"}
|
{"type":"VARREF","name":"__Vfunc_vlvbound_test.foo__1__Vfuncout","addr":"(WF)","loc":"d,25:16,25:19","dtypep":"(K)","access":"RD","varp":"(ZB)","varScopep":"(YB)","classOrPackagep":"UNLINKED"}
|
||||||
],
|
],
|
||||||
"lhsp": [
|
"lhsp": [
|
||||||
{"type":"VARREF","name":"o_b","addr":"(TF)","loc":"d,25:10,25:13","dtypep":"(K)","access":"WR","varp":"(L)","varScopep":"(U)","classOrPackagep":"UNLINKED"}
|
{"type":"VARREF","name":"o_b","addr":"(XF)","loc":"d,25:10,25:13","dtypep":"(K)","access":"WR","varp":"(L)","varScopep":"(U)","classOrPackagep":"UNLINKED"}
|
||||||
],"timingControlp": [],"strengthSpecp": []}
|
],"timingControlp": [],"strengthSpecp": []}
|
||||||
]}
|
]}
|
||||||
],"inlinesp": []}
|
],"inlinesp": []}
|
||||||
|
|
@ -303,24 +315,24 @@
|
||||||
]}
|
]}
|
||||||
],"filesp": [],
|
],"filesp": [],
|
||||||
"miscsp": [
|
"miscsp": [
|
||||||
{"type":"TYPETABLE","name":"","addr":"(C)","loc":"a,0:0,0:0","constraintRefp":"UNLINKED","emptyQueuep":"UNLINKED","queueIndexp":"UNLINKED","streamp":"UNLINKED","voidp":"(UF)",
|
{"type":"TYPETABLE","name":"","addr":"(C)","loc":"a,0:0,0:0","constraintRefp":"UNLINKED","emptyQueuep":"UNLINKED","queueIndexp":"UNLINKED","streamp":"UNLINKED","voidp":"(YF)",
|
||||||
"typesp": [
|
"typesp": [
|
||||||
{"type":"BASICDTYPE","name":"logic","addr":"(WC)","loc":"d,18:18,18:19","dtypep":"(WC)","keyword":"logic","generic":true,"rangep": []},
|
{"type":"BASICDTYPE","name":"logic","addr":"(YC)","loc":"d,18:18,18:19","dtypep":"(YC)","keyword":"logic","generic":true,"rangep": []},
|
||||||
{"type":"BASICDTYPE","name":"logic","addr":"(CD)","loc":"d,19:34,19:39","dtypep":"(CD)","keyword":"logic","range":"1:0","generic":true,"rangep": []},
|
{"type":"BASICDTYPE","name":"logic","addr":"(ED)","loc":"d,19:34,19:39","dtypep":"(ED)","keyword":"logic","range":"1:0","generic":true,"rangep": []},
|
||||||
{"type":"BASICDTYPE","name":"logic","addr":"(H)","loc":"d,9:11,9:16","dtypep":"(H)","keyword":"logic","range":"15:0","generic":true,"rangep": []},
|
{"type":"BASICDTYPE","name":"logic","addr":"(H)","loc":"d,9:11,9:16","dtypep":"(H)","keyword":"logic","range":"15:0","generic":true,"rangep": []},
|
||||||
{"type":"BASICDTYPE","name":"logic","addr":"(K)","loc":"d,11:12,11:17","dtypep":"(K)","keyword":"logic","range":"6:0","generic":true,"rangep": []},
|
{"type":"BASICDTYPE","name":"logic","addr":"(K)","loc":"d,11:12,11:17","dtypep":"(K)","keyword":"logic","range":"6:0","generic":true,"rangep": []},
|
||||||
{"type":"BASICDTYPE","name":"integer","addr":"(WB)","loc":"d,17:5,17:12","dtypep":"(WB)","keyword":"integer","range":"31:0","generic":true,"signed":true,"rangep": []},
|
{"type":"BASICDTYPE","name":"integer","addr":"(WB)","loc":"d,17:5,17:12","dtypep":"(WB)","keyword":"integer","range":"31:0","generic":true,"signed":true,"rangep": []},
|
||||||
{"type":"BASICDTYPE","name":"logic","addr":"(PD)","loc":"d,19:10,19:11","dtypep":"(PD)","keyword":"logic","range":"2:0","generic":true,"signed":true,"rangep": []},
|
{"type":"BASICDTYPE","name":"logic","addr":"(RD)","loc":"d,19:10,19:11","dtypep":"(RD)","keyword":"logic","range":"2:0","generic":true,"signed":true,"rangep": []},
|
||||||
{"type":"BASICDTYPE","name":"logic","addr":"(LD)","loc":"d,19:11,19:12","dtypep":"(LD)","keyword":"logic","range":"31:0","generic":true,"rangep": []},
|
{"type":"BASICDTYPE","name":"logic","addr":"(ND)","loc":"d,19:11,19:12","dtypep":"(ND)","keyword":"logic","range":"31:0","generic":true,"rangep": []},
|
||||||
{"type":"BASICDTYPE","name":"logic","addr":"(GD)","loc":"d,19:20,19:21","dtypep":"(GD)","keyword":"logic","range":"3:0","generic":true,"signed":true,"rangep": []},
|
{"type":"BASICDTYPE","name":"logic","addr":"(ID)","loc":"d,19:20,19:21","dtypep":"(ID)","keyword":"logic","range":"3:0","generic":true,"signed":true,"rangep": []},
|
||||||
{"type":"BASICDTYPE","name":"logic","addr":"(RC)","loc":"d,18:12,18:13","dtypep":"(RC)","keyword":"logic","range":"31:0","generic":true,"signed":true,"rangep": []},
|
{"type":"BASICDTYPE","name":"logic","addr":"(TC)","loc":"d,18:12,18:13","dtypep":"(TC)","keyword":"logic","range":"31:0","generic":true,"signed":true,"rangep": []},
|
||||||
{"type":"VOIDDTYPE","name":"","addr":"(UF)","loc":"a,0:0,0:0","dtypep":"(UF)","generic":false}
|
{"type":"VOIDDTYPE","name":"","addr":"(YF)","loc":"a,0:0,0:0","dtypep":"(YF)","generic":false}
|
||||||
]},
|
]},
|
||||||
{"type":"CONSTPOOL","name":"","addr":"(D)","loc":"a,0:0,0:0",
|
{"type":"CONSTPOOL","name":"","addr":"(D)","loc":"a,0:0,0:0",
|
||||||
"modulep": [
|
"modulep": [
|
||||||
{"type":"MODULE","name":"@CONST-POOL@","addr":"(VF)","loc":"a,0:0,0:0","isChecker":false,"isProgram":false,"hasGenericIface":false,"origName":"@CONST-POOL@","level":0,"modPublic":false,"inLibrary":false,"dead":false,"recursiveClone":false,"recursive":false,"timeunit":"NONE","inlinesp": [],
|
{"type":"MODULE","name":"@CONST-POOL@","addr":"(ZF)","loc":"a,0:0,0:0","isChecker":false,"isProgram":false,"hasGenericIface":false,"origName":"@CONST-POOL@","level":0,"modPublic":false,"inLibrary":false,"dead":false,"recursiveClone":false,"recursive":false,"timeunit":"NONE","inlinesp": [],
|
||||||
"stmtsp": [
|
"stmtsp": [
|
||||||
{"type":"SCOPE","name":"@CONST-POOL@","addr":"(WF)","loc":"a,0:0,0:0","aboveScopep":"UNLINKED","aboveCellp":"UNLINKED","modp":"(VF)","varsp": [],"blocksp": [],"inlinesp": []}
|
{"type":"SCOPE","name":"@CONST-POOL@","addr":"(AG)","loc":"a,0:0,0:0","aboveScopep":"UNLINKED","aboveCellp":"UNLINKED","modp":"(ZF)","varsp": [],"blocksp": [],"inlinesp": []}
|
||||||
]}
|
]}
|
||||||
]}
|
]}
|
||||||
]}
|
]}
|
||||||
|
|
|
||||||
|
|
@ -14,8 +14,7 @@ test.scenarios('simulator')
|
||||||
test.compile(verilator_flags2=["--stats"])
|
test.compile(verilator_flags2=["--stats"])
|
||||||
|
|
||||||
if test.vlt_all:
|
if test.vlt_all:
|
||||||
test.file_grep(test.stats, r'Optimizations, Lifetime assign deletions\s+(\d+)', 4)
|
test.file_grep(test.stats, r'Optimizations, Lifetime assign deletions\s+(\d+)', 5)
|
||||||
test.file_grep(test.stats, r'Optimizations, Lifetime creset deletions\s+(\d+)', 1)
|
|
||||||
test.file_grep(test.stats, r'Optimizations, Lifetime constant prop\s+(\d+)', 5)
|
test.file_grep(test.stats, r'Optimizations, Lifetime constant prop\s+(\d+)', 5)
|
||||||
test.file_grep(test.stats, r'Optimizations, Lifetime postassign deletions\s+(\d+)', 1)
|
test.file_grep(test.stats, r'Optimizations, Lifetime postassign deletions\s+(\d+)', 1)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue