ug871:High-Level Synthesis introduction

Lab 1: Creating a High-Level Synthesis Project Introduction

Step 1: 创建新工程

重点:在这个实验室里只有一个C设计文件。当有多个C文件要合成时,您必须在此阶段将它们全部添加到项目中。存在于本地目录lab1中的任何头文件都会自动包含在项目中。如果标题位于不同的位置,使用Edit CFLAGS按钮添加标准的gcc/g++搜索路径信息(例如,-I<path_to_header_file_dir>)。

C模拟(和RTL CosSmulation)都在解决方案的子目录中执行。

一个项目可以有多个解决方案,每个解决方案使用不同的目标技术、包、约束和/或综合指令。
在这里插入图片描述
•项目名称出现在资源管理器窗口的顶部行。
•Vivado HLS项目以层次结构的形式排列信息。
•项目包含关于设计源、测试台和解决方案的信息。
•解决方案包含目标技术、设计指令和结果的信息。
•在一个项目中可能有多个解决方案,每个解决方案都是相同源代码的实现。

步骤2:验证C源码

HLS项目的第一步是确认C代码是正确的。这个过程称为C验证或C仿真。
不仅可以验证C源码,Vivado HLS工具可以重用C测试平台来执行RTL的验证。
如果test bench具有前面描述的自检查特性,则在RTL验证期间将自动检查RTL结果。Vivado HLS在RTL验证期间重用测试工作台,并在测试工作台返回0值时确认RTL验证成功。如果main()返回任何其他值,包括没有返回值,则表明RTL验证失败。不需要创建RTL测试工作台。这提供了一种健壮和有效的验证方法。

TIP:如果C simulation失败,在C simulation对话框中选择Launch Debugger选项,编译设计,然后自动切换到Debug透视图。在那里,您可以使用Cdebugger来修复任何问题。

Step 3: High-Level Synthesis

Performance Estimates

In this step, you synthesize the C design into an RTL design and review the synthesis report
Performance Estimates

Performance Estimates

在“性能估计”窗格中,如图2-11所示,时钟周期设置为10 ns。HLS的时钟周期为时钟目标减去时钟不确定性(在本示例中为10.00-1.25 = 8.75 ns)。
  时钟的不确定性确保了(在此阶段)由于布局和布线而导致的未知净延迟有一定的时序裕量。
估计的时钟周期(最坏情况下的延迟)为5.772 ns,满足8.75 ns的时序要求。
在“摘要”部分中:
•Latency:需要34个时钟周期才能输出结果。
•Initiation Interal:在34个时钟之后读取下一组输入。设计没有流水线。此功能(或下一个事务)的下一次执行只能在当前事务完成时开始。
详细信息部分显示:
•此设计中没有子模块。展开“实例”部分将显示层次结构中没有子模块。
•所有等待时间延迟均归因于从名为Shift_Accum_Loop的循环合成的RTL逻辑。该逻辑执行11次(行程计数)。每次执行需要3个时钟周期(迭代延迟),总共33个时钟周期,才能执行从该循环(延迟)合成的逻辑的所有迭代。
•总延迟比循环延迟大一个时钟周期。进入和退出循环需要一个时钟周期(在这种情况下,设计将在循环完成时完成,因此没有退出周期)。

Utilization Estimates

在这里插入图片描述

  • 该设计使用一个作为LUTRAM实现的单一内存(因为它包含少于1024个元素)、3个dsp48和大约200个触发器FF和lut。在这个阶段,设备资源数量是估计值。
  • 资源利用率是估计数,因为RTL合成可能会执行额外的优化,而且这些数字在RTL合成之后可能会改变。
    Utilization Estimates-Expression…

接口

在这里插入图片描述
接口部分显示了由接口综合创建的端口和I / O协议:
•设计具有时钟和复位端口(ap_clk和ap_reset)。 这些与源对象关联:设计本身。
•如源对象fir所示,还有与设计相关的其他端口。综合自动添加了一些块级控制端口:ap_start,ap_done,ap_idle和ap_ready。
•Interface Synthesis教程提供了有关这些端口的更多信息。
•函数输出y现在是一个32位数据端口,带有相关的输出有效信号指示器y_ap_vld。
•函数输入自变量c(数组)已实现为Block RAM接口,具有4位输出地址端口,输出CE端口和32位输入数据端口。
•最后,标量输入参数x被实现为没有I / O协议(ap_none)的数据端口。

RTL验证

高级综合可以重用C测试平台,通过仿真验证RTL
C/RTL CoSimulation
RTL联合仿真的默认选项是使用Vivado模拟器和Verilog RTL执行仿真。要使用不同的模拟器或语言执行验证,请使用C/RTL联合模拟对话框中的选项。
当RTL联合模拟完成时,报告将在信息窗格中自动打开,控制台将显示如图2-14所示的消息。这是在C仿真结束时产生的相同消息。
•C测试平台为RTL设计生成输入向量。
•对RTL设计进行了仿真。
•将RTL的输出向量应用回C测试台中,测试台中的结果检查验证结果是否正确。
•Vivado HLS表明,如果测试工作台返回的值为0,模拟就通过。它是测试台中返回变量的值,仅这一点就表示模拟是否成功。重要的是,测试工作台仅在结果正确时才返回值0。

IP Creation

Export RTL
HLS是将设计打包为IP块,以便与Vivado设计套件中的其他工具一起使用。
Solution- impl -zip

Lab 2: Using the Tcl Command Interface

script.tcl包含创建项目的tcl命令。
directives.tcl tcl包含解决方案的优化。
• The synthesis report :fir_prj\solution1\syn\report.
• The simulation results:“fir_prj\solution\sim\report.
• The output package :fir_prj\solution1\impl\ip.
• The final output RTL :fir_prj\solution1\impl and then Verilog or VHDL.

Lab 3: 使用Solutions 进行设计优化

数组声明为RAM存储 在测试中赋值 coef_t taps[N] = {0,-10,-9,23,56,63,56,23,-9,-10,0,}; 调用 fir(&output,taps,signal);

I/O protocol: ap_vld 带有valid信号

在这里插入图片描述

Conclusion

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值