report_slew -corner
This commit is contained in:
parent
cc1c0a172c
commit
312878c578
|
|
@ -1009,7 +1009,12 @@ public:
|
||||||
const PathAnalysisPt *path_ap);
|
const PathAnalysisPt *path_ap);
|
||||||
void vertexSlacks(Vertex *vertex,
|
void vertexSlacks(Vertex *vertex,
|
||||||
Slack (&slacks)[RiseFall::index_count][MinMax::index_count]);
|
Slack (&slacks)[RiseFall::index_count][MinMax::index_count]);
|
||||||
// Slew for one delay calc analysis pt(corner).
|
// Slew for one corner.
|
||||||
|
Slew vertexSlew(Vertex *vertex,
|
||||||
|
const RiseFall *rf,
|
||||||
|
const Corner *corner,
|
||||||
|
const MinMax *min_max);
|
||||||
|
// Slew for one delay calc analysis pt (corner min/max).
|
||||||
Slew vertexSlew(Vertex *vertex,
|
Slew vertexSlew(Vertex *vertex,
|
||||||
const RiseFall *rf,
|
const RiseFall *rf,
|
||||||
const DcalcAnalysisPt *dcalc_ap);
|
const DcalcAnalysisPt *dcalc_ap);
|
||||||
|
|
|
||||||
|
|
@ -3170,6 +3170,17 @@ Sta::setArcDelayAnnotated(Edge *edge,
|
||||||
graph_delay_calc_->delayInvalid(to);
|
graph_delay_calc_->delayInvalid(to);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Slew
|
||||||
|
Sta::vertexSlew(Vertex *vertex,
|
||||||
|
const RiseFall *rf,
|
||||||
|
const Corner *corner,
|
||||||
|
const MinMax *min_max)
|
||||||
|
{
|
||||||
|
findDelays(vertex);
|
||||||
|
const DcalcAnalysisPt *dcalc_ap = corner->findDcalcAnalysisPt(min_max);
|
||||||
|
return graph_->slew(vertex, rf, dcalc_ap->index());
|
||||||
|
}
|
||||||
|
|
||||||
Slew
|
Slew
|
||||||
Sta::vertexSlew(Vertex *vertex,
|
Sta::vertexSlew(Vertex *vertex,
|
||||||
const RiseFall *rf,
|
const RiseFall *rf,
|
||||||
|
|
|
||||||
|
|
@ -292,14 +292,23 @@ proc edge_disable_reason_verbose { edge } {
|
||||||
|
|
||||||
################################################################
|
################################################################
|
||||||
|
|
||||||
define_cmd_args "report_slews" { pin }
|
define_cmd_args "report_slews" {[-corner corner] pin}
|
||||||
|
|
||||||
proc report_slews { pin } {
|
proc report_slews { args } {
|
||||||
global sta_report_default_digits
|
global sta_report_default_digits
|
||||||
|
|
||||||
set pin1 [get_port_pin_error "pin" $pin]
|
parse_key_args "report_slews" args keys {-corner} flags {}
|
||||||
foreach vertex [$pin1 vertices] {
|
check_argc_eq1 "report_slews" $args
|
||||||
report_line "[vertex_path_name $vertex] [rise_short_name] [format_times [$vertex slews rise] $sta_report_default_digits] [fall_short_name] [format_times [$vertex slews fall] $sta_report_default_digits]"
|
|
||||||
|
set corner [parse_corner_or_all keys]
|
||||||
|
set pin [get_port_pin_error "pin" [lindex $args 0]]
|
||||||
|
set digits $sta_report_default_digits
|
||||||
|
foreach vertex [$pin vertices] {
|
||||||
|
if { $corner == "NULL" } {
|
||||||
|
report_line "[vertex_path_name $vertex] [rise_short_name] [format_time [$vertex slew rise min] $digits]:[format_time [$vertex slew rise max] $digits] [fall_short_name] [format_time [$vertex slew fall min] $digits]:[format_time [$vertex slew fall max] $digits]"
|
||||||
|
} else {
|
||||||
|
report_line "[vertex_path_name $vertex] [rise_short_name] [format_time [$vertex slew_corner rise $corner min] $digits]:[format_time [$vertex slew_corner rise $corner max] $digits] [fall_short_name] [format_time [$vertex slew_corner fall $corner min] $digits]:[format_time [$vertex slew_corner fall $corner max] $digits]"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
19
tcl/StaTcl.i
19
tcl/StaTcl.i
|
|
@ -5889,16 +5889,6 @@ bool is_bidirect_driver() { return self->isBidirectDriver(); }
|
||||||
int level() { return Sta::sta()->vertexLevel(self); }
|
int level() { return Sta::sta()->vertexLevel(self); }
|
||||||
int tag_group_index() { return self->tagGroupIndex(); }
|
int tag_group_index() { return self->tagGroupIndex(); }
|
||||||
|
|
||||||
TmpFloatSeq *
|
|
||||||
slews(RiseFall *rf)
|
|
||||||
{
|
|
||||||
Sta *sta = Sta::sta();
|
|
||||||
TmpFloatSeq *floats = new FloatSeq;
|
|
||||||
for (auto dcalc_ap : sta->corners()->dcalcAnalysisPts())
|
|
||||||
floats->push_back(delayAsFloat(sta->vertexSlew(self, rf, dcalc_ap)));
|
|
||||||
return floats;
|
|
||||||
}
|
|
||||||
|
|
||||||
Slew
|
Slew
|
||||||
slew(const RiseFall *rf,
|
slew(const RiseFall *rf,
|
||||||
const MinMax *min_max)
|
const MinMax *min_max)
|
||||||
|
|
@ -5907,6 +5897,15 @@ slew(const RiseFall *rf,
|
||||||
return sta->vertexSlew(self, rf, min_max);
|
return sta->vertexSlew(self, rf, min_max);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Slew
|
||||||
|
slew_corner(const RiseFall *rf,
|
||||||
|
const Corner *corner,
|
||||||
|
const MinMax *min_max)
|
||||||
|
{
|
||||||
|
Sta *sta = Sta::sta();
|
||||||
|
return sta->vertexSlew(self, rf, corner, min_max);
|
||||||
|
}
|
||||||
|
|
||||||
VertexOutEdgeIterator *
|
VertexOutEdgeIterator *
|
||||||
out_edge_iterator()
|
out_edge_iterator()
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue