一寸Timing一寸金,寸金能买寸光阴——CCD

2024-03-18 22:38

本文主要是介绍一寸Timing一寸金,寸金能买寸光阴——CCD,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

640?wx_fmt=gif

上次我们简单介绍了一下CTS里面的一些基本概念,随着工艺尺寸的越来越先进,现在大家都热衷于都流行采用useful skew去修timing。 传统的balance的clock tree已经不怎么受待见。提到useful skew,就有必要介绍一下CCD,全称是Concurrent Clock Datapath,并行优化clock和data path。这对习惯于以前传统CTS做法的童鞋来说是一个全新的概念,有很多不同的地方。下面我简单介绍一下这种新技术的概念,希望大家看完能了解它为什么叫做Concurrent Clock Datapath吧~

我们知道clock的Timing分为两种模式,ideal clock和propagated clock。CTS之前并没有clock, 因此我们需要建立一个ideal的clock,这时从clock端口到寄存器CK端口的network  delay来自sdc中的set_clock_latency设置;做完CTS,并且update好IO latency之后,我们的clock就会自动的转换成propagated的clock,这时network delay就是实际时钟互连线网络的RC extraction算出来的delay。

在一个实际设计中,clock起始于ideal模式,并以propagated模式结束。如下图所示:

640?wx_fmt=jpeg

对传统的flop to flop之间的电路,setup和hold time需要满足以下两个条件,如下图所示:

640?wx_fmt=jpeg

L和C分别代表Launch和Capture clock path上的delay. Gmax和Gmin代表logic path上的最大和最小delay. 对ideal clock来说,它假定launch和capture clock path上有相同的delay,也就是L=C,这时,上诉两个公式就简化成:

Propagated clock

setup: L+ Gmax < T + C

hold: L+ Gmin > C

Ideal clock 

setup: Gmax < T 

hold: Gmin > 0

这样问题就变得很简单,Gmin>0是一个永远成立的条件,在这个model下面,我们只需要保证logic path上的最大delay,也就是critical path上的delay比时钟周期快就行。根据这个条件,于是就出现了,传统CTS的目的是使得时钟树的L=C,如果能实现,那么propagated clock timing就会匹配ideal clock timing。 

当一个时钟树有n个sink以后,我们就需要引入"skew"的概念。如下图所示:

640?wx_fmt=jpeg

在引入skew概念后,完全balance的时钟树就很难做成,clock skew变成各个flop之间的Launch和capture clock path的最大差值。

Propagated clock

setup: Gmax < T - (L-C)

hold:  Gmin > C - L

Ideal clock 

setup: Gmax< T + skew

hold: Gmin > skew

因此,传统的CTS目标就是减小clock skew。如果能实现较小的skew,那么ideal和propagated clock就能保持一个较高的相似度。

那究竟skew是不是越小越好呢?这个我觉得是case by case的问题。但是,通过减小clock skew来实现ideal和propagated clock收敛的做法已经不适合现在深纳米的设计了。由于OCV, clock gating, 以及clock的复杂性等因素导致两者之间有很大的clock timing gap,实现balanced的L和C几乎变成一个不可能的目标。而CCD就放弃了这种减小clock skew的方法,而是将CTS和postCTS的timing optimize集合为一体,在优化data path的同时进行clock path的优化。根据timing情况自动调整时钟树各点的延迟,以达到合理利用skew来优化timing的目的。

下图显示了传统CTS与CCD两种不同的概念原理。正如我们前文所说,传统CTS以减小skew作为目标,在build clock tree的过程中忽略掉了data path。而CCD的clock tree建立在data path的timing基础上,在propagated timing中,以meet setup和hold timing为主。

640?wx_fmt=jpeg

当然,虽然CCD和传统CTS的工作原理不一样,但他们的使用流程是一样的。分为以下三部曲。

640?wx_fmt=jpeg

在传统的CTS中,

第一阶段:clock_opt -to build_clock,主要在生长时钟树,并且做inter clock的balance,目的是为了减小skew。

第二阶段:clock_opt -from route_clock -to route_clock,主要是连接clock net,并且update io latency。

第三阶段:clock_opt -from final_opto,主要是做data path的optimization来修复timing。

而在CCD的flow中,命令一样,但我们首先必须设置以下参数来enable flow

set_app_options  -name  clock_opt.flow.enable_ccd \

 -value  true

但CCD flow的三个阶段做的事情与传统CTS flow有所区别。

第一阶段:主要也是在生长时钟树,并且做inter clock的balance,但目的是为了提高setup和hold的timing。

第二阶段:这个阶段做的事情一样,主要是连接clock net,并且update io latency。

第三阶段:这个阶段区别最大,主要是同时优化data path和clock path来修复timing。

CCD与传统CTS的区别介绍就到这了,下次介绍更多相关useful skew的内容,敬请期待~~


640?wx_fmt=jpeg

公司招聘

各大IC公司招聘各类IC工程师

简历请戳邮箱:taozhang3260@163.com

这篇关于一寸Timing一寸金,寸金能买寸光阴——CCD的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/823900

相关文章

redhawk:STA timing data file解析

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 往期文章:

芯片后端之 PT 使用 report_timing 产生报告 之 常用命令

滴水穿石,坚持加持~ pt_shell> report_timing -from <startpoint> -to <endponit> -delay max/min pt_shell> report_timing -from <startpoint> -to <endponit> -delay max/min  -nosplit pt_shell> get_cells *data_re

芯片后端之 PT 使用 report_timing 产生报告如何阅读

今天,就PT常用的命令,做一个介绍,希望对大家以后的工作,起到帮助作用。 在PrimeTime中,使用report_timing -delay max命令生成此报告。switch -delay max表示定时报告用于设置(这是默认值)。 首先,我们整体看一下通过report_timing 运行之后,报告产生的整体样式。 pt_shell> report_timing -from start_

vivado TIMING_PATH

描述 定时路径由设计元素之间的连接来定义。在数字中 在设计中,时序路径是由一对受其控制的顺序元件形成的 或者通过两个不同的时钟来启动和捕获信号。 在典型的定时路径中,数据在一个内的两个连续单元之间传输 时钟周期。例如,启动边缘发生在时间0ns;并且出现捕获边缘 一个时钟周期之后。 最常见的定时路径是: •从输入端口到内部顺序单元的路径 •从一个顺序单元到另一个顺序单元格的内部路径 •从内部顺序单元

set_disable_timing和set_data_check,相关一条efuse时序违反路径的梳理。

因为efuse端口,都是异步,没有时钟。端口之间需要保证时序关系,这是由RTL设计保证的,时序无法分析相关efuse路径。set_disable_timing一般是要求一个lib cell,例如set_disable_timing -from cell.输入 -to cell.输出。datacheck,类似AEN当时钟,RDEN当数据,两个数据信号检查setup路径时序。如果report_ti

set_false_path 与 set_disable_timing 的区别

在静态时序分析中, set_false_path 和 set_disable_timing 都可以用来设置 timing exceptions,告诉工具忽略某些特定的path,但是在使用过程中,这两个命令又有些细微的区别。 set_false_path 是用来设置 timing path,表示不用 check 这些 path 的 timing,但是依然会去计算这些 path 上的delay s

CCD类详解

CDC类定义的是设备上下文对象的类。 CDC对象提供处理显示器或打印机等设备上下文的成员函数,以及处理与窗口客户区对应的显示上下文的成员。 通过CDC对象的成员函数进行所有的绘图。 类对设备上下文操作提供了成员函数,处理绘图工具。安全型图形设备接口(GDI)对象收集,以及处理颜色和调色板。 它还为获取和设置绘图属性、映射,处理视点、窗口扩展、转换坐标,处理区域、剪贴、绘制直

CCD扫描技术

以光电耦合器(CCD)为光电转换元件的扫描仪工作原理 多数平板式扫描仪使用光电耦合器(CCD)为光电转换元件,它在图像扫描设备中最具代表性。其形状像小型化的复印机,在上盖板的下面是放置原稿的稿台玻璃。扫描时,将扫描原稿朝下放置到稿台玻璃上,然后将上盖盖好,接收到计算机的扫描指令后,即对图像原稿进行扫描,实施对图像信息的输入。 与数字相机类似,在图像扫描仪中,也使用CCD作图像传感器。但不同的是,数

工业相机硬触发?光源闪频?视觉算法优化?双ccd框架怎么写?编程没头绪?labview双ccd框架,拯救你的发量!

视觉外观检测中多ccd一直是大家比较关注的案例,其涉及到一些技术难点,例如:工业相机硬触发?光源闪频?视觉算法优化加速?双ccd框架怎么写?labview编程没头绪?龙哥来拯救你的发量!   经过算法加速后耗时明显降低 工业相机硬触发采集图像 双ccd硬触发采集图像 调用vision自带template editor 调试单相机检测算法 单相机未经优化

《双ccd+视觉通用框架-LabVIEW视觉必学高阶课程》

龙哥新众筹上线啦! 《双ccd+视觉通用框架-LabVIEW视觉必学高阶课程》 全网首发labview视觉双CCD检测,通用视觉检测从labview软件框架,IO触发连线整体架构。软件功能编译到labview视觉软件生成安装包,完全满足你就业和研发的需求。 课程时长:《双CCD视觉框架》 540分钟  《通用视觉框架》 715分钟 主要知识点:双CDD的算子优化,通用框架的通用参数读取与结果统一处