相关阅读
静态时序分析https://blog.csdn.net/weixin_45791458/category_12567571.html?spm=1001.2014.3001.5482
一个工艺库(technology library) 会指定该库的特征化条件(characterization condition)和工作条件(operating condition)。一般在工艺库的开头会看见以下信息。
nom_process : 1;nom_temperature : -40;nom_voltage : 1.1;operating_conditions(fast) {process : 1;temperature : -40;voltage : 1.1;tree_type : balanced_tree}default_operating_conditions : fast;
nom_process、nom_temperature、nom_voltage是特征化条件(又称标称条件),它们分别指定了库在特征化时的工艺、温度和电压。而operating_conditions是工作条件,指定了库中的器件在何种条件下使用,它可以有不止一个,但上例中只有一个名为fast的工作条件且与特征化条件相同,后面会说明原因。
当某个工作条件与特征化条件不一致时,库中的模型数据需进行一定的调整,而这个调整就是根据库中给出的k系数(k-factors)而定的。调整会产生误差,因此只有在无法特征化工作条件时才会考虑使用,这也是为什么很多库只有一个工作条件并与特征化条件相同。下面给出了一个存在多个工作条件的老库的例子。
nom_process : 1;nom_temperature : -40;nom_voltage : 1.1;operating_conditions(fast) {process : 1;temperature : -40;voltage : 1.1;tree_type : balanced_tree}operating_conditions(slow) {process : 1.1;temperature : 125;voltage : 0.9;tree_type : balanced_tree}default_operating_conditions : fast;
可以注意到process这个工艺变量,与温度和电压不同,工艺其实并不是一个可以计量的物理量。它可以是快速、典型和缓慢工艺之一,但在库中使用一个数字来表征它。特征化条件中的工艺变量值常常为1,而工作条件的工艺变量值如果大于1,则代表更慢,反之更快。它是为了在特征化某一特定工艺前(常常比较费时),就用使用其他工艺的库进行大致的计算,“大致”是因为工艺的调整会引入较大的误差。所以在目前的库中,常常单独为某个工艺特征化生成一个库,如fast.db、typical.db和slow.db而不是在一个库的多个工作条件中指定不同的工艺变量值。
下面是一个库中的k系数,需要注意的,它只是一个近似的数值。
k_process_cell_leakage_power : 0;k_temp_cell_leakage_power : 0;k_volt_cell_leakage_power : 0;k_process_internal_power : 0;k_temp_internal_power : 0;k_volt_internal_power : 0;k_process_rise_transition : 1;k_temp_rise_transition : 0;k_volt_rise_transition : 0;k_process_fall_transition : 1;k_temp_fall_transition : 0;k_volt_fall_transition : 0;k_process_setup_rise : 1;k_temp_setup_rise : 0;k_volt_setup_rise : 0;k_process_setup_fall : 1;k_temp_setup_fall : 0;k_volt_setup_fall : 0;k_process_hold_rise : 1;k_temp_hold_rise : 0;k_volt_hold_rise : 0;k_process_hold_fall : 1;k_temp_hold_fall : 0;k_volt_hold_fall : 0;k_process_min_pulse_width_high : 1;k_temp_min_pulse_width_high : 0;k_volt_min_pulse_width_high : 0;k_process_min_pulse_width_low : 1;k_temp_min_pulse_width_low : 0;k_volt_min_pulse_width_low : 0;k_process_recovery_rise : 1;k_temp_recovery_rise : 0;k_volt_recovery_rise : 0;k_process_recovery_fall : 1;k_temp_recovery_fall : 0;k_volt_recovery_fall : 0;k_process_cell_rise : 1;k_temp_cell_rise : 0;k_volt_cell_rise : 0;k_process_cell_fall : 1;k_temp_cell_fall : 0;k_volt_cell_fall : 0;k_process_wire_cap : 0;k_temp_wire_cap : 0;k_volt_wire_cap : 0;k_process_wire_res : 0;k_temp_wire_res : 0;k_volt_wire_res : 0;k_process_pin_cap : 0;k_temp_pin_cap : 0;k_volt_pin_cap : 0;
上面的k系数数值只是参考,当工作条件的工艺、温度和电压与特征化条件不同时,可以使用下面的公式计算调整后的数值。
例如用k_process_cell_fall举例,当库的特征化条件是nom_process是1.0,nom_temperature是-40,nom_voltage是1.1时,如果工作条件为nom_process是1.1,nom_temperature是-40,nom_voltage是1.1,则单元的下降延迟如下计算。