Skip to content

Commit

Permalink
merge
Browse files Browse the repository at this point in the history
  • Loading branch information
jjcherry56 committed Aug 6, 2020
2 parents 41f8a97 + ae3da17 commit ff7557b
Show file tree
Hide file tree
Showing 77 changed files with 1,881 additions and 1,385 deletions.
7 changes: 4 additions & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.14)
cmake_policy(SET CMP0086 NEW)
endif()

project(STA VERSION 2.1.0
project(STA VERSION 2.2.0
LANGUAGES CXX
)

Expand Down Expand Up @@ -141,6 +141,7 @@ set(STA_SOURCE
sdc/RiseFallMinMax.cc
sdc/RiseFallValues.cc
sdc/Sdc.cc
sdc/SdcGraph.cc
sdc/SdcCmdComment.cc
sdc/WriteSdc.cc

Expand Down Expand Up @@ -329,7 +330,7 @@ swig_add_library(sta_swig
SOURCES ${STA_SWIG_FILE}
)

swig_link_libraries(sta_swig
target_link_libraries(sta_swig
PUBLIC
OpenSTA
)
Expand Down Expand Up @@ -477,8 +478,8 @@ target_compile_options(sta
)

target_link_libraries(sta
OpenSTA
sta_swig
OpenSTA
${TCL_LIBRARY}
)

Expand Down
1 change: 0 additions & 1 deletion app/StaMain.cc
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
#include <tcl.h>
#include <stdlib.h>

#include "util/Machine.hh"
#include "StringUtil.hh"
#include "Vector.hh"
#include "Sta.hh"
Expand Down
2 changes: 1 addition & 1 deletion dcalc/DmpDelayCalc.cc
Original file line number Diff line number Diff line change
Expand Up @@ -347,7 +347,7 @@ DmpCeffTwoPoleDelayCalc::loadDelay(Parasitic *pole_residue,
{
ComplexFloat pole2, residue2;
parasitics_->poleResidue(pole_residue, 1, pole2, residue2);
if (!fuzzyZero(drvr_slew_)
if (!delayZero(drvr_slew_)
&& pole2.imag() == 0.0
&& residue2.imag() == 0.0) {
double p2 = pole2.real();
Expand Down
6 changes: 3 additions & 3 deletions dcalc/GraphDelayCalc1.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1246,7 +1246,7 @@ GraphDelayCalc1::findArcDelay(LibertyCell *drvr_cell,
// Merge slews.
const Slew &drvr_slew = graph_->slew(drvr_vertex, drvr_rf, ap_index);
const MinMax *slew_min_max = dcalc_ap->slewMinMax();
if (fuzzyGreater(gate_slew, drvr_slew, dcalc_ap->slewMinMax())
if (delayGreater(gate_slew, drvr_slew, dcalc_ap->slewMinMax(), this)
&& !drvr_vertex->slewAnnotated(drvr_rf, slew_min_max))
graph_->setSlew(drvr_vertex, drvr_rf, ap_index, gate_slew);
if (!graph_->arcDelayAnnotated(edge, arc, ap_index)) {
Expand Down Expand Up @@ -1446,7 +1446,7 @@ GraphDelayCalc1::annotateLoadDelays(Vertex *drvr_vertex,
else {
const Slew &slew = graph_->slew(load_vertex, drvr_rf, ap_index);
if (!merge
|| fuzzyGreater(load_slew, slew, slew_min_max))
|| delayGreater(load_slew, slew, slew_min_max, this))
graph_->setSlew(load_vertex, drvr_rf, ap_index, load_slew);
}
}
Expand All @@ -1459,7 +1459,7 @@ GraphDelayCalc1::annotateLoadDelays(Vertex *drvr_vertex,
Delay wire_delay_extra = extra_delay + wire_delay;
const MinMax *delay_min_max = dcalc_ap->delayMinMax();
if (!merge
|| fuzzyGreater(wire_delay_extra, delay, delay_min_max)) {
|| delayGreater(wire_delay_extra, delay, delay_min_max, this)) {
graph_->setWireArcDelay(wire_edge, drvr_rf, ap_index,
wire_delay_extra);
if (observer_)
Expand Down
Binary file modified doc/OpenSTA.odt
Binary file not shown.
120 changes: 80 additions & 40 deletions graph/DelayFloat.cc
Original file line number Diff line number Diff line change
Expand Up @@ -35,19 +35,6 @@ initDelayConstants()
delay_init_values[MinMax::maxIndex()] = MinMax::max()->initValue();
}

const Delay &
delayInitValue(const MinMax *min_max)
{
return delay_init_values[min_max->index()];
}

bool
delayIsInitValue(const Delay &delay,
const MinMax *min_max)
{
return fuzzyEqual(delay, min_max->initValue());
}

const char *
delayAsString(const Delay &delay,
const StaState *sta)
Expand All @@ -73,47 +60,51 @@ delayAsString(const Delay &delay,
return unit->asString(delay, digits);
}

float
delayAsFloat(const Delay &delay,
const EarlyLate *,
const StaState *)
const Delay &
delayInitValue(const MinMax *min_max)
{
return delay;
return delay_init_values[min_max->index()];
}

float
delaySigma2(const Delay &,
const EarlyLate *)
bool
delayIsInitValue(const Delay &delay,
const MinMax *min_max)
{
return 0.0;
return fuzzyEqual(delay, min_max->initValue());
}

bool
fuzzyGreater(const Delay &delay1,
const Delay &delay2,
const MinMax *min_max)
delayZero(const Delay &delay)
{
if (min_max == MinMax::max())
return fuzzyGreater(delay1, delay2);
else
return fuzzyLess(delay1, delay2);
return fuzzyZero(delay);
}

bool
fuzzyGreaterEqual(const Delay &delay1,
const Delay &delay2,
const MinMax *min_max)
delayInf(const Delay &delay)
{
if (min_max == MinMax::max())
return fuzzyGreaterEqual(delay1, delay2);
else
return fuzzyLessEqual(delay1, delay2);
return fuzzyInf(delay);
}

bool
delayEqual(const Delay &delay1,
const Delay &delay2)
{
return fuzzyEqual(delay1, delay2);
}

bool
delayLess(const Delay &delay1,
const Delay &delay2,
const StaState *)
{
return fuzzyLess(delay1, delay2);
}

bool
fuzzyLess(const Delay &delay1,
delayLess(const Delay &delay1,
const Delay &delay2,
const MinMax *min_max)
const MinMax *min_max,
const StaState *)
{
if (min_max == MinMax::max())
return fuzzyLess(delay1, delay2);
Expand All @@ -122,16 +113,65 @@ fuzzyLess(const Delay &delay1,
}

bool
fuzzyLessEqual(const Delay &delay1,
delayLessEqual(const Delay &delay1,
const Delay &delay2,
const StaState *)
{
return fuzzyLessEqual(delay1, delay2);
}

bool
delayLessEqual(const Delay &delay1,
const Delay &delay2,
const MinMax *min_max)
const MinMax *min_max,
const StaState *)
{
if (min_max == MinMax::max())
return fuzzyLessEqual(delay1, delay2);
else
return fuzzyGreaterEqual(delay1, delay2);
}

bool
delayGreater(const Delay &delay1,
const Delay &delay2,
const StaState *)
{
return fuzzyGreater(delay1, delay2);
}

bool
delayGreater(const Delay &delay1,
const Delay &delay2,
const MinMax *min_max,
const StaState *)
{
if (min_max == MinMax::max())
return fuzzyGreater(delay1, delay2);
else
return fuzzyLess(delay1, delay2);
}

bool
delayGreaterEqual(const Delay &delay1,
const Delay &delay2,
const StaState *)
{
return fuzzyGreaterEqual(delay1, delay2);
}

bool
delayGreaterEqual(const Delay &delay1,
const Delay &delay2,
const MinMax *min_max,
const StaState *)
{
if (min_max == MinMax::max())
return fuzzyGreaterEqual(delay1, delay2);
else
return fuzzyLessEqual(delay1, delay2);
}

Delay
delayRemove(const Delay &delay1,
const Delay &delay2)
Expand Down
Loading

0 comments on commit ff7557b

Please sign in to comment.