FPGA20年最有影响力的25个研究成果 – CAD算法篇 - 知乎 (zhihu.com)
设计流程和工具
基于HDL(硬件描述语言)
设计对象是由Verilog HDL或VHDL等HDL描述的RTL(寄存器传输级)级别电路。大体的设计流程包括对RTL描述进行逻辑综合、技术映射、布局布线、生成配置,最后写入FPGA进行系统验证。
逻辑综合和技术映射
-
逻辑综合(logic synthesis)是指从RTL描述生成逻辑电路的过程。逻辑综合的结果是输出网表(netlist)文件,其中包括逻辑门、触发器等逻辑元素的集合以及它们的连接关系。
-
将网表所表示的逻辑映射到哦FPGA实际的逻辑元素的过程称为技术映射(technology mapping)。大部分FPGA采用LUT(查找表)作为可编程元素。
RTL 仿真
RTL仿真是指使用testbench对RTL电路描述进行仿真的过程,目的是确认所设计的电路是否得到了预期输出。
仿真工具一般由仿真用的编译器(对源代码解析生成中间代码提高仿真效率)、仿真引擎(基于中间代码仿真,按时序引发电路运行事件完成处理)和波形查看器等部分组成。
根据考虑参数的精度,分为以下模型:
- 对RTL所描述行为的直接仿真:可以对RTL描述的功能和行为的正确性进行验证
- 对综合后的网表进行仿真:需要在逻辑综合后执行,基于分配的逻辑元素、记忆元素的延迟,对信号变化的时许、动作的延迟等进行确认,也可以根据信号的变化计算功耗
- 考虑了布局布线结果的仿真:在布局布线完成后执行。可以估算布线事件,并在仿真时考虑这些因素。此阶段的仿真所得到的时序分析、耗电分析精度最高,但也最为耗时
布局布线
布局布线(place and route)利用片上逻辑和布线等资源实现网表的过程。首先对逻辑元素进行布局,然后进行网络布线。
配置FPGA
完成布局布线的电路,最终会以FPGA内逻辑元素和布线开关的编程数据的形式保存。这种数据文件的叫法有配置数据、比特流、编程文件等,文件扩展名为bit或sof。
将配置文件写入器件需要使用编程器,具体有下面几种方式:
- 通过JTAG写入:操作简单,断电重置后配置信息就会丢失。
- 通过编程用非易失性存储器写入(板载ROM)
- 通过存储卡或USB存储器写入。
其他
实机功能验证:向FPGA写入配置数据后,可以在实机上进行用户电路的功能验证
优化:一般实现某种功能或行为的电路设计不唯一,逻辑综合、逻辑映射、布局布线等任何阶段存在多个结果。朝着给定目标修改编译条件从而改善结果,叫作优化。
HLS设计
由行为描述生产的电路的技术被称为高层次综合(High Level Synthesis, HLS)或行为综合(behavioral synthesis)
大多数行为综合工具采用C语言,一般吧变量映射为寄存器实例,数组映射为内存实例,函数映射为电路模块实例。顺序执行、分支、循环、函数调用等流程控制用状态机实现。
行为综合:基于C语言的行为级描述生成RTL级描述的过程,称为高层次综合或行为综合。通过数据流图和控制流图决定运行顺序和运行时刻称为调度,将变量和运算映射到寄存器或运算器的过程称为绑定,寄存器或运算器的数据选择器相连,并按照调度进行切换实现的运算称为数据通路。
基于IP的设计方法
通过高效地重复利用成品模块可以减轻开发周期、成本问题。
这种可以通用和重复使用的设计资产被称为IP,也可以叫作IP模块、IP核、IP宏等等。
包含处理器的设计
硬核处理器就是以硬核形式集成在FPGA里的处理器。软核处理器是在FPGA可编程逻辑上实现的处理器。
构建过程中处理器、总线结构、内存以及外围电路都需要进行配置。硬核处理器通常只能设置工作主频,而软核处理器可以对流水线、缓存、运算器、指令等进行详细定制。
然后构建内存并将其连接到总线。
处理器系统运作需要对其进行软件开发。
将基于处理器系统所开发的硬件核软件整合,就可以在FPGA上运行了。