XILINX时序报告重要参数的含义

本文讲解XILINX FPGA生成时许报告后各参数的含义,综合完后打开Report Timing Summary ,跟ISE不一样的是Vivado综合后的时序报告是可信的,但注意要将约束添加好,如果在综合时没有添加约束,可以在综合后添加,添加后可以直接查看时序报告,不用重新综合,
打开时序报告界面如下:在这里插入图片描述
此处注意Check Timing里的叹号都要关注一下,重点关注有没有未约束的时钟和有没有LOOP。下面是Intra-Clock Path和Inter-Clock Path,在跨时钟域都约束好了的前提下重点关注Intra-Clock Path,此处以建立时间为例讲解各参数的含义。
选择一条路径,用原理图的方式打开如下所示:
在这里插入图片描述
这是一个典型的时序模型,由发起寄存器、组合逻辑、捕获寄存器3部分组成,时序路径包括源时钟路径、数据路径、目的时钟路径。时序报告包括4部分Summary、Source Clock Path、Data Path、Destination Clock Path。首先是Summary:在这里插入图片描述
Slack:表示建立时间裕量,大于0表示建立时间满足,小于0表示建立时间不满足,Slack = Require Time - Arrive Time。
Data Path Delay:表示数据路径的延时,包括逻辑延时和布线延时,如果过大会导致建立时间不满足,此处给出了逻辑延时和布线延时所占的比重,可以帮助我们定位问题。
Logic Levels:表示组合逻辑的级数,级数过大会导致延时过大,从而导致建立时间违例。
Clock Path Skew:表示时钟抖动,一般不小于-0.5ns,如果小于-0.5就要定位问题并解决。
Clock Uncertainty:表示时钟不确定性,一般不大于0.1ns,大于0.1ns就占比过大,需要定位并解决。
下面是Source Clock Path和Data Path:在这里插入图片描述
此处可以看出是以时钟发起沿为起点,数值以此累加最后得到Arrive Time。
下面是Destination Clock Path:
可以看到时钟沿到来时间为40ns,代表主频跑的是25M
在这里插入图片描述
可以看到最后加上-0.304ns后得到 Require Time,0.304就是建立时间,Require Time将建立时间减掉了,时钟在44.433ns的时候已经到了,如果此时数据还没到,建立时间肯定就不能满足了。
例如下面的代码

reg [31:0] sum_temp[SUM_NUM -1:0];
generate
genvar ii;
	for(ii=0;ii<8;ii=ii+1)
	begin
		always@(posedge clk)begin
			if(!rst_n)begin
				sum_temp[ii] <= 0;
			end
			else if(state_c == SUM1)begin
				sum_temp[ii] <= window[ii*8]+window[ii*8+1]+window[ii*8+2]+window[ii*8+3]+window[ii*8+4]+window[ii*8+5]+window[ii*8+6]+window[ii*8+7];
			end
		end	
    end
endgenerate

一个时钟周期内做了8个24bit的数据累加,此段代码跑50M的时候是没有时序违例的,当把时钟提高到200M,
在这里插入图片描述
可以看到slck为负数了
用原理图的方式看一下
在这里插入图片描述
可以看到中间的组合逻辑级数非常多,延时非常大,看看时序报告里的summary
在这里插入图片描述
逻辑级数12级,数据路径延时达到了5.129ns,而我们的时钟周期是5ns,所以建立时间肯定是不满足的,
解决此问题的方法就是将求和改为流水线的方式。

  • 6
    点赞
  • 69
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
时序约束是在FPGA设计中用于确保电路在特定时钟频率下正确运行的重要工具。根据引用\[1\]和引用\[2\]的内容,可以总结出以下关于xilinx时序约束的一些要点: 1. 约束文件的使用时机:约束文件可以在综合和实现过程中使用。其中,wave_gen_timing.xdc文件在综合和实现过程中都会使用,而wave_gen_pins.xdc文件只会在实现过程中使用。 2. 约束的顺序:根据引用\[2\]的建议,推荐的约束顺序如下: - Timing Assertions Section:时序断言部分 - Primary clocks:主时钟 - Virtual clocks:虚拟时钟 - Generated clocks:生成的时钟 - Clock Groups:时钟组 - Bus Skew constraints:总线延迟约束 - Input and output delay constraints:输入和输出延迟约束 - Timing Exceptions Section:时序异常部分 - False Paths:虚假路径 - Max Delay / Min Delay:最大延迟/最小延迟 - Multicycle Paths:多周期路径 - Case Analysis:情况分析 - Disable Timing:禁用时序 - Physical Constraints Section:物理约束部分 3. 创建综合约束:根据引用\[3\]的内容,可以使用以下方法创建综合约束: - 使用INST语句将一系列信号归入一个组合,然后可以对该组合统一施加约束。 - 使用TIMESPEC语句定义从一个组到另一个组的时序约束。 4. 附加约束的策略:一般的策略是首先附加整体约束,如PERIOD、OFFSET等,然后对局部电路附加专门约束。通过在可能的地方放松约束,可以提高布线通过率并减小布局布线的时间。 综上所述,xilinx时序约束的使用时机、约束顺序、创建综合约束的方法以及附加约束的策略都是设计中需要考虑的重要因素。 #### 引用[.reference_title] - *1* *2* [Xilinx约束学习笔记—— 时序约束](https://blog.csdn.net/qq_21794157/article/details/126102689)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [xilinx 时序约束](https://blog.csdn.net/qijitao/article/details/46649243)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值