诚博娱乐平台

首页 > 正文

如何优化时钟频率,优秀工程师一般会这么做

www.howdiceisthat.com2019-08-10
诚博平台

  整个工程最后需要满足一定的时钟频率,时钟频率是衡量一个工程是否编译通过的最直观的指标,系统的最大时钟频率是整个系统中与该时钟相关的逻辑延时最大的路径,减少这个最大延时,才能提高系统的最高频率。从整个工程设计的过程来看,优化系统最大时钟频率,主要有以下两大方式:

  ·一个是设计阶段的优化,主要是设计架构的优化以及设计代码的优化。

  ·另一个方式是利用软件来达到系统的时序优化。

  设计优化

  时钟频率优化最有效的方法是对设计的优化,设计的优化从整个系统的模块设计到代码实现的技巧等都能极有效地提高系统的时钟频率。总的来说,设计方面的优化是使用面积换取速度,在面积与速度中间找到平衡点,找到时钟频率高,资源消耗小的中间点。

  1.使用流水线的方法

  流水线的设计也就是将设计中较大的组合逻辑进行拆分,在这些组合逻辑中间增加触发器,提高系统的处理效率。

  大的组合逻辑往往会成为系统最差路径,通过在这些逻辑中间增加触发器,将原来大的组合逻辑的延时打散分开,降低每块组合逻辑的时延,这样将大大提高整个端到端的时钟频率。

  对于原有的流水线设计,通过增加流水级数,将后级处理或者前级处理中的相关逻辑进行拆分,增加原有的流水级数,减少组合逻辑路径。

  2.平衡组合逻辑

  平衡组合逻辑同样需要对组合逻辑进行调整,也就是将触发器两端的组合逻辑进行平衡。例如,当一触发器前后有组合逻辑云A、B时,如果逻辑云A的延时要远远小于逻辑云B的延时,这种情况下,逻辑延时是比较大的,因此需要进行组合逻辑平衡,也就是将触发器两端的组合逻辑延时调整到相差不大的情况,如图9-19所示,显示了调整前后的逻辑云延时情况。

  615e6daa777c40b50a24983a9f209f30.jpeg

  图9-19 平衡组合逻辑示意

  调整前触发器D前后组合逻辑云A、B相差较大,通过调整触发器在组合云中的位置,将两个逻辑云延时调整到相差较小。

  3.模块复制

  模块复制属于典型的面积换速度的方法,对于系统中扇出较大的信号,采用复制的方法,使得复制的节点分别分布到接近驱动器件走线延时较小的位置,减少整个网络的走线延时,同时提高了芯片的布线特性。

  4.状态机优化

  状态机设计属于在编码设计过程中的一种设计技巧,在状态机设计中,设计方法有很多种,在前面章节中介绍的三段式状态机属于优化较好的一种设计方法。也就是将状态机的几个重要元素进行分开处理,合理地采用组合逻辑进行状态机主状态的跳转状态选择。

  而对于状态机各状态处理的信息,则分别在各个时序逻辑中进行处理,也就是在各时序逻辑中进行各时序逻辑的运算、功能实现。这种三段式的状态机在实现上结构清晰,且软件对于这种实现方法可优化性强。

  网表优化和物理综合

  当工程经过上述优化后发现改变并不明显,系统速率并没有得到提高时,Quartus软件中提供了一些网表优化的设置选项,最简单的就是在综合优化设置中的【Speed】选项,软件会向速度方向进行优化,如图9-21所示可以进行网表优化设置。

  a6f355c01924ed236f0fba72ad006f5e.jpeg

  图9-21 网表优化选项

  有时工程中会有设计人员自己设计的一些单元,这些单元可能是设计人员经过了专门的优化设置的,而软件并不认识这些单元,这样软件可能将这些单元替换为软件自己认为合适的资源,而实际上这是设计人员不愿意看到的。在【Synthesis Netlist Optimizations】中可以通过选择【WYSIWYG】选项,让软件在进行综合时进行各LE的重组优化,如下图9-22所示,设计人员通过该选项让软件按照自己的设计进行优化。

  {!-- PGC_COLUMN --}

  f294f6bd16d8d85dd9c77a79d20e7cdf.jpeg

  图9-22 芯片LE资源优化

  而通过执行【Perform gate-level register retiming】,软件会自动调整触发器两端的组合逻辑云,对两端的组合逻辑云进行重计,使两端的组合逻辑云的延时较接近,提高系统的性能,这对于较大规模组合逻辑非常有用。

  同时还可以通过软件对生成的网表进行优化,也就是软件会根据布局布线中的预期走线延时,来对网表进行优化,这种优化方式更为准确。

  如图9-23所示【Physical Synthesis Optimizations】即物理综合优化,在该栏中通过选择合适的优化方式来优化网表,通过对关键路径的设置,让软件通过减少关键路径的级数来减少路径延迟。

  643e7759ddea09a44a0f2295a710fff8.jpeg

  图9-23 物理综合优化选项

  同时通过选择【Physical synthesis effort】来选择物理优化的努力程度,同样努力程度越高,最后的优化效果相对越好,消耗的时间也会越久。

  使用LogicLock优化

  LogicLock用来将一部分逻辑锁定在一个区域中,用来改进时序。LogicLock区域约束设置比较灵活,约束的大小、位置都可以进行设置。设计人员可以只约束区域块的大小,块的位置设置为浮动的,那么软件会根据情况将整个约束块作为一个整体进行布置,但是如果出现过约束,那么往往会让软件花费很多时间,甚至是直接约束失败。

  在一些设计中,常常有一些模块对频率要求较高,例如DDR控制器,这些模块在设计中需要进行特别的约束处理。在这种情况下,可以通过对该模块做单独的LogicLock约束,使得该模块能优先达到设计要求,然后再进行反标,输出网表文件和约束文件,最后在整个设计中导入该模块的网表文件及约束文件,这样整个系统会保持该模块的状态。针对工程fir_filter,设计人员可以通过如图9-24所示【Chip Planner】查看工程资源分配情况。

  887caadf6393e33d137428d7da1d4a40.jpeg

  图9-24 物理综合优化选项

  工程fir_filter占用的资源通过【Chip Planner】可以得到最终资源在整个芯片中的位置,在【Chip Planner】窗口直接用鼠标进行区域选择,然后在选择的区域单击右键,选择【Regions Commands】,在出现的选项中选择【Properties】,如图9-25所示。

  7d481965cffece087d7cf5bd3e958cec.jpeg

  图9-25 区域选择特性选项

  在图9-25所示的图中点击【Properties】后出现如图9-26所示配置项,选择【Size&Origin】设置锁定区域的状态是固定还是其他,并设置锁定区域高宽。

  7259166f9191a6cfd68ca2225bbb592f.jpeg

  图9-26 区域选择设置项

  在对该区域设置好之后,继续对其余模块进行设置,设置完成之后重新进行编译,观察结果,根据编译报告进行调整,直到达到最好的效果。

达到当天最大量
热门浏览
热门排行榜
热门标签
日期归档