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# 16616

10.1 ステート ダイアグラム エディタ - ブロッキング/非ブロッキング文が Verilog ステート マシン コードで最適に使用されない

説明

キーワード : Statecad, Verilog, Blocking, Non-blocking, ブロッキング, 非ブロッキング

StateCAD で生成された Verilog ステート マシン コードが最適でない場合があります。

次は、StateCAD からの最適でないコード出力の一例です。

always @(posedge CLK)
begin
cnt1 = next_cnt1;
end

always @(posedge CLK)
begin
cnt0 = next_cnt0;
end

上記のコードは、各クロック エッジに次を割り当てます。
cnt1 = next_cnt1
cnt0 = next_cnt0
非ブロッキング文を使用した場合、必要なのは次のコードのみです。

always @(posedge CLK)
begin
cnt1 <= next_cnt1;
cnt0 <= next_cnt0;
end

ソリューション

このコードは最適ではありませんが、機能的には正しく、実際のデバイス上でパフォーマンスの問題を引き起こすことはありません。StateCAD のコード ジェネレータのこの箇所を修正するリスクを考慮し、この機能はこのままの状態に残すことになりました。

ビヘイビア シミュレーションで、レース コンディションが発生する可能性があることに注意してください。1 つのプロセスの代わりに複数のプロセスが使用されている場合、シミュレータでどのプロセスを最初に実行するかを決定する必要があります。値がほかのプロセスで割り当てられる値に依存している場合、プロセスの処理順により、異なるシミュレーション結果が得られる場合があります。


AR# 16616
日付 12/15/2012
ステータス アーカイブ
種類 一般
このページをブックマークに追加