一种搜索fpga软件可运行到的最高频率的方法

文档序号:6506282阅读:189来源:国知局
一种搜索fpga软件可运行到的最高频率的方法
【专利摘要】本发明涉及一种搜索FPGA软件可运行到的最高频率的方法,包括:在满足第一条件的情况下改变FPGA软件的时钟周期约束,基于改变后的时钟周期进入迭代运行;在迭代运行中,在满足第二条件的情况下,根据FPGA软件的当前时钟余量及其对应的时钟周期,计算出第二条件频率并将其作为FPGA软件可运行到的最高频率;其中,时钟余量为时钟周期约束与实际布局布线后时钟周期的差值,当其为正/负时表示满足/不满足时序,第一条件与FPGA软件的当前时钟余量的正负、预先设定的最大时钟余量和/或时钟余量容限有关,第二条件与FPGA软件的当前时钟余量的正负、时钟余量容限、或预先设定的最大迭代次数有关。本发明基于不同的优化策略进行迭代搜索得到更优的最高频率解集合。
【专利说明】—种搜索FPGA软件可运行到的最高频率的方法

【技术领域】
[0001]本发明涉及FPGA软件流程,尤其涉及一种搜索FPGA软件可运行到的最高频率的方法。

【背景技术】
[0002]FPGA软件所能跑到的最高频率是衡量其性能的一个重要指标,它与用户设置的初始时钟约束有很大关系,不同的初始时钟约束可能导致最终达到的最高频率有很大不同。本发明提出了几种FPGA软件流程可达最高频率的搜索方法与评价指标,基于不同的优化策略进行迭代搜索,从而得到更优的最高频率解集合。


【发明内容】

[0003]因此,本发明的目的是提供一种能够实现上述优点的搜索FPGA软件可运行到的最高频率的方法。
[0004]本发明提供了一种搜索FPGA软件可运行到的最高频率的方法,包括:在满足第一条件的情况下,改变FPGA软件时钟周期约束,基于改变后的时钟周期进入迭代运行;在所述迭代运行中,在满足第二条件的情况下,根据FPGA软件的当前时钟余量及其对应的时钟周期,计算出第二条件频率并将其作为FPGA软件可运行到的最高频率;其中,所述时钟余量为FPGA软件约束文件要求的时钟周期与实际布局布线后时钟周期的差值,所述第一条件与FPGA软件的当前时钟余量的正负、预先设定的最大时钟余量和/或时钟余量容限有关,所述第二条件与FPGA软件的当前时钟余量的正负、所述时钟余量容限、或者预先设定的最大迭代次数有关。
[0005]优选地,所述第一条件为所述当前时钟余量为负且其绝对值大于最大时钟余量,所述改变为增大时钟周期约束(降低期望频率);或者所述第一条件为所述当前时钟余量为负并且其绝对值大于最大时钟容限且小于最大时钟余量,所述改变为增大时钟周期约束(降低期望频率);或者所述第一条件为所述当前时钟余量为正且其绝对值大于最大时钟余量,所述改变为减小时钟周期约束(提高期望频率);或者所述第一条件为所述当前时钟余量为正并且大于最大时钟容限且小于最大时钟余量,所述改变为减小时钟周期约束(提高期望频率)。
[0006]优选地,所述第二条件为所述当前时钟余量为负并且其绝对值小于或等于时钟余量容限;或者所述第二条件为所述当前时钟余量为正并且小于或等于时钟余量容限;或者所述第二条件为FPGA软件迭代运行的次数达到所述最大迭代次数。
[0007]优选地,所述方法还包括:根据FPGA软件在所述迭代运行中的一个或多个时钟余量及其对应一个或多个时钟周期,计算出一个或多个第一条件频率:从所述第二条件频率和所述一个或多个第一条件频率中选取最大频率值并将其作为FPGA软件可运行到的最高频率。
[0008]所述方法还包括:基于预先设定的搜索步长,在以所述最大频率值为中心的预定区域中,进行正向区域搜索并且进行负向区域搜索,分别得到多个正向区域频率和多个负向区域频率,其中,所述预定区域与预先设定的搜索区间有关,所述正向区域搜索和所述负向区域搜索的步数与所述搜索区间和所述搜索步长相关并且被预先设定;从所述最大频率值、所述多个正向区域频率、和所述多个负向区域频率中选取最大频率值并将其作为FPGA软件可运行到的最高频率。
[0009]优选地,所述方法还包括--为FPGA软件设定初始时钟周期,根据所述初始时钟周期及其对应的时钟余量计算出FPGA软件运行的初始频率;其中,当所述最大频率值等于所述初始频率时,所述正向区域频率与所述第二条件频率之差的绝对值大于预先设定的频率容差;其中,当所述最大频率值大于所述初始频率时,所述负向区域频率与所述第二条件频率之差的绝对值大于预先设定的频率容差。
[0010]优选地,所述第一条件频率和所述第二条件频率为:1/ (FPGA软件当前运行的时钟周期-FPGA软件的当前时钟余量)。
[0011]优选地,所述最大时钟余量为预先设定的最大时钟余量比率与FPGA软件当前的时钟周期的乘积。
[0012]本发明提出了几种FPGA软件流程可达最高频率的搜索方法与评价指标,基于不同的优化策略进行迭代搜索,从而得到更优的最高频率解集合。

【专利附图】

【附图说明】
[0013]下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
[0014]图1是根据本发明实施例的FPGA软件可运行最高频率的搜索方法的流程图;
[0015]图2是根据本发明实施例的FPGA软件可运行最高频率的多次迭代搜索的示意图;
[0016]图3是根据本发明实施例的FPGA软件可运行最高频率的额外迭代搜索的流程图。

【具体实施方式】
[0017]图1是根据本发明实施例的FPGA软件可运行最高频率的搜索方法的流程图。
[0018]如图1所示,该方法共分为五个步骤,其中:
[0019]在步骤101,计算FPGA软件运行的初始频率FmaxO。具体地,可以基于初次布局布线后的时序结果,即运行一次后的时钟余量来计算FmaxO,
[0020]FmaxO=I/ (初始时钟周期-布局布线后时钟余量);
[0021]在上式中,初始时钟周期可由用户自己设定,布局布线后的时钟余量为FPGA软件运行一次布局布线后与初始周期相差的时间。
[0022]在步骤102,计算FPGA软件运行在多次迭代过程中的频率。
[0023]具体地,基于多次迭代计算FPGA软件可运行到的最高频率Fmaxl,其中,迭代次数、最大时钟余量比率和时钟余量容限均可由用户指定,其中,最大时钟余量=最大时钟余量比率*时钟周期。例如,在默认的情况下,迭代次数可以设为20,最大时钟余量比率可以设为0.1,时钟余量容限可以设为O。
[0024]在迭代之初,用户可以设置初始时钟周期,并在FPGA软件以该初始时钟运行之后检查布局布线后的时序状态。如果FPGA软件运行一次后的时钟余量为正,则提高最高频率的数值;如果FPGA软件运行一次后的时钟余量为负,则降低最高频率的数值。对应于提高/降低的最高频率的数值,新的时钟周期将作为下一次迭代的时钟周期。迭代一直进行,直到当前迭代后得到的时钟余量满足预定条件,或者迭代达到用户预定的迭代次数之后,迭代停止。优选地,可以选取迭代停止时,即FPGA软件最后一次运行的时钟余量,将该时钟余量对应的频率值作为FPGA软件可运行的最高频率。
[0025]在步骤103,选取上一步骤中多次迭代中的多个时钟余量对应的多个频率值中的最大频率值,将该最大频率值作为FPGA软件可运行到的最高频率。
[0026]在步骤104,以上一步骤中的最高频率为中心进行额外迭代搜索,计算出FPGA软件在额外迭代搜索中的最高频率集合。
[0027]在步骤105,从步骤102的最高频率和步骤104的最高频率集合中选取最大值,将其作为FPGA软件可运行的最高频率。
[0028]应当注意,本实施例的多次迭代搜索仅仅是示例而不在于限制本发明。本领域技术人员应当理解,根据本发明的多次迭代搜索在实践中可以有许多变化,例如步骤103-105中的一个或多个可以省略或跳过。
[0029]图2是根据本发明实施例的FPGA软件可运行最高频率的多次迭代搜索的示意图。
[0030]如图2所示,多次迭代从状态sO开始,从状态s5退出;当然,多次迭代也可以在达到用户设定的迭代次数后在其中的某一个状态结束。具体地,sO为初始迭代状态;sl、s3为时钟余量为负时的迭代状态,即时序违规时的迭代状态;s2、s4为时钟余量为正时的迭代状态,即时序满足时的迭代状态;s5为退出迭代状态。
[0031]在初始状态sO,用户可设定初始时钟周期、最大时钟余量、时钟余量容限;另外,用户还可以设定迭代次数。在初始迭代状态sO,FPGA软件按照初始设定运行一次后,检查布局布线后的时序状态,得到初始时钟余量。
[0032]取决于初始时钟周期的设置以及改变时钟周期的具体策略,所述的多次迭代可能理想地按照下述的两条支线之一进行,直至最后满足预定条件或者达到预定迭代次数后退出迭代。
[0033]一方面,介绍在初始状态下运行FPGA软件后发现时序违规时的迭代搜索过程。
[0034]当初始时钟余量为负且其绝对值大于最大时钟余量时,时序状态的检查结果为时序违规。在这种情况下,降低最高频率目标值,以降低后的最高频率目标值对应的时钟周期为新的时钟周期,迭代进入迭代状态Si,再次运行FPGA软件。
[0035]在迭代状态Si中,除时钟周期降低之外,初始状态中设定的其他参数保持不变。在迭代状态Si中运行FPGA软件后再次进行布局布线检查,得到第一时钟余量。
[0036]在第一时钟余量为负且其绝对值大于最大时钟余量的情况下,时序状态的检查结果为时序违规。在这种情况下,降低最高频率目标值,以降低后的最高频率目标值对应的时钟周期为新的时钟周期,继续在迭代状态Si下运行FPGA软件,得到当前的第一时钟余量。
[0037]在初始时钟余量或当前的第一时钟余量为负,并且它们的绝对值大于最大时钟容限且小于最大时钟余量的情况下,时序状态的检查结果为时序违规。在这种情况下,降低最高频率目标值,并且以降低后的最高频率目标值对应的时钟周期为新的时钟周期,迭代对应地从sO或Si进入迭代状态s3,再次运行FPGA软件。
[0038]在迭代状态S3中,除时钟周期降低之外,初始状态中设定的其他参数保持不变。在迭代状态s3中运行FPGA软件后再次进行布局布线检查,得到第三时钟余量。
[0039]在当前的第三时钟余量为负,并且其绝对值大于最大时钟容限且小于最大时钟余量的情况下,时序状态的检查结果为时序违规。在这种情况下,降低最高频率目标值,以降低后的最高频率目标值对应的时钟周期为新的时钟周期,继续在迭代状态s3下运行FPGA软件,得到当前的第三时钟余量。
[0040]在当前的第三时钟余量为正且小于或等于时钟余量容限的情况下,多次迭代进入s5,即退出多次迭代。
[0041]另一方面,介绍在初始状态下运行FPGA软件后发现时序满足的迭代搜索过程。
[0042]当初始时钟余量为正且大于最大时钟余量时,时序状态的检查结果为时序满足。在这种情况下,提闻最闻频率目标值,以提闻后的最闻频率目标值对应的时钟周期为新的时钟周期,迭代进入迭代状态s2,再次运行FPGA软件。
[0043]在迭代状态s2中,除时钟周期提高之外,初始状态中设定的其他参数保持不变。在迭代状态s2中运行FPGA软件后再次进行布局布线检查,得到第二时钟余量。
[0044]在第二时钟余量为正且大于最大时钟余量的情况下,时序状态的检查结果为时序满足。在这种情况下,提闻最闻频率目标值,以提闻后的最闻频率目标值对应的时钟周期为新的时钟周期,继续在迭代状态s2下运行FPGA软件,得到当前的第二时钟余量。
[0045]在初始时钟余量或当前的第二时钟余量为正,并且它们的值大于最大时钟容限且小于最大时钟余量的情况下,时序状态的检查结果为时序满足。在这种情况下,提高最高频率目标值,并且以提高后的最高频率目标值对应的时钟周期为新的时钟周期,迭代对应地从sO或s2进入迭代状态s4,再次运行FPGA软件。
[0046]在迭代状态s4中,除时钟周期降低之外,初始状态中设定的其他参数保持不变。在迭代状态s4中运行FPGA软件后再次进行布局布线检查,得到第四时钟余量。
[0047]在当前的第四时钟余量为正,并且其值大于最大时钟容限且小于最大时钟余量的情况下,时序状态的检查结果为时序违规。在这种情况下,降低最高频率目标值,以降低后的最高频率目标值对应的时钟周期为新的时钟周期,继续在迭代状态s4下运行FPGA软件,得到当前的第四时钟余量。
[0048]在当前的第四时钟余量为负,并且其绝对值小于或等于时钟余量容限的情况下,多次迭代进行到s5,即退出多次迭代。
[0049]为方便描述起见,时钟余量在上述迭代过程中继续迭代需满足的条件可称之为第一条件;对应地,FPGA软件在迭代过程中的运行频率可称之为第一条件频率。时钟余量为了退出迭代需满足的条件可称之为第二条件;对应地,FPGA软件在最后一次迭代时的运行频率可称之为第二条件频率。
[0050]本领域技术人员应当理解,在多次迭代过程中对FPGA软件运行的时钟周期的改变量或其绝对值可以是相同的或不同的;另外,上述两方面的迭代过程仅仅是为了说明本发明而不在于限制。
[0051]本领域技术人员还应当理解,由于对FPGA软件运行的时钟周期的改变量的可选择性,有可能在上述迭代状态之间发生互跳。换言之,只要满足上述若干条件之一,FPGA软件的运行可以从任何迭代状态跳入该条件对应的迭代状态。例如,在初始频率选择恰当的情况下,从sO直接跳入s5,即一次设置就找出了最合适的最高频率。又例如,始终或者无法跳出迭代状态,这时会依赖用户预先设定的最大迭代次数的限制而停止迭代,选取最后一次迭代的时钟周期和对应的时钟余量来计算最高频率。
[0052]综上所述,迭代搜索的策略在于FPGA软件的当前时钟余量在满足第一条件的情况下改变FPGA软件的时钟周期而继续迭代,在满足第二条件的情况下退出迭代。
[0053]第一条件及其对应的时钟周期改变策略具体如下:第一条件为当前时钟余量为负且其绝对值大于最大时钟余量,此时提高FPGA软件的时钟周期,即降低最高频率目标值;或者第一条件为当前时钟余量为负并且其绝对值大于最大时钟容限且小于最大时钟余量,此时提高FPGA软件的时钟周期,即降低最高频率目标值;或者第一条件为当前时钟余量为正且其绝对值大于最大时钟余量,此时降低FPGA软件的时钟周期,即提高最高频率目标值;或者第一条件为当前时钟余量为正并且大于最大时钟容限且小于最大时钟余量,此时降低FPGA软件的时钟周期,即提高最高频率目标值。
[0054]退出迭代时时钟余量需满足的第二条件具体如下:第二条件为当前时钟余量为负并且其绝对值小于或等于时钟余量容限;或者第二条件为当前时钟余量为正并且小于或等于时钟余量容限;或者第二条件为FPGA软件迭代运行的次数达到所述最大迭代次数。
[0055]另外,在上述两方面的迭代过程中,每一次迭代状态最终获取的最高频率可称之为迭代运行频率,迭代运行频率的计算如下式:
[0056]Fmax(i)=l/(第i次迭代时钟周期-第i次迭代布局布线后时钟余量)
[0057]选取最后一次迭代布局布线后时钟余量趋近于O时的结果为搜索到的FPGA软件可运彳丁到的最闻频率Fmaxl,即
[0058]Fmaxl=I/ (最后一次迭代时钟周期_最后一次迭代布局布线后时钟余量)。
[0059]如关于图1所述,也可以选取FPGA软件运行在上述多次迭代过程中的最高频率为搜索到的FPGA软件可运行到的最高频率Fmax2。
[0060]Fmax2=max [Fmax (i) ] =max [I / (第i次迭代时钟周期-第i次迭代布局布线后时钟余量)]
[0061]图3是根据本发明实施例的FPGA软件可运行最高频率的额外迭代搜索的流程图。
[0062]额外迭代搜索是以Fmax2为中心,在给定区域[Fmax2*(l_搜索区间),Fmax2*(l+搜索区间)]中进行额外迭代搜索,其中,搜索区间和搜索步长可由用户指定,另可预先设定频率容差以排除不合要求的频率。由于Fmax2为多次迭代过程中选取的最高频率,FmaxO为初始频率,故Fmax2 ^ FmaxO。
[0063]如图3A所示,当Fmax2=FmaxO时,向正向区域和负向区域进行搜索。一方面,向正向区域进行搜索,则Fi=Fmax2+i*搜索步长,搜索步数i e [1,搜索区间/(2*搜索步长)]。当IF1-Fmaxl I〈频率容差时,跳过该点,继续搜索;当I F1-Fmaxl | >频率容差时,可获得本次搜索所得的最高频率为Fsi。另一方面,向负向区域进行搜索,则Fj=Fmax2-j*搜索步长,搜索步数j e [1,搜索区间/搜索步长_i],则本次搜索所得的最高频率为Fsj。
[0064]如图3B所示,当Fmax2>FmaxO时,向正向区域和负向区域进行搜索。一方面,向负向区域进行搜索,则Fi=Fmax2-1*搜索步长,i e [I,搜索区间/ (2*搜索步长)]。当
F1-Fmaxl | <频率容差时,跳过该点,继续搜索;当I F1-Fmaxl | >频率容差时,可获得本次搜索所得的最高频率为Fsi。另一方面,向正向区域进行搜索,则Fj=Fmax2+j*搜索步长,j e [I,搜索区域/搜索步长_i],则本次搜索所得的最高频率为Fsj。
[0065]为方便描述起见,上述在正向区域和负向区域中搜索得到的频率可分别称之为正向区域频率和负向区域频率。
[0066]对额外迭代区域搜索所得最高频率集合为{Fsi,Fsj},其中i e [1,搜索步长/2],j e [1,搜索步长-幻。
[0067]Fmax3 为该集合与 Fmax2 中的最高频率,Fmax3=Max [Fmax2, {Fsi, Fs j}]
[0068]取Fmax3为FPGA软件运行可能达到的最高频率的最终结果。
[0069]专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0070]结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或【技术领域】内所公知的任意其它形式的存储介质中。
[0071]以上所述的【具体实施方式】,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的【具体实施方式】而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种搜索FPGA软件可运行到的最高频率的方法,包括: 在满足第一条件的情况下,改变FPGA软件的时钟周期约束,基于改变后的时钟周期进入迭代运行; 在所述迭代运行中,在满足第二条件的情况下,根据FPGA软件的当前时钟余量及其对应的时钟周期,计算出第二条件频率并将其作为FPGA软件可运行到的最高频率; 其中,所述时钟余量为所述时钟周期约束与实际布局布线后时钟周期的差值,当所述时钟余量为正或为负时分别表示满足时序或不满足时序,所述第一条件与FPGA软件的当前时钟余量的正负、预先设定的最大时钟余量和/或时钟余量容限有关,所述第二条件与FPGA软件的当前时钟余量的正负、所述时钟余量容限、或者预先设定的最大迭代次数有关。
2.根据权利要求1所述的方法,其中: 所述第一条件为所述当前时钟余量为负且其绝对值大于最大时钟余量,所述改变FPGA软件的周期约束为增大时钟周期约束;或者 所述第一条件为所述当前时钟余量为负并且其绝对值大于最大时钟容限且小于最大时钟余量,所述改变FPGA软件时钟周期约束为增大时钟周期约束;或者 所述第一条件为所述当前时钟余量为正且其绝对值大于最大时钟余量,所述改变改变FPGA软件时钟周期约束为减小时钟周期约束;或者 所述第一条件为所述当前时钟余量为正并且大于最大时钟容限且小于最大时钟余量,所述改变FPGA软件时钟周期约束为减小时钟周期约束。
3.根据权利要求1所述的方法,其中: 所述第二条件为所述当前时钟余量为负并且其绝对值小于或等于时钟余量容限;或者 所述第二条件为所述当前时钟余量为正并且小于或等于时钟余量容限;或者 所述第二条件为FPGA软件迭代运行的次数达到所述最大迭代次数。
4.根据权利要求1所述的方法,还包括: 根据FPGA软件在所述迭代运行中的一个或多个时钟余量及其对应一个或多个时钟周期,计算出一个或多个第一条件频率: 从所述第二条件频率和所述一个或多个第一条件频率中选取最大频率值并将其作为FPGA软件可运行到的最高频率。
5.根据权利要求4所述的方法,还包括: 基于预先设定的搜索步长,在以所述最大频率值为中心的预定区域中,进行正向区域搜索并且进行负向区域搜索,分别得到多个正向区域频率和多个负向区域频率,其中,所述预定区域与预先设定的搜索区间有关,所述正向区域搜索和所述负向区域搜索的步数与所述搜索区间和所述搜索步长相关并且被预先设定;从所述最大频率值、所述多个正向区域频率、和所述多个负向区域频率中选取最大频率值并将其作为FPGA软件可运行到的最高频率。
6.根据权利要求5所述的方法,还包括: 为FPGA软件设定初始时钟周期,根据所述初始时钟周期及其对应的时钟余量计算出FPGA软件运行的初始频率; 其中,当所述最大频率值等于所述初始频率时,所述正向区域频率与所述第二条件频率之差的绝对值大于预先设定的频率容差; 其中,当所述最大频率值大于所述初始频率时,所述负向区域频率与所述第二条件频率之差的绝对值大于预先设定的频率容差。
7.根据权利要求1-6之一所述的方法,其中,所述第一条件频率和所述第二条件频率为: I/ (FPGA软件当前运行的时钟周期-FPGA软件的当前时钟余量)。
8.根据权利要求1-6之一所述的方法,其中,所述最大时钟余量为预先设定的最大时钟余量比率与FPGA软件当前的时钟周期的乘积。
【文档编号】G06F11/36GK104346270SQ201310310255
【公开日】2015年2月11日 申请日期:2013年7月23日 优先权日:2013年7月23日
【发明者】李璇, 樊平, 刘明 申请人:京微雅格(北京)科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1