一、HLS/VHDL/Verilog
1.1 HLS简介
高层次综合(High-level Synthesis)简称HLS,指的是将高层次语言描述的逻辑结构,自动转换成低抽象级语言描述的电路模型的过程。 所谓的高层次语言,包括C、C++、SystemC等,通常有着较高的抽象度,并且往往不具有时钟或时序的概念。相比之下,诸如Verilog、VHDL、SystemVerilog等低层次语言,通常用来描述时钟周期精确(cycle-accurate)的寄存器传输级电路模型,这也是当前ASIC或FPGA设计最为普遍使用的电路建模和描述方法。
HLS特点
- 使用高层语言对系统建模,可以将代码密度压缩7到10倍
- 高层语言能促进IP重用的效率
- HLS能帮助软件和算法工程师参与、甚至主导芯片或FPGA设计
1.2 VHDL/Verilog 简介
Verilog HDL和VHDL是世界上最流行的两种硬件描述语言,使用它们开发FPGA的流程如下
- 文本编辑
- 功能仿真
- 逻辑综合
- 布局布线
- 时序仿真
- 编程下载
1.3 总结
- 为了提高设计数字硬件组件的效率,高层综合(HLS)被视为提高设计抽象水平的下一步。但是,HLS工具的结果质量(QoR)往往落后于手动寄存器传输级别(RTL)流程的质量。
- 平均而言,RTL流程的QoR仍然优于最新的HLS工具。但是,使用HLS工具的平均开发时间仅为RTL流程的三分之一,并且设计人员使用HLS可以获得的生产率是其四倍以上。
- HLS当前是用于快速原型设计和较短上市时间的可行选择。
二、HLS技术难点
所谓的高层次综合(HLS)就是将C/C++/System C描述的设计意图, “翻译“成用Verilog/System Verilog描述的RTL,多应用于运算逻辑主导的设计。
这就产生了几个问题:
- HLS输入并不是软件语言。相反,它是对硬件的更抽象的描述。大多数HLS工具可以使用C语言、SystemC或者C++作为输入语言。
- 从技术上来说,C++是一种“语言”,但从C/C++语言生成硬件电路模型来看,它也意味着算法的抽象级别。
- 原始的C代码经常会被修改
使用HLS将软件代码综合成实际的硬件电路时,存在几个基本挑战
- 代码必须由HLS引擎合成,也就是说,必须将代码编写或重构为硬件可综合的格式,其对习惯于使用标准C/C++编写的软件工程师而言非常重要。
- HLS编码的可综合性准则很重要,工程师必须熟悉这些涵盖数百页文档的准则。
- 一旦代码可综合,还需要一定程度的底层硬件意识。