华为FPGA设计高级技巧Xilinx篇---读书笔记之二如何使用后端工具

2 如何使用后端工具

      本章节主要说明Xilinx的一些后端工具能为我们做什么,在什么情况下我们考虑使用这些工具。至于这些工具具体如何使用,可以看Xilinx提供的相关文件。

2.1 布局布线

      布局布线是干什么的,我不用多说。我只想讲讲几个值得注意的问题:

2.1.1 设计前期(设计方案阶段)对关键电路的处理

      一个设计能否成功,关键是在设计方案阶段相关问题是否考虑完善,其中 一个非常重要的工作是确定关键路径(或者关键模块 关键算法等)能否在芯片中实现,其实现的结果如何(如速度是否满足 面积是否太大等)

      因此,我们要求大家在做方案时,要对所有的可能的关键路径(或关键部分)心中有数,

      而且一定要在正式开始编代码之前,要将这一部分的“评估代码” 完成,并经过布局布线的检验,以考察其可实现性,从而对设计方案的风险有一个确定的认识。

2.1.2 布局布线策略,兼谈如何做第一次布局布线

      一个设计想要成功完成布局布线,必需满足:

      1. 设计规模在芯片容量限制之内

      2. 线资源等资源不能超过芯片现有资源

      3. 时序要满足要求

      据我观察,在进行布局布线时,绝大部分设计者做法是:设定时钟约束及必要的管脚约

束,选定器件,然后开始布局布线。这种做法在小规模设计时,一般可以过。不过,当面对大型设计时,却往往行不通,浪费设计时间。在这种情况下,比较好的做法是:

      1.第一次布线时,不加任何约束,或者放松时钟约束。

      这么做的目的是:确保我所选的器件是符合容量要求的;并快速提供一个参考结果。目前,我们经常遇到布线几十个小时,仍然没有结果的情况。因为没有结果,我们也就无法利用相关的工具进行分析,只能干等;同时,也不知道这么长时间没结果,是布线布不通呢,还是资源不够用。结果,白白浪费时间。

      2.在第一次布线结果分析基础上,适当增加约束条件,如时钟约束。注意,时钟约束要根据上一次分析结果确定是否一步到位。

      约束条件如果设置不好,十分浪费时间,尤其是对规模庞大的设计。因此,我们的约束要恰当好处,即能发现关键路径(不满足约束条件),又能较快的布出一个结果来。

      3.如果布线结果仍不满意,则应当努力找到尽可能多的“放松”约束(TIGMulti-Cycle-Path等),同时,根据实际情况,决定是否要进行设计修改。可以尝试“设计技巧”章节里提到的各种手段。

      需要注意的是:约束文件(如ucf)只是一种微调作用,若要从根本上解决延时问题,应多从设计本身考虑。当时序实现与要求差别很大时,是不能依靠约束来解决问题。

2.1.3 正确看待map之后的资源占用报告

      在使用Virtex系列进行FPGA设计时,经常发现map报告,说资源利用率已经到达100% 然而,真实情况确实如此吗?未必!

      我们知道,slice内部包含LUT, Regsiter和快速进位链及其它快速性能电路。其中,对资源占用影响最深的应当是LUTRegister。 因此。我们在看报告时,应当看LUT占用了多少,Register占用了多少,当然,也应当看Block RAM占用多少,时钟资源占用多少。这些东西,才是我们下决策时要考虑的因素。

      因此,我们在估计一个设计是否能被某个器件装下时,不能笼统地只看Slice使用状况。

2.2 FPGA Editor的作用

      一定要看“版图 ”,了解我们的电路是如何实现的,如资源是否共享,特殊结构(如进位链等)是否利用等。

      请注意,我们现在得出的经验只是基于现有的器件和设计手段,将来情况发生变化时,本文提到的一些所谓技巧可能要失灵,效果反而会更遭。因此,通过FPGA Editor查看电路实现形式,以确保“这就是我所想要的”同时还可检验以前的经验是否还管用。

      一个比较好的习惯:在正式编写代码之前,对于自己不能确定的东西,先写一个“评估代码”经综合,布局布线,再通过FPGA Editor看一看该电路是否就是自己想要的。

      在设计前期 FPGA Editor对关键路径论证非常有帮助。

2.3 FloorPlanner的作用

      FloorPlanner主要是用来人工place设计各部分在芯片中的位置,最终形成位置约束(ucfmfp格式)文件,以指导Place and Route。它即可一个module一个moduleplace,也可一个LUT一个LUTplace; 即可将设计全部place,也可部分place

      通常情况下,我们可以用它来手工place关键路径,以压缩线延时。偶尔,可以尝试手工place一个关键模块或者整个设计,不过,会经常遇到情况反而变得更糟糕的现象。

2.4 TimingAnalyzer的作用

      TimingAnalyzer是一个静态时序分析工具。实际上,在布局布线过程中,布局布线工具已经根据约束文件进行时序分析工作了,并将一些基本的分析结果保存下来,供用户使用。

      不过,布局布线工具只能根据约束文件进行时序分析,不够灵活。当我们想看一看其它路径时序情况,或者了解更多的未满足约束条件的其它路径信息时,可通过TimingAnalyzer进行。

      由于布局布线工具的时序分析报告内容比较简单,当我们想了解更多的信息时,例如分析到底有哪些路径不满足某一约束条件,这些路径的特点是什么等,这时用TimingAnalyzer就比较方便。

      在设计前期对关键电路进行预分析 以及设计后期对关键路径分析时 经常会用到TimingAnalyzer。

华为FPGA设计高级技巧Xilinx篇---读书笔记之二如何使用后端工具

上一篇:手动修改user-agent


下一篇:解决Ubuntu编译内核uImage出现问题“mkimage” command not found - U-Boot images will not be built问题