跳转到主要内容

Vivado时序收敛技术(二) 时序违例的根本原因及解决方法

judy 提交于

本文转载自:<span id="profileBt"><a href="https://mp.weixin.qq.com/s/F0fgW0iMvX0QjvhngMjVBQ"&gt; 傅里叶的猫微信公众号</a></span>

本文整理自Xilinx公开课:Vivado时序收敛技术。

有些知识在公开课中讲的并不是很细,因此我又对齐进行了整理,分为了几篇文章。

有很多内容也在我的时序约束课程中讲到过,都是免费课程,大家可以在公众号上找到。

如果出现了时序违例,我们会关注两点:

1. 为什么会出现时序违例?

2. 如何解决?

首先我们要搞清楚时序是在哪个阶段违例:

在综合阶段或者post opt阶段出现了时序违例,那么很有可能的原因如下:

<li>添加的时序约束没有生效</li>

<li>约束过于严苛</li>

<li>综合选项设置不正确</li>

<li>电路设计中延迟太高</li>

前三个的解决方案都类似,就是进行正确的时序约束和正确的综合选项设置;如果是电路设计延时太高,电路中级联的级数太多,那么就要修改设计了。这里有一个经验值,就是LUT+NET的延时是0.5ns,如果时钟周期为5ns,那电路中最大的级联数为5ns/0.5ns=10级。
<center><img src="http://xilinx.eetrend.com/files/2021-10/%E5%8D%9A%E5%AE%A2/100554142-22…; alt=""></center>

在Place阶段出现了时序违例,那么很有可能是:

<li>高扇出网络</li>

<li>布局不合理或I/O位置不合理</li>

<li>资源使用过度</li>

<li>对于多个die的芯片,如果跨die太多,也会造成时序违例</li>

<center><img src="http://xilinx.eetrend.com/files/2021-10/%E5%8D%9A%E5%AE%A2/100554142-22…; alt=""></center>

在Place Opt阶段出现了时序违例,很有可能是:

<li>电路拥塞</li>

<li>高扇出</li>

<li>跨die太多</li>

此时我们可以采取的措施包括:

<li>做一些过约束</li>

<li>增量的布局布线</li>

<li>对子模块进行OOC</li>
<center><img src="http://xilinx.eetrend.com/files/2021-10/%E5%8D%9A%E5%AE%A2/100554142-22…; alt=""></center>

<li>在route阶段出现了时序违例,可能的原因和措施跟上面的是一样的</li>
<center><img src="http://xilinx.eetrend.com/files/2021-10/%E5%8D%9A%E5%AE%A2/100554142-22…; alt=""></center>