AR# 45780

AutoESL - #define を含むコードで AutoESL でないコンパイラでは問題がないのに構文エラーが発生する

説明

ap_int や ap_private などのライブラリを含める前に変数を定義すると構文エラーが発生する可能性があります。

次に例を示します。

// wrong place to define N
#define N 42
#include <ap_int.h>
// good place to define N
//#define N 42
void define_N(ap_int<10> *a, ap_int<11> b) {
*a = b + N;
}

When "N" is declared before ap_int, following errors will be issued.
c:/Xilinx/2011.4/AutoESL/include/etc/ap_private.h:1687:33: error: expected ','
or '...' before numeric constant
c:/Xilinx/2011.4/AutoESL/include/etc/ap_private.h:2782:33: error: expected ','
or '...' before numeric constant
c:/Xilinx/2011.4/AutoESL/include/etc/ap_private.h: In function 'bool
llvm::ap_private_ops::isIntN(uint32_t)':
c:/Xilinx/2011.4/AutoESL/include/etc/ap_private.h:2783:16: error: 'APIVal' was
not declared in this scope
c:/Xilinx/2011.4/AutoESL/include/etc/ap_private.h: At global scope:
c:/Xilinx/2011.4/AutoESL/include/etc/ap_private.h:3154:29: error: expected ','
or '...' before numeric constant
c:/Xilinx/2011.4/AutoESL/include/etc/ap_private.h: In function 'bool
llvm::isIntN(uint32_t)':
c:/Xilinx/2011.4/AutoESL/include/etc/ap_private.h:3155:12: error: 'APIVal' was
not declared in this scope {0} Field Help

ソリューション

AutoESL ツール 2011.4.2 およびそれ以前のバージョンの場合は、ap_int を含めた後に N を定義します。

この問題は、AutoESL 2012.1 で修正されています。

AR# 45780
日付 09/09/2014
ステータス アクティブ
種類 既知の問題
ツール