最优化指令的优化说明

张开发
2026/5/18 13:11:38 15 分钟阅读
最优化指令的优化说明
一、指令的说明1.优化指定的作用对象和作用范围是有要求的二、接口优化如果对接口应用指令那么vivado hls工具会将这个指令应用到顶层函数顶层函数是包含该接口的作用域的。三、函数优化1.使用函数优化指令的时候vivado hls将指令应用于函数作用域内的所有对象。2.注意的是任意指令的效果只对当前层级的函数有用一般不会对下一个层级的函数有用。3.但是有个例外这个例外是递归选项的指令用于以递归方式展开层级中的所有循环的 PIPELINE 指令。这个是例外四、循环优化Vivado HLS 会将该指令应用于循环作用域内的所有对象。例如如果对循环应用LOOP_MERGE 指令那么 Vivado HLS 会将该指令应用于该循环内的所有子循环但不会将其应用于该循环本身。五、数组优化六、region区域优化对区域应用指令时Vivado HLS 会将该指令应用于区域的整个作用域。区域即以 2 个括号扩起的任意面积。七、depth深度指定1.不允许使用#define宏定义来指定stream流或者axi-full接口或者内部stream流的depth深度#include hls_stream.husing namespace hls;#define STREAM_IN_DEPTH 8void foo (streamint InStream, streamint OutStream) {// Illegal pragma这个是非法的指令depth深度使用define来指定是不被综合的会综合报错#pragma HLS stream depthSTREAM_IN_DEPTH variableInStream// Legal pragma这个是合法的depth深度指定就是显式的指定#pragma HLS stream depth8 variableOutStream}2.如果你想即可综合有不想显示指定depth深度那么你可以使用const来进行指定这个是可以综合的测试是有效的。const int MY_DEPTH1024;#pragma HLS stream variablemy_var depthMY_DEPTH3.可以将#pragma HLS STREAM variableinter1 depth2 dim1这个整条指令作为一个宏参来指定也是可以综合的。#include hls_stream.husing namespace hls;#define PRAGMA_SUB(x) _Pragma (#x)#define PRAGMA_HLS(x) PRAGMA_SUB(x)#define STREAM_IN_DEPTH 8void foo (streamint InStream, streamint OutStream) {// Legal pragmasPRAGMA_HLS(HLS stream depthSTREAM_IN_DEPTH variableInStream)#pragma HLS stream depth8 variableOutStream}这个是可以综合的指定stream的depth的方式

更多文章