image frame

星际旅行日志

彼汾一曲,言采其藚.彼其之子,美如玉.美如玉,殊异乎公族.

HLS 基础 (七 如何写高效的C Test Bench)

C Test Bench

是一个用来验证设计程序准确性的虚拟环境。

一般使用C++描述一个Test Bench,用于验证设计程序的正确性。

image-20220508202626114

构成

Driver/Stimulus: 输入激励,给到参考模型和待测模型(DUT)——就是设计的模型C函数。

Reference Model: 参考模型。

DUT(Design Under Test): 待测模型(DUT)——就是设计的模型C函数.

Monitor: (非必须)。

通常认为Reference Model的输出结果是正确的.(所以也称Golden Value

阅读更多...

HLS基础 (十一 接口综合 数组转换为RTL接口)

这里说的数组指的是顶层函数的形参。

Array Argument on the Top-Level Function

  • 默认情况 综合 数组参数为 RAM 端口

  • HLS综合允许指定转换RAM端口为单端口还是双端口。

    • 如果不做出选择,Vivado HLS自动分析设计并选择端口数量来最大化数据率。
    • 如果指定双端口,Vivado HLS分析后发现只需要单端口,最终也会以单端口的形式呈现出来。
  • 还可以使用Directives,获得其他选项

    • 是使用单端口还是双端RAM口
    • 使用FIFO接口
    • 分解成多个离散的接口
阅读更多...

HLS 基础 (一 HLS开发流程)

HLS简介

image-20220512214549181

HLS包含库

image-20220512214632426

image-20220512214646308

Vivado HLS接口

image-20220512214737283

模块控制

image-20220512214826743

image-20220512215727296

image-20220512215742343

​ 我们可以看到,ap_ctrl_none无控制信号,ap_ctrl_hs则多出了startdoneidleready信号,ap_ctrl_chain则在ap_ctrl_hs的基础上多了continue信号。

hls中,ap_ctrl_hs为该接口的默认值,在使用中,需要将start置高,如图:

image-20220512220214844

可以看出,选择默认ap_ctrl_hs,使用起来比较麻烦,所以不需要控制信号的情况下,一般将其指定为ap_ctrl_none

HLS(High-level synthesis)包括以下阶段:

  • 时序安排(Scheduling)

    根据以下内容确定每个时钟周期内发生的操作:

    • 时钟周期或时钟频率的长度;

    • 根据目标设备的定义,完成操作所需的时间;

    • 用户指定的优化指令;

      ​ 如果时钟周期更长或目标是更快的FPGA,则在单个时钟周期内完成更多操作,并且所有操作可能在一个时钟周期内完成。相反,如果时钟周期较短或目标是较慢的FPGA,则高级合成会自动在更多时钟周期上调度操作,并且一些操作可能需要作为多周期资源来实现。

  • 约束(Binding)

    确定实现每个计划操作的硬件资源。为了实现最佳解决方案,高级合成使用有关目标设备的信息。

  • 控制逻辑提取(Control logic extraction)

    提取控制逻辑以创建一个有限状态机(FSM),该状态机对RTL设计中的操作进行排序。

阅读更多...
  • Copyrights © 2022-2024 lk
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信