您的位置 首页 产品

在FPGA规划环境中加时序束缚的技巧

为了让逻辑综合器和布局布线器能够根据时序的约束条件找到真正需要优化的路径,我们还需要对时序报告进行分析,结合逻辑综合器的时序报告,布线器的时序报告,通过分析,可以看出是否芯片的潜能已经被完全挖掘出来.

在给FPGA做逻辑归纳和布局布线时,需求在东西中设定时序的束缚。一般,在FPGA规划东西中都FPGA中包含有4种途径:从输入端口到寄存器,从寄存器到寄存器,从寄存器到输出,从输入到输出的纯组合逻辑。一般,需求对这几种途径别离进行束缚,以便使规划东西能够得到最优化的成果。下面临这几种途径别离进行评论。

(1)从输入端口到寄存器:

这种途径的束缚是为了让FPGA规划东西能够尽可能的优化从输入端口到榜首级寄存器之间的途径推迟,使其能够保证体系时钟牢靠的采到从外部芯片到FPGA的信号。束缚称号:input delay. 束缚条件的影响主要有4个要素:外部芯片的Tco,电路板上信号推迟Tpd,FPGA的Tsu, 时钟推迟Tclk. Tco的参数一般需求查外部芯片的数据手册。核算公式:input delay = Tco+Tpd+Tsu-Tclk. FPGA的Tsu也需求查FPGA芯片的手册。FPGA速度等级不同,这个参数也不同。Tpd和Tclk需求依据电路板实践的参数来核算。一般,每10cm的线长能够依照1ns来核算. 例如:体系时钟100MHz,电路板上最大推迟2ns, 时钟最大推迟 1.7ns, Tco 3ns, FPGA的Tsu为0.2ns. 那么输入推迟的值:max Input delay = 2+3+0.2-1.7=3.5ns. 这个参数的意义是指让FPGA的规划东西把FPGA的输入端口到榜首级寄存器之间的途径推迟(包含门推迟和线推迟)控制在 10ns-3.5ns=6.5ns 以内。

(2)寄存器到寄存器:

这种途径的束缚是为了让FPGA规划东西能够优化FPGA内寄存器到寄存器之间的途径,使其推迟时刻有必要小于时钟周期,这样才干保证信号被牢靠的传递。由于这种途径只存在于FPGA内部,一般经过设定时钟频率的办法就能够对其进行束缚。关于更深化的优化办法,还能够选用对寄存器的输入和寄存器的输出参加恰当的束缚,来使逻辑归纳器和布线器能够对某条途径进行特别的优化。还能够经过设定最大扇出数来迫使东西对其进行逻辑仿制,削减扇出数量,进步功能。

(3)寄存器到输出:

这种途径的束缚是为了让FPGA规划东西能够优化FPGA内部从最终一级寄存器到输出端口的途径,保证其输出的信号能够被下一级芯片正确的采到。 束缚的称号:output delay,束缚条件的影响主要有3个要素:外部芯片的Tsu,电路板上信号推迟Tpd,时钟推迟Tclk.Tsu的参数一般需求查外部芯片的数据手册。核算公式:output delay = Tsu+Tpd-Tclk.例如:体系时钟100MHz,电路板上最大推迟2ns, 时钟最大推迟 1.7ns, Tsu 1ns, 输出推迟的值:max output delay = 1+2-1.7=1.3ns . 这个参数的意义是指让FPGA的规划东西把最终一级寄存器到输出端口之间的途径推迟(包含门推迟和线推迟)控制在 10ns-1.3ns=8.7ns 以内。

(4)从输入端口到输出端口:

这种途径是指组合逻辑的推迟,指信号从输入到输出没有经过任何寄存器。给这种途径加束缚条件,需求虚拟一个时钟,然后经过束缚来指定哪些途径是要受该虚拟时钟的束缚。在Synplifypro和Precision中都有相应的束缚来处理这种途径。

关于输入输出推迟的一些参数,假如要把这些参数和xilinx的软件结合起来,也不是一件简单的工作。曾经好像咱们也不太垂青束缚条件的设定,大多时分都是无论如何先上板,然后经过signaltap和Chipscope来调。当FPGA规划大了之后,布线一次都需求很长时刻,这种办法的坏处就越来越严峻。实践上能够学习ASIC的规划办法:加比较完善的束缚条件,然后经过RTL仿真,时序剖析,后仿真来解决问题,尽量防止在FPGA电路板上来调试。altera最早意识到这一点,它选用了Synopsys的SDC格局。SDC的格局也得到了逻辑归纳器的支撑。而且设定办法比较简单把握。这个帖子会具体评论一下这种格局的束缚设定办法。

时钟的设定办法:时钟要分红两种,一种是从端口上直接输入的时钟,另一种是在FPGA内部发生的时钟。内部发生的时钟又要分红两种,从锁相环出来的(包含altera的PLL和Xilinx的DLL)和从逻辑单元出来的,例如一般的计数器分频便是这种状况。从锁相环出来的时钟能够经过端口直接加,由于一般的归纳东西和布线东西都能够主动的把端口的时钟束缚传递到锁相环,而且依据锁相环的倍频联系主动施加到下一级。而从逻辑单元出来的就需求独自对其进行束缚。

在SDC格局中,创立时钟的指令 create_clock, 后边要带3个参数:name ,period, waveform. name的意义是指创立这个时钟束缚的姓名,而不是时钟自身的姓名。要把这个束缚和时钟信号相关起来,还需求在后边加些东西。period的单位缺省是ns. waveform是用来指定占空比。除了这三个参数以外,常常还要加 get_ports的指令,来指定时钟的输入端口。下面的比如是一个较为完好的设定时钟的比如:
create_clock -name clk1 -period 10.000 –waveform { 2.000 8.000 } [get_ports sysclk]
这个比如表明,有一个clk1的束缚,在这个束缚中设定了时钟的周期为10ns, 占空比为2ns低电平,8ns高电平。 这个叫做clk1的束缚是针对sysclk这个端口的。

假如是使用内部锁相环分频出来许多其他时钟的束缚,能够不再别的施加其他束缚,逻辑归纳器和布线器都能依据锁相环的参数主动核算。假如是使用内部的逻辑单元分频出来的信号,则有必要使用get_registers指定分频的寄存器名。例如上例:

create_clock -name clk1 -period 10.000 –waveform { 2.000 8.000 } [get_registers cnt_clk].
关于逻辑单元分频的时钟信号,也能够选用指令create_generated_clock会愈加准确。举例如下:
create_generated_clk -name clk2 -source [getports sysclk] -div 4 [get_registers cnt_clk]
这个束缚指令描绘了一个clk2的束缚,束缚的对象是由sysclk分频4次得到的时钟,这个时钟是由cnt_clk这个寄存器发生的。

在高速的体系中,对时钟的描绘可能会要求的更多,愈加详尽。例如,会要求对时钟的颤动和时钟的推迟进行描绘。在SDC的文件格局中,能够经过两个指令来描绘:set_clock_uncertainty 和 set_clock_latency 来设定。

时钟的推迟相对来讲比较简单。推迟一般分为外部推迟和内部时钟线网的推迟。一般在束缚时只对外部推迟做束缚,在set_clock_latency的指令后带 -source的参数就能够了。 例如:

set_clock_latency -source 2 [get_clocks {clk_in}]
时钟的颤动要略微杂乱一些。由于这个值不但会影响到对Tsu的剖析,也会影响到对Thold的剖析。因而,选用set_clock_uncertainty的参数要多一些。假如要了解这个指令对体系时序剖析的影响,就需求对altera的延时核算的概念需求做更多的阐明。

关于set_clock_uncertainty的状况,就略微杂乱一些。由于set_clock_uncertainty的值既影响树立时刻的核算,也影响坚持时刻的核算,因而,需求在设定时别离指明:
set_clock_undertainty –setup 0.500 –from clkA –to clkA
set_clock_uncertainty –hold 0.300 –from clkA –to clkA

前面的内容里边供给了核算输入输出推迟的核算办法。输出推迟的指令是set_output_delay. 有几个参数要加:参阅时钟,最大最小值,和端口的称号。如下面的比如中描绘。
set_output_delay -clock CLK -max 1.200 [get_ports OUT]
set_output_delay -clock CLK -min 0.800 [get_ports OUT]
输入推迟的指令很相似:
set_input_delay -clock CLK -max 2.000 [get_ports IN]
set_input_delay -clock CLK -min 1.600 [get_ports IN]

对一些特别的规划要求,例如不关心的数据传递途径和多拍的途径,还需求添加false path 和 Multicycle的设定。这两个束缚比较简单,简单设定,可是十分要害。假如设定的欠好,体系功能会大打折扣。false path是指在时序剖析中不考虑其推迟核算的途径。例如有些跨过时钟域的电路等。设定的办法:
set_false_path -from [get_clocks clkA] -to [get_clocks clkB]
set_false_path -from regA -to regB

榜首条指令是设定了从时钟域clkA到时钟域clkB的一切途径都为false path。第二条指令设定了从 regA到regB的途径为false path。这两种途径在做时序剖析时都会被疏忽。multicycle的设定和false path的设定办法差不多。

为了让逻辑归纳器和布局布线器能够依据时序的束缚条件找到真实需求优化的途径,咱们还需求对时序陈述进行剖析,结合逻辑归纳器的时序陈述,布线器的时序陈述,经过剖析,能够看出是否芯片的潜能现已被彻底发掘出来

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/chanpin/196435.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部