set_data_check no -setup|-hold

This commit is contained in:
James Cherry 2019-06-26 15:58:23 -07:00
parent beaaafc4f2
commit 389b9b8276
9 changed files with 1652 additions and 1640 deletions

View File

@ -44,7 +44,7 @@ DataCheck::margin(const TransRiseFall *from_tr,
void
DataCheck::setMargin(const TransRiseFallBoth *from_tr,
const TransRiseFallBoth *to_tr,
const SetupHold *setup_hold,
const SetupHoldAll *setup_hold,
float margin)
{
TransRiseFallIterator from_tr_iter(from_tr);
@ -58,7 +58,7 @@ DataCheck::setMargin(const TransRiseFallBoth *from_tr,
void
DataCheck::removeMargin(const TransRiseFallBoth *from_tr,
const TransRiseFallBoth *to_tr,
const SetupHold *setup_hold)
const SetupHoldAll *setup_hold)
{
TransRiseFallIterator from_tr_iter(from_tr);
while (from_tr_iter.hasNext()) {

View File

@ -46,11 +46,11 @@ public:
bool &exists) const;
void setMargin(const TransRiseFallBoth *from_tr,
const TransRiseFallBoth *to_tr,
const SetupHold *setup_hold,
const SetupHoldAll *setup_hold,
float margin);
void removeMargin(const TransRiseFallBoth *from_tr,
const TransRiseFallBoth *to_tr,
const SetupHold *setup_hold);
const SetupHoldAll *setup_hold);
bool empty() const;
void marginIsOneValue(SetupHold *setup_hold,
// Return values.

View File

@ -2570,7 +2570,7 @@ Sdc::setDataCheck(Pin *from,
Pin *to,
const TransRiseFallBoth *to_tr,
Clock *clk,
const SetupHold *setup_hold,
const SetupHoldAll *setup_hold,
float margin)
{
DataCheck *check = nullptr;
@ -2605,7 +2605,7 @@ Sdc::removeDataCheck(Pin *from,
Pin *to,
const TransRiseFallBoth *to_tr,
Clock *clk,
const SetupHold *setup_hold)
const SetupHoldAll *setup_hold)
{
DataCheck probe(from, to, clk);
DataCheckSet *checks = data_checks_from_map_.findKey(from);

View File

@ -529,14 +529,14 @@ public:
Pin *to,
const TransRiseFallBoth *to_tr,
Clock *clk,
const SetupHold *setup_hold,
const SetupHoldAll *setup_hold,
float margin);
void removeDataCheck(Pin *from,
const TransRiseFallBoth *from_tr,
Pin *to,
const TransRiseFallBoth *to_tr,
Clock *clk,
const SetupHold *setup_hold);
const SetupHoldAll *setup_hold);
DataCheckSet *dataChecksFrom(const Pin *from) const;
DataCheckSet *dataChecksTo(const Pin *to) const;
void setInputDelay(Pin *pin,

View File

@ -241,6 +241,9 @@ initSta()
void
deleteAllMemory()
{
// Verilog modules refer to the network in the sta so it has
// to deleted before the sta.
deleteVerilogReader();
Sta *sta = Sta::sta();
if (sta) {
delete sta;
@ -255,7 +258,6 @@ deleteAllMemory()
Transition::destroy();
TimingRole::destroy();
PortDirection::destroy();
deleteVerilogReader();
deleteLiberty();
}
@ -1372,7 +1374,7 @@ Sta::setDataCheck(Pin *from,
Pin *to,
const TransRiseFallBoth *to_tr,
Clock *clk,
const SetupHold *setup_hold,
const SetupHoldAll *setup_hold,
float margin)
{
sdc_->setDataCheck(from, from_tr, to, to_tr, clk, setup_hold,margin);
@ -1385,7 +1387,7 @@ Sta::removeDataCheck(Pin *from,
Pin *to,
const TransRiseFallBoth *to_tr,
Clock *clk,
const SetupHold *setup_hold)
const SetupHoldAll *setup_hold)
{
sdc_->removeDataCheck(from, from_tr, to, to_tr, clk, setup_hold);
search_->requiredInvalid(to);

View File

@ -392,14 +392,14 @@ public:
Pin *to,
const TransRiseFallBoth *to_tr,
Clock *clk,
const SetupHold *setup_hold,
const SetupHoldAll *setup_hold,
float margin);
void removeDataCheck(Pin *from,
const TransRiseFallBoth *from_tr,
Pin *to,
const TransRiseFallBoth *to_tr,
Clock *clk,
const SetupHold *setup_hold);
const SetupHoldAll *setup_hold);
// set_disable_timing cell [-from] [-to]
// Disable all edges thru cell if from/to are null.
// Bus and bundle ports are NOT supported.

View File

@ -702,10 +702,12 @@ proc unset_data_checks_cmd { cmd cmd_args } {
set clk [get_clock_warn "clock" $keys(-clock)]
}
if [info exists flags(-setup)] {
set setup_hold "max"
} elseif [info exists flags(-hold)] {
set setup_hold "min"
if { [info exists flags(-setup)] && ![info exists flags(-hold)] } {
set setup_hold "setup"
} elseif { [info exists flags(-hold)] && ![info exists flags(-setup)] } {
set setup_hold "hold"
} else {
set setup_hold "setup_hold"
}
unset_data_check_cmd $from $from_tr $to $to_tr $clk $setup_hold

File diff suppressed because it is too large Load Diff

View File

@ -979,11 +979,17 @@ using namespace sta;
%typemap(in) SetupHoldAll* {
int length;
char *arg = Tcl_GetStringFromObj($input, &length);
MinMaxAll *min_max = MinMaxAll::find(arg);
if (min_max)
$1 = min_max;
if (stringEqual(arg, "hold")
|| stringEqual(arg, "min"))
$1 = SetupHoldAll::min();
else if (stringEqual(arg, "setup")
|| stringEqual(arg, "max"))
$1 = SetupHoldAll::max();
else if (stringEqual(arg, "setup_hold")
|| stringEqual(arg, "min_max"))
$1 = SetupHoldAll::all();
else {
tclError(interp, "Error: %s not min, max or min_max.", arg);
tclError(interp, "Error: %s not setup, hold, setup_hold, min, max or min_max.", arg);
return TCL_ERROR;
}
}
@ -3069,11 +3075,11 @@ set_clock_gating_check_pin_cmd(Pin *pin,
}
void
set_clock_gating_check_instance_cmd(Instance *inst,
const TransRiseFallBoth *tr,
const SetupHold *setup_hold,
float margin,
LogicValue active_value)
set_clock_gating_check_instance_cmd(Instance *inst,
const TransRiseFallBoth *tr,
const SetupHold *setup_hold,
float margin,
LogicValue active_value)
{
Sta::sta()->setClockGatingCheck(inst, tr, setup_hold, margin, active_value);
}
@ -3084,7 +3090,7 @@ set_data_check_cmd(Pin *from,
Pin *to,
const TransRiseFallBoth *to_tr,
Clock *clk,
const SetupHold *setup_hold,
const SetupHoldAll *setup_hold,
float margin)
{
Sta::sta()->setDataCheck(from, from_tr, to, to_tr, clk, setup_hold, margin);
@ -3096,7 +3102,7 @@ unset_data_check_cmd(Pin *from,
Pin *to,
const TransRiseFallBoth *to_tr,
Clock *clk,
const SetupHold *setup_hold)
const SetupHoldAll *setup_hold)
{
Sta::sta()->removeDataCheck(from, from_tr, to, to_tr, clk, setup_hold);
}