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

相关阅读

静态时序分析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)

最近更新

  1. TCP协议是安全的吗?

    2024-02-10 07:04:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-10 07:04:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-10 07:04:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-10 07:04:02       20 阅读

热门阅读

  1. Spring 如何配置 bean (XML 方式)

    2024-02-10 07:04:02       33 阅读
  2. http&rpc different

    2024-02-10 07:04:02       32 阅读
  3. 使用深度学习对网络摄像头图像进行分类

    2024-02-10 07:04:02       32 阅读
  4. 5 scala的函数式编程简介

    2024-02-10 07:04:02       33 阅读
  5. 《动手学深度学习(PyTorch版)》笔记8.2

    2024-02-10 07:04:02       27 阅读