
本书从实践的角度对从FPGA软件开发到FPGA软件测试各阶段的测试思想、方法、活动、案例进行详细描述,并系统介绍FPGA软件测试的各种方法,从不同的角度分析FPGA软件测试的内容及具体要求,通过在各个测试阶段应用不同的测试方法来满足不同的FPGA软件测试需求。本书首先对FPGA器件及软件进行概述,然后介绍FPGA软件开发工具与流程,最后着重论述FPGA软件测试技术(包括FPGA软件测试相关标准和方法、FPGA软件测试工具及使用方法、FPGA软件测试案例与分析)。本书可供FPGA软件测试工程师、对FPGA软件测试技术感兴趣的大学生及电子爱好者等作为学习参考用书。
前言 21世纪是信息化时代,随着AI(Artificial Intelligence,人工智能)+5G(5th Generation Mobile Communication Technology,第五代移动通信技术,简称5G)的应用在全球范围内逐步展开,FPGA(Field Programmable Gate Array,现场可编程门阵列)器件市场的规模也越来越大,年复合增长率超过了10%。 近十年来,国外主要FPGA供应商(Intel和Xilinx等公司)都相继推出了更多的新器件。例如,Xilinx公司自2011年12月推出的Zynq-7000系列SoC FPGA均采用ARM Cortex-A9架构的高阶处理器模块。为契合机器学习算法等需求,2018年3月,Xilinx公司改革传统FPGA架构,又推出了一款超越FPGA功能的突破性产品ACAP(Adaptive Compute Acceleration Platform,自适应计算加速平台)。ACAP为高度集成的多核异构计算平台,采用台积电7nm工艺技术开发,可根据各种应用的需求从硬件层对其进行灵活修改。ACAP的推出契合大数据、AI、机器学习等迅速发展的需求,可在视频转码、数据库、数据压缩、搜索、AI推断、基因组学、机器视觉、计算存储及网络加速等多个领域实现应用。 国产FPGA器件已经经历了从反向设计走向正向设计的时代,目前国产FPGA器件多以中低密度产品为主,逐步拓展中高密度产品,这为国内FPGA软件测试行业的发展带来新的机遇和挑战。国内,深圳国微、紫光同创及上海复旦微电子等厂家都具备生产中高密度FPGA器件的能力。复旦微电子研制出拥有自主知识产权的千万门级FPGA产品,突破了在传统集成电路设计基础上的高可靠性设计,已成功应用于我国卫星导航、载人航天等国家级重大工程项目中。 通过FPGA 器件实现的数字电路系统可以应用在通信、工业控制、航空航天、汽车电子、机器人、人工智能等领域,特别是在航空航天领域越来越重视FPGA 器件的应用。在系统设计中,FPGA 器件可以作为CPU 的协处理器,完成由传统嵌入式CPU 系统软件所完成的控制与计算等功能。在这些领域的实际应用过程中,有大量的FPGA 软件设计越来越复杂,而在设计与实现上均可能会出现不同程度的缺陷或故障,有的甚至会直接导致相关产品的失败;同时,FPGA 在很多领域已经成为不可或缺的部分,且造价昂贵,设计复杂。很多工程师没有进行充分验证就将设计经综合与布局布线后生成目标代码直接下载至可编程逻辑器件内。由于硬件调试环境的复杂性,通过示波器、逻辑分析仪等设备进行探测,往往很难精确定位问题,更为关键的是很难全面发现所有潜在问题,导致反复修改代码和下载调试,从而浪费大量的开发时间并延长了任务周期。甚至是在硬件系统已经完成安装后,依然会发现有缺陷需要打补丁。因此,为了提高FPGA 软件的质量,FPGA 软件测试也越来越受到各方重视。 本书从实践的角度对从FPGA 软件开发到FPGA 软件测试各阶段的测试思想、方法、活动、案例进行详细描述,并系统介绍FPGA 软件测试的各种方法,从不同的角度分析FPGA 软件测试的内容及具体要求,通过在各个测试阶段应用不同的测试方法来满足不同的FPGA 软件测试需求。本书首先对FPGA 器件及软件进行概述,然后介绍FPGA 软件开发工具与流程,最后着重论述FPGA 软件测试技术(包括FPGA 软件测试相关标准 和方法、FPGA 软件测试工具及使用方法、FPGA 软件测试案例与分析)。 本书可供FPGA 软件测试工程师、对FPGA 软件测试技术感兴趣的大学生及电子爱好者等作为学习参考用书。 由于作者水平有限,书中不当与错误之处在所难免,敬请读者和专家提出宝贵意见,以帮助作者不断改进和完善。 作 者 2022 年3 月
第1章 FPGA器件及软件概述 .................................................................................001 1.1 FPGA器件典型内部结构 ...........................................................................003 1.2 FPGA软件设计特点 ...................................................................................006 1.3 FPGA工艺技术原理 ...................................................................................009 1.3.1 基于SRAM工艺技术原理 ...............................................................009 1.3.2 基于反熔丝工艺技术原理 ..............................................................010 1.3.3 基于FLASH工艺技术原理 .............................................................012 1.4 FPGA生产厂家及其产品 ...........................................................................013 1.4.1 Xilinx公司及产品介绍 ....................................................................013 1.4.2 Altera(Intel)公司及产品介绍 .....................................................045 1.4.3 Lattice公司及产品介绍 ...................................................................048 1.4.4 Microchip公司及产品介绍 .............................................................050 1.5 FPGA在各领域的应用 ...............................................................................051 1.5.1 人工智能 ..........................................................................................053 1.5.2 航空航天 ..........................................................................................054 1.5.3 无线通信 ..........................................................................................055 1.5.4 有线通信 ..........................................................................................057 1.5.5 消费电子 ..........................................................................................058 1.5.6 汽车电子 ..........................................................................................058 1.5.7 医疗电子 ..........................................................................................059 1.6 本章小结......................................................................................................060 第2章 FPGA软件开发工具与流程 ......................................................................... 061 2.1 FPGA软件开发工具 ................................................................................... 061 2.1.1 ISE软件 ............................................................................................ 062 2.1.2 Vivado软件 ....................................................................................... 068 2.1.3 Quartus Prime软件 ........................................................................... 072 2.1.4 Lattice Diamond软件 ....................................................................... 074 2.2 FPGA软件开发流程 ................................................................................... 075 2.2.1 FPGA软件需求分析 ........................................................................ 075 2.2.2 功能定义与器件选型 ...................................................................... 076 2.2.3 设计输入 .......................................................................................... 080 2.2.4 设计约束 .......................................................................................... 082 2.2.5 功能仿真 .......................................................................................... 088 2.2.6 逻辑综合 .......................................................................................... 088 2.2.7 布局布线 .......................................................................................... 093 2.2.8 时序仿真 .......................................................................................... 093 2.2.9 配置及固化 ...................................................................................... 094 2.3 本章小结...................................................................................................... 098 第3章 FPGA软件测试相关标准和方法 ................................................................ 099 3.1 FPGA软件测试相关标准 ........................................................................... 099 3.1.1 GJB 9433—2018标准 ..................................................................... 099 3.1.2 GJB 9432—2018标准 ..................................................................... 100 3.1.3 GB/T 37691—2019标准.................................................................. 100 3.1.4 GB/T 37979—2019标准.................................................................. 100 3.2 FPGA软件测试方法 ................................................................................... 101 3.2.1 编码规则检查.................................................................................. 101 3.2.2 跨时钟域分析.................................................................................. 110 3.2.3 静态时序分析.................................................................................. 116 3.2.4 仿真测试.......................................................................................... 135 3.3 本章小结...................................................................................................... 152 第4章 FPGA软件测试工具及使用方法 ................................................................ 153 4.1 编码规则检查工具及使用方法.................................................................. 154 4.1.1 HDL Designer .................................................................................. 156 4.1.2 vLinter .............................................................................................. 158 4.2 静态时序分析工具及使用方法.................................................................. 161 4.2.1 PrimeTime简介 ................................................................................ 161 4.2.2 PrimeTime使用流程 ........................................................................ 163 4.3 跨时钟域分析工具及使用方法.................................................................. 173 4.3.1 跨时钟域分析中的3种问题............................................................ 175 4.3.2 vChecker工具的特点及使用方法 .................................................. 179 4.4 仿真工具及使用方法.................................................................................. 187 4.4.1 Modelsim ......................................................................................... 187 4.4.2 VCS .................................................................................................. 195 4.5 逻辑等效性检查工具及使用方法.............................................................. 198 4.5.1 360 EC-FPGA工具的功能和优点 .................................................. 198 4.5.2 360 EC-FPGA工具的使用方法 ...................................................... 199 4.6 本章小结...................................................................................................... 205 第5章 FPGA软件测试案例与分析 ......................................................................... 207 5.1 代码审查...................................................................................................... 207 5.1.1 代码审查内容.................................................................................. 207 5.1.2 代码审查案例.................................................................................. 213 5.2 代码走查...................................................................................................... 230 5.2.1 代码走查内容.................................................................................. 231 5.2.2 代码走查案例.................................................................................. 231 5.3 逻辑测试...................................................................................................... 237 5.3.1 逻辑测试内容.................................................................................. 237 5.3.2 逻辑测试案例.................................................................................. 238 5.4 静态时序分析.............................................................................................. 252 5.4.1 静态时序分析内容.......................................................................... 252 5.4.2 静态时序分析案例.......................................................................... 252 5.5 跨时钟域分析.............................................................................................. 263 5.5.1 跨时钟域分析内容.......................................................................... 263 5.5.2 跨时钟域分析案例.......................................................................... 263 5.6 功能仿真...................................................................................................... 269 5.6.1 功能仿真内容.................................................................................. 269 5.6.2 功能仿真案例.................................................................................. 270 5.7 逻辑等效性检查.......................................................................................... 302 5.7.1 逻辑等效性检查内容...................................................................... 302 5.7.2 逻辑等效性检查案例...................................................................... 302 5.8 本章小结...................................................................................................... 303 参考文献................................................................................................................................ 305