高层次综合(HLS)是指自动综合最初用 C、C++或 SystemC 语言描述的数字设计。
工程师之所以对高层次综合如此感兴趣,不仅是因为它能让工程师在较高的抽象层面上工作,
而且还因为它能方便地生成多种设计解决方案。利用 HLS,您能探索各种可能性,分析面
积和性能特点,最终确定一个方案在 FPGA 芯片上实现算法。举例来说,您能探索将存储
器映射到 Block RAM(BRAM)或分布式 RAM 上有什么不同的影响,或者分析回路展开
以及其它回路相关优化有什么效果,而且不必手动生成不同的寄存器传输级(RTL)设计。
您所要做的仅仅是在 C/C++/SystemC 设计中设置相关指令而已。
赛灵思在其最新发布的 Vivado™工具套件中推出了 HLS 工具。Vivado HLS 是
AutoESL 工具的品牌转型重塑,可提供众多技术帮助您优化 C/C++/SystemC 代码以实
现目标性能。这样的 HLS 工具就能帮助您在 FPGA 上快速实现算法,无需借助基于 Verilog
和 VHDL 等硬件描述语言的非常耗时的 RTL 设计方法。
为了帮助用户了解 Vivado HLS 如何工作,我们不妨以矩阵乘法设计为例逐步剖析从
设计描述(C/C++/SystemC)到 FPGA 实现整个端对端综合流程。矩阵乘法在许多应用
中都很常见,并广泛用于图像和视频处理、科学计算和数字通信。本项目中的所有结果均使
用 Vivado HLS 2012.4 生成,搭配使用赛灵思 ISE®软件(14.4 版)进行物理综合和布
局布线。此外,这一流程还采用了 ModelSim 和 GCC-4.2.1-mingw32vc9 进行 RTL 协
同仿真。
图 1 显示了简单的综合流程,从 C/C++/SystemC 设计开始。C/C++/SystemC
testbench 用于验证设计功能的正确性,同时还可用于 RTL 和 C 的协同仿真。协同仿真包
括验证生成的 RTL 设计(.v 或.vhd)功能,这要使用 C/C++/SystemC 测试平台而不是
RTL 测试平台或者采用 e 或 Vera 验证语言编写的测试平台。时钟周期约束设置了设计应该
运行的目标时钟周期。设计将被映射到目标 FPGA 器件——赛灵思 FPGA 上。
C 语言的矩阵乘法
为了充分利用我们的矩阵乘法实例,我们将探索矩阵乘法 C 语言实现方案的各种修订版本,
从而展示它们对综合设计的影响。这一过程将凸显您在使用 HLS 进行原型设计和实际设计
时需要注意的重要问题。我们将跳过创建工程的有关步骤,因为您能很方便地在工具文档中
找到相关参考材料。我们将重点介绍设计和实现等方面。
评论0