静态时序分析:工艺库的特征化条件和工作条件

相关阅读

静态时序分析icon-default.png?t=N7T8https://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系数数值只是参考,当工作条件的工艺、温度和电压与特征化条件不同时,可以使用下面的公式计算调整后的数值。

result\_with\_derating=original\_value*(1+k\_process*\Delta process+k\_temp*\Delta temp+k\_volt*\Delta volt)

        例如用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,则单元的下降延迟如下计算。

delay\_with\_derating=original\_delay*(1+1*0.1+k\_temp*0+k\_volt*0)

你可能感兴趣的:(静态时序分析,静态时序分析,STA,数字IC)