timing: remove the articial clock delay inflation
This commit is contained in:
parent
0fce4b8f4e
commit
098dcaedec
@ -573,10 +573,7 @@ void TimingAnalyser::walk_forward()
|
|||||||
init_arrival += fanin.value.delayPair();
|
init_arrival += fanin.value.delayPair();
|
||||||
// Include the clock delay if clock_skew analysis is enabled
|
// Include the clock delay if clock_skew analysis is enabled
|
||||||
if (with_clock_skew) {
|
if (with_clock_skew) {
|
||||||
auto clock_delay = ports.at(CellPortKey(sp.first.cell, fanin.other_port)).route_delay;
|
init_arrival += ports.at(CellPortKey(sp.first.cell, fanin.other_port)).route_delay;
|
||||||
clock_delay.min_delay = clock_delay_fac * clock_delay.min_delay;
|
|
||||||
clock_delay.max_delay = clock_delay_fac * clock_delay.max_delay;
|
|
||||||
init_arrival += clock_delay;
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -633,10 +630,7 @@ void TimingAnalyser::walk_backward()
|
|||||||
|
|
||||||
if (fanin.type == CellArc::SETUP && fanin.other_port == ep.second) {
|
if (fanin.type == CellArc::SETUP && fanin.other_port == ep.second) {
|
||||||
if (with_clock_skew) {
|
if (with_clock_skew) {
|
||||||
auto clock_delay = ports.at(CellPortKey(ep.first.cell, fanin.other_port)).route_delay;
|
init_required += ports.at(CellPortKey(ep.first.cell, fanin.other_port)).route_delay;
|
||||||
clock_delay.min_delay = clock_delay_fac * clock_delay.min_delay;
|
|
||||||
clock_delay.max_delay = clock_delay_fac * clock_delay.max_delay;
|
|
||||||
init_required += clock_delay;
|
|
||||||
}
|
}
|
||||||
init_required.min_delay -= fanin.value.maxDelay();
|
init_required.min_delay -= fanin.value.maxDelay();
|
||||||
}
|
}
|
||||||
@ -707,8 +701,6 @@ dict<domain_id_t, delay_t> TimingAnalyser::max_delay_by_domain_pairs()
|
|||||||
for (auto &fanin : ep_port.cell_arcs) {
|
for (auto &fanin : ep_port.cell_arcs) {
|
||||||
if (fanin.type == CellArc::SETUP) {
|
if (fanin.type == CellArc::SETUP) {
|
||||||
auto clock_delay = ports.at(CellPortKey(ep.first.cell, fanin.other_port)).route_delay;
|
auto clock_delay = ports.at(CellPortKey(ep.first.cell, fanin.other_port)).route_delay;
|
||||||
clock_delay.min_delay = clock_delay_fac * clock_delay.min_delay;
|
|
||||||
clock_delay.max_delay = clock_delay_fac * clock_delay.max_delay;
|
|
||||||
delay += clock_delay.minDelay();
|
delay += clock_delay.minDelay();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -722,8 +714,6 @@ dict<domain_id_t, delay_t> TimingAnalyser::max_delay_by_domain_pairs()
|
|||||||
for (auto &fanin : sp_port.cell_arcs) {
|
for (auto &fanin : sp_port.cell_arcs) {
|
||||||
if (fanin.type == CellArc::CLK_TO_Q) {
|
if (fanin.type == CellArc::CLK_TO_Q) {
|
||||||
auto clock_delay = ports.at(CellPortKey(sp.cell->name, fanin.other_port)).route_delay;
|
auto clock_delay = ports.at(CellPortKey(sp.cell->name, fanin.other_port)).route_delay;
|
||||||
clock_delay.min_delay = clock_delay_fac * clock_delay.min_delay;
|
|
||||||
clock_delay.max_delay = clock_delay_fac * clock_delay.max_delay;
|
|
||||||
delay -= clock_delay.maxDelay();
|
delay -= clock_delay.maxDelay();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1000,10 +990,8 @@ CriticalPath TimingAnalyser::build_critical_path_report(domain_id_t domain_pair,
|
|||||||
|
|
||||||
if (with_clock_skew && register_start && register_end && (same_clock || related_clock)) {
|
if (with_clock_skew && register_start && register_end && (same_clock || related_clock)) {
|
||||||
|
|
||||||
auto clock_delay_launch =
|
auto clock_delay_launch = ctx->getNetinfoRouteDelay(sp_clk_net, PortRef{sp_cell, sp_clk_info.clock_port});
|
||||||
clock_delay_fac * ctx->getNetinfoRouteDelay(sp_clk_net, PortRef{sp_cell, sp_clk_info.clock_port});
|
auto clock_delay_capture = ctx->getNetinfoRouteDelay(ep_clk_net, PortRef{ep_cell, ep_clk_info.clock_port});
|
||||||
auto clock_delay_capture =
|
|
||||||
clock_delay_fac * ctx->getNetinfoRouteDelay(ep_clk_net, PortRef{ep_cell, ep_clk_info.clock_port});
|
|
||||||
|
|
||||||
delay_t clock_skew = clock_delay_launch - clock_delay_capture;
|
delay_t clock_skew = clock_delay_launch - clock_delay_capture;
|
||||||
|
|
||||||
|
@ -101,9 +101,6 @@ struct TimingAnalyser
|
|||||||
// Enable analysis of clock skew between FFs.
|
// Enable analysis of clock skew between FFs.
|
||||||
bool with_clock_skew = false;
|
bool with_clock_skew = false;
|
||||||
|
|
||||||
// REMOVE ME once approved
|
|
||||||
delay_t clock_delay_fac = 1;
|
|
||||||
|
|
||||||
bool setup_only = false;
|
bool setup_only = false;
|
||||||
bool have_loops = false;
|
bool have_loops = false;
|
||||||
bool updated_domains = false;
|
bool updated_domains = false;
|
||||||
|
Loading…
Reference in New Issue
Block a user