FPGA
的设计开发流程主要包括以下步骤:设计输入(
Design Entry
)、仿
真验证
(
Verification
)
、
综合
(
Synthesis
)
及布局布线
(
Place
&
Route
)
和比特流生成。
在简单的
FPGA
设计中,设计输入就是使用硬件描述语言编写
RTL
的过
程,虽然还有一些基于状态图、真值表、流程图、方框图的设计输入方法,现在
基本已经被淘汰。硬件描述语言最重要的是
Verilog
/
SystemVerilog
,其次是
VHDL
。
目前基于
VHDL
的设计越来越少。
SystemVerilog
是
VHDL
和
Verilog
合并后产生的新语言,
是它们的继承和发展。
对于初学者,
学习
SystemVerilog
就够了。设计输入编辑工具有很多,
ModelSim
、
Visual HDL
、
ActiveHDL
、
ISE
、
Quartus II
都有针对
HDL
的编辑工具,也有些人使用支持
Verilog
语
法高亮的
UltraEdit
。
ActiveHDL
提供
HDL
语法高亮显示、自动产生文本结
构、
自动格式化文本等非常有益的文本编辑浏览特性,
在国内很受欢迎。
对于设
计输入,核心的问题是有三个:(
1
)熟练使用
HDL
语言(
2
)准确的把握要完
成的设计功能及其性能指标;(
3
)充分理解常见的设计思想,保证设计功能和
性能指标的恰当表达。
基于
HDL
的设计输入的缺点是效率低下,不能满足复杂设计快速实现的要
求,
其优点是与电路结构紧密联系,
能够清晰的表达跨时终域、
延迟、
逻辑工程
和比特存储功能。近年来,基于
C / SystemC
语言的算法综合和系统级综合技
术发展迅速。
用户只需使用
C
/
SystemC
描述目标设计,
工具就能够自动完成
C
/ SystemC
描述到
RTL
描述的综合。这种新技术在航空、航天、军工等领域广
泛使用,主要用于运算加速。目前比较成功的
C
/
SystemC
描述到
RTL
描述的
综合的软件有
CoDeveloper ( Impulse C )
、
Catapult C
等。我们也在研发一
种称作
ESLFlex
的国产综合软件。
ESLFlex
与
CoDeveloper ( Impulse C )
、
Catapult
C
等的区别是:
ESLFlex
是一种系统级综合工具,在系统级综合领域
有
一
些
独
特
的
创
新
,
从
SystemC
非
定
时
模
型
得
到
异
构
多
核
SoC
,
而
CoDeveloper ( Impulse C )
、
Catapult C
是算法综合工具,综合的结果是一个
算法加速
IP
。
设计输入的另外一个重要技能是学会使用
FPGA
厂商提供的设计库,
里面有
大量可根据应用定制的专门单元,如
FIFO
、
SRAM
、差分
IO
、
DLL
等。
仿真验证是
FPGA
开发的第二个步骤,目的是验证所编写的
HDL
或者高层
次综合得到的
HDL
的功能正确性,即是否与预定的功能相符。这时需要使用
SystemVerilog
或者
SystemC
编写
Testbench
,
以产生
RTL
设计的激励,
并对
RTL
的输出进行分析。简单的设计使用
SystemVerilog
编写
Testbench
即可,
对于复杂的设计以及软硬件结合的设计,使用
SystemC
更加方便。验证的最基
本方法是仿真。
仿真包括功能仿真和时序仿真。
其中,
功能仿真在布局布线之前,
检查设计输入的正确性;
时序仿真在布局布线之后,
主要检查时序的收敛性,
综
合结果与功能仿真的不一致性。
常见的仿真工具有
ModelSim
、
ActiveHDL
等。
仿真工具都支持
SystemVerilog
、
SystemC
和
VHDL
,
也支持这些语言混合在
一起的设计。
对于一些小的设计,
主要是肉眼观察仿真结果是否与预期相符,
对
于一个复杂的大设计,
要首先验证每一个子模块的功能正确性,
对于整个大设计,