mirror of
https://github.com/verilator/verilator.git
synced 2025-05-01 21:16:53 +00:00
Commentary
This commit is contained in:
parent
ae33a1ceb1
commit
35a40b4930
@ -167,7 +167,7 @@ class AstEdgeType {
|
|||||||
public:
|
public:
|
||||||
// REMEMBER to edit the strings below too
|
// REMEMBER to edit the strings below too
|
||||||
enum en {
|
enum en {
|
||||||
// These must be in general -> most specific order, as we sort by it in V3Const::visit AstSenTre
|
// These must be in general -> most specific order, as we sort by it in V3Const::visit AstSenTree
|
||||||
ET_ILLEGAL,
|
ET_ILLEGAL,
|
||||||
// Involving a variable
|
// Involving a variable
|
||||||
ET_ANYEDGE, // Default for sensitivities; rip them out
|
ET_ANYEDGE, // Default for sensitivities; rip them out
|
||||||
|
@ -399,7 +399,7 @@ private:
|
|||||||
return rhs.m_keyword == m_keyword
|
return rhs.m_keyword == m_keyword
|
||||||
&& rhs.m_nrange == m_nrange; }
|
&& rhs.m_nrange == m_nrange; }
|
||||||
} m;
|
} m;
|
||||||
// See also in AstNodeDtype: m_width, m_widthMin, m_numeric(issigned)
|
// See also in AstNodeDType: m_width, m_widthMin, m_numeric(issigned)
|
||||||
public:
|
public:
|
||||||
AstBasicDType(FileLine* fl, AstBasicDTypeKwd kwd, VSignedState signst=signedst_NOSIGN)
|
AstBasicDType(FileLine* fl, AstBasicDTypeKwd kwd, VSignedState signst=signedst_NOSIGN)
|
||||||
: AstNodeDType(fl) {
|
: AstNodeDType(fl) {
|
||||||
@ -670,7 +670,7 @@ public:
|
|||||||
|
|
||||||
class AstMemberDType : public AstNodeDType {
|
class AstMemberDType : public AstNodeDType {
|
||||||
// A member of a struct/union
|
// A member of a struct/union
|
||||||
// PARENT: AstClassDType
|
// PARENT: AstNodeClassDType
|
||||||
private:
|
private:
|
||||||
AstNodeDType* m_refDTypep; // Elements of this type (after widthing)
|
AstNodeDType* m_refDTypep; // Elements of this type (after widthing)
|
||||||
string m_name; // Name of variable
|
string m_name; // Name of variable
|
||||||
@ -1949,7 +1949,7 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
class AstDot : public AstNode {
|
class AstDot : public AstNode {
|
||||||
// A dot separating paths in an AstXRef, AstFuncRef or AstTaskRef
|
// A dot separating paths in an AstVarXRef, AstFuncRef or AstTaskRef
|
||||||
// These are eliminated in the link stage
|
// These are eliminated in the link stage
|
||||||
public:
|
public:
|
||||||
AstDot(FileLine* fl, AstNode* lhsp, AstNode* rhsp)
|
AstDot(FileLine* fl, AstNode* lhsp, AstNode* rhsp)
|
||||||
|
@ -1607,7 +1607,7 @@ private:
|
|||||||
}
|
}
|
||||||
|
|
||||||
// virtual void visit(AstCvtPackString* nodep) {
|
// virtual void visit(AstCvtPackString* nodep) {
|
||||||
// Not constant propagated (for today) because AstMath::isOpaque is set
|
// Not constant propagated (for today) because AstNodeMath::isOpaque is set
|
||||||
// Someday if lower is constant, convert to quoted "string".
|
// Someday if lower is constant, convert to quoted "string".
|
||||||
|
|
||||||
bool onlySenItemInSenTree(AstNodeSenItem* nodep) {
|
bool onlySenItemInSenTree(AstNodeSenItem* nodep) {
|
||||||
|
@ -312,7 +312,7 @@ private:
|
|||||||
// {statement}Node::user1p -> GateLogicVertex* for this statement
|
// {statement}Node::user1p -> GateLogicVertex* for this statement
|
||||||
// AstVarScope::user2 -> bool: Signal used in SenItem in *this* always statement
|
// AstVarScope::user2 -> bool: Signal used in SenItem in *this* always statement
|
||||||
// AstVar::user2 -> bool: Warned about SYNCASYNCNET
|
// AstVar::user2 -> bool: Warned about SYNCASYNCNET
|
||||||
// AstVarNodeRef::user2 -> bool: ConcatOffset visited
|
// AstNodeVarRef::user2 -> bool: ConcatOffset visited
|
||||||
AstUser1InUse m_inuser1;
|
AstUser1InUse m_inuser1;
|
||||||
AstUser2InUse m_inuser2;
|
AstUser2InUse m_inuser2;
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@
|
|||||||
// For interface Parent's we have the AstIfaceRefDType::cellp()
|
// For interface Parent's we have the AstIfaceRefDType::cellp()
|
||||||
// pointing to this module. If that parent cell's interface
|
// pointing to this module. If that parent cell's interface
|
||||||
// module gets parameterized, AstIfaceRefDType::cloneRelink
|
// module gets parameterized, AstIfaceRefDType::cloneRelink
|
||||||
// will update AstIfaceRefDType::cellp(), and AstLinkDot will
|
// will update AstIfaceRefDType::cellp(), and V3LinkDot will
|
||||||
// see the new interface.
|
// see the new interface.
|
||||||
//
|
//
|
||||||
// However if a submodule's AstIfaceRefDType::ifacep() points
|
// However if a submodule's AstIfaceRefDType::ifacep() points
|
||||||
|
@ -55,7 +55,7 @@ class SliceVisitor : public AstNVisitor {
|
|||||||
// NODE STATE
|
// NODE STATE
|
||||||
// Cleared on netlist
|
// Cleared on netlist
|
||||||
// AstNodeAssign::user1() -> bool. True if find is complete
|
// AstNodeAssign::user1() -> bool. True if find is complete
|
||||||
// AstUniop::user1() -> bool. True if find is complete
|
// AstNodeUniop::user1() -> bool. True if find is complete
|
||||||
// AstArraySel::user1p() -> AstVarRef. The VarRef that the final ArraySel points to
|
// AstArraySel::user1p() -> AstVarRef. The VarRef that the final ArraySel points to
|
||||||
AstUser1InUse m_inuser1;
|
AstUser1InUse m_inuser1;
|
||||||
|
|
||||||
|
@ -1893,7 +1893,7 @@ genvar_iteration<nodep>: // ==IEEE: genvar_iteration
|
|||||||
| varRefBase yP_SRIGHTEQ expr { $$ = new AstAssign($2,$1,new AstShiftR ($2,$1->cloneTree(true),$3)); }
|
| varRefBase yP_SRIGHTEQ expr { $$ = new AstAssign($2,$1,new AstShiftR ($2,$1->cloneTree(true),$3)); }
|
||||||
| varRefBase yP_SSRIGHTEQ expr { $$ = new AstAssign($2,$1,new AstShiftRS($2,$1->cloneTree(true),$3)); }
|
| varRefBase yP_SSRIGHTEQ expr { $$ = new AstAssign($2,$1,new AstShiftRS($2,$1->cloneTree(true),$3)); }
|
||||||
// // inc_or_dec_operator
|
// // inc_or_dec_operator
|
||||||
// When support ++ as a real AST type, maybe AstWhile::precondsp() becomes generic AstMathStmt?
|
// When support ++ as a real AST type, maybe AstWhile::precondsp() becomes generic AstNodeMathStmt?
|
||||||
| yP_PLUSPLUS varRefBase { $$ = new AstAssign($1,$2,new AstAdd ($1,$2->cloneTree(true),new AstConst($1,V3Number($1,"'b1")))); }
|
| yP_PLUSPLUS varRefBase { $$ = new AstAssign($1,$2,new AstAdd ($1,$2->cloneTree(true),new AstConst($1,V3Number($1,"'b1")))); }
|
||||||
| yP_MINUSMINUS varRefBase { $$ = new AstAssign($1,$2,new AstSub ($1,$2->cloneTree(true),new AstConst($1,V3Number($1,"'b1")))); }
|
| yP_MINUSMINUS varRefBase { $$ = new AstAssign($1,$2,new AstSub ($1,$2->cloneTree(true),new AstConst($1,V3Number($1,"'b1")))); }
|
||||||
| varRefBase yP_PLUSPLUS { $$ = new AstAssign($2,$1,new AstAdd ($2,$1->cloneTree(true),new AstConst($2,V3Number($2,"'b1")))); }
|
| varRefBase yP_PLUSPLUS { $$ = new AstAssign($2,$1,new AstAdd ($2,$1->cloneTree(true),new AstConst($2,V3Number($2,"'b1")))); }
|
||||||
|
Loading…
Reference in New Issue
Block a user