AMD FPGA设计优化宝典:面向Vivado/VHDL
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

前言

设计收敛是FPGA工程师面临的一个重要课题:既要保证功耗收敛,又要保证时序收敛。两者均与设计自身有很大关系。笔者在多年的工程实践和技术支持过程中发现,很多设计未能收敛都与代码风格或对Vivado工具的理解有很大关系。

就代码风格而言,目前已有越来越多的工程师意识到其重要性。往往“良好的代码风格”能起到事半功倍的效果。“良好的代码风格”的一个重要指标就是代码风格与FPGA内部结构相匹配,保证综合工具能够完美地推断出期望结果,而这一点被很多工程师忽略。例如,7系列FPGA内部的DSP48E1是不支持异步复位的,如果乘法器使用了异步复位,那么相应的触发器是无法被吸收到DSP48E1内部的,不仅消耗了额外的触发器(SLICE内部的触发器),还会导致时序恶化。鉴于此,本书以FPGA内部结构为基础,以VHDL语言为描述方式,结合大量实际案例,力求帮助读者深入理解两者之间的对应关系。Vivado从2015.3版本开始支持VHDL-2008,随着版本的不断升级,对VHDL-2008的支持力度也不断增大,并引入VHDL-2008的更多特性。相比于VHDL-93版本和VHDL-87版本,VHDL-2008版本更灵活、更易用。因此,本书采用VHDL-2008版本,同时列出所用到的VHDL-2008新特性。

就工具而言,Vivado的功能越来越强大,自身越来越智能,分析手段越来越多。这就需要工程师深入理解工具在各个阶段所提供的选项含义,能够在工程实践中正确、合理地使用这些选项对应的功能,同时,面对未能收敛的设计,能够找到其中的根本原因。为此,本书也介绍了什么是有缺陷的设计、如何借助Tcl脚本找到这些缺陷,以及如何解决这些缺陷。

全书共10章。第1章从FPGA发展历程的角度对FPGA技术进行了分析。第2章以时钟网络架构为基础阐述了优化时钟网络的经典方法,涉及改善时钟偏移和降低时钟抖动。第3章~第7章分别介绍了优化组合逻辑、优化触发器、优化移位寄存器、优化存储器和优化乘加运算单元的经典方法。每章第1节均重点介绍优化对象的基本结构,包含目前主流的FPGA(7系列FPGA、UltraScale/UltraScale+FPGA和Versal ACAP)。每章最后1节均重点介绍如何发现缺陷单元及如何处理这些缺陷。第8章介绍了优化状态机的经典方法,包括状态机的“两段式”和“三段式”描述方法、状态机编码方式、Vivado提供的状态机编码选项等。第9章阐述了优化扇出的经典方法。第10章阐述了优化布线拥塞的经典方法。这两章以Vivado工具为核心,给出了相应的Tcl脚本。

全书既阐述了FPGA内部结构,又阐述了RTL代码风格(采用VHDL语言);既介绍了以Vivado图形界面为主的分析手段,又介绍了以Tcl脚本为主的分析手段。力求帮助读者从设计输入和设计分析两个维度理解设计。

为便于读者阅读和理解书中内容,本书给出了469张图片、85个表格、189个VHDL代码片段、56个Tcl脚本片段、65条设计规则和29个应用案例。同时,为加深印象,本书在每章结束之后还列出一些常见问题留给读者思考,共有101个问题。

FPGA设计收敛不是一蹴而就的,既需要依靠大脑智慧,又需要工具协同,两者缺一不可。希望您阅读本书之后对FPGA架构和RTL代码风格的理解能够更上一层楼。

您在阅读本书的过程中,如果发现书中内容有任何不当之处,或对本书内容有任何建议或意见,都可发送邮件到laurengao@126.com,不胜感激。

如果需要获取代码示例,可关注编著者微信公众号“FPGA技术驿站”,回复关键字“设计优化VHDL”即可。

高亚军

2022/9/12