芯片时钟树评估的关键性能参数

前面有很多文章都介绍了PI性能的影响,也介绍了PSIJ对信号或时钟性能的影响,对于SOC设计,为了更好的理解电源完整性在芯片设计中的重要作用,对芯片的时钟树设计需要足够理解才能更好的明白电源完整性的影响。

时钟分布网络设计一直是高性能芯片物理实现过程中的重要环节,随着芯片制造工艺与设计技术的飞速发展,芯片设计所要求的性能和频率也大幅增长,时序收敛以及低功耗需求就使得时钟树综合面临更为严格的挑战。因此,一个满足时序要求的低功耗时钟树综合成为集成电路物理设计中的重点。

时钟信号

同步时序电路是当下集成电路设计的主流,大部分数字集成电路设计都普遍采用同步电路,同步电路中的数据传输由一个或多个时钟脉冲信号统一进行控制。时钟信号通过距离最长、有最大扇出并以最高速度运行。时钟信号控制着各功能元件的数据传输,作为数据传输的基准,它对于同步数字设计的性能、功能和稳定性等方面起决定性作用。

1、时钟信号的产生

时钟的生成有多种方法,在VLSI设计中,外部晶振输入是最常用的方法。对于高频时钟,则采用专用的锁相环 PLL 电路通过调整倍频参数进行倍频。时钟也可通过电路生成,例如含有奇数个反相器的振荡环电路,在每个节点都产生振荡信号,其周期由反相器的级数以及每级的延迟所决定,不过,这种电路产生的时钟稳定性较差,不适用于性能要求较高的设计,下图为一个是使用 PLL 生成全局时钟的示意图。    

37c7370dd10d9b3d9408233a8ef9cf7e.png

当芯片采用外部输入时钟信号作为信号时,为了实现内部时钟的要求,就可以用传输门将外部输入的时钟转变成设计需要的主时钟和辅时钟。下图为常用的产生两个相位相反时钟的电路。传输门产生时钟电路中,外部时钟通过 Mp1、Mp2 后,一路通过传输门和一个反相器生成时钟,一路连续通过两个反相器生成一个与其相位相反的时钟。该种电路通过多级传输,提高了驱动能力的同时也减小了两个反相时钟间的时钟偏差。还有一种简单的电路为 RS 触发器产生时钟电路,它被更多的用于产生系统所需要的分频时钟。

9dc5a4385aaec74e5608e1384601c214.png

在数字电路的设计中,时钟是最重要的组成部分,数据必须通过时钟信号才能准确的传输,尤其对于同步数字系统的功能、稳定性等起决定性作用。

芯片设计中主要时钟    

在集成电路的设计中一般来说主要有以下几种时钟:

1)系统时钟:系统时钟是指控制多个芯片之间的时钟结构网络并控制相互之间时序关系的时钟结构,常用的有 RC 时钟,晶体振荡时钟、锁相环倍频时钟等。每个芯片的时钟信号都是通过 I/O 单元与系统时钟相连的。一般来说,系统时钟也被叫做“全局时钟(global clock)”,在某些情况下也叫做主时钟(master clock)。

2)自定义时钟(generate clock):自定义时钟是从主时钟导出的时钟,主时钟是使用指令 create_clock 规范定义的时钟。当在基于主时钟的设计中生成新时钟时,新时钟可以被定义为生成时钟。例如,如果存在用于时钟的 3 分频电路,则可以在该电路的输出端定义生成的时钟定义。由于静态时序分析不知道时钟周期在分频逻辑的输出端发生了变化,并且更重要的是新时钟周期的变化,所以需要此定义。自定义时钟在做时钟树综合时,同样将自定义时钟作为对时钟点进行时钟树的生成,并对时钟树进行优化。

3)虚拟时钟:虚拟时钟是存在但不与设计的任何引脚或端口相关联的时钟,可以认为是逻辑意义上的时钟,是由人为定义出来的时钟信号。它在静态时序分析中用作参考,用于指定相对于时钟的输入和输出延迟。

相对于子芯片而言,各个子芯片中的时钟,都是由一个个是主时钟延伸出来的,很多时候这些子芯片中的主时钟,在整个芯片的层面上来看,很可能只是其他子芯片中的自定义时钟,然后通过 port 传输到这个子芯片中,作为主时钟使用的。

时钟信号性能参数

在 RTL 设计阶段一般认为时钟是理想的,但当具体到物理设计时,时钟是通过物理方式实现的,因受多重因素的影响,时钟只能是接近但无法达到理想状态。评估时钟信号性能的参数有很多,主要包括时钟不确定性、时钟转换时间、时钟传播时间、时钟最小脉冲宽度、时钟偏差等。下图给出了时钟信号性能参数示意图。    

dc145429a16b25fdcc0722c30c35e43e.png

1、时钟不确定性

时钟不确定性(Clock Uncertainty)也称时钟信号抖动(Jitter),为信号时间与理想时间的偏差。如上图所示,因存在时钟抖动,真实时钟的时钟沿要比理想时钟或早或晚到达。时钟信号抖动是由时钟源本身引起的,它取决于时钟发生器内部结构,在基于标准单元的物理设计中,一般时钟产生电路会作为 IP 集成在 SOC 中,因此时钟抖动作为时钟信号的重要属性是时钟树综合阶段必须的信息之一。一般在时钟树综合之前会将时钟不确定性设置的比时钟信号抖动参数大一些,以此来给时钟综合的偏差值留下余量。

2、时钟转换时间

时钟转换时间(Clock Transition)即不同电平间转换所需要的时间。理想情况下时钟电平转换是瞬间完成的,但实际受工艺、供电电压、互连线负载和扇出负载等因素影响,电平转换是需要时间的。一般时钟转换时间为时钟信号高电压从电源电压的10%变化到90%的时间间隔。转换时间分为上升时间和下降时间,一般应使上升转换时间和下降转换时间保持对称性,通常会选用具有高对称性的缓冲单元来做时钟树。时钟转换时间的长短也是影响时钟树质量的重要指标,时钟转换时间过大会导致缓冲单元延时增大进而引起时序违例,同时也因延长了 NMOS 和 PMOS 管同时导通时间而造成晶体管短路功耗迅速增大;而时钟转换时间过小,则可能会因使用了过大驱动能力的缓冲器造成浪费不必要的功耗和面积。因此,在时钟树综合阶段需要设置合适的转换时间。    

3、时钟传播时间

时钟传播时间(Clock Latency)为时钟信号从时钟源传输到时钟树叶节点的时序单元所需要的时间。时钟传播时间分为源时钟输入时间(Source  Insertion Delay)和网络时钟输入时间(Network Insertion Delay)。源时钟输入时间指时钟信号从时钟源到设计时钟输入端口的时间,时钟源一般指的是锁相环(PLL)的输出端,但也可根据设计需求利用约束文件定义到 PLL 外的任何节点。网络时钟输入时间指时钟输入端口到时钟树叶节点时序单元 CK 端的时间。时钟传播时间也是衡量时钟树质量的一个重要指标,时钟传播时间越短,时钟树性能就越好,同时,外在因素对时钟树的影响也会越小。

3935a01cd53582f1bd717da3177372ce.png

时钟网络延迟可分为共同路径(common  path)延迟和非共同路径(non-common  path)延迟,如下图所示,优化触发器 FF1 与 FF2 的共同路径延时不会引发时序违例,但影响时钟网络的功耗及所消耗的设计资源。优化触发器 FF1 与 FF2的非共同路径延时,对触发器 FF1 和 FF2 的建立时间及保持时间时序、片上偏差和时钟偏差均会有影响。时钟延迟是评价时钟树的重要指标,是满足时序收敛的关键因素,在时序优化过程中,尽量减少共同路径延迟,以降低功耗和节约设计资源;尽量优化非共同路径,以满足时序收敛要求。通常设计者所言的时钟延迟为时钟网络延迟。    

337bbbf7e659b47b0f706a1b26c5c656.png

4、最小脉冲宽度

最小脉冲宽度(Min Pulse Width)指脉冲波形的开始到结束之间的最小时间间隔。若时序器件时钟端口处的时钟脉冲宽度过窄,则有可能造成时序器件无法正确传递数据,甚至使时钟不会再继续传递。因此,集成电路物理设计过程中会对时钟脉冲的宽度做约束,通常最小脉冲宽度约设为时钟周期的40%。

5、时钟偏差

时钟偏差(Clock Skew)指时钟信号从时钟源到时钟树叶节点时序单元的时钟端口的延时差。理想状态下,时钟到达各个寄存器 CK 端的时间是一致的,但实际因时序单元尺寸或物理位置的不同导致时钟线长短、负载不同,从而使得时钟信号到达时序单元的时钟端口存在偏差。时钟偏差可以分为全局偏差和局部偏差,全局偏差(Global  Skew)指时钟信号到设计中所有时序单元的时钟端口的最长路径时间与最短路径时间之差,局部偏差是指存在数据通信的任意两个时序单元间的延时差。通常在物理设计阶段主要将局部偏差作为衡量时钟树质量的指标。时钟偏差的存在会导致时钟树不平衡,严重影响到整个设计的时序收敛,因此,减小时钟偏差对提高芯片性能和稳定性有非常重要的作用。    

e19baef0be02ec6b51ab8a91082177b5.png

如上图所示,全局时钟偏差即为最大时钟网络延迟和最小时钟网络延迟的差值,即触发器 FF3 与触发器 FF1 之间的时钟网络延迟之差。局部时钟偏差是指拥有数据交互的各时钟叶节点之间的时钟偏差,即触发器 FF2 与触发器 FF1 之间的时钟网络延迟之差。时钟偏差是衡量时钟树质量的重要指标,时钟偏差的产生原因主要为以下两点:

a.时钟负载不平衡,主要由时钟根节点到时钟叶节点的金属互连线长度不同,所插入的缓冲器驱动强度和级数不同而引起;

b.片上工艺偏差引起,温度变化、电压波动和工艺制造过程中的不确定性都会引起时钟偏差。

6、片上偏差

数字集成电路的性能受到工艺(process)、温度(temperature)、电压(voltage)的影响,工艺、温度和电压简称 PVT 条件,PVT 条件相对理想值的变动就称为偏差(variation)。根据偏差的来源,可以将偏差分为工艺偏差(process  variation),电压偏差(voltage variation)和温度偏差(temperature variation)。工艺偏差是指工艺制造过程产生的偏差,在生产制造过程中,因光刻、刻蚀、淀积、离子注入、扩散、退火等工艺,引起的芯片单元物理结构(如器件和金属互连线尺寸、掺杂情况和材料等)的偏差。温度偏差是芯片在工作过程中,因为外界环境温度和散热条件变化,以及芯片内部的局部热点等因素引起的偏差。电压偏差是在芯片工作过程中因外部供电电压变化,和芯片内部供电网络电压降等因素引起的偏差。偏差不可避免且具有随机性,根据偏差的作用范围,可以将偏差分为片间偏差和片上偏差(On    

Chip  Variation,简称 OCV)。片间偏差指生产制造的不同芯片在同一区域的偏差,对同一芯片所有区域而言,片间偏差的影响是同步的。片上偏差是指同一芯片在不同区域的偏差,即同一芯片在不同区域的 PVT 条件不同。片上偏差和片间偏差都包含工艺、电压和温度三种偏差。其中片上工艺偏差与片间工艺偏差不同,对于因空间距离引起的片上工艺偏差,其偏差具有一定的空间距离相关性,即空间距离越远,片上工艺偏差出现的可能性和偏差值越大;对于因逻辑深度和单元数量引起的片上工艺偏差,其偏差具有随机性,即随着逻辑级数的加深和单元数量的增多,片上工艺偏差可能会相互抵消,但也可能加大。    

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

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

相关文章

最基本的SELECT...FROM结构

第0种:最基本的查询语句 SELECT 字段名,字段名 FROM 表名 SELECT 1; SELECT 11,3*2; FROM SELECT 11,3*2 FROM DUAL;#dual:伪表 我们可以用它来保持一个平衡 这里我们的值不需要在任何一个表里&#xf…

9、类和对象

9.1 封装 9.1.1 封装的例子 class Student { public:string name;int age; public:void setName(string name_) {name name_;} }; int main() {Student s1;s1.setName("zhangsan");return 0; }类中的行为都叫做成员,例如成员属性,成员变量&…

飞速(FS)S5800-48T4S:如何使用MLAG?

MLAG(多机箱链路聚合组)可实现无缝故障转移并优化带宽利用率,从而增强网络冗余和提高可扩展性。它允许多台交换机作为一个统一实体运行,从而降低停机风险并确保网络运行不中断。飞速(FS)S5800-48T4S是一款支…

二维高斯函数的两种形式

第一种形式很常见 多元正态分布 多元正态分布(Multivariate Normal Distribution),也称为多变量正态分布或多维正态分布,是统计学中一种重要的概率分布,用于描述多个随机变量的联合分布。 假设有 n n n 个随机变量…

【LabVIEW学习篇 - 18】:人机界面交互设计02

文章目录 错误处理函数简单错误处理器通用错误处理器清楚错误合并错误错误代码至错误簇转换查找第一个错误 鼠标指针 错误处理函数 在LabVIEW中,是通过错误输入簇和错误输出簇来传递错误信息,可以将底层错误信息传递到上层VI。设计人员需要对不同程度的…

2024 数学建模高教社杯 国赛(C题)| 农作物的种植策略 | 建模秘籍文章代码思路大全

铛铛!小秘籍来咯! 小秘籍团队独辟蹊径,运用等多目标规划等强大工具,构建了这一题的详细解答哦! 为大家量身打造创新解决方案。小秘籍团队,始终引领着建模问题求解的风潮。 抓紧小秘籍,我们出发…

高并发内存池(一):项目介绍与定长内存池的实现

目录​​​​​​​ 项目介绍 池化技术 内存池 内存碎片 malloc工作原理 定长内存池 申请内存 释放内存 定位new VirtualAlloc函数 封装VirtualAlloc 定长内存池的最终代码 项目介绍 项目原型:goole的开源项目tcmalloc(Thread-Caching Mal…

CIOE中国光博会&电巢科技即将联办“智能消费电子创新发展论坛”

在科技浪潮汹涌澎湃的当下,从通信领域的高速光传输,到消费电子中的高清显示与先进成像技术,光电技术的应用范围不断拓展且日益深化。而AIGC 凭借其丰富的内容供给与个性化反馈能力,正为新一代消费电子及智能穿戴产品开辟崭新的发展…

前端请求的路径baseURL怎么来的 ?nodejs解决cors问题的一种方法

背景:后端使用node.js搭建,用的是express 前端请求的路径baseURL怎么来的 ? 前后端都在同一台电脑上运行,后端的域名就是localhost,如果使用的是http协议,后端监听的端口号为3000,那么前端请求…

S3C2440开发板:时钟,PWM定时器控制蜂鸣器发声

时钟 时钟和电源管理模块由三部分组成:时钟控制,USB 控制和电源控制。 S3C2440A 中的时钟控制逻辑可以产生必须的时钟信号,包括 CPU 的 FCLK,AHB 总线外设的 HCLK 以及 APB 总线外设的 PCLK。S3C2440A 包含两个锁相环&#xff08…

VBA进行excel坐标转换

在Excel里利用坐标绘图时,可以比较容易想到采用数据透视表,但是数据透视表生成的图不可更改,因此本案例采用VBA进行坐标变换而不改变原始值来转换图像,即实现图像的左右翻转和上下翻转,如下图所示,选择map的…

fastadmin 文件上传腾讯云

1-安装腾讯云SDK composer require qcloud/cos-sdk-v5 2-腾讯云配置 <?phpnamespace app\common\controller;use Qcloud\Cos\Client; use think\Controller; use think\Db;class Tencent extends Controller {/*** 上传文件* param $config* param $key* return array*/p…

Linux下快速判断当前终端使用的是bash or csh

在Linux下设置环境变量的时候&#xff0c;可能你也遇到过export: Command not found一类的错误。这是因为当前终端使用的不是bash&#xff0c;如何快速判断当前终端使用的是哪种类型的shell呢&#xff1f; echo $0判断shell类型 最简单的方法就是在终端输入echo $0&#xff0…

每日一题,零基础入门FPGA——工程师在线精讲来咯

传送门&#xff1a;zzfpga.com/StudentPlatform/Train/StudentArticleDetails?id149

M3U8工作原理以及key解密视频流详解

文章目录 前言一、M3U8是什么&#xff1f;二、HLS—M3U8的工作原理1.分段视频流2.生成播放列表3.客户端请求和解析4.片段下载和播放 三、.m3u8文件内部是什么样的&#xff1f;四、简单介绍下AES-128算法五、拿到KEY后如何去解密&#xff1f;1.手动解密.ts文件2.前人栽树&#x…

spring security 如何解决跨域的

一、什么是 CORS CORS(Cross-Origin Resource Sharing) 是由 W3C制定的一种跨域资源共享技术标准&#xff0c;其目就是为了解决前端的跨域请求。在JavaEE 开发中&#xff0c;最常见的前端跨域请求解决方案是早期的JSONP&#xff0c;但是JSONP 只支持 GET 请求&#xff0c;这是一…

深度学习从入门到精通——基于unet++算法实现细胞分割

模型定义 import torch from torch import nn__all__ [UNet, NestedUNet]class VGGBlock(nn.Module):def __init__(self, in_channels, middle_channels, out_channels):super().__init__()self.relu nn.ReLU(inplaceTrue)self.conv1 nn.Conv2d(in_channels, middle_channe…

FPGA速度优化

速度优化 文章目录 速度优化前言一、时序优化1.1 减少关键路径上的时序1.1.1 关键路径重组1.1.2 解决扇出问题1.1.3 路径上插入寄存器1.1.4 寄存器平衡1.1.5 并行结构1.1.6 消除代码优先级 总结 前言 速度优化&#xff0c;主要就是设计时序进行优化 吞吐量&#xff1a;每个时…

web渗透:RCE漏洞

RCE漏洞&#xff0c;即远程代码执行漏洞&#xff0c;是一种安全缺陷&#xff0c;它允许攻击者通过网络在目标系统上执行任意代码。一旦成功利用&#xff0c;攻击者可以完全控制受影响的系统&#xff0c;包括读取敏感数据、安装恶意软件、修改系统配置等。RCE漏洞通常发生在应用…

数据结构---双向链表---循环链表---栈

目录 一、双向链表 1.1.创建双向链表 1.2.头插法 1.3.尾插法 1.4.查询节点 1.5.修改节点 1.6.删除节点 1.7.打印节点 1.8.销毁链表 二、循环链表 2.1.单循环链表 2.2.双循环链表 三、栈 3.1.顺序栈 1.创建栈 2.判断栈是否满 3.判断栈是否为空 4.进栈 5.出栈…