AR# 15589

|

10.1 State Diagram Editor - ステート割り当て変数を [Node] に設定すると合成で「ERROR: HDLParsers:3312 - Undefined symbol 'state0'」というエラー メッセージが表示される

説明

キーワード : StateCAD, assignment, variable, node, synthesis, HDLParsers, undefined, symbol, state, diagram, 割り当て, 変数, ノード, 合成, 未定義, シンボル, ステート, ダイアグラム, 状態遷移

ステート マシンのステート割り当ては [Variable] ダイアログ ボックスに表示され、デフォルトは [Pin] になっています。ステート割り当て変数オプションを [Node] に変更すると、生成された VHDL のポート リストにも信号リストにもそれらのステートが定義されません。ステートが定義されていないため、合成で次のようなエラー メッセージが表示されます。

"ERROR:HDLParsers:3312 - C:/test/STATE.vhd Line 70. Undefined symbol 'state0'."

ソリューション

このエラーは、競合する 2 つのモードが使用されており、生成された VHDL で両方のモードが部分的に使用されるために発生します。

次のように設定されていると、2 つのモードで競合が発生します。

1. [Options] -> [Configuration] をクリックすると表示される [Configuration] ダイアログ ボックスの [State Assignment] で、[One Hot] を選択し、[Hide] ボックスをオフにしている
2. [Options] -> [Variables] をクリックすると表示される [Variables] ダイアログ ボックスで、各ステートの変数を [Pin] から [Node] に変更してステート変数を内部ノードに設定している

このような場合、StateCAD で不正なコードが生成されます。ステート変数が Node に変更されたために各ステート変数を非表示にしようとしますが、[Configuration] ダイアログ ボックスでは [Hide] がオフになっているため、競合が発生します。

この問題を回避するには、ステート割り当てを Node にする場合は、[Configuration] ダイアログ ボックスの [Hide] をオンにしてください。すると、これらのステートが信号として定義されます。

別の方法として、生成された VHD ファイルを変更して必要な信号宣言を追加する方法もあります。
AR# 15589
日付 12/15/2012
ステータス アーカイブ
種類 一般
People Also Viewed