第31讲 UltraFast设计方法学(10):时序收敛之时序约束基本准则

声明:该笔记来源于网上的VIVADO视频教程

详细的官方资料可以参考:http://china.xilinx.com/support/documentation/sw_manuals/xilinx2018_3/c_ug949-vivado-design-methodology.pdf(UltraFAST 设计方法指南 (适用于 Vivado Design Suite))中文版
http://china.xilinx.com/support/documentation/sw_manuals/xilinx2018_3/ug949-vivado-design-methodology.pdf(英文版)

1.在ISE中如果碰到时序没有收敛通常会用SmartXplorer去完成时序收敛,SmartXplorer是随机选取一个种子,有点像是忙试的过程,这是因为它的随机性导致的,同时我们在阅读时序报告的时候是在map之后才看它的时序报告,只有这个时候的时序报告才比较有意义。

在Vivado提供了一个根本的时序准则,在综合之后看时序报告,这个时候的时序报告是非常重要的,尽量把问题在前面解决掉。

第31讲 UltraFast设计方法学(10):时序收敛之时序约束基本准则_第1张图片

2.第一列:首先针对综合之后的网表要做一个内部的全局时钟周期约束

第二列:如果时序还没有收敛则会加I/O的管教约束,通常输入输出的I/O管脚约束在两种情况下会添加:

1).设计有源同步设计

2).系统中的设计

这两种设计所对应的约束在Vivado中都有模板,可以参考模板来完成相应的约束。

第三列:最后才会根据需要去做时序例外上的约束,多周期约束,伪路径约束。

一步一步添加约束是为了当添加全局时钟之后还没有收敛,就要考虑是否要添加I/O约束、多周期约束、伪路径约束

第31讲 UltraFast设计方法学(10):时序收敛之时序约束基本准则_第2张图片

3.Baselining的对象是综合后的网表:添加约束,读取时序报告。这个过程可能会反复进行。 

第31讲 UltraFast设计方法学(10):时序收敛之时序约束基本准则_第3张图片

4.需要确保在下图中的每一步WNS都要大于300ps,再做下一步,大于300ps是一个经验值

第31讲 UltraFast设计方法学(10):时序收敛之时序约束基本准则_第4张图片

5.如果发现时序没有收敛,或者综合后的网表根本就没有做约束,可以对综合后的网表重现开始做一个新的约束。

1)如何开始呢?

在IDE中打开synthesized design

2)如果确保是从完全没有任何约束的设计开始?

用tcl命令reset_timing复位所有的约束

3)如何知道我的约束对象?

用report_clock_networks(可以知道有哪些时钟需要约束)

第31讲 UltraFast设计方法学(10):时序收敛之时序约束基本准则_第5张图片

4)如何知道我们是否已经完成了所有的时钟约束?

可以用report_clock_networks去检查是否有遗漏的时钟,也可以用check_timing来检查

5)如何保证我们所做的约束是符合期望的?

可以用report_clock这个tcl命令,它会显示我们所创建的时钟和占空比

6)如何判断时钟之间的关系?同步、异步、有没有跨时钟域的路径

可以用report_clock_interaction  -sort这个命令

第31讲 UltraFast设计方法学(10):时序收敛之时序约束基本准则_第6张图片

5.DEMO

下图是DEMO的原约束,timing约束和pins约束是分开的两个文件

第31讲 UltraFast设计方法学(10):时序收敛之时序约束基本准则_第7张图片

假定DEMO中没有做任何的时序约束,或者时序没过 ,根据笔记3中Baselining的方法,新定义一个constraint2。 

第31讲 UltraFast设计方法学(10):时序收敛之时序约束基本准则_第8张图片

Make active勾选上把它作为激活的状态,并新建一个约束文件

第31讲 UltraFast设计方法学(10):时序收敛之时序约束基本准则_第9张图片

这个时候会弹出一个对话框,意思是说针对 constraint2需要重新reload综合后的网表

第31讲 UltraFast设计方法学(10):时序收敛之时序约束基本准则_第10张图片

reload后会重新打开网表,在TCL Console中输入reset_timing,将综合后的网表中所带的约束全部删除掉,如果要是在原 constraint中执行这条命令,则会导致原 constraint中xdc文件里的约束会全部被清空

第31讲 UltraFast设计方法学(10):时序收敛之时序约束基本准则_第11张图片

输入report_clock_networks,显示clk_pin_p没有做约束

第31讲 UltraFast设计方法学(10):时序收敛之时序约束基本准则_第12张图片

输入约束创建好时钟

第31讲 UltraFast设计方法学(10):时序收敛之时序约束基本准则_第13张图片

输入report_clock_networks -name network2可以看到该时钟已经约束好

 第31讲 UltraFast设计方法学(10):时序收敛之时序约束基本准则_第14张图片第31讲 UltraFast设计方法学(10):时序收敛之时序约束基本准则_第15张图片

同时还可以用report_clocks来检查一下我们所定义的时钟,可以看到该时钟已经被约束上,同时还有三个通过generate自动生成的时钟,还可以看到生成时钟的Master Clock。

第31讲 UltraFast设计方法学(10):时序收敛之时序约束基本准则_第16张图片第31讲 UltraFast设计方法学(10):时序收敛之时序约束基本准则_第17张图片

下一步就可以用report_timing_summary这个命令来检查时序报告,也可以用有图来查看时序报告,需要注意的是这里并不需要重新综合。

第31讲 UltraFast设计方法学(10):时序收敛之时序约束基本准则_第18张图片第31讲 UltraFast设计方法学(10):时序收敛之时序约束基本准则_第19张图片

看到的时序报告如下,WNS为负,所以并没有收敛。

第31讲 UltraFast设计方法学(10):时序收敛之时序约束基本准则_第20张图片

做完时序约束,我们需要保存一下,会提示保存到刚刚创建的constraint2中

第31讲 UltraFast设计方法学(10):时序收敛之时序约束基本准则_第21张图片

对综合后的设计做时序约束,需要明确的一点是,并不需要重新综合,在Design Runs里面选择Force Up-to-Data即可 

第31讲 UltraFast设计方法学(10):时序收敛之时序约束基本准则_第22张图片

你可能感兴趣的:(UlteraFast设计方法学)