时间:2024-07-18 来源:网络搜集 关于我们 0
我们在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,说不定很快就解决了,少加班。---完---更多关于5G、卫星通信、FPGA、数字IC、通信算法等内容,可关注微信公众号【FPGA算法工程师】