UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 6286

Foundation 4.2i - ABEL のステート マシン代入文でブロック文に {,} を使用した場合、不正な論理式が生成される

説明

キーワード : XABEL, ABEL, .abl, state machine, goto, state equation, incorrect, ステート マシン, 論理式, 不正

重要度 : 標準

概要 :
ステート論理式を閉じるために {,} を使用した場合、代入文が無視されてしまいます。

例 :

state_diagram Sreg
async_reset InitState : CLR;

state InitState: if !(A # B) then InitState;
else if (A) then {goto State1;}
else {goto State2;}
state State1: goto InitState;
state State2: goto InitState;

上記のステート マシン コードで、次の論理式が生成されます。

" State1.D = (InitState.Q);
" State2.D = (InitState.Q);

予期していた論理式は次のとおりです。

" State1.D = (InitState.Q & A);
" State2.D = (InitState.Q & !A & B);

ソリューション

ABEL 構文では、コンパイラが 1 つのステート論理式 (State1 または goto State1) を見つけます。 {,} を使用すると複数の文が含まれてしまうことになるため、ABEL 構文で意味をなしません。

{,} を使用しなかった場合、ABEL コードにより適正な論理式がコンパイルされます。 {,} が含まれていると、文に付けられた条件が無視されます。

ステート マシンが特定のレジスタ セットを使用した次ステートに遷移しなければならない場合、WITH 文を使用する必要があります。

ステート論理式と共に {,} が使用された場合、構文チェッカでエラーまたは警告メッセージが表示されるように修正中です。
AR# 6286
作成日 04/26/1999
最終更新日 08/12/2003
ステータス アーカイブ
タイプ 一般