cudd/ssta compile errors
This commit is contained in:
parent
75fff21076
commit
14bacb30cf
|
|
@ -24,7 +24,7 @@ if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.14)
|
|||
cmake_policy(SET CMP0086 NEW)
|
||||
endif()
|
||||
|
||||
project(STA VERSION 2.2.0
|
||||
project(STA VERSION 2.3.0
|
||||
LANGUAGES CXX
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -200,10 +200,9 @@ delayAsFloat(const Delay &delay,
|
|||
else if (early_late == EarlyLate::late())
|
||||
return delay.mean() + delay.sigma() * sta->sigmaFactor();
|
||||
else
|
||||
internalError("unknown early/late value.");
|
||||
sta->report()->critical(594, "unknown early/late value.");
|
||||
}
|
||||
else
|
||||
return delay.mean();
|
||||
return delay.mean();
|
||||
}
|
||||
|
||||
float
|
||||
|
|
|
|||
|
|
@ -375,10 +375,9 @@ delayAsFloat(const Delay &delay,
|
|||
else if (early_late == EarlyLate::late())
|
||||
return delay.mean() + delay.sigma(early_late) * sta->sigmaFactor();
|
||||
else
|
||||
internalError("unknown early/late value.");
|
||||
sta->report()->critical(595, "unknown early/late value.");
|
||||
}
|
||||
else
|
||||
return delay.mean();
|
||||
return delay.mean();
|
||||
}
|
||||
|
||||
float
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@
|
|||
#include "RiseFallValues.hh"
|
||||
#include "MinMaxValues.hh"
|
||||
#include "Transition.hh"
|
||||
#include "Delay.hh"
|
||||
#include "LibertyClass.hh"
|
||||
|
||||
namespace sta {
|
||||
|
|
@ -43,6 +44,7 @@ class OcvDerate;
|
|||
class TimingArcAttrs;
|
||||
class InternalPowerAttrs;
|
||||
class LibertyPgPort;
|
||||
class StaState;
|
||||
|
||||
typedef Set<Library*> LibrarySet;
|
||||
typedef Map<const char*, TableTemplate*, CharPtrLess> TableTemplateMap;
|
||||
|
|
@ -169,9 +171,9 @@ public:
|
|||
void setDefaultBidirectPinCap(float cap);
|
||||
|
||||
void defaultIntrinsic(const RiseFall *rf,
|
||||
// Return values.
|
||||
float &intrisic,
|
||||
bool &exists) const;
|
||||
// Return values.
|
||||
float &intrisic,
|
||||
bool &exists) const;
|
||||
void setDefaultIntrinsic(const RiseFall *rf,
|
||||
float value);
|
||||
// Uses defaultOutputPinRes or defaultBidirectPinRes based on dir.
|
||||
|
|
@ -662,9 +664,10 @@ public:
|
|||
float driveResistance(const RiseFall *rf,
|
||||
const MinMax *min_max) const;
|
||||
// Zero load delay.
|
||||
float intrinsicDelay() const;
|
||||
float intrinsicDelay(const RiseFall *rf,
|
||||
const MinMax *min_max) const;
|
||||
ArcDelay intrinsicDelay(const StaState *sta) const;
|
||||
ArcDelay intrinsicDelay(const RiseFall *rf,
|
||||
const MinMax *min_max,
|
||||
const StaState *sta) const;
|
||||
FuncExpr *function() const { return function_; }
|
||||
void setFunction(FuncExpr *func);
|
||||
FuncExpr *&functionRef() { return function_; }
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@
|
|||
#include "DisallowCopyAssign.hh"
|
||||
#include "Vector.hh"
|
||||
#include "Transition.hh"
|
||||
#include "Delay.hh"
|
||||
#include "LibertyClass.hh"
|
||||
|
||||
namespace sta {
|
||||
|
|
@ -259,7 +260,7 @@ public:
|
|||
void setCornerArc(TimingArc *corner_arc,
|
||||
int ap_index);
|
||||
float driveResistance() const;
|
||||
float intrinsicDelay() const;
|
||||
ArcDelay intrinsicDelay() const;
|
||||
|
||||
static bool equiv(const TimingArc *arc1,
|
||||
const TimingArc *arc2);
|
||||
|
|
|
|||
|
|
@ -2027,17 +2027,18 @@ LibertyPort::driveResistance(const RiseFall *rf,
|
|||
return 0.0;
|
||||
}
|
||||
|
||||
float
|
||||
LibertyPort::intrinsicDelay() const
|
||||
ArcDelay
|
||||
LibertyPort::intrinsicDelay(const StaState *sta) const
|
||||
{
|
||||
return intrinsicDelay(nullptr, MinMax::max());
|
||||
return intrinsicDelay(nullptr, MinMax::max(), sta);
|
||||
}
|
||||
|
||||
float
|
||||
ArcDelay
|
||||
LibertyPort::intrinsicDelay(const RiseFall *rf,
|
||||
const MinMax *min_max) const
|
||||
const MinMax *min_max,
|
||||
const StaState *sta) const
|
||||
{
|
||||
float max_delay = min_max->initValue();
|
||||
ArcDelay max_delay = min_max->initValue();
|
||||
bool found_delay = false;
|
||||
LibertyCellTimingArcSetIterator set_iter(liberty_cell_, nullptr, this);
|
||||
while (set_iter.hasNext()) {
|
||||
|
|
@ -2048,9 +2049,9 @@ LibertyPort::intrinsicDelay(const RiseFall *rf,
|
|||
TimingArc *arc = arc_iter.next();
|
||||
if (rf == nullptr
|
||||
|| arc->toTrans()->asRiseFall() == rf) {
|
||||
float delay = arc->intrinsicDelay();
|
||||
if (delay > 0.0) {
|
||||
if (min_max->compare(delay, max_delay))
|
||||
ArcDelay delay = arc->intrinsicDelay();
|
||||
if (delayGreater(delay, 0.0, sta)) {
|
||||
if (delayGreater(delay, max_delay, min_max, sta))
|
||||
max_delay = delay;
|
||||
found_delay = true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -146,7 +146,7 @@ TimingArc::driveResistance() const
|
|||
return 0.0;
|
||||
}
|
||||
|
||||
float
|
||||
ArcDelay
|
||||
TimingArc::intrinsicDelay() const
|
||||
{
|
||||
GateTimingModel *model = dynamic_cast<GateTimingModel*>(model_);
|
||||
|
|
|
|||
|
|
@ -714,23 +714,27 @@ getProperty(const LibertyPort *port,
|
|||
}
|
||||
|
||||
else if (stringEqual(property, "intrinsic_delay")) {
|
||||
float drive = port->intrinsicDelay();
|
||||
float drive = delayAsFloat(port->intrinsicDelay(sta));
|
||||
return PropertyValue(sta->units()->timeUnit()->asString(drive, 6));
|
||||
}
|
||||
else if (stringEqual(property, "intrinsic_delay_rise_min")) {
|
||||
float drive = port->intrinsicDelay(RiseFall::rise(), MinMax::min());
|
||||
float drive = delayAsFloat(port->intrinsicDelay(RiseFall::rise(),
|
||||
MinMax::min(), sta));
|
||||
return PropertyValue(sta->units()->timeUnit()->asString(drive, 6));
|
||||
}
|
||||
else if (stringEqual(property, "intrinsic_delay_rise_max")) {
|
||||
float drive = port->intrinsicDelay(RiseFall::rise(), MinMax::max());
|
||||
float drive = delayAsFloat(port->intrinsicDelay(RiseFall::rise(),
|
||||
MinMax::max(), sta));
|
||||
return PropertyValue(sta->units()->timeUnit()->asString(drive, 6));
|
||||
}
|
||||
else if (stringEqual(property, "intrinsic_delay_fall_min")) {
|
||||
float drive = port->intrinsicDelay(RiseFall::fall(), MinMax::min());
|
||||
float drive = delayAsFloat(port->intrinsicDelay(RiseFall::fall(),
|
||||
MinMax::min(), sta));
|
||||
return PropertyValue(sta->units()->timeUnit()->asString(drive, 6));
|
||||
}
|
||||
else if (stringEqual(property, "intrinsic_delay_fall_max")) {
|
||||
float drive = port->intrinsicDelay(RiseFall::fall(), MinMax::max());
|
||||
float drive = delayAsFloat(port->intrinsicDelay(RiseFall::fall(),
|
||||
MinMax::max(), sta));
|
||||
return PropertyValue(sta->units()->timeUnit()->asString(drive, 6));
|
||||
}
|
||||
else
|
||||
|
|
|
|||
|
|
@ -58,8 +58,6 @@ Sim::Sim(StaState *sta) :
|
|||
Sim::~Sim()
|
||||
{
|
||||
delete observer_;
|
||||
if (Cudd_CheckZeroRef(cudd_manager_) > 0)
|
||||
internalErrorNoThrow("non-zero cudd reference counts");
|
||||
Cudd_Quit(cudd_manager_);
|
||||
}
|
||||
|
||||
|
|
@ -198,7 +196,7 @@ Sim::funcBdd(const FuncExpr *expr,
|
|||
result = Cudd_ReadLogicZero(cudd_manager_);
|
||||
break;
|
||||
default:
|
||||
internalError("unknown function operator");
|
||||
report_->critical(596, "unknown function operator");
|
||||
}
|
||||
if (result)
|
||||
Cudd_Ref(result);
|
||||
|
|
|
|||
|
|
@ -1674,18 +1674,18 @@ proc get_clock_error { arg_name arg } {
|
|||
proc get_clock_arg { arg_name arg error_proc } {
|
||||
set clk "NULL"
|
||||
if {[llength $arg] > 1} {
|
||||
$error_proc "$arg_name arg must be a single clock, not a list."
|
||||
$error_proc 597 "$arg_name arg must be a single clock, not a list."
|
||||
} elseif { [is_object $arg] } {
|
||||
set object_type [object_type $arg]
|
||||
if { $object_type == "Clock" } {
|
||||
set clk $arg
|
||||
} else {
|
||||
$error_proc "$arg_name arg value is a $object_type, not a clock."
|
||||
$error_proc 598 "$arg_name arg value is a $object_type, not a clock."
|
||||
}
|
||||
} elseif { $arg != {} } {
|
||||
set clk [find_clock $arg]
|
||||
if { $clk == "NULL" } {
|
||||
$error_proc "$arg_name arg '$arg' clock not found."
|
||||
$error_proc 599 "$arg_name arg '$arg' clock not found."
|
||||
}
|
||||
}
|
||||
return $clk
|
||||
|
|
|
|||
|
|
@ -5978,7 +5978,7 @@ requireds_clk_delays(const RiseFall *rf,
|
|||
return requireds;
|
||||
}
|
||||
|
||||
float
|
||||
Slack
|
||||
slack(MinMax *min_max)
|
||||
{
|
||||
Sta *sta = Sta::sta();
|
||||
|
|
|
|||
Loading…
Reference in New Issue