mirror of
https://github.com/verilator/verilator.git
synced 2025-05-02 05:26:53 +00:00
Merge from master
This commit is contained in:
commit
4c7a397dc4
@ -373,8 +373,8 @@ public:
|
|||||||
return names[m_e];
|
return names[m_e];
|
||||||
};
|
};
|
||||||
static void selfTest() {
|
static void selfTest() {
|
||||||
UASSERT(0==strcmp(AstBasicDTypeKwd(_ENUM_MAX).ascii()," MAX"),"Enum array mismatch");
|
UASSERT(0==strcmp(AstBasicDTypeKwd(_ENUM_MAX).ascii()," MAX"), "SelfTest: Enum mismatch");
|
||||||
UASSERT(0==strcmp(AstBasicDTypeKwd(_ENUM_MAX).dpiType()," MAX"),"Enum array mismatch");
|
UASSERT(0==strcmp(AstBasicDTypeKwd(_ENUM_MAX).dpiType()," MAX"),"SelfTest: Enum mismatch");
|
||||||
}
|
}
|
||||||
inline AstBasicDTypeKwd () : m_e(UNKNOWN) {}
|
inline AstBasicDTypeKwd () : m_e(UNKNOWN) {}
|
||||||
// cppcheck-suppress noExplicitConstructor
|
// cppcheck-suppress noExplicitConstructor
|
||||||
|
@ -119,9 +119,12 @@ public:
|
|||||||
gp->stronglyConnected(&V3GraphEdge::followAlwaysTrue);
|
gp->stronglyConnected(&V3GraphEdge::followAlwaysTrue);
|
||||||
dump();
|
dump();
|
||||||
|
|
||||||
UASSERT(i->color()!=a->color() && a->color() != g2->color() && g2->color() != q->color(), "Separate colors not assigned");
|
UASSERT(i->color()!=a->color() && a->color() != g2->color() && g2->color() != q->color(),
|
||||||
UASSERT(a->color()==b->color() && a->color()==g1->color(), "Strongly connected nodes not colored together");
|
"SelfTest: Separate colors not assigned");
|
||||||
UASSERT(g2->color()==g3->color(), "Strongly connected nodes not colored together");
|
UASSERT(a->color()==b->color() && a->color()==g1->color(),
|
||||||
|
"SelfTest: Strongly connected nodes not colored together");
|
||||||
|
UASSERT(g2->color()==g3->color(),
|
||||||
|
"SelfTest: Strongly connected nodes not colored together");
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -210,18 +210,17 @@ public:
|
|||||||
|
|
||||||
class OrderVarVertex : public OrderEitherVertex {
|
class OrderVarVertex : public OrderEitherVertex {
|
||||||
AstVarScope* m_varScp;
|
AstVarScope* m_varScp;
|
||||||
OrderVarVertex* m_pilNewVertexp; // for processInsLoopNewVar
|
|
||||||
bool m_isClock; // Used as clock
|
bool m_isClock; // Used as clock
|
||||||
bool m_isDelayed; // Set in a delayed assignment
|
bool m_isDelayed; // Set in a delayed assignment
|
||||||
protected:
|
protected:
|
||||||
OrderVarVertex(V3Graph* graphp, const OrderVarVertex& old)
|
OrderVarVertex(V3Graph* graphp, const OrderVarVertex& old)
|
||||||
: OrderEitherVertex(graphp, old)
|
: OrderEitherVertex(graphp, old)
|
||||||
, m_varScp(old.m_varScp), m_pilNewVertexp(old.m_pilNewVertexp), m_isClock(old.m_isClock)
|
, m_varScp(old.m_varScp), m_isClock(old.m_isClock)
|
||||||
, m_isDelayed(old.m_isDelayed) {}
|
, m_isDelayed(old.m_isDelayed) {}
|
||||||
public:
|
public:
|
||||||
OrderVarVertex(V3Graph* graphp, AstScope* scopep, AstVarScope* varScp)
|
OrderVarVertex(V3Graph* graphp, AstScope* scopep, AstVarScope* varScp)
|
||||||
: OrderEitherVertex(graphp, scopep, NULL), m_varScp(varScp)
|
: OrderEitherVertex(graphp, scopep, NULL), m_varScp(varScp)
|
||||||
, m_pilNewVertexp(NULL), m_isClock(false), m_isDelayed(false) {}
|
, m_isClock(false), m_isDelayed(false) {}
|
||||||
virtual ~OrderVarVertex() {}
|
virtual ~OrderVarVertex() {}
|
||||||
virtual OrderVarVertex* clone (V3Graph* graphp) const = 0;
|
virtual OrderVarVertex* clone (V3Graph* graphp) const = 0;
|
||||||
virtual OrderVEdgeType type() const = 0;
|
virtual OrderVEdgeType type() const = 0;
|
||||||
@ -231,8 +230,6 @@ public:
|
|||||||
bool isClock() const { return m_isClock; }
|
bool isClock() const { return m_isClock; }
|
||||||
void isDelayed(bool flag) { m_isDelayed=flag; }
|
void isDelayed(bool flag) { m_isDelayed=flag; }
|
||||||
bool isDelayed() const { return m_isDelayed; }
|
bool isDelayed() const { return m_isDelayed; }
|
||||||
OrderVarVertex* pilNewVertexp() const { return m_pilNewVertexp; }
|
|
||||||
void pilNewVertexp (OrderVarVertex* vertexp) { m_pilNewVertexp = vertexp; }
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class OrderVarStdVertex : public OrderVarVertex {
|
class OrderVarStdVertex : public OrderVarVertex {
|
||||||
|
@ -193,12 +193,16 @@ private:
|
|||||||
// Find it in the clone structure
|
// Find it in the clone structure
|
||||||
//UINFO(8,"Clone find 0x"<<hex<<(uint32_t)pinp->modVarp()<<endl);
|
//UINFO(8,"Clone find 0x"<<hex<<(uint32_t)pinp->modVarp()<<endl);
|
||||||
CloneMap::iterator cloneiter = clonemapp->find(pinp->modVarp());
|
CloneMap::iterator cloneiter = clonemapp->find(pinp->modVarp());
|
||||||
UASSERT(cloneiter != clonemapp->end(), "Couldn't find pin in clone list");
|
if (cloneiter == clonemapp->end()) {
|
||||||
|
pinp->v3fatalSrc("Couldn't find pin in clone list");
|
||||||
|
}
|
||||||
pinp->modVarp(VN_CAST(cloneiter->second, Var));
|
pinp->modVarp(VN_CAST(cloneiter->second, Var));
|
||||||
}
|
}
|
||||||
else if (pinp->modPTypep()) {
|
else if (pinp->modPTypep()) {
|
||||||
CloneMap::iterator cloneiter = clonemapp->find(pinp->modPTypep());
|
CloneMap::iterator cloneiter = clonemapp->find(pinp->modPTypep());
|
||||||
UASSERT(cloneiter != clonemapp->end(), "Couldn't find pin in clone list");
|
if (cloneiter == clonemapp->end()) {
|
||||||
|
pinp->v3fatalSrc("Couldn't find pin in clone list");
|
||||||
|
}
|
||||||
pinp->modPTypep(VN_CAST(cloneiter->second, ParamTypeDType));
|
pinp->modPTypep(VN_CAST(cloneiter->second, ParamTypeDType));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
Loading…
Reference in New Issue
Block a user