// OpenSTA, Static Timing Analyzer // Copyright (c) 2024, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . #pragma once #include #include "SdcClass.hh" #include "StaState.hh" #include "Transition.hh" #include "SearchClass.hh" #include "PathVertex.hh" #include "ClkDelays.hh" namespace sta { typedef std::map ClkDelayMap; // Find and report clock skews between source/target registers. class ClkLatency : public StaState { public: ClkLatency(StaState *sta); // Report clk latency for clks. void reportClkLatency(ConstClockSeq &clks, const Corner *corner, bool include_internal_latency, int digits); ClkDelays findClkDelays(const Clock *clk, const Corner *corner, bool include_internal_latency); protected: ClkDelayMap findClkDelays(ConstClockSeq &clks, const Corner *corner, bool include_internal_latency); void reportClkLatency(const Clock *clk, ClkDelays &clk_delays, int digits); }; } // namespace