set_data_check no -setup|-hold
This commit is contained in:
parent
beaaafc4f2
commit
389b9b8276
|
|
@ -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()) {
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
10
tcl/Cmds.tcl
10
tcl/Cmds.tcl
|
|
@ -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
|
||||
|
|
|
|||
3226
tcl/Sdc.tcl
3226
tcl/Sdc.tcl
File diff suppressed because it is too large
Load Diff
28
tcl/StaTcl.i
28
tcl/StaTcl.i
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue