在实际的工程当中,出现了时序违例的情况如何解决呢?
本章内容将介绍例外约束、布局布线的具体操作,实现系统参数的优化。
**前言:**通过约束时钟,比如基准时钟,和生成时钟,让我们的综合工具知道我们的时序要求标准是多少,那么分析工具会根据布局布线之后的网络表进行分析,如果存在时序违例会给我们通过报告形式打印,另外布线的算法也会根据我们设置的时钟周期约束进行努力布线满足我们的时序要求。
这里写目录标题
- 一、时序分析优化总体流程
- 二、查看总体时序报告,追踪时序违例路径
- 1.查看时序报告
- 2.时序约束之例外约束
- 1.先以Intra-clock为例,处理同时钟域时序违例问题:
- Set false path
- Set multicycle path
- 1.什么样的路径是 multicycle?
- 2.Set multicycle path 建立时间的约束
- 3.Set multicycle path 保持时间的约束
- 2.以Inter-clock为例,处理跨时钟时序违例问题:
- 3.布局布线约束优化
- 1.以div_timing工程为例,进行优化操作。
- 2.更多电路优化内容补充
- 4.设置 implementation 的 strategy 策略优化时序
- 5.通过插入流水线寄存器提高时序余量
一、时序分析优化总体流程
二、查看总体时序报告,追踪时序违例路径
1.查看时序报告
打开 check Timing
打印时序报告 (report timing summary)
这个报告会把所有约束和没有约束的路径时序报告都打印出来,这样可以看到那些路径出现时序违例了,方便我们观察。
报告如下,其中:
==Intra-clock paths ==同时钟域时序报告
Inter-clock path 跨时钟域时序报告(此部分一般我们需要直接设置 false path)
2.时序约束之例外约束
1.先以Intra-clock为例,处理同时钟域时序违例问题:
通过 from to 来看,源端:ini_reg ,目的端:RST 复位,属于复位信号时序违例。
一般有两种处理方法:
- Set false path 因为本身复位没有办法保证到达每一个寄存器保证延迟一致时
序不出现违例,这里约束是忽略对此路径的时序分析。 - Set multi cycle 约束我们的建立时间或者保持时间余量大于 1 个时钟周期。
Set false path
右击某条路径,设置 set false path 选择 startpoint to endpoint,然后点击ok即可。
(如果选择source clock to destination clock 会把这两个时钟域间交互的所有路径忽略掉,一般用于处理跨时钟域的时序违例(Inter-clock path))
连续设置几条以后re run一下,更新一下时序报告。
下面学习一下set multicycle的设置。
Set multicycle path
1.什么样的路径是 multicycle?
如上所示:
两级寄存器之间有复杂的组合逻辑,比如与或非等等组合逻辑运算, 这样此处的组合逻辑延迟可能超过一个时钟周期,直接套用之前我们学习的两级 寄存器的时序分析模型,一定会报时序错误。
有时候我们采集此信号未必需要在发射沿的下一个时钟周期采样,我们可能需要经过多个时钟周期采集数据,这样就形成了上图所描述 的:CE信号是一个时钟有效信号,经过 N 拍的延迟到达控制接收端寄存器的 CE 端,这样就会延迟 N 拍去采样。
2.Set multicycle path 建立时间的约束
选择某条路径,例如path101进行如下设置:
options默认选择下为建立时间设置
3.Set multicycle path 保持时间的约束
同样是对path101进行如下设置:
全部设置完成后 ** rerun ** 一下,重新查看时序报告。发现时序违例依然存在。如何进一步调整?
答: 我们之前设置的hold为2,但hold余量仍然不足,我们可以将hold继续向前调整。原理图如下:
重新rerun后,无时序违例情况。
2.以Inter-clock为例,处理跨时钟时序违例问题:
如下图所示,都是跨时钟域路径
这种时序违例,我们直接通过设置set false path源时钟到目的时钟的即可。
最终的时序报告如下:
时序报告没有问题后保存生成xdc文件,然后重新综合工程。若综合完成后还存在时序违例问题,则继续进行set false path 或者set multicycle 设置。
下一步进行布局布线
3.布局布线约束优化
完成上述的综合流程后,下面开始进行布局布线的约束。这里我们主要采用物理优化的方式,包括:
- 布局后优化(post-place)
- 布线后优化(post-route)
1.以div_timing工程为例,进行优化操作。
① 先观察工程的时序报告:
② 在工程中打开物理优化设置,并进行设置
③ 更改完 phy opt 参数后优化结果如下
④LOG 的报告如下
2.更多电路优化内容补充
图下的表提供了多种电路优化的方式。
- 高扇出信号优化(high-fanout )
可以明显看到:右侧的图片中白色的线已经被分割为多个起点然后扇出,这样使扇出延迟减小了,蓝色的线为优化前的效果。
- 布局优化效果(placement )
使能了物理优化后,如果一些较长的关键路径存在,布局工具会自动的进行从新规划布局方案使得路径变短,从而优化时序。
- 重新分配布线连线(Rewiring )
蓝色部分是慢速路径,绿色部分是快速路径,通过合理分配布线进行路径优化。
第二种情况:
- 关键逻辑组件的复制
-hold fix的优化
例一:
例二:
- retiming 优化
4.设置 implementation 的 strategy 策略优化时序
这里包含了很多的策略,哪种优化策略适合需要结合工程具体分析,通常来讲会尝试很多种优化策略对比观察时序变化。
5.通过插入流水线寄存器提高时序余量
这里以修改除法器ip的latency为例:
原理:
插入流水前:
插入流水线后:
插入流水线之后增加了 latency 但是换取了把两级 lut 延迟变为了 1 级 lut 延迟,这样时序就会变好。
此外还可以通过代码的方式插入流水。