check_setup ignore constant nets resolves #224
Signed-off-by: James Cherry <cherry@parallaxsw.com>
This commit is contained in:
parent
c6d8e3cf91
commit
e9b92fddfb
|
|
@ -246,9 +246,11 @@ CheckTiming::checkUnconstraintedOutputs(PinSet &unconstrained_ends)
|
|||
while (pin_iter->hasNext()) {
|
||||
Pin *pin = pin_iter->next();
|
||||
PortDirection *dir = network_->direction(pin);
|
||||
Vertex *vertex = graph_->pinLoadVertex(pin);
|
||||
if (dir->isAnyOutput()
|
||||
&& !((hasClkedDepature(pin)
|
||||
&& hasClkedArrival(graph_->pinLoadVertex(pin)))
|
||||
&& !vertex->isConstant()
|
||||
&& !((hasClkedDepature(pin)
|
||||
&& hasClkedArrival(vertex))
|
||||
|| hasMaxDelay(pin)))
|
||||
unconstrained_ends.insert(pin);
|
||||
}
|
||||
|
|
@ -294,14 +296,16 @@ CheckTiming::checkUnconstrainedSetups(PinSet &unconstrained_ends)
|
|||
VertexIterator vertex_iter(graph_);
|
||||
while (vertex_iter.hasNext()) {
|
||||
Vertex *vertex = vertex_iter.next();
|
||||
VertexInEdgeIterator edge_iter(vertex, graph_);
|
||||
while (edge_iter.hasNext()) {
|
||||
Edge *edge = edge_iter.next();
|
||||
if (edge->role() == TimingRole::setup()
|
||||
&& (!search_->isClock(edge->from(graph_))
|
||||
|| !hasClkedArrival(edge->to(graph_)))) {
|
||||
unconstrained_ends.insert(vertex->pin());
|
||||
break;
|
||||
if (!vertex->isConstant()) {
|
||||
VertexInEdgeIterator edge_iter(vertex, graph_);
|
||||
while (edge_iter.hasNext()) {
|
||||
Edge *edge = edge_iter.next();
|
||||
if (edge->role() == TimingRole::setup()
|
||||
&& (!search_->isClock(edge->from(graph_))
|
||||
|| !hasClkedArrival(edge->to(graph_)))) {
|
||||
unconstrained_ends.insert(vertex->pin());
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue