• 发文
  • 评论
  • 微博
  • 空间
  • 微信

如何有效进行FPGA设计优化?

FPGA算法工程师 2023-07-24 11:44 发文

我们在FPGA设计过程中,通常会经历方案设计、模块划分、Coding、仿真、综合实现、调试等阶段,并且常常伴随着debug,对设计中的缺陷进行优化。

如何有效进行设计优化,一直是FPGA设计中绕不过的主题。对于FPGA工程师而言,用什么硬件编程语言做设计不是那么重要,用什么编辑器coding也不是那么重要。最重的是,用最短的时间,将整个设计从方案到调试完成。

对于逻辑设计而言,数字电路、信号处理和接口协议是设计的核心,我们需要从整个系统的设计角度去评估如何实现,资源和性能是否到达较好的折中。

RTL逻辑代码的编写固然重要,做好方案设计同样重要,并且结合EDA工具的编译特性进行设计也很重要。

最近高亚军老师针对Xilinx公司的FPGA设计优化问题,出版了《AMD FPGA设计优化宝典:面向Vivado/VHDL》以及《AMD FPGA设计优化宝典:面向Vivado/SystemVerilog》两本书,以便于针对使用不同的硬件描述语言。VHDL语法严谨,但比较冗长;verilog HDL是大部分工程师比较容易接受的语言,同时SystemVerilog作为Verilog的升级版,受到不少FPGA工程师和数字IC工程师的亲睐。

在设计优化前,我们需要确保设计的逻辑功能是正确的,并且需要确保优化后逻辑功能不受影响,鲁棒性更高。

正如高老师在本书的《前言》中的提到:

“设计收敛是FPGA工程师面临的一个重要课题:既要保证功耗收敛,又要保证时序收敛。两者均与设计自身有很大关系。”

“就代码风格而言,目前已有越来越多的工程师意识到其重要性。往往“良好的代码风格”能起到事半功倍的效果。“良好的代码风格”的一个重要指标就是代码风格与FPGA内部结构相匹配,保证综合工具能够完美地推断出期望结果,而这一点被很多工程师忽略。”

“就工具而言,Vivado的功能越来越强大,自身越来越智能,分析手段越来越多。这就需要工程师深入理解工具在各个阶段所提供的选项含义,能够在工程实践中正确、合理地使用这些选项对应的功能,同时,面对未能收敛的设计,能够找到其中的根本原因。”

在FPGA设计优化中,高老师总结了9大优化领域:

《AMD FPGA设计优化宝典》内容比较全面,介绍的方法多样,方便FPGA工程师在设计过程中采用适当的方法,达到设计优化的目的。

VHDL版和SV版大体上差不多,附带额外的新特性。

以VHDL版为例,重点章节目录如下:

第1章:FPGA技术分析

第2章:优化时钟网络第3章:优化组合逻辑第4章:优化时触发器第5章:优化移位寄存器第6章:优化存储器第7章:优化乘加运算单元第8章:优化状态机第9章:优化扇出第10章:优化布线拥塞

由于FPGA和IC设计讲究实战,只有通过实际检验才能哪些方法适用,我们在大大小小的项目中,会遇到各种各样的场景和问题。大部分问题都具有普遍性,这类问题具备可解决的方法,则借鉴以改善设计。一些特例或者低级错误导致的问题,尽量在设计过程中做好设计规划,养成良好的代码设计风格,并经过技术经验的积累,可以避免。

我们期望,可以通过优化时钟网络、优化设计中的组合逻辑、触发器和移位寄存器改善时序,优化存储器、乘加运算,适应底层逻辑单元以优化设计。

状态机的设计也是设计的重要部分,根据外部变化实现状态转移,并根据特定状态和输入数值来驱动输出,我们需要根据实际情况,选择是否需要设计状态机。我们知道,状态机如果不稳定,或者某些条件不满足导致卡死,很可能整个模块就挂掉。因此,必须设计安全状态机,具备高稳定性。如何优化状态机,高老师也从状态机的代码风格、状态机编码方式等给出了优化思路。

另外,如何优化高扇出,也是在设计中经常遇到的问题。高扇出网线会增加布局布线的压力,很容易导致时序违例。这是因为在布局时过高的扇出使得工具很难将扇出的驱动(源端)与所有的负载(目的端)放置得比较紧凑,从而使有些负载距离驱动比较远,导致线延迟比较大。如何降低扇出,高老师总结如下:

布线拥塞问题,是工程师们经常遇到的老大难问题。随着设计规模的增大和复杂度的提升,布线拥塞成为常见的问题,尤其是在用UltraScale FPGA或UltraScale+FPGA时,布线拥塞往往成为时序收敛的瓶颈,也成为编译时间过长的“罪魁祸首”。笔者在工作项目中,也遇到过类似的情况,由于资源消耗多,系统复杂庞大,在实现阶段遭遇过直接布线失败的情况,通过查看log和实现报告,发现布线拥塞程度达到了6,布线遭遇困难在所难免。

高老师总结了布线拥塞的三种类型:全局拥塞、短线拥塞和长线拥塞。

我们可以通过Vivado工具查看拥塞报告,了解拥塞的类型及其根本原因,专业有助于我们解决布线拥塞问题。对于优化布线拥塞,我们依然可以从设计流程、约束、代码等方向入手,高老师总结缓解布线拥塞流程如下:

更多详细的设计优化方法,参阅《AMD FPGA设计优化宝典》书中的介绍,我们的目标是顺利完成设计,达到可交付的状态。

本文的目的不是为了打广告为作者做宣传卖书,我们以务实的态度,为有需要的工程师提供一种设计优化的解决途径。

由于VHDL和SV版本大同小异,什么语言并不重要,选择一本适合自己开发需要即可。关键是掌握这些优化方法,利用好Vivado设计环境,进而做好设计优化。

期望大家在设计后期,遇到相关的设计问题,翻一下书,多看看UG,说不定很快就解决了,少加班。

---完---

声明:本文为OFweek维科号作者发布,不代表OFweek维科号立场。如有侵权或其他问题,请及时联系我们举报。
2
评论

评论

    相关阅读

    暂无数据

    FPGA算法工程师

    聊无线通信技术,致力于FPGA、...

    举报文章问题

    ×
    • 营销广告
    • 重复、旧闻
    • 格式问题
    • 低俗
    • 标题夸张
    • 与事实不符
    • 疑似抄袭
    • 我有话要说
    确定 取消

    举报评论问题

    ×
    • 淫秽色情
    • 营销广告
    • 恶意攻击谩骂
    • 我要吐槽
    确定 取消

    用户登录×

    请输入用户名/手机/邮箱

    请输入密码