make timing model check for internal clocks

Signed-off-by: James Cherry <cherry@parallaxsw.com>
This commit is contained in:
James Cherry 2022-11-02 17:06:51 -07:00
parent 07340bf90b
commit 65b6821c18
2 changed files with 15 additions and 1 deletions

View File

@ -71,8 +71,10 @@ MakeTimingModel::makeTimingModel(const char *lib_name,
makeCell(cell_name, filename);
makePorts();
for (Clock *clk : *sdc_->clocks())
for (Clock *clk : *sdc_->clocks()) {
sta_->setPropagatedClock(clk);
checkClock(clk);
}
sta_->searchPreamble();
graph_ = sta_->graph();
@ -157,6 +159,17 @@ MakeTimingModel::makePorts()
delete port_iter;
}
void
MakeTimingModel::checkClock(Clock *clk)
{
for (const Pin *pin : clk->leafPins()) {
if (!network_->isTopLevelPort(pin))
report_->warn(810, "clock %s pin %s is inside model block.",
clk->name(),
network_->pathName(pin));
}
}
////////////////////////////////////////////////////////////////
class MakeEndTimingArcs : public PathEndVisitor

View File

@ -59,6 +59,7 @@ private:
void makeCell(const char *cell_name,
const char *filename);
void makePorts();
void checkClock(Clock *clk);
void findTimingFromInputs();
void findClkedOutputPaths();
void findOutputDelays(const RiseFall *input_rf,