Files
OpenSTA/parasitics/ReportParasiticAnnotation.cc
T
James Cherry 902a1bff86 parasitics api update
commit 5eb41d9304fe43d22dcf32b5346a6c9705c0d0b3
Author: James Cherry <[email protected]>
Date:   Thu Feb 8 11:49:16 2024 -0700

    tcl endpoint_count

    Signed-off-by: James Cherry <[email protected]>

commit ffb0e0a083edbbdc3753b829641ba26730d3d882
Author: James Cherry <[email protected]>
Date:   Thu Feb 8 10:51:36 2024 -0700

    ArcDelayCalc::reduceParasitic

    Signed-off-by: James Cherry <[email protected]>

commit ed167b218ed026b0b7427301ace67c3d22cc969a
Author: James Cherry <[email protected]>
Date:   Wed Feb 7 22:46:40 2024 -0700

    parasitics makeResistor/capacitor rm network arg

    Signed-off-by: James Cherry <[email protected]>

commit 41244abfcfdee20ddc9aa8ac80cac2e3e7f68146
Author: James Cherry <[email protected]>
Date:   Wed Feb 7 17:08:04 2024 -0700

    arnoldi coupling caps

    Signed-off-by: James Cherry <[email protected]>

commit a14d6880be0dc22bf008cae63ec93880c8347ccf
Author: James Cherry <[email protected]>
Date:   Wed Feb 7 07:28:31 2024 -0700

    parasiticLoad

    Signed-off-by: James Cherry <[email protected]>

commit 1cacbd7da71c7f8c5ac311caabd03bb74b66e675
Author: James Cherry <[email protected]>
Date:   Wed Feb 7 07:21:49 2024 -0700

    parasitic resistor/capacitor index -> id

    Signed-off-by: James Cherry <[email protected]>

commit 6c749158cc94e5a91376721a8ccb71a8a4d020d5
Author: James Cherry <[email protected]>
Date:   Tue Feb 6 21:42:03 2024 -0700

    arnoldi

    Signed-off-by: James Cherry <[email protected]>

commit 4ffa6002224d76321287f64448929e5ef0ec6edd
Author: James Cherry <[email protected]>
Date:   Tue Feb 6 18:27:33 2024 -0700

    arnoldi parasitic leak

    Signed-off-by: James Cherry <[email protected]>

commit a9666dd7c44126b262c7bd1170db69fafa5ef327
Author: James Cherry <[email protected]>
Date:   Tue Feb 6 17:05:24 2024 -0700

    arnoldi parasitic leak

    Signed-off-by: James Cherry <[email protected]>

commit eca0e8b5ea3b4dbb22a1a2ed11018e6e40229b3f
Author: James Cherry <[email protected]>
Date:   Tue Feb 6 14:40:38 2024 -0700

    comment

    Signed-Off-by: James Cherry <[email protected]>

commit 0263245b5e2412ebefbedc67babf23e1ac047c7b
Author: James Cherry <[email protected]>
Date:   Tue Feb 6 14:24:51 2024 -0700

    CouplingCap -> Capacitor

    Signed-off-by: James Cherry <[email protected]>

commit f9da059814fb09c44cc3529a9a787c3c2192a4e9
Author: James Cherry <[email protected]>
Date:   Tue Feb 6 09:31:00 2024 -0700

    rm parasitic network array if empty

    Signed-off-by: James Cherry <[email protected]>

commit 28c2728e5f2859839818ef228aac51fd0100ae65
Author: James Cherry <[email protected]>
Date:   Tue Feb 6 08:13:03 2024 -0700

    parasitic resistor name -> id

    Signed-off-by: James Cherry <[email protected]>

commit 045fd7efa3ae8b1cf07c5aa421f3119022e3895a
Author: James Cherry <[email protected]>
Date:   Mon Feb 5 21:09:39 2024 -0700

    Map -> map

    Signed-off-by: James Cherry <[email protected]>

commit 8f7d18eed14a8173d91fd98a4e345a16d168b0ee
Author: James Cherry <[email protected]>
Date:   Mon Feb 5 21:04:35 2024 -0700

    ParasiticResistor, ParasiticCapacitor

    Signed-off-by: James Cherry <[email protected]>

commit e2df87a10febc573c77b51a22e82d2d1f6f52af9
Author: James Cherry <[email protected]>
Date:   Mon Feb 5 17:06:34 2024 -0700

    rm ParasticNode::devices

    Signed-off-by: James Cherry <[email protected]>

commit 07133b72b73d204d16f964472c38907c18f9758d
Author: James Cherry <[email protected]>
Date:   Mon Feb 5 16:52:43 2024 -0700

    Parsitic network nodes instead of nodeIterator

    Signed-off-by: James Cherry <[email protected]>

commit 48c08673b11d0c328ed7d70606b6c7a979d9d0b8
Author: James Cherry <[email protected]>
Date:   Mon Feb 5 16:34:31 2024 -0700

    mv otherNode to Parasitics

    Signed-off-by: James Cherry <[email protected]>

commit 99fccc76937c25c68454d8db667306bff2a142ae
Author: James Cherry <[email protected]>
Date:   Mon Feb 5 16:29:23 2024 -0700

    ParasiticNetwork resistor/capacitor array

    Signed-off-by: James Cherry <[email protected]>

commit 9de49992ad403d7bc3468c53201d50825d7b961c
Author: James Cherry <[email protected]>
Date:   Mon Feb 5 09:42:01 2024 -0700

    SpefNameMap

    Signed-off-by: James Cherry <[email protected]>

commit f296850201debeb2cfe1fd0b9c61c3c196f00d65
Author: James Cherry <[email protected]>
Date:   Mon Feb 5 09:11:17 2024 -0700

    comments

    Signed-off-by: James Cherry <[email protected]>

commit 86ca29b9bdeb732c1a596c196e0c4bf91de3ee37
Author: James Cherry <[email protected]>
Date:   Mon Feb 5 08:29:53 2024 -0700

    rm Parasitics::reduceTo

    Signed-off-by: James Cherry <[email protected]>

commit 880bf458d473004ee5d3dc33baa62c9e643ddaec
Author: James Cherry <[email protected]>
Date:   Sun Feb 4 20:15:05 2024 -0700

    loadCap

    Signed-off-by: James Cherry <[email protected]>

commit 67322e686f4703a2a5d9cdd1dd66534814662fe4
Author: James Cherry <[email protected]>
Date:   Sun Feb 4 09:39:21 2024 -0700

    report_parasitic_annotation

    Signed-off-by: James Cherry <[email protected]>

commit 8ef4e9841bca62a5879e74da83cacee70fa50b2f
Author: James Cherry <[email protected]>
Date:   Sat Feb 3 19:13:27 2024 -0700

    ParasiticAnalysisPt use string

    Signed-off-by: James Cherry <[email protected]>

commit 109a85ab37b5a869a72738ac6a6cd84e4a1d1ac4
Author: James Cherry <[email protected]>
Date:   Sat Feb 3 18:59:02 2024 -0700

    rm ParasiticAnalysisPt::min_max_

    Signed-off-by: James Cherry <[email protected]>

commit bb7874537d20a1fe905779fe46d783dba14e2db6
Author: James Cherry <[email protected]>
Date:   Sat Feb 3 12:21:28 2024 -0700

    parasitics rm pole_residue pointer

    Signed-off-by: James Cherry <[email protected]>

commit 9e1e2c484e5cd088a08afc278f25b9fcf2cc5dd9
Author: James Cherry <[email protected]>
Date:   Sat Feb 3 11:54:22 2024 -0700

    parasitics rm loads pointer

    Signed-off-by: James Cherry <[email protected]>

commit cb4a7f870b2371a2ac6b3ce1d340bb5d3c24791a
Author: James Cherry <[email protected]>
Date:   Sat Feb 3 08:05:55 2024 -0700

    parasitics use override

    Signed-off-by: James Cherry <[email protected]>

commit 8e0f84c4fec0411ad3626c836710545531ef219d
Author: James Cherry <[email protected]>
Date:   Sat Feb 3 07:53:59 2024 -0700

    Parasitics::unannotatedLoads

    Signed-off-by: James Cherry <[email protected]>

commit 6b45e369e7be158616219258e6e9a675e87fd8ca
Author: James Cherry <[email protected]>
Date:   Fri Feb 2 12:27:23 2024 -0700

    format

    Signed-off-by: James Cherry <[email protected]>

commit 27e820b36caf7867d20307c7045e86486819db6b
Author: James Cherry <[email protected]>
Date:   Thu Feb 1 18:01:51 2024 -0700

    rm op_cond args

    Signed-off-by: James Cherry <[email protected]>

commit 351ed53925c7cc9815f75c34a0320b0dc50445d4
Author: James Cherry <[email protected]>
Date:   Wed Jan 31 17:35:15 2024 -0700

    rm GraphDelayCalc::loadPins()

    Signed-off-by: James Cherry <[email protected]>

commit 3341c7caff595dab0b7519ab5103958aadfe1510
Author: James Cherry <[email protected]>
Date:   Wed Jan 31 17:31:56 2024 -0700

    read_spef arg check

    Signed-off-by: James Cherry <[email protected]>

commit 7d0c1e78b42e33d5298efefa87a982f28f51bc57
Author: James Cherry <[email protected]>
Date:   Wed Jan 31 10:53:35 2024 -0700

    arnoldi use parasitics api

    Signed-off-by: James Cherry <[email protected]>

commit 86b39ac10e5c6556a9b0b5b7bce016884cd935ee
Author: James Cherry <[email protected]>
Date:   Wed Jan 31 10:30:47 2024 -0700

    range iter

    Signed-off-by: James Cherry <[email protected]>

commit 469fad36af69cc8b76e4dfc88a085962795d7c46
Author: James Cherry <[email protected]>
Date:   Tue Jan 30 16:43:46 2024 -0700

    read_spef -reduce

    Signed-off-by: James Cherry <[email protected]>

commit 2b88aa471f083ae895f6277c2c844e308451fff9
Author: James Cherry <[email protected]>
Date:   Mon Jan 29 20:31:47 2024 -0700

    Paraasitics::connectionPin() -> pin()

    Signed-off-by: James Cherry <[email protected]>

commit 7b9ff7e228b215b3121b7e7189d9c0c18ced3ef3
Author: James Cherry <[email protected]>
Date:   Mon Jan 29 17:12:32 2024 -0700

    ParasiticNode::isExternal()

    Signed-off-by: James Cherry <[email protected]>

commit 889c27af846ed1cdf76295da5262836378ab9162
Author: James Cherry <[email protected]>
Date:   Mon Jan 29 11:17:59 2024 -0700

    rm redundant op_cond arg

    Signed-off-by: James Cherry <[email protected]>

commit 7d7ce5e7809bc80f36dd81cb05615a87433ed315
Author: James Cherry <[email protected]>
Date:   Mon Jan 29 11:03:42 2024 -0700

    mv estimatePiElmore to Parasitics

    Signed-off-by: James Cherry <[email protected]>

commit 04e1757b3c8b4e9f5cffbe3b03214fc065fb1c2c
Author: James Cherry <[email protected]>
Date:   Mon Jan 29 09:09:28 2024 -0700

    ParasiticNode un-virtual

    Signed-off-by: James Cherry <[email protected]>

commit 016ce50f82cbb68f9536d3ed5fd511b2f82f4439
Author: James Cherry <[email protected]>
Date:   Sun Jan 28 17:26:04 2024 -0700

    parasitics coupling cap api

    Signed-off-by: James Cherry <[email protected]>

commit 1748629fb462b24b43002ecd3fe1679d367752f4
Author: James Cherry <[email protected]>
Date:   Sun Jan 28 11:12:46 2024 -0700

    Parasitics::value rm ap arg

    Signed-off-by: James Cherry <[email protected]>

commit 1272cb86bcae5960c9af7d589f99f1488aa0b322
Author: James Cherry <[email protected]>
Date:   Sun Jan 28 11:10:57 2024 -0700

    read_spef rm -quiet arg

    Signed-off-by: James Cherry <[email protected]>

commit 3d86a9d86115dde5f20eb4bb8ca15f0c85de5810
Author: James Cherry <[email protected]>
Date:   Sun Jan 28 11:01:24 2024 -0700

    reduce min_max arg

    Signed-off-by: James Cherry <[email protected]>

commit f7abfd5e72e0f74b9ffabf6306bbf809b62d4e98
Author: James Cherry <[email protected]>
Date:   Sun Jan 28 10:59:29 2024 -0700

    rm spef_reader

    Signed-off-by: James Cherry <[email protected]>

commit e3550523b1964b2137419240f748a0b44c3322b6
Author: James Cherry <[email protected]>
Date:   Sun Jan 28 10:58:24 2024 -0700

    reducers rm op_cond arg

    Signed-off-by: James Cherry <[email protected]>

commit cec793accb3db5c41cdb51f85c8530ffc1e085db
Author: James Cherry <[email protected]>
Date:   Sun Jan 28 10:08:45 2024 -0700

    rm NullParastics

    Signed-off-by: James Cherry <[email protected]>

commit 6596d35f6da51cbacb2c21588715773d3b5edb64
Author: James Cherry <[email protected]>
Date:   Sun Jan 28 10:03:29 2024 -0700

    ArcDelayCalc::reduceParasitic

    Signed-off-by: James Cherry <[email protected]>

Signed-off-by: James Cherry <[email protected]>
2024-02-08 13:54:52 -07:00

133 lines
4.1 KiB
C++

// 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 <https://www.gnu.org/licenses/>.
#include "ReportParasiticAnnotation.hh"
#include "Report.hh"
#include "Network.hh"
#include "NetworkCmp.hh"
#include "PortDirection.hh"
#include "Graph.hh"
#include "Corner.hh"
#include "Parasitics.hh"
#include "DcalcAnalysisPt.hh"
#include "ArcDelayCalc.hh"
namespace sta {
class ReportParasiticAnnotation : public StaState
{
public:
ReportParasiticAnnotation(bool report_unannotated,
const Corner *corner,
StaState *sta);
void report();
private:
void reportAnnotationCounts();
void findCounts();
void findCounts(Instance *inst);
void findCounts(Net *net);
bool report_unannotated_;
const Corner *corner_;
const MinMax *min_max_;
const ParasiticAnalysisPt *parasitic_ap_;
PinSeq unannotated_;
PinSeq partially_annotated_;
};
void
reportParasiticAnnotation(bool report_unannotated,
const Corner *corner,
StaState *sta)
{
ReportParasiticAnnotation report_annotation(report_unannotated, corner, sta);
report_annotation.report();
}
ReportParasiticAnnotation::ReportParasiticAnnotation(bool report_unannotated,
const Corner *corner,
StaState *sta) :
StaState(sta),
report_unannotated_(report_unannotated),
corner_(corner),
min_max_(MinMax::max()),
parasitic_ap_(corner_->findParasiticAnalysisPt(min_max_))
{
}
void
ReportParasiticAnnotation::report()
{
findCounts();
reportAnnotationCounts();
}
void
ReportParasiticAnnotation::reportAnnotationCounts()
{
report_->reportLine("Found %lu unannotated drivers.", unannotated_.size());
if (report_unannotated_) {
sort(unannotated_, PinPathNameLess(network_));
for (const Pin *drvr_pin : unannotated_)
report_->reportLine(" %s", network_->pathName(drvr_pin));
}
report_->reportLine("Found %lu partially unannotated drivers.",
partially_annotated_.size());
if (report_unannotated_) {
sort(partially_annotated_, PinPathNameLess(network_));
for (const Pin *drvr_pin : partially_annotated_) {
report_->reportLine(" %s", network_->pathName(drvr_pin));
Parasitic *parasitic = parasitics_->findParasiticNetwork(drvr_pin, parasitic_ap_);
if (parasitic) {
PinSet unannotated_loads = parasitics_->unannotatedLoads(parasitic, drvr_pin);
for (const Pin *load_pin : unannotated_loads)
report_->reportLine(" %s", network_->pathName(load_pin));
}
}
}
}
void
ReportParasiticAnnotation::findCounts()
{
DcalcAnalysisPt *dcalc_ap = corner_->findDcalcAnalysisPt(min_max_);
VertexIterator vertex_iter(graph_);
while (vertex_iter.hasNext()) {
Vertex *vertex = vertex_iter.next();
Pin *pin = vertex->pin();
PortDirection *dir = network_->direction(pin);
if (vertex->isDriver(network_)
&& !dir->isInternal()) {
Parasitic *parasitic = parasitics_->findParasiticNetwork(pin, parasitic_ap_);
if (parasitic == nullptr)
parasitic = arc_delay_calc_->findParasitic(pin, RiseFall::rise(), dcalc_ap);
if (parasitic) {
PinSet unannotated_loads = parasitics_->unannotatedLoads(parasitic, pin);
if (unannotated_loads.size() > 0)
partially_annotated_.push_back(pin);
}
else
unannotated_.push_back(pin);
}
}
}
} // namespace