0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

怎么解决解决Hold Time违例的问题呢

傅里叶的猫 来源:傅里叶的猫 2023-01-11 09:05 次阅读

首先,从理论上讲,Hold Time违例,是因为时钟绕的太远,到达时间太晚。而且综合之后给出的时序报告都是估计值,因此综合之后可以不考虑Hold Time,只考虑Setup Time;即便此时Hold Time违例,我们也不需要去理会。在Place Design之后再去看Hold Time,如果此时Hold Time的违例比较小(比如-0.05ns),还是不需要理会的,因为工具在布线时会修复Hold,但如果Slack太大了,无法修复了,就会牺牲setup来弥补hold。

如果出现了hold的违例,我们首先要分析时序报告,看是不是clock的skew太大了,hold违例一般都是时钟的skew太大导致,如果skew太大,就要检查原因了,是不是时钟路径上有buffer导致的,或者是因为时钟跨SLR这种路径太长导致。如果时钟路径上并没有什么多余的buffer或者逻辑,那使用全局时钟网络带来的skew是最小的。

这里补充一下综合实现的步骤:

synth_design -> opt_design -> place-design -> phys_opt_design -> route_design

我们可以让工具在每一步执行后都会有时序报告,只需要把Report Options的策略选择为Timing Closure Reports

ba4b2650-9144-11ed-bfe3-dac502259ad0.jpg

如果route design之后hold time还是违例,可以使用tcl指令:

phys_opt_design -directive ExploreWithHoldFix

这个指令会尝试不同的算法来优化hold time违例(其实就是在数据路径上插入LUT增加延迟)

或者在Implementation的时候指定,是一样的效果。

ba6299d4-9144-11ed-bfe3-dac502259ad0.jpg

Hold违例解决方法总结如下:

1. 检查违例的时钟是否是在全局时钟网络上,最好是让时钟走全局时钟网络,减小skew

2. 检查时序路径上,避免有时钟BUFFER的级联

3. 插入延迟逻辑,在数据路径上增加逻辑延迟(可以使用ExploreWithHoldFix让工具自动插入,也可以手动修改代码插入)





审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 时钟
    +关注

    关注

    10

    文章

    1733

    浏览量

    131461

原文标题:Hold Time违例,该如何解决

文章出处:【微信号:傅里叶的猫,微信公众号:傅里叶的猫】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Setup/Hold Time Problem

    Setup/Hold Time ProblemConclusionIf the Setup/Hold time error happen on the Input Register (
    发表于 09-11 09:23

    【FPGA经典试题】电路模块的setup-timehold-time是正值还是负值

    。setup-timehold-time 可以是正值或负值,为什么可以是负值?如下图因为 Clock 到达时刻并不等同于latch 的传输门A 关闭的时刻,这之间有一个未知的延迟时间。假设
    发表于 03-15 10:41

    解释下setup和hold time

    本帖最后由 gk320830 于 2015-3-5 18:27 编辑 setup/hold time 是测试芯片对输入信号和时钟信号之间的时间要求。建立时间是指触发器的时钟信号上升沿到来以前,数据稳定不变的时间。保持时间是指触发器的时钟信号上升沿到来以后,数据稳定不
    发表于 04-12 16:40

    请问AD80370中hold up time为负值是为什么?

    在AD80370的datasheet里面有SYSREF± Setup and Hold Timing 这个时序图,但是为什么图中标示的holdup time是负值,如果这样的话那device
    发表于 10-09 16:09

    2018年IC设计企业笔试题01英伟达Nvidia

    ,setup就会违例的现象。 思考题1:为什么触发器会存在setup和hold time的要求?提示:研究触发器的结构。数字电路基本结构。 思考题2:当setup和hold
    发表于 11-26 14:39

    出现时序违例的原因及解决办法

      如果出现了时序违例,我们会关注两点:  为什么会出现时序违例?  如何解决?  首先我们要搞清楚时序是在哪个阶段违例:  在综合阶段或者post opt阶段出现了时序违例,那么很有
    发表于 01-08 17:10

    什么是Setup和Hold时间

    什么是Setup和Hold时间?答:Setup/Hold Time 用于测试芯片对输入信号和时钟信号之间的时间要求。建立时间(Setup Time)是指触发器的时钟信号上升沿到来以前,
    发表于 12-21 07:39

    怎么解释setup timehold time的定义和在时钟信号延迟时的变化

    怎么解释setup timehold time的定义和在时钟信号延迟时的变化
    发表于 05-10 11:46

    门球违例裁判器电路图

    门球违例裁判器电路图
    发表于 07-29 09:53 553次阅读
    门球<b class='flag-5'>违例</b>裁判器电路图

    Timing收敛 – 如何消除Hold Timing违例

    通常情况下,HoldTiming是由工具自动去检查并满足的,人为可以干预的地方很少。如果你的设计在布局布线后,出现了hold timing违例的情况,那么你可以参考下本文提出的3点建议,看看能否改善
    发表于 02-08 05:22 6717次阅读
    Timing收敛 – 如何消除<b class='flag-5'>Hold</b> Timing<b class='flag-5'>违例</b>

    建立时间和保持时间(setup timehold time

    建立时间和保持时间贯穿了整个时序分析过程。只要涉及到同步时序电路,那么必然有上升沿、下降沿采样,那么无法避免setup-timehold-time这两个概念。 1. 什么是setup-time
    发表于 02-08 14:48 6045次阅读

    Vivado时序案例分析之解脉冲宽度违例

    BY Hemang Divyakant Parikh 有多种类型的时序违例可归类为脉冲宽度违例。 - 最大偏差违例(详见 此处 ) - 最小周期违例(本文详解之重点)。 - 最大周期
    的头像 发表于 11-19 13:48 5611次阅读
    Vivado时序案例分析之解脉冲宽度<b class='flag-5'>违例</b>

    为什么setup检查下一个沿而hold检查当前沿

    做数字电路设计的可能都见过图一所示的setup和hold时间检查,从图中可以明显看出,setup time检查下一个沿,而hold time检查同一个沿。那么这是为什么
    的头像 发表于 11-21 10:30 4370次阅读

    通过解剖一个边沿触发器简要说明setup和hold产生原因

    在后仿真过程中经常会遇到关于setup和hold violation的问题,但是关于setup和hold time的产生原因和由来很多人还比较朦胧,为此本文通过解剖一个边沿触发器简要说明setup和
    的头像 发表于 07-04 09:32 1681次阅读
    通过解剖一个边沿触发器简要说明setup和<b class='flag-5'>hold</b>产生原因

    SOCV/POCV下寄存器的hold margin问题分析

    我们都知道,在做hold time检查的时候,是需要从lib中读取reg的hold requirement time,或者说hold mar
    的头像 发表于 12-05 14:18 501次阅读