对于函数,可以使用PIPELINE或DATAFLOW。
对于循环,可以使用PIPELINE(可选rewind)、UNROLL(可选factor)或DATAFLOW。
对于数组,可以使用ARRAY_PARTITION,有block、cyclic、complete三种优化方式。
PIPELINE作用于函数和循环的情况如下,作用于循环时,两次循环之间会存在空档,被称为bubble,rewind可以解决这个问题。
对于latency,有专门的LATENCY约束用于函数和循环,可以指定min和max。
LOOP_MERGE用于合并多个循环
LOOP_FLATTEN用于perfect/semi-perfect循环
在区域中:
数据类型和位宽也是影响硬件效率和资源使用的原因
INLINE用于函数
ALLOCATION用于函数的实例化
ARRAY_MAP和ARRAY_RESHAPE用于数组
FUNCTION_INSTANTIATE用于函数