时延最优化设计

时延最优化设计 一、时延优化概述1.使用延时约束vivado hls工具可以对任意作用域使用时延约束。这里的任意作用域说明时延约束Latency指令可以作用于函数循环和region区域甚至可以作用于core操作或者某个表达式或者赋值操作。顶层函数对整个设计的整体时延进行限制。子函数对某个被调用函数的内部延迟进行隔离约束。循环体对 for/while 循环的整体执行时间或流水线 II 进行约束。代码块区域使用 { } 包围的一段顺序代码通过 #pragma HLS region 命名后施加约束。条件分支内部可以对 if 或 else 分支单独设置时延但通常配合区域使用。数据流进程在 #pragma HLS dataflow 区域内的各个任务可以分别指定时延和 II。二、Latency作用在函数上对函数施加latency约束工具会尝试确保函数内的所有元素在指定的范围内完成。使用#pragma HLS latency max10对函数进行约束函数将按照这个约束进行综合设计尽可能达到这种条件。三、Latency作用在循环上关于Latency作用到循环上可以用于单次循环迭代时延Latency也可以用于整个循环迭代的时延Latency。1.对循环单次迭代的latency进行限制和约束Loop_A: for (i0; iN; i) {#pragma HLS latency max10..Loop Body...}2.对循环所有循环迭代的总时延Region_All_Loop_A: {#pragma HLS latency max10Loop_A: for (i0; iN; i){..Loop Body...}}四、关于Latency设计是否满足要求1.如果 Vivado HLS 无法满足最大时延约束它会放宽时延约束并尝试尽可能实现最佳结果。2.如果设置最小时延约束并且 Vivado HLS 生成的设计时延低于所需的最小值它会插入虚拟时钟周期以满足最小时延。