写在前面-为什么要读
想要了解时序约束和基本的vivado使用准则,王哥给发的
读文档 | Vivado使用误区与进阶
一级目录
二级目录
三级目录
文章结构-写了什么
除了快速导入,主要分为三部分,XDC、tcl in vivado、ECO和timing report
- 掌握基本准则
- 涵盖了时钟、CDC 以及接口约束的短文,基本上已经足够应对绝大多数的 FPGA 设计约束问题。
当然在这么短小的篇幅内,很多问题都无法更加深入地展开,所以也提醒读者,需要关注文中推荐的各类 Xilinx 官方文档,以及 Vivado 本身自带的帮助功能与模板。
- 用 Tcl 定制 Vivado 设计实现流程
- ECO 是一个比较大的命题,牵扯到的改动需求太多,在 FPGA 上实现 ECO 有个基本的认识-节约时间,增量修改
- 读懂timing report是为了学会Vivado 中的静态时序分析工具来验证时序,定位问题,快速找到问题和解决方案。
xdc部分写了思维导图,tcl直接看原文
文章亮点-学到了什么
参考准则
第一篇文章列出了十大准则,值得参考
xdc
注意使用官方文档和工具提供的参考,如clock wizard和language templates
tcl
直接看文档,没什么别的,平时工作都接触了
ECO
ECO 指的是 Engineering Change Order,即工程变更指令。ECO 的应用场景主要包含:修改 cell 属性、增减或移动 cell、手动局部布线。还有一些需要多种操作配合的复杂场景,例如把 RAM(或 DSP)
的输出寄存器放入/拉出 RAMB(或 DSP48)内部,或是把设计内部信号接到 I/O 上作调试 probe 用等等。
主要就是拉信号到顶层,增量修改什么的,细节还得继续探究,但基本也是工作接触过的
timing report
主要涉及了STA,考虑OCV的原因,对涉及进行静态时序分析。在 FPGA 设计中的静态时序分析一般仅考虑 Best Case 和 Worst Case,也称作 Fast Process Corner 和 Slow Process Corner,分别对应极端的 PVT 条件。
注意:Vivado 中看到的时序报告只会显示其对两种 corner 并行分析后选出的最差情况。
即便是同一种 FF,在同一个芯片上不同操作条件下的延时都不尽相同,我们称这种现象为 OCV(on-chip variation)。OCV 表示的是芯片内部的时序偏差,虽然很细小,但是也必须严格考虑到时序分析中去。
产生 OCV 的原因主要有 PVT(Process / Voltage / Temperature)三个方面,而 STA 要做的就是针对不同工艺角(Process Corner)下特定的时序模型来分析时序路径,从而保证设计在任何条件下都能满足时序要求,可以正常工作。
悲观考虑,才能保证设计不出问题
这样最大化考虑 OCV 的时序分析方法在处理同一条路径的共同时钟路径时也会应用不同的延时数据,从而会得出更为悲观的数据。为了真实反映路径延时情况,这部分延时必须被纠正,这就是 CRPR(Clock Reconvergence Pessimism Removal)。
命令如下,没怎么看明白
Vivado 中用于时序分析的命令主要有以下两条,且都有对应的图形化设置界面。
report_timing_summary 主要用于实现后的 timing sigh-off
report_timing 主要用于交互式的约束验证以及更细致具体的时序报告与分析
读后思考-还有什么问题
读了两遍了,一知半解,有个概念。时序还是大问题,善用文档和工具提供的模板,好好看report。
笔记或其他资源
文档直接搜索《 Vivado使用误区与进阶》
时序问题–ug904
tcl–ug835,894,975