@@ -768,8 +768,8 @@ LibertyLibrary::makeCornerMap(LibertyCell *cell1,
768768 cell2->name ());
769769 }
770770
771- for (auto arc_set1 : cell1->timing_arc_sets_ ) {
772- auto arc_set2 = cell2->findTimingArcSet (arc_set1);
771+ for (TimingArcSet * arc_set1 : cell1->timing_arc_sets_ ) {
772+ TimingArcSet * arc_set2 = cell2->findTimingArcSet (arc_set1);
773773 if (arc_set2) {
774774 if (link) {
775775 const TimingArcSeq &arcs1 = arc_set1->arcs ();
@@ -789,7 +789,7 @@ LibertyLibrary::makeCornerMap(LibertyCell *cell1,
789789 report->warn (1111 , " cell %s/%s %s -> %s timing group %s not found in cell %s/%s." ,
790790 cell1->library ()->name (),
791791 cell1->name (),
792- arc_set1->from ()-> name (),
792+ arc_set1->from () ? arc_set1-> from ()-> name () : " " ,
793793 arc_set1->to ()->name (),
794794 arc_set1->role ()->asString (),
795795 cell2->library ()->name (),
@@ -940,7 +940,8 @@ LibertyCell::LibertyCell(LibertyLibrary *library,
940940 leakage_power_(0.0 ),
941941 leakage_power_exists_(false ),
942942 has_internal_ports_(false ),
943- have_voltage_waveforms_(false )
943+ have_voltage_waveforms_(false ),
944+ footprint_(nullptr )
944945{
945946 liberty_cell_ = this ;
946947}
@@ -968,6 +969,8 @@ LibertyCell::~LibertyCell()
968969 ocv_derate_map_.deleteContents ();
969970
970971 pg_port_map_.deleteContents ();
972+
973+ stringDelete (footprint_);
971974}
972975
973976LibertyPort *
@@ -1989,6 +1992,18 @@ LibertyCell::ensureVoltageWaveforms(const DcalcAnalysisPtSeq &dcalc_aps)
19891992 }
19901993}
19911994
1995+ void
1996+ LibertyCell::setFootprint (const char *footprint)
1997+ {
1998+ footprint_ = stringCopy (footprint);
1999+ }
2000+
2001+ const char *
2002+ LibertyCell::footprint () const
2003+ {
2004+ return footprint_;
2005+ }
2006+
19922007// //////////////////////////////////////////////////////////////
19932008
19942009LibertyCellPortIterator::LibertyCellPortIterator (const LibertyCell *cell) :
0 commit comments