From 12f03395ec80d3593f4796b2a3cf5480e75735bd Mon Sep 17 00:00:00 2001 From: James Cherry Date: Mon, 4 Aug 2025 08:21:37 -0700 Subject: [PATCH 01/13] rm bfs printf Signed-off-by: James Cherry --- search/Bfs.cc | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/search/Bfs.cc b/search/Bfs.cc index 42cb4885..d6987508 100644 --- a/search/Bfs.cc +++ b/search/Bfs.cc @@ -303,12 +303,14 @@ BfsIterator::checkInQueue(Vertex *vertex) if (vertex->bfsInQueue(bfs_index_)) return; else - printf("extra %s\n", vertex->to_string(this).c_str()); + debugPrint(debug_, "bfs", 1, "extra %s", + vertex->to_string(this).c_str()); } } } if (vertex->bfsInQueue(bfs_index_)) - printf("missing %s\n", vertex->to_string(this).c_str()); + debugPrint(debug_, "brs", 1, "missing %s", + vertex->to_string(this).c_str()); } void @@ -327,7 +329,6 @@ BfsIterator::remove(Vertex *vertex) && static_cast(queue_.size()) > level) { debugPrint(debug_, "bfs", 2, "remove %s", vertex->to_string(this).c_str()); - printf("bfs remove %s\n", vertex->to_string(this).c_str()); for (Vertex *&v : queue_[level]) { if (v == vertex) { v = nullptr; From 82fd625199d25dbe6ca25db9b62417caad358bb9 Mon Sep 17 00:00:00 2001 From: James Cherry Date: Wed, 6 Aug 2025 10:10:11 -0700 Subject: [PATCH 02/13] Levelize rm relevelized limit Signed-off-by: James Cherry --- search/Levelize.cc | 4 +--- search/Levelize.hh | 1 - 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/search/Levelize.cc b/search/Levelize.cc index 9effdad0..69273479 100644 --- a/search/Levelize.cc +++ b/search/Levelize.cc @@ -51,7 +51,6 @@ Levelize::Levelize(StaState *sta) : levels_valid_(false), max_level_(0), level_space_(10), - max_incremental_level_(100), roots_(graph_), relevelize_from_(graph_), observer_(nullptr) @@ -105,8 +104,7 @@ void Levelize::ensureLevelized() { if (!levels_valid_) { - if (levelized_ - && relevelize_from_.size() < max_incremental_level_) + if (levelized_) relevelize(); else levelize(); diff --git a/search/Levelize.hh b/search/Levelize.hh index f0e5667b..fb9c1af9 100644 --- a/search/Levelize.hh +++ b/search/Levelize.hh @@ -108,7 +108,6 @@ protected: bool levels_valid_; Level max_level_; Level level_space_; - size_t max_incremental_level_; VertexSet roots_; VertexSet relevelize_from_; GraphLoopSeq loops_; From 6d18003c048ed7ed98a026f1128f03fec4f9e60d Mon Sep 17 00:00:00 2001 From: Ethan Mahintorabi Date: Mon, 11 Aug 2025 16:25:47 -0700 Subject: [PATCH 03/13] util: Fix memory leak in PatternMatch (#282) When allocating a new string object in tcl you need increment and then decremenet the ref counter in order for objects to be correctly collected. Signed-off-by: Ethan Mahintorabi --- util/PatternMatch.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/util/PatternMatch.cc b/util/PatternMatch.cc index 94b32641..2dd32df9 100644 --- a/util/PatternMatch.cc +++ b/util/PatternMatch.cc @@ -89,7 +89,9 @@ PatternMatch::compileRegexp() anchored_pattern += '$'; Tcl_Obj *pattern_obj = Tcl_NewStringObj(anchored_pattern.c_str(), anchored_pattern.size()); + Tcl_IncrRefCount(pattern_obj); regexp_ = Tcl_GetRegExpFromObj(interp_, pattern_obj, flags); + Tcl_DecrRefCount(pattern_obj); if (regexp_ == nullptr && interp_) throw RegexpCompileError(pattern_); } From d31e3b06e266016131dac0326b87de1ea24b9a1c Mon Sep 17 00:00:00 2001 From: James Cherry Date: Tue, 12 Aug 2025 12:32:36 -0700 Subject: [PATCH 04/13] doc spell check Signed-off-by: James Cherry --- doc/OpenSTA.fodt | 1428 +++++++++++++++++++++++----------------------- doc/OpenSTA.pdf | Bin 1426899 -> 1427456 bytes 2 files changed, 721 insertions(+), 707 deletions(-) diff --git a/doc/OpenSTA.fodt b/doc/OpenSTA.fodt index b3f99eef..b62d4b94 100644 --- a/doc/OpenSTA.fodt +++ b/doc/OpenSTA.fodt @@ -1,24 +1,24 @@ - Parallax STA documentationJames Cherry4802025-03-17T12:59:52.4638705382010-07-31T21:07:002025-06-25T12:59:54.918116000P117DT14H32M14SLibreOffice/25.2.2.2$MacOSX_AARCH64 LibreOffice_project/7370d4be9e3cf6031a51beef54ff3bda878e3facPDF files: James CherryJames Cherry12.00000falsefalsefalsefalse + Parallax STA documentationJames Cherry4812025-03-17T12:59:52.4638705382010-07-31T21:07:002025-08-12T12:31:42.963746000P117DT14H34M45SLibreOffice/25.2.2.2$MacOSX_AARCH64 LibreOffice_project/7370d4be9e3cf6031a51beef54ff3bda878e3facPDF files: James CherryJames Cherry12.00000falsefalsefalsefalse - 2140611 + 999943 0 30224 - 18512 + 17736 true false view2 - 22729 - 2151184 + 12256 + 1005261 0 - 2140611 + 999943 30222 - 2159122 + 1017677 0 1 false @@ -87,7 +87,7 @@ false true false - 25552607 + 25694037 0 false @@ -130,6 +130,15 @@ true true high-resolution + + + en + US + + + + + false true @@ -152,7 +161,9 @@ - + + + @@ -183,7 +194,7 @@ - + @@ -5517,651 +5528,654 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + @@ -6296,24 +6310,24 @@ Variables80 - Command Line Arguments + Command Line Arguments The command line arguments for sta are shown below. sta -help show help and exit -version show version and exit -no_init do not read ~/.sta -no_splash do not print the splash message -threads count|max use count threads -exit exit after reading cmd_file cmd_file source cmd_file When OpenSTA starts up, commands are first read from the user initialization file ~/.sta if it exists. If a TCL command file cmd_file is specified on the command line, commands are read from the file and executed before entering an interactive TCL command interpreter. If -exit is specified the application exits after reading cmd_file. Use the TCL exit command to exit the application. The –threads option specifies how many parallel threads to use. Use –threads max to use one thread per processor. - Example Command Scripts + Example Command Scripts To read a design into OpenSTA use the read_liberty command to read Liberty library files. Next, read hierarchical structural Verilog files with the read_verilog command. The link_design command links the Verilog to the Liberty timing cells. Any number of Liberty and Verilog files can be read before linking the design. Delays used for timing analysis are calculated using the Liberty timing models. If no parasitics are read only the pin capacitances of the timing models are used in delay calculation. Use the read_spef command to read parasitics from an extractor, or read_sdf to use delays calculated by an external delay calculator. Timing constraints can be entered as TCL commands or read using the read_sdc command. The units used by OpenSTA for all command arguments and reports are taken from the first Liberty file that is read. Use the set_cmd_units command to override the default units. - Timing Analysis using SDF + Timing Analysis using SDF A sample command file that reads a library and a Verilog netlist and reports timing checks is shown below. read_liberty example1_slow.libread_verilog example1.vlink_design topread_sdf example1.sdfcreate_clock -name clk -period 10 {clk1 clk2 clk3}set_input_delay -clock clk 0 {in1 in2}report_checks This example can be found in examples/sdf_delays.tcl. - Timing Analysis with Multiple Process Corners + Timing Analysis with Multiple Process Corners An example command script using three process corners and +/-10% min/max derating is shown below. define_corners wc typ bcread_liberty -corner wc example1_slow.libread_liberty -corner typ example1_typ.libread_liberty -corner bc example1_fast.libread_verilog example1.vlink_design topset_timing_derate -early 0.9set_timing_derate -late 1.1create_clock -name clk -period 10 {clk1 clk2 clk3}set_input_delay -clock clk 0 {in1 in2}report_checks -path_delay min_maxreport_checks -corner typ This example can be found in examples/spef_parasitics.tcl. Other examples can be found in the examples directory. - Power Analysis + Power Analysis OpenSTA also supports static power analysis with the report_power command. Probabalistic switching activities are propagated from the input ports to determine switching activities for internal pins. read_liberty sky130hd_tt.libread_verilog gcd_sky130hd.vlink_design gcdread_sdc gcd_sky130hd.sdcread_spef gcd_sky130hd.spefset_power_activity -input -activity 0.1set_power_activity -input_port reset -activity 0report_power In this example the activity for all inputs is set to 0.1, and then the activity for the reset signal is set to zero because it does not switch during steady state operation. @@ -6325,14 +6339,14 @@ read_liberty sky130hd_tt.libread_verilog gcd_sky130hd.vlink_design gcdread_sdc gcd_sky130hd.sdcread_spef gcd_sky130hd.spefread_vcd -scope gcd_tb/gcd1 gcd_sky130hd.vcd.gzreport_power This example can be found in examples/power_vcd.tcl. Note that in this simple example design simulation based activities does not significantly change the results. - TCL Interpreter + TCL Interpreter Keyword arguments to commands may be abbreviated. For example, report_checks -unique is equivalent to the following command. report_checks -unique_paths_to_endpoint The help command lists matching commands and their arguments. > help report*report_annotated_check [-setup] [-hold] [-recovery] [-removal] [-nochange] [-width] [-period] [-max_skew] [-max_lines liness] [-list_annotated]group_path_count [-list_not_annotated] [-constant_arcs]report_annotated_delay [-cell] [-net] [-from_in_ports] [-to_out_ports] [-max_lines liness] [-list_annotated] [-list_not_annotated] [-constant_arcs]report_arrival pinreport_check_types [-violators] [-verbose] [-corner corner] [-format slack_only|end] [-max_delay] [-min_delay] [-recovery] [-removal] [-clock_gating_setup] [-clock_gating_hold] [-max_slew] [-min_slew] [-max_fanout] [-min_fanout] [-max_capacitance] [-min_capacitance [-min_pulse_width] [-min_period] [-max_skew] [-net net] [-digits digits [-no_line_splits] [> filename] [>> filename]report_checks [-from from_list|-rise_from from_list|-fall_from from_list] [-through through_list|-rise_through through_list|-fall_through through_list] [-to to_list|-rise_to to_list|-fall_to to_list] [-unconstrained] [-path_delay min|min_rise|min_fall|max|max_rise|max_fall|min_max] [-corner corner] [-group_path_count path_count] [-endpoint_path_count path_count] [-unique_paths_to_endpoint] [-slack_max slack_max] [-slack_min slack_min] [-sort_by_slack] [-path_group group_name] [-format full|full_clock|full_clock_expanded|short|end|summary]... - Many reporting commands support redirection of the output to a file much like a Unix shell. + Many reporting commands support redirection of the output to a file much like a Unix shell. report_checks -to out1 > path.logreport_checks -to out2 >> path.log Debugging Timing Here are some guidelines for debugging your design if static timing does not report any paths, or does not report the expected paths. @@ -6358,13 +6372,13 @@ Next, check the arrival times at the D and CP pins of the register with report_arrivals. % report_arrivals r1/D (clk1 ^) r 1.00:1.00 f 1.00:1.00% report_arrivals r1/CP (clk1 ^) r 0.00:0.00 f INF:-INF (clk1 v) r INF:-INF f 5.00:5.00 If there are no arrivals on an input port of the design, use the set_input_delay command to specify the arrival times on the port. - Commands + Commands - all_clocks + all_clocks @@ -6377,7 +6391,7 @@ - all_inputs + all_inputs [-no_clocks] @@ -6398,7 +6412,7 @@ - all_outputs + all_outputs @@ -6411,7 +6425,7 @@ - all_registers + all_registers [-clock clock_names][-cells | -data_pins | -clock_pins | -async_pins | ‑output_pins][-level_sensitive][-edge_triggered] @@ -6488,7 +6502,7 @@ - check_setup + check_setup [-verbose][-unconstrained_endpoints][-multiple_clock][-no_clock][-no_input_delay][-loops][-generated_clocks][> filename][>> filename] @@ -6557,7 +6571,7 @@ - connect_pin + connect_pin netport|pin @@ -6657,7 +6671,7 @@ - create_generated_clock + create_generated_clock [-name clock_name]-source master_pin[-master_clock master_clock][-divide_by divisor][-multiply_by multiplier][-duty_cycle duty_cycle][-invert][-edges edge_list][-edge_shift shift_list][-add]pin_list @@ -6773,7 +6787,7 @@ - create_voltage_area + create_voltage_area [-name name][-coordinate coordinates][-guard_band_x guard_x][-guard_band_y guard_y]cells @@ -6786,7 +6800,7 @@ - current_design + current_design [design] @@ -6799,7 +6813,7 @@ - current_instance + current_instance [instance] @@ -6821,7 +6835,7 @@ - define_corners + define_corners corner1 [corner2]... @@ -6843,7 +6857,7 @@ - delete_clock + delete_clock [-all] clocks @@ -6864,7 +6878,7 @@ - delete_from_list + delete_from_list list objects @@ -6893,7 +6907,7 @@ - delete_generated_clock + delete_generated_clock [-all] clocks @@ -6914,7 +6928,7 @@ - delete_instance + delete_instance instance @@ -6936,7 +6950,7 @@ - delete_net + delete_net net @@ -6957,7 +6971,7 @@ - disconnect_pin + disconnect_pin netport | pin | -all @@ -7002,7 +7016,7 @@ - elapsed_run_time + elapsed_run_time @@ -7016,7 +7030,7 @@ - find_timing_paths + find_timing_paths [-from from_list |-rise_from from_list |-fall_from from_list][-through through_list |-rise_through through_list |-fall_through through_list][-to to_list |-rise_to to_list |-fall_to to_list][-unconstrained][-path_delay min|min_rise|min_fall |max|max_rise|max_fall |min_max][-group_path_count path_count][-endpoint_path_count endpoint_path_count][-unique_paths_to_endpoint][-corner corner][-slack_max max_slack][-slack_min min_slack][-sort_by_slack][-path_group groups] @@ -7230,7 +7244,7 @@ - get_cells + get_cells [-hierarchical][-hsc separator][-filter expr][-regexp][-nocase][-quiet][-of_objects objects][patterns] @@ -7308,7 +7322,7 @@ - get_clocks + get_clocks [-regexp][-nocase][-filter expr][-quiet]patterns @@ -7362,7 +7376,7 @@ - get_fanin + get_fanin -to sink_list[-flat][-only_cells][-startpoints_only][-levels level_count][-pin_levels pin_count][-trace_arcs timing|enabled|all] @@ -7447,7 +7461,7 @@ - get_fanout + get_fanout -from source_list[-flat][-only_cells][-endpoints_only][-levels level_count][-pin_levels pin_count][-trace_arcs timing|enabled|all] @@ -7533,7 +7547,7 @@ - get_full_name + get_full_name object @@ -7624,7 +7638,7 @@ - get_lib_pins + get_lib_pins [-of_objects objects][-hsc separator][-filter expr][-regexp][-nocase][-quiet]patterns @@ -7693,7 +7707,7 @@ - get_libs + get_libs [-filter expr][-regexp][-nocase][-quiet]patterns @@ -7747,7 +7761,7 @@ - get_nets + get_nets [-hierarchical][-hsc separator][-filter expr][-regexp][-nocase][-quiet][-of_objects objects][patterns] @@ -7824,7 +7838,7 @@ - get_name + get_name object @@ -7845,7 +7859,7 @@ - get_pins + get_pins [-hierarchical][-hsc separator][-filter expr][-regexp][-nocase][-quiet][-of_objects objects][patterns] @@ -7917,7 +7931,7 @@ - get_ports + get_ports [-filter expr][-regexp][-nocase][-quiet][-of_objects objects][patterns] @@ -7978,7 +7992,7 @@ - get_property + get_property [-object_type object_type]objectproperty @@ -8039,7 +8053,7 @@ - get_timing_edges + get_timing_edges [-from from_pins][-to to_pins][-of_objects objects][-filter expr][patterns] @@ -8084,7 +8098,7 @@ - group_path + group_path -name group_name[-weight weight][-critical_range range][-from from_list |-rise_from from_list |-fall_from from_list][-through through_list][-rise_through through_list][-fall_through through_list][-to to_list |-rise_to to_list |-fall_to to_list] @@ -8194,7 +8208,7 @@ - include + include [-echo|-e][-verbose|-v]filename[> log_filename][>> log_filename] @@ -8248,7 +8262,7 @@ - link_design + link_design [-no_black_boxes][cell_name] @@ -8279,7 +8293,7 @@ - make_instance + make_instance inst_pathlib_cell @@ -8308,7 +8322,7 @@ - make_net + make_net net_name_list @@ -8329,7 +8343,7 @@ - read_liberty + read_liberty [-corner corner][-min][-max][-infer_latches]filename @@ -8378,7 +8392,7 @@ - read_saif + read_saif [-scope scope]filename @@ -8407,7 +8421,7 @@ - read_sdc + read_sdc [-echo]filename @@ -8438,7 +8452,7 @@ - read_sdf + read_sdf [-corner corner][-unescaped_dividers]filename @@ -8480,7 +8494,7 @@ - read_spef + read_spef [-min][-max][-path path][-corner corner][-keep_capacitive_coupling][-coupling_reduction_factor factor][-reduce]filename @@ -8552,7 +8566,7 @@ - The read_spef command reads a file of net parasitics in SPEF format. Use the report_parasitic_annotation command to check for nets that are not annotated. + The read_spef command reads a file of net parasitics in SPEF format. Use the report_parasitic_annotation command to check for nets that are not annotated. Files compressed with gzip are automatically uncompressed. Separate parasitics can be annotated for corners and min and max paths using the -corner, –min and -max arguments. To use the same parastiics for every corner and for min/max delay calculation read the SPEF without -corner, -min, and -max options. read_spef spef1 @@ -8567,14 +8581,14 @@ The following SPEF constructs are ignored. *DESIGN_FLOW (all values are ignored)*S slews*D driving cell*I pin capacitances (library cell capacitances are used instead)*Q r_net load poles*K r_net load residues If the SPEF file contains triplet values the first value is used. - Parasitic networks (DSPEF) can be annotated on hierarchical blocks using the -path argument to specify the instance path to the block. Parasitic networks in the higher level netlist are stitched together at the hierarchcal pins of the blocks. + Parasitic networks (DSPEF) can be annotated on hierarchical blocks using the -path argument to specify the instance path to the block. Parasitic networks in the higher level netlist are stitched together at the hierarchical pins of the blocks. - read_vcd + read_vcd [-scope scope]filename @@ -8597,13 +8611,13 @@ - The read_vcd command reads a VCD (Value Change Dump) file from a Verilog simulation and extracts pin activities and duty cycles for use in power estimation. Files compressed with gzip are supported. Annotated activities are propagated to the fanout of the annotated pins. + The read_vcd command reads a VCD (Value Change Dump) file from a Verilog simulation and extracts pin activities and duty cycles for use in power estimation. Files compressed with gzip are supported. Annotated activities are propagated to the fanout of the annotated pins. - read_verilog + read_verilog filename @@ -8618,7 +8632,7 @@ - The read_verilog command reads a gate level verilog netlist. After all verilog netlist and Liberty libraries are read the design must be linked with the link_design command. + The read_verilog command reads a gate level verilog netlist. After all verilog netlist and Liberty libraries are read the design must be linked with the link_design command. Verilog 2001 module port declaratations are supported. An example is shown below. module top (input in1, in2, clk1, clk2, clk3, output out); Files compressed with gzip are automatically uncompressed. @@ -8627,7 +8641,7 @@ - replace_cell + replace_cell instance_listreplacement_cell @@ -8650,13 +8664,13 @@ - The replace_cell command changes the cell of an instance. The replacement cell must have the same port list (number, name, and order) as the instance's existing cell for the replacement to be successful. + The replace_cell command changes the cell of an instance. The replacement cell must have the same port list (number, name, and order) as the instance's existing cell for the replacement to be successful. - replace_activity_annotation + replace_activity_annotation [-report_unannotated][-report_annotated] @@ -8667,7 +8681,7 @@ -report_unannotated - Report unannotated pins. + Report unannotated pins. @@ -8675,17 +8689,17 @@ -report_unannotated - Report annotated pins. + Report annotated pins. - Report a summary of pins that are annotated by read_vcd, read_saif or set_power_activity. Sequential internal pins and hierarchical pins are ignored. + Report a summary of pins that are annotated by read_vcd, read_saif or set_power_activity. Sequential internal pins and hierarchical pins are ignored. - report_annotated_check + report_annotated_check [-setup][-hold][-recovery][-removal][-nochange][-width][-period][-max_skew][-max_line lines][-report_annotated][-report_unannotated][-constant_arcs] @@ -8757,7 +8771,7 @@ - -max_line lines + -max_line lines Maximum number of lines listed by the report_annotated and ‑report_unannotated options. @@ -8788,17 +8802,17 @@ - The report_annotated_check command reports a summary of SDF timing check annotation. The -report_annotated and report_annotated options can be used to list arcs that are annotated or not annotated. + The report_annotated_check command reports a summary of SDF timing check annotation. The -report_annotated and report_annotated options can be used to list arcs that are annotated or not annotated. - report_annotated_delay + report_annotated_delay - [-cell][-net][-from_in_ports][-to_out_ports][-max_lines lines][-report_annotated][-report_unannotated][-constant_arcs] + [-cell][-net][-from_in_ports][-to_out_ports][-max_lines lines][-report_annotated][-report_unannotated][-constant_arcs] @@ -8819,7 +8833,7 @@ - -from_in_ports + -from_in_ports Report annotated delays from input ports. @@ -8827,7 +8841,7 @@ - -to_out_ports + -to_out_ports Report annotated delays to output ports. @@ -8835,7 +8849,7 @@ - -max_lines lines + -max_lines lines Maximum number of lines listed by the report_annotated and ‑report_unannotated options. @@ -8866,17 +8880,17 @@ - The report_annotated_delay command reports a summary of SDF delay annotation. Without the ‑from_in_ports and –to_out_ports options arcs to and from top level ports are not reported. The ‑report_annotated and report_unannotated options can be used to list arcs that are annotated or not annotated. + The report_annotated_delay command reports a summary of SDF delay annotation. Without the ‑from_in_ports and –to_out_ports options arcs to and from top level ports are not reported. The ‑report_annotated and report_unannotated options can be used to list arcs that are annotated or not annotated. - report_checks + report_checks - [-from from_list |-rise_from from_list |-fall_from from_list][-through through_list |-rise_through through_list |-fall_through through_list][-to to_list |-rise_to to_list |-fall_to to_list][-unconstrained][-path_delay min|min_rise|min_fall |max|max_rise|max_fall |min_max][-group_path_count path_count][-endpoint_path_count endpoint_path_count][-unique_paths_to_endpoint][-corner corner][-slack_max max_slack][-slack_min min_slack][-sort_by_slack][-path_group groups][-format end|full|short|summary |full_clock|full_clock_expanded |json][-fields fields][-digits digits][-no_line_split][> filename][>> filename] + [-from from_list |-rise_from from_list |-fall_from from_list][-through through_list |-rise_through through_list |-fall_through through_list][-to to_list |-rise_to to_list |-fall_to to_list][-unconstrained][-path_delay min|min_rise|min_fall |max|max_rise|max_fall |min_max][-group_path_count path_count][-endpoint_path_count endpoint_path_count][-unique_paths_to_endpoint][-corner corner][-slack_max max_slack][-slack_min min_slack][-sort_by_slack][-path_group groups][-format end|full|short|summary |full_clock|full_clock_expanded |json][-fields fields][-digits digits][-no_line_split][> filename][>> filename] @@ -9042,10 +9056,10 @@ - -corner corner + -corner corner - Report paths for one process corner. The default is to report paths for all process corners. + Report paths for one process corner. The default is to report paths for all process corners. @@ -9074,10 +9088,10 @@ - -path_group groups + -path_group groups - List of path groups to report. The default is to report all path groups. + List of path groups to report. The default is to report all path groups. @@ -9131,23 +9145,23 @@ - -format json + -format json - Report in json format. -fields is ignored. + Report in json format. -fields is ignored. - -fields fields + -fields fields - List of capacitance|slew|input_pins|hierarcial_pins|nets|fanout|src_attr + List of capacitance|slew|input_pins|hierarchical_pins|nets|fanout|src_attr - -digits digits + -digits digits The number of digits after the decimal point to report. The default value is the variable sta_report_default_digits. @@ -9162,14 +9176,14 @@ - The report_checks command reports paths in the design. Paths are reported in groups by capture clock, unclocked path delays, gated clocks and unconstrained. + The report_checks command reports paths in the design. Paths are reported in groups by capture clock, unclocked path delays, gated clocks and unconstrained. See set_false_path for a description of allowed from_list, through_list and to_list objects. - report_check_types + report_check_types [-violators][-verbose][-format slack_only|end][-max_delay][-min_delay][-recovery][-removal][-clock_gating_setup][-clock_gating_hold][-max_slew][-min_slew][-min_pulse_width][-min_period][-digits digits][-no_split_lines][> filename][>> filename] @@ -9178,7 +9192,7 @@ - -violators + -violators Report all violated timing and design rule constraints. @@ -9194,18 +9208,18 @@ - -format slack_only + -format slack_only - Report the minumum slack for each timing check. + Report the minimum slack for each timing check. - -format end + -format end - Report the endpoint for each check. + Report the endpoint for each check. @@ -9298,7 +9312,7 @@ - -digits digits + -digits digits The number of digits after the decimal point to report. The default value is the variable sta_report_default_digits. @@ -9319,10 +9333,10 @@ - report_clock_latency + report_clock_latency - [-clock clocks][-include_internal_latency][-digits digits] + [-clock clocks][-include_internal_latency][-digits digits] @@ -9357,7 +9371,7 @@ - report_clock_min_period + report_clock_min_period [-clocks clocks][-include_port_paths] @@ -9380,13 +9394,13 @@ - Report the minimum period and maximum frequency for clocks. If the -clocks argument is not specified all clocks are reported. The minimum period is determined by examining the smallest slack paths between registers the rising edges of the clock or between falling edges of the clock. Paths between different clocks, different clock edges of the same clock, level sensitive latches, or paths constrained by set_multicycle_path, set_max_path are not considered. + Report the minimum period and maximum frequency for clocks. If the -clocks argument is not specified all clocks are reported. The minimum period is determined by examining the smallest slack paths between registers the rising edges of the clock or between falling edges of the clock. Paths between different clocks, different clock edges of the same clock, level sensitive latches, or paths constrained by set_multicycle_path, set_max_path are not considered. - report_clock_properties + report_clock_properties [clock_names] @@ -9407,10 +9421,10 @@ - report_clock_skew + report_clock_skew - [-setup|-hold][-clock clocks][-include_internal_latency][-digits digits] + [-setup|-hold][-clock clocks][-include_internal_latency][-digits digits] @@ -9454,14 +9468,14 @@ - Report the maximum difference in clock arrival between every source and target register that has a path between the source and target registers. + Report the maximum difference in clock arrival between every source and target register that has a path between the source and target registers. - report_dcalc + report_dcalc [-from from_pin][-to to_pin][-corner corner][-min][-max][-digits digits][> filename][>> filename] @@ -9472,44 +9486,44 @@ -from from_pin - Report delay calculations for timing arcs from instance input pin from_pin. + Report delay calculations for timing arcs from instance input pin from_pin. - -to to_pin + -to to_pin - Report delay calculations for timing arcs to instance output pin to_pin. + Report delay calculations for timing arcs to instance output pin to_pin. - -corner corner + -corner corner - Report paths for process corner. The -corner keyword is required if more than one process corner is defined. + Report paths for process corner. The -corner keyword is required if more than one process corner is defined. - -min + -min - Report delay calculation for min delays. + Report delay calculation for min delays. - -max + -max - Report delay calculation for max delays. + Report delay calculation for max delays. - -digits digits + -digits digits The number of digits after the decimal point to report. The default is sta_report_default_digits. @@ -9522,7 +9536,7 @@ - report_disabled_edges + report_disabled_edges @@ -9530,13 +9544,13 @@ The report_disabled_edges command reports disabled timing arcs along with the reason they are disabled. Each disabled timing arc is reported as the instance name along with the from and to ports of the arc. The disable reason is shown next. Arcs that are disabled with set_disable_timing are reported with constraint as the reason. Arcs that are disabled by constants are reported with constant as the reason along with the constant instance pin and value. Arcs that are disabled to break combinational feedback loops are reported with loop as the reason. - > report_disabled_edgesu1 A B constant B=0 + > report_disabled_edgesu1 A B constant B=0 - report_edges + report_edges [-from from_pin][-to to_pin] @@ -9547,25 +9561,25 @@ -from from_pin - Report edges/timing arcs from pin from_pin. + Report edges/timing arcs from pin from_pin. - -to to_pin + -to to_pin - Report edges/timing arcs to pin to_pin. + Report edges/timing arcs to pin to_pin. - Report the edges/timing arcs and their delays in the timing graph from/to/between pins. + Report the edges/timing arcs and their delays in the timing graph from/to/between pins. - report_instance + report_instance instance_path[> filename][>> filename] @@ -9576,7 +9590,7 @@ instance_path - Hierarchical path to a instance. + Hierarchical path to an instance. @@ -9586,7 +9600,7 @@ - report_lib_cell + report_lib_cell cell_name[> filename][>> filename] @@ -9607,7 +9621,7 @@ - report_net + report_net [-digits digits]net_path[> filename][>> filename] @@ -9636,10 +9650,10 @@ - report_parasitic_annotation + report_parasitic_annotation - [-report_unannotated][> filename][>> filename] + [-report_unannotated][> filename][>> filename] @@ -9658,10 +9672,10 @@ - report_power + report_power - [-instances instances][-highest_power_instances count][-digits digits][> filename][>> filename] + [-instances instances][-highest_power_instances count][-digits digits][> filename][>> filename] @@ -9669,35 +9683,35 @@ -instances instances - Report the power for each instance of instances. If the instance is hierarchical the total power for the instances inside the hierarchical instance is reported. + Report the power for each instance of instances. If the instance is hierarchical the total power for the instances inside the hierarchical instance is reported. - -highest_power_instances count + -highest_power_instances count - Report the power for the count highest power instances. + Report the power for the count highest power instances. - -digits digits + -digits digits The number of digits after the decimal point to report. The default value is the variable sta_report_default_digits. - The report_power command uses static power analysis based on propagated or annotated pin activities in the circuit using Liberty power models. The internal, switching, leakage and total power are reported. Design power is reported separately for combinational, sequential, macro and pad groups. Power values are reported in watts. - The read_vcd or read_saif commands can be used to read activities from a file based on simulation. If no simulation activities are available, the set_power_activity command should be used to set the activity of input ports or pins in the design. The default input activity and duty for inputs are 0.1 and 0.5 respectively. The activities are propagated from annotated input ports or pins through gates and used in the power calculations. + The report_power command uses static power analysis based on propagated or annotated pin activities in the circuit using Liberty power models. The internal, switching, leakage and total power are reported. Design power is reported separately for combinational, sequential, macro and pad groups. Power values are reported in watts. + The read_vcd or read_saif commands can be used to read activities from a file based on simulation. If no simulation activities are available, the set_power_activity command should be used to set the activity of input ports or pins in the design. The default input activity and duty for inputs are 0.1 and 0.5 respectively. The activities are propagated from annotated input ports or pins through gates and used in the power calculations. Group Internal Switching Leakage Total Power Power Power Power----------------------------------------------------------------Sequential 3.29e-06 3.41e-08 2.37e-07 3.56e-06 92.4%Combinational 1.86e-07 3.31e-08 7.51e-08 2.94e-07 7.6%Macro 0.00e+00 0.00e+00 0.00e+00 0.00e+00 0.0%Pad 0.00e+00 0.00e+00 0.00e+00 0.00e+00 0.0%---------------------------------------------------------------Total 3.48e-06 6.72e-08 3.12e-07 3.86e-06 100.0% 90.2% 1.7% 8.1% - report_pulse_width_checks + report_pulse_width_checks [-verbose][-digits digits][-no_line_splits][pins][> filename][>> filename] @@ -9713,7 +9727,7 @@ - -digits digits + -digits digits The number of digits after the decimal point to report. The default value is the variable sta_report_default_digits. @@ -9737,13 +9751,13 @@ - The report_pulse_width_checks command reports min pulse width checks for pins in the clock network. If pins is not specified all clock network pins are reported. + The report_pulse_width_checks command reports min pulse width checks for pins in the clock network. If pins is not specified all clock network pins are reported. - report_slews + report_slews [-corner corner]pin @@ -9751,10 +9765,10 @@ - -corner corner + -corner corner - Report paths for process corner. The -corner keyword is required if more than one process corner is defined. + Report paths for process corner. The -corner keyword is required if more than one process corner is defined. @@ -9772,7 +9786,7 @@ - report_tns + report_tns [-min][-max][-digits digits] @@ -9783,7 +9797,7 @@ -max - Report the total max/setup slack. + Report the total max/setup slack. @@ -9791,12 +9805,12 @@ -min - Report the total min/hold slack. + Report the total min/hold slack. - -digits digits + -digits digits The number of digits after the decimal point to report. The default value is the variable sta_report_default_digits. @@ -9809,14 +9823,14 @@ - report_units + report_units - Report the units used for command arguments and reporting. + Report the units used for command arguments and reporting. report_units time 1ns capacitance 1pF resistance 1kohm voltage 1v current 1A power 1pW distance 1um @@ -9824,7 +9838,7 @@ - report_wns + report_wns [-min][-max][-digits digits] @@ -9848,20 +9862,20 @@ - -digits digits + -digits digits The number of digits after the decimal point to report. The default value is the variable sta_report_default_digits. - Report the worst negative slack. If the worst slack is posiive, zero is reported. + Report the worst negative slack. If the worst slack is positive, zero is reported. - report_worst_slack + report_worst_slack [-min][-max][-digits digits] @@ -9885,7 +9899,7 @@ - -digits digits + -digits digits The number of digits after the decimal point to report. The default value is the variable sta_report_default_digits. @@ -9898,7 +9912,7 @@ - set_assigned_check + set_assigned_check -setup|-hold|-recovery|-removal[-rise][-fall][-corner corner][-min][-max][-from from_pins][-to to_pins][-clock rise|fall][-cond sdf_cond][-worst]margin @@ -9909,7 +9923,7 @@ -setup - Annotate setup timing checks. + Annotate setup timing checks. @@ -9917,7 +9931,7 @@ -hold - Annotate hold timing checks. + Annotate hold timing checks. @@ -9926,7 +9940,7 @@ -recovery - Annotate recovery timing checks. + Annotate recovery timing checks. @@ -9934,7 +9948,7 @@ -removal - Annotate removal timing checks. + Annotate removal timing checks. @@ -9955,7 +9969,7 @@ - -corner corner + -corner corner The name of a process corner. The -corner keyword is required if more than one process corner is defined. @@ -9979,7 +9993,7 @@ - -from from_pins + -from from_pins A list of pins for the clock. @@ -9987,7 +10001,7 @@ - -to to_pins + -to to_pins A list of pins for the data. @@ -9998,7 +10012,7 @@ -clock rise|fall - The timing check clock pin transition. + The timing check clock pin transition. @@ -10006,17 +10020,17 @@ margin - The timing check margin. + The timing check margin. - The set_assigned_check command is used to annotate the timing checks between two pins on an instance. The annotated delay overrides the calculated delay. This command is a interactive way to back-annotate delays like an SDF file. + The set_assigned_check command is used to annotate the timing checks between two pins on an instance. The annotated delay overrides the calculated delay. This command is an interactive way to back-annotate delays like an SDF file. - set_assigned_delay + set_assigned_delay -cell|-net[-rise][-fall][-corner corner][-min][-max][-from from_pins][-to to_pins]delay @@ -10057,7 +10071,7 @@ - -corner corner + -corner corner The name of a process corner. The -corner keyword is required if more than one process corner is defined. @@ -10081,7 +10095,7 @@ - -from from_pins + -from from_pins A list of pins. @@ -10089,7 +10103,7 @@ - -to to_pins + -to to_pins A list of pins. @@ -10104,14 +10118,14 @@ - The set_assigned_delay command is used to annotate the delays between two pins on an instance or net. The annotated delay overrides the calculated delay. This command is a interactive way to back-annotate delays like an SDF file. + The set_assigned_delay command is used to annotate the delays between two pins on an instance or net. The annotated delay overrides the calculated delay. This command is an interactive way to back-annotate delays like an SDF file. Use the -corner keyword to specify a process corner. The -corner keyword is required if more than one process corner is defined. - set_assigned_transition + set_assigned_transition [-rise][-fall][-corner corner][-min][-max]slewpin_list @@ -10135,10 +10149,10 @@ - -corner corner + -corner corner - Annotate delays for process corner. + Annotate delays for process corner. @@ -10181,7 +10195,7 @@ - set_case_analysis + set_case_analysis 0|1|zero|one|rise|rising|fall|fallingport_or_pin_list @@ -10203,7 +10217,7 @@ - set_clock_gating_check + set_clock_gating_check [-setup setup_time][-hold hold_time][-rise][-fall][-high][-low][objects] @@ -10211,7 +10225,7 @@ - -setup setup_time + -setup setup_time Clock enable setup margin. @@ -10219,7 +10233,7 @@ - -hold hold_time + -hold hold_time Clock enable hold margin. @@ -10276,7 +10290,7 @@ - set_clock_groups + set_clock_groups [-name name][-logically_exclusive][-physically_exclusive][-asynchronous][-allow_paths]-group clocks @@ -10284,7 +10298,7 @@ - -name name + -name name The clock group name. @@ -10331,13 +10345,13 @@ - The set_clock_groups command is used to deifine groups of clocks that interact with each other. Clocks in different groups do not interact and paths between them are not reported. Use a –group argument for each clock group. + The set_clock_groups command is used to define groups of clocks that interact with each other. Clocks in different groups do not interact and paths between them are not reported. Use a –group argument for each clock group. - set_clock_latency + set_clock_latency [-source][-clock clock][-rise][-fall][-min][-max]delayobjects @@ -10345,7 +10359,7 @@ - -source + -source The latency is at the clock source. @@ -10353,7 +10367,7 @@ - -clock clock + -clock clock If multiple clocks are defined at a pin this use this option to specify the latency for a specific clock. @@ -10415,7 +10429,7 @@ - set_clock_transition + set_clock_transition [-rise][-fall][-min][-max]transitionclocks @@ -10426,7 +10440,7 @@ -rise - Set the transition time for the rising edge of the clock. + Set the transition time for the rising edge of the clock. @@ -10434,7 +10448,7 @@ -fall - Set the transition time for the falling edge of the clock. + Set the transition time for the falling edge of the clock. @@ -10442,7 +10456,7 @@ -min - Set the min transition time. + Set the min transition time. @@ -10450,7 +10464,7 @@ -max - Set the min transition time. + Set the min transition time. @@ -10470,14 +10484,14 @@ - The set_clock_transition command describes expected transition times of the clock tree when analzying a design using ideal clocks. + The set_clock_transition command describes expected transition times of the clock tree when analyzing a design using ideal clocks. - set_clock_uncertainty + set_clock_uncertainty [-from|-rise_from|-fall_from from_clock][-to|-rise_to|-fall_to to_clock][-rise][-fall][-setup][-hold]uncertainty[objects] @@ -10485,7 +10499,7 @@ - -from from_clock + -from from_clock Inter-clock uncertainty source clock. @@ -10493,7 +10507,7 @@ - -to to_clock + -to to_clock Inter-clock uncertainty target clock. @@ -10504,7 +10518,7 @@ -rise - Inter-clock target clock rise edge, alternative to ‑rise_to.Inter-clock target clock rise edge, alternative to ‑rise_to. + Inter-clock target clock rise edge, alternative to ‑rise_to.Inter-clock target clock rise edge, alternative to ‑rise_to. @@ -10512,7 +10526,7 @@ -fall - Inter-clock target clock rise edge, alternative to ‑fall_to. + Inter-clock target clock rise edge, alternative to ‑fall_to. @@ -10520,7 +10534,7 @@ -setup - uncertainty is for setup checks. + uncertainty is for setup checks. @@ -10528,7 +10542,7 @@ -hold - uncertainty is for hold checks. + uncertainty is for hold checks. @@ -10548,22 +10562,22 @@ - The set_clock_uncertainty command specifies the uncertainty or jitter in a clock. The uncertainty for a clock can be specified on its source pin or port, or the clock itself. - set_clock_uncertainty .1 [get_clock clk1] - Inter-clock uncertainty between the source and target clocks of timing checks is specified with the ‑from|‑rise_from|-fall_from andto|‑rise_to|-fall_to arguments . - set_clock_uncertainty -from [get_clock clk1] -to [get_clocks clk2] .1 - The following commands are equivalent. - set_clock_uncertainty -from [get_clock clk1] -rise_to [get_clocks clk2] .1set_clock_uncertainty -from [get_clock clk1] -to [get_clocks clk2] -rise .1 + The set_clock_uncertainty command specifies the uncertainty or jitter in a clock. The uncertainty for a clock can be specified on its source pin or port, or the clock itself. + set_clock_uncertainty .1 [get_clock clk1] + Inter-clock uncertainty between the source and target clocks of timing checks is specified with the ‑from|‑rise_from|-fall_from andto|‑rise_to|-fall_to arguments . + set_clock_uncertainty -from [get_clock clk1] -to [get_clocks clk2] .1 + The following commands are equivalent. + set_clock_uncertainty -from [get_clock clk1] -rise_to [get_clocks clk2] .1set_clock_uncertainty -from [get_clock clk1] -to [get_clocks clk2] -rise .1 - set_cmd_units + set_cmd_units - [-capacitance cap_unit][-resistance res_unit][-time time_unit][-voltage voltage_unit][-current current_unit][-power power_unit][-distance distance_unit] + [-capacitance cap_unit][-resistance res_unit][-time time_unit][-voltage voltage_unit][-current current_unit][-power power_unit][-distance distance_unit] @@ -10595,7 +10609,7 @@ -voltage voltage_unit - The voltage scale factor followed by 'v'. + The voltage scale factor followed by 'v'. @@ -10623,7 +10637,7 @@ - The set_cmd_units command is used to change the units used by the STA command interpreter when parsing commands and reporting results. The default units are the units specified in the first Liberty library file that is read. + The set_cmd_units command is used to change the units used by the STA command interpreter when parsing commands and reporting results. The default units are the units specified in the first Liberty library file that is read. Units are specified as a scale factor followed by a unit name. The scale factors are as follows. M 1E+6k 1E+3m 1E-3u 1E-6n 1E-9p 1E-12f 1E-15 An example of the set_units command is shown below. @@ -10634,15 +10648,15 @@ - set_data_check + set_data_check - [-from|-rise_from|-fall_from from_pin][-to|-rise_to|-fall_to to_pin][-setup][-hold][-clock clock]margin + [-from|-rise_from|-fall_from from_pin][-to|-rise_to|-fall_to to_pin][-setup][-hold][-clock clock]margin - -from from_pin + -from from_pin A pin used as the timing check reference. @@ -10650,7 +10664,7 @@ - -to to_pin + -to to_pin A pin that the setup/hold check is applied to. @@ -10695,7 +10709,7 @@ - set_disable_inferred_clock_gating + set_disable_inferred_clock_gating objects @@ -10710,13 +10724,13 @@ - The set_disable_inferred_clock_gating command disables clock gating checks on a clock gating instance, clock gating pin, or clock gating enable pin. + The set_disable_inferred_clock_gating command disables clock gating checks on a clock gating instance, clock gating pin, or clock gating enable pin. - set_disable_timing + set_disable_timing [-from from_port][-to to_port]objects @@ -10743,7 +10757,7 @@ objects - A list of instances, ports, pins, cells, cell/port, or library/cell/port. + A list of instances, ports, pins, cells, cell/port, or library/cell/port. @@ -10761,10 +10775,10 @@ - set_drive + set_drive - [-rise][-fall][-max][-min]resistanceports + [-rise][-fall][-max][-min]resistanceports @@ -10788,7 +10802,7 @@ -max - Set the maximum resistance. + Set the maximum resistance. @@ -10796,7 +10810,7 @@ -min - Set the minimum resistance. + Set the minimum resistance. @@ -10809,7 +10823,7 @@ - ports + ports A list of ports. @@ -10823,10 +10837,10 @@ - set_driving_cell + set_driving_cell - [-lib_cell cell_name][-library library][-rise][-fall][-min][-max][-pin pin][-from_pin from_pin][-input_transition_rise trans_rise][-input_transition_fall trans_fall]ports + [-lib_cell cell_name][-library library][-rise][-fall][-min][-max][-pin pin][-from_pin from_pin][-input_transition_rise trans_rise][-input_transition_fall trans_fall]ports @@ -10842,7 +10856,7 @@ -library library - The driving cell library. + The driving cell library. @@ -10850,7 +10864,7 @@ -rise - Set the driving cell for a risingn edge. + Set the driving cell for a rising edge. @@ -10858,7 +10872,7 @@ -fall - Set the driving cell for a falling edge. + Set the driving cell for a falling edge. @@ -10866,7 +10880,7 @@ -max - Set the driving cell for max delays. + Set the driving cell for max delays. @@ -10874,12 +10888,12 @@ -min - Set the driving cell for min delays. + Set the driving cell for min delays. - -pin pin + -pin pin The output port of the driving cell. @@ -10887,10 +10901,10 @@ - -from_pin from_pin + -from_pin from_pin - Use timng arcs from from_pin to the output pin. + Use timing arcs from from_pin to the output pin. @@ -10903,7 +10917,7 @@ - -input_transition_fall trans_fall + -input_transition_fall trans_fall The transition time for a falling input at from_pin. @@ -10911,7 +10925,7 @@ - ports + ports A list of ports. @@ -10925,7 +10939,7 @@ - set_false_path + set_false_path [-setup][-hold][-rise][-fall][-from from_list][-rise_from from_list][-fall_from from_list][-through through_list][-rise_through through_list][-fall_through through_list][-to to_list][-rise_to to_list][-fall_to to_list][-reset_path] @@ -10936,7 +10950,7 @@ -setup - Apply to setup checks. + Apply to setup checks. @@ -10944,7 +10958,7 @@ -hold - Apply to hold checks. + Apply to hold checks. @@ -10952,7 +10966,7 @@ -rise - Apply to rising path edges. + Apply to rising path edges. @@ -10960,7 +10974,7 @@ -fall - Apply to falling path edges. + Apply to falling path edges. @@ -11006,7 +11020,7 @@ - set_fanout_load + set_fanout_load fanoutport_list @@ -11019,7 +11033,7 @@ - set_hierarchy_separator + set_hierarchy_separator separator @@ -11040,7 +11054,7 @@ - set_ideal_latency + set_ideal_latency [-rise] [-fall] [-min] [-max] delay objects @@ -11053,7 +11067,7 @@ - set_ideal_network + set_ideal_network [-no_propagation] objects @@ -11066,7 +11080,7 @@ - set_ideal_transition + set_ideal_transition [-rise] [-fall] [-min] [-max] transition_time objects @@ -11079,7 +11093,7 @@ - set_input_delay + set_input_delay [-rise][-fall][-max][-min][-clock clock][-clock_fall][-reference_pin ref_pin][-source_latency_included][-network_latency_included][-add_delay]delayport_pin_list @@ -11090,7 +11104,7 @@ -rise - Set the arrival time for the rising edge of the input. + Set the arrival time for the rising edge of the input. @@ -11098,7 +11112,7 @@ -fall - Set the arrival time for the falling edge of the input. + Set the arrival time for the falling edge of the input. @@ -11107,7 +11121,7 @@ -max - Set the maximum arrival time. + Set the maximum arrival time. @@ -11115,7 +11129,7 @@ -min - Set the minimum arrival time. + Set the minimum arrival time. @@ -11147,7 +11161,7 @@ -source_latency_included - D no add the clock source latency (insertion delay) to the delay value. + D no add the clock source latency (insertion delay) to the delay value. @@ -11155,7 +11169,7 @@ -network_latency_included - Do not add the clock latency to the delay value when the clock is ideal. + Do not add the clock latency to the delay value when the clock is ideal. @@ -11184,19 +11198,19 @@ The set_input_delay command is used to specify the arrival time of an input signal. - The following command sets the min, max, rise and fall times on the in1 input port 1.0 time units after the rising edge of clk1. + The following command sets the min, max, rise and fall times on the in1 input port 1.0 time units after the rising edge of clk1. set_input_delay -clock clk1 1.0 [get_ports in1] - Use multiple commands with the -add_delay option to specifiy separate arrival times for min, max, rise and fall times or multiple clocks. For example, the following specifies separate arrival times with respect to clocks clk1 and clk2. - set_input_delay -clock clk1 1.0 [get_ports in1]set_input_delay -add_delay -clock clk2 2.0 [get_ports in1] + Use multiple commands with the -add_delay option to specify separate arrival times for min, max, rise and fall times or multiple clocks. For example, the following specifies separate arrival times with respect to clocks clk1 and clk2. + set_input_delay -clock clk1 1.0 [get_ports in1]set_input_delay -add_delay -clock clk2 2.0 [get_ports in1] The –reference_pin option is used to specify an arrival time with respect to the arrival on a pin in the clock network. For propagated clocks, the input arrival time is relative to the clock arrival time at the reference pin (the clock source latency and network latency from the clock source to the reference pin). For ideal clocks, input arrival time is relative to the reference pin clock source latency. With the -clock_fall flag the arrival time is relative to the falling transition at the reference pin. If no clocks arrive at the reference pin the set_input_delay command is ignored. If no -clock is specified the arrival time is with respect to all clocks that arrive at the reference pin. The -source_latency_included and -network_latency_included options cannot be used with -reference_pin. - Paths from inputs that do not have an arrival time defined by set_input_delay are not reported. Set the sta_input_port_default_clock variable to 1 to report paths from inputs without a set_input_delay. + Paths from inputs that do not have an arrival time defined by set_input_delay are not reported. Set the sta_input_port_default_clock variable to 1 to report paths from inputs without a set_input_delay. - set_input_transition + set_input_transition [-rise][-fall][-max][-min]transitionport_list @@ -11207,7 +11221,7 @@ -rise - Set the rising edge transition. + Set the rising edge transition. @@ -11215,7 +11229,7 @@ -fall - Set the falling edge transition. + Set the falling edge transition. @@ -11223,7 +11237,7 @@ -max - Set the minimum transition time. + Set the minimum transition time. @@ -11231,7 +11245,7 @@ -min - Set the maximum transition time. + Set the maximum transition time. @@ -11257,7 +11271,7 @@ - set_level_shifter_strategy + set_level_shifter_strategy [-rule rule_type] @@ -11270,7 +11284,7 @@ - set_level_shifter_threshold + set_level_shifter_threshold [-voltage voltage] @@ -11283,7 +11297,7 @@ - set_load + set_load [-rise][-fall][-max][-min][-subtract_pin_load][-pin_load][-wire_load]capacitanceobjects @@ -11294,7 +11308,7 @@ -rise - Set the external port rising capacitance (ports only). + Set the external port rising capacitance (ports only). @@ -11302,7 +11316,7 @@ -fall - Set the external port falling capacitance (ports only). + Set the external port falling capacitance (ports only). @@ -11311,7 +11325,7 @@ -max - Set the max capacitance. + Set the max capacitance. @@ -11319,7 +11333,7 @@ -min - Set the min capacitance. + Set the min capacitance. @@ -11327,7 +11341,7 @@ -subtract_pin_load - Subtract the capacitance of all instance pins connected to the net from capacitance (nets only). If the resulting capacitance is negative, zero is used. Pin capacitances are ignored by delay calculatioin when this option is used. + Subtract the capacitance of all instance pins connected to the net from capacitance (nets only). If the resulting capacitance is negative, zero is used. Pin capacitances are ignored by delay calculation when this option is used. @@ -11335,7 +11349,7 @@ -pin_load - capcitance is external instance pin capacitance (ports only). + capacitance is external instance pin capacitance (ports only). @@ -11343,7 +11357,7 @@ -wire_load - capcitance is external wire capacitance (ports only). + capacitance is external wire capacitance (ports only). @@ -11363,16 +11377,16 @@ - The set_load command annotates wire capacitance on a net or external capacitance on a port. There are four different uses for the set_load commanc: - set_load -wire_load port external port wire capacitanceset_load -pin_load port external port pin capacitanceset_load port same as -pin_loadset_load net net wire capacitance - External port capacitance can be annotated separately with the -pin_load and ‑wire_load options. Without the -pin_load and -wire_load options pin capacitance is annotated. - When annnotating net wire capacitance with the -subtract_pin_load option the capacitance of all instance pins connected to the net is subtracted from capacitance. Setting the capacitance on a net overrides SPEF parasitics for delay calculation. + The set_load command annotates wire capacitance on a net or external capacitance on a port. There are four different uses for the set_load commanc: + set_load -wire_load port external port wire capacitanceset_load -pin_load port external port pin capacitanceset_load port same as -pin_loadset_load net net wire capacitance + External port capacitance can be annotated separately with the -pin_load and ‑wire_load options. Without the -pin_load and -wire_load options pin capacitance is annotated. + When annotating net wire capacitance with the -subtract_pin_load option the capacitance of all instance pins connected to the net is subtracted from capacitance. Setting the capacitance on a net overrides SPEF parasitics for delay calculation. - set_logic_dc + set_logic_dc port_list @@ -11393,7 +11407,7 @@ - set_logic_one + set_logic_one port_list @@ -11408,14 +11422,14 @@ - Set a port or pin to a constant logic one value. No paths are propagated from constant pins. Constant values set with the set_logic_one command are not propagated through downstream gates. + Set a port or pin to a constant logic one value. No paths are propagated from constant pins. Constant values set with the set_logic_one command are not propagated through downstream gates. - set_logic_zero + set_logic_zero port_list @@ -11430,13 +11444,13 @@ - Set a port or pin to a constant logic zero value. No paths are propagated from constant pins. Constant values set with the set_logic_zero command are not propagated through downstream gates. + Set a port or pin to a constant logic zero value. No paths are propagated from constant pins. Constant values set with the set_logic_zero command are not propagated through downstream gates. - set_max_area + set_max_area area @@ -11457,7 +11471,7 @@ - set_max_capacitance + set_max_capacitance capacitanceobjects @@ -11486,10 +11500,10 @@ - set_max_delay + set_max_delay - [-rise][-fall][-from from_list][-rise_from from_list][-fall_from from_list][-through through_list][-rise_through through_list][-fall_through through_list][-to to_list][-rise_to to_list][-fall_to to_list][-ignore_clock_latency][-probe][-reset_path]delay + [-rise][-fall][-from from_list][-rise_from from_list][-fall_from from_list][-through through_list][-rise_through through_list][-fall_through through_list][-to to_list][-rise_to to_list][-fall_to to_list][-ignore_clock_latency][-probe][-reset_path]delay @@ -11497,7 +11511,7 @@ -rise - Set max delay for rising paths. + Set max delay for rising paths. @@ -11505,13 +11519,13 @@ -fall - Set max delay for falling paths. + Set max delay for falling paths. - -from from_list + -from from_list A list of clocks, instances, ports or pins. @@ -11519,7 +11533,7 @@ - -through through_list + -through through_list A list of instances, pins or nets. @@ -11527,7 +11541,7 @@ - -to to_list + -to to_list A list of clocks, instances, ports or pins. @@ -11573,7 +11587,7 @@ - set_max_dynamic_power + set_max_dynamic_power power [unit] @@ -11586,7 +11600,7 @@ - set_max_fanout + set_max_fanout fanoutobjects @@ -11615,7 +11629,7 @@ - set_max_leakage_power + set_max_leakage_power power [unit] @@ -11628,7 +11642,7 @@ - set_max_time_borrow + set_max_time_borrow delayobjects @@ -11652,13 +11666,13 @@ - The set_max_time_borrow command specifies the maximum amount of time that latches can borrow. Time borrowing is the time that a data input to a transparent latch arrives after the latch opens. + The set_max_time_borrow command specifies the maximum amount of time that latches can borrow. Time borrowing is the time that a data input to a transparent latch arrives after the latch opens. - set_max_transition + set_max_transition [-data_path][-clock_path][-rise][-fall]transitionobjects @@ -11701,7 +11715,7 @@ transition - The maximum slew/transition time. + The maximum slew/transition time. @@ -11713,7 +11727,7 @@ - The set_max_transition command is specifies the maximum transition time (slew) design rule checked by the report_check_types –max_transition command. + The set_max_transition command is specifies the maximum transition time (slew) design rule checked by the report_check_types –max_transition command. If specified for a design, the default maximum transition is set for the design. If specified for a clock, the maximum transition is applied to all pins in the clock domain. The –clock_path option restricts the maximum transition to clocks in clock paths. The -data_path option restricts the maximum transition to clocks data paths. The –clock_path, -data_path, -rise and –fall options only apply to clock objects. @@ -11721,7 +11735,7 @@ - set_min_capacitance + set_min_capacitance capacitanceobjects @@ -11751,10 +11765,10 @@ - set_min_delay + set_min_delay - [-rise][-fall][-from from_list][-rise_from from_list][-fall_from from_list][-through through_list][-rise_through through_list][-fall_through through_list][-to to_list][-rise_to to_list][-fall_to to_list][-ignore_clock_latency][-probe][-reset_path]delay + [-rise][-fall][-from from_list][-rise_from from_list][-fall_from from_list][-through through_list][-rise_through through_list][-fall_through through_list][-to to_list][-rise_to to_list][-fall_to to_list][-ignore_clock_latency][-probe][-reset_path]delay @@ -11762,7 +11776,7 @@ -rise - Set min delay for rising paths. + Set min delay for rising paths. @@ -11770,12 +11784,12 @@ -fall - Set min delay for falling paths. + Set min delay for falling paths. - -from from_list + -from from_list A list of clocks, instances, ports or pins. @@ -11783,7 +11797,7 @@ - -through through_list + -through through_list A list of instances, pins or nets. @@ -11791,7 +11805,7 @@ - -to to_list + -to to_list A list of clocks, instances, ports or pins. @@ -11826,7 +11840,7 @@ delay - The minimum delay. + The minimum delay. @@ -11838,7 +11852,7 @@ - set_min_pulse_width + set_min_pulse_width [-high][-low]min_widthobjects @@ -11883,7 +11897,7 @@ - set_multicycle_path + set_multicycle_path [-setup][-hold][-rise][-fall][-start][-end][-from from_list][-rise_from from_list][-fall_from from_list][-through through_list][-rise_through through_list][-fall_through through_list][-to to_list][-rise_to to_list][-fall_to to_list][-reset_path]path_multiplier @@ -11894,7 +11908,7 @@ -setup - Set cycle count for setup checks. + Set cycle count for setup checks. @@ -11902,7 +11916,7 @@ -hold - Set cycle count for hold checks. + Set cycle count for hold checks. @@ -11910,7 +11924,7 @@ -rise - Set cycle count for rising path edges. + Set cycle count for rising path edges. @@ -11918,7 +11932,7 @@ -fall - Set cycle count for falling path edges. + Set cycle count for falling path edges. @@ -11940,7 +11954,7 @@ - -from from_list + -from from_list A list of clocks, instances, ports or pins. @@ -11948,7 +11962,7 @@ - -through through_list + -through through_list A list of instances, pins or nets. @@ -11956,7 +11970,7 @@ - -to to_list + -to to_list A list of clocks, instances, ports or pins. @@ -11985,7 +11999,7 @@ - set_operating_conditions + set_operating_conditions [-analysis_type single|bc_wc|on_chip_variation][-library lib][condition][-min min_condition][-max max_condition][-min_library min_lib][-max_library max_lib] @@ -12012,12 +12026,12 @@ ‑analysis_type on_chip_variation - The min and max operating conditions represent variations on the chip that can occur simultaineously. Setup checks use max_condition for data paths and min_condition for clock paths. Hold checks use min_condition for data paths and max_condition for clock paths. This is the default analysis type. + The min and max operating conditions represent variations on the chip that can occur simultaneously. Setup checks use max_condition for data paths and min_condition for clock paths. Hold checks use min_condition for data paths and max_condition for clock paths. This is the default analysis type. - -library lib + -library lib The name of the library that contains condition. @@ -12033,7 +12047,7 @@ - -min min_condition + -min min_condition The operating condition to use for min paths and hold checks. @@ -12041,7 +12055,7 @@ - -max max_condition + -max max_condition The operating condition to use for max paths and setup checks. @@ -12057,7 +12071,7 @@ - -max_library max_lib + -max_library max_lib The name of the library that contains max_condition. @@ -12070,7 +12084,7 @@ - set_output_delay + set_output_delay [-rise][-fall][-max][-min][-clock clock][-clock_fall][-reference_pin ref_pin][-source_latency_included][-network_latency_included][-add_delay]delayport_pin_list @@ -12081,7 +12095,7 @@ -rise - Set the output delay for the rising edge of the input. + Set the output delay for the rising edge of the input. @@ -12089,7 +12103,7 @@ -fall - Set the output delay for the falling edge of the input. + Set the output delay for the falling edge of the input. @@ -12097,7 +12111,7 @@ -max - Set the maximum output delay. + Set the maximum output delay. @@ -12105,7 +12119,7 @@ -min - Set the minimum output delay. + Set the minimum output delay. @@ -12113,7 +12127,7 @@ -clock clock - The external check is to clock. The default clock edge is rising. + The external check is to clock. The default clock edge is rising. @@ -12121,7 +12135,7 @@ -clock_fall - The external check is to the falling edge of clock. + The external check is to the falling edge of clock. @@ -12129,7 +12143,7 @@ -reference_pin ref_pin - The external check is clocked by the clock that arrives at ref_pin. + The external check is clocked by the clock that arrives at ref_pin. @@ -12137,7 +12151,7 @@ -add_delay - Add this output delay to any existing output delays. + Add this output delay to any existing output delays. @@ -12145,7 +12159,7 @@ delay - The external delay to the check clocked by clock. + The external delay to the check clocked by clock. @@ -12157,17 +12171,17 @@ - The set_output_delay command is used to specify the external delay to a setup/hold check on an output port or internal pin that is clocked by clock. Unless the -add_delay option is specified any existing output delays are replaced. - The –reference_pin option is used to specify a timing check with respect to the arrival on a pin in the clock network. For propagated clocks, the timing check is relative to the clock arrival time at the reference pin (the clock source latency and network latency from the clock source to the reference pin). For ideal clocks, the timing check is relative to the reference pin clock source latency. With the -clock_fall flag the timing check is relative to the falling edge of the reference pin. If no clocks arrive at the reference pin the set_output_delay command is ignored. If no -clock is specified the timing check is with respect to all clocks that arrive at the reference pin. The -source_latency_included and -network_latency_included options cannot be used with -reference_pin. + The set_output_delay command is used to specify the external delay to a setup/hold check on an output port or internal pin that is clocked by clock. Unless the -add_delay option is specified any existing output delays are replaced. + The –reference_pin option is used to specify a timing check with respect to the arrival on a pin in the clock network. For propagated clocks, the timing check is relative to the clock arrival time at the reference pin (the clock source latency and network latency from the clock source to the reference pin). For ideal clocks, the timing check is relative to the reference pin clock source latency. With the -clock_fall flag the timing check is relative to the falling edge of the reference pin. If no clocks arrive at the reference pin the set_output_delay command is ignored. If no -clock is specified the timing check is with respect to all clocks that arrive at the reference pin. The -source_latency_included and -network_latency_included options cannot be used with -reference_pin. - set_port_fanout_number + set_port_fanout_number - [-min][-max]fanoutports + [-min][-max]fanoutports @@ -12175,7 +12189,7 @@ -min - Set the min fanout. + Set the min fanout. @@ -12183,7 +12197,7 @@ -max - Set the max fanout. + Set the max fanout. @@ -12209,15 +12223,15 @@ - set_power_activity + set_power_activity - [-global][-input][-input_ports ports][-pins pins][-activity activity | -density density][-duty duty][-clock clock] + [-global][-input][-input_ports ports][-pins pins][-activity activity | -density density][-duty duty][-clock clock] - -global + -global Set the activity/duty for all non-clock pins. @@ -12233,7 +12247,7 @@ - -input_ports input_ports + -input_ports input_ports Set the input port activity/duty. @@ -12241,7 +12255,7 @@ - -pins pins + -pins pins Set the pin activity/duty. @@ -12249,46 +12263,46 @@ - -activity activity + -activity activity - The activity, or number of transitions per clock cycle. If clock is not specified the clock with the minimum period is used. If no clocks are defined an error is reported. + The activity, or number of transitions per clock cycle. If clock is not specified the clock with the minimum period is used. If no clocks are defined an error is reported. - -density density + -density density - Transitioins per library time unit. + Transitions per library time unit. - -duty duty + -duty duty - The duty, or probability the signal is high (0 <= duty <= 1.0). Defaults to 0.5. + The duty, or probability the signal is high (0 <= duty <= 1.0). Defaults to 0.5. - -clock clock + -clock clock The clock to use for the period with -activity. This option is ignored if -density is used. - The set_power_activity command is used to set the activity and duty used for power analysis globally or for input ports or pins in the design. - The default input activity for inputs is 0.1 transitions per minimum clock period if a clock is defined or 0.0 if there are no clocks defined. The default input duty is 0.5. This is equivalent to the following command: - set_power_activity -input -activity 0.1 -duty 0.5 + The set_power_activity command is used to set the activity and duty used for power analysis globally or for input ports or pins in the design. + The default input activity for inputs is 0.1 transitions per minimum clock period if a clock is defined or 0.0 if there are no clocks defined. The default input duty is 0.5. This is equivalent to the following command: + set_power_activity -input -activity 0.1 -duty 0.5 - set_propagated_clock + set_propagated_clock objects @@ -12309,7 +12323,7 @@ - set_pvt + set_pvt [-min][-max][-process process][-voltage voltage] @@ -12321,7 +12335,7 @@ -min - Set the PVT values for max delays. + Set the PVT values for max delays. @@ -12329,12 +12343,12 @@ -max - Set the PVT values for min delays. + Set the PVT values for min delays. - -process process + -process process A process value (float). @@ -12342,7 +12356,7 @@ - -voltage voltage + -voltage voltage A voltage value (float). @@ -12350,7 +12364,7 @@ - -temperature temperature + -temperature temperature A temperature value (float). @@ -12372,7 +12386,7 @@ - set_sense + set_sense [-type clock|data][-positive][-negative][-pulse pulse_type][-stop_propagation][-clock clocks]pins @@ -12399,7 +12413,7 @@ -positive - The clock sense is positive unate. + The clock sense is positive unate. @@ -12407,7 +12421,7 @@ -negative - The clock sense is negative unate. + The clock sense is negative unate. @@ -12415,7 +12429,7 @@ -pulse pulse_type - rise_triggered_high_pulserise_triggered_low_pulsefall_triggered_high_pulsefall_triggered_low_pulseNot supported. + rise_triggered_high_pulserise_triggered_low_pulsefall_triggered_high_pulsefall_triggered_low_pulseNot supported. @@ -12450,7 +12464,7 @@ - set_timing_derate + set_timing_derate [-rise][-fall][-early][-late][-clock][-data][-net_delay][-cell_delay][-cell_check]derate[objects] @@ -12458,7 +12472,7 @@ - -rise + -rise Set the derating for rising delays. @@ -12466,7 +12480,7 @@ - -fall + -fall Set the derating for falling delays. @@ -12533,7 +12547,7 @@ derate - The derating factor to apply to delays. + The derating factor to apply to delays. @@ -12552,10 +12566,10 @@ - set_resistance + set_resistance - [-max][-min]resistancenets + [-max][-min]resistancenets @@ -12585,7 +12599,7 @@ - nets + nets A list of nets. @@ -12598,10 +12612,10 @@ - set_units + set_units - [-capacitance cap_unit][-resistance res_unit][-time time_unit][-voltage voltage_unit][-current current_unit][-power power_unit][-distance distance_unit] + [-capacitance cap_unit][-resistance res_unit][-time time_unit][-voltage voltage_unit][-current current_unit][-power power_unit][-distance distance_unit] @@ -12653,7 +12667,7 @@ - The set_units command is used to check the units used by the STA command interpreter when parsing commands and reporting results. If the current units differ from the set_unit value a warning is printed. Use the set_cmd_units command to change the command units. + The set_units command is used to check the units used by the STA command interpreter when parsing commands and reporting results. If the current units differ from the set_unit value a warning is printed. Use the set_cmd_units command to change the command units. Units are specified as a scale factor followed by a unit name. The scale factors are as follows. M 1E+6k 1E+3m 1E-3u 1E-6n 1E-9p 1E-12f 1E-15 An example of the set_units command is shown below. @@ -12663,7 +12677,7 @@ - set_wire_load_min_block_size + set_wire_load_min_block_size size @@ -12676,7 +12690,7 @@ - set_wire_load_mode + set_wire_load_mode top|enclosed|segmented @@ -12713,7 +12727,7 @@ - set_wire_load_model + set_wire_load_model -name model_name[-library library][-max][-min][objects] @@ -12766,7 +12780,7 @@ - set_wire_load_selection_group + set_wire_load_selection_group [-library library][-max][-min]group_name[objects] @@ -12820,28 +12834,28 @@ - suppress_msg + suppress_msg - msg_ids + msg_ids - msg_ids + msg_ids - A list of error/warning message IDs to suppress. + A list of error/warning message IDs to suppress. - The suppress_msg command suppresses specified error/warning messages by ID. The list of message IDs can be found in doc/messages.txt. + The suppress_msg command suppresses specified error/warning messages by ID. The list of message IDs can be found in doc/messages.txt. - unset_case_analysis + unset_case_analysis port_or_pin_list @@ -12862,7 +12876,7 @@ - unset_clock_latency + unset_clock_latency [-source]objects @@ -12891,7 +12905,7 @@ - unset_clock_transition + unset_clock_transition clocks @@ -12913,7 +12927,7 @@ - unset_clock_uncertainty + unset_clock_uncertainty [-from|-rise_from|-fall_from from_clock][-to|-rise_to|-fall_to to_clock][-rise][-fall][-setup][-hold][objects] @@ -12990,10 +13004,10 @@ - unset_data_check + unset_data_check - [-from|-rise_from|-fall_from from_object][-to|-rise_to|-fall_to to_object][-setup][-hold][-clock clock] + [-from|-rise_from|-fall_from from_object][-to|-rise_to|-fall_to to_object][-setup][-hold][-clock clock] @@ -13043,7 +13057,7 @@ - unset_disable_inferred_clock_gating + unset_disable_inferred_clock_gating objects @@ -13058,13 +13072,13 @@ - The unset_disable_inferred_clock_gating command removes a previous set_disable_inferred_clock_gating command. + The unset_disable_inferred_clock_gating command removes a previous set_disable_inferred_clock_gating command. - unset_disable_timing + unset_disable_timing [-from from_port][-to to_port]objects @@ -13101,7 +13115,7 @@ - unset_input_delay + unset_input_delay [-rise][-fall][-max][-min][-clock clock][-clock_fall]port_pin_list @@ -13112,7 +13126,7 @@ -rise - Unset the arrival time for the rising edge of the input. + Unset the arrival time for the rising edge of the input. @@ -13120,7 +13134,7 @@ -fall - Unset the arrival time for the falling edge of the input. + Unset the arrival time for the falling edge of the input. @@ -13128,7 +13142,7 @@ -max - Unset the minimum arrival time. + Unset the minimum arrival time. @@ -13136,7 +13150,7 @@ -min - Unset the maximum arrival time. + Unset the maximum arrival time. @@ -13144,7 +13158,7 @@ clock - Unset the arrival time from clock. + Unset the arrival time from clock. @@ -13152,7 +13166,7 @@ -clock_fall - Unset the arrival time from the falling edge of clock + Unset the arrival time from the falling edge of clock @@ -13171,7 +13185,7 @@ - unset_output_delay + unset_output_delay [-rise][-fall][-max][-min][-clock clock][-clock_fall]port_pin_list @@ -13240,10 +13254,10 @@ - unset_path_exceptions + unset_path_exceptions - [-setup][-hold][-rise][-fall][-from|-rise_from|-fall_from from][-through|-rise_through|-fall_through through][-to|-rise_to|-fall_to to] + [-setup][-hold][-rise][-fall][-from|-rise_from|-fall_from from][-through|-rise_through|-fall_through through][-to|-rise_to|-fall_to to] @@ -13251,7 +13265,7 @@ -setup - Unset path exceptions for setup checks. + Unset path exceptions for setup checks. @@ -13259,7 +13273,7 @@ -hold - Unset path exceptions for hold checks. + Unset path exceptions for hold checks. @@ -13267,7 +13281,7 @@ -rise - Unset path exceptions for rising path edges. + Unset path exceptions for rising path edges. @@ -13276,12 +13290,12 @@ -fall - Unset path exceptions for falling path edges. + Unset path exceptions for falling path edges. - -from from + -from from A list of clocks, instances, ports or pins. @@ -13289,7 +13303,7 @@ - -through through + -through through A list of instances, pins or nets. @@ -13297,7 +13311,7 @@ - -to to + -to to A list of clocks, instances, ports or pins. @@ -13311,15 +13325,15 @@ - unset_power_activity + unset_power_activity - [-global][-input][-input_ports ports][-pins pins] + [-global][-input][-input_ports ports][-pins pins] - -global + -global Set the activity/duty for all non-clock pins. @@ -13335,7 +13349,7 @@ - -input_ports input_ports + -input_ports input_ports Set the input port activity/duty. @@ -13343,7 +13357,7 @@ - -pins pins + -pins pins Set the pin activity/duty. @@ -13351,20 +13365,20 @@ - -activity activity + -activity activity - The activity, or number of transitions per clock cycle. If clock is not specified the clock with the minimum period is used. If no clocks are defined an error is reported. + The activity, or number of transitions per clock cycle. If clock is not specified the clock with the minimum period is used. If no clocks are defined an error is reported. - The unset_power_activity_command is used to undo the efffects of the set_power_activity command. + The unset_power_activity_command is used to undo the effects of the set_power_activity command. - unset_propagated_clock + unset_propagated_clock objects @@ -13385,7 +13399,7 @@ - unset_timing_derate + unset_timing_derate @@ -13399,28 +13413,28 @@ - unsuppress_msg + unsuppress_msg - msg_ids + msg_ids - msg_ids + msg_ids - A list of error/warning message IDs to unsuppress. + A list of error/warning message IDs to unsuppress. - The unsuppress_msg command removes suppressions for the specified error/warning messages by ID. The list of message IDs can be found in doc/messages.txt. + The unsuppress_msg command removes suppressions for the specified error/warning messages by ID. The list of message IDs can be found in doc/messages.txt. - user_run_time + user_run_time @@ -13433,7 +13447,7 @@ - with_output_to_variable + with_output_to_variable var { commands } @@ -13456,16 +13470,16 @@ - The with_output_to_variable command redirects the output of TCL commands to a variable. + The with_output_to_variable command redirects the output of TCL commands to a variable. - write_path_spice + write_path_spice - -path_args path_args-spice_directory spice_directory-lib_subckt_file lib_subckts_file-model_file model_file-power power-ground ground[-simulator hspice|ngspice|xyce] + -path_args path_args-spice_directory spice_directory-lib_subckt_file lib_subckts_file-model_file model_file-power power-ground ground[-simulator hspice|ngspice|xyce] @@ -13481,7 +13495,7 @@ spice_directory - Directory for spice to write output files. + Directory for spice to write output files. @@ -13518,7 +13532,7 @@ - -simulator + -simulator Simulator that will read the spice netlist. @@ -13536,7 +13550,7 @@ - write_sdc + write_sdc [-digits digits][-gzip][-no_timestamp]filename @@ -13555,7 +13569,7 @@ -gzip - Compress the SDC with gzip. + Compress the SDC with gzip. @@ -13581,7 +13595,7 @@ - write_sdf + write_sdf [-corner corner][-divider /|.][-include_typ][-digits digits][-gzip][-no_timestamp][-no_version]filename @@ -13592,7 +13606,7 @@ corner - Write delays for corner. + Write delays for corner. @@ -13614,7 +13628,7 @@ - -digits digits + -digits digits The number of digits after the decimal point to report. The default is 4. @@ -13625,7 +13639,7 @@ -gzip - Compress the SDF using gzip. + Compress the SDF using gzip. @@ -13649,42 +13663,42 @@ filename - The SDF filename to write. + The SDF filename to write. - Write the delay calculation delays for the design in SDF format to filename. If -corner is not specified the min/max delays are across all corners. With -corner the min/max delays for corner are written. The SDF TIMESCALE is same as the time_unit in the first liberty file read. + Write the delay calculation delays for the design in SDF format to filename. If -corner is not specified the min/max delays are across all corners. With -corner the min/max delays for corner are written. The SDF TIMESCALE is same as the time_unit in the first liberty file read. - write_timing_model + write_timing_model - [-library_name lib_name][-cell_name cell_name] - [-corner corner]filename + [-library_name lib_name][-cell_name cell_name] + [-corner corner]filename - -library_name lib_name + -library_name lib_name - The name to use for the liberty library. Defaults to cell_name. + The name to use for the liberty library. Defaults to cell_name. - -cell_name cell_name + -cell_name cell_name - The name to use for the liberty cell. Defaults to the top level module name. + The name to use for the liberty cell. Defaults to the top level module name. - -corner corner + -corner corner The process corner to use for extracting the model. @@ -13695,16 +13709,16 @@ filename - Filename for the liberty timing model. + Filename for the liberty timing model. - The write_timing_model command constructs a liberty timing model for the current design and writes it to filename. cell_name defaults to the cell name of the top level block in the design. - The SDC used to extract the block should include the clock definitions. If the block contains a clock network set_propagated_clock should be used so the clock delays are included in the timing model. The following SDC commands are ignored when bulding the timing model. - set_input_delayset_output_delayset_loadset_timing_derate - Using set_input_transition with the slew from the block context will be used will improve the match between the timing model and the block netlist. Paths defined on clocks that are defined on internal pins are ignored because the model has no way to include the clock definition. + The write_timing_model command constructs a liberty timing model for the current design and writes it to filename. cell_name defaults to the cell name of the top level block in the design. + The SDC used to extract the block should include the clock definitions. If the block contains a clock network set_propagated_clock should be used so the clock delays are included in the timing model. The following SDC commands are ignored when building the timing model. + set_input_delayset_output_delayset_loadset_timing_derate + Using set_input_transition with the slew from the block context will be used will improve the match between the timing model and the block netlist. Paths defined on clocks that are defined on internal pins are ignored because the model has no way to include the clock definition. The resulting timing model can be used in a hierarchical timing flow as a replacement for the block to speed up timing analysis. This hierarchical timing methodology does not handle timing exceptions that originate or terminate inside the block. The timing model includes: - combinational paths between inputs and outputssetup and hold timing constraints on inputsclock to output timing paths + combinational paths between inputs and outputssetup and hold timing constraints on inputsclock to output timing paths Resistance of long wires on inputs and outputs of the block cannot be modeled in Liberty. To reduce inaccuracies from wire resistance in technologies with resistive wires place buffers on inputs and ouputs. The extracted timing model setup/hold checks are scalar (no input slew dependence). Delay timing arcs are load dependent but do not include input slew dependency. @@ -13712,7 +13726,7 @@ - write_verilog + write_verilog [-sort] @@ -13721,7 +13735,7 @@ - -sort + -sort Sort the instances in the netlist. @@ -13732,7 +13746,7 @@ -include_pwr_gnd - Incluce power and ground pins on instances. + Include power and ground pins on instances. @@ -13740,7 +13754,7 @@ -remove_cells lib_cells - Liberty cells to remove from the verilog netlist. Use get_lib_cells, a list of cells names, or a cell name with wildcards. + Liberty cells to remove from the Verilog netlist. Use get_lib_cells, a list of cells names, or a cell name with wildcards. @@ -13748,12 +13762,12 @@ filename - Filename for the liberty library. + Filename for the liberty library. - The write_verilog command writes a verilog netlist to filename. Use -sort to sort the instances so the results are reproducible across operating systems. Use -remove_cells to remove instances of lib_cells from the netlist. - Filter Expressions + The write_verilog command writes a Verilog netlist to filename. Use -sort to sort the instances so the results are reproducible across operating systems. Use -remove_cells to remove instances of lib_cells from the netlist. + Filter Expressions The get_cells, get_pins, get_ports and get_timing_edges functions support filtering the returned objects by property values. Supported filter expressions are shown below. @@ -13763,7 +13777,7 @@ property - Return objects with property value equal to 1. + Return objects with property value equal to 1. @@ -13776,7 +13790,7 @@ - property=~pattern + property=~pattern Return objects with property value that matches pattern. @@ -13784,7 +13798,7 @@ - property!=value + property!=value Return objects with property value not equal to value. @@ -13792,15 +13806,15 @@ - property!~value + property!~value - Return objects with property value that does not match pattern. + Return objects with property value that does not match pattern. - expr1&&expr2 + expr1&&expr2 Return objects with expr1 and expr2. expr1 and expr2 are one of the first three property value forms shown above. @@ -13809,24 +13823,24 @@ - expr1||expr2 + expr1||expr2 Return objects with expr1 or expr2. expr1 and expr2 are one of the first three property value forms shown above. - where property is an property supported by the get_property command. Note that if there are spaces in the expression it must be enclosed in quotes so that it is a single argument. - Variables + Where property is a property supported by the get_property command. Note that if there are spaces in the expression it must be enclosed in quotes so that it is a single argument. + Variables - hierarchy_separator + hierarchy_separator - Any character. + Any character. @@ -13836,7 +13850,7 @@ - sta_bidirect_net_paths_enabled + sta_bidirect_net_paths_enabled 0|1 @@ -13849,20 +13863,20 @@ - sta_continue_on_error + sta_continue_on_error 0|1 - The include and read_sdc commands stop and report any errors encountered while reading a file unless sta_continue_on_error is 1. The default value is 0. + The include and read_sdc commands stop and report any errors encountered while reading a file unless sta_continue_on_error is 1. The default value is 0. - sta_crpr_mode + sta_crpr_mode same_pin|same_transition @@ -13875,7 +13889,7 @@ - sta_cond_default_arcs_enabled + sta_cond_default_arcs_enabled 0|1 @@ -13888,20 +13902,20 @@ - sta_crpr_enabled + sta_crpr_enabled 0|1 - During min/max timing analysis for on_chip_variation the data and clock paths may overlap. For a setup check the maximum path delays are used for the data and the minimum path delays are used for the clock. Because the gates cannot simultaneously have minimum and maximum delays the timing check slack is pessimistic. This pessimism is known as Common Reconvergent Pesssimism Removal, or “CRPR”. Enabling CRPR slows down the analysis. The default value is 1. + During min/max timing analysis for on_chip_variation the data and clock paths may overlap. For a setup check the maximum path delays are used for the data and the minimum path delays are used for the clock. Because the gates cannot simultaneously have minimum and maximum delays the timing check slack is pessimistic. This pessimism is known as Common Reconvergent Pessimism Removal, or “CRPR”. Enabling CRPR slows down the analysis. The default value is 1. - sta_dynamic_loop_breaking + sta_dynamic_loop_breaking 0|1 @@ -13914,20 +13928,20 @@ - sta_gated_clock_checks_enabled + sta_gated_clock_checks_enabled 0|1 - When sta_gated_clock_checks_enabled is 1, clock gating setup and hold timing checks are checked. The default value is 1. + When sta_gated_clock_checks_enabled is 1, clock gating setup and hold timing checks are checked. The default value is 1. - sta_input_port_default_clock + sta_input_port_default_clock 0|1 @@ -13940,7 +13954,7 @@ - sta_internal_bidirect_instance_paths_enabled + sta_internal_bidirect_instance_paths_enabled 0|1 @@ -13953,7 +13967,7 @@ - sta_pocv_enabled + sta_pocv_enabled 0|1 @@ -13966,49 +13980,49 @@ - sta_propagate_all_clocks + sta_propagate_all_clocks 0|1 - All clocks defined after sta_propagate_all_clocks is set to 1 are propagated. If it is set before any clocks are defined it has the same effect as + All clocks defined after sta_propagate_all_clocks is set to 1 are propagated. If it is set before any clocks are defined it has the same effect as set_propagated_clock [all_clocks] - after all clocks have been defined. The default value is 0. + After all clocks have been defined. The default value is 0. - sta_propagate_gated_clock_enable + sta_propagate_gated_clock_enable 0|1 - When set to 1, paths of gated clock enables are propagated through the clock gating instances. If the gated clock controls sequential elements setting sta_propagate_gated_clock_enable to 0 prevents spurious paths from the clock enable. The default value is 1. + When set to 1, paths of gated clock enables are propagated through the clock gating instances. If the gated clock controls sequential elements setting sta_propagate_gated_clock_enable to 0 prevents spurious paths from the clock enable. The default value is 1. - sta_recovery_removal_checks_enabled + sta_recovery_removal_checks_enabled 0|1 - When sta_recovery_removal_checks_enabled is 0, recovery and removal timing checks are disabled. The default value is 1. + When sta_recovery_removal_checks_enabled is 0, recovery and removal timing checks are disabled. The default value is 1. - sta_report_default_digits + sta_report_default_digits integer @@ -14021,7 +14035,7 @@ - sta_preset_clear_arcs_enabled + sta_preset_clear_arcs_enabled 0|1 @@ -14231,7 +14245,7 @@ - Version 2.6.0, Sep 23, 2024Copyright (c) 2024, Parallax Software, Inc. + Version 2.6.0, Sep 23, 2024Copyright (c) 2024, Parallax Software, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <https://www.gnu.org/licenses/>. diff --git a/doc/OpenSTA.pdf b/doc/OpenSTA.pdf index f12e365885fd1741c4b04038572fd478134427c4..ac92e30e8ef3c026fec53c7d1a3572463f224c07 100644 GIT binary patch delta 194563 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 z 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 delta 195415 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

)l!v{gYTSxQX2Tc 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 TKY?Sym3B|wc;nSqUqAUXh~b Date: Tue, 12 Aug 2025 18:08:01 -0700 Subject: [PATCH 05/13] set_max_delay -from pos_latch -to neg_latch (eagle 20250808) Signed-off-by: James Cherry --- include/sta/PathEnd.hh | 2 ++ search/Latches.cc | 2 +- search/PathEnd.cc | 18 ++++++++++++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/include/sta/PathEnd.hh b/include/sta/PathEnd.hh index c41cda50..36f9e2b7 100644 --- a/include/sta/PathEnd.hh +++ b/include/sta/PathEnd.hh @@ -375,6 +375,8 @@ public: virtual const TimingRole *checkRole(const StaState *sta) const; virtual Required requiredTime(const StaState *sta) const; virtual Arrival borrow(const StaState *sta) const; + virtual float targetClkTime(const StaState *sta) const; + virtual float targetClkOffset(const StaState *sta) const; Arrival targetClkWidth(const StaState *sta) const; virtual int exceptPathCmp(const PathEnd *path_end, const StaState *sta) const; diff --git a/search/Latches.cc b/search/Latches.cc index 15469083..c75028b1 100644 --- a/search/Latches.cc +++ b/search/Latches.cc @@ -93,7 +93,7 @@ Latches::latchRequired(const Path *data_path, CycleAccting *acct = sdc_->cycleAccting(data_clk_edge, enable_clk_edge); // checkTgtClkTime - float tgt_clk_time = acct->requiredTime(check_role); + float tgt_clk_time = path_delay ? 0.0 : acct->requiredTime(check_role); // checkTgtClkArrival broken down into components. Arrival enable_arrival = max_delay + tgt_clk_time diff --git a/search/PathEnd.cc b/search/PathEnd.cc index 203b3d52..aa3e7ac9 100644 --- a/search/PathEnd.cc +++ b/search/PathEnd.cc @@ -1193,6 +1193,24 @@ PathEndLatchCheck::checkRole(const StaState *sta) const return TimingRole::latchSetup(); } +float +PathEndLatchCheck::targetClkTime(const StaState *sta) const +{ + if (path_delay_) + return 0.0; + else + return PathEndClkConstrained::targetClkTime(sta); +} + +float +PathEndLatchCheck::targetClkOffset(const StaState *sta) const +{ + if (path_delay_) + return -targetClkEdge(sta)->time(); + else + return PathEndClkConstrained::targetClkOffset(sta); +} + Required PathEndLatchCheck::requiredTime(const StaState *sta) const { From 4920f673a87b3712b2f9c0f80e9f4c8bef8e6149 Mon Sep 17 00:00:00 2001 From: Akash Levy Date: Wed, 13 Aug 2025 09:53:44 -0700 Subject: [PATCH 06/13] JSON reporting: split out source clock path (#285) --- search/ReportPath.cc | 5 ++++- test/report_json1.ok | 6 ++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/search/ReportPath.cc b/search/ReportPath.cc index 5f8d5fe0..01e7cac6 100644 --- a/search/ReportPath.cc +++ b/search/ReportPath.cc @@ -1103,6 +1103,7 @@ ReportPath::reportJson(const PathEnd *end, sdc_network_->pathName(endpoint)); const ClockEdge *src_clk_edge = end->sourceClkEdge(this); + const Path *src_clk_path = expanded.clkPath(); const Path *tgt_clk_path = end->targetClkPath(); if (src_clk_edge) { stringAppend(result, " \"source_clock\": \"%s\",\n", @@ -1110,6 +1111,8 @@ ReportPath::reportJson(const PathEnd *end, stringAppend(result, " \"source_clock_edge\": \"%s\",\n", src_clk_edge->transition()->name()); } + if (src_clk_path) + reportJson(src_clk_path, "source_clock_path", 2, true, result); reportJson(expanded, "source_path", 2, !end->isUnconstrained(), result); const ClockEdge *tgt_clk_edge = end->targetClkEdge(this); @@ -1180,7 +1183,7 @@ ReportPath::reportJson(const PathExpanded &expanded, string &result) const { stringAppend(result, "%*s\"%s\": [\n", indent, "", path_name); - for (size_t i = 0; i < expanded.size(); i++) { + for (size_t i = expanded.startIndex(); i < expanded.size(); i++) { const Path *path = expanded.path(i); const Pin *pin = path->vertex(this)->pin(); const Net *net = network_->net(pin); diff --git a/test/report_json1.ok b/test/report_json1.ok index f5a1e56e..51e8ae79 100644 --- a/test/report_json1.ok +++ b/test/report_json1.ok @@ -7,7 +7,7 @@ "endpoint": "_1416_[0]/D", "source_clock": "clk", "source_clock_edge": "rise", - "source_path": [ + "source_clock_path": [ { "instance": "", "cell": "counter", @@ -25,7 +25,9 @@ "net": "clk", "arrival": 0.000e+00, "slew": 0.000e+00 - }, + } + ], + "source_path": [ { "instance": "_1415_", "cell": "sky130_fd_sc_hd__dfrtp_1", From 5b56558e7a314a57ef0b55f0074705b027db9e65 Mon Sep 17 00:00:00 2001 From: James Cherry Date: Wed, 13 Aug 2025 11:43:40 -0700 Subject: [PATCH 07/13] GraphDelayCalc::findDelays no need to visit if iter empty Signed-off-by: James Cherry --- dcalc/GraphDelayCalc.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/dcalc/GraphDelayCalc.cc b/dcalc/GraphDelayCalc.cc index 531e1eeb..9106ca9d 100644 --- a/dcalc/GraphDelayCalc.cc +++ b/dcalc/GraphDelayCalc.cc @@ -260,8 +260,10 @@ GraphDelayCalc::findDelays(Level level) if (incremental_) seedInvalidDelays(); - FindVertexDelays visitor(this); - dcalc_count += iter_->visitParallel(level, &visitor); + if (!iter_->empty()) { + FindVertexDelays visitor(this); + dcalc_count += iter_->visitParallel(level, &visitor); + } // Timing checks require slews at both ends of the arc, // so find their delays after all slews are known. From 872f611fea7d7c30d8a27a76708916bf080dfbbc Mon Sep 17 00:00:00 2001 From: Matt Liberty Date: Fri, 15 Aug 2025 18:28:05 +0000 Subject: [PATCH 08/13] Support redirection for report_clock_min_period (#286) Signed-off-by: Matt Liberty --- search/Search.tcl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/search/Search.tcl b/search/Search.tcl index 6e6aa78c..41f53a70 100644 --- a/search/Search.tcl +++ b/search/Search.tcl @@ -1111,7 +1111,7 @@ proc parse_path_group_arg { group_names } { define_cmd_args "report_clock_min_period" \ { [-clocks clocks] [-include_port_paths] } -proc report_clock_min_period { args } { +proc_redirect report_clock_min_period { parse_key_args "report_min_clock_period" args \ keys {-clocks} flags {-include_port_paths} 0 @@ -1131,7 +1131,7 @@ proc report_clock_min_period { args } { # max frequency in MHz set fmax [expr 1.0e-6 / $min_period] } - puts "[get_name $clk] period_min = [sta::format_time $min_period 2] fmax = [format %.2f $fmax]" + report_line "[get_name $clk] period_min = [sta::format_time $min_period 2] fmax = [format %.2f $fmax]" } } From 70f4bc0459a876c36b0ae9f95f7aad50ffc612db Mon Sep 17 00:00:00 2001 From: James Cherry Date: Mon, 18 Aug 2025 13:27:30 -0700 Subject: [PATCH 09/13] latch nworst thru D->Q (eagle 20250815) Signed-off-by: James Cherry --- search/PathEnum.cc | 97 +++++++++++++++++--------- search/ReportPath.cc | 162 +++++++++++++++++++++---------------------- search/ReportPath.hh | 14 ++-- 3 files changed, 150 insertions(+), 123 deletions(-) diff --git a/search/PathEnum.cc b/search/PathEnum.cc index 1f39e029..a63f76e9 100644 --- a/search/PathEnum.cc +++ b/search/PathEnum.cc @@ -35,6 +35,7 @@ #include "PathAnalysisPt.hh" #include "Tag.hh" #include "Search.hh" +#include "Latches.hh" #include "PathEnd.hh" #include "Path.hh" @@ -219,7 +220,8 @@ PathEnum::reportDiversionPath(Diversion *div) p->to_string(this).c_str(), delayAsString(p->arrival(), this), Path::equal(p, after_div, this) ? " <-after diversion" : ""); - if (p != path && network_->isLatchData(p->pin(this))) + if (p != path + && network_->isLatchData(p->pin(this))) break; p = p->prevPath(); } @@ -529,13 +531,23 @@ PathEnum::divSlack(Path *before_div, const TimingArc *div_arc, const PathAnalysisPt *path_ap) { - Arrival arc_arrival = before_div->arrival(); + Arrival before_div_arrival = before_div->arrival(); if (div_edge) { - ArcDelay div_delay = search_->deratedDelay(div_edge->from(graph_), - div_arc, div_edge, - false, path_ap); - Arrival div_arrival = search_->clkPathArrival(after_div) + div_delay; - return div_arrival - arc_arrival; + if (div_edge->role()->isLatchDtoQ()) { + Arrival div_arrival; + ArcDelay div_delay; + Tag *q_tag; + latches_->latchOutArrival(after_div, div_arc, div_edge, path_ap, + q_tag, div_delay, div_arrival); + return div_arrival - before_div_arrival; + } + else { + ArcDelay div_delay = search_->deratedDelay(div_edge->from(graph_), + div_arc, div_edge, + false, path_ap); + Arrival div_arrival = search_->clkPathArrival(after_div) + div_delay; + return div_arrival - before_div_arrival; + } } else { report()->error(1370, "path diversion missing edge."); @@ -634,39 +646,56 @@ PathEnum::updatePathHeadDelays(PathSeq &paths, Tag *prev_tag = after_div->tag(this); ClkInfo *prev_clk_info = prev_tag->clkInfo(); Arrival prev_arrival = search_->clkPathArrival(after_div); - for (int i = paths.size() - 1; i >= 0; i--) { + int path_idx_max = paths.size() - 1; + // paths[0] is the path endpoint + for (int i = path_idx_max; i >= 0; i--) { Path *path = paths[i]; TimingArc *arc = path->prevArc(this); Edge *edge = path->prevEdge(this); if (edge) { + Arrival arrival; PathAnalysisPt *path_ap = path->pathAnalysisPt(this); - ArcDelay arc_delay = search_->deratedDelay(edge->from(graph_), - arc, edge, false, path_ap); - Arrival arrival = prev_arrival + arc_delay; - debugPrint(debug_, "path_enum", 5, "update arrival %s %s %s -> %s", - path->vertex(this)->to_string(this).c_str(), - path->tag(this)->to_string(this).c_str(), - delayAsString(path->arrival(), this), - delayAsString(arrival, this)); - path->setArrival(arrival); - prev_arrival = arrival; - const Tag *tag = path->tag(this); - const ClkInfo *clk_info = tag->clkInfo(); - if (crprActive() - && clk_info != prev_clk_info - // D->Q paths use the EN->Q clk info so no need to update. - && arc->role() != TimingRole::latchDtoQ()) { - // When crpr is enabled the diverion may be from another crpr clk pin, - // so update the tags to use the corresponding ClkInfo. - Tag *updated_tag = search_->findTag(path->transition(this), - path_ap, - prev_clk_info, - tag->isClock(), - tag->inputDelay(), - tag->isSegmentStart(), - tag->states(), false); - path->setTag(updated_tag); + const MinMax *min_max = path->minMax(this); + if (i == path_idx_max + && edge->role()->isLatchDtoQ() + && min_max == MinMax::max()) { + ArcDelay arc_delay; + Tag *q_tag; + latches_->latchOutArrival(after_div, arc, edge, path_ap, + q_tag, arc_delay, arrival); + path->setArrival(arrival); + path->setTag(q_tag); + prev_clk_info = q_tag->clkInfo(); } + else { + ArcDelay arc_delay = search_->deratedDelay(edge->from(graph_), + arc, edge, false, path_ap); + arrival = prev_arrival + arc_delay; + path->setArrival(arrival); + const Tag *tag = path->tag(this); + const ClkInfo *clk_info = tag->clkInfo(); + if (crprActive() + && clk_info != prev_clk_info + // D->Q paths use the EN->Q clk info so no need to update. + && arc->role() != TimingRole::latchDtoQ()) { + // When crpr is enabled the diverion may be from another crpr clk pin, + // so update the tags to use the corresponding ClkInfo. + Tag *updated_tag = search_->findTag(path->transition(this), + path_ap, + prev_clk_info, + tag->isClock(), + tag->inputDelay(), + tag->isSegmentStart(), + tag->states(), false); + path->setTag(updated_tag); + } + debugPrint(debug_, "path_enum", 5, "update arrival %s %s %s -> %s", + path->vertex(this)->to_string(this).c_str(), + path->tag(this)->to_string(this).c_str(), + delayAsString(path->arrival(), this), + delayAsString(arrival, this)); + } + prev_arrival = arrival; } } } diff --git a/search/ReportPath.cc b/search/ReportPath.cc index 01e7cac6..889f5d53 100644 --- a/search/ReportPath.cc +++ b/search/ReportPath.cc @@ -549,8 +549,7 @@ ReportPath::reportFull(const PathEndLatchCheck *end) const if (ignore_clk_latency) { // Based on reportSrcPath. reportPathHeader(); - reportPath3(end->path(), expanded, false, false, 0.0, - end->sourceClkOffset(this)); + reportPath3(end->path(), expanded, false, end->sourceClkOffset(this)); } else reportSrcPath(end, expanded); @@ -716,8 +715,7 @@ ReportPath::reportFull(const PathEndPathDelay *end) const if (end->ignoreClkLatency(this)) { // Based on reportSrcPath. reportPathHeader(); - reportPath3(end->path(), expanded, false, false, 0.0, - end->sourceClkOffset(this)); + reportPath3(end->path(), expanded, false, end->sourceClkOffset(this)); } else reportSrcPath(end, expanded); @@ -935,11 +933,9 @@ ReportPath::reportFull(const PathEndDataCheck *end) const const ClockEdge *tgt_clk_edge = end->targetClkEdge(this); float prev = delayAsFloat(clk_arrival) + src_offset; float offset = prev - delayAsFloat(clk_delay) - tgt_clk_edge->time(); - reportPath5(data_clk_path, clk_expanded, clk_expanded.startIndex(), - clk_expanded.size() - 1, - data_clk_path->clkInfo(search_)->isPropagated(), false, - // Delay to startpoint is already included. - prev, offset); + // Delay to startpoint is already included. + reportPath6(data_clk_path, clk_expanded, clk_expanded.startIndex(), + true, false, prev, offset); } reportRequired(end, checkRoleReason(end)); reportSlack(end); @@ -1660,7 +1656,7 @@ ReportPath::reportSkewClkPath(const char *arrival_msg, insertion, latency); reportClkSrcLatency(insertion, clk_time, early_late); PathExpanded clk_expanded(clk_path, this); - reportPath2(clk_path, clk_expanded, false, 0.0); + reportPath1(clk_path, clk_expanded, false, 0.0); } } else { @@ -2229,8 +2225,8 @@ ReportPath::reportTgtClk(const PathEnd *end, PathExpanded clk_expanded(clk_path, this); float insertion_offset = tgtClkInsertionOffet(clk_path, early_late, path_ap); - reportPath5(clk_path, clk_expanded, 0, clk_expanded.size() - 1, is_prop, - reportClkPath(), delay_zero, time_offset + insertion_offset); + reportPath6(clk_path, clk_expanded, 0, is_prop, reportClkPath(), + delay_zero, time_offset + insertion_offset); } else { // Output departure. @@ -2377,7 +2373,7 @@ ReportPath::reportGenClkSrcAndPath(const Path *path, time_offset, clk_used_as_data); if (path) { PathExpanded expanded(path, this); - reportPath4(path, expanded, skip_first_path, false, clk_used_as_data, + reportPath2(path, expanded, skip_first_path, clk_used_as_data, path_time_offset); } } @@ -2419,7 +2415,7 @@ ReportPath::reportGenClkSrcPath1(const Clock *clk, reportClkSrcLatency(insertion, gclk_time, early_late); } PathExpanded src_expanded(src_path, this); - reportPath4(src_path, src_expanded, skip_first_path, false, + reportPath2(src_path, src_expanded, skip_first_path, clk_used_as_data, gclk_time); if (!clk->isPropagated()) reportLine("clock network delay (ideal)", 0.0, @@ -2603,11 +2599,51 @@ ReportPath::reportPathFull(const Path *path) const //////////////////////////////////////////////////////////////// +// Main entry point for reporting a path. void ReportPath::reportPath1(const Path *path, const PathExpanded &expanded, bool clk_used_as_data, float time_offset) const +{ + reportPath2(path, expanded, false, clk_used_as_data, time_offset); +} + +// Alternate entry point with skip_first_path arg. +void +ReportPath::reportPath2(const Path *path, + const PathExpanded &expanded, + bool skip_first_path, + bool clk_used_as_data, + float time_offset) const +{ + bool clk_is_propagated = path->clkInfo(search_)->isPropagated(); + bool report_clk_path = (reportClkPath() && clk_is_propagated) + || clk_used_as_data; + bool propagated_clk = clk_is_propagated || clk_used_as_data; + reportPath4(path, expanded, skip_first_path, propagated_clk, + report_clk_path, time_offset); +} + +// Alternate entry point with report_clk_path arg. +void +ReportPath::reportPath3(const Path *path, + const PathExpanded &expanded, + bool report_clk_path, + float time_offset) const +{ + bool propagated_clk = path->clkInfo(search_)->isPropagated(); + reportPath4(path, expanded, false, propagated_clk, + report_clk_path, time_offset); +} + +void +ReportPath::reportPath4(const Path *path, + const PathExpanded &expanded, + bool skip_first_path, + bool propagated_clk, + bool report_clk_path, + float time_offset) const { const Path *d_path, *q_path; Edge *d_q_edge; @@ -2620,11 +2656,11 @@ ReportPath::reportPath1(const Path *path, if (latch_enable_path) { const EarlyLate *early_late = latch_enable_path->minMax(this); latch_enable_time = search_->clkPathArrival(latch_enable_path); - if (reportClkPath()) { + if (report_clk_path) { PathExpanded enable_expanded(latch_enable_path, this); // Report the path to the latch enable. - reportPath2(latch_enable_path, enable_expanded, false, - time_offset); + reportPath5(latch_enable_path, enable_expanded, skip_first_path, + propagated_clk, report_clk_path, time_offset); } Arrival time = latch_enable_time + latch_time_given; Arrival incr = latch_time_given; @@ -2634,86 +2670,45 @@ ReportPath::reportPath1(const Path *path, reportLine("time borrowed from startpoint", incr, time, early_late); // Override latch D arrival with enable + given. reportPathLine(expanded.path(0), delay_zero, time, "latch_D"); - bool propagated_clk = path->clkInfo(search_)->isPropagated(); - bool report_clk_path = path->isClock(search_) || reportClkPath(); - reportPath5(path, expanded, 1, expanded.size() - 1, - propagated_clk, report_clk_path, + reportPath6(path, expanded, 1, propagated_clk, report_clk_path, latch_enable_time + latch_time_given, time_offset); } } else - reportPath2(path, expanded, clk_used_as_data, time_offset); -} - -void -ReportPath::reportPath2(const Path *path, - const PathExpanded &expanded, - bool clk_used_as_data, - float time_offset) const -{ - // Report the clock path if the end is a clock or we wouldn't have - // anything to report. - bool report_clk_path = clk_used_as_data - || (reportClkPath() - && path->clkInfo(search_)->isPropagated()); - reportPath3(path, expanded, clk_used_as_data, report_clk_path, - delay_zero, time_offset); -} - -void -ReportPath::reportPath3(const Path *path, - const PathExpanded &expanded, - bool clk_used_as_data, - bool report_clk_path, - Arrival prev_time, - float time_offset) const -{ - bool propagated_clk = clk_used_as_data - || path->clkInfo(search_)->isPropagated(); - size_t path_last_index = expanded.size() - 1; - reportPath5(path, expanded, 0, path_last_index, propagated_clk, - report_clk_path, prev_time, time_offset); -} - -void -ReportPath::reportPath4(const Path *path, - const PathExpanded &expanded, - bool skip_first_path, - bool skip_last_path, - bool clk_used_as_data, - float time_offset) const -{ - size_t path_first_index = 0; - Arrival prev_time(0.0); - if (skip_first_path) { - path_first_index = 1; - const Path *start = expanded.path(0); - prev_time = start->arrival() + time_offset; - } - size_t path_last_index = expanded.size() - 1; - if (skip_last_path - && path_last_index > 1) - path_last_index--; - bool propagated_clk = clk_used_as_data - || path->clkInfo(search_)->isPropagated(); - // Report the clock path if the end is a clock or we wouldn't have - // anything to report. - bool report_clk_path = path->isClock(search_) - || (reportClkPath() && propagated_clk); - reportPath5(path, expanded, path_first_index, path_last_index, - propagated_clk, report_clk_path, prev_time, time_offset); + reportPath5(path, expanded, skip_first_path, propagated_clk, + report_clk_path, time_offset); } void ReportPath::reportPath5(const Path *path, + const PathExpanded &expanded, + bool skip_first_path, + bool propagated_clk, + bool report_clk_path, + float time_offset) const +{ + size_t path_first_index = 0; + Arrival prev_time = 0.0; + if (skip_first_path) { + path_first_index = 1; + const Path *start = expanded.path(0); + prev_time = start->arrival() + time_offset; + } + reportPath6(path, expanded, path_first_index, propagated_clk, + report_clk_path, prev_time, time_offset); +} + +// This does the real workk of reporting an expanded path. +void +ReportPath::reportPath6(const Path *path, const PathExpanded &expanded, size_t path_first_index, - size_t path_last_index, bool propagated_clk, bool report_clk_path, Arrival prev_time, float time_offset) const { + size_t path_last_index = expanded.size() - 1; const MinMax *min_max = path->minMax(this); DcalcAnalysisPt *dcalc_ap = path->pathAnalysisPt(this)->dcalcAnalysisPt(); DcalcAPIndex ap_index = dcalc_ap->index(); @@ -2989,8 +2984,7 @@ ReportPath::reportInputExternalDelay(const Path *first_path, pathInputDelayRefPath(first_path, input_delay, ref_path); if (!ref_path.isNull() && reportClkPath()) { PathExpanded ref_expanded(&ref_path, this); - reportPath3(&ref_path, ref_expanded, false, true, - delay_zero, 0.0); + reportPath3(&ref_path, ref_expanded, true, 0.0); } } float input_arrival = diff --git a/search/ReportPath.hh b/search/ReportPath.hh index be229016..b9f4364b 100644 --- a/search/ReportPath.hh +++ b/search/ReportPath.hh @@ -302,24 +302,28 @@ protected: float time_offset) const; void reportPath2(const Path *path, const PathExpanded &expanded, + bool skip_first_path, bool clk_used_as_data, float time_offset) const; void reportPath3(const Path *path, const PathExpanded &expanded, - bool clk_used_as_data, bool report_clk_path, - Arrival prev_time, float time_offset) const; void reportPath4(const Path *path, const PathExpanded &expanded, - bool clk_used_as_data, bool skip_first_path, - bool skip_last_path, + bool propagated_clk, + bool report_clk_path, float time_offset) const; void reportPath5(const Path *path, + const PathExpanded &expanded, + bool skip_first_path, + bool propagated_clk, + bool report_clk_path, + float time_offset) const; + void reportPath6(const Path *path, const PathExpanded &expanded, size_t path_first_index, - size_t path_last_index, bool propagated_clk, bool report_clk_path, Arrival prev_time, From b654fd48a867bed27835e153fd8d3640f62a6666 Mon Sep 17 00:00:00 2001 From: James Cherry Date: Wed, 20 Aug 2025 16:00:33 -0700 Subject: [PATCH 10/13] read_liberty leak resolves ORFS#1184 Signed-off-by: James Cherry --- liberty/LibertyReader.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/liberty/LibertyReader.cc b/liberty/LibertyReader.cc index 4cdbd280..df789154 100644 --- a/liberty/LibertyReader.cc +++ b/liberty/LibertyReader.cc @@ -557,6 +557,8 @@ LibertyReader::defineVisitors() defineGroupVisitor("ecsm_waveform", &LibertyReader::beginEcsmWaveform, &LibertyReader::endEcsmWaveform); + defineGroupVisitor("ecsm_waveform_set", &LibertyReader::beginEcsmWaveform, + &LibertyReader::endEcsmWaveform); } void From 255988633fe90820536b6542a6b608db4d9648bc Mon Sep 17 00:00:00 2001 From: Drew Lewis Date: Sat, 23 Aug 2025 14:34:32 -0400 Subject: [PATCH 11/13] Change DmpAlg to use preallocated arrays (#283) * Change DmpAlg to use preallocated arrays DmpAlg isn't called with nr_order_ > 3 so this change saves 9 news and 9 frees for each construction and destruction of the class. * Remove nr_order size check in DmpAlg constructor Signed-off-by: Drew Lewis --------- Signed-off-by: Drew Lewis --- dcalc/DmpCeff.cc | 37 +++++++++++++------------------------ 1 file changed, 13 insertions(+), 24 deletions(-) diff --git a/dcalc/DmpCeff.cc b/dcalc/DmpCeff.cc index abdcaa92..e5b8f85e 100644 --- a/dcalc/DmpCeff.cc +++ b/dcalc/DmpCeff.cc @@ -263,12 +263,16 @@ protected: // Driver parameter Newton-Raphson state. int nr_order_; - double *x_; - double *fvec_; - double **fjac_; - double *scale_; - double *p_; - int *index_; + + static constexpr int max_nr_order_ = 3; + + double x_[max_nr_order_]; + double fvec_[max_nr_order_]; + double fjac_storage_[max_nr_order_ * max_nr_order_]; + double *fjac_[max_nr_order_]; + double scale_[max_nr_order_]; + double p_[max_nr_order_ ]; + int index_[max_nr_order_]; // Driver slew used to check load delay. double drvr_slew_; @@ -288,27 +292,12 @@ DmpAlg::DmpAlg(int nr_order, c1_(0.0), nr_order_(nr_order) { - x_ = new double[nr_order_]; - fvec_ = new double[nr_order_]; - scale_ = new double[nr_order_]; - p_ = new double[nr_order_]; - fjac_ = new double*[nr_order_]; for (int i = 0; i < nr_order_; i++) - fjac_[i] = new double[nr_order_]; - index_ = new int[nr_order_]; + // Only use the upper left block of the matrix + fjac_[i] = fjac_storage_ + i * max_nr_order_; } -DmpAlg::~DmpAlg() -{ - delete [] x_; - delete [] fvec_; - delete [] scale_; - delete [] p_; - for (int i = 0; i < nr_order_; i++) - delete [] fjac_[i]; - delete [] fjac_; - delete [] index_; -} +DmpAlg::~DmpAlg() = default; void DmpAlg::init(const LibertyLibrary *drvr_library, From e4a1ebf00eaff4988b650bbd3682ff46530ba92a Mon Sep 17 00:00:00 2001 From: James Cherry Date: Wed, 3 Sep 2025 15:05:14 -0700 Subject: [PATCH 12/13] TaGGroup refcount to reclaim memory commit cd7169f99ab8b67323c444d4c22d065487e439c1 Author: James Cherry Date: Sun Aug 31 16:02:03 2025 -0700 reportArrivals report_tag_index Signed-off-by: James Cherry commit 658f842a776bb43eef7dbfd9a08e191c31fb9f11 Author: James Cherry Date: Mon Aug 25 16:20:50 2025 -0700 tag group ref count Signed-off-by: James Cherry Signed-off-by: James Cherry --- include/sta/Search.hh | 5 ++++- search/Search.cc | 34 +++++++++++++++++++++++++--------- search/Search.i | 5 +++-- search/Tag.cc | 2 +- search/Tag.hh | 3 +++ search/TagGroup.cc | 14 ++++++++++++++ search/TagGroup.hh | 4 ++++ 7 files changed, 54 insertions(+), 13 deletions(-) diff --git a/include/sta/Search.hh b/include/sta/Search.hh index d54a8a5b..40ddc542 100644 --- a/include/sta/Search.hh +++ b/include/sta/Search.hh @@ -356,7 +356,8 @@ public: TagGroup *tagGroup(const Vertex *vertex) const; TagGroup *tagGroup(TagGroupIndex index) const; - void reportArrivals(Vertex *vertex) const; + void reportArrivals(Vertex *vertex, + bool report_tag_index) const; Slack wnsSlack(Vertex *vertex, PathAPIndex path_ap_index); void levelsChangedBefore(); @@ -410,6 +411,7 @@ public: TagGroupIndex tag_index); void checkPrevPaths() const; void deletePaths(Vertex *vertex); + void deleteTagGroup(TagGroup *group); protected: void init(StaState *sta); @@ -645,6 +647,7 @@ protected: // Capacity of tag_groups_. TagGroupIndex tag_group_capacity_; std::mutex tag_group_lock_; + std::mutex tag_group_ref_count_lock_; // Latches data outputs to queue on the next search pass. VertexSet *pending_latch_outputs_; std::mutex pending_latch_outputs_lock_; diff --git a/search/Search.cc b/search/Search.cc index 8677dab6..2023daca 100644 --- a/search/Search.cc +++ b/search/Search.cc @@ -554,15 +554,20 @@ Search::deleteFilterTagGroups() for (TagGroupIndex i = 0; i < tag_group_next_; i++) { TagGroup *group = tag_groups_[i]; if (group - && group->hasFilterTag()) { - tag_group_set_->erase(group); - tag_groups_[group->index()] = nullptr; - tag_group_free_indices_.push_back(i); - delete group; - } + && group->hasFilterTag()) + deleteTagGroup(group); } } +void +Search::deleteTagGroup(TagGroup *group) +{ + tag_group_set_->erase(group); + tag_groups_[group->index()] = nullptr; + tag_group_free_indices_.push_back(group->index()); + delete group; +} + void Search::deleteFilterTags() { @@ -2777,6 +2782,15 @@ Search::setVertexArrivals(Vertex *vertex, filtered_arrivals_->insert(vertex); } } + if (tag_group != prev_tag_group) { + LockGuard lock(tag_group_ref_count_lock_); + tag_group->incrRefCount(); + if (prev_tag_group) { + prev_tag_group->decrRefCount(); + if (prev_tag_group->refCount() == 0) + deleteTagGroup(prev_tag_group); + } + } } } @@ -2819,12 +2833,14 @@ ReportPathLess::operator()(const Path *path1, } void -Search::reportArrivals(Vertex *vertex) const +Search::reportArrivals(Vertex *vertex, + bool report_tag_index) const { report_->reportLine("Vertex %s", vertex->to_string(this).c_str()); TagGroup *tag_group = tagGroup(vertex); if (tag_group) { - report_->reportLine("Group %u", tag_group->index()); + if (report_tag_index) + report_->reportLine("Group %u", tag_group->index()); std::vector paths; VertexPathIterator path_iter(vertex, this); while (path_iter.hasNext()) { @@ -2859,7 +2875,7 @@ Search::reportArrivals(Vertex *vertex) const path_ap->pathMinMax()->to_string().c_str(), delayAsString(path->arrival(), this), req, - tag->to_string(true, false, this).c_str(), + tag->to_string(report_tag_index, false, this).c_str(), prev_str.c_str()); } } diff --git a/search/Search.i b/search/Search.i index 73f4761a..76338830 100644 --- a/search/Search.i +++ b/search/Search.i @@ -264,9 +264,10 @@ report_tag_groups() } void -report_tag_arrivals_cmd(Vertex *vertex) +report_tag_arrivals_cmd(Vertex *vertex, + bool report_tag_index) { - Sta::sta()->search()->reportArrivals(vertex); + Sta::sta()->search()->reportArrivals(vertex, report_tag_index); } void diff --git a/search/Tag.cc b/search/Tag.cc index d4e36bae..80578548 100644 --- a/search/Tag.cc +++ b/search/Tag.cc @@ -355,7 +355,7 @@ tagCmp(const Tag *tag1, return tagStateCmp(tag1, tag2); } -int +bool tagEqual(const Tag *tag1, const Tag *tag2) { diff --git a/search/Tag.hh b/search/Tag.hh index 3fa91de2..d0e44506 100644 --- a/search/Tag.hh +++ b/search/Tag.hh @@ -140,6 +140,9 @@ public: const Tag *tag2) const; }; +bool +tagEqual(const Tag *tag1, + const Tag *tag2); int tagCmp(const Tag *tag1, const Tag *tag2, diff --git a/search/TagGroup.cc b/search/TagGroup.cc index f060463b..5a79f7de 100644 --- a/search/TagGroup.cc +++ b/search/TagGroup.cc @@ -44,6 +44,7 @@ TagGroup::TagGroup(TagGroupIndex index, bool has_loop_tag) : path_index_map_(path_index_map), hash_(pathIndexMapHash(path_index_map)), + ref_count_(0), index_(index), has_clk_tag_(has_clk_tag), has_genclk_src_tag_(has_genclk_src_tag), @@ -56,6 +57,7 @@ TagGroup::TagGroup(TagGroupIndex index, TagGroup::TagGroup(TagGroupBldr *tag_bldr) : path_index_map_(&tag_bldr->pathIndexMap()), hash_(pathIndexMapHash(path_index_map_)), + ref_count_(0), own_path_map_(false) { } @@ -66,6 +68,18 @@ TagGroup::~TagGroup() delete path_index_map_; } +void +TagGroup::incrRefCount() +{ + ref_count_++; +} + +void +TagGroup::decrRefCount() +{ + ref_count_--; +} + size_t TagGroup::pathIndexMapHash(PathIndexMap *path_index_map) { diff --git a/search/TagGroup.hh b/search/TagGroup.hh index a54f9045..74b073ab 100644 --- a/search/TagGroup.hh +++ b/search/TagGroup.hh @@ -65,6 +65,9 @@ public: size_t pathIndex(Tag *tag) const; PathIndexMap *pathIndexMap() const { return path_index_map_; } bool hasTag(Tag *tag) const; + void incrRefCount(); + void decrRefCount(); + int refCount() const { return ref_count_; } protected: static size_t pathIndexMapHash(PathIndexMap *path_index_map); @@ -72,6 +75,7 @@ protected: // tag -> path index PathIndexMap *path_index_map_; size_t hash_; + int ref_count_; unsigned int index_:tag_group_index_bits; bool has_clk_tag_:1; bool has_genclk_src_tag_:1; From 849832a951d6c93e9c7c2fede2466c14d8c2e136 Mon Sep 17 00:00:00 2001 From: Waylander <62927863+Faholan@users.noreply.github.com> Date: Thu, 4 Sep 2025 00:12:26 +0200 Subject: [PATCH 13/13] Fix an undefined behaviour and a memory leak (#289) * Use a unique_ptr to avoid leaks * Use memmove instead of memcopy As both arguments can overlap, use memmove instead of memcopy * Fix code style issues --- search/Sta.cc | 1 + util/gzstream.hh | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/search/Sta.cc b/search/Sta.cc index a766d927..f384a820 100644 --- a/search/Sta.cc +++ b/search/Sta.cc @@ -2963,6 +2963,7 @@ Sta::netSlack(const Net *net, slack = pin_slack; } } + delete pin_iter; return slack; } diff --git a/util/gzstream.hh b/util/gzstream.hh index ec2ded6c..26e85352 100644 --- a/util/gzstream.hh +++ b/util/gzstream.hh @@ -117,7 +117,7 @@ public: int n_putback = gptr() - eback(); if ( n_putback > 4) n_putback = 4; - memcpy( buffer + (4 - n_putback), gptr() - n_putback, n_putback); + memmove( buffer + (4 - n_putback), gptr() - n_putback, n_putback); int num = gzread( file, buffer+4, bufferSize-4); if (num <= 0) // ERROR or EOF