一.HLS简介
1.HLS是什么
高层次综合(High-level Synthesis)简称HLS,指的是将高层次语言描述的逻辑结构,自动转换成低抽象级语言描述的电路模型的过程。所谓的高层次语言,包括C、C++、SystemC等,通常有着较高的抽象度,并且往往不具有时钟或时序的概念。相比之下,诸如Verilog、VHDL、SystemVerilog等低层次语言,通常用来描述时钟周期精确(cycle-accurate)的寄存器传输级电路模型,这也是当前ASIC或FPGA设计最为普遍使用的电路建模和描述方法。
2、与VHDL/Verilog编程技术有什么关系?
Verilog或VHDL与HLS相比,就好比是几十年前的汇编语言与C语言。RTL设计需要了解VHDL和Verilog等语言,而HLS工具通常使用熟悉的语言,如C / C ++。HLS工具可以处理大多数特定于硬件的实现细节,因此大大降低了软件工程师处理硬件项目的门槛。
二.HLS关键性技术及存在的命题
FPGA是HLS设计的理想平台,因为它们可以快速进行原型设计,具有快速的设计周期并且具有固有的可重新编程性。现代的HLS工具通常包含用于设计目标的广泛的FPGA技术库。
但对于一些简单的逻辑,HLS实现结果较为臃肿。一些简单的逻辑,用HDL实现只需要数十行代码,而HLS的实现结果却相当复杂。
HLS能自动把 C/C++ 之类的高级语言转化成 Verilog/VHDL 之类的底层硬件描述语言(RTL),生成定制硬件在 FPGA 上跑实现加速。这使得不懂硬件的软件工程师也可以拥有玩转硬件的能力。
为了提高设计数字硬件组件的效率,高层综合(HLS)被视为提高设计抽象水平的下一步。但是,HLS工具的结果质量(QoR)往往落后于手动寄存器传输级别(RTL)流程的质量。
HLS 经过十数年的发展,虽然有诸如 AutoPilot、OpenCL SDK 等 FPGA HLS 商业化成功的案例出现,但距离其完全替代人工 RTL 建模还有很长的路要走。
三.HLS入门级实践
初始化环境
打开cmd
切换到D:\intelFPGA\18.1\hls
运行init_hls.bat
1、在桌面上新建一个文件夹存放工程文件,并在工程目录下新建一个test.cpp文件
2.编写代码
3、编译
切换目录到工程
c:
cd C:\Users\AWcloud\Desktop\hls_prj\1_test
输入i++ -march=x86-64 -o mul.exe test.cpp
生成exe
4.运行
二.生成ip核
1.i++ -march=CycloneV -o mul test.cpp -ghdl
运行之后才能生成波形文件
2.仿真
3、打开波形文件
切换目录:
cd C:\Users\AWcloud\Desktop\hls_prj\1_test\mul.prj\verification
打开仿真:
vsim vsim.wlf
4、查看报告
三、导入C语言代码编译之后生成的 components 文件夹路径到quartus
Quartus的Tools–Options–IP Setting–IP Catalog Search Locations菜单下,在Globa IP Search directory栏中指定mul的路径;
参考
https://blog.csdn.net/han422858897/article/details/117106846?utm_source=app&app_version=4.7.1&code=app_1562916241&uLinkId=usr1mkqgl919blen