Merge remote-tracking branch 'upstream/master'
This commit is contained in:
commit
d213f0fa71
|
|
@ -22,7 +22,7 @@ BreakBeforeBinaryOperators: NonAssignment
|
||||||
BreakBeforeBraces: Custom
|
BreakBeforeBraces: Custom
|
||||||
# fails if all initializers fit on one line
|
# fails if all initializers fit on one line
|
||||||
BreakConstructorInitializers: AfterColon
|
BreakConstructorInitializers: AfterColon
|
||||||
ColumnLimit: 90
|
ColumnLimit: 85
|
||||||
# fails
|
# fails
|
||||||
ConstructorInitializerIndentWidth: 2
|
ConstructorInitializerIndentWidth: 2
|
||||||
IncludeBlocks: Preserve
|
IncludeBlocks: Preserve
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ RUN sed -i s/mirror.centos.org/vault.centos.org/g /etc/yum.repos.d/*.repo \
|
||||||
RUN sed -i s/mirror.centos.org/vault.centos.org/g /etc/yum.repos.d/*.repo \
|
RUN sed -i s/mirror.centos.org/vault.centos.org/g /etc/yum.repos.d/*.repo \
|
||||||
&& sed -i s/^#.*baseurl=http/baseurl=http/g /etc/yum.repos.d/*.repo \
|
&& sed -i s/^#.*baseurl=http/baseurl=http/g /etc/yum.repos.d/*.repo \
|
||||||
&& sed -i s/^mirrorlist=http/#mirrorlist=http/g /etc/yum.repos.d/*.repo \
|
&& sed -i s/^mirrorlist=http/#mirrorlist=http/g /etc/yum.repos.d/*.repo \
|
||||||
&& yum install -y devtoolset-11 wget cmake3 make eigen3-devel tcl swig3 flex zlib-devel valgrind \
|
&& yum install -y devtoolset-11 git wget cmake3 make eigen3-devel tcl swig3 flex zlib-devel valgrind \
|
||||||
&& yum clean -y all
|
&& yum clean -y all
|
||||||
|
|
||||||
RUN ln -sf /usr/bin/cmake3 /usr/bin/cmake
|
RUN ln -sf /usr/bin/cmake3 /usr/bin/cmake
|
||||||
|
|
|
||||||
12
README.md
12
README.md
|
|
@ -184,13 +184,23 @@ files in the build directory.
|
||||||
|
|
||||||
## Build with Docker
|
## Build with Docker
|
||||||
|
|
||||||
An alternative way to build and run OpenSTA is with
|
AN alternative way to build and run OpenSTA is with
|
||||||
[Docker](https://www.docker.com). After installing Docker, the
|
[Docker](https://www.docker.com). After installing Docker, the
|
||||||
following command builds a Docker image.
|
following command builds a Docker image.
|
||||||
|
|
||||||
```
|
```
|
||||||
cd OpenSTA
|
cd OpenSTA
|
||||||
docker build --file Dockerfile.ubuntu22.04 --tag opensta_ubuntu22.04 .
|
docker build --file Dockerfile.ubuntu22.04 --tag opensta_ubuntu22.04 .
|
||||||
|
or
|
||||||
|
docker build --file Dockerfile.centos7 --tag opensta_centos7 .
|
||||||
|
```
|
||||||
|
|
||||||
|
The centos7 build on mac/OsX with ARM processorts requires the platform
|
||||||
|
to be specified.
|
||||||
|
|
||||||
|
```
|
||||||
|
docker build --file Dockerfile.centos7 --platform=linux/amd64 --tag opensta_centos7 .
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
To run a docker container using the OpenSTA image, use the -v option
|
To run a docker container using the OpenSTA image, use the -v option
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
@ -119,7 +119,7 @@ class ArnoldiDelayCalc : public LumpedCapDelayCalc
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ArnoldiDelayCalc(StaState *sta);
|
ArnoldiDelayCalc(StaState *sta);
|
||||||
virtual ~ArnoldiDelayCalc();
|
~ArnoldiDelayCalc() override;
|
||||||
ArcDelayCalc *copy() override;
|
ArcDelayCalc *copy() override;
|
||||||
const char *name() const override { return "arnoldi"; }
|
const char *name() const override { return "arnoldi"; }
|
||||||
Parasitic *findParasitic(const Pin *drvr_pin,
|
Parasitic *findParasitic(const Pin *drvr_pin,
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
@ -340,8 +340,8 @@ CcsCeffDelayCalc::loadDelaySlew(const Pin *load_pin,
|
||||||
ArcDelay &wire_delay,
|
ArcDelay &wire_delay,
|
||||||
Slew &load_slew)
|
Slew &load_slew)
|
||||||
{
|
{
|
||||||
ArcDelay wire_delay1 = 0.0;
|
wire_delay = 0.0;
|
||||||
Slew load_slew1 = drvr_slew;
|
load_slew = drvr_slew;
|
||||||
bool elmore_exists = false;
|
bool elmore_exists = false;
|
||||||
float elmore = 0.0;
|
float elmore = 0.0;
|
||||||
if (parasitic_
|
if (parasitic_
|
||||||
|
|
@ -352,15 +352,13 @@ CcsCeffDelayCalc::loadDelaySlew(const Pin *load_pin,
|
||||||
(elmore == 0.0
|
(elmore == 0.0
|
||||||
// Elmore delay is small compared to driver slew.
|
// Elmore delay is small compared to driver slew.
|
||||||
|| elmore < delayAsFloat(drvr_slew) * 1e-3)) {
|
|| elmore < delayAsFloat(drvr_slew) * 1e-3)) {
|
||||||
wire_delay1 = elmore;
|
wire_delay = elmore;
|
||||||
load_slew1 = drvr_slew;
|
load_slew = drvr_slew;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
loadDelaySlew(load_pin, drvr_slew, elmore, wire_delay1, load_slew1);
|
loadDelaySlew(load_pin, drvr_slew, elmore, wire_delay, load_slew);
|
||||||
|
|
||||||
thresholdAdjust(load_pin, drvr_library, rf, wire_delay, load_slew);
|
thresholdAdjust(load_pin, drvr_library, rf, wire_delay, load_slew);
|
||||||
wire_delay = wire_delay1;
|
|
||||||
load_slew = load_slew1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
# OpenSTA, Static Timing Analyzer
|
# OpenSTA, Static Timing Analyzer
|
||||||
# Copyright (c) 2025, Parallax Software, Inc.
|
# Copyright (c) 2026, Parallax Software, Inc.
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# 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
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
@ -77,7 +77,6 @@ class DmpError : public Exception
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
DmpError(const char *what);
|
DmpError(const char *what);
|
||||||
virtual ~DmpError() {}
|
|
||||||
virtual const char *what() const noexcept { return what_; }
|
virtual const char *what() const noexcept { return what_; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
@ -107,7 +107,7 @@ public:
|
||||||
int &bidirect_count,
|
int &bidirect_count,
|
||||||
int &load_count,
|
int &load_count,
|
||||||
const Network *network);
|
const Network *network);
|
||||||
virtual void operator()(const Pin *pin);
|
void operator()(const Pin *pin) override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
Pin *drvr_pin_;
|
Pin *drvr_pin_;
|
||||||
|
|
@ -345,8 +345,8 @@ public:
|
||||||
MakeEdgesThruHierPin(Graph *graph);
|
MakeEdgesThruHierPin(Graph *graph);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
virtual void visit(const Pin *drvr,
|
void visit(const Pin *drvr,
|
||||||
const Pin *load);
|
const Pin *load) override;
|
||||||
|
|
||||||
Graph *graph_;
|
Graph *graph_;
|
||||||
};
|
};
|
||||||
|
|
@ -1483,8 +1483,8 @@ class FindEdgesThruHierPinVisitor : public HierPinThruVisitor
|
||||||
public:
|
public:
|
||||||
FindEdgesThruHierPinVisitor(EdgeSet &edges,
|
FindEdgesThruHierPinVisitor(EdgeSet &edges,
|
||||||
Graph *graph);
|
Graph *graph);
|
||||||
virtual void visit(const Pin *drvr,
|
void visit(const Pin *drvr,
|
||||||
const Pin *load);
|
const Pin *load) override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
EdgeSet &edges_;
|
EdgeSet &edges_;
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
# OpenSTA, Static Timing Analyzer
|
# OpenSTA, Static Timing Analyzer
|
||||||
# Copyright (c) 2025, Parallax Software, Inc.
|
# Copyright (c) 2026, Parallax Software, Inc.
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# 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
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
@ -27,6 +27,7 @@
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
|
#include <optional>
|
||||||
|
|
||||||
namespace sta {
|
namespace sta {
|
||||||
|
|
||||||
|
|
@ -118,13 +119,14 @@ public:
|
||||||
// If the heap is not full, the element is added.
|
// If the heap is not full, the element is added.
|
||||||
// If the heap is full and the new element is better than the worst element,
|
// If the heap is full and the new element is better than the worst element,
|
||||||
// the worst element is replaced. Otherwise, the element is ignored.
|
// the worst element is replaced. Otherwise, the element is ignored.
|
||||||
// Returns true if the element was inserted, false if it was ignored.
|
// Returns (inserted, displaced): inserted is true if the element was inserted,
|
||||||
bool
|
// displaced is set when an element was pushed out (caller must handle ownership).
|
||||||
|
std::pair<bool, std::optional<T>>
|
||||||
insert(const T& value) {
|
insert(const T& value) {
|
||||||
if (heap_.size() < max_size_) {
|
if (heap_.size() < max_size_) {
|
||||||
heap_.push_back(value);
|
heap_.push_back(value);
|
||||||
std::push_heap(heap_.begin(), heap_.end(), min_heap_comp_);
|
std::push_heap(heap_.begin(), heap_.end(), min_heap_comp_);
|
||||||
return true;
|
return {true, std::nullopt};
|
||||||
}
|
}
|
||||||
else if (!heap_.empty()) {
|
else if (!heap_.empty()) {
|
||||||
// When keeping N worst (smallest) values: if new value is smaller than worst,
|
// When keeping N worst (smallest) values: if new value is smaller than worst,
|
||||||
|
|
@ -134,23 +136,25 @@ public:
|
||||||
if (comp_(value, heap_.front())) {
|
if (comp_(value, heap_.front())) {
|
||||||
// New value is smaller than worst - find and replace the largest element
|
// New value is smaller than worst - find and replace the largest element
|
||||||
auto max_it = std::max_element(heap_.begin(), heap_.end(), comp_);
|
auto max_it = std::max_element(heap_.begin(), heap_.end(), comp_);
|
||||||
|
T displaced = std::move(*max_it);
|
||||||
*max_it = value;
|
*max_it = value;
|
||||||
// Rebuild heap since we modified an internal element
|
// Rebuild heap since we modified an internal element
|
||||||
std::make_heap(heap_.begin(), heap_.end(), min_heap_comp_);
|
std::make_heap(heap_.begin(), heap_.end(), min_heap_comp_);
|
||||||
return true;
|
return {true, std::move(displaced)};
|
||||||
}
|
}
|
||||||
// Otherwise, new value is >= worst, so we already have worse values - reject it
|
// Otherwise, new value is >= worst, so we already have worse values - reject it
|
||||||
}
|
}
|
||||||
return false;
|
return {false, std::nullopt};
|
||||||
}
|
}
|
||||||
|
|
||||||
// Insert an element using move semantics
|
// Insert an element using move semantics
|
||||||
bool insert(T&& value)
|
std::pair<bool, std::optional<T>>
|
||||||
|
insert(T&& value)
|
||||||
{
|
{
|
||||||
if (heap_.size() < max_size_) {
|
if (heap_.size() < max_size_) {
|
||||||
heap_.push_back(std::move(value));
|
heap_.push_back(std::move(value));
|
||||||
std::push_heap(heap_.begin(), heap_.end(), min_heap_comp_);
|
std::push_heap(heap_.begin(), heap_.end(), min_heap_comp_);
|
||||||
return true;
|
return {true, std::nullopt};
|
||||||
}
|
}
|
||||||
else if (!heap_.empty()) {
|
else if (!heap_.empty()) {
|
||||||
// When keeping N worst (smallest) values: if new value is smaller than worst,
|
// When keeping N worst (smallest) values: if new value is smaller than worst,
|
||||||
|
|
@ -160,14 +164,15 @@ public:
|
||||||
if (comp_(value, heap_.front())) {
|
if (comp_(value, heap_.front())) {
|
||||||
// New value is smaller than worst - find and replace the largest element
|
// New value is smaller than worst - find and replace the largest element
|
||||||
auto max_it = std::max_element(heap_.begin(), heap_.end(), comp_);
|
auto max_it = std::max_element(heap_.begin(), heap_.end(), comp_);
|
||||||
|
T displaced = std::move(*max_it);
|
||||||
*max_it = std::move(value);
|
*max_it = std::move(value);
|
||||||
// Rebuild heap since we modified an internal element
|
// Rebuild heap since we modified an internal element
|
||||||
std::make_heap(heap_.begin(), heap_.end(), min_heap_comp_);
|
std::make_heap(heap_.begin(), heap_.end(), min_heap_comp_);
|
||||||
return true;
|
return {true, std::move(displaced)};
|
||||||
}
|
}
|
||||||
// Otherwise, new value is >= worst, so we already have worse values - reject it
|
// Otherwise, new value is >= worst, so we already have worse values - reject it
|
||||||
}
|
}
|
||||||
return false;
|
return {false, std::nullopt};
|
||||||
}
|
}
|
||||||
|
|
||||||
// Extract all elements sorted from best to worst.
|
// Extract all elements sorted from best to worst.
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
@ -164,17 +164,17 @@ public:
|
||||||
bool own_pts,
|
bool own_pts,
|
||||||
int priority,
|
int priority,
|
||||||
const char *comment);
|
const char *comment);
|
||||||
virtual ExceptionPath *clone(ExceptionFrom *from,
|
ExceptionPath *clone(ExceptionFrom *from,
|
||||||
ExceptionThruSeq *thrus,
|
ExceptionThruSeq *thrus,
|
||||||
ExceptionTo *to,
|
ExceptionTo *to,
|
||||||
bool own_pts);
|
bool own_pts) override;
|
||||||
virtual bool isFalse() const { return true; }
|
bool isFalse() const override { return true; }
|
||||||
virtual ExceptionPathType type() const { return ExceptionPathType::false_path; }
|
ExceptionPathType type() const override { return ExceptionPathType::false_path; }
|
||||||
virtual const char *typeString() const;
|
const char *typeString() const override;
|
||||||
virtual bool mergeable(ExceptionPath *exception) const;
|
bool mergeable(ExceptionPath *exception) const override;
|
||||||
virtual bool overrides(ExceptionPath *exception) const;
|
bool overrides(ExceptionPath *exception) const override;
|
||||||
virtual int typePriority() const;
|
int typePriority() const override;
|
||||||
virtual bool tighterThan(ExceptionPath *exception) const;
|
bool tighterThan(ExceptionPath *exception) const override;
|
||||||
};
|
};
|
||||||
|
|
||||||
// Loop paths are false paths used to disable paths around
|
// Loop paths are false paths used to disable paths around
|
||||||
|
|
@ -184,10 +184,10 @@ class LoopPath : public FalsePath
|
||||||
public:
|
public:
|
||||||
LoopPath(ExceptionThruSeq *thrus,
|
LoopPath(ExceptionThruSeq *thrus,
|
||||||
bool own_pts);
|
bool own_pts);
|
||||||
virtual bool isLoop() const { return true; }
|
bool isLoop() const override { return true; }
|
||||||
virtual ExceptionPathType type() const { return ExceptionPathType::loop; }
|
ExceptionPathType type() const override { return ExceptionPathType::loop; }
|
||||||
virtual const char *typeString() const;
|
const char *typeString() const override;
|
||||||
virtual bool mergeable(ExceptionPath *exception) const;
|
bool mergeable(ExceptionPath *exception) const override;
|
||||||
};
|
};
|
||||||
|
|
||||||
// set_max_delay/set_min_delay
|
// set_max_delay/set_min_delay
|
||||||
|
|
@ -203,21 +203,21 @@ public:
|
||||||
float delay,
|
float delay,
|
||||||
bool own_pts,
|
bool own_pts,
|
||||||
const char *comment);
|
const char *comment);
|
||||||
virtual ExceptionPath *clone(ExceptionFrom *from,
|
ExceptionPath *clone(ExceptionFrom *from,
|
||||||
ExceptionThruSeq *thrus,
|
ExceptionThruSeq *thrus,
|
||||||
ExceptionTo *to,
|
ExceptionTo *to,
|
||||||
bool own_pts);
|
bool own_pts) override;
|
||||||
virtual bool isPathDelay() const { return true; }
|
bool isPathDelay() const override { return true; }
|
||||||
virtual ExceptionPathType type() const { return ExceptionPathType::path_delay; }
|
ExceptionPathType type() const override { return ExceptionPathType::path_delay; }
|
||||||
virtual const char *asString(const Network *network) const;
|
const char *asString(const Network *network) const override;
|
||||||
virtual const char *typeString() const;
|
const char *typeString() const override;
|
||||||
virtual bool mergeable(ExceptionPath *exception) const;
|
bool mergeable(ExceptionPath *exception) const override;
|
||||||
virtual bool overrides(ExceptionPath *exception) const;
|
bool overrides(ExceptionPath *exception) const override;
|
||||||
virtual float delay() const { return delay_; }
|
float delay() const override { return delay_; }
|
||||||
virtual int typePriority() const;
|
int typePriority() const override;
|
||||||
virtual bool tighterThan(ExceptionPath *exception) const;
|
bool tighterThan(ExceptionPath *exception) const override;
|
||||||
virtual bool ignoreClkLatency() const { return ignore_clk_latency_; }
|
bool ignoreClkLatency() const override { return ignore_clk_latency_; }
|
||||||
virtual bool breakPath() const { return break_path_; }
|
bool breakPath() const override { return break_path_; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
bool ignore_clk_latency_;
|
bool ignore_clk_latency_;
|
||||||
|
|
@ -237,24 +237,24 @@ public:
|
||||||
int path_multiplier,
|
int path_multiplier,
|
||||||
bool own_pts,
|
bool own_pts,
|
||||||
const char *comment);
|
const char *comment);
|
||||||
virtual ExceptionPath *clone(ExceptionFrom *from,
|
ExceptionPath *clone(ExceptionFrom *from,
|
||||||
ExceptionThruSeq *thrus,
|
ExceptionThruSeq *thrus,
|
||||||
ExceptionTo *to,
|
ExceptionTo *to,
|
||||||
bool own_pts);
|
bool own_pts) override;
|
||||||
virtual bool isMultiCycle() const { return true; }
|
bool isMultiCycle() const override { return true; }
|
||||||
virtual ExceptionPathType type() const { return ExceptionPathType::multi_cycle; }
|
ExceptionPathType type() const override { return ExceptionPathType::multi_cycle; }
|
||||||
virtual bool matches(const MinMax *min_max,
|
bool matches(const MinMax *min_max,
|
||||||
bool exactly) const;
|
bool exactly) const override;
|
||||||
virtual const char *asString(const Network *network) const;
|
const char *asString(const Network *network) const override;
|
||||||
virtual const char *typeString() const;
|
const char *typeString() const override;
|
||||||
virtual bool mergeable(ExceptionPath *exception) const;
|
bool mergeable(ExceptionPath *exception) const override;
|
||||||
virtual bool overrides(ExceptionPath *exception) const;
|
bool overrides(ExceptionPath *exception) const override;
|
||||||
virtual bool useEndClk() const { return use_end_clk_; }
|
bool useEndClk() const override { return use_end_clk_; }
|
||||||
virtual int pathMultiplier(const MinMax *min_max) const;
|
int pathMultiplier(const MinMax *min_max) const; // overload, not override
|
||||||
virtual int pathMultiplier() const { return path_multiplier_; }
|
int pathMultiplier() const override { return path_multiplier_; }
|
||||||
virtual int priority(const MinMax *min_max) const;
|
int priority(const MinMax *min_max) const override;
|
||||||
virtual int typePriority() const;
|
int typePriority() const override;
|
||||||
virtual bool tighterThan(ExceptionPath *exception) const;
|
bool tighterThan(ExceptionPath *exception) const override;
|
||||||
|
|
||||||
using ExceptionPath::priority;
|
using ExceptionPath::priority;
|
||||||
|
|
||||||
|
|
@ -271,22 +271,22 @@ public:
|
||||||
ExceptionThruSeq *thrus,
|
ExceptionThruSeq *thrus,
|
||||||
ExceptionTo *to,
|
ExceptionTo *to,
|
||||||
bool own_pts);
|
bool own_pts);
|
||||||
virtual ExceptionPath *clone(ExceptionFrom *from,
|
ExceptionPath *clone(ExceptionFrom *from,
|
||||||
ExceptionThruSeq *thrus,
|
ExceptionThruSeq *thrus,
|
||||||
ExceptionTo *to,
|
ExceptionTo *to,
|
||||||
bool own_pts);
|
bool own_pts) override;
|
||||||
virtual bool isFilter() const { return true; }
|
bool isFilter() const override { return true; }
|
||||||
virtual ExceptionPathType type() const { return ExceptionPathType::filter; }
|
ExceptionPathType type() const override { return ExceptionPathType::filter; }
|
||||||
virtual const char *typeString() const;
|
const char *typeString() const override;
|
||||||
virtual bool mergeable(ExceptionPath *exception) const;
|
bool mergeable(ExceptionPath *exception) const override;
|
||||||
virtual bool overrides(ExceptionPath *exception) const;
|
bool overrides(ExceptionPath *exception) const override;
|
||||||
virtual bool resetMatch(ExceptionFrom *from,
|
bool resetMatch(ExceptionFrom *from,
|
||||||
ExceptionThruSeq *thrus,
|
ExceptionThruSeq *thrus,
|
||||||
ExceptionTo *to,
|
ExceptionTo *to,
|
||||||
const MinMaxAll *min_max,
|
const MinMaxAll *min_max,
|
||||||
const Network *network);
|
const Network *network) override;
|
||||||
virtual int typePriority() const;
|
int typePriority() const override;
|
||||||
virtual bool tighterThan(ExceptionPath *exception) const;
|
bool tighterThan(ExceptionPath *exception) const override;
|
||||||
};
|
};
|
||||||
|
|
||||||
class GroupPath : public ExceptionPath
|
class GroupPath : public ExceptionPath
|
||||||
|
|
@ -299,20 +299,20 @@ public:
|
||||||
ExceptionTo *to,
|
ExceptionTo *to,
|
||||||
bool own_pts,
|
bool own_pts,
|
||||||
const char *comment);
|
const char *comment);
|
||||||
virtual ~GroupPath();
|
~GroupPath() override;
|
||||||
virtual ExceptionPath *clone(ExceptionFrom *from,
|
ExceptionPath *clone(ExceptionFrom *from,
|
||||||
ExceptionThruSeq *thrus,
|
ExceptionThruSeq *thrus,
|
||||||
ExceptionTo *to,
|
ExceptionTo *to,
|
||||||
bool own_pts);
|
bool own_pts) override;
|
||||||
virtual bool isGroupPath() const { return true; }
|
bool isGroupPath() const override { return true; }
|
||||||
virtual ExceptionPathType type() const { return ExceptionPathType::group_path; }
|
ExceptionPathType type() const override { return ExceptionPathType::group_path; }
|
||||||
virtual const char *typeString() const;
|
const char *typeString() const override;
|
||||||
virtual bool mergeable(ExceptionPath *exception) const;
|
bool mergeable(ExceptionPath *exception) const override;
|
||||||
virtual bool overrides(ExceptionPath *exception) const;
|
bool overrides(ExceptionPath *exception) const override;
|
||||||
virtual int typePriority() const;
|
int typePriority() const override;
|
||||||
virtual bool tighterThan(ExceptionPath *exception) const;
|
bool tighterThan(ExceptionPath *exception) const override;
|
||||||
virtual const char *name() const { return name_; }
|
const char *name() const override { return name_; }
|
||||||
virtual bool isDefault() const { return is_default_; }
|
bool isDefault() const override { return is_default_; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
const char *name_;
|
const char *name_;
|
||||||
|
|
@ -385,39 +385,39 @@ public:
|
||||||
bool own_pts,
|
bool own_pts,
|
||||||
const Network *network);
|
const Network *network);
|
||||||
~ExceptionFromTo();
|
~ExceptionFromTo();
|
||||||
virtual PinSet *pins() { return pins_; }
|
PinSet *pins() override { return pins_; }
|
||||||
bool hasPins() const;
|
bool hasPins() const;
|
||||||
ClockSet *clks() { return clks_; }
|
ClockSet *clks() override { return clks_; }
|
||||||
bool hasClocks() const;
|
bool hasClocks() const;
|
||||||
InstanceSet *instances() { return insts_; }
|
InstanceSet *instances() override { return insts_; }
|
||||||
bool hasInstances() const;
|
bool hasInstances() const;
|
||||||
virtual NetSet *nets() { return nullptr; }
|
NetSet *nets() override { return nullptr; }
|
||||||
virtual EdgePinsSet *edges() { return nullptr; }
|
EdgePinsSet *edges() override { return nullptr; }
|
||||||
bool hasObjects() const;
|
bool hasObjects() const;
|
||||||
void deleteObjects(ExceptionFromTo *pt,
|
void deleteObjects(ExceptionFromTo *pt,
|
||||||
const Network *network);
|
const Network *network);
|
||||||
virtual PinSet allPins(const Network *network);
|
PinSet allPins(const Network *network) override;
|
||||||
bool equal(ExceptionFromTo *from_to) const;
|
bool equal(ExceptionFromTo *from_to) const;
|
||||||
virtual int compare(ExceptionPt *pt,
|
int compare(ExceptionPt *pt,
|
||||||
const Network *network) const;
|
const Network *network) const override;
|
||||||
virtual void mergeInto(ExceptionPt *pt,
|
void mergeInto(ExceptionPt *pt,
|
||||||
const Network *network);
|
const Network *network) override;
|
||||||
virtual const char *asString(const Network *network) const;
|
const char *asString(const Network *network) const override;
|
||||||
virtual size_t objectCount() const;
|
size_t objectCount() const override;
|
||||||
void deleteClock(Clock *clk);
|
void deleteClock(Clock *clk);
|
||||||
virtual void addPin(const Pin *pin,
|
void addPin(const Pin *pin,
|
||||||
const Network *network);
|
const Network *network) override;
|
||||||
virtual void addClock(Clock *clk);
|
void addClock(Clock *clk) override;
|
||||||
virtual void addInstance(const Instance *inst,
|
void addInstance(const Instance *inst,
|
||||||
const Network *network);
|
const Network *network) override;
|
||||||
virtual void addNet(const Net *,
|
void addNet(const Net *,
|
||||||
const Network *) {}
|
const Network *) override {}
|
||||||
virtual void addEdge(const EdgePins &,
|
void addEdge(const EdgePins &,
|
||||||
const Network *) {}
|
const Network *) override {}
|
||||||
virtual void connectPinAfter(PinSet *,
|
void connectPinAfter(PinSet *,
|
||||||
Network *) {}
|
Network *) override {}
|
||||||
virtual void deletePinBefore(const Pin *,
|
void deletePinBefore(const Pin *,
|
||||||
Network *);
|
Network *) override;
|
||||||
void deleteInstance(const Instance *inst,
|
void deleteInstance(const Instance *inst,
|
||||||
const Network *network);
|
const Network *network);
|
||||||
|
|
||||||
|
|
@ -443,14 +443,14 @@ public:
|
||||||
bool own_pts,
|
bool own_pts,
|
||||||
const Network *network);
|
const Network *network);
|
||||||
ExceptionFrom *clone(const Network *network);
|
ExceptionFrom *clone(const Network *network);
|
||||||
virtual bool isFrom() const { return true; }
|
bool isFrom() const override { return true; }
|
||||||
bool intersectsPts(ExceptionFrom *from,
|
bool intersectsPts(ExceptionFrom *from,
|
||||||
const Network *network) const;
|
const Network *network) const;
|
||||||
virtual int typePriority() const { return 0; }
|
int typePriority() const override { return 0; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual const char *cmdKeyword() const;
|
const char *cmdKeyword() const override;
|
||||||
virtual void findHash(const Network *network);
|
void findHash(const Network *network) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
class ExceptionTo : public ExceptionFromTo
|
class ExceptionTo : public ExceptionFromTo
|
||||||
|
|
@ -466,12 +466,12 @@ public:
|
||||||
bool own_pts,
|
bool own_pts,
|
||||||
const Network *network);
|
const Network *network);
|
||||||
ExceptionTo *clone(const Network *network);
|
ExceptionTo *clone(const Network *network);
|
||||||
virtual bool isTo() const { return true; }
|
bool isTo() const override { return true; }
|
||||||
const char *asString(const Network *network) const;
|
const char *asString(const Network *network) const override;
|
||||||
const RiseFallBoth *endTransition() { return end_rf_; }
|
const RiseFallBoth *endTransition() { return end_rf_; }
|
||||||
bool intersectsPts(ExceptionTo *to,
|
bool intersectsPts(ExceptionTo *to,
|
||||||
const Network *network) const;
|
const Network *network) const;
|
||||||
virtual int typePriority() const { return 1; }
|
int typePriority() const override { return 1; }
|
||||||
bool matches(const Pin *pin,
|
bool matches(const Pin *pin,
|
||||||
const ClockEdge *clk_edge,
|
const ClockEdge *clk_edge,
|
||||||
const RiseFall *end_rf,
|
const RiseFall *end_rf,
|
||||||
|
|
@ -486,8 +486,8 @@ public:
|
||||||
const ClockEdge *clk_edge,
|
const ClockEdge *clk_edge,
|
||||||
const RiseFall *end_rf,
|
const RiseFall *end_rf,
|
||||||
const Network *network) const;
|
const Network *network) const;
|
||||||
virtual int compare(ExceptionPt *pt,
|
int compare(ExceptionPt *pt,
|
||||||
const Network *network) const;
|
const Network *network) const override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
bool matches(const Pin *pin,
|
bool matches(const Pin *pin,
|
||||||
|
|
@ -495,7 +495,7 @@ protected:
|
||||||
const RiseFall *end_rf,
|
const RiseFall *end_rf,
|
||||||
bool inst_matches_reg_clk_pin,
|
bool inst_matches_reg_clk_pin,
|
||||||
const Network *network) const;
|
const Network *network) const;
|
||||||
virtual const char *cmdKeyword() const;
|
const char *cmdKeyword() const override;
|
||||||
|
|
||||||
// -rise|-fall endpoint transition.
|
// -rise|-fall endpoint transition.
|
||||||
const RiseFallBoth *end_rf_;
|
const RiseFallBoth *end_rf_;
|
||||||
|
|
@ -512,48 +512,48 @@ public:
|
||||||
const Network *network);
|
const Network *network);
|
||||||
~ExceptionThru();
|
~ExceptionThru();
|
||||||
ExceptionThru *clone(const Network *network);
|
ExceptionThru *clone(const Network *network);
|
||||||
virtual const char *asString(const Network *network) const;
|
const char *asString(const Network *network) const override;
|
||||||
virtual bool isThru() const { return true; }
|
bool isThru() const override { return true; }
|
||||||
PinSet *pins() { return pins_; }
|
PinSet *pins() override { return pins_; }
|
||||||
EdgePinsSet *edges() { return edges_; }
|
EdgePinsSet *edges() override { return edges_; }
|
||||||
NetSet *nets() { return nets_; }
|
NetSet *nets() override { return nets_; }
|
||||||
InstanceSet *instances() { return insts_; }
|
InstanceSet *instances() override { return insts_; }
|
||||||
virtual ClockSet *clks() { return nullptr; }
|
ClockSet *clks() override { return nullptr; }
|
||||||
bool hasObjects() const;
|
bool hasObjects() const;
|
||||||
void deleteObjects(ExceptionThru *pt,
|
void deleteObjects(ExceptionThru *pt,
|
||||||
const Network *network);
|
const Network *network);
|
||||||
virtual PinSet allPins(const Network *network);
|
PinSet allPins(const Network *network) override;
|
||||||
bool matches(const Pin *from_pin,
|
bool matches(const Pin *from_pin,
|
||||||
const Pin *to_pin,
|
const Pin *to_pin,
|
||||||
const RiseFall *to_rf,
|
const RiseFall *to_rf,
|
||||||
const Network *network);
|
const Network *network);
|
||||||
bool equal(ExceptionThru *thru) const;
|
bool equal(ExceptionThru *thru) const;
|
||||||
virtual int compare(ExceptionPt *pt,
|
int compare(ExceptionPt *pt,
|
||||||
const Network *network) const;
|
const Network *network) const override;
|
||||||
virtual void mergeInto(ExceptionPt *pt,
|
void mergeInto(ExceptionPt *pt,
|
||||||
const Network *network);
|
const Network *network) override;
|
||||||
bool intersectsPts(ExceptionThru *thru,
|
bool intersectsPts(ExceptionThru *thru,
|
||||||
const Network *network) const;
|
const Network *network) const;
|
||||||
virtual int typePriority() const { return 2; }
|
int typePriority() const override { return 2; }
|
||||||
virtual size_t objectCount() const;
|
size_t objectCount() const override;
|
||||||
virtual void connectPinAfter(PinSet *drvrs,
|
void connectPinAfter(PinSet *drvrs,
|
||||||
Network *network);
|
Network *network) override;
|
||||||
virtual void deletePinBefore(const Pin *pin,
|
void deletePinBefore(const Pin *pin,
|
||||||
Network *network);
|
Network *network) override;
|
||||||
void deleteInstance(const Instance *inst,
|
void deleteInstance(const Instance *inst,
|
||||||
const Network *network);
|
const Network *network);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void findHash(const Network *network);
|
void findHash(const Network *network);
|
||||||
virtual void addPin(const Pin *pin,
|
void addPin(const Pin *pin,
|
||||||
const Network *network);
|
const Network *network) override;
|
||||||
virtual void addEdge(const EdgePins &edge,
|
void addEdge(const EdgePins &edge,
|
||||||
const Network *network);
|
const Network *network) override;
|
||||||
virtual void addNet(const Net *net,
|
void addNet(const Net *net,
|
||||||
const Network *network);
|
const Network *network) override;
|
||||||
virtual void addInstance(const Instance *inst,
|
void addInstance(const Instance *inst,
|
||||||
const Network *network);
|
const Network *network) override;
|
||||||
virtual void addClock(Clock *) {}
|
void addClock(Clock *) override {}
|
||||||
void deletePin(const Pin *pin,
|
void deletePin(const Pin *pin,
|
||||||
const Network *network);
|
const Network *network);
|
||||||
void deleteEdge(const EdgePins &edge);
|
void deleteEdge(const EdgePins &edge);
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
@ -520,10 +520,6 @@ public:
|
||||||
virtual Pin *connect(Instance *inst,
|
virtual Pin *connect(Instance *inst,
|
||||||
LibertyPort *port,
|
LibertyPort *port,
|
||||||
Net *net) = 0;
|
Net *net) = 0;
|
||||||
// makePin/connectPin replaced by connect.
|
|
||||||
// deprecated 2018-09-28
|
|
||||||
virtual void connectPin(Pin *pin,
|
|
||||||
Net *net) __attribute__ ((deprecated));
|
|
||||||
// Disconnect pin from net.
|
// Disconnect pin from net.
|
||||||
virtual void disconnectPin(Pin *pin) = 0;
|
virtual void disconnectPin(Pin *pin) = 0;
|
||||||
virtual void deletePin(Pin *pin) = 0;
|
virtual void deletePin(Pin *pin) = 0;
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// OpenSTA, Static Timing Analyzer
|
// OpenSTA, Static Timing Analyzer
|
||||||
// Copyright (c) 2025, Parallax Software, Inc.
|
// Copyright (c) 2026, Parallax Software, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue