1 // OpenSTA, Static Timing Analyzer 2 // Copyright (c) 2020, Parallax Software, Inc. 3 // 4 // This program is free software: you can redistribute it and/or modify 5 // it under the terms of the GNU General Public License as published by 6 // the Free Software Foundation, either version 3 of the License, or 7 // (at your option) any later version. 8 // 9 // This program is distributed in the hope that it will be useful, 10 // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 // GNU General Public License for more details. 13 // 14 // You should have received a copy of the GNU General Public License 15 // along with this program. If not, see <https://www.gnu.org/licenses/>. 16 17 #pragma once 18 19 #include "DisallowCopyAssign.hh" 20 #include "Iterator.hh" 21 #include "MinMax.hh" 22 #include "SdcClass.hh" 23 #include "SearchClass.hh" 24 25 namespace sta { 26 27 class MinMax; 28 class DcalcAnalysisPt; 29 class Corner; 30 31 class PathAnalysisPt 32 { 33 public: 34 PathAnalysisPt(Corner *corner, 35 PathAPIndex index, 36 const MinMax *path_min_max, 37 DcalcAnalysisPt *dcalc_ap); corner() const38 Corner *corner() const { return corner_; } index() const39 PathAPIndex index() const { return index_; } pathMinMax() const40 const MinMax *pathMinMax() const { return path_min_max_; } 41 // Converging path arrival merging. mergeMinMax() const42 const MinMax *mergeMinMax() const { return path_min_max_; } 43 // Path analysis point for timing check target clock arrivals. tgtClkAnalysisPt() const44 PathAnalysisPt *tgtClkAnalysisPt() const { return tgt_clk_ap_; } 45 void setTgtClkAnalysisPt(PathAnalysisPt *path_ap); dcalcAnalysisPt() const46 DcalcAnalysisPt *dcalcAnalysisPt() const { return dcalc_ap_; } 47 PathAnalysisPt *insertionAnalysisPt(const EarlyLate *early_late) const; 48 void setInsertionAnalysisPt(const EarlyLate *early_late, PathAnalysisPt *ap); 49 50 private: 51 DISALLOW_COPY_AND_ASSIGN(PathAnalysisPt); 52 53 Corner *corner_; 54 PathAPIndex index_; 55 const MinMax *path_min_max_; 56 PathAnalysisPt *tgt_clk_ap_; 57 PathAnalysisPt *insertion_aps_[EarlyLate::index_count]; 58 DcalcAnalysisPt *dcalc_ap_; 59 }; 60 61 } // namespace 62