PrimeTimeSI认为两种情况不存在信号串扰:1)aggressor和victim之间的耦合电容非常小;2)aggressor和victim的信号transitiontime不相互交叠。
在不交叠的时候,如果aggressor对victim产生的glitch足够大,使victim的逻辑发生变化,则PrimeTimeSI也会考虑。
设置si_xtalk_exit_on_max_iteration_count变量定义分析循环个数,默认为2。
默认的变量si_analysis_logic_correlation_mode设置为true。
设置相应的thresholdvalue来过滤aggressornetPrimeTimeSI也会根据aggressornet对victimnet的bumpvoltage大小,来过滤掉那些耦合影响可以忽略不计的aggressornet。
先针对单个aggressornet过滤,根据变量si_filter_per_aggr_noise_peak_ratio,默认值为0.01(powervoltage的百分之一)。
然后针对周边aggressornets组合产生的影响来过滤,根据变量set_filter_accum_aggr_noise_peak_ratio,默认值为0.03。
在使能PrimeTimeSI分析前,需要确保电路综合及常规STA没有问题。
在用report_timing进行一次crosstalkdelay分析前,需要执行check_timing,主要的check涉及以下几点:1)no_driving_cell当电路中有nodrivingcell时,该aggressornet会产生很强的驱动产生crosstalk;2)ideal_clocks确保电路中的时钟为propagated时钟树结构;3)partial_input_delay所有的Inputs需要定义完整的maxdelay和mindelay定义,缺一不可,为了SI分析提供精确的timingwindow;4)unexpandable_clocks确保电路中所有不同频率的时钟都源自一个基准时钟。
set_case_analysis的net不会进行crosstalkdelay/noise分析。
当aggressornets有相同的transition方向rise或者fall,则可用set_si_aggressor_exclusion命令建立exclusivegroup,这样在crosstalkdelay/noise分析时工具会选择bumpvoltage最大的aggressornet来分析。
关于SI分析时候clockgroups的设定复杂电路中会有许多时钟,在分析timing时需要分不同的clockgroup来进行分析,就上图简单的mux电路举例,可以set_case_analysisSEL1/0分别对CLK1和CLK2进行两次分析,但如果有许多时钟,那就必须用set_false_path来区分不同的timingpath,比较简单的做法是:set_clock_groups–logically_exclusive–group{CLK1}–group{CLK2}其作用相当于把所有的clock间都set_false_path,但不同于timingpath分析,SI分析的时候还是会对CLK1和CLK2间的耦合电容x4进行分析,所以需要在SI分析时对clock进行物理上的划分:set_clock_groups–physically_exclusive–group{CLK1}–group{CLK2}这样PrimeTimeSI不会分析基于耦合电容x4产生的CLK1和CLK2之间的crosstalk,当然x1之间的CLK1和CLK2也被忽略,如果仅仅想忽略mux输出后电路中CLK1和CLK2之间的SI分析(因为实际电路工作中mux只可能会输出CLK1或CLK2),那需要在mux的输出节点使用create_generated_clock命令分别产生CLK1和CLK2,然后再进行物理上的划分即可。
CompositeAggressorMode(DelayAnalysis)PrimeTimeSI做delay分析时默认不使能compositeaggressormode。
因为对于一个victimnet而言会有许多不同情况的aggressornets,根据之前提到过滤的方法,可以将那些影响忽略不计的aggressornet滤掉,只考虑bumpvoltage大的aggressor,当然这样分析并不完全非常的精确,所以可以使能compositeaggressormode来对全部的aggressornets进行综合分析。
在compositeaggressormode下,会将影响较小的aggressornet合成一根aggressornet(虚拟的)来进行分析。
使能该模式,设置si_xtalk_composite_aggr_mode变量为statistical。
设置si_xtalk_composite_aggr_noise_peak_ratio变量定义bumpthreshold来划分哪些为影响较小的aggressornet。
如何生成crosstalkanalysisreport1)report_timing生成包含crosstalkdelay信息的slacktimingreport。
需加上option–crosstalk_delta,PrimeTimeSI在report中显示deltadelay和deltatransition信息在cell的inputpins;2)report_si_bottleneck生成造成主要violation的aggressornets及victimnets。
-slack_less_than选项可以限定deltadelay的范围;3)report_delay_calculation–crosstalk生成某一victimnet详细的crosstalk计算信息-from输出pin–to输入pin。
在report中setup分析时显示的deltaslew为positive或zero,而hold分析时显示的deltaslew为negative或zero;4)report_si_double_switching生成包含double-switchviolations的victimnets。
PrimeTimeSI除了会分析steady-statevictimnet上出现的Noise,也会分析switchingvictimnet上出现的noise,这种情况成为double-switching。
要进行double-switching检查必须有CCSnoiselibrarymodel。
使能double-switching检查,设置变量si_xtalk_double_switching_mode值为clock_network(对时钟网络进行check),或者full_design(对datapaths进行check)。
update_timing开始double-switching的check;5)report_noise生成staticnoisereport,即victimnet上的noisebump。
前者提供一个详细的noisepropagated信息,而后者则更为直观地找出violation点,具体差异可见下图比较。
report_at_sourcereport_at_endpoint如果在report_at_endpoint模式下要知道violation的源头,则可以使用以下两条命令:report_noise_violation_sources/get_noise_violation_sourcesCompositeAggressorMode(NoiseAnalysis)PrimeTimeSI做noise分析时默认不使能compositeaggressormode。
使能该模式,设置si_noise_composite_aggr_mode变量为statistical。
如果不想将某些aggressornet进行composite的分析,可使用如下命令:set_si_noise_disable_statistical/remove_si_noise_disable_statistical如要查看哪些aggressornets参与了composite分析,则report_noise_calculation。
2)WithCCSnoiselibrary基于transistor-level的SI分析,动态的结果更为精确。
如果通过set_noise_immunity_curve或set_noise_margin定义了static的noiseimmunity特性,则工具优先根据这些定义进行分析,而不是CCSnoiselibrary中的查找表。
Fastanalysismode在loadDesign及Library之前,set_program_options–enable_fast_analysis。
StagedelayconceptionStagedelay=celldelay+netdelay可以分为max/minrise/falldelaysmaxdelay即positivedeltadelay,mindelay即negativedeltadelay。
1)all_paths这种情况下会对victimnet所涉及的全部timingpath进行crosstalk分析2)all_violating_paths这种情况下会对PrimeTime常规分析下出现violation的timingpath进行crosstalk分析3)worst_path这种情况下会对victimnet所涉及的最差timingpath进行分析,如setupcheck时候为delay最大的path,holdcheck时候为delay最小的path。
上图worstpath为C点至与门输出,即victimnet上timingwindow的latestpath。
ECOfixingflowFixsetupviolationsbyresizingcellsFixholdviolationsbyinsertingbuffersWritechangelistforICCSizecell或insertbuffer可以手动也可以自动处理:自动处理使用命令fix_eco_timing–typesetup/hold手动处理使用命令report_timing…estimate_ecosize_cell(duringsetupfixing)/insert_buffer(duringholdfixing)updatetiming完成netlistfixing后用write_changs–formaticctcl命令输出给ICC做physicalECO。