【细读经典】delay model and timing analysis

news2024/11/20 7:30:08

Technology-Dependent LogicOptimization, part 1

序言

如图所示是现代工业流程中对于一个高层次的抽象描述如何到最后的芯片的流程图,其中逻辑综合作为一个非常重要的部分,主要被分为两个阶段:

  1. 工艺无关的优化(technology-independent optimization)

工艺无关的优化主要是通过一些抽象的cost function或者constraint对电路进行优化,例如网表的节点数、depth长度等,这篇博客里面不作详细讲解。

  1. 工艺相关的优化(technology-dependent optimization)

工艺相关的优化是指利用库单元的具体的信息作为constraint进行优化,例如library cell的delay、power、area等,所有的优化都是基于具体且真实的工艺信息进行的。

本片博客的主要目的是介绍在工艺相关的优化过程中,一些常用的timing optimization方法,主要涉及ASIC芯片设计。

preliminaries (预备知识)

想要弄清楚工艺相关的优化方法,必须先学习了解有关时序分析的基础,这里会涉及到较多的公式,用心理解透了会对于timing的分析更进一步。

Gate Delay Models (delay 模型)

这里我们将会介绍三种常用的delay models,它们都是通过线性或者双线性方程来计算一个gate的pin-to-pin delay,需要注意的是,这里并没有考虑到FPGA中的Look-Up-Table based delay model.

假定给定一个gate,我们通过公式:
δ ( p , g ) \delta(p, g) δ(p,g)
定义输入 p p p 到输出 g g g 的delay,这也是被我们所熟知的arc delay,即工艺相关的cell的delay。

如下图所示,通过 c g c_g cg来表示output g g g 的累计电容,也就是我们常说的 c a p a c i t a n c e capacitance capacitance( c a p cap cap)

关于 c a p cap cap 是如何计算的,其实从前面的叙述中可以看出, c a p cap cap 是一个累计电容,它被定义为output g g g 的所有扇出pin的所有input pin 的 c a p a c i t a n c e capacitance capacitance之和和连接到output g g g 的所有wire load之和。

其中的 g g g 的驱动电容被定义为:
λ g \lambda_g λg
λ g \lambda_g λg 是g在不影响信号完整性或延迟规格的情况下可以驱动的最大电容。

了解了一些基本的timing相关的知识后,接下来会介绍常用的delay model,由于不同的mapper可能会选取不同的delay model,只有了解了背后的原理才能对后续的mapper有更加进一步的了解,一下delay model对于delay的计算逐渐精确。

  • LIDM

首先介绍最简单的delay model是与负载无关的延时模型,即 l o a d − i n d e p e n d e n t d e l a y m o d e l ( L I D M ) load-independent delaymodel (LIDM) loadindependentdelaymodel(LIDM),其中
δ ( p , g ) = α ( p , g ) \delta(p, g) = \alpha(p, g) δ(p,g)=α(p,g)
其中 α ( p , g ) \alpha(p, g) α(p,g) 表示该gate固有的delay,没有考虑到任何的负载。

  • LDDM

接下来介绍更加实际且使用的 l o a d − d e p e n d e n t d e l a y m o d e l ( L D D M ) load-dependent delay model (LDDM) loaddependentdelaymodel(LDDM)
δ ( p , g ) = α ( p , g ) + β ( p , g ) c g \delta(p, g) = \alpha(p, g) + \beta(p, g)c_g δ(p,g)=α(p,g)+β(p,g)cg
其中 β ( p , g ) \beta(p, g) β(p,g) 从输入引脚p到g的电弧的负载系数,该种delay model中,不仅考虑到了改gate的固有delay,同时也考虑到了output g 的负载。

  • ISDDM

最后介绍 input-slew-dependent delay model (ISDDM),
τ ( h ) = a ( h ) + b ( h ) c h δ ( p , g ) = α ( p , g ) + β ( p , g ) c g + τ ( h ) ( k ( p , g ) + v ( p , g ) c g ) \tau(h) = a(h) + b(h)c_h\\ \delta(p, g) = \alpha(p, g) + \beta(p, g)c_g + \tau(h)(k(p, g) + v(p, g)c_g) τ(h)=a(h)+b(h)chδ(p,g)=α(p,g)+β(p,g)cg+τ(h)(k(p,g)+v(p,g)cg)
在这种情况下,pin-to-pin delay δ ( p , g ) \delta(p, g) δ(p,g) 不仅取决于改gate的固有 d e l a y delay delay, 还取决于output g g g 的负载load c g c_g cg 以及 input 输入端口时钟翻转时间(slew, transition time) τ \tau τ

其中,gate-dependent 系数 α \alpha α β \beta βa、b、k、v 通过第一次收集输入转换和输出负载值范围内的延迟和输出转换值来确定,然后在该数据上拟合上述线性和双线性形式(例如通过最小二乘法)。

determined by first gathering delay and output slew values for a range of input slew and output load values (e.g., using a circuit simulator such as SPICE) and then fitting the aforementioned linear and bilinear forms on this data (e.g., by the method of least squares).

在工业库中,ISDDM 是常用的时序模型,但是在大部分关于timing optimization的学术研究中,常用的时序模型是 LIDM 或者LDDM。

Timing analysis (时序分析)

不管使用哪一种 delay model,对于从一个电路的 primary input(PI) 或者寄存器的 o u t p u t output output 到这个电路的 primary ouput(PO) 或者寄存器的输入端的路径而言,这一条 p a t h path path d e l a y delay delay 等于所有的 g a t e gate gate d e l a y delay delay 以及 w i r e wire wire d e l a y delay delay 之和。

整个电路的 d e l a y delay delay 等于所有这些路径中 d e l a y delay delay 最大的那一条路径。

对于 primary inputs 给定一个 arrival time A, 会通过计算这一条路径上的所有的 gate pin的arrival time得到一个forward delay;
同样的,对于 primary output,给定一个 required time,也会通过计算该条路径上每一个 gate pin的 require time得到一个backward delay,

slack of a pin/pad (a pad is a PI or aPO) 是require time和arrival time之间的差值。如果说一个pin或者pin的slack是负(negative)的,那么这条路径被称为critical的。timing优化的主要目的就是通过优化电路使得output port或者register input满足 required time的约束 (constraint),是的电路变为non-critical。

这里有一个概念叫做 ϵ \epsilon ϵ-criticality,一个pin/pad被称作为 ϵ \epsilon ϵ-criticality的前提是它的slack在最小的slack范围内。有一些timing optimization 算法会用来专门识别和优化 ϵ \epsilon ϵ-criticality pin/pad 。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1094811.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

shell脚本学习笔记03(小滴课堂)

在shell脚本中,表示变量除了可以使用$a(a是一个变量),还可以使用${a} 那这两种表示方式有什么区别么? 花括号可以和其它字符或者字母区分开来。 >追加内容 我们发现使用>会把原来的内容覆盖。 我们使用>>就不会覆盖了&#xff…

MAYA教程之模型的UV拆分与材质介绍

什么是UV 模型制作完成后,需要给模型进行贴图,就需要用到UV功能 UV编译器介绍 打开UI编译器 主菜单有一个 UV->UV编译器,可以点击打开 创建一个模型,可以看到模型默认的UV UV编译器功能使用 UV模式的选择 在UV编译器中…

从裸机启动开始运行一个C++程序(八)

前序文章请看: 从裸机启动开始运行一个C程序(七) 从裸机启动开始运行一个C程序(六) 从裸机启动开始运行一个C程序(五) 从裸机启动开始运行一个C程序(四) 从裸机启动开始运…

【C++】C++11 ——lambda表达式

​ ​📝个人主页:Sherry的成长之路 🏠学习社区:Sherry的成长之路(个人社区) 📖专栏链接:C学习 🎯长路漫漫浩浩,万事皆有期待 上一篇博客:【C】C11…

阿里云香港云服务器公网带宽价格表及测试IP地址

阿里云服务器香港地域公网带宽价格表,1M带宽价格是30.0元/月,按使用流量1GB价格是1.0元,阿里云香港服务器测试IP地址:47.75.18.101,阿里云百科aliyunbaike.com来详细说下阿里云香港服务器1M带宽、5M带宽、6M带宽、10M带…

民宿酒店订房房态商城小程序的作用是什么

外出旅游出差,酒店民宿总是很好的选择,随着经济复苏,各地旅游及外出办公人次增多,酒店成绩随之增加,市场呈现多品牌酒店经营形式。 区别于以前,如今互联网深入各个行业,酒店经营也面临着困境。…

删除字符串特定的字符(fF)C语言

代码&#xff1a; #include <stdio.h> void funDel(char *str) {int i, j;for (i j 0; str[i] ! \0; i)if (str[i] ! f && str[i] ! F)str[j] str[i];str[j] \0; }int main() {char str[100];printf("请输入一个字符串&#xff1a;");gets(str);pr…

转化限制+分析变量变化引起的答案变化:Gym - 104065D

https://vjudge.net/contest/587311#problem/H 先转化一波条件&#xff1a; p i ≥ 1 X p_i\ge \frac 1 X pi​≥X1​ p i ≤ 1 1 − Y p_i\le \frac 1 {1-Y} pi​≤1−Y1​ 所以我们按 p p p 排序&#xff0c; s u m x sum_x sumx​ 必然是后缀&#xff0c; s u m y sum_y …

Python算术运算符:加减乘除 整除 取余 幂指数 小括号

运算案例 需求&#xff1a;用户手工输入梯形的上底、下底以及高&#xff0c;能直接通过Python打印出梯形的面积为多少。 做这个需求前&#xff0c;首先要知道Python的算数运算符有哪些。 2、算术运算符 所谓的算数运算符就是我们日常生活中的加减乘除等待。 运算符描述实例…

汉服商城小程序的作用是什么

汉服在日常生活中越来越常见&#xff0c;大街小巷也有不少年轻人装扮甚是漂亮帅气&#xff0c;有些地区甚至还有相关的比赛等&#xff0c;作为近几年曝光的服饰&#xff0c;汉服市场规模持续增加中&#xff0c;各地线上线下商家也多了起来。 然而在实际经营中&#xff0c;汉服…

Anylogic 读取和写入Excel文件

1、选择面板-连接-Excel文件&#xff0c;拖入到视图中 然后在excel文件的属性中进行绑定外部excel文件。 绑定完之后&#xff0c;在你需要读取的地方进行写代码&#xff0c; //定义开始读取的行数 //这里设为2&#xff0c;是因为第一行是数据名称 int row12; //读取excel文件信…

SpringBoot-黑马程序员-学习笔记(六)

目录 76.常用计量单位使用 77.bean属性校验 81.测试表现层 82.发送虚拟请求 94.springboot读写redis的客户端 100.ElasticSearch&#xff08;简称ES&#xff09; 一个分布式全文搜索引擎 76.常用计量单位使用 Data Component ConfigurationProperties(prefix "serve…

SpringMVC的响应处理

目录 传统同步业务数据的响应 请求资源转发 请求资源重定向 响应数据模型 直接回写数据给客户端 前后端分离异步业务数据响应 在前面的文章中&#xff0c;我们已经介绍了Spring接收请求的部分&#xff0c;接下来看Spring如何给客户端响应数据 传统同步业务数据的响应 准…

Matlab统计棋盘连通分量(空值区域)的大小和个数

一、基础设定 在20x20的棋盘矩阵中&#xff0c;设定黑子为1&#xff0c;空值为0 现需要统计空值&#xff08;连通分量&#xff09;的大小和个数并标记&#xff0c;如下图所示&#xff1a; 以此类推 其中&#xff0c;最大的连通分量如下&#xff1a; 二、Matlab程序 以下是红…

读写锁ReentrantReadWriteLockStampLock详解

如何设计一把读写锁&#xff1f;ReentrantReadWriteLock 读写锁设计思路 读写状态的设计 设计的精髓&#xff1a;用一个变量如何维护多种状态 在 ReentrantLock 中&#xff0c;使用 Sync ( 实际是 AQS )的 int 类型的 state 来表示同步状态&#xff0c;表示锁被一个线程重复获…

【网络基础】——传输层

目录 前言 传输层 端口号 端口号范围划分 知名端口号 进程与端口号的关系 netstat UDP协议 UDP协议位置 UDP协议格式 UDP协议特点 面向数据报 UDP缓冲区 UDP的使用注意事项 基于UDP的应用层协议 TCP协议 TCP简介 TCP协议格式 确认应答机制&#…

性能测试需求分析

1、客户方提出 客户方能提出明确的性能需求&#xff0c;说明对方很重视性能测试&#xff0c;这样的企业一般是金融、电信、银行、医疗器械等&#xff1b;他们一般对系统的性能要求非常高&#xff0c;对性能也非常了解。提出需求也比较明确。 曾经有一个银行项目&#xff0c;已经…

漏洞复现--华测监测预警系统2.2任意文件读取

免责声明&#xff1a; 文章中涉及的漏洞均已修复&#xff0c;敏感信息均已做打码处理&#xff0c;文章仅做经验分享用途&#xff0c;切勿当真&#xff0c;未授权的攻击属于非法行为&#xff01;文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直…

Asp.net core Web Api 配置swagger中文

启动项目&#xff0c;如图&#xff1a; 原来是英文的&#xff0c;我们要中文的&#xff0c;WeatherForecastController.cs是一个示例&#xff0c;删除即可&#xff0c;WeatherForecast.cs同时删除&#xff0c;当然不删除也行&#xff0c;这里是删除&#xff0c;创建自己的控制器…

CORE: Cooperative Reconstruction for Multi-Agent Perception 论文阅读

论文连接 CORE: Cooperative Reconstruction for Multi-Agent Perception 0. 摘要 本文提出了 CORE&#xff0c;一种概念简单、有效且通信高效的多智能体协作感知模型。 从合作重建的新颖角度解决了该任务&#xff1a; 合作主体共同提供对环境的更全面的观察整体观察可以作为…