取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 
ninoLiu
Observer
Observer
295 次查看
注册日期: ‎07-23-2020

vivado 布局布线后,Failed timing

ninoLiu_0-1617264190843.png

用输入时钟50M的PLL产生三路时钟:100M,125M以及50M

//----------------------------------------------------------------------------
// Output Output Phase Duty Cycle Pk-to-Pk Phase
// Clock Freq (MHz) (degrees) (%) Jitter (ps) Error (ps)
//----------------------------------------------------------------------------
// clk_out1__100.00000______0.000______50.0______162.035____164.985
// clk_out2__125.00000______0.000______50.0______154.207____164.985
// clk_out3__50.00000______0.000______50.0______192.113____164.985
//
//----------------------------------------------------------------------------
// Input Clock Freq (MHz) Input Jitter (UI)
//----------------------------------------------------------------------------
// __primary__________50.000____________0.010

CLK_PLL instance_name
(
// Clock out ports
.clk_out1(clk_out1), // output clk_out1
.clk_out2(clk_out2), // output clk_out2
.clk_out3(clk_out3), // output clk_out3
// Status and control signals
.reset(reset), // input reset
.locked(locked), // output locked
// Clock in ports
.clk_in1(clk_in1)); // input clk_in1

请问如何解决?

0 项奖励
5 回复数
yangc
Xilinx Employee
Xilinx Employee
279 次查看
注册日期: ‎02-28-2019

你要看一下哪些路径没过,是否是跨时钟的路径报了timing为例

-------------------------------------------------------------------------
Don't forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------
0 项奖励
graces
Moderator
Moderator
277 次查看
注册日期: ‎07-17-2008

这个错误发生于clk_out1到clk_out2的跨时钟域。对于时序分析工具来说,默认是按照两个时钟沿之间的最紧要求去做分析,在你的例子里是2ns。你可以选择具体fail的路径,双击打开路径详情进行查看。

2ns还是比较高的要求,如果你的设计中有跨时钟域的处理和保障,那需要根据实际情况去做timing exception约束,比如set_max_delay等。

-----------------------------------------------------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
If starting with Versal take a look at our Versal Design Process Hub and our Versal Blogs.
-----------------------------------------------------------------------------------------------------------------------
0 项奖励
ninoLiu
Observer
Observer
248 次查看
注册日期: ‎07-23-2020

 请问有这方面的设计指南么?我的程序经常有这样的问题,起初我只能降低时钟频率,但是这就不能满足我的计算速率要求。

我之后又修改了一次我得程序,时间裕度变得更差了,并且有问题的路径有很多,您可以给我大概讲一些基本的时序约束方法么?不胜感激!

0 项奖励
ninoLiu
Observer
Observer
243 次查看
注册日期: ‎07-23-2020

还想请教一下,2ns是怎么来的,取决于我的程序么?我应当如何设计?

ninoLiu_0-1617278189923.png

 

0 项奖励
graces
Moderator
Moderator
111 次查看
注册日期: ‎07-17-2008

工具会分析所有沿到沿的差值,取最小的情况。你从2ns的括号中计算也可以得到,当目的地时钟clk_out2上升沿为32ns,源时钟上升沿为30ns的时候,可得到最紧的requirement。

这是跨时钟域的逻辑路径,发送和接收时钟不是同一个,在这里是慢时钟到快时钟,那么在实际设计中,需要达到怎样的性能?按2ns分析是否符合实际,这是设计者需要评估和处理的。如果符合实际,那需要优化代码,比如这条路径有2级LUT,最好减小逻辑层次。如果不符合实际,代码做了相应的保障能放宽要求的话,需要添加额外的约束例如set_max_delay来覆盖默认的2ns,按实际的要求做分析。

-----------------------------------------------------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
If starting with Versal take a look at our Versal Design Process Hub and our Versal Blogs.
-----------------------------------------------------------------------------------------------------------------------
0 项奖励