Signed-off-by: James Cherry <cherry@parallaxsw.com>
This commit is contained in:
parent
4e5ab7ca26
commit
1c0c6e06f3
|
|
@ -261,10 +261,9 @@ public:
|
||||||
const PathAnalysisPt *path_ap);
|
const PathAnalysisPt *path_ap);
|
||||||
ClkInfo *thruClkInfo(PathVertex *from_path,
|
ClkInfo *thruClkInfo(PathVertex *from_path,
|
||||||
ClkInfo *from_clk_info,
|
ClkInfo *from_clk_info,
|
||||||
bool from_is_clk,
|
|
||||||
Edge *edge,
|
Edge *edge,
|
||||||
|
Vertex *to_vertex,
|
||||||
const Pin *to_pin,
|
const Pin *to_pin,
|
||||||
bool to_is_clk,
|
|
||||||
const MinMax *min_max,
|
const MinMax *min_max,
|
||||||
const PathAnalysisPt *path_ap);
|
const PathAnalysisPt *path_ap);
|
||||||
ClkInfo *clkInfoWithCrprClkPath(ClkInfo *from_clk_info,
|
ClkInfo *clkInfoWithCrprClkPath(ClkInfo *from_clk_info,
|
||||||
|
|
|
||||||
|
|
@ -2170,7 +2170,9 @@ PathVisitor::visitFromPath(const Pin *from_pin,
|
||||||
// passed thru reg/latch D->Q edges.
|
// passed thru reg/latch D->Q edges.
|
||||||
&& from_tag->isClock())) {
|
&& from_tag->isClock())) {
|
||||||
const RiseFall *clk_rf = clk_edge ? clk_edge->transition() : nullptr;
|
const RiseFall *clk_rf = clk_edge ? clk_edge->transition() : nullptr;
|
||||||
ClkInfo *to_clk_info = search_->clkInfoWithCrprClkPath(from_clk_info,
|
ClkInfo *to_clk_info = from_clk_info;
|
||||||
|
if (network_->direction(to_pin)->isInternal())
|
||||||
|
to_clk_info = search_->clkInfoWithCrprClkPath(from_clk_info,
|
||||||
from_path, path_ap);
|
from_path, path_ap);
|
||||||
to_tag = search_->fromRegClkTag(from_pin, from_rf, clk, clk_rf,
|
to_tag = search_->fromRegClkTag(from_pin, from_rf, clk, clk_rf,
|
||||||
to_clk_info, to_pin, to_rf, min_max,
|
to_clk_info, to_pin, to_rf, min_max,
|
||||||
|
|
@ -2425,8 +2427,8 @@ Search::thruClkTag(PathVertex *from_path,
|
||||||
&& to_propagates_clk
|
&& to_propagates_clk
|
||||||
&& (role->isWire()
|
&& (role->isWire()
|
||||||
|| role == TimingRole::combinational()));
|
|| role == TimingRole::combinational()));
|
||||||
ClkInfo *to_clk_info = thruClkInfo(from_path, from_clk_info, from_is_clk,
|
ClkInfo *to_clk_info = thruClkInfo(from_path, from_clk_info,
|
||||||
edge, to_pin, to_is_clk,
|
edge, to_vertex, to_pin,
|
||||||
min_max, path_ap);
|
min_max, path_ap);
|
||||||
Tag *to_tag = mutateTag(from_tag,from_pin,from_rf,from_is_clk,from_clk_info,
|
Tag *to_tag = mutateTag(from_tag,from_pin,from_rf,from_is_clk,from_clk_info,
|
||||||
to_pin, to_rf, to_is_clk, to_is_reg_clk, false,
|
to_pin, to_rf, to_is_clk, to_is_reg_clk, false,
|
||||||
|
|
@ -2438,10 +2440,9 @@ Search::thruClkTag(PathVertex *from_path,
|
||||||
ClkInfo *
|
ClkInfo *
|
||||||
Search::thruClkInfo(PathVertex *from_path,
|
Search::thruClkInfo(PathVertex *from_path,
|
||||||
ClkInfo *from_clk_info,
|
ClkInfo *from_clk_info,
|
||||||
bool from_is_clk,
|
|
||||||
Edge *edge,
|
Edge *edge,
|
||||||
|
Vertex *to_vertex,
|
||||||
const Pin *to_pin,
|
const Pin *to_pin,
|
||||||
bool to_is_clk,
|
|
||||||
const MinMax *min_max,
|
const MinMax *min_max,
|
||||||
const PathAnalysisPt *path_ap)
|
const PathAnalysisPt *path_ap)
|
||||||
{
|
{
|
||||||
|
|
@ -2472,7 +2473,7 @@ Search::thruClkInfo(PathVertex *from_path,
|
||||||
|
|
||||||
PathVertex *to_crpr_clk_path = nullptr;
|
PathVertex *to_crpr_clk_path = nullptr;
|
||||||
if (sdc_->crprActive()
|
if (sdc_->crprActive()
|
||||||
&& from_is_clk && !to_is_clk) {
|
&& to_vertex->isRegClk()) {
|
||||||
to_crpr_clk_path = from_path;
|
to_crpr_clk_path = from_path;
|
||||||
changed = true;
|
changed = true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue