专栏首页Lauren的FPGA深度解析ug1292(4)

深度解析ug1292(4)

在分析place_design生成的dcp时,就要开始关注保持时间违例,尤其是当WHS < -0.5ns时。这是因为过大的保持时间违例往往会导致布线时间增大,同时,在布线阶段,工具未必能修复此类违例。

解决保持时间违例流程如下图所示。按照此流程,要逐步关注以下几个因素:

  • Clock Skew是否大于0.5ns
  • Hold Requirement是否为正(应该为0)
  • WHS是否小于-0.4ns或THS是否小于-1000ns
  • Clock Uncertainty是否大于0.1ns

图片来源 page 4, ug1292

这几个指标的具体数值可在时序报告中查到,如下图所示。图中,Path Type用于确定分析的是保持时间。

图片来源 page 4, ug1292

Hold Requirement为正的可能情形出现在使用多周期路径约束的时序路径中。如下图所示,时钟使能信号EN使得路径的Setup Requirement为3个时钟周期,但Hold Requirement仍应为0。

图片来源 page 4, ug1292

在此情况下,应采用如下图所示的多周期路径约束。其中的第2条约束是对hold的调整,却往往容易被遗漏。对于-hold,它表示相对于缺省捕获沿(图中的Default hold),实际捕获沿应回调的时钟周期个数。

对于过大的WHS或THS,应在布线之前做一些优化,尽可能地降低WHS和THS。为此,可在phys_opt_design阶段采取如下图所示的几个措施。

其中方法(1)是在两个同步时序元件之间插入与至相反的时钟沿触发的寄存器,将该路径一分为二,该方法的前提是建立时间不会被恶化。方法(2)至方法(4)都是在路径中插入LUT1。方法(2)只在WHS最大的路径中插入LUT1;方法(3)则是在更多的路径中插入LUT1;方法(4)则是在-directive为Explore的基础上进一步修正保持时间违例,等效于-directive Explore +-aggressive_hold_fix。

本文分享自微信公众号 - Lauren的FPGA(Lauren_FPGA),作者:Lauren Gao

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-05-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 深度解析ug1292(7)

    布线延迟过大除了拥塞导致之外,还可能是其他因素。下图显示了降低布线延迟的另一流程(因其他因素导致布线延迟过大的处理流程)。

    Lauren的FPGA
  • 深度解析ug1292(3)

    通常,我们优先解决建立时间违例。Setup slack与逻辑延迟、布线延迟、时钟歪斜和时钟不确定性有关。因此,首先要明确这几个因素中哪个因素对建立时间违例起关键...

    Lauren的FPGA
  • VIO你用对了吗

    既然是Virtual(虚拟的),就表明这个输入或输出并不是真实存在于FPGA设计中。下图显示了VIO的输入、输出管脚。其中,输入、输出管脚最大可支持到256位。...

    Lauren的FPGA
  • tensorflow ‘/biases/Adam_1’not in ckpt file

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_25737169/article/d...

    DoubleV
  • Android IPC机制

    使用多进程只有一种方法——给四大组件指定android:process 在多进程模式中,不同进程会拥有独立的虚拟机,Application和内存空间

    提莫队长
  • 【leetcode刷题】T141-把二叉搜索树转化成更大的树

    https://leetcode-cncom/problems/convert-bst-to-greater-tree/

    木又AI帮
  • Flutter 卡在 package get 的解决办法

    修改了 pubspec 文件之后,AS 像往常一样提示 需要 package get.

    猿哥
  • 记忆插画师-脑中的FPGA电路

    经过大约半个月的思考和查阅资料,准备还是将这部分教程写出来,这个思路的来源主要是好多人留言,入门之后感觉还是很迷茫。其实这个问题,我也很难去解答,但是我还是希望...

    碎碎思
  • C语言(回调函数)

    回调函数在程序开发中是一个非常重要的概念,所谓的回调其实就是不同程序模块之间的接口和约定,是软件分层设计的基本方式。

    用户2617681
  • Python函数参数之全面讲解

    Python函数参数 Python函数参数 本文主要介绍Python的函数参数,各种形式的参数。建议动手试试,可以加深理解。 函数参数 定义函数的时候,我们把参...

    1846122963

扫码关注云+社区

领取腾讯云代金券