根据定义设置Top函数名称



是否可以根据定义在项目设置中设置顶部函数的名称?我有一个基于定义使用不同参数和不同顶级函数名称的IP,但我不想每次更改定义时都更改项目设置中的顶级函数名称。我想根据定义更改Top Function的名称,因为生成的IP块的名称与Top Function的名称相同。

例如我有这些定义:

#ifdef CONV1
#define INPUT_LENGTH    32
#define IN_CHAN         2
#define OUT_CHAN        8
#define CONV_FUNC       conv_8x2x5x5
#else
#ifdef CONV2
#define INPUT_LENGTH    28
#define IN_CHAN         8
#define OUT_CHAN        16
#define CONV_FUNC       conv_16x8x5x5
#else
#define INPUT_LENGTH    24
#define IN_CHAN         16
#define OUT_CHAN        20
#define CONV_FUNC       conv_20x16x5x5
#endif
#endif

Top函数定义为:

void CONV_FUNC (...) {
...
}

我定义了例如CONV1, Top函数的名称变为conv_8x2x5x5,因此生成的IP块的名称变为conv_8x2x5x5。如何使合成自动选择正确的Top函数名称?

我不确定我是否理解了问题的细节,但是您可以使用C预处理器来实现您想要的(甚至可以摆脱CONV_FUNC宏):

#include <stdio.h>
#ifdef CONV1
#define INPUT_LENGTH    32
#define IN_CHAN         2
#define OUT_CHAN        8
// #define CONV_FUNC       conv_8x2x5x5
#else
#ifdef CONV2
#define INPUT_LENGTH    28
#define IN_CHAN         8
#define OUT_CHAN        16
// #define CONV_FUNC       conv_16x8x5x5
#else
#define INPUT_LENGTH    24
#define IN_CHAN         16
#define OUT_CHAN        20
// #define CONV_FUNC       conv_20x16x5x5
#endif
#endif
#define MAKE_FUNC_NAME(o, i) conv_##o##x##i##x5x5
#define TOP_FUNC(o, i) MAKE_FUNC_NAME(o, i)
#define TOP TOP_FUNC(OUT_CHAN, IN_CHAN)
int TOP(int x) {
printf("Top function: %sn", __func__);
return x + 1;
}
int main(int argc, char const *argv[]) {
int dummy_ret = TOP(41);
return 0;
}

将打印:

Top function: conv_20x16x5x5

搜索"标记连接";查看更多信息。

最新更新