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

SimPrim、タイミング シミュレーション - タイミング シミュレーションでパルスがフィルタされる (Verilog)

説明

キーワード : X, transport, delay, inertial, SDF, DCM, filtering, 転送, 遅延, フィルタ, 慣性

Verilog のタイミング シミュレーション中にフィルタされてしまうパルスがあります。バッファなどのコンポーネントへの入力は正常であるのに、シミュレータの波形では、出力が変化していません。

ソリューション

この問題は、バックアノテートされたタイミング シミュレーションの信号に見られる問題で、パルス幅が、コンポーネントの入力ポートの遅延より短い場合に発生します。たとえば、5ns 周期のクロック (2.5ns High/2.5ns Low) がバッファを通った場合、このバッファの入力ポートの PORT 遅延または IOPATH 遅延 (SDF 内) が 2.5ns よりも大きいと、波形ウィンドウで出力が変更されないままになります。 たとえば、シミュレーションの開始で出力が X の場合、X のままになります。

5.1i 以降のソフトウェア

5.1i 以降のバージョンでは、この問題は修正されています。5.1i 以降のバージョンでは、PATHPULSE 文を使用して、フィルタされていたパルス値が正確にシミュレーション モデルへアノテートされるようになっています。これにより、PATHPULSE で指定された値を使用するようにシミュレータに命令されるため、IOPATH 遅延よりも小さいパルスがフィルタされるという問題は発生しません。

残念ながら、シミュレータは、SDF ファイルの PORT 遅延を処理する際にこの構文に従いません。ザイリンクス ツールは、SDF ファイルのすべてのネット遅延が PORT 遅延としてアノテートされます。このため、ネット遅延よりも小さいパルスがあると、そのパルスはフィルタされます。この問題が発生する原因は 2 つあります。1 つは、グローバル ネットワークでのクロック配線です。5.1i サービス パック 3 では、クロック遅延が入力 PORT 遅延ではなく、バッファを通った IOPATH 遅延としてアノテートされるため、この問題は修正されています。ほかの原因としては、リセット ラインの配線遅延が多すぎることが挙げられます。

リセット遅延が長すぎるため、またはほかの理由でパルスがフィルタされている場合は、次の手順に従います。

[GeneratePost_Place & Route Simulation Model] を右クリックして、[Properties] -> [Check "Insert Buffers to Prevent Pulse Swallowing"] をクリックします。 モデルを再生成して、シミュレーションを再実行します。この回避策でも、問題が解決しない場合はウェブ ケースを開き、デザインを提出してください。
http://japan.xilinx.com/support/clearexpress/websupport.htm

メモ : この問題は、最新の ISE で Virtex-4 デバイスを使用しているときに発生する可能性があります。

この問題を回避するには、次のシミュレータのオプションを使用します。

メモ : VCS は PORT 遅延または IOPATH 遅延の PATHPULSE 文に従いません。VCS を使用する場合は、次のオプションを使用してください。

5.1i より前のソフトウェア バージョン

この問題を回避するには、シミュレータのオプションを使用し、PORT および IOPATH 遅延を TRANSPORT 遅延として処理し、パルスがフィルタされないようにします。ただし、これらのオプションを使用すると、グリッチも含め、ハードウェアでフィルタされるパルスがすべて伝搬されます。グリッチが伝搬されないようにするには、シミュレータのオプションとパルス リジェクション オプションを併用します。これで、グリッチがシミュレーションでフィルタされます。

Verilog シミュレータに共通して使用されるオプションは、次のとおりです。

(メモ : これらのオプションは、パルスが不正にフィルタされる問題がシミュレーションで確認された場合にのみ使用してください。デフォルトのオプションとしてすべてのデザインに使用しないでください)

MTI の ModelSim :
+transport_int_delays
(このオプションは、すべての IOPATH 遅延を TRANSPORT 遅延に変更します)

+transport_path_delays
(このオプションは、すべての IOPATH 遅延を TRANSPORT 遅延に変更します)

+pulse_e/10
(このオプションは、IOPATH 遅延の 10 で指定されたパーセント以下で、モジュール パス遅延のパーセントよりも +pulse_r/number オプションの引数分大きい幅のパス パルスに対してエラーをフラグし、X を駆動します。)

+pulse_r/10
(このオプションは、幅が IOPATH 遅延の 10% 未満のパルスをフィルタします。)

+pulse_int_e/10
(このオプションは、PORT 遅延のみに適用されるという点を除いて、+pulse_e オプションと同じです。)

+pulse_int_r/10
(このオプションは、PORT 遅延のみに適用されるという点を除いて、+pulse_r オプションと同じです。)

これらのオプションは、ModelSim の VSim コマンド ラインに追加できます。

Cadance の NC-Verilog :
NC-Verilog では、PATH と INTERCONNECT 遅延がデフォルトで TRANSPORT 遅延として処理されます。ただし、パルス制御制限を指定する必要があります。制限値を指定しないと、このシミュレータでは、遅延よりも小さいパルスは通過できません。推奨するオプションは次のとおりです。

+pulse_e/10
(このオプションは、IOPATH 遅延の 10 で指定されたパーセント以下で、モジュール パス遅延のパーセントよりも +pulse_r/number オプションの引数分大きい幅のパス パルスに対してエラーをフラグし、X を駆動します。)

+pulse_r/10
(このオプションは、幅が IOPATH 遅延の 10% 未満のパルスをフィルタします。)

+pulse_int_e/10
(このオプションは、PORT 遅延のみに適用されるという点を除いて、+pulse_e オプションと同じです。)

+pulse_int_r/10
(このオプションは、PORT 遅延のみに適用されるという点を除いて、+pulse_r オプションと同じです。)

>Cadance の NCELAB :
NCELAB では、PATH 遅延と INTERCONNECT 遅延が、デフォルトで TRANSPORT 遅延として処理されます。ただし、パルス制御制限を指定する必要があります。制限値を指定しないと、このシミュレータでは、遅延よりも小さいパルスは通過できません。推奨するオプションは次のとおりです。

-pulse_e/10
(このオプションは、IOPATH 遅延の 10 で指定されたパーセント以下で、モジュール パス遅延のパーセントよりも -pulse_r/number オプションの引数分大きい幅のパス パルスに対してエラーをフラグし、X を駆動します。
)

-pulse_r/10
(このオプションは、幅が IOPATH 遅延の 10% 未満のパルスをフィルタします。)

-pulse_int_e/10
(このオプションは、PORT 遅延のみに適用されるという点を除いて、+pulse_e オプションと同じです。)

-pulse_int_r/10
(このオプションは、PORT 遅延のみに適用されるという点を除いて、+pulse_r オプションと同じです。)

SYNOPSYS VCS :
次のオプションは、VCS のコマンド ラインに追加します。

+transport_int_delays
(このオプションは、すべての IOPATH 遅延を TRANSPORT 遅延に変更します)

+transport_path_delays
(このオプションは、すべての IOPATH 遅延を TRANSPORT 遅延に変更します)

+pulse_e/10
(このオプションは、IOPATH 遅延の 10 で指定されたパーセント以下で、モジュール パス遅延のパーセントよりも +pulse_r/number オプションの引数分大きい幅のパス パルスに対してエラーをフラグし、X を駆動します。)

+pulse_r/10
(このオプションは、幅が IOPATH 遅延の 10% 未満のパルスをフィルタします。)

+pulse_int_e/10
(このオプションは、PORT 遅延のみに適用されるという点を除いて、+pulse_e オプションと同じです。)

+pulse_int_r/10
(このオプションは、PORT 遅延のみに適用されるという点を除いて、+pulse_r オプションと同じです。)

+pulse または +transport オプションの設定方法については、各ベンダーのマニュアルを参照してください。
AR# 9872
日付 02/26/2013
ステータス アクティブ
種類 一般