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

2 如何使用后端工具算法

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

2.1 布局布线工具

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

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

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

      所以,咱们要求你们在作方案时,要对全部的可能的关键路径(或关键部分)心中有数,设计

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

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

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

      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。

相关文章
相关标签/搜索