Vivado HLS中指针作为top函数参数的处理
资料介绍
Vivado HLS中指针作为top函数参数的处理。
本文采用浅显易懂的描述方式,结合具体的c代码例子,详细描述了常用三种指针的设计类型,以及其作为顶层函数参数时,采用不同的编码风格和HLS约束策略,满足设计者对指针作为RTL接口的需求。
Vivado HLS中指针作为top函数参数的处理
Harvest Guo : xilinx
指针作为C语言精华,对于软件设计者比较好理解,但是在xilinx vivado
HLS高级语言综合的设计中,由于其综合后对应的硬件元素难以用软件的概念解释,常常
令程序设计者和VHLS工具使用者头痛。本文采用浅显易懂的描述方式,结合具体的c代码
例子,详细描述了常用三种指针的设计类型,以及其作为顶层函数参数时,采用不同的
编码风格和HLS约束策略,满足设计者对指针作为RTL接口的需求。
1. 1. 基本指针类型
基本指针类型指的是指针没有运算或者没有多次的存取(读写)。指针作为top函数的参
数时,指针综合为wire型或者握手协议类型接口。如下例子1-1:
void pointer_basic (dio_t *d) {
static dio_t acc = 0;
acc += *d;
*d = acc;
}
例子1-1 基本类型指针作为顶层函数参数
在这个例子中,只是简单的读写指针指向的变量值,并没有对指针做偏移或者指针(地
址)运算,其接口综合为线型的RTL接口。
1. 2. 指针运算类型。
指针作为top层函数参数,并且函数中有对指针运算时,我们称之为指针运算类型。指针
运算常常限制指针可能综合的接口类型。如下例中,指针做了偏移运算用于累加数据,
从第二个值开始读出累加,并将每次累加结果写入上一个地址中。
void pointer_arith (dio_t *d) {
static int acc = 0;
int i;
for (i=0;i
acc += *(d+i+1);
*(d+i) = acc;
}
}
例子1……
版权说明:本资料由用户提供并上传,仅用于学习交流;若内容存在侵权,请进行举报,或
联系我们 删除。