From dd29fafe5d9bfa75854bef2dc6d571fa502addc5 Mon Sep 17 00:00:00 2001 From: James Cherry Date: Thu, 11 Jun 2020 20:48:48 -0700 Subject: [PATCH] report_power seg fault on missing pin --- search/Power.cc | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/search/Power.cc b/search/Power.cc index ad670771..ba5ecdd5 100644 --- a/search/Power.cc +++ b/search/Power.cc @@ -775,25 +775,26 @@ Power::findInputDuty(const Pin *to_pin, const LibertyPort *from_port = pwr->relatedPort(); if (from_port) { const Pin *from_pin = network_->findPin(inst, from_port); - FuncExpr *when = pwr->when(); - Vertex *from_vertex = graph_->pinLoadVertex(from_pin); - if (func && func->hasPort(from_port)) { - PwrActivity from_activity = findActivity(from_pin); - PwrActivity to_activity = findActivity(to_pin); - float duty1 = evalActivityDifference(func, inst, from_port).duty(); - if (to_activity.activity() == 0.0) - return 0.0; - else - return from_activity.activity() / to_activity.activity() * duty1; + if (from_pin) { + FuncExpr *when = pwr->when(); + Vertex *from_vertex = graph_->pinLoadVertex(from_pin); + if (func && func->hasPort(from_port)) { + PwrActivity from_activity = findActivity(from_pin); + PwrActivity to_activity = findActivity(to_pin); + float duty1 = evalActivityDifference(func, inst, from_port).duty(); + if (to_activity.activity() == 0.0) + return 0.0; + else + return from_activity.activity() / to_activity.activity() * duty1; + } + else if (when) + return evalActivity(when, inst).duty(); + else if (search_->isClock(from_vertex)) + return 1.0; + return 0.5; } - else if (when) - return evalActivity(when, inst).duty(); - else if (search_->isClock(from_vertex)) - return 1.0; - return 0.5; } - else - return 0.0; + return 0.0; } static bool