HLS设计总结(一)
一、gcd(a,b)算法使用rtl和hls实现有何种区别


ap_uint<32> gcd(ap_uint<32> opA,ap_uint<32> opB){
#pragma HLS INLINE
while(opA != opB){
#pragma HLS PIPELINE
if(opA > opB)
opA = opA - opB;
else
opB = opB - opA;
}
return opA;
}
二、如何写hls代码
1.top function和Testbench分开,放在不同files中
2.如果top function中有多个kernel function,你需要将其组合在top-function中,
并且可综合
3.testbench可以多次调用top-level fucntion,进行多次执行
4.testbench要测试top function多次传输执行,要测试完整
5.一定要进行C/RTL co-simulation联合仿真验证
6.main函数反馈zero才是代表验证通过
三、可综合设计
1.interface接口一般要么用ap_ctrl_chain和ap_ctrl_hs,一般不用ap_ctrl_none
2.ap_ctrl_none作为接口,多实用纯stream接口
四、c to rtl转换

五、关于指针在接口生成port情况说明
关于顶层接口的指针,可能是input,可能是output,也可以是input/output,
这个取决于你代码设计中,指针是左值还是右值,还是你都用了,如果你既
读取了指针,然后又给指针赋值了,那就生成output和input两个端口。
六、vivado hls生成的rtl代码
vivado hls设计的代码最后产生两部分代码:
一部分是datapath部分;一部分是control path,也就是FSM状态机。
更多推荐



所有评论(0)