HLS - intel HLS 指令使用指南

简介: HLS - intel HLS 指令使用指南

写在前面


本文主要介绍关于intel的HLS工具的相关指令的使用方法。

仿真设置


正常默认方式仿真,对模拟器函数调用是按照顺序的,前面的调用没有返回前,不会发生新的调用。

ihc_hls_enqueue(void retptr, void funcptr, /function arguments/)**

参数:

retptr:返回值。

funcptr:将要调用的HLS component。

将流水线组件(具有非 void 返回类型)调用排入队列。

ihc_hls_enqueue_noret (< function name >,< function arguments >)

将流水线组件(具有 void 返回类型)调用排入队列。

ihc_hls_component_run_all(function name)

以流水线并行方式在 HDL 模拟器中模拟所有排队的组件调用

int ihc_hls_sim_reset(void)

在仿真期间向组件发送一个复位信号,如果执行了复位则返回 1。 ihc_hls_set_component _wait_cycle (< function name >, < wait cycle >)

告诉仿真在一个完成信号后继续运行多个周期在检测到的函数完成后。

Local Memory


hls_register | hls_memory

将变量实现为寄存器 | RAM 块。

hls_singlepump | hls_doublepump

强制设置为单口/双口 RAM 块。

hls_numbanks(N)

强制内存系统有 N 个bank。

hls_bankwidth(N)

强制内存系统有 N 字节宽的bank。

hls_bankbits(b0, b1, … bn)

将内存系统分成 2n+1 个 bank,用 {b0, b1, …, bn} 形成 bank-select 位。

hls_numports_readonly_wri teonly(M, N)

强制内存有 M 个读端口和 N 写入端口。

hls_simple_dual_port_memory

相当于 hls_singlepump 和 hls_numports_readonly_writ eonly(1,1) 宏的便利属性。

hls_merge(“<mem_name>”, “depth”) | hls_merge(“<mem_name>”, “width”)

将两个或多个局部变量按深度合并到单个内存系统中 | 宽度方式。

hls_init_on_reset | hls_init_on_powerup

当组件复位信号置位时强制复位静态变量 | 在 FPGA 被编程时上电。

hls_memory_impl (“BLOCK_RAM|MLAB”)

将变量或数组实现为块 RAM 或 MLAB。

hls_max_concurrency(N)

允许同时循环迭代时指定内存的最大私有副本数。

Loop Pragmas


#pragma ii < N >

将循环启动间隔设置为 N。

#pragma ivdep safelen(< N >) array(array_name)

忽略最多 N 次迭代的迭代之间的本地内存依赖性。

#pragma loop_coalesce < N >

将 N 级嵌套循环转换为单循环。

#pragma unroll < N >

将循环展开为 N 个副本。

#pragma max_concurrency < N >

指定可以同时执行的循环的迭代次数。

#pragma speculated_iterations < N >

指定循环退出条件可以用来计算的时钟周期数。

组件调用接口


组件调用接口适用于整个组件。

hls_avalon_streaming_component(默认)

组件调用接口(start、busy、done、stall、return)作为通道实现。

hls_avalon_slave_component

组件调用接口(start、busy、done、stall、return)在控制/状态寄存器(CSR)中实现为带有 irq_done 信号的 Avalon-MM 从接口。

hls_always_run_component

移除组件调用接口。

hls_stall_free_return Stall

stall信号被移除

组件


hls_max_concurrency (< N >)

指定可以同时进入组件的线程数。

hls_component_ii (< N >)

强制组件具有指定的II。 会对 fMAX 产生不利影响。

hls_scheduler_target_fmax_mhz (< target fMAX >)

指定目标时钟频率(以 MHz 为单位)。

Parameter Interface


hls_conduit_argument(default)

参数与组件调用接口同步。

hls_avalon_slave_register _argument

参数在组件 CSR 中,可以通过 Avalon-MM 从接口写入。与组件调用接口同步。

hls_avalon_slave_memory_argument(N)

可以通过 Avalon-MM 从接口读取和写入的本地存储器。

hls_stable_argument

当组件中有实时数据时参数不会改变。

Streaming Interface


接口声明


ihc::stream_in<datatype, / template arguments />

组件的流输入接口。

ihc::stream_out<datatype, / template arguments />

来自组件的流输出接口。

参数说明


ihc::buffer :输入数据的 FIFO 容量。

ihc::readylatency : 就绪信号被置为无效和输入流无法再接受新输入之间的周期数。

ihc::bitsPerSymbol :如何将数据分解为符号。

ihc::usesPackets :添加 startofpacket 和 endofpacket 信号 。

ihc::usesValid :添加 有效信号 。

ihc::usesReady :添加 就绪信号。

流接口函数调用 API


T read() | void write(T data)

组件中使用的阻塞调用。

T read(bool& sop, bool& eop) | void write(T data, bool sop, bool eop)

在组件中使用带有sidehand的信号组件。

T tryRead(bool &success) | bool tryWrite(T data)

要在组件中使用的非阻塞调用。

T tryRead(bool& success, bool& sop, bool& eop) | bool tryWrite(T data, bool sop, bool eop)

带有要在组件中使用的边带信号的非阻塞调用。

Memory-Mapped Interface


接口声明


ihc::mm_master<datatype, / template arguments / >

来自组件的 Avalon-MM 主接口。

参数说明


ihc::dwidth :以位为单位的数据总线宽度。

ihc::awidth :以位为单位的地址总线宽度。

ihc::aspace :接口的地址空间。

ihc::latency :从读取命令退出组件到外部存储器返回有效读取时的保证延迟 数据。延迟值:将值设置为 0。

ihc::maxburst :单个事务中的最大传输次数 ihc::align 基指针地址的字节对齐

**ihc::readwrite_mode **:接口的端口方向 。

ihc::waitrequest : 当从机无法响应读或写请求时,公开等待请求信号。

Memory-Mapped Interface API


getInterfaceAtIndex(int index)

索引到 mm_master 接口对象的测试函数。

任务系统


ihc::launch

将函数标记为任务,并异步启动任务函数。

ihc::collect

同步组件中指定任务函数的完成。

ihc::stream

启用不同任务函数之间的流式通信。

ihc::stream 模板参数


ihc::buffer

输入数据的 FIFO 容量。

ihc::usesPackets

添加 startofpacket 和 endofpacket 信号。


目录
相关文章
|
机器学习/深度学习 人工智能 监控
Intel全新加速指令AMX技术介绍&eBPF在低版本内核如何跑起来?今天3点见 | 第45-46期
今天下午3点,一起来了解 AMX 的技术细节、内核及龙蜥社区的支持情况,以及如何利用 AMX 进行基于 CPU 的 AI 优化。
Intel全新加速指令AMX技术介绍&eBPF在低版本内核如何跑起来?今天3点见 | 第45-46期
|
SQL 监控 关系型数据库
Intel PAUSE指令变化如何影响MySQL的性能
x86、arm指令都很多,无论是应用程序员还是数据库内核研发大多时候都不需要对这些指令深入理解,但是 Pause 指令和数据库操作太紧密了,本文通过一次非常有趣的性能优化来引入对 Pause 指令的理解,期望可以事半功倍地搞清楚 CPU指令集是如何影响你的程序的。
Intel PAUSE指令变化如何影响MySQL的性能
|
Android开发
【Android 逆向】x86 汇编 ( 参考资料 | Intel 官方的文档 | x86 汇编中文文档 | 汇编指令查询器 )
【Android 逆向】x86 汇编 ( 参考资料 | Intel 官方的文档 | x86 汇编中文文档 | 汇编指令查询器 )
255 0
【Android 逆向】x86 汇编 ( 参考资料 | Intel 官方的文档 | x86 汇编中文文档 | 汇编指令查询器 )
|
编译器 流计算 计算机视觉
Intel汇编指令集SSE4
1、引言 Intel SSE 4指令集是当前使用广泛的汇编指令集,最初在45nm的Intel 64位处理器和AMD的K10处理器中提供。SSE4的含义是Streaming SIMD Extension 4,SIMD即单指令多数据技术(Single Instruction Multiple Data)。
1855 0
|
存储 弹性计算 缓存
阿里云g8i服务器CPU采用2.7 GHz主频的Intel Xeon(Sapphire Rapids) Platinum 8475B处理器
阿里云g8i服务器CPU采用2.7 GHz主频的Intel Xeon(Sapphire Rapids) Platinum 8475B处理器,阿里云服务器ECS通用型实例规格族g8i采用2.7 GHz主频的Intel Xeon(Sapphire Rapids) Platinum 8475B处理器,3.2 GHz睿频,g8i实例采用阿里云全新CIPU架构,可提供稳定的算力输出、更强劲的I/O引擎以及芯片级的安全加固。阿里云百科分享阿里云服务器ECS通用型g8i实例CPU计算性能、存储、网络、安全、不同CPU内存配置性能参数及使用场景
552 0
阿里云g8i服务器CPU采用2.7 GHz主频的Intel Xeon(Sapphire Rapids) Platinum 8475B处理器
|
存储 弹性计算 编解码
阿里云ECS服务器g7、c7和r7处理器CPU采用Intel Xeon(Ice Lake) Platinum 8369B
阿里云第七代云服务器ECS计算型c7、通用型g7和内存型r7实例,CPU处理器采用2.7 GHz主频的Intel Xeon(Ice Lake) Platinum 8369B,全核睿频3.5 GHz,计算性能稳定。c7、g7和r7区别CPU内存比,阿里云服务器网来详细说下阿里云第七代云服务器c7、g7和r7实例CPU性能评测:
328 0
|
存储 弹性计算 缓存
阿里云Intel Xeon(Sapphire Rapids) Platinum 8475B处理器CPU
阿里云Intel Xeon(Sapphire Rapids) Platinum 8475B处理器CPU,阿里云服务器ECS通用型实例规格族g8i采用2.7 GHz主频的Intel Xeon(Sapphire Rapids) Platinum 8475B处理器,3.2 GHz睿频,g8i实例采用阿里云全新CIPU架构,可提供稳定的算力输出、更强劲的I/O引擎以及芯片级的安全加固
1206 0

热门文章

最新文章

相关课程

更多