PrimeTime is the signoff tool for backend design. IC Compiler some settings are not compatible with PrimeTime. Here is the check list for ICC & PT Correlation.
1. Set switches in IC Compiler to be compatible with PrimeTime settings
set case_analysis_with_logic_constants true
set dont_bind_unused_pins_to_logic_constant true
set disable_auto_time_borrow true
set timing_input_port_clock_shift_one_cycle false
set ignore_clock_input_delay_for_skew true
set timing_enable_multiple_clocks_per_reg true
set enable_recovery_removal_arcs true
set timing_use_enhanced_capacitance_modeling true
set high_fanout_net_threshold 0
set_clock_gating_check -setup 0 [all_clocks]
set_clock_gating_check -hold 0 [all_clocks]
set timing_input_port_default_clock true
set estimate_io_latency false
2. Set switches in PrimeTime to be correlation-friendly
set timing_clock_gating_propagate_enable false
set timing_clock_source_driver_pin_use_driver_arc_compatibility false
3. For post-route designs, always turn on Arnoldi in IC Compiler because PrimeTime
uses Arnoldi by default when detailed parasitics information is available.
4. PrimeTime doesn’t support true bc_wc mode.
As a result, you need to do two separate PrimeTime runs, i.e. one for setup analysis with max libraries/operating conditions and another for hold analysis with min libraries/operation conditions. If you are using OCV in PrimeTime and doing two separate sessions, you have the following options in IC Compiler:
Run IC Compiler in MCMM mode, with a scenario for min (hold) and another for max (setup), with a single operating condition/library specified for each scenario. Be sure to enable OCV for each scenario. This will give you the best correlation. If you do not wish to run IC Compiler in MCMM mode with multiple scenarios, similar to PrimeTime, you can do two separate IC Compiler runs, purely for timing analysis purposes only: one run for setup analysis with maximum libraries/operating conditions and a second run for hold analysis with minimum libraries/operation conditions, with OCV enabled in both runs.
Alternatively, you can run IC Compiler in a single scenario with min/max libraries in bc_wc mode. Although PrimeTime has OCV enabled, enabling OCV in IC Compiler in this case will be too pessimistic and will make correlation worse.
If your libraries have pin cap ranges, then option #2 is not recommended; run option #1 instead. Important: When doing optimization in IC Compiler, OCV should be enabled only if you are running MCMM, with a separate scenario for min (hold) and another for max (setup).
5. When timing_derate is set on the design, always do report_timing -derate to check if
derating is applied consistently between IC Compiler and PrimeTime.
6. If you see miscorrelation by directly comparing timing from extract_rc IC Compiler vs. read_parasitics in PrimeTime, try to narrow down the problem by reading the same parasitics file in IC Compiler.