时序

AXI总线协议时序

由于ZYNQ架构和常用接口IP核经常出现 AXI协议,赛灵思的协议手册讲解时序比较分散。所以笔者收藏AXI协议的几种时序,方便编程。

1>AXI_LITE协议:

( 1) 读地址通道, 包含ARVALID, ARADDR, ARREADY信号;

( 2) 读数据通道, 包含RVALID, RDATA, RREADY, RRESP信号;

( 3) 写地址通道, 包含AWVALID, AWADDR, AWREADY信号;

( 4) 写数据通道, 包含WVALID, WDATA, WSTRB, WREADY信号;

( 5) 写应答通道, 包含BVALID, BRESP, BREADY信号;( 6) 系统通道, 包含: ACLK, ARESETN信号。

AXI4总线和AXI4-Lite总线的信号也有他的命名特点:读地址信号都是以AR开头( A: address; R: read)写地址信号都是以AW开头( A: address; W: write)读数据信号都是以R开头( R: read)写数据信号都是以W开头( W: write)

STA和SDF之间的时序不匹配

有时候静态时序分析(STA)的结果会与时序反标文件(SDF)出现不匹配的地方,而它们同样都是Vivado生成的。

以下内容列出了为什么会存在这种差异,以及如何解释STA运行结果和SDF之间的差异。

1. 首先要确认的是这些时序结果是在相同的状态下比较的。

例如,STA是在综合后运行的,那我们与之比较的SDF结果也应该是综合后的,而不是布线后的。

大部分的vivado用户也都很清楚这一点,在做比较的时候一定要保持设计所处的状态是一致的。

这里提到这一点是为了文章内容的完整性。

2. 确认使用了相同的timing corner

SDF文件一般是在slow corner下生成的,而STA可能是在不同的 corner下生成的,(比如:fast corner)。vivado可以做不同corner的时序分析,然后呈现出相应条件下最糟糕的结果。

查看附件文件STA.txt和dummy_synth_time.sdf

定位到IBUF的时序路径,STA文件显示这个路径延迟为293ps,而SDF文件显示这个路径延迟信息为600.5:725.7: 725.7

在STA文件的头部,你可以看到路径类型,在Fast Process Corner…..

如何利用Vivado的时钟不确定性来改善时序

Plunify的InTime策略将在下一个版本里利用和融入set_clock_uncertainty设置来改善时序优化。但是,如果读者等不及的话,可手动尝试使用Vivado自身的时钟不确定性来改善设计的时序。

在不需要修改实际时钟沿和相位关系情况下来过度约束设计最安全和最有效的方式,使Vivado寻求更多的解决途径,提供可能更好的时序结果。

set_clock_uncertainty:指令实现时钟的定时路径或者两个时钟之间添加额外的余量。

概述:设置时钟不确定性并且在不同阶段消除它的影响。
• 例如: 将200ps时钟不确定性添加到布局的最关键路径
• 消除布线阶段的时钟不确定性

方法依赖于:
• 约束那个具体时钟?
• 需要添加时钟不确定性的具体量?
• 应用和消除时钟不确定性的阶段?

参考文献:
• https://www.xilinx.com/support/documentation/sw_manuals/xilinx2016_4/ug949-vivado-design-methodology.pdf(page144)

简化和传统FPGA设计流程步骤主要由以下图为代表:

简化和传统FPGA设计流程步骤

FPGA设计所需优化时序的主要三大步骤为:

主要方式:改代码/约束
• 需要资深的工程师,要懂得改。
• 接近项目过点或是已验证过,不好改代码,避免造成新的问题

提升至更高器件等级、型号
• 提升速度等级或型号
• 成本高

FPGA工具的综合与布局布线选项
• 尝试种子(placement seeds)
• 时盲目尝试,但是时序相差太大就会无效

现今技术的飞跃和进步,运算资源价格的逐步下降,机器学习的崛起,但在大数据没有很好被有效利用的情况下,Plunify通过这些技术优势的结合,继续创新与推出新的InTime版本,以其促使颠覆旧有的FPGA设计步骤与流程。Plunify倡导新的FPGA设计流程如下图:

建立时间和保持时间(setup time 和 hold time)

建立时间和保持时间贯穿了整个时序分析过程。只要涉及到同步时序电路,那么必然有上升沿、下降沿采样,那么无法避免setup-time 和 hold-time这两个概念。

1. 什么是setup-time 和 hold-time
不论是在输入,输出或是寄存器-寄存器之间,只要设计到时钟上升沿/下降沿的采样,就会提到setup time 和 hold time。这两个指标说明器件本身不是理想的(时延等),正是这个不理想的特性,限制了工作时钟等。

Setup time is the minimum amount of time the data signal should be held steady before the clock event so that the data is reliably sampled by the clock. This applies to synchronous input signals to the flip-flop.

时序收敛基本概念

对于FPGA而言,时序收敛是一个很重要的概念。在我看来,时序约束是必要的,但不是在最重要的,我们应该在设计初始就考虑到时序问题,而不是完全的靠约束来获得一个好的结果。但我认为,对FPGA时序的分析能力是理解其运行机制的必要条件。之前也简单看过这方面的内容,却没有很正确的认识。这两天看了看UG612和相关内容,记录在此,这应该有一系列文章,希望不要烂尾。

1. FPGA时序的基本概念
FPGA器件的需求取决于系统和上下游(upstream and downstrem)设备。我们的设计需要和其他的devices进行数据的交互,其他的devices可能是FPGA外部的芯片,可能是FPGA内部的硬核(是否还能是其他的FPGA design?我的理解是,如果两个FPGA design和成了一个,那么ucf内的时序约束是要修改的)。

UltraFAST设计方法培训将帮助您时序收敛阶段实现“Sign-off” 质量XDC约束。另外,还帮助您显著提高时序收敛实现效率,无论该设计有多么复杂。

时序收敛-基本方法论

本部分内容参考ug612 《Timing Closure User Guide 》,主要是对第二章内容的整理和翻译。

在一个有效的设计中,生成工具必须要了解每一条路径上的时序约束。时序需求可以被分为几个大类,最通用的类型包括:

. Input paths

. Register-to-register paths

. Output paths

. Path specific exceptions

指定约束应该从全局约束开始,然后添加局部路径的例外。也就是说,全局的约束优先级是最低的。

在FPGA设计中,时序就是全部

作者:Synopsys FPGA产品营销经理Angela Sutton,Synopsys FPGA应用工程师Paul Owens

当你的FPGA设计不能满足时序要求时,原因也许并不明显。解决方案不仅仅依赖于使用FPGA的实现工具来优化设计从而满足时序要求,也需要设计者具有明确目标和诊断/隔离时序问题的能力。设计者现在有一些小技巧和帮助来设置时钟;使用像Synopsys Synplify Premier一样的工具正确地设置时序约束;然后调整参数使之满足赛灵思FPGA设计性能的目标。

时序分析/约束(二)——静态时序分析(STA)

1. 时序分析的作用
工作频率对数字电路而言至关重要。提高工作频率意味着更强大的处理能力,但是也带来了时序瓶颈:时序冲突的概率变大,电路的稳定性降低。所以为了使电路的性能达到设计的预期目标,并满足电路工作环境的要求,必须对一个电路设计进行时序、面积、负载等多方面的约束,并自始至终使用这些约束来驱动EDA软件工作。

ISE 具有一定的自动优化能力,对于一般的低速设计(处理时钟不超过100MHz),基本上不需要时序方面的任何手动分析和处理;但是对于高速和大规模设计,需要设计人员自行添加时序方面的控制和处理,通过多次反复操作,根据反馈结果逐步调整设定,直到满足要求为止。

同步内容