LATENCY和INITIATION_INTERVAL同时约束时HLS决策

LATENCY和INITIATION_INTERVAL同时约束时HLS决策 一、关于Latency和II同时约束1.对同一个设计的II和latency同时约束这两者在很多情况下是存在冲突的。2.对同一个函数或者循环使用HLS调度器来优化HLS调度器内置设置了一些优先级的规则这种规则大多情况和设计者的直觉不一样甚至相反这个是需要注意的。二、HLS调度器内部决策的逻辑当Latency和II优化冲突的时候HLS调度器是如何决策的1.在顶层上约束II的优先级高于Latency的HLS的设计理念是吞吐量优先原则一切的设计优先保证高的吞吐量特别是在流水线设计中保持II比单次计算延迟Latency更重要三、资源共享和流水线depth的矛盾HLS调度器为了让II1,会进行下列优化1.将组合逻辑进行拆分插入大量寄存器使得流水线话从而达到II1的效果2.将运算符unroll展开不共享资源3.每个并行的数据路径或者控制路径分配独立的存储资源上述的操作都是牺牲了latency达到II1的情况。如果II1没办法达到那就会降低II的要求退而求其次。四、两者同时约束需要折中#pragma HLS PIPELINE#pragma HLS LATENCY如果要保证latency那么就放弃pipeline如果要保证II就牺牲Latency当然你也可以两者都约束然后把两个约束的条件都放宽一点进行约束。