HLS概念
HLS是什么
高层次综合(High-level Synthesis)简称 HLS,指的是将高层次语言描述的逻辑结构,自动转换成低抽象级语言描述的电路模型的过程。
所谓的高层次语言,包括 C、C++、SystemC 等,通常有着较高的抽象度,并且往往不具有时钟或时序的概念。相比之下,诸如 Verilog、VHDL、SystemVerilog 等低层次语言,通常用来描述时钟周期精确(cycle-accurate)的寄存器传输级电路模型,这也是当前 ASIC 或 FPGA 设计最为普遍使用的电路建模和描述方法。
通过 HLS 这个过程可以显著加快 FPGA 的设计进程,而不用从底层的 FPGA 语言编起。
HLS 工具完成的工作:
HLS 自动分析一个算法中的潜在并发性
HLS 自动在需要的路径插入寄存器,并自动选择最理想的时钟
HLS 自动产生控制数据在一个路径上的出入方向的逻辑
HLS 自动完成设计部分与系统中的其他接口
HLS 自动映射数据到存储单元中以平衡资源使用与带宽
HLS 自动将程序中计算的部分映射到对应逻辑单元,在实现等效运算的前提下选择有效运算
大多数 HLS 工具需要用户提供功能的规范,交互的描述,一个对接的计算设备,和目标优化方向。而对于 Vivado HLS 来说,用户需要:(Vivado 是赛灵思推出的一种 HLS 工具)
一个用C/C++/System C编写的函数
一个测试平台用于验证结果(C testbench)
一个FPGA开发版
期望的时钟周期
一个简单的实施指导
Vivado HLS 需要进行的步骤:
编译、执行(仿真)、调试相应的 C 语言代码
把 C 算法综合为 RTL 实现,在这个过程中可以使用优化指令
生成综合分析报告并分析设计
验证 RTL 的实现
打包 RTL 成 IP 包
HLS 与 VHDL/Verilog 有什么关系?
在 FPGA 硬件开发上,VHDL/Verilog 与 HLS 相比,就好比是几十年前的汇编语言与现在的 C 语言。
RTL(寄存器传输级别,基于 VHDL/Verilog 语言)逐步发展,但 VLSI 系统的复杂性呈指数级增长,使 RTL 设计和验证过程成为生产力的瓶颈