给自己学习vivado-HLS留下痕迹
---朱磊
第三章C验证
概述
C算法验证是高层次综合(HLS)过程中的一个重要组成部分。在验证花费时间可以确保C算法执行正确操作并建立一个C验证平台。这个C验证平台可以确认结果正确,减少遇到错误时分析设计的时间,并且保证RTL验证可以被自动的执行。
手册包括三个实验练习
•Lab1:查看好的C验证平台等各个方面,以及C验证和C调试器等基本操作。
•Lab2:验证和调试使用任意精度的C类型的C设计。
•Lab3:验证并调试使用任意精度c++类型的C设计。
教程设计说明
您可以从赛灵思网站下载教程设计文件。看到信息获取教程设计。本教程使用的设计文件在教程路径Vivado_HLS_Tutorial\C_Validation。在本教程中使用的实例设计是汉明窗的FIR。有三个版本这样的设计:
•使用原本的C数据类型。
•使用ANSI C的任意精度的数据类型。
•用C+ +任意精度的数据类型。
使用本教程介绍的操作和方法使用在高层次综合的C验证中。本教程没有设计目标。
Lab1:C 验证与调试
概述
这个练习回顾好的C验证平台的各个方面,并解释了高层次综合C调试环境的基本操作。
重要提示:本教程中的数字及命令假定教程数据目录Vivado_HLS_Tutorial被解压缩并放置在路径c:\Vivado_HLS_Tutorial
如果教程数据目录解压缩到不同的位置,或者在Linux系统上,调整一些路径名引用到的位置您选择放置Vivado_HLS_Tutorial目录。
步骤1:创建并打开工程
1.打开Vivado HLS 命令提示符
a.在windows系统中,采用Start>All Programs>Xilinx DesignTools>Vivado2014.2>Vivado HLS>Vivado HLS 2014.2 Command Prompt,如下图
b.在linux系统下,打开新的shell,
2. 用命令提示符窗口,如33,变为lab1 C验证的路径
3. 执行TCL并建立vivado HLSProject,采用的是vivado_hls –f run_hls.tcl 如图33所示
4. 当vivado HLS 完成,在用户界面里打开工程。用vivado_hls –p hamming_window_prj 命令打开,如图34
步骤2:回顾测试平台并运行C仿真
1. 在测试平台文件夹下通过双击hamming_window_test.c打开C测试平台。如图35
查看此测试平台源代码,显示以下良好做法:
•此测试平台:
创建了一组希望的结果,这组结果可以认为这个函数是正确的。
在sw_result数组中存放结果
•测试平台调用此设计,产生结果,结果存储在数组hw_result中。因为综合函数要用到hw_result数组。这个数组保存着RTL生成的结果在后面的设计流程里。
•对实际和希望的数组进行比较。如果比较失败,err_cnt变量的值被设置不为零的值。
•如果比较失败,测试平台发出一个消息发送到控制台,但更重要的是返回比较的结果。如果返回值是零的测试平台验证的结果是好的。
如果RTL自动验证是正确的,则检查结果,并返回一个零值。
您可以执行的C代码和测试平台,以确认代码按预期工作。
2. 点击Run C Simulation 工具栏按钮,打开C仿真对话框,如图36
3. 选择OK 运行C仿真
如图37,当C仿真执行时,下面的动作将发生。
•在控制台窗口中输出仿真结果
•在C代码中一些打印状态在控制台窗口显示,例子说明仿真正确通过。
•在solution子目录csim中,执行C仿真。您可以找到一些输出结果在从C仿真建立的文件夹中,这个文件夹的位于在你能看到输出文件result.dat,采用fprintf命令来写result.dat图37。
因为C仿真未在项目目录下执行,您必须添加一些数据文件到项目中作为C测试平台文件(这样就可以在仿真运行时复制到csim/ build目录下)。这样的文件都包含了,例如,通过在试验台上读取输入数据。
步骤3:运行C调试
C调试时高层次综合的一部分
1. 点击工具栏里Run CSimulation按钮,打开C仿真对话框
2. 选择调试选项,如图38
3. 点击OK,运行仿真。
调试项选择后编译C代码,并打开调试环境,如图39,在开始之前,请注意以下几点:
•图39左上突显的部分,您可以看到视窗由Synthesis转变为Debug。点击视窗按钮,可以随时返回到综合环境
•默认,代码在调试模式下编译。调试选项自动立即打开调试视窗,准备好开始调试。编译代码时不想有调试信息,在C Simulation对话框中选择Optimizing Compile项。
您也可以用单步按钮(如图40),一行一行调试
4. 扩展变量窗口,可以看到sw_results数组
5. 扩展sw_results数组,如图41所示
6. 重复点击Step Into按钮,或者重复按下键盘上F5,直到您看到变量在变量窗口中跟新。
通过这种方式,你可以分析C代码并调试它,如果行为是不正确。如需更详细的分析,右侧是步骤按钮信息跳过(F6),步骤返程(F7)和恢复(F8)按钮。
7. 在窗口中滚动到源代码的第69行。
8. 双击在左边符号,产生了一个断点。(蓝色点),如图42
9. 激活断点选项卡中,也如图42所示,以确认有一个断点设置在第69行。
10. 点击恢复按钮(图42高亮显示)或F8键执行到断点。
11. 多次点击Step Into 按钮,或者(按键F5)进入到hamming_window函数
12. 点击Step Return按钮,或者F7,返回到主函数
13. 点击红色的Terninate按钮,结束调试
终止键变成了实验C仿真按钮。您可以从Debug视图中重新启动调试会话。
14. 退出Vivado HLS界面并返回到命令提示符