语言 |
平台 |
简介 |
开源与授权 |
优势 |
劣势 |
可行性 |
Python |
Python |
直接使用Python语法编译 |
开源 |
不用安装额外的库,语法简单,自己编写生成HDL代码风格,HDL代码重用性强 |
只适合通用性的模块 / 总线接口规范的模块,比如amba读写寄存器、memory等。版本经常更新。 |
Linux自带Python,上手简单,可能性强,推荐和总线相关的模块使用Python |
Myhdl |
比利时ASIC工程师Jan Decaluwe 2009年基于python设计硬件描述库 |
开源 |
可以设计更复杂(复杂的算法实现)的代码,加减乘除,逻辑运算等可以直接转化成HDL |
设计流程复杂,HDL代码可读性性差,需要学习相关库函数,文档少,未见其他公司使用,14年后 |
使用Python PIP安装,安装后按照教程做即可 | |
PyGears |
2022年3月加州大学,在Python的基础上封装成更高层次抽象的HDL库 |
开源 |
可以设计更复杂(复杂的算法实现)的代码,设计方法类似MyHDL |
设计流程复杂,HDL代码可读性性差,需要学习相关库函数,文档少,未见其他公司使用 |
使用Python PIP安装,安装后按照教程做即可 | |
C/C++ |
HLS(C/C++) |
Xilinx Vivado HLS Intel Quartus HLS, 将C/C++转成适合FPGA的HDL代码 |
需要授权 |
HLS 能帮助软件和算法工程师参与、甚至主导芯片或 FPGA 设计 |
HDL代码可读性性差,使用HLS转化的代码比直接用HDL资源多出14%~40%(来自CSDN) 字长分析和优化需要 HLS 的使用者对综合的算法、数据集、C/C++、HDL有深入的了解,这也是限制这种优化方式广泛使用的主要因素 |
需使用安装Vivado和License授权,例程丰富,按照教程使用即可,转化的HDL代码是 FPGA代码风格,需微调成ASIC代码风格 |
System C |
Synopsys 公司, CoWare 公司和Frontier Design公司1999年合作开发 |
OPEN SOURCE LICENSE 2.3 |
同时开发软件和硬件,适合复杂算法和Soc 在RTL设计完成之前开始编写软件驱动程序, 在RTL之后替换成DUT交叉验证,适合大型芯片并行开发 |
对开发人员的要求极高,要求能从系统级,事务级、行为级建模,要求精通SystemC硬件库 |
下载安装安装SystemC的工具即可,仿真tb 同样使用SystemC完成 | |
Matlab |
HDL Coder |
HDL Coder 从 MATLAB® 函数、Simulink® 模型和 Stateflow® 图表生成可移植、可合成的 HDL 代码。 |
需要授权 |
System Generater的增强版,可以生成FPGA/ASIC风格代码规范,同时有ISO26262规范HDL代码的部署方案,适合算法仿真研究 |
生成的HDL代码可读性差 |
安装Matlab HDL Coder工具,具备丰富的例程和视频教程 |
Scala |
SpinalHDL |
Spinal HDL是来自瑞士的Charles Papon发起的新一代开源硬件描述语言 |
开源 |
设计CPU设,模块化设计,语法清晰易懂 |
在CPU 设计上有优势,不适合算法设计,同时需要掌握 Scala语言 |
需先安装Java虚拟机和Scala的开发环境,需学习 Scala语法 |
Chisel |
伯克利大学在设计RSIC-V时设计的高级抽象硬件描述语言 |
开源 |
适合设计CPU设计,具备interface描述功能, 可以实例化模块连接,Chisel代码重用性高,自带lint、CDC检查等 |
在CPU 设计上有优势,不适合算法设计,同时需要掌握 Scala语言 |
需先安装Java虚拟机和Scala的开发环境,需学习 Scala语法 | |
Other |
System Generater |
System Generator是Xilinx公司进行数字信号处理开发的一种设计工具,嵌入了Xilinx的一些模块,可以在MATLAB中的Simulink中进行定点仿真 |
需要授权 |
具备大量的通信相关的IP,适合通信算法研究和在 FPGA实现 |
Simulink中生成转化HDL代码的IP,配置复杂,且容易出错,在14年ISE时代较流行,后逐渐被Vivado HLS取代,HDL代码不易读 |
需安装matlab和Vivado,上手复杂 |
总结: 1)算法研究 : HDL Coder依靠Matlab强大的算法库整体优于HLS;
2)FPGA AI相关算法:Xilinx提供HLS大量库函数,适合AI算法;
3)验证模型: SystemC适合大型Soc芯片并行开发模型、软件驱动;
4)CPU设计: Chisel是SpinalHDL增强版,二者都可以设计module和实例化模块连接,大量基于RSIC-V处理器的基础组件, Chisel更适合CPU设计;
5)IP开发 : PyGears/ Myhdl基于Python易于上手开发小规模IP, Chisel/ SpinalHDL 更适合大规模总线互联IP开发和集成