临邑云速网站建设,佛山北京网站建设公司,qq整人网站怎么做,磁力帝1. 前言
课时2我们介绍了Vitis HLS的设计流程#xff0c;如下图所示#xff1a; 算法或软件的设计和仿真都基于C/C#xff0c;通过HLS平台导出打包好的IP RTL代码#xff0c;最后将该打包的IP加入到主工程使用。 本课时#xff0c;我们通过一个具体的实例#xff0c;演示… 1. 前言
课时2我们介绍了Vitis HLS的设计流程如下图所示 算法或软件的设计和仿真都基于C/C通过HLS平台导出打包好的IP RTL代码最后将该打包的IP加入到主工程使用。 本课时我们通过一个具体的实例演示HLS设计流程。 2. Vitis HLS设计注意事项 在VitisHLS中只有一个函数可以设为顶层综合函数但不能是main()函数。 任何在顶层函数下的子函数都会被综合并且综合后得到代码的函数层级结构可以保留。 有些代码和结构是不可被Vitis HLS综合的包括动态分配存储空间、与操作系统相关操作等。 3. Vitis HLS设计示例
3.1 Vitis HLS工程建立
1新建Vitis HLS工程如下图所示工程名为“HLS_StartDemo” 2指定要综合的顶层函数名称此处我们填写待综合的函数名称为“VectorAdd” 3可以在建立工程的时候暂时不添加Testbench文件。 4创建Solution同时要指定Solution名称模块的时钟周期以及FPGA器件型号。 5添加示例代码示例工程代码主要包含3个文件 其中VectorAdd.h 为头文件VectorAdd.cpp为源文件VectorAdd_tb.cpp为Test Bench。该工程代码主要实现的功能是在一个for循环内对一个数组做加法。顶层函数如下 测试的Testbench部分截图如下 Testbench里既包含了测试数据也包含了正确的输出结果用于做仿真比较。
工程文件加完后工程结构如下图所示 3.2 仿真和综合
1对工程进行仿真在菜单栏中点击“C Simulation”。 得到的仿真输出如下可以看到结果显示“TestPass”。 2仿真通过后对工程进行综合在菜单栏中点击“C Synthesis”。 打开综合报告可以看到C代码被综合成RTL代码后使用的硬件资源评估、性能评估等等。 3综合通过后对工程进行联合仿真在菜单栏中点击“Co-Simulation”。 可以查看到联合仿真后的仿真报告。报告显示了联合仿真的状态为“Pass”并附有一些性能评估报告。 4联合仿真通过后我们可以打开波形查看窗口“Open Wave Viewer…” 更加直观的查看仿真结果是什么样子查看结果时会自动打开Vivadao。 其中“Block-level IO Handshake”端口为握手端口信号 以下为输入输出数组或变量端口端口包含地址总线、使能信号、写使能信号、数据总线等 3.3 创建另一个Solution
1创建新Solution
Vitis HLS给用户提供了非常方便创建新Solution的接口。用户可以点击工具栏上的“New Solution”来给同样的工程代码创建新的Solution。 新的Solution命名为“solution2”同时我们勾选“Copy directives and constraints from solution: solution1”选项即solution2拷贝了solution1原有的directives指令该示例中solution1的directives指令为空。 2给命名为“myloop”的循环添加directive指令。右键“myloop”点击“Insert Directive…” 我们选择了“HLS PIPELINE”指令这些指令的含义将在后面课时着重讲解 3针对“solution2”对工程进行综合生成综合报告。
4在菜单栏中点击“Compare Reports…”比较同样的工程在两个Solutions下综合出来的结果。 5由于在Vitis HLS 2021.1版本中建立新工程solution1时即便没有添加directivesHLS会给solution默认添加“HLS PIPELINE”指令。而我们给solution2添加的directives也为“HLS PIPELINE”指令因此两个Solutions综合编译出来的结果是一致的大家可以尝试添加不同的directives指令然后对比下不同Solutions综合编译出的结果。