--共勉:尽自己绵薄之力,构建HLS高层次综合设计生态!
前言、HLS高层次代码风格
1.首先,vivado hls的代码首先必须遵循c/c++/systemc代码风格;
2.其次,在传统代码代码风格的基础下,然后做了一部分剔除后,保留一部分
不具备二义性的内容;
3.vivado hls是传统c/c++/systemc代码风格的阉割版,也就是子集合。
一、函数参数类型
1.scalar标量类型
scalar标量可以作为input数据类型,或者return,但是不能直接作为output数据类型
2.Array数组类型
Array类型可以作为input数据类型;
Array类型可以作为output数据类型;
Array类型可以作为in_out数据类型;
3.Pointer指针类型
Pointer指针类型可以作为input数据类型;
Pointer指针类型可以作为output数据类型;
Pointer指针类型可以作为in_out数据类型;
4.Refrence引用类型
Refrence引用类型可以作为input数据类型;
Refrence引用类型可以作为output数据类型;
Refrence引用类型可以作为in_out数据类型;
5.hls::stream类型(vivado hls最值得称赞的类型)
hls::stream可以作为input类型
hls::stream可以作为output类型
hls::stream不可以作为in_out类型
二、块级接口类型
1.ap_ctrl_hs块级别类型
这个是使用最多的块级别类型,使用占比90%情况;
握手类型,也称为边界约束类型。
2.ap_ctrl_none块级别类型
这个使用占比不多,因为在早期vivado hls这个类型甚至是不可综合的,
因为这种类型如果使用不当,会带来灾难,后续这个类型才支持的,
这个类型是有其存在的价值的,如果是纯数据流接口,可以使用这个接口来进行设计。
3.ap_ctrl_chain类型
这个类型是在大型系统级别的条件下才使用,在大多数情况下是不会使用的。
三、端口类型
1.AMBA的三种类型
axis类型;
axilite类型;
m_axi类型;
2.wire/reg类型
ap_none和ap_stable类型
3.握手类型
ap_ack和ap_vld和ap_ovld类型
ap_hs类型
4.内存访问类型
ap_memory和bram
5.fifo类型
ap_fifo接口
6.总线类型
ap_bus类型
--共勉:尽自己绵薄之力,构建HLS高层次综合设计生态!

1071

被折叠的 条评论
为什么被折叠?



