diff --git a/doc/ChangeLog.txt b/doc/ChangeLog.txt index fea750c3..b0777737 100644 --- a/doc/ChangeLog.txt +++ b/doc/ChangeLog.txt @@ -17,6 +17,10 @@ pin activities for power analysis. The report_cell command has been removed; use report_instance. +The read_liberty command latch inference (see OpenSTA.pdf) is now disabled by default. +The -no_latch_infer flag is deprecated. +To enable latch inference, use the -infer_latches flag. + Release 2.3.3 2022/09/24 ------------------------- diff --git a/doc/OpenSTA.odt b/doc/OpenSTA.odt index 98a03814..cadcc78f 100644 Binary files a/doc/OpenSTA.odt and b/doc/OpenSTA.odt differ diff --git a/doc/OpenSTA.pdf b/doc/OpenSTA.pdf index a99d3a7f..ea9aca4c 100644 Binary files a/doc/OpenSTA.pdf and b/doc/OpenSTA.pdf differ diff --git a/liberty/Liberty.cc b/liberty/Liberty.cc index 4ed08ec1..dea3e49b 100644 --- a/liberty/Liberty.cc +++ b/liberty/Liberty.cc @@ -1301,8 +1301,7 @@ LibertyCell::finish(bool infer_latches, makeTimingArcPortMaps(); findDefaultCondArcs(); makeLatchEnables(report, debug); - if (infer_latches - && !interface_timing_) + if (infer_latches) inferLatchRoles(debug); } diff --git a/liberty/LibertyWriter.cc b/liberty/LibertyWriter.cc index 87792688..6d6a7b80 100644 --- a/liberty/LibertyWriter.cc +++ b/liberty/LibertyWriter.cc @@ -273,6 +273,8 @@ LibertyWriter::writeCell(const LibertyCell *cell) fprintf(stream_, " area : %.3f \n", area); if (cell->isMacro()) fprintf(stream_, " is_macro : true;\n"); + if (cell->interfaceTiming()) + fprintf(stream_, " interface_timing : true;\n"); LibertyCellPortIterator port_iter(cell); while (port_iter.hasNext()) { diff --git a/search/MakeTimingModel.cc b/search/MakeTimingModel.cc index fa168456..6cbae47e 100644 --- a/search/MakeTimingModel.cc +++ b/search/MakeTimingModel.cc @@ -153,6 +153,7 @@ void MakeTimingModel::makeCell() { cell_ = lib_builder_->makeCell(library_, cell_name_, filename_); + cell_->setInterfaceTiming(true); } void diff --git a/tcl/Liberty.tcl b/tcl/Liberty.tcl index e91cb9f0..9c5ef0f7 100644 --- a/tcl/Liberty.tcl +++ b/tcl/Liberty.tcl @@ -23,13 +23,16 @@ define_cmd_args "read_liberty" \ proc_redirect read_liberty { parse_key_args "read_liberty" args keys {-corner} \ - flags {-min -max -no_latch_infer} + flags {-min -max -no_latch_infer -infer_latches} check_argc_eq1 "read_liberty" $args set filename [file nativename [lindex $args 0]] set corner [parse_corner keys] set min_max [parse_min_max_all_flags flags] - set infer_latches [expr ![info exists flags(-no_latch_infer)]] + if { [info exists flags(-no_latch_infer)] } { + sta_warn 625 "-no_latch_infer is deprecated." + } + set infer_latches [info exists flags(-infer_latches)] read_liberty_cmd $filename $corner $min_max $infer_latches }