华为FPGA设计高级技巧xilinx篇阅读笔记一

华为FPGA设计高级技巧xilinx篇阅读笔记一

  • 前言
    • 综合
    • 器件结构对Coding Style的影响
    • For Example

前言

个人觉得前言部分是这篇的精华,一个FPGA工程师应该具备的基础。总结起来就是,在用HDL语言描述电路时,头脑中应该清楚综合出来是什么样的,映射到芯片后又是什么样子的。因此在进行HDL电路设计时应该了解FPGA内部的硬件结构以及基础资源,掌握与结构相关的设计技巧,具体可以参考博主之前的博客。前言指出目前大多数FPGA工程师的一个弊端,曾经博主也是这样的人。

随着HDL语言,综合工具以及相关工具的推广,广大工程师不再进行繁琐的画原理图,连线等工作,这样虽然提高了工作效率,但同时也带来了弊端。使现在越来越多的工程师不关心自己电路的实现形式,再进行HDL电路设计时,脑袋里没有任何电路的概念,以及自己的设计综合出来是什么样的,映射到芯片后又是什么样的,有没有充分利用FPGA的资源。这样过分依赖综合工具就会造成,遇到问题时,想到的只是还更好的芯片,自己束手无策。导致成本上升,影响开发周期。

随着器件工艺的提升,已经步入深亚微米时代,我们在设计时要更多关注以前很少关注的线延时,因此我们应该提高自己的设计技巧,以及设计方法来面对这些庞大的基于深亚微米技术的电路设计。
很多人称呼HDL代码为程序,但博主觉得这样有些不妥,博主觉等更好的应该是电路。各位同志自行体会。

综合

综合工具通常包括两个过程:

  • Synthesis
  • Optimization
    其中synthesis是把行为级的描述通过一定的算法转化成门级的描述,该过程与设计的工艺库无关,与用户约束无关。
    Optimization 则是把已转化的门级描述在用户的约束下,通过算法映射到相应的工艺库中的器件上,对FPGA而言就是映射到器件的单元结构中。其中设计的代码风格,在综合的第一步就决定了设计的性能
    代码风格:
    • 1 资源共享的应用限制在同一个module里。
    • 2 尽可能将Critical path上所有相关逻辑放在同一个module里
    • 3 Critical path所在的module与其他module分别综合,对critical path 采用速度优先的综合策略,对其他module采用面积优先的策略。
    • 4 尽可能register所有的output。该做法对加约束方便。
    • 5 一个module 的 size不能太大。具体有综合工具而定。
    • 6 一个module尽量只有一个时钟,或整个设计只有一个时钟。

器件结构对Coding Style的影响

第三部分主要讲的是器件结构对Coding Style的影响,这个主要看所用的器件,需要对FPGA底层资源结构有一定的了解。具体可以参考博主之前的博客

只要是在一个LUT内实现的逻辑,不管是几输入,逻辑延时基本一样。
对FPGA设计而言,如果速度想要更快,应当努力减少路径上的LUT的个数,而不是逻辑技术(ASIC则是减少逻辑级数);如果想要面积更小,应当努力减少LUT的个数,而不是逻辑门数。(与ASIC设计完全不一样)

For Example

华为FPGA设计高级技巧xilinx篇阅读笔记一_第1张图片
图a结构前面的2输入与门占用一个LUT,后面的2个三输入或门各占用一个LUT,总共占用3个LUT,LUT级数是2级。
图b结构,虽然增加了一个2输入与门,并且逻辑级数与a一样,也是2级,但它只占用了2个LUT,LUT级数只有1级。
门数增加,逻辑未变,但资源占用减少,速度更快

未完待续…

你可能感兴趣的:(verilog,FPGA)