Internals: Remove dead code, fix or sign off coverage

Remove/fix/signoff uncontroversial code coverage holes. Also added a
couple TODOs that should be investigated at some point
This commit is contained in:
Geza Lore 2025-10-03 11:49:13 +01:00
parent 1a8f9f0483
commit 838b8a2bec
47 changed files with 267 additions and 731 deletions

View File

@ -157,12 +157,10 @@ public:
typename std::enable_if<std::is_pointer<T>::value, T>::type to() const VL_MT_SAFE {
return reinterpret_cast<T>(m_u.up);
}
WidthVP* c() const { return to<WidthVP*>(); }
VSymEnt* toSymEnt() const { return to<VSymEnt*>(); }
AstNode* toNodep() const VL_MT_SAFE { return to<AstNode*>(); }
V3GraphVertex* toGraphVertex() const { return to<V3GraphVertex*>(); }
int toInt() const { return m_u.ui; }
static VNUser fromInt(int i) { return VNUser{i}; }
};
//######################################################################
@ -358,7 +356,6 @@ public:
UASSERT_STATIC(!m_backp, "Active linker must be relink()ed before destruction"););
}
inline void relink(AstNode* newp);
AstNode* oldp() const { return m_oldp; }
void dump(std::ostream& str = std::cout) const;
};
inline std::ostream& operator<<(std::ostream& os, const VNRelinker& rhs) {
@ -967,21 +964,21 @@ protected:
// For internal use only.
template <typename T_TargetType, typename T_DeclType>
constexpr static bool uselessCast() VL_PURE {
constexpr static bool uselessCast() VL_PURE { // LCOV_EXCL_START
using NonRef = typename std::remove_reference<T_DeclType>::type;
using NonPtr = typename std::remove_pointer<NonRef>::type;
using NonCV = typename std::remove_cv<NonPtr>::type;
return std::is_base_of<T_TargetType, NonCV>::value;
}
} // LCOV_EXCL_STOP
// For internal use only.
template <typename T_TargetType, typename T_DeclType>
constexpr static bool impossibleCast() VL_PURE {
constexpr static bool impossibleCast() VL_PURE { // LCOV_EXCL_START
using NonRef = typename std::remove_reference<T_DeclType>::type;
using NonPtr = typename std::remove_pointer<NonRef>::type;
using NonCV = typename std::remove_cv<NonPtr>::type;
return !std::is_base_of<NonCV, T_TargetType>::value;
}
} // LCOV_EXCL_STOP
public:
// For use via the VN_IS macro only, or in templated code

View File

@ -1439,38 +1439,6 @@ inline std::ostream& operator<<(std::ostream& os, const VNumRange& rhs) {
// ######################################################################
class VParseRefExp final {
public:
enum en : uint8_t {
PX_NONE, // Used in V3LinkParse only
PX_ROOT,
PX_TEXT // Unknown ID component
};
enum en m_e;
VParseRefExp()
: m_e{PX_NONE} {}
// cppcheck-suppress noExplicitConstructor
constexpr VParseRefExp(en _e)
: m_e{_e} {}
explicit VParseRefExp(int _e)
: m_e(static_cast<en>(_e)) {} // Need () or GCC 4.8 false warning
constexpr operator en() const { return m_e; }
const char* ascii() const {
static const char* const names[] = {"", "$root", "TEXT", "PREDOT"};
return names[m_e];
}
};
constexpr bool operator==(const VParseRefExp& lhs, const VParseRefExp& rhs) {
return lhs.m_e == rhs.m_e;
}
constexpr bool operator==(const VParseRefExp& lhs, VParseRefExp::en rhs) { return lhs.m_e == rhs; }
constexpr bool operator==(VParseRefExp::en lhs, const VParseRefExp& rhs) { return lhs == rhs.m_e; }
inline std::ostream& operator<<(std::ostream& os, const VParseRefExp& rhs) {
return os << rhs.ascii();
}
// ######################################################################
class VPragmaType final {
public:
enum en : uint8_t {

View File

@ -102,13 +102,6 @@ int AstRange::rightConst() const VL_MT_STABLE {
return (constp ? constp->toSInt() : 0);
}
AstPin::AstPin(FileLine* fl, int pinNum, AstVarRef* varname, AstNode* exprp)
: ASTGEN_SUPER_Pin(fl)
, m_pinNum{pinNum}
, m_name{varname->name()} {
this->exprp(exprp);
}
AstPackArrayDType::AstPackArrayDType(FileLine* fl, VFlagChildDType, AstNodeDType* dtp,
AstRange* rangep)
: ASTGEN_SUPER_PackArrayDType(fl) {

File diff suppressed because it is too large Load Diff

View File

@ -322,7 +322,6 @@ public:
void level(int value) { m_level = value; }
int level() const VL_MT_SAFE { return m_level; }
string libname() const { return m_libname; }
string prettyLibnameQ() const { return "'" + prettyName(libname()) + "'"; }
bool isTop() const VL_MT_SAFE { return level() == 1; }
bool modPublic() const { return m_modPublic; }
void modPublic(bool flag) { m_modPublic = flag; }
@ -409,13 +408,12 @@ public:
void text(const string& value) { m_text = value; }
};
class AstNodeSimpleText VL_NOT_FINAL : public AstNodeText {
bool m_tracking; // When emit, it's ok to parse the string to do indentation
const bool m_tracking; // When emit, it's ok to parse the string to do indentation
public:
AstNodeSimpleText(VNType t, FileLine* fl, const string& textp, bool tracking = false)
: AstNodeText{t, fl, textp}
, m_tracking{tracking} {}
ASTGEN_MEMBERS_AstNodeSimpleText;
void tracking(bool flag) { m_tracking = flag; }
bool tracking() const { return m_tracking; }
};
@ -725,14 +723,11 @@ class AstCellInline final : public AstNode {
// @astgen ptr := m_scopep : Optional[AstScope] // The scope that the cell is inlined into
string m_name; // Cell name, possibly {a}__DOT__{b}...
const string m_origModName; // Original name of module, ignoring name() changes, for LinkDot
VTimescale m_timeunit; // Parent module time unit
public:
AstCellInline(FileLine* fl, const string& name, const string& origModName,
const VTimescale& timeunit)
AstCellInline(FileLine* fl, const string& name, const string& origModName)
: ASTGEN_SUPER_CellInline(fl)
, m_name{name}
, m_origModName{origModName}
, m_timeunit{timeunit} {}
, m_origModName{origModName} {}
ASTGEN_MEMBERS_AstCellInline;
void dump(std::ostream& str) const override;
void dumpJson(std::ostream& str) const override;
@ -741,8 +736,6 @@ public:
bool maybePointedTo() const override VL_MT_SAFE { return true; }
string origModName() const { return m_origModName; } // * = modp()->origName() before inlining
void name(const string& name) override { m_name = name; }
void timeunit(const VTimescale& flag) { m_timeunit = flag; }
VTimescale timeunit() const { return m_timeunit; }
};
class AstCellInlineScope final : public AstNode {
// A particular scoped usage of a Cell Inline
@ -770,7 +763,6 @@ public:
string origModName() const {
return m_cellp->origModName();
} // * = modp()->origName() before inlining
void scopep(AstScope* nodep) { m_scopep = nodep; }
};
class AstClassExtends final : public AstNode {
// class extends class name, or class implements class name
@ -943,7 +935,7 @@ public:
explicit AstConstPool(FileLine* fl);
ASTGEN_MEMBERS_AstConstPool;
bool maybePointedTo() const override VL_MT_SAFE { return true; }
void cloneRelink() override { UASSERT(!clonep(), "Not cloneable"); }
void cloneRelink() override { V3ERROR_NA; } // Not cloneable
AstModule* modp() const { return m_modp; }
// Find a table (unpacked array) within the constant pool which is initialized with the
@ -1108,7 +1100,7 @@ public:
explicit AstExecGraph(FileLine* fl, const string& name) VL_MT_DISABLED;
~AstExecGraph() override;
ASTGEN_MEMBERS_AstExecGraph;
void cloneRelink() override { UASSERT(!clonep(), "Not cloneable"); }
void cloneRelink() override { V3ERROR_NA; } // Not cloneable
const char* broken() const override {
BROKEN_RTN(!m_depGraphp);
return nullptr;
@ -1256,7 +1248,7 @@ class AstModportVarRef final : public AstNode {
//
// @astgen ptr := m_varp : Optional[AstVar] // Link to the actual Var
string m_name; // Name of the variable referenced
VDirection m_direction; // Direction of the variable (in/out)
const VDirection m_direction; // Direction of the variable (in/out)
public:
AstModportVarRef(FileLine* fl, const string& name, VDirection::en direction)
: ASTGEN_SUPER_ModportVarRef(fl)
@ -1266,7 +1258,6 @@ public:
void dump(std::ostream& str) const override;
void dumpJson(std::ostream& str) const override;
string name() const override VL_MT_STABLE { return m_name; }
void direction(const VDirection& flag) { m_direction = flag; }
VDirection direction() const { return m_direction; }
AstVar* varp() const VL_MT_STABLE { return m_varp; } // [After Link] Pointer to variable
void varp(AstVar* varp) { m_varp = varp; }
@ -1297,7 +1288,7 @@ public:
AstNetlist();
ASTGEN_MEMBERS_AstNetlist;
void deleteContents();
void cloneRelink() override { UASSERT(!clonep(), "Not cloneable"); }
void cloneRelink() override { V3ERROR_NA; } // Not cloneable
string name() const override VL_MT_STABLE { return "$root"; }
void dump(std::ostream& str) const override;
void dumpJson(std::ostream& str) const override;
@ -1343,12 +1334,6 @@ class AstPackageExport final : public AstNode {
string m_pkgName; // Module the cell instances
public:
AstPackageExport(FileLine* fl, AstPackage* packagep, const string& name)
: ASTGEN_SUPER_PackageExport(fl)
, m_name{name}
, m_packagep{packagep} {
pkgNameFrom();
}
AstPackageExport(FileLine* fl, const string& pkgName, const string& name)
: ASTGEN_SUPER_PackageExport(fl)
, m_name{name}
@ -1362,9 +1347,6 @@ public:
string prettyPkgNameQ() const { return "'" + prettyName(pkgName()) + "'"; }
AstPackage* packagep() const { return m_packagep; }
void packagep(AstPackage* nodep) { m_packagep = nodep; }
private:
void pkgNameFrom();
};
class AstPackageExportStarStar final : public AstNode {
// A package export *::* declaration
@ -1424,7 +1406,6 @@ public:
, m_name{name} {
this->exprp(exprp);
}
inline AstPin(FileLine* fl, int pinNum, AstVarRef* varname, AstNode* exprp);
ASTGEN_MEMBERS_AstPin;
void cloneRelink() override {} // TODO V3Param shouldn't require avoiding cloneRelinkGen
void dump(std::ostream& str) const override;
@ -1698,7 +1679,7 @@ public:
explicit AstTypeTable(FileLine* fl);
ASTGEN_MEMBERS_AstTypeTable;
bool maybePointedTo() const override VL_MT_SAFE { return true; }
void cloneRelink() override { UASSERT(!clonep(), "Not cloneable"); }
void cloneRelink() override { V3ERROR_NA; } // Not cloneable
AstBasicDType* findBasicDType(FileLine* fl, VBasicDTypeKwd kwd);
AstBasicDType* findLogicBitDType(FileLine* fl, VBasicDTypeKwd kwd, int width, int widthMin,
VSigning numeric);
@ -1863,7 +1844,6 @@ class AstVar final : public AstNode {
bool m_primaryIO : 1; // In/out to top level (or directly assigned from same)
bool m_primaryClock : 1; // In/out to top level and is, or combinationally drives a SenItem
bool m_sc : 1; // SystemC variable
bool m_scClocked : 1; // SystemC sc_clk<> needed
bool m_scSensitive : 1; // SystemC sensitive() needed
bool m_sigPublic : 1; // User C code accesses this signal or is top signal
bool m_sigModPublic : 1; // User C code accesses this signal and module
@ -1913,7 +1893,6 @@ class AstVar final : public AstNode {
m_primaryIO = false;
m_primaryClock = false;
m_sc = false;
m_scClocked = false;
m_scSensitive = false;
m_usedParam = false;
m_usedLoopIdx = false;
@ -2052,7 +2031,6 @@ public:
void declTyped(bool flag) { m_declTyped = flag; }
void sensIfacep(AstIface* nodep) { m_sensIfacep = nodep; }
void attrFileDescr(bool flag) { m_fileDescr = flag; }
void attrScClocked(bool flag) { m_scClocked = flag; }
void attrScBv(bool flag) { m_attrScBv = flag; }
void attrIsolateAssign(bool flag) { m_attrIsolateAssign = flag; }
void attrSFormat(bool flag) { m_attrSFormat = flag; }
@ -2195,7 +2173,6 @@ public:
bool isPulldown() const { return m_isPulldown; }
bool attrScBv() const { return m_attrScBv; }
bool attrFileDescr() const { return m_fileDescr; }
bool attrScClocked() const { return m_scClocked; }
bool attrSFormat() const { return m_attrSFormat; }
bool attrSplitVar() const { return m_attrSplitVar; }
bool attrIsolateAssign() const { return m_attrIsolateAssign; }

View File

@ -254,9 +254,7 @@ public:
: ASTGEN_SUPER_Break(fl) {}
ASTGEN_MEMBERS_AstBreak;
string verilogKwd() const override { return "break"; }
bool isBrancher() const override {
return true; // SPECIAL: We don't process code after breaks
}
bool isBrancher() const override { V3ERROR_NA_RETURN(true); } // Node removed early
};
class AstCReset final : public AstNodeStmt {
// Reset variable at startup
@ -399,9 +397,7 @@ public:
: ASTGEN_SUPER_Continue(fl) {}
ASTGEN_MEMBERS_AstContinue;
string verilogKwd() const override { return "continue"; }
bool isBrancher() const override {
return true; // SPECIAL: We don't process code after breaks
}
bool isBrancher() const override { V3ERROR_NA_RETURN(true); } // Node removed early
};
class AstCoverInc final : public AstNodeStmt {
// Coverage analysis point; increment coverage count
@ -485,9 +481,7 @@ public:
void dump(std::ostream& str) const override;
void targetp(AstNode* nodep) { m_targetp = nodep; }
AstNode* targetp() const { return m_targetp; }
bool isBrancher() const override {
return true; // SPECIAL: We don't process code after breaks
}
bool isBrancher() const override { V3ERROR_NA_RETURN(true); } // Node removed early
};
class AstDisableFork final : public AstNodeStmt {
// A "disable fork" statement
@ -820,9 +814,7 @@ public:
}
ASTGEN_MEMBERS_AstReturn;
string verilogKwd() const override { return "return"; }
bool isBrancher() const override {
return true; // SPECIAL: We don't process code after breaks
}
bool isBrancher() const override { V3ERROR_NA_RETURN(true); } // Node removed early
};
class AstSFormat final : public AstNodeStmt {
// Parents: statement container

View File

@ -513,7 +513,6 @@ void AstVar::combineType(const AstVar* otherp) {
if (otherp->isSigModPublic()) sigModPublic(true);
if (otherp->isSigUserRdPublic()) sigUserRdPublic(true);
if (otherp->isSigUserRWPublic()) sigUserRWPublic(true);
if (otherp->attrScClocked()) attrScClocked(true);
if (otherp->varType() == VVarType::PORT) {
varType(otherp->varType());
direction(otherp->direction());
@ -2203,8 +2202,6 @@ void AstPrintTimeScale::dumpJson(std::ostream& str) const {
dumpJsonGen(str);
}
void AstNodeTermop::dump(std::ostream& str) const { this->AstNodeExpr::dump(str); }
void AstNodeTermop::dumpJson(std::ostream& str) const { dumpJsonGen(str); }
void AstTime::dump(std::ostream& str) const {
this->AstNodeTermop::dump(str);
str << " " << timeunit();
@ -2479,9 +2476,6 @@ void AstPackageExport::dump(std::ostream& str) const {
}
}
void AstPackageExport::dumpJson(std::ostream& str) const { dumpJsonGen(str); }
void AstPackageExport::pkgNameFrom() {
if (packagep()) m_pkgName = packagep()->name();
}
void AstPackageImport::dump(std::ostream& str) const {
this->AstNode::dump(str);
if (packagep()) {
@ -2834,14 +2828,6 @@ void AstStrengthSpec::dumpJson(std::ostream& str) const {
dumpJsonStr(str, "strength1", m_s1.ascii());
dumpJsonGen(str);
}
void AstParseRef::dump(std::ostream& str) const {
this->AstNode::dump(str);
str << " [" << expect().ascii() << "]";
}
void AstParseRef::dumpJson(std::ostream& str) const {
dumpJsonStr(str, "expect", expect().ascii());
dumpJsonGen(str);
}
void AstClassOrPackageRef::dump(std::ostream& str) const {
this->AstNode::dump(str);
if (classOrPackageNodep()) str << " cpkg=" << nodeAddr(classOrPackageNodep());

View File

@ -91,7 +91,7 @@ class BeginVisitor final : public VNVisitor {
// Create CellInline for dotted var resolution
if (!m_ftaskp) {
AstCellInline* const inlinep
= new AstCellInline{flp, m_unnamedScope, blockName, m_modp->timeunit()};
= new AstCellInline{flp, m_unnamedScope, blockName};
m_modp->addInlinesp(inlinep); // Must be parsed before any AstCells
}
}
@ -407,7 +407,7 @@ static AstNode* createForeachLoop(AstNodeForeach* nodep, AstNode* bodysp, AstVar
condp = new AstGteS{fl, varRefp, rightp};
inc = false;
break;
default: UASSERT_OBJ(0, varp, "Missing comparison handling"); break;
default: varp->v3fatalSrc("Missing comparison handling"); break;
}
AstNodeExpr* incp;
if (inc)

View File

@ -383,7 +383,7 @@ public:
// allow old rules to still match using a final '*'
string newMatch = match;
if (newMatch.empty() || newMatch.back() != '*') newMatch += '*';
m_waivers.emplace_back(WaiverSetting{code, contents, newMatch});
m_waivers.emplace_back(code, contents, newMatch);
}
void applyBlock(AstGenBlock* nodep) {

View File

@ -296,7 +296,7 @@ static void dumpDotVertex(std::ostream& os, const DfgVertex& vtx) {
} else if (varVtxp->is<DfgVarArray>()) {
os << ", shape=box3d";
} else {
varVtxp->v3fatalSrc("Unhandled DfgVertexVar sub-type"); // LCOV_EXCL_LINE
varVtxp->v3fatalSrc("Unhandled DfgVertexVar sub-type");
}
// Color
if (varp->direction() == VDirection::INPUT) {

View File

@ -319,6 +319,7 @@ public:
inline bool isCheaperThanLoad() const;
// Methods that allow DfgVertex to participate in error reporting/messaging
// LCOV_EXCL_START
void v3errorEnd(std::ostringstream& str) const VL_RELEASE(V3Error::s().m_mutex) {
m_filelinep->v3errorEnd(str);
}
@ -332,6 +333,7 @@ public:
string warnContextSecondary() const { return fileline()->warnContextSecondary(); }
string warnMore() const VL_REQUIRES(V3Error::s().m_mutex) { return fileline()->warnMore(); }
string warnOther() const VL_REQUIRES(V3Error::s().m_mutex) { return fileline()->warnOther(); }
// LCOV_EXCL_STOP
private:
// For internal use only.

View File

@ -1121,7 +1121,7 @@ class FixUpIndependentRanges final {
if (const DfgVertexVar* const varp = vtx.cast<DfgVertexVar>()) {
return varp->nodep()->name();
}
vtx.v3fatalSrc("Unhandled node type"); // LCOV_EXCL_LINE
vtx.v3fatalSrc("Unhandled node type");
}
// Trace drivers of independent bits of 'vtxp' in the range '[hi:lo]'

View File

@ -46,13 +46,15 @@ class V3DfgCse final {
static V3Hash vertexSelfHash(const DfgVertex& vtx) {
switch (vtx.type()) {
// Unhandled vertices
case VDfgType::Logic:
case VDfgType::Unresolved: vtx.v3fatalSrc("Should not have reached CSE");
case VDfgType::Logic: // LCOV_EXCL_LINE
case VDfgType::Unresolved: // LCOV_EXCL_STOP
vtx.v3fatalSrc("Should not have reached CSE");
// Special vertices
case VDfgType::Const:
case VDfgType::Const: // LCOV_EXCL_START
case VDfgType::VarArray:
case VDfgType::VarPacked: vtx.v3fatalSrc("Hash should have been pre-computed");
case VDfgType::VarPacked: // LCOV_EXCL_STOP
vtx.v3fatalSrc("Hash should have been pre-computed");
// Vertices with internal information
case VDfgType::Sel: return V3Hash{vtx.as<DfgSel>()->lsb()};
@ -155,8 +157,9 @@ class V3DfgCse final {
// by 'vertexEquivalent'.
switch (a.type()) {
// Unhandled vertices
case VDfgType::Logic:
case VDfgType::Unresolved: a.v3fatalSrc("Should not have reached CSE");
case VDfgType::Logic: // LCOV_EXCL_START
case VDfgType::Unresolved: // LCOV_EXCL_STOP
a.v3fatalSrc("Should not have reached CSE");
// Special vertices
case VDfgType::Const: return a.as<DfgConst>()->num().isCaseEq(b.as<DfgConst>()->num());

View File

@ -168,9 +168,7 @@ public:
UASSERT(lo + size - 1 < dtype.size(), "Out of range");
return DfgDataType::array(dtype.elemDtype(), size);
}
case Kind::Null: {
UASSERT(false, "Type cannot be selected from");
}
case Kind::Null: v3fatal("Type cannot be selected from"); // LCOV_EXCL_LINE
}
VL_UNREACHABLE;
}

View File

@ -170,7 +170,7 @@ class AstToDfgConverter final : public VNVisitor {
} else if (newp->is<DfgVarArray>()) {
newp->srcp(make<DfgSpliceArray>(newp->fileline(), newp->dtype()));
} else {
nodep->v3fatalSrc("Unhandled DfgVertexVar sub-type"); // LCOV_EXCL_LINE
nodep->v3fatalSrc("Unhandled DfgVertexVar sub-type");
}
// Use new temporary
@ -245,7 +245,7 @@ class AstToDfgConverter final : public VNVisitor {
DfgSpliceArray* const newp = make<DfgSpliceArray>(flp, dtype);
splicep->addDriver(newp, index, flp);
} else {
nodep->v3fatalSrc("Unhandled data type kind"); // LCOV_EXCL_LINE
nodep->v3fatalSrc("Unhandled data type kind");
}
}
@ -345,7 +345,7 @@ class AstToDfgConverter final : public VNVisitor {
sap->addDriver(item.m_rhsp, item.m_idx, flp);
}
} else {
item.m_lhsp->v3fatalSrc("Unhandled DfgVertexSplice sub-type"); // LCOV_EXCL_LINE
item.m_lhsp->v3fatalSrc("Unhandled DfgVertexSplice sub-type");
}
}
@ -894,7 +894,7 @@ class AstToDfgSynthesize final {
} else if (var.is<DfgVarArray>()) {
splicep = make<DfgSpliceArray>(var.fileline(), var.dtype());
} else {
var.v3fatalSrc("Unhandled DfgVertexVar sub-type"); // LCOV_EXCL_LINE
var.v3fatalSrc("Unhandled DfgVertexVar sub-type");
}
for (const Driver& d : newDrivers) splicep->addDriver(d.m_vtxp, d.m_lo, d.m_flp);
return splicep;

View File

@ -193,21 +193,17 @@ void EmitCBaseVisitorConst::emitVarDecl(const AstVar* nodep, bool asRef) {
if (nodep->isIO() && nodep->isSc()) {
UASSERT_OBJ(basicp, nodep, "Unimplemented: Outputting this data type");
if (nodep->attrScClocked() && nodep->isReadOnly()) {
putns(nodep, "sc_core::sc_in_clk ");
if (nodep->isInout()) {
putns(nodep, "sc_core::sc_inout<");
} else if (nodep->isWritable()) {
putns(nodep, "sc_core::sc_out<");
} else if (nodep->isNonOutput()) {
putns(nodep, "sc_core::sc_in<");
} else {
if (nodep->isInout()) {
putns(nodep, "sc_core::sc_inout<");
} else if (nodep->isWritable()) {
putns(nodep, "sc_core::sc_out<");
} else if (nodep->isNonOutput()) {
putns(nodep, "sc_core::sc_in<");
} else {
nodep->v3fatalSrc("Unknown type");
}
puts(nodep->scType());
puts("> ");
nodep->v3fatalSrc("Unknown type");
}
puts(nodep->scType());
puts("> ");
if (asRef) {
if (refNeedParens) putns(nodep, "(");
putns(nodep, "&");

View File

@ -247,12 +247,11 @@ void EmitCFunc::displayArg(AstNode* dispp, AstNode** elistp, bool isScan, const
AstNode* argp = nullptr;
if (!ignore) {
argp = *elistp;
if (VL_UNCOVERABLE(!argp)) {
if (VL_UNCOVERABLE(!argp)) { // LCOV_EXCL_START
// expectDisplay() checks this first, so internal error if found here
dispp->v3error(
"Internal: Missing arguments for $display-like format"); // LCOV_EXCL_LINE
return; // LCOV_EXCL_LINE
}
dispp->v3error("Internal: Missing arguments for $display-like format");
return;
} // LCOV_EXCL_STOP
// Prep for next parameter
*elistp = (*elistp)->nextp();
if (argp->widthMin() > VL_VALUE_STRING_MAX_WIDTH) {

View File

@ -26,6 +26,8 @@
VL_DEFINE_DEBUG_FUNCTIONS;
// TODO: this file is completely uncovered by tests
// ######################################################################
// Emit statements

View File

@ -367,10 +367,6 @@ class EmitCSyms final : EmitCBaseVisitorConst {
if ((nodep->isSigUserRdPublic() || nodep->isSigUserRWPublic()) && !m_cfuncp)
m_modVars.emplace_back(m_modp, nodep);
}
void visit(AstVarScope* nodep) override {
iterateChildrenConst(nodep);
m_statVarScopeBytes += nodep->varp()->dtypep()->widthTotalBytes();
}
void visit(AstNodeCoverDecl* nodep) override {
// Assign numbers to all bins, so we know how big of an array to use
if (!nodep->dataDeclNullp()) { // else duplicate we don't need code for
@ -830,6 +826,7 @@ void EmitCSyms::emitSymImp() {
if (v3Global.opt.debugStackCheck()) stackSize += 1024 * 1024 * 1024;
V3Stats::addStat("Size prediction, Stack (bytes)", stackSize);
puts("Verilated::stackCheck(" + cvtToStr(stackSize) + ");\n");
// TODO: 'm_statVarScopeBytes' is always 0, AstVarScope doesn't reach here (V3Descope)
V3Stats::addStat("Size prediction, Heap, from Var Scopes (bytes)", m_statVarScopeBytes);
V3Stats::addStat(V3Stats::STAT_MODEL_SIZE, stackSize + m_statVarScopeBytes);
}

View File

@ -104,7 +104,7 @@ void V3ErrorGuarded::vlAbortOrExit() VL_REQUIRES(m_mutex) {
VL_GCOV_DUMP();
// Exit without triggering any global destructors. Used to prevent
// detached V3ThreadPool jobs accessing destroyed static objects.
::_exit(1);
::_exit(1); // LCOV_EXCL_LINE
}
v3Global.vlExit(1);
#else
@ -375,7 +375,7 @@ void V3Error::vlAbort() {
v3Global.shutdown();
#endif
VL_GCOV_DUMP();
std::abort();
std::abort(); // LCOV_EXCL_LINE
}
std::ostringstream& V3Error::v3errorPrep(V3ErrorCode code) VL_ACQUIRE(s().m_mutex) {
V3Error::s().m_mutex.lock();

View File

@ -133,8 +133,6 @@ public:
V3OutFormatter(Language lang);
virtual ~V3OutFormatter() = default;
// ACCESSORS
int column() const { return m_column; }
int blockIndent() const { return m_blockIndent; }
void blockIndent(int flag) { m_blockIndent = flag; }
// METHODS
void printf(const char* fmt...) VL_ATTR_PRINTF(2);

View File

@ -105,7 +105,7 @@ template V3GraphEdge* V3GraphVertex::findConnectingEdgep<GraphWay::FORWARD>(V3Gr
template V3GraphEdge* V3GraphVertex::findConnectingEdgep<GraphWay::REVERSE>(V3GraphVertex*);
// cppcheck-has-bug-suppress constParameter
void V3GraphVertex::v3errorEnd(const std::ostringstream& str) const
void V3GraphVertex::v3errorEnd(const std::ostringstream& str) const // LCOV_EXCL_START
VL_RELEASE(V3Error::s().m_mutex) {
std::ostringstream nsstr;
nsstr << str.str();
@ -119,9 +119,9 @@ void V3GraphVertex::v3errorEnd(const std::ostringstream& str) const
void V3GraphVertex::v3errorEndFatal(const std::ostringstream& str) const
VL_RELEASE(V3Error::s().m_mutex) {
v3errorEnd(str);
assert(0); // LCOV_EXCL_LINE
assert(0);
VL_UNREACHABLE;
}
} // LCOV_EXCL_STOP
std::ostream& operator<<(std::ostream& os, V3GraphVertex* vertexp) {
os << " VERTEX=" << vertexp->name();

View File

@ -359,8 +359,7 @@ class HasherVisitor final : public VNVisitorConst {
m_hash += hashNodeAndIterate(nodep, HASH_DTYPE, HASH_CHILDREN, []() {});
}
void visit(AstParseRef* nodep) override {
m_hash += hashNodeAndIterate(nodep, HASH_DTYPE, HASH_CHILDREN, [this, nodep]() {
m_hash += nodep->expect();
m_hash += hashNodeAndIterate(nodep, HASH_DTYPE, HASH_CHILDREN, [this, nodep]() { //
m_hash += nodep->name();
});
}

View File

@ -51,8 +51,6 @@ public:
const GParams& gparams() const { return m_params; };
const GTypeParams& gTypeParams() const { return m_typeParams; };
GParams& gparams() { return m_params; };
GTypeParams& gTypeParams() { return m_typeParams; };
void swap(V3HierBlockParams& other) {
m_params.swap(other.m_params);

View File

@ -520,7 +520,7 @@ void connectPort(AstNodeModule* modp, AstVar* nodep, AstNodeExpr* pinExprp) {
} else if (nodep->direction() == VDirection::OUTPUT) {
modp->addStmtsp(new AstAssignW{flp, pinRef(VAccess::WRITE), portRef(VAccess::READ)});
} else {
pinExprp->v3fatalSrc("V3Tristate left INOUT port"); // LCOV_EXCL_LINE
pinExprp->v3fatalSrc("V3Tristate left INOUT port");
}
}
@ -555,8 +555,8 @@ void inlineCell(AstNodeModule* modp, AstCell* cellp, bool last) {
}
// Create data for resolving hierarchical references later.
modp->addInlinesp(new AstCellInline{cellp->fileline(), cellp->name(),
cellp->modp()->origName(), cellp->modp()->timeunit()});
modp->addInlinesp(
new AstCellInline{cellp->fileline(), cellp->name(), cellp->modp()->origName()});
// Connect the pins on the instance
for (AstPin* pinp = cellp->pinsp(); pinp; pinp = VN_AS(pinp->nextp(), Pin)) {

View File

@ -470,10 +470,10 @@ class LinkCellsVisitor final : public VNVisitor {
if (pinStar) {
UINFO(9, " need .* PORT " << portp);
// Create any not already connected
AstPin* const newp = new AstPin{
nodep->fileline(), 0, portp->name(),
new AstParseRef{nodep->fileline(), VParseRefExp::PX_TEXT,
portp->name(), nullptr, nullptr}};
AstPin* const newp
= new AstPin{nodep->fileline(), 0, portp->name(),
new AstParseRef{nodep->fileline(), portp->name(),
nullptr, nullptr}};
newp->svDotName(true);
newp->svImplicit(true);
nodep->addPinsp(newp);

View File

@ -541,9 +541,9 @@ public:
continue;
} else if (ifacerefp->ifaceViaCellp()->dead()
|| !existsNodeSym(ifacerefp->ifaceViaCellp())) {
UASSERT_OBJ(false, ifacerefp->ifaceViaCellp(),
"Interface referenced by virtual iface is dead. "
"Dead interfaces have required linking steps skipped");
ifacerefp->ifaceViaCellp()->v3fatalSrc(
"Interface referenced by virtual iface is dead. "
"Dead interfaces have required linking steps skipped");
}
VSymEnt* const ifaceSymp = getNodeSym(ifacerefp->ifaceViaCellp());
VSymEnt* ifOrPortSymp = ifaceSymp;
@ -2664,8 +2664,7 @@ class LinkDotResolveVisitor final : public VNVisitor {
if (classExtendsp->argsp()) pinsp = classExtendsp->argsp()->cloneTree(true);
AstNew* const newExprp = new AstNew{fl, pinsp};
newExprp->isImplicit(true);
AstDot* const superNewp
= new AstDot{fl, false, new AstParseRef{fl, VParseRefExp::PX_ROOT, "super"}, newExprp};
AstDot* const superNewp = new AstDot{fl, false, new AstParseRef{fl, "super"}, newExprp};
AstNodeStmt* const superNewStmtp = superNewp->makeStmt();
for (AstNode* stmtp = nodep->stmtsp(); stmtp; stmtp = stmtp->nextp()) {
// super.new shall be the first statement (IEEE 1800-2023 8.15)
@ -3510,7 +3509,7 @@ class LinkDotResolveVisitor final : public VNVisitor {
allowVar = true;
} else {
UINFO(1, "ds=" << m_ds.ascii());
nodep->v3fatalSrc("Unhandled VParseRefExp");
nodep->v3fatalSrc("Unhandled DotPosition");
}
// Lookup
VSymEnt* foundp;

View File

@ -397,9 +397,9 @@ class LinkParseVisitor final : public VNVisitor {
newfl->warnOff(V3ErrorCode::E_CONSTWRITTEN, true);
// Create a ParseRef to the wire. We cannot use the var as it may be deleted if
// it's a port (see t_var_set_link.v)
AstAssign* const assp = new AstAssign{
newfl, new AstParseRef{newfl, VParseRefExp::PX_TEXT, nodep->name()},
VN_AS(nodep->valuep()->unlinkFrBack(), NodeExpr)};
AstAssign* const assp
= new AstAssign{newfl, new AstParseRef{newfl, nodep->name()},
VN_AS(nodep->valuep()->unlinkFrBack(), NodeExpr)};
if (nodep->lifetime().isAutomatic()) {
nodep->addNextHere(new AstInitialAutomatic{newfl, assp});
} else {

View File

@ -54,7 +54,7 @@ class V3MutexConfig final {
public:
static V3MutexConfig& s() VL_MT_SAFE {
static V3MutexConfig s;
static V3MutexConfig s{};
return s;
}
@ -67,7 +67,7 @@ public:
// requires <iostream>
// avoided to reduce compile time
// std::cerr << "%Error: V3Mutex already configured." << std::endl;
std::abort();
std::abort(); // LCOV_EXCL_LINE
}
}
bool lockConfig() VL_MT_SAFE { return m_lockConfig; }

View File

@ -873,9 +873,7 @@ string V3Number::displayed(FileLine* fl, const string& vformat) const VL_MT_STAB
str = displayPad(fmtsizen, ' ', left, toString());
return str;
}
default:
fl->v3fatalSrc("Unknown $display-like format code for number: %" << pos[0]);
return "ERR";
default: fl->v3fatalSrc("Unknown $display-like format code for number: %" << pos[0]);
}
}

View File

@ -69,9 +69,9 @@ private:
// CONSTANTS
// At least 2 words (64 fourstate bits). 4 words (128 fourstate bits) in most cases,
// i.e. when std::string has 32 bytes.
static constexpr int INLINE_WORDS = vlstd::max(
static_cast<size_t>(2), vlstd::max(sizeof(std::string) / sizeof(ValueAndX),
sizeof(std::vector<ValueAndX>) / sizeof(ValueAndX)));
static constexpr int INLINE_WORDS = std::max(
static_cast<size_t>(2), std::max(sizeof(std::string) / sizeof(ValueAndX),
sizeof(std::vector<ValueAndX>) / sizeof(ValueAndX)));
// When m_width > MAX_INLINE_WIDTH number is stored in m_dynamicNumber.
// Otherwise number is stored in m_inlineNumber.
static constexpr int MAX_INLINE_WIDTH = INLINE_WORDS * sizeof(ValueAndX) / 2 * 8;

View File

@ -354,7 +354,6 @@ private:
string m_buildDepBin; // main switch: --build-dep-bin {filename}
string m_diagnosticsSarifOutput; // main switch: --diagnostics-sarif-output
string m_exeName; // main switch: -o {name}
string m_flags; // main switch: -f {name}
VFileLibList m_hierParamsFile; // main switch: --hierarchical-params-file
string m_jsonOnlyOutput; // main switch: --json-only-output
string m_jsonOnlyMetaOutput; // main switch: --json-only-meta-output
@ -479,7 +478,6 @@ public:
bool preprocResolve() const { return m_preprocResolve; }
int preprocTokenLimit() const { return m_preprocTokenLimit; }
bool underlineZero() const { return m_underlineZero; }
string flags() const { return m_flags; }
bool systemC() const VL_MT_SAFE { return m_systemC; }
bool savable() const VL_MT_SAFE { return m_savable; }
bool stats() const { return m_stats; }
@ -492,7 +490,6 @@ public:
bool autoflush() const { return m_autoflush; }
bool bboxSys() const { return m_bboxSys; }
bool bboxUnsup() const { return m_bboxUnsup; }
bool binary() const { return m_binary; }
bool build() const { return m_build; }
string buildDepBin() const { return m_buildDepBin; }
void buildDepBin(const string& flag) { m_buildDepBin = flag; }
@ -622,9 +619,6 @@ public:
return trace() && traceEnabledVcd() && (threads() > 1 || hierChild() > 1);
}
bool useFstWriterThread() const { return traceThreads() && traceEnabledFst(); }
unsigned vmTraceThreads() const {
return useTraceParallel() ? threads() : useTraceOffload() ? 1 : 0;
}
int unrollCount() const { return m_unrollCount; }
int unrollCountAdjusted(const VOptionBool& full, bool generate, bool simulate);
int unrollStmts() const { return m_unrollStmts; }

View File

@ -43,15 +43,13 @@ using ExternalDomainsProvider = std::function<void(const AstVarScope*, std::vect
// Map from Trigger Sensitivity tree to original Sensitivity tree
using TrigToSenMap = std::unordered_map<const AstSenTree*, const AstSenTree*>;
AstCFunc* order(
AstNetlist* netlistp, //
const std::vector<V3Sched::LogicByScope*>& logic, //
const TrigToSenMap& trigToSen, //
const string& tag, //
bool parallel, //
bool slow, //
const ExternalDomainsProvider& externalDomains
= [](const AstVarScope*, std::vector<AstSenTree*>&) {}) VL_MT_DISABLED;
AstCFunc* order(AstNetlist* netlistp, //
const std::vector<V3Sched::LogicByScope*>& logic, //
const TrigToSenMap& trigToSen, //
const string& tag, //
bool parallel, //
bool slow, //
const ExternalDomainsProvider& externalDomains) VL_MT_DISABLED;
void selfTestParallel();

View File

@ -337,11 +337,11 @@ class OrderGraphBuilder final : public VNVisitor {
//--- Ignored nodes
void visit(AstVar*) override {}
void visit(AstVarScope* nodep) override {}
void visit(AstCell*) override {} // Only interested in the respective AstScope
void visit(AstTypeTable*) override {}
void visit(AstConstPool*) override {}
void visit(AstClass*) override {}
void visit(AstVarScope* nodep) override { nodep->v3fatalSrc("Should not reach V3Order"); }
void visit(AstCell* nodep) override { nodep->v3fatalSrc("Should not reach V3Order"); }
void visit(AstTypeTable* nodep) override { nodep->v3fatalSrc("Should not reach V3Order"); }
void visit(AstConstPool* nodep) override { nodep->v3fatalSrc("Should not reach V3Order"); }
void visit(AstClass* nodep) override { nodep->v3fatalSrc("Should not reach V3Order"); }
void visit(AstCFunc*) override {
// Calls to DPI exports handled with AstCCall. /* verilator public */ functions are
// ignored for now (and hence potentially mis-ordered), but could use the same or

View File

@ -489,7 +489,7 @@ int V3Os::system(const string& command) {
const int ret = ::system(command.c_str());
if (VL_UNCOVERABLE(ret == -1)) {
v3fatal("Failed to execute command:" // LCOV_EXCL_LINE
<< command << " " << std::strerror(errno));
<< command << " " << std::strerror(errno)); // LCOV_EXCL_LINE
return -1; // LCOV_EXCL_LINE
} else {
UASSERT(WIFEXITED(ret), "system(" << command << ") returned unexpected value of " << ret);

View File

@ -97,10 +97,9 @@ AstArg* V3ParseGrammar::argWrapList(AstNodeExpr* nodep) {
}
AstNode* V3ParseGrammar::createSupplyExpr(FileLine* fileline, const string& name, int value) {
AstAssignW* assignp
= new AstAssignW{fileline, new AstParseRef{fileline, VParseRefExp::PX_TEXT, name},
value ? new AstConst{fileline, AstConst::All1{}}
: new AstConst{fileline, AstConst::All0{}}};
AstAssignW* assignp = new AstAssignW{fileline, new AstParseRef{fileline, name},
value ? new AstConst{fileline, AstConst::All1{}}
: new AstConst{fileline, AstConst::All0{}}};
AstStrengthSpec* strengthSpecp
= new AstStrengthSpec{fileline, VStrength::SUPPLY, VStrength::SUPPLY};
assignp->strengthSpecp(strengthSpecp);

View File

@ -177,7 +177,7 @@ public:
return new AstSenTree{fl, new AstSenItem{fl, VEdgeType::ET_COMBO_STAR, nullptr}};
}
AstNodeExpr* createGlobalClockParseRef(FileLine* fl) {
return new AstParseRef{fl, VParseRefExp::PX_TEXT, "__024global_clock", nullptr, nullptr};
return new AstParseRef{fl, "__024global_clock", nullptr, nullptr};
}
AstSenTree* createGlobalClockSenTree(FileLine* fl) {
return createSenTreeChanged(fl, createGlobalClockParseRef(fl));

View File

@ -1329,8 +1329,7 @@ int V3PreProcImp::getStateToken() {
define(fileline(), m_lastSym, value, formals, false);
}
} else {
const string msg = "Bad define text, unexpected "s + tokenName(tok) + "\n";
v3fatalSrc(msg);
v3fatalSrc("Bad define text, unexpected "s + tokenName(tok) + "\n");
}
statePop();
// DEFVALUE is terminated by a return, but lex can't return both tokens.

View File

@ -316,7 +316,9 @@ class SliceVisitor final : public VNVisitor {
"Array initialization should have been removed earlier");
}
void expandBiOp(AstNodeBiop* nodep) {
template <typename T_NodeBiop>
void expandBiOp(T_NodeBiop* biopp) {
AstNodeBiop* nodep = biopp;
if (nodep->user1SetOnce()) return; // Process once
UINFO(9, " Bi-Eq/Neq expansion " << nodep);
@ -330,10 +332,9 @@ class SliceVisitor final : public VNVisitor {
// EQ(a,b) -> LOGAND(EQ(ARRAYSEL(a,0), ARRAYSEL(b,0)), ...[1])
// Original node is replaced, so it is safe to copy it one time even if it is
// impure.
AstNodeBiop* const clonep = VN_AS(
nodep->cloneType(cloneAndSel(nodep->lhsp(), elements, elemIdx, elemIdx != 0),
cloneAndSel(nodep->rhsp(), elements, elemIdx, elemIdx != 0)),
NodeBiop);
T_NodeBiop* const clonep = new T_NodeBiop{
nodep->fileline(), cloneAndSel(nodep->lhsp(), elements, elemIdx, elemIdx != 0),
cloneAndSel(nodep->rhsp(), elements, elemIdx, elemIdx != 0)};
if (elemIdx == 0) {
nodep->foreach([this](AstExprStmt* const exprp) {
// Result expression is always evaluated to the same value, so the

View File

@ -21,12 +21,6 @@
namespace vlstd {
// constexpr std::max with arguments passed by value (required by constexpr before C++14)
template <typename T>
constexpr T max(T a, T b) {
return a > b ? a : b;
}
// C++17 is_invocable
template <typename F, typename... Args>
struct is_invocable

View File

@ -58,22 +58,6 @@ typename std::enable_if<std::is_integral<T>::value, std::string>::type cvtToHex(
return os.str();
}
inline uint32_t cvtToHash(const void* vp) {
// We can shove a 64 bit pointer into a 32 bit bucket
// On 32-bit systems, lower is always 0, but who cares?
union {
const void* up;
struct {
uint32_t upper;
uint32_t lower;
} l;
} u;
u.l.upper = 0;
u.l.lower = 0;
u.up = vp;
return u.l.upper ^ u.l.lower;
}
inline string ucfirst(const string& text) {
string result = text;
result[0] = std::toupper(result[0]);

View File

@ -344,10 +344,10 @@ class TraceDeclVisitor final : public VNVisitor {
void checkCalls(const AstCFunc* funcp) {
if (!v3Global.opt.debugCheck()) return;
checkCallsRecurse(funcp);
if (!m_declUncalledps.empty()) {
if (!m_declUncalledps.empty()) { // LCOV_EXCL_START
for (auto tracep : m_declUncalledps) UINFO(0, "-nodep " << tracep);
(*(m_declUncalledps.begin()))->v3fatalSrc("Created TraceDecl which is never called");
}
} // LCOV_EXCL_STOP
}
void checkCallsRecurse(const AstCFunc* funcp) {
funcp->foreach([this](const AstNode* nodep) {

View File

@ -547,8 +547,8 @@ class UndrivenVisitor final : public VNVisitorConst {
void visit(AstNodeCoverDecl*) override {}
void visit(AstCoverInc*) override {}
void visit(AstCoverToggle*) override {}
void visit(AstTraceDecl*) override {}
void visit(AstTraceInc*) override {}
void visit(AstTraceDecl* nodep) override { nodep->v3fatalSrc("Should not exist yet"); }
void visit(AstTraceInc* nodep) override { nodep->v3fatalSrc("Should not exist yet"); }
// iterate
void visit(AstConst* nodep) override {}

View File

@ -5487,11 +5487,7 @@ class WidthVisitor final : public VNVisitor {
assertAtStatement(nodep);
iterateCheckBool(nodep, "Loop Condition", nodep->condp(), BOTH);
}
void visit(AstRepeat* nodep) override {
assertAtStatement(nodep);
userIterateAndNext(nodep->countp(), WidthVP{SELF, BOTH}.p());
userIterateAndNext(nodep->stmtsp(), nullptr);
}
void visit(AstRepeat* nodep) override { nodep->v3fatalSrc("'repeat' missed in LinkJump"); }
void visit(AstNodeIf* nodep) override {
assertAtStatement(nodep);
// UINFOTREE(1, nodep, "", "IfPre");
@ -5863,10 +5859,7 @@ class WidthVisitor final : public VNVisitor {
nodep->text(newFormat);
UINFO(9, " Display out " << nodep->text());
}
void visit(AstCReturn* nodep) override {
assertAtStatement(nodep);
userIterateAndNext(nodep->lhsp(), WidthVP{SELF, BOTH}.p());
}
void visit(AstCReturn* nodep) override { nodep->v3fatalSrc("Should not exist yet"); }
void visit(AstConstraintRef* nodep) override { userIterateChildren(nodep, nullptr); }
void visit(AstDisplay* nodep) override {
assertAtStatement(nodep);
@ -6428,23 +6421,7 @@ class WidthVisitor final : public VNVisitor {
nodep->didWidth(true);
nodep->doingWidth(false);
}
void visit(AstReturn* nodep) override {
// IEEE: Assignment-like context
assertAtStatement(nodep);
if (!m_funcp) {
if (nodep->lhsp()) { // Return w/o value ok other places
nodep->v3error("Return with return value isn't underneath a function");
}
} else {
if (nodep->lhsp()) {
// Function hasn't been widthed, so make it so.
nodep->dtypeFrom(m_funcp->fvarp());
// AstPattern requires assignments to pass datatype on PRELIM
userIterateAndNext(nodep->lhsp(), WidthVP{nodep->dtypep(), PRELIM}.p());
iterateCheckAssign(nodep, "Return value", nodep->lhsp(), FINAL, nodep->dtypep());
}
}
}
void visit(AstReturn* nodep) override { nodep->v3fatalSrc("'return' missed in LinkJump"); }
AstPackage* getItemPackage(AstNode* pkgItemp) {
while (pkgItemp->backp() && pkgItemp->backp()->nextp() == pkgItemp) {

View File

@ -2209,7 +2209,7 @@ tf_variable_identifier<varp>: // IEEE: part of list_of_tf_variable_ide
id variable_dimensionListE sigAttrListE exprEqE
{ $$ = VARDONEA($<fl>1, *$1, $2, $3);
if ($4) AstNode::addNext<AstNode, AstNode>(
$$, new AstAssign{$4->fileline(), new AstParseRef{$<fl>1, VParseRefExp::PX_TEXT, *$1}, $4}); }
$$, new AstAssign{$4->fileline(), new AstParseRef{$<fl>1, *$1}, $4}); }
;
variable_declExpr<nodep>: // IEEE: part of variable_decl_assignment - rhs of expr
@ -2974,7 +2974,7 @@ netSig<varp>: // IEEE: net_decl_assignment - one element from
| netId variable_dimensionListE sigAttrListE '=' expr
{ $$ = VARDONEA($<fl>1, *$1, $2, $3);
AstDelay* const delayp = $$->delayp() ? $$->delayp()->unlinkFrBack() : nullptr;
AstAssignW* const assignp = new AstAssignW{$4, new AstParseRef{$<fl>1, VParseRefExp::PX_TEXT, *$1}, $5, delayp};
AstAssignW* const assignp = new AstAssignW{$4, new AstParseRef{$<fl>1, *$1}, $5, delayp};
if (GRAMMARP->m_netStrengthp) assignp->strengthSpecp(GRAMMARP->m_netStrengthp->cloneTree(false));
AstNode::addNext<AstNode, AstNode>($$, assignp); }
;
@ -3222,11 +3222,11 @@ instParamItem<pinp>: // IEEE: named_parameter_assignment + empty
$$->svDotName(true); }
| '.' idSVKwd
{ $$ = new AstPin{$<fl>2, PINNUMINC(), *$2,
new AstParseRef{$<fl>2, VParseRefExp::PX_TEXT, *$2, nullptr, nullptr}};
new AstParseRef{$<fl>2, *$2, nullptr, nullptr}};
$$->svDotName(true); $$->svImplicit(true); }
| '.' idAny
{ $$ = new AstPin{$<fl>2, PINNUMINC(), *$2,
new AstParseRef{$<fl>2, VParseRefExp::PX_TEXT, *$2, nullptr, nullptr}};
new AstParseRef{$<fl>2, *$2, nullptr, nullptr}};
$$->svDotName(true); $$->svImplicit(true); }
// // mintypmax is expanded here, as it might be a UDP or gate primitive
// // data_type for 'parameter type' hookups
@ -3261,11 +3261,11 @@ instPinItemE<pinp>: // IEEE: named_port_connection + empty
$$->svDotName(true); }
| '.' idSVKwd
{ $$ = new AstPin{$<fl>2, PINNUMINC(), *$2,
new AstParseRef{$<fl>2, VParseRefExp::PX_TEXT, *$2, nullptr, nullptr}};
new AstParseRef{$<fl>2, *$2, nullptr, nullptr}};
$$->svDotName(true); $$->svImplicit(true); }
| '.' idAny
{ $$ = new AstPin{$<fl>2, PINNUMINC(), *$2,
new AstParseRef{$<fl>2, VParseRefExp::PX_TEXT, *$2, nullptr, nullptr}};
new AstParseRef{$<fl>2, *$2, nullptr, nullptr}};
$$->svDotName(true); $$->svImplicit(true); }
// // mintypmax is expanded here, as it might be a UDP or gate primitive
//UNSUP pev_expr below
@ -3916,7 +3916,7 @@ patternKey<nodep>: // IEEE: merge structure_pattern_key, array_patt
// // expanded from simple_type ps_parameter_identifier (part of simple_type)
| packageClassScope id
{ $$ = AstDot::newIfPkg($<fl>1, $1,
new AstParseRef{$<fl>2, VParseRefExp::PX_TEXT, *$2, nullptr, nullptr}); }
new AstParseRef{$<fl>2, *$2, nullptr, nullptr}); }
| packageClassScopeE idType
{ AstRefDType* const refp = new AstRefDType{$<fl>2, *$2, $1, nullptr};
$$ = refp; }
@ -3956,14 +3956,14 @@ for_initializationItem<nodep>: // IEEE: variable_assignment + for_varia
AstVar* const varp = VARDONEA($<fl>2, *$2, nullptr, nullptr);
varp->lifetime(VLifetime::AUTOMATIC_EXPLICIT);
$$ = varp;
$$->addNext(new AstAssign{$3, new AstParseRef{$<fl>2, VParseRefExp::PX_TEXT, *$2}, $4}); }
$$->addNext(new AstAssign{$3, new AstParseRef{$<fl>2, *$2}, $4}); }
// // IEEE-2012:
| yVAR data_type idAny/*new*/ '=' expr
{ VARRESET_NONLIST(VAR); VARDTYPE($2);
AstVar* const varp = VARDONEA($<fl>3, *$3, nullptr, nullptr);
varp->lifetime(VLifetime::AUTOMATIC_EXPLICIT);
$$ = varp;
$$->addNext(new AstAssign{$4, new AstParseRef{$<fl>3, VParseRefExp::PX_TEXT, *$3}, $5}); }
$$->addNext(new AstAssign{$4, new AstParseRef{$<fl>3, *$3}, $5}); }
// // IEEE: variable_assignment
// // UNSUP variable_lvalue below
| id/*newOrExisting*/ '=' expr
@ -3971,9 +3971,9 @@ for_initializationItem<nodep>: // IEEE: variable_assignment + for_varia
AstVar* const varp = VARDONEA($<fl>1, *$1, nullptr, nullptr);
varp->lifetime(VLifetime::AUTOMATIC_EXPLICIT);
$$ = varp;
$$->addNext(new AstAssign{$2, new AstParseRef{$<fl>1, VParseRefExp::PX_TEXT, *$1}, $3});
$$->addNext(new AstAssign{$2, new AstParseRef{$<fl>1, *$1}, $3});
} else {
$$ = new AstAssign{$2, new AstParseRef{$<fl>1, VParseRefExp::PX_TEXT, *$1}, $3};
$$ = new AstAssign{$2, new AstParseRef{$<fl>1, *$1}, $3};
}
}
;
@ -5149,8 +5149,8 @@ exprScope<nodeExprp>: // scope and variable for use to inside an e
// // IEEE: [ implicit_class_handle . | class_scope | package_scope ] hierarchical_identifier select
// // Or method_call_body without parenthesis
// // See also varRefClassBit, which is the non-expr version of most of this
yTHIS { $$ = new AstParseRef{$<fl>1, VParseRefExp::PX_ROOT, "this"}; }
| yD_ROOT { $$ = new AstParseRef{$<fl>1, VParseRefExp::PX_ROOT, "$root"}; }
yTHIS { $$ = new AstParseRef{$<fl>1, "this"}; }
| yD_ROOT { $$ = new AstParseRef{$<fl>1, "$root"}; }
| idArrayed { $$ = $1; }
| packageClassScope idArrayed { $$ = AstDot::newIfPkg($2->fileline(), $1, $2); }
| ~l~expr '.' idArrayed { $$ = new AstDot{$<fl>2, false, $1, $3}; }
@ -5158,14 +5158,14 @@ exprScope<nodeExprp>: // scope and variable for use to inside an e
| ~l~expr '.' ySUPER
{ AstParseRef* const anodep = VN_CAST($1, ParseRef);
if (anodep && anodep->name() == "this") {
$$ = new AstParseRef{$<fl>1, VParseRefExp::PX_ROOT, "super"};
$$ = new AstParseRef{$<fl>1, "super"};
$1->deleteTree();
} else {
$$ = $1; $$->v3error("Syntax error: 'super' must be first name component, or after 'this.'");
}
}
// // Part of implicit_class_handle
| ySUPER { $$ = new AstParseRef{$<fl>1, VParseRefExp::PX_ROOT, "super"}; }
| ySUPER { $$ = new AstParseRef{$<fl>1, "super"}; }
;
fexprScope<nodeExprp>: // exprScope, For use as first part of statement (disambiguates <=)
@ -5854,7 +5854,7 @@ idPathpulse<strp>: // Id for specparam PATHPULSE$, IEEE: part of pulse_control_
idAnyAsParseRef<parseRefp>: // Any kind of identifier as a ParseRef
idAny
{ $$ = new AstParseRef{$<fl>1, VParseRefExp::PX_TEXT, *$1}; }
{ $$ = new AstParseRef{$<fl>1, *$1}; }
;
@ -5918,11 +5918,11 @@ idClass<nodeExprp>: // Misc Ref to dotted, and/or arrayed, and/or bi
idDotted { $$ = $1; }
// // IEEE: [ implicit_class_handle . | package_scope ] hierarchical_variable_identifier select
| yTHIS '.' idDotted
{ $$ = new AstDot{$2, false, new AstParseRef{$<fl>1, VParseRefExp::PX_ROOT, "this"}, $3}; }
{ $$ = new AstDot{$2, false, new AstParseRef{$<fl>1, "this"}, $3}; }
| ySUPER '.' idDotted
{ $$ = new AstDot{$2, false, new AstParseRef{$<fl>1, VParseRefExp::PX_ROOT, "super"}, $3}; }
{ $$ = new AstDot{$2, false, new AstParseRef{$<fl>1, "super"}, $3}; }
| yTHIS '.' ySUPER '.' idDotted
{ $$ = new AstDot{$4, false, new AstParseRef{$<fl>3, VParseRefExp::PX_ROOT, "super"}, $5}; }
{ $$ = new AstDot{$4, false, new AstParseRef{$<fl>3, "super"}, $5}; }
// // Expanded: package_scope idDottedSel
| packageClassScope idDotted { $$ = new AstDot{$<fl>2, true, $1, $2}; }
;
@ -5931,11 +5931,11 @@ idClassSel<nodeExprp>: // Misc Ref to dotted, and/or arrayed, and/or bi
idDottedSel { $$ = $1; }
// // IEEE: [ implicit_class_handle . | package_scope ] hierarchical_variable_identifier select
| yTHIS '.' idDottedSel
{ $$ = new AstDot{$2, false, new AstParseRef{$<fl>1, VParseRefExp::PX_ROOT, "this"}, $3}; }
{ $$ = new AstDot{$2, false, new AstParseRef{$<fl>1, "this"}, $3}; }
| ySUPER '.' idDottedSel
{ $$ = new AstDot{$2, false, new AstParseRef{$<fl>1, VParseRefExp::PX_ROOT, "super"}, $3}; }
{ $$ = new AstDot{$2, false, new AstParseRef{$<fl>1, "super"}, $3}; }
| yTHIS '.' ySUPER '.' idDottedSel
{ $$ = new AstDot{$4, false, new AstParseRef{$<fl>3, VParseRefExp::PX_ROOT, "super"}, $5}; }
{ $$ = new AstDot{$4, false, new AstParseRef{$<fl>3, "super"}, $5}; }
// // Expanded: package_scope idDottedSel
| packageClassScope idDottedSel { $$ = new AstDot{$<fl>2, true, $1, $2}; }
;
@ -5944,30 +5944,30 @@ idClassSelForeach<nodeExprp>:
idDottedForeach { $$ = $1; }
// // IEEE: [ implicit_class_handle . | package_scope ] hierarchical_variable_identifier select
| yTHIS '.' idDottedForeach
{ $$ = new AstDot{$2, false, new AstParseRef{$<fl>1, VParseRefExp::PX_ROOT, "this"}, $3}; }
{ $$ = new AstDot{$2, false, new AstParseRef{$<fl>1, "this"}, $3}; }
| ySUPER '.' idDottedForeach
{ $$ = new AstDot{$2, false, new AstParseRef{$<fl>1, VParseRefExp::PX_ROOT, "super"}, $3}; }
{ $$ = new AstDot{$2, false, new AstParseRef{$<fl>1, "super"}, $3}; }
| yTHIS '.' ySUPER '.' idDottedForeach
{ $$ = new AstDot{$4, false, new AstParseRef{$<fl>3, VParseRefExp::PX_ROOT, "super"}, $5}; }
{ $$ = new AstDot{$4, false, new AstParseRef{$<fl>3, "super"}, $5}; }
// // Expanded: package_scope idForeach
| packageClassScope idDottedForeach { $$ = new AstDot{$<fl>2, true, $1, $2}; }
;
idDotted<nodeExprp>:
yD_ROOT '.' idDottedMore
{ $$ = new AstDot{$2, false, new AstParseRef{$<fl>1, VParseRefExp::PX_ROOT, "$root"}, $3}; }
{ $$ = new AstDot{$2, false, new AstParseRef{$<fl>1, "$root"}, $3}; }
| idDottedMore { $$ = $1; }
;
idDottedSel<nodeExprp>:
yD_ROOT '.' idDottedSelMore
{ $$ = new AstDot{$2, false, new AstParseRef{$<fl>1, VParseRefExp::PX_ROOT, "$root"}, $3}; }
{ $$ = new AstDot{$2, false, new AstParseRef{$<fl>1, "$root"}, $3}; }
| idDottedSelMore { $$ = $1; }
;
idDottedForeach<nodeExprp>:
yD_ROOT '.' idDottedMoreForeach
{ $$ = new AstDot{$2, false, new AstParseRef{$<fl>1, VParseRefExp::PX_ROOT, "$root"}, $3}; }
{ $$ = new AstDot{$2, false, new AstParseRef{$<fl>1, "$root"}, $3}; }
| idDottedMoreForeach { $$ = $1; }
;
@ -5993,7 +5993,7 @@ idDottedMoreForeach<nodeExprp>:
// enum_identifier
idArrayed<nodeExprp>: // IEEE: id + select
id
{ $$ = new AstParseRef{$<fl>1, VParseRefExp::PX_TEXT, *$1, nullptr, nullptr}; }
{ $$ = new AstParseRef{$<fl>1, *$1, nullptr, nullptr}; }
// // IEEE: id + part_select_range/constant_part_select_range
| idArrayed '[' expr ']' { $$ = new AstSelBit{$2, $1, $3}; } // Or AstArraySel, don't know yet.
| idArrayed '[' constExpr ':' constExpr ']' { $$ = new AstSelExtract{$2, $1, $3, $5}; }
@ -6004,7 +6004,7 @@ idArrayed<nodeExprp>: // IEEE: id + select
idArrayedForeach<nodeExprp>: // IEEE: id + select (under foreach expression)
id
{ $$ = new AstParseRef{$<fl>1, VParseRefExp::PX_TEXT, *$1, nullptr, nullptr}; }
{ $$ = new AstParseRef{$<fl>1, *$1, nullptr, nullptr}; }
// // IEEE: id + part_select_range/constant_part_select_range
| idArrayed '[' expr ']' { $$ = new AstSelBit{$2, $1, $3}; } // Or AstArraySel, don't know yet.
| idArrayed '[' constExpr ':' constExpr ']' { $$ = new AstSelExtract{$2, $1, $3, $5}; }
@ -6023,13 +6023,13 @@ idArrayedForeach<nodeExprp>: // IEEE: id + select (under foreach expression)
// VarRef without any dots or vectorizaion
varRefBase<parseRefp>:
id { $$ = new AstParseRef{$<fl>1, VParseRefExp::PX_TEXT, *$1}; }
id { $$ = new AstParseRef{$<fl>1, *$1}; }
;
// ParseRef
parseRefBase<nodep>:
id
{ $$ = new AstParseRef{$<fl>1, VParseRefExp::PX_TEXT, *$1, nullptr, nullptr}; }
{ $$ = new AstParseRef{$<fl>1, *$1, nullptr, nullptr}; }
;
// yaSTRING shouldn't be used directly, instead via an abstraction below
@ -6084,7 +6084,7 @@ clocking_event<senItemp>: // IEEE: clocking_event
//UNSUP: '@' idClassSel/*ps_identifier*/
'@' id
{ $$ = new AstSenItem{$<fl>2, VEdgeType::ET_CHANGED,
new AstParseRef{$<fl>2, VParseRefExp::PX_TEXT, *$2, nullptr, nullptr}}; }
new AstParseRef{$<fl>2, *$2, nullptr, nullptr}}; }
| '@' '(' event_expression ')' { $$ = $3; }
;

View File

@ -26,7 +26,6 @@ for s in [
'EOF in unterminated string', # Instead get normal unterminated
'Enum ranges must be integral, per spec', # Hard to hit
'Expecting define formal arguments. Found: ', # Instead define syntax error
'Return with return value isn\'t underneath a function', # Hard to hit, get other bad return messages
'Syntax error parsing real: \'', # Instead can't lex the number
'Syntax error: Range \':\', \'+:\' etc are not allowed in the instance ', # Instead get syntax error
'dynamic new() not expected in this context (expected under an assign)', # Instead get syntax error
@ -62,6 +61,7 @@ for s in [
'Slices of arrays in assignments have different unpacked dimensions, ',
'String of ',
'Symbol matching ',
'Type cannot be selected from',
'Unexpected connection to arrayed port',
'Unsized numbers/parameters not allowed in streams.',
'Unsupported RHS tristate construct: ',

View File

@ -57,7 +57,7 @@
"rhsp": [
{"type":"SELEXTRACT","name":"","addr":"(GB)","loc":"e,18:24,18:25","dtypep":"UNLINKED",
"fromp": [
{"type":"PARSEREF","name":"crc","addr":"(HB)","loc":"e,18:21,18:24","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"crc","addr":"(HB)","loc":"e,18:21,18:24","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
],
"leftp": [
{"type":"CONST","name":"?32?sh1f","addr":"(IB)","loc":"e,18:25,18:27","dtypep":"(DB)"}
@ -67,7 +67,7 @@
],"attrp": []}
],
"lhsp": [
{"type":"PARSEREF","name":"in","addr":"(KB)","loc":"e,18:16,18:18","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"in","addr":"(KB)","loc":"e,18:16,18:18","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
],"timingControlp": [],"strengthSpecp": []},
{"type":"VAR","name":"out","addr":"(LB)","loc":"e,22:25,22:28","dtypep":"UNLINKED","origName":"out","isSc":false,"isPrimaryIO":false,"isPrimaryClock":false,"direction":"NONE","isConst":false,"isPullup":false,"isPulldown":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":false,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":false,"lifetime":"NONE","varType":"WIRE","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED",
"childDTypep": [
@ -88,7 +88,7 @@
"exprp": [
{"type":"SELEXTRACT","name":"","addr":"(TB)","loc":"e,27:45,27:46","dtypep":"UNLINKED",
"fromp": [
{"type":"PARSEREF","name":"out","addr":"(UB)","loc":"e,27:42,27:45","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"out","addr":"(UB)","loc":"e,27:42,27:45","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
],
"leftp": [
{"type":"CONST","name":"?32?sh1f","addr":"(VB)","loc":"e,27:46,27:48","dtypep":"(DB)"}
@ -99,13 +99,13 @@
]},
{"type":"PIN","name":"clk","addr":"(XB)","loc":"e,29:15,29:18","svDotName":true,"svImplicit":false,"modVarp":"UNLINKED","modPTypep":"UNLINKED",
"exprp": [
{"type":"PARSEREF","name":"clk","addr":"(YB)","loc":"e,29:42,29:45","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"clk","addr":"(YB)","loc":"e,29:42,29:45","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
]},
{"type":"PIN","name":"in","addr":"(ZB)","loc":"e,30:15,30:17","svDotName":true,"svImplicit":false,"modVarp":"UNLINKED","modPTypep":"UNLINKED",
"exprp": [
{"type":"SELEXTRACT","name":"","addr":"(AC)","loc":"e,30:44,30:45","dtypep":"UNLINKED",
"fromp": [
{"type":"PARSEREF","name":"in","addr":"(BC)","loc":"e,30:42,30:44","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"in","addr":"(BC)","loc":"e,30:42,30:44","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
],
"leftp": [
{"type":"CONST","name":"?32?sh1f","addr":"(CC)","loc":"e,30:45,30:47","dtypep":"(DB)"}
@ -137,7 +137,7 @@
{"type":"CONST","name":"32'h0","addr":"(NC)","loc":"e,33:26,33:31","dtypep":"(OC)"}
],
"rhsp": [
{"type":"PARSEREF","name":"out","addr":"(PC)","loc":"e,33:33,33:36","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"out","addr":"(PC)","loc":"e,33:33,33:36","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
]}
],
"countp": [
@ -145,7 +145,7 @@
]}
],
"lhsp": [
{"type":"PARSEREF","name":"result","addr":"(RC)","loc":"e,33:16,33:22","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"result","addr":"(RC)","loc":"e,33:16,33:22","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
],"timingControlp": [],"strengthSpecp": []},
{"type":"ALWAYS","name":"","addr":"(SC)","loc":"e,36:4,36:10","keyword":"always","isSuspendable":false,"needProcess":false,"sentreep": [],
"stmtsp": [
@ -155,7 +155,7 @@
"sensesp": [
{"type":"SENITEM","name":"","addr":"(VC)","loc":"e,36:14,36:21","edgeType":"POS",
"sensp": [
{"type":"PARSEREF","name":"clk","addr":"(WC)","loc":"e,36:22,36:25","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"clk","addr":"(WC)","loc":"e,36:22,36:25","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
],"condp": []}
]}
],
@ -166,14 +166,14 @@
"rhsp": [
{"type":"ADD","name":"","addr":"(ZC)","loc":"e,40:18,40:19","dtypep":"UNLINKED",
"lhsp": [
{"type":"PARSEREF","name":"cyc","addr":"(AD)","loc":"e,40:14,40:17","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"cyc","addr":"(AD)","loc":"e,40:14,40:17","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
],
"rhsp": [
{"type":"CONST","name":"?32?sh1","addr":"(BD)","loc":"e,40:20,40:21","dtypep":"(N)"}
]}
],
"lhsp": [
{"type":"PARSEREF","name":"cyc","addr":"(CD)","loc":"e,40:7,40:10","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"cyc","addr":"(CD)","loc":"e,40:7,40:10","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
],"timingControlp": []},
{"type":"ASSIGNDLY","name":"","addr":"(DD)","loc":"e,41:11,41:13","dtypep":"UNLINKED",
"rhsp": [
@ -183,7 +183,7 @@
"lhsp": [
{"type":"SELEXTRACT","name":"","addr":"(GD)","loc":"e,41:18,41:19","dtypep":"UNLINKED",
"fromp": [
{"type":"PARSEREF","name":"crc","addr":"(HD)","loc":"e,41:15,41:18","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"crc","addr":"(HD)","loc":"e,41:15,41:18","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
],
"leftp": [
{"type":"CONST","name":"?32?sh3e","addr":"(ID)","loc":"e,41:19,41:21","dtypep":"(S)"}
@ -199,7 +199,7 @@
"lhsp": [
{"type":"SELBIT","name":"","addr":"(MD)","loc":"e,41:29,41:30","dtypep":"UNLINKED",
"fromp": [
{"type":"PARSEREF","name":"crc","addr":"(ND)","loc":"e,41:26,41:29","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"crc","addr":"(ND)","loc":"e,41:26,41:29","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
],
"bitp": [
{"type":"CONST","name":"?32?sh3f","addr":"(OD)","loc":"e,41:30,41:32","dtypep":"(S)"}
@ -208,7 +208,7 @@
"rhsp": [
{"type":"SELBIT","name":"","addr":"(PD)","loc":"e,41:39,41:40","dtypep":"UNLINKED",
"fromp": [
{"type":"PARSEREF","name":"crc","addr":"(QD)","loc":"e,41:36,41:39","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"crc","addr":"(QD)","loc":"e,41:36,41:39","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
],
"bitp": [
{"type":"CONST","name":"?32?sh2","addr":"(RD)","loc":"e,41:40,41:41","dtypep":"(SD)"}
@ -218,7 +218,7 @@
"rhsp": [
{"type":"SELBIT","name":"","addr":"(TD)","loc":"e,41:48,41:49","dtypep":"UNLINKED",
"fromp": [
{"type":"PARSEREF","name":"crc","addr":"(UD)","loc":"e,41:45,41:48","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"crc","addr":"(UD)","loc":"e,41:45,41:48","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
],
"bitp": [
{"type":"CONST","name":"?32?sh0","addr":"(VD)","loc":"e,41:49,41:50","dtypep":"(N)"}
@ -231,13 +231,13 @@
]}
],
"lhsp": [
{"type":"PARSEREF","name":"crc","addr":"(XD)","loc":"e,41:7,41:10","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"crc","addr":"(XD)","loc":"e,41:7,41:10","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
],"timingControlp": []},
{"type":"ASSIGNDLY","name":"","addr":"(YD)","loc":"e,42:11,42:13","dtypep":"UNLINKED",
"rhsp": [
{"type":"XOR","name":"","addr":"(ZD)","loc":"e,42:21,42:22","dtypep":"UNLINKED",
"lhsp": [
{"type":"PARSEREF","name":"result","addr":"(AE)","loc":"e,42:14,42:20","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"result","addr":"(AE)","loc":"e,42:14,42:20","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
],
"rhsp": [
{"type":"REPLICATE","name":"","addr":"(BE)","loc":"e,42:23,42:24","dtypep":"(LC)",
@ -246,7 +246,7 @@
"lhsp": [
{"type":"SELEXTRACT","name":"","addr":"(DE)","loc":"e,42:27,42:28","dtypep":"UNLINKED",
"fromp": [
{"type":"PARSEREF","name":"sum","addr":"(EE)","loc":"e,42:24,42:27","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"sum","addr":"(EE)","loc":"e,42:24,42:27","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
],
"leftp": [
{"type":"CONST","name":"?32?sh3e","addr":"(FE)","loc":"e,42:28,42:30","dtypep":"(S)"}
@ -262,7 +262,7 @@
"lhsp": [
{"type":"SELBIT","name":"","addr":"(JE)","loc":"e,42:38,42:39","dtypep":"UNLINKED",
"fromp": [
{"type":"PARSEREF","name":"sum","addr":"(KE)","loc":"e,42:35,42:38","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"sum","addr":"(KE)","loc":"e,42:35,42:38","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
],
"bitp": [
{"type":"CONST","name":"?32?sh3f","addr":"(LE)","loc":"e,42:39,42:41","dtypep":"(S)"}
@ -271,7 +271,7 @@
"rhsp": [
{"type":"SELBIT","name":"","addr":"(ME)","loc":"e,42:48,42:49","dtypep":"UNLINKED",
"fromp": [
{"type":"PARSEREF","name":"sum","addr":"(NE)","loc":"e,42:45,42:48","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"sum","addr":"(NE)","loc":"e,42:45,42:48","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
],
"bitp": [
{"type":"CONST","name":"?32?sh2","addr":"(OE)","loc":"e,42:49,42:50","dtypep":"(SD)"}
@ -281,7 +281,7 @@
"rhsp": [
{"type":"SELBIT","name":"","addr":"(PE)","loc":"e,42:57,42:58","dtypep":"UNLINKED",
"fromp": [
{"type":"PARSEREF","name":"sum","addr":"(QE)","loc":"e,42:54,42:57","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"sum","addr":"(QE)","loc":"e,42:54,42:57","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
],
"bitp": [
{"type":"CONST","name":"?32?sh0","addr":"(RE)","loc":"e,42:58,42:59","dtypep":"(N)"}
@ -295,13 +295,13 @@
]}
],
"lhsp": [
{"type":"PARSEREF","name":"sum","addr":"(TE)","loc":"e,42:7,42:10","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"sum","addr":"(TE)","loc":"e,42:7,42:10","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
],"timingControlp": []},
{"type":"IF","name":"","addr":"(UE)","loc":"e,43:7,43:9",
"condp": [
{"type":"EQ","name":"","addr":"(VE)","loc":"e,43:15,43:17","dtypep":"(WE)",
"lhsp": [
{"type":"PARSEREF","name":"cyc","addr":"(XE)","loc":"e,43:11,43:14","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"cyc","addr":"(XE)","loc":"e,43:11,43:14","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
],
"rhsp": [
{"type":"CONST","name":"?32?sh0","addr":"(YE)","loc":"e,43:18,43:19","dtypep":"(N)"}
@ -315,14 +315,14 @@
{"type":"CONST","name":"64'h5aef0c8dd70a4497","addr":"(BF)","loc":"e,45:17,45:38","dtypep":"(CF)"}
],
"lhsp": [
{"type":"PARSEREF","name":"crc","addr":"(DF)","loc":"e,45:10,45:13","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"crc","addr":"(DF)","loc":"e,45:10,45:13","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
],"timingControlp": []},
{"type":"ASSIGNDLY","name":"","addr":"(EF)","loc":"e,46:14,46:16","dtypep":"UNLINKED",
"rhsp": [
{"type":"CONST","name":"'0","addr":"(FF)","loc":"e,46:17,46:19","dtypep":"(WE)"}
],
"lhsp": [
{"type":"PARSEREF","name":"sum","addr":"(GF)","loc":"e,46:10,46:13","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"sum","addr":"(GF)","loc":"e,46:10,46:13","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
],"timingControlp": []}
]}
],
@ -331,7 +331,7 @@
"condp": [
{"type":"LT","name":"","addr":"(IF)","loc":"e,48:20,48:21","dtypep":"(WE)",
"lhsp": [
{"type":"PARSEREF","name":"cyc","addr":"(JF)","loc":"e,48:16,48:19","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"cyc","addr":"(JF)","loc":"e,48:16,48:19","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
],
"rhsp": [
{"type":"CONST","name":"?32?sha","addr":"(KF)","loc":"e,48:22,48:24","dtypep":"(LF)"}
@ -345,7 +345,7 @@
{"type":"CONST","name":"'0","addr":"(OF)","loc":"e,49:17,49:19","dtypep":"(WE)"}
],
"lhsp": [
{"type":"PARSEREF","name":"sum","addr":"(PF)","loc":"e,49:10,49:13","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"sum","addr":"(PF)","loc":"e,49:10,49:13","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
],"timingControlp": []}
]}
],
@ -354,7 +354,7 @@
"condp": [
{"type":"LT","name":"","addr":"(RF)","loc":"e,51:20,51:21","dtypep":"(WE)",
"lhsp": [
{"type":"PARSEREF","name":"cyc","addr":"(SF)","loc":"e,51:16,51:19","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"cyc","addr":"(SF)","loc":"e,51:16,51:19","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
],
"rhsp": [
{"type":"CONST","name":"?32?sh5a","addr":"(TF)","loc":"e,51:22,51:24","dtypep":"(UF)"}
@ -368,7 +368,7 @@
"condp": [
{"type":"EQ","name":"","addr":"(XF)","loc":"e,53:20,53:22","dtypep":"(WE)",
"lhsp": [
{"type":"PARSEREF","name":"cyc","addr":"(YF)","loc":"e,53:16,53:19","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"cyc","addr":"(YF)","loc":"e,53:16,53:19","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
],
"rhsp": [
{"type":"CONST","name":"?32?sh63","addr":"(ZF)","loc":"e,53:23,53:25","dtypep":"(UF)"}
@ -383,16 +383,16 @@
"exprsp": [
{"type":"CONST","name":"232'h5b2530745d206379633d3d253064206372633d25782073756d3d25780a","addr":"(EG)","loc":"e,54:17,54:49","dtypep":"(FG)"},
{"type":"TIME","name":"","addr":"(GG)","loc":"e,54:51,54:56","dtypep":"(HG)","timeunit":"NONE"},
{"type":"PARSEREF","name":"cyc","addr":"(IG)","loc":"e,54:58,54:61","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []},
{"type":"PARSEREF","name":"crc","addr":"(JG)","loc":"e,54:63,54:66","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []},
{"type":"PARSEREF","name":"sum","addr":"(KG)","loc":"e,54:68,54:71","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"cyc","addr":"(IG)","loc":"e,54:58,54:61","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []},
{"type":"PARSEREF","name":"crc","addr":"(JG)","loc":"e,54:63,54:66","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []},
{"type":"PARSEREF","name":"sum","addr":"(KG)","loc":"e,54:68,54:71","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
],"scopeNamep": []}
],"filep": []},
{"type":"IF","name":"","addr":"(LG)","loc":"e,55:10,55:12",
"condp": [
{"type":"NEQCASE","name":"","addr":"(MG)","loc":"e,55:18,55:21","dtypep":"(WE)",
"lhsp": [
{"type":"PARSEREF","name":"crc","addr":"(NG)","loc":"e,55:14,55:17","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"crc","addr":"(NG)","loc":"e,55:14,55:17","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
],
"rhsp": [
{"type":"CONST","name":"64'hc77bb9b3784ea091","addr":"(OG)","loc":"e,55:22,55:42","dtypep":"(CF)"}
@ -405,7 +405,7 @@
"condp": [
{"type":"NEQCASE","name":"","addr":"(RG)","loc":"e,58:18,58:21","dtypep":"(WE)",
"lhsp": [
{"type":"PARSEREF","name":"sum","addr":"(SG)","loc":"e,58:14,58:17","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"sum","addr":"(SG)","loc":"e,58:14,58:17","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
],
"rhsp": [
{"type":"CONST","name":"64'h4afe43fb79d7b71e","addr":"(TG)","loc":"e,58:22,58:42","dtypep":"(CF)"}
@ -474,7 +474,7 @@
"sensesp": [
{"type":"SENITEM","name":"","addr":"(SH)","loc":"e,82:13,82:20","edgeType":"POS",
"sensp": [
{"type":"PARSEREF","name":"clk","addr":"(TH)","loc":"e,82:21,82:24","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"clk","addr":"(TH)","loc":"e,82:21,82:24","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
],"condp": []}
]}
],
@ -483,10 +483,10 @@
"stmtsp": [
{"type":"ASSIGNDLY","name":"","addr":"(VH)","loc":"e,83:11,83:13","dtypep":"UNLINKED",
"rhsp": [
{"type":"PARSEREF","name":"in","addr":"(WH)","loc":"e,83:14,83:16","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"in","addr":"(WH)","loc":"e,83:14,83:16","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
],
"lhsp": [
{"type":"PARSEREF","name":"out","addr":"(XH)","loc":"e,83:7,83:10","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"out","addr":"(XH)","loc":"e,83:7,83:10","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
],"timingControlp": []},
{"type":"ASSERTCTL","name":"","addr":"(YH)","loc":"e,86:7,86:17",
"controlTypep": [
@ -533,7 +533,7 @@
"stmtsp": [
{"type":"DISABLE","name":"","addr":"(QI)","loc":"e,92:10,92:17",
"targetRefp": [
{"type":"PARSEREF","name":"blk","addr":"(RI)","loc":"e,92:18,92:21","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"blk","addr":"(RI)","loc":"e,92:18,92:21","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
]}
]}
]}
@ -976,7 +976,7 @@
"sensesp": [
{"type":"SENITEM","name":"","addr":"(XO)","loc":"e,127:9,127:16","edgeType":"POS",
"sensp": [
{"type":"PARSEREF","name":"clk","addr":"(YO)","loc":"e,127:17,127:20","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"clk","addr":"(YO)","loc":"e,127:17,127:20","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
],"condp": []}
],"disablep": [],
"propp": [
@ -991,7 +991,7 @@
"exprp": [
{"type":"PROPSPEC","name":"","addr":"(DP)","loc":"e,130:40,130:44","dtypep":"UNLINKED","sensesp": [],"disablep": [],
"propp": [
{"type":"PARSEREF","name":"prop","addr":"(EP)","loc":"e,130:40,130:44","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"prop","addr":"(EP)","loc":"e,130:40,130:44","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
]}
]}
],"sentreep": [],"failsp": [],"passsp": []}
@ -1004,7 +1004,7 @@
"exprp": [
{"type":"PROPSPEC","name":"","addr":"(IP)","loc":"e,131:44,131:48","dtypep":"UNLINKED","sensesp": [],"disablep": [],
"propp": [
{"type":"PARSEREF","name":"prop","addr":"(JP)","loc":"e,131:44,131:48","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"prop","addr":"(JP)","loc":"e,131:44,131:48","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
]}
]}
],"sentreep": [],
@ -1026,7 +1026,7 @@
"exprp": [
{"type":"PROPSPEC","name":"","addr":"(QP)","loc":"e,132:44,132:48","dtypep":"UNLINKED","sensesp": [],"disablep": [],
"propp": [
{"type":"PARSEREF","name":"prop","addr":"(RP)","loc":"e,132:44,132:48","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"prop","addr":"(RP)","loc":"e,132:44,132:48","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
]}
]}
],"sentreep": [],"failsp": [],
@ -1048,7 +1048,7 @@
"exprp": [
{"type":"PROPSPEC","name":"","addr":"(YP)","loc":"e,133:49,133:53","dtypep":"UNLINKED","sensesp": [],"disablep": [],
"propp": [
{"type":"PARSEREF","name":"prop","addr":"(ZP)","loc":"e,133:49,133:53","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"prop","addr":"(ZP)","loc":"e,133:49,133:53","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
]}
]}
],"sentreep": [],
@ -1079,7 +1079,7 @@
"exprp": [
{"type":"PROPSPEC","name":"","addr":"(JQ)","loc":"e,135:39,135:43","dtypep":"UNLINKED","sensesp": [],"disablep": [],
"propp": [
{"type":"PARSEREF","name":"prop","addr":"(KQ)","loc":"e,135:39,135:43","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"prop","addr":"(KQ)","loc":"e,135:39,135:43","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
]}
]}
],"sentreep": [],"failsp": [],"passsp": []}
@ -1092,7 +1092,7 @@
"exprp": [
{"type":"PROPSPEC","name":"","addr":"(OQ)","loc":"e,136:44,136:48","dtypep":"UNLINKED","sensesp": [],"disablep": [],
"propp": [
{"type":"PARSEREF","name":"prop","addr":"(PQ)","loc":"e,136:44,136:48","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"prop","addr":"(PQ)","loc":"e,136:44,136:48","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
]}
]}
],"sentreep": [],
@ -1114,7 +1114,7 @@
"exprp": [
{"type":"PROPSPEC","name":"","addr":"(WQ)","loc":"e,137:44,137:48","dtypep":"UNLINKED","sensesp": [],"disablep": [],
"propp": [
{"type":"PARSEREF","name":"prop","addr":"(XQ)","loc":"e,137:44,137:48","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"prop","addr":"(XQ)","loc":"e,137:44,137:48","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
]}
]}
],"sentreep": [],"failsp": [],
@ -1136,7 +1136,7 @@
"exprp": [
{"type":"PROPSPEC","name":"","addr":"(ER)","loc":"e,138:49,138:53","dtypep":"UNLINKED","sensesp": [],"disablep": [],
"propp": [
{"type":"PARSEREF","name":"prop","addr":"(FR)","loc":"e,138:49,138:53","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"prop","addr":"(FR)","loc":"e,138:49,138:53","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
]}
]}
],"sentreep": [],
@ -1165,7 +1165,7 @@
"propp": [
{"type":"PROPSPEC","name":"","addr":"(OR)","loc":"e,140:37,140:41","dtypep":"UNLINKED","sensesp": [],"disablep": [],
"propp": [
{"type":"PARSEREF","name":"prop","addr":"(PR)","loc":"e,140:37,140:41","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"prop","addr":"(PR)","loc":"e,140:37,140:41","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
]}
],"sentreep": [],"coverincsp": [],"passsp": []}
]},
@ -1175,7 +1175,7 @@
"propp": [
{"type":"PROPSPEC","name":"","addr":"(SR)","loc":"e,141:42,141:46","dtypep":"UNLINKED","sensesp": [],"disablep": [],
"propp": [
{"type":"PARSEREF","name":"prop","addr":"(TR)","loc":"e,141:42,141:46","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"prop","addr":"(TR)","loc":"e,141:42,141:46","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
]}
],"sentreep": [],"coverincsp": [],
"passsp": [
@ -1192,7 +1192,7 @@
"propp": [
{"type":"PROPSPEC","name":"","addr":"(YR)","loc":"e,143:23,143:27","dtypep":"UNLINKED","sensesp": [],"disablep": [],
"propp": [
{"type":"PARSEREF","name":"prop","addr":"(ZR)","loc":"e,143:23,143:27","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"prop","addr":"(ZR)","loc":"e,143:23,143:27","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
]}
],"sentreep": [],"passsp": []}
]},
@ -1234,10 +1234,10 @@
],"attrsp": []},
{"type":"ASSIGN","name":"","addr":"(QS)","loc":"d,39:15,39:16","dtypep":"UNLINKED",
"rhsp": [
{"type":"PARSEREF","name":"bound","addr":"(RS)","loc":"d,39:17,39:22","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"bound","addr":"(RS)","loc":"d,39:17,39:22","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
],
"lhsp": [
{"type":"PARSEREF","name":"m_bound","addr":"(SS)","loc":"d,39:7,39:14","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"m_bound","addr":"(SS)","loc":"d,39:7,39:14","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
],"timingControlp": []}
],"scopeNamep": []},
{"type":"FUNC","name":"num","addr":"(TS)","loc":"d,42:18,42:21","dtypep":"UNLINKED","method":false,"dpiExport":false,"dpiImport":false,"dpiOpenChild":false,"dpiOpenParent":false,"isExternDef":false,"isExternProto":false,"prototype":false,"recursive":false,"taskPublic":false,"cname":"num",
@ -1249,7 +1249,7 @@
"lhsp": [
{"type":"DOT","name":"","addr":"(WS)","loc":"d,43:21,43:22","dtypep":"UNLINKED","colon":false,
"lhsp": [
{"type":"PARSEREF","name":"m_queue","addr":"(XS)","loc":"d,43:14,43:21","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"m_queue","addr":"(XS)","loc":"d,43:14,43:21","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
],
"rhsp": [
{"type":"FUNCREF","name":"size","addr":"(YS)","loc":"d,43:22,43:26","dtypep":"UNLINKED","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","namep": [],"pinsp": [],"scopeNamep": []}
@ -1278,7 +1278,7 @@
"lhsp": [
{"type":"EQ","name":"","addr":"(IT)","loc":"d,55:19,55:21","dtypep":"(WE)",
"lhsp": [
{"type":"PARSEREF","name":"m_bound","addr":"(JT)","loc":"d,55:11,55:18","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"m_bound","addr":"(JT)","loc":"d,55:11,55:18","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
],
"rhsp": [
{"type":"CONST","name":"?32?sh0","addr":"(KT)","loc":"d,55:22,55:23","dtypep":"(N)"}
@ -1290,7 +1290,7 @@
{"type":"FUNCREF","name":"num","addr":"(MT)","loc":"d,55:27,55:30","dtypep":"UNLINKED","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","namep": [],"pinsp": [],"scopeNamep": []}
],
"rhsp": [
{"type":"PARSEREF","name":"m_bound","addr":"(NT)","loc":"d,55:35,55:42","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"m_bound","addr":"(NT)","loc":"d,55:35,55:42","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
]}
]}
],
@ -1301,14 +1301,14 @@
"exprp": [
{"type":"DOT","name":"","addr":"(QT)","loc":"d,56:16,56:17","dtypep":"UNLINKED","colon":false,
"lhsp": [
{"type":"PARSEREF","name":"m_queue","addr":"(RT)","loc":"d,56:9,56:16","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"m_queue","addr":"(RT)","loc":"d,56:9,56:16","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
],
"rhsp": [
{"type":"TASKREF","name":"push_back","addr":"(ST)","loc":"d,56:17,56:26","dtypep":"(TT)","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","namep": [],
"pinsp": [
{"type":"ARG","name":"","addr":"(UT)","loc":"d,56:27,56:34",
"exprp": [
{"type":"PARSEREF","name":"message","addr":"(VT)","loc":"d,56:27,56:34","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"message","addr":"(VT)","loc":"d,56:27,56:34","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
]}
],"scopeNamep": []}
]}
@ -1357,14 +1357,14 @@
"rhsp": [
{"type":"DOT","name":"","addr":"(NU)","loc":"d,73:26,73:27","dtypep":"UNLINKED","colon":false,
"lhsp": [
{"type":"PARSEREF","name":"m_queue","addr":"(OU)","loc":"d,73:19,73:26","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"m_queue","addr":"(OU)","loc":"d,73:19,73:26","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
],
"rhsp": [
{"type":"FUNCREF","name":"pop_front","addr":"(PU)","loc":"d,73:27,73:36","dtypep":"UNLINKED","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","namep": [],"pinsp": [],"scopeNamep": []}
]}
],
"lhsp": [
{"type":"PARSEREF","name":"message","addr":"(QU)","loc":"d,73:9,73:16","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"message","addr":"(QU)","loc":"d,73:9,73:16","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
],"timingControlp": []},
{"type":"RETURN","name":"","addr":"(RU)","loc":"d,74:9,74:15",
"lhsp": [
@ -1410,14 +1410,14 @@
"rhsp": [
{"type":"SELBIT","name":"","addr":"(IV)","loc":"d,90:26,90:27","dtypep":"UNLINKED",
"fromp": [
{"type":"PARSEREF","name":"m_queue","addr":"(JV)","loc":"d,90:19,90:26","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"m_queue","addr":"(JV)","loc":"d,90:19,90:26","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
],
"bitp": [
{"type":"CONST","name":"?32?sh0","addr":"(KV)","loc":"d,90:27,90:28","dtypep":"(N)"}
],"thsp": [],"attrp": []}
],
"lhsp": [
{"type":"PARSEREF","name":"message","addr":"(LV)","loc":"d,90:9,90:16","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"message","addr":"(LV)","loc":"d,90:9,90:16","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
],"timingControlp": []},
{"type":"RETURN","name":"","addr":"(MV)","loc":"d,91:9,91:15",
"lhsp": [
@ -1448,10 +1448,10 @@
],"attrsp": []},
{"type":"ASSIGN","name":"","addr":"(XV)","loc":"d,101:18,101:19","dtypep":"UNLINKED",
"rhsp": [
{"type":"PARSEREF","name":"keyCount","addr":"(YV)","loc":"d,101:20,101:28","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"keyCount","addr":"(YV)","loc":"d,101:20,101:28","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
],
"lhsp": [
{"type":"PARSEREF","name":"m_keyCount","addr":"(ZV)","loc":"d,101:7,101:17","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"m_keyCount","addr":"(ZV)","loc":"d,101:7,101:17","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
],"timingControlp": []}
],"scopeNamep": []},
{"type":"TASK","name":"put","addr":"(AW)","loc":"d,104:19,104:22","method":false,"dpiExport":false,"dpiImport":false,"dpiOpenChild":false,"dpiOpenParent":false,"isExternDef":false,"isExternProto":false,"prototype":false,"recursive":false,"taskPublic":false,"cname":"put","fvarp": [],"classOrPackagep": [],
@ -1467,14 +1467,14 @@
"rhsp": [
{"type":"ADD","name":"","addr":"(FW)","loc":"d,105:18,105:20","dtypep":"UNLINKED",
"lhsp": [
{"type":"PARSEREF","name":"m_keyCount","addr":"(GW)","loc":"d,105:7,105:17","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"m_keyCount","addr":"(GW)","loc":"d,105:7,105:17","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
],
"rhsp": [
{"type":"PARSEREF","name":"keyCount","addr":"(HW)","loc":"d,105:21,105:29","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"keyCount","addr":"(HW)","loc":"d,105:21,105:29","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
]}
],
"lhsp": [
{"type":"PARSEREF","name":"m_keyCount","addr":"(IW)","loc":"d,105:7,105:17","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"m_keyCount","addr":"(IW)","loc":"d,105:7,105:17","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
],"timingControlp": []}
],"scopeNamep": []},
{"type":"TASK","name":"get","addr":"(JW)","loc":"d,108:10,108:13","method":false,"dpiExport":false,"dpiImport":false,"dpiOpenChild":false,"dpiOpenParent":false,"isExternDef":false,"isExternProto":false,"prototype":false,"recursive":false,"taskPublic":false,"cname":"get","fvarp": [],"classOrPackagep": [],
@ -1503,10 +1503,10 @@
"condp": [
{"type":"GTE","name":"","addr":"(TW)","loc":"d,118:22,118:24","dtypep":"(WE)",
"lhsp": [
{"type":"PARSEREF","name":"m_keyCount","addr":"(UW)","loc":"d,118:11,118:21","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"m_keyCount","addr":"(UW)","loc":"d,118:11,118:21","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
],
"rhsp": [
{"type":"PARSEREF","name":"keyCount","addr":"(VW)","loc":"d,118:25,118:33","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"keyCount","addr":"(VW)","loc":"d,118:25,118:33","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
]}
],
"thensp": [
@ -1516,14 +1516,14 @@
"rhsp": [
{"type":"SUB","name":"","addr":"(YW)","loc":"d,119:20,119:22","dtypep":"UNLINKED",
"lhsp": [
{"type":"PARSEREF","name":"m_keyCount","addr":"(ZW)","loc":"d,119:9,119:19","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"m_keyCount","addr":"(ZW)","loc":"d,119:9,119:19","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
],
"rhsp": [
{"type":"PARSEREF","name":"keyCount","addr":"(AX)","loc":"d,119:23,119:31","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"keyCount","addr":"(AX)","loc":"d,119:23,119:31","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
]}
],
"lhsp": [
{"type":"PARSEREF","name":"m_keyCount","addr":"(BX)","loc":"d,119:9,119:19","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"m_keyCount","addr":"(BX)","loc":"d,119:9,119:19","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
],"timingControlp": []},
{"type":"RETURN","name":"","addr":"(CX)","loc":"d,120:9,120:15",
"lhsp": [
@ -1585,7 +1585,7 @@
],"attrsp": []},
{"type":"RETURN","name":"","addr":"(BY)","loc":"d,145:7,145:13",
"lhsp": [
{"type":"PARSEREF","name":"p","addr":"(CY)","loc":"d,145:14,145:15","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"p","addr":"(CY)","loc":"d,145:14,145:15","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
]}
],"scopeNamep": []},
{"type":"TASK","name":"set_status","addr":"(DY)","loc":"d,148:29,148:39","method":false,"dpiExport":false,"dpiImport":false,"dpiOpenChild":false,"dpiOpenParent":false,"isExternDef":false,"isExternProto":false,"prototype":false,"recursive":false,"taskPublic":false,"cname":"set_status","fvarp": [],"classOrPackagep": [],
@ -1602,7 +1602,7 @@
"stmtsp": [
{"type":"RETURN","name":"","addr":"(IY)","loc":"d,158:7,158:13",
"lhsp": [
{"type":"PARSEREF","name":"RUNNING","addr":"(JY)","loc":"d,158:14,158:21","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"RUNNING","addr":"(JY)","loc":"d,158:14,158:21","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
]}
],"scopeNamep": []},
{"type":"TASK","name":"kill","addr":"(KY)","loc":"d,162:19,162:23","method":false,"dpiExport":false,"dpiImport":false,"dpiOpenChild":false,"dpiOpenParent":false,"isExternDef":false,"isExternProto":false,"prototype":false,"recursive":false,"taskPublic":false,"cname":"kill","fvarp": [],"classOrPackagep": [],
@ -1613,7 +1613,7 @@
"pinsp": [
{"type":"ARG","name":"","addr":"(NY)","loc":"d,163:18,163:24",
"exprp": [
{"type":"PARSEREF","name":"KILLED","addr":"(OY)","loc":"d,163:18,163:24","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"KILLED","addr":"(OY)","loc":"d,163:18,163:24","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
]}
],"scopeNamep": []}
]}
@ -1637,7 +1637,7 @@
"pinsp": [
{"type":"ARG","name":"","addr":"(YY)","loc":"d,171:18,171:25",
"exprp": [
{"type":"PARSEREF","name":"RUNNING","addr":"(ZY)","loc":"d,171:18,171:25","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"RUNNING","addr":"(ZY)","loc":"d,171:18,171:25","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
]}
],"scopeNamep": []}
]}
@ -1669,7 +1669,7 @@
"exprp": [
{"type":"DOT","name":"","addr":"(LZ)","loc":"d,230:8,230:9","dtypep":"UNLINKED","colon":false,
"lhsp": [
{"type":"PARSEREF","name":"s","addr":"(MZ)","loc":"d,230:7,230:8","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"s","addr":"(MZ)","loc":"d,230:7,230:8","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
],
"rhsp": [
{"type":"TASKREF","name":"itoa","addr":"(NZ)","loc":"d,230:9,230:13","dtypep":"(TT)","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","namep": [],
@ -1687,13 +1687,13 @@
"pinsp": [
{"type":"ARG","name":"","addr":"(SZ)","loc":"d,231:21,231:22",
"exprp": [
{"type":"PARSEREF","name":"s","addr":"(TZ)","loc":"d,231:21,231:22","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"s","addr":"(TZ)","loc":"d,231:21,231:22","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
]}
],"scopeNamep": []}
]},
{"type":"RETURN","name":"","addr":"(UZ)","loc":"d,232:7,232:13",
"lhsp": [
{"type":"PARSEREF","name":"s","addr":"(VZ)","loc":"d,232:14,232:15","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"s","addr":"(VZ)","loc":"d,232:14,232:15","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
]}
],"scopeNamep": []},
{"type":"TASK","name":"set_randstate","addr":"(WZ)","loc":"d,235:19,235:32","method":false,"dpiExport":false,"dpiImport":false,"dpiOpenChild":false,"dpiOpenParent":false,"isExternDef":false,"isExternProto":false,"prototype":false,"recursive":false,"taskPublic":false,"cname":"set_randstate","fvarp": [],"classOrPackagep": [],
@ -1708,7 +1708,7 @@
"seedp": [
{"type":"DOT","name":"","addr":"(BAB)","loc":"d,236:17,236:18","dtypep":"UNLINKED","colon":false,
"lhsp": [
{"type":"PARSEREF","name":"s","addr":"(CAB)","loc":"d,236:16,236:17","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"s","addr":"(CAB)","loc":"d,236:16,236:17","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
],
"rhsp": [
{"type":"FUNCREF","name":"atoi","addr":"(DAB)","loc":"d,236:18,236:22","dtypep":"UNLINKED","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","namep": [],"pinsp": [],"scopeNamep": []}
@ -1727,7 +1727,7 @@
{"type":"CONST","name":"?32?sh0","addr":"(HAB)","loc":"d,240:17,240:18","dtypep":"(N)"}
],
"lhsp": [
{"type":"PARSEREF","name":"randomize","addr":"(IAB)","loc":"d,240:5,240:14","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []}
{"type":"PARSEREF","name":"randomize","addr":"(IAB)","loc":"d,240:5,240:14","dtypep":"UNLINKED","lhsp": [],"ftaskrefp": []}
],"timingControlp": []}
],"scopeNamep": []}
]}