当前位置: 首页 > news >正文

静态时序分析:线负载模型的选择机制

相关阅读

静态时序分析icon-default.png?t=O83Ahttps://blog.csdn.net/weixin_45791458/category_12567571.html


线负载模型及其选择

        线负载模型仅在Design Compiler线负载模式(非拓扑模式)下时使用,它估算了导线长度和扇出对网线的电阻、电容和面积的影响,Design Compiler使用这些物理值来计算导线延迟和电路速度。

        半导体供应商根据其工艺的统计信息开发线负载模型。这些模型包括单位长度的面积、电容和电阻系数,并且还包含一个扇出与长度的表,用于估算网线的长度(扇出数量决定了一个标称长度)。

        在没有反标导线延迟的情况下,Design Compiler使用线负载模型来估算网线的长度和延迟。Design Compiler根据以下优先顺序来确定使用哪个线负载模型:

1、由用户显式指定的模型

        使用set_wire_load_model命令即可使用任意一个已加载到内存的逻辑库中的线负载模型(这里需要注意,正如链接(link)库的详细解析一文所说,link_library变量或local_link_library属性(两者统称为link_path)指定的逻辑库会在必要时自动加载)。

2、基于设计面积自动选择的模型

        在auto_wire_load_selection变量没有被设置为false的前提下:

        在主库,即link_path中的第一个逻辑库(local_link_library属性优先级更高)中存在一个线负载模型选择组(wire_load_selection),Design Compiler根据该选择组中的“单元面积-线负载模型”关系自动选择线负载模型;如果主库中存在不止一个线负载模型选择组,则逻辑库中一定同时定义了库属性default_wire_load_selection,Design Compiler根据该默认选择组中的“单元面积-线负载模型”关系自动选择线负载模型。

        使用set_wire_load_selection_group命令即可使用任意一个已加载到内存且在link_path中指定的逻辑库中线负载模型选择组。

3、逻辑库中的默认指定的模型

        如果主库中定义了库属性default_wire_load,Design Compiler选择该默认线负载模型。


        如果以上三种情况都不满足,Design Compiler将不使用线负载模型。在没有线负载模型的情况下,Design Compiler无法获取目标工艺的完整信息,无法计算互连延迟,因此,时序信息将显得过于乐观。

举例说明

        假设逻辑库typical.lib(同时作为主库)中有以下定义:

  wire_load("tsmc090_wl10") {resistance	: 8.5e-8;capacitance	: 1.5e-4;area	: 0.7;slope	: 66.667;fanout_length	(1,66.667);}wire_load("tsmc090_wl20") {resistance	: 8.5e-8;capacitance	: 1.5e-4;area	: 0.7;slope	: 133.334;fanout_length	(1,133.334);}wire_load("tsmc090_wl30") {resistance	: 8.5e-8;capacitance	: 1.5e-4;area	: 0.7;slope	: 200.001;fanout_length	(1,200.001);}default_wire_load :tsmc090_wl30;wire_load_selection(pes) {wire_load_from_area(0,100,tsmc090_wl10);wire_load_from_area(101,200,tsmc090_wl20);wire_load_from_area(201,300,tsmc090_wl30);
}wire_load_selection(opt) {wire_load_from_area(0,100,tsmc090_wl30);wire_load_from_area(101,200,tsmc090_wl20);wire_load_from_area(201,300,tsmc090_wl10);
}default_wire_load_selection :opt;

1、由用户显式指定的模型(常用)

        使用set_wire_load_model命令可以使用任意一个已加载到内存的逻辑库中的线负载模型,图1是report_design命令的结果。

set_wire_load_model -name tsmc090_wl10 -library typical

图1 手动选择线负载模型

        如果不指定-library选项,则Design Compiler会在link_path指定的逻辑库中从左至右进行搜索指定的线负载模型;如果在-library选项中指定了多个逻辑库,则Design Compiler会在这些指定的逻辑库中从左至右进行搜索指定的线负载模型。

2、基于设计面积自动选择的模型

        假设auto_wire_load_selection变量没有被设置为false。

        某个设计的总单元面积为18,则Design Compiler根据主库的默认选择组opt自动选择线负载模型tsmc090_wl30,图2是report_design命令的结果。

图2 基于面积自动选择线负载模型(默认)

        也可以使用set_wire_load_selection_group命令使用任意一个已加载到内存且在target_library或link_library中指定的逻辑库中的线负载模型选择组,图3是report_design的结果。

set_wire_load_selection_group pes -library typical

图3 基于面积自动选择线负载模型(指定)

        需要注意的是,与set_wire_load_model命令不同的是,如果一个逻辑库使用read_db或read_file -format db命令手动加载到内存中但并未在target_library或link_library中指定,则无法指定其中的线负载模型选择组。                                                                      

        如果不指定-library选项,则Design Compiler会在target_library指定的第一个逻辑库(优先级更高)或link_library中指定的第一个逻辑库中搜索指定的线负载模型选择组;如果在-library选项中指定了多个逻辑库(需要在target_library或link_library中指定),则Design Compiler会在这些指定的逻辑库中从左至右进行搜索指定的线负载模型选择组。

3、逻辑库中的默认指定的模型

        假设auto_wire_load_selection变量被设置为false。

        Design Compiler根据主库自动选择默认线负载模型tsmc090_wl30,图4是report_design命令的结果。

图4 线负载模型(默认)

        最后谈一下report_wire_load命令可以报告已设置的线负载模型或者link_path指定逻辑库中的所有线负载模型;remove_wire_load_model命令可以用于移除已设置的线负载模型;set_wire_load_model除了设置当前设计的线负载模型外,还可以设置其它模型、层次单元以及端口的线负载模型,再次不详细说明。

http://www.lryc.cn/news/513451.html

相关文章:

  • git 中 工作目录 和 暂存区 的区别理解
  • C++ 变量:深入理解与应用
  • http报头解析
  • 数据库的概念和操作
  • 《XML Schema 字符串数据类型》
  • idea 开发Gradle 项目
  • Keepalived + LVS 搭建高可用负载均衡及支持 Websocket 长连接
  • 产品经理2025年展望
  • 【信息系统项目管理师】第14章:项目沟通管理过程详解
  • 串口DMA接收数据基本思路
  • 数据结构复习 (二叉查找树,高度平衡树AVL)
  • FreeSWITCH 简单图形化界面39 - Windows安装FreeSWITCH For IPPBX(WSL环境)
  • uniapp - 小程序实现摄像头拍照 + 水印绘制 + 反转摄像头 + 拍之前显示时间+地点 + 图片上传到阿里云服务器
  • Qt天气预报系统设计界面布局第四部分左边
  • VS无法找到低版本的.net,vs2022创建不了.net6的项目
  • C++软件设计模式之解释器模式
  • 小程序发版后,用户使用时,强制更新为最新版本
  • 如何使用AI工具cursor(内置ChatGPT 4o+claude-3.5)
  • 说说缓存使用的具体场景都有哪些?缓存和数据库一致性问题该如何解决?缓存使用常见问题有哪些?
  • 2025-01-01 NO2. XRHands 介绍
  • Java开发-后端请求成功,前端显示失败
  • 未来20年在大语言模型相关研究方向--大语言模型的优化与改进
  • [react] 纯组件优化子
  • 美观强大的文件保险库Chibisafe
  • 详细教程:SQL2008数据库备份与还原全流程!
  • HTML——49.header和footer标签
  • 【蓝桥杯选拔赛真题87】python输出字符串 第十五届青少年组蓝桥杯python选拔赛真题 算法思维真题解析
  • OpenStack-Dashboard界面简单修改
  • DevOps工程技术价值流:Ansible自动化与Semaphore集成
  • 【服务器】上传文件到服务器并训练深度学习模型下载服务器文件到本地