report_clock_min_period ignore mcp/path delays

Signed-off-by: James Cherry <cherry@parallaxsw.com>
This commit is contained in:
James Cherry 2021-10-08 08:09:28 -07:00
parent 401f4a283e
commit 69c16cce7f
4 changed files with 8 additions and 3 deletions

Binary file not shown.

Binary file not shown.

View File

@ -3073,16 +3073,21 @@ MinPeriodEndVisitor::copy()
void void
MinPeriodEndVisitor::visit(PathEnd *path_end) MinPeriodEndVisitor::visit(PathEnd *path_end)
{ {
Network *network = sta_->network();
Path *path = path_end->path(); Path *path = path_end->path();
ClockEdge *src_edge = path_end->sourceClkEdge(sta_); ClockEdge *src_edge = path_end->sourceClkEdge(sta_);
ClockEdge *tgt_edge = path_end->targetClkEdge(sta_); ClockEdge *tgt_edge = path_end->targetClkEdge(sta_);
if (path->minMax(sta_) == MinMax::max() PathEnd::Type end_type = path_end->type();
if ((end_type == PathEnd::Type::check
|| end_type == PathEnd::Type::output_delay)
&& path->minMax(sta_) == MinMax::max()
&& src_edge->clock() == clk_ && src_edge->clock() == clk_
&& tgt_edge->clock() == clk_ && tgt_edge->clock() == clk_
// Only consider rise/rise and fall/fall paths. // Only consider rise/rise and fall/fall paths.
&& src_edge->transition() == tgt_edge->transition() && src_edge->transition() == tgt_edge->transition()
&& path_end->multiCyclePath() == nullptr
&& (include_port_paths_ && (include_port_paths_
|| !(path_end->isOutputDelay() || !(network->isTopLevelPort(path->pin(sta_))
|| pathIsFromInputPort(path_end)))) { || pathIsFromInputPort(path_end)))) {
Slack slack = path_end->slack(sta_); Slack slack = path_end->slack(sta_);
float period = clk_->period() - slack; float period = clk_->period() - slack;

View File

@ -1087,7 +1087,7 @@ proc report_clock_min_period { args } {
if { [info exists keys(-clocks)] } { if { [info exists keys(-clocks)] } {
set clks [get_clocks $keys(-clocks)] set clks [get_clocks $keys(-clocks)]
} else { } else {
set clks [all_clocks] set clks [sort_by_name [all_clocks]]
} }
set include_port_paths [info exists flags(-include_port_paths)] set include_port_paths [info exists flags(-include_port_paths)]