输入引脚时钟约束_最强干货分享 | 时钟树例外(exclude pin、stop pin、non_stop pin、float pin)...
《最强干货分享
时钟树例外(exclude pin、stop pin、
non_stop pin、float pin)》
研究生毕业之前曾发过这篇推文,现在在原来的基础上进行了修正,又添加了一些内容,几乎是压箱底的,现在拿出来分享一下,如果觉得好的话麻烦多多~~点赞~~分享~~哟。
众所周知,时钟树综合(CTS)是除了Floorplan阶段之外手工干预最多的部分,也是数字后端中非常令人头疼的一个部分,这里讲解一下CTS阶段的一些时钟树例外的Pin(引脚例外)吧。如果时钟树综合阶段Skew出现了问题,那么多半是这些引脚没有指定好,可以看一下下面的内容来debug自己的设计吧。
时钟树例外(clock tree exceptions)
ICC中可以用该命令指定时钟树例外:
set_clock_tree_exceptions
这里主要讲解引脚例外(Pin exceptions),大致分为以下几种类型:
Pin结点的类型
即:
1、不间断引脚(-non_stop_pins)
2、排除引脚(-exclude_pins)
3、浮动引脚(-float_pins)
4、停止引脚(-stop_pins)
此外还有一种:
5、勿触碰子树(-dont_touch_subtrees)
时钟树异常的优先级
如果同一个引脚多次发出set_clock_tree_exceptions命令,
引脚保持最高优先级的异常。该工具按以下顺序优先考虑时钟树引脚异常:
1、不间断引脚
2、排除引脚
3、浮动引脚
4、停止引脚
其中5和上面四种是不冲突的,可以重复定义
下面将对1~5分别做以介绍:
1、Nonstop pins(不间断引脚)
不间断引脚是通常被认为时钟树端点的引脚,但ICC会穿过它们以跟踪查找真正的时钟树端点。驱动生成时钟的时序单元的时钟引脚是隐式不间断引脚。
如果你不知道什么是Implicit nonstop pins(隐式不间断引脚),可以看前面的推文:
干货放送 - 时钟路径的端点(Stop pins、Exclude pins)
或者看下面的介绍:
如果时序单元的扇出驱动的是生成时钟(即该时序单元用于分频之用,用于产生生成时钟),则ICC将该时序单元的时钟引脚视为隐式不间断引脚(implicit nonstop pins),并穿过该时序单元以追踪定位真正的时钟树端点,如下图所示。另外,ICC认为集成时钟门控(integrated clock-gating, ICG)单元的时钟输入引脚是隐式不间断引脚,因此不用手动对其进行重复设置。
如果要指定不间断引脚,可以使用命令:
set_clock_tree_exceptions -non_stop_pins
2、Exclude pins(排除引脚)
排除引脚是从时钟树时序计算和优化中排除的时钟树端点。ICC仅在计算和优化设计规则约束时使用排除引脚。除了ICC推断的排除引脚(隐式排除引脚)外,ICC还支持用户定义(或显式)排除引脚。例如,您可以定义一个排除引脚来排除从某些组合逻辑引出的时钟树的所有分支(如下图所示),或者排除隐式停止引脚。
在时钟树综合(CTS)期间,ICC通过在排除引脚(隐式和显式排除引脚)之前插入guide buffer来从时钟树中隔离这些引脚。对于排除引脚,ICC不会执行Skew或插入延迟优化,而是执行设计规则修复。
要指定排除引脚,可以使用命令:
set_clock_tree_exceptions -exclude_pins
3、Float pins(浮动引脚)
Float Pins是具有特殊插入延迟要求的时钟引脚。工具在计算到该Float Pins的插入延时(Insertion delay)时,将把Float Pin延迟(正或负)添加到计算Insertion delay中去。要指定Float Pins及其时序特性,可以使用以下命令:
set_clock_tree_exceptions
选项:set_clock_tree_exceptions选项:
• -float_pins [get_pins pin_list]
• -float_pin_max_delay_fall max_delay_fall_value
• -float_pin_max_delay_rise max_delay_rise_value
• -float_pin_min_delay_fall min_delay_fall_value
• -float_pin_min_delay_rise min_delay_rise_value
• -float_pin_logic_level logic_level_value
注意:
如果使用-float_pins选项,则必须至少指定一个浮动引脚延迟选项否则将发生错误。
Float pin实例:
# Specifying anegative float pin
icc_shell>set_clock_tree_exceptions -float_pins U1/CLK \
-float_pin_max_delay_rise -0.5 -float_pin_max_delay_fall -0.5
# Specifying apositive float pin
icc_shell>set_clock_tree_exceptions -float_pins U4/CLK \
-float_pin_max_delay_rise 0.5 -float_pin_max_delay_fall 0.5
浮动引脚延迟值可以是正或负,取决于具体的时序要求:
要增加引脚的insertion delay,需要指定负引脚延迟(如下图所示的Negative float pin);
要减小引脚的insertion delay,需要指定正引脚延迟(如下图所示的Positive float pin)。
上述的命令将会生成如下类似结构的时钟树:
硬宏单元(Hard Macro)的内部延迟在单元的时序模型中表示。ICC工具使用该时序模型来确定Hard Macro的外部时钟引脚,并将这些引脚用作时钟汇点。在时钟树综合期间,ICC会对这些Macro外部时钟引脚平衡Skew并最小化插入延迟。因此对于硬宏单元不需要额外的指定。
如果没有硬宏单元的时序模型,或者想要修改硬宏单元的时序特征,需要使用浮动引脚来指定硬宏单元内部时钟树的时序特征。可以通过指定从浮动引脚看到宏单元内部的时钟汇点的最小和最大插入延迟到来定义时序特征。
4、Stop pins(停止引脚)
Stop pins是用于平衡时钟树延迟的时钟树端点。在时钟树综合期间,ICC在计算和优化设计规则约束(逻辑DRC)和时钟树时序(skew和insertion delay)时使用Stop pins。
默认时钟汇点是隐式停止引脚。此外,ICC支持用户定义(或显式)停止引脚。例如,可以定义一个停止引脚来结束在组合单元输入上的分支,或者使用隐式排除引脚作为时钟汇点。
ICC为所有停止引脚(隐式和显式)分配零相位延迟,并在延迟平衡期间使用此延迟。
要指定停止引脚,可以使用命令:
set_clock_tree_exceptions -stop_pins
关于用户定义的stop pin或者显示的stop pin,篇幅太长了,这里就不介绍了。
5、Dont_touch_subtrees(勿触碰子树)
在某些情况下,希望保留现有时钟树的一部分,需要这样设置。例如,当两个时钟网络共享多路选择器后面的某些时钟逻辑的一部分时。保留的时钟树的部分称为不触碰子树。要指定不触碰子树,可以使用如下命令指定不触碰子树的根引脚:
set_clock_tree_exceptions -dont_touch_subtrees
关于dont_touch_subtrees的应用,感兴趣的可以看之前发过的一篇非常火的推文:
深度好文 | 一个考虑了Scan、Boundary Scan、分频时钟、门控时钟的CTS的分析设计示例(含脚本)
虽然该工具在时钟树综合期间没有对不接触子树进行任何修改,但它会传播时钟树属性和非默认布线规则(NDR)到不要触碰的子树。为了防止时钟属性和非默认布线规则的传播,请将cts_traverse_dont_touch_subtrees变量设置为false。
ICC在平衡时钟延迟和计算时钟偏移时,会考虑到不碰触子树中的时钟汇点。
要删除某个引脚上的dont_touch_subtrees属性,可以使用命令:
remove_clock_tree_exceptions -dont_touch_subtrees
# 本公众号有个红包和资料福利微信群 ## 可以先加我微信,我拉你进群 ## 加我微信 请备注下面问题的答案 ## ASIC的全称 #
如果喜欢本公众号也请多多分享哟,谢谢您的关注
输入引脚时钟约束_最强干货分享 | 时钟树例外(exclude pin、stop pin、non_stop pin、float pin)...相关推荐
- 输入引脚时钟约束_Happy Design in Vivado 系列:时序分析入门三板斧(一):创建时钟...
本系列中我们将一起探寻 Xilinx FPGA 的硬件开发环境 Vivado,发现 Vivado 的 Design Flow,使用 Tips...或许再来一些 BUG?Happy Design in ...
- centos7 访问php页面显示源码_运维干货分享:centos7下源码编译安装php-7.1.5(脚本)...
PHP简介: PHP是一种创建动态交互性站点的强有力的服务器端脚本语言.PHP是目前动态网页开发中使用最为广泛的语言之一.PHP能运行在包括Windows.Linux等在内的绝大多数操作系统环境中. ...
- ise 时钟约束_「新手入门」ISE工程升级到Vivado及板级信号调试技术
由于疫情,大家最近都只能在家中进行学习.同时实验室的研一同学也在通过Teamviewer进行培训项目的实际操作.这次把两位同学的研究成果给大家分享一下,老司机们可以重温一下当年自己新手时的情景,新司机 ...
- ise 时钟约束_在ISE下分析和约束时序
1. 在ISE下分析和约束时序网络 3.1 ISE的时序约束工具入门ide 像TimeQuest同样,ISE软件工具也有本身的时序约束及分析工具.ISE界面的processes当中,有一个 ...
- vb mschart 坐标名称_最强干货来了:Grasshopper运算器名称总结(上篇)
Grasshopper是一款在Rhino环境下运行的采用程序算法生成模型的插件.不同于Rhino Script,Grasshopper不需要太多任何的程序语言的知识就可以通过一些简单的流程方法达要的模 ...
- 设置xy轴名称_最强干货来了:Grasshopper运算器名称总结(上篇)
Grasshopper是一款在Rhino环境下运行的采用程序算法生成模型的插件.不同于Rhino Script,Grasshopper不需要太多任何的程序语言的知识就可以通过一些简单的流程方法达要的模 ...
- 时序约束——2 时钟约束(生成时钟)
时钟约束的不同情况 一.输入时钟 输入管脚CLK 差分时钟 GT或恢复时钟 二.PLL衍生时钟 三.分频时钟 一,输入时钟 1.输入管脚clk 这是最常见的一种情况,开发板上,晶振过来的时钟,都是cl ...
- STM32-RCC时钟-时钟树介绍
本篇文章主要讲解STM32的时钟部分,解读时钟树.本片文章较长请耐心看完.那么你会了解对于STM32的一切时钟的来龙去脉.且本片文章大量的对照着STM32Fxx手册.请读者们提前下好手册的链接我放这了 ...
- 【 FPGA 】Xilinx设计约束(XDC)中时钟约束的表示方法
目录 时钟描述 基本时钟 虚拟时钟 生成时钟 时钟描述 (1)clk0的时钟属性:周期为10ns,占空比为50%,相移为0ns:(相移也可以用°来表示,例如相移位0°,相移为90°等) (2)clk1 ...
最新文章
- python 程序1【登录接口】
- 压缩文件拷到服务器损坏,压缩文件导致无法拷贝共享
- C# 能否获取一个对象所占内存的大小?
- 天梯赛模拟 链表去重 (25 分)
- c 跟r语言运行速度,1. R语言运行效率分析(5)
- flume linux 命令,Linux环境Flume安装配置及使用
- linux 下安装ecos开发环境,Ubuntu 10.04中安装eCos 3.0
- spring cloud gateway Unhandled failure: Only one connection receive subscriber allowed.
- python学了有什么用-python学来有什么用
- android中的Handler和Callback机制
- Oracle分组合并数据的方法总结 wm_concat() 和 listagg()
- 自己动手简单实现vbb的URL静态化
- 计算机相关各机构简称
- Xilinx FPGA配置clocking时钟动态相位输出
- pr导出html,premiere视频导出怎么设置? pr导出高质量视频的教程
- isPrime()函数:判断素数,构造素数表
- win10便签常驻桌面_win10技巧分享第六篇——win10自带的备忘录便签功能
- 互联网时代,“羊毛出在狗身上,由猪买单”,打败你的不再是你的对手,而是........
- 使用RT-Thread Studio DIY 迷你桌面时钟(二)| 获取温湿度传感器数据(I2C设备驱动+SHT3x软件包)
- 中国农业银行研发中心2021实习生笔试题
热门文章
- 实战:Redis 主从同步
- 面试突击 005 | Redis 是如何实现高可用的?它的实现方式有哪些?「视频版」
- Java 200+ 面试题补充③ Dubbo 模块
- SubSonic框架使用图解
- 十五、Python操作mysql数据库
- 手把手带你玩转Tensorflow 物体检测 API (2)——数据准备
- 全连接条件随机场_深圳机场在国内机场中率先推出全流程“行李门到门”服务...
- c语言error和,C语言ERROR精选.doc
- linux分区始柱号,找到了linux分区顺序错乱修复方法
- pytorch默认初始化_Pytorch 实现权重初始化