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

3.1i NGD3VER/NGD2VHDL - シミュレーション ネットリスト内でバス インデックスが常に降順に宣言される

説明

キーワード : Big Endian, Little Endian, testbench, bus, ordering, ビッグ エンディアン, リトル エンディアン, テストベンチ, バス, 順序

重要度 : 標準

概要 :
Alliance 2.1 HDL ネットリスタ、NGD2VHDL、NGD2VER では、バス インデックスをリトル エンディアン形式で書き出します。 これはバス名がどのようにコード化されていても、バスの MSB である最大ビットで常に書き出されるということです。 バス インデックス形式は入力 EDIF または XNF ネットリストに常に反映されるわけではありません。したがって、HDL コードで元々どの形式が使用されていたかはわかりません。

MSB を表す最大ビットでバス名を付けるのが一般的であるため、シミュレーション ネットリストは常にこの形式で書き出されます。

ビッグ エンディアン形式 (最小ビットストリームが MSB) がバス命名に使用された場合、シミュレーション ネットリストは正しく機能します。 ただし、バス インデックスはビッグ エンディアンで宣言されたバスに対して反対に表示されるため、RTL シミュレーションに使用されたテストベンチはタイミング シミュレーションに使用されたテストベンチに一致しません。

ソリューション

1

この問題は、Alliance/Foundation 3.1i リリースで修正されています。

Alliance/Foundation 2.1i またはそれ以前をご使用の場合、ソリューション 2 および 3 を参照してください。

2

XNF ネットリストが平坦なため、バスの順序を抽出するのは困難です。 入力デザインに対する CAE ベンダーの EDIF ネットリストについても同様です。

NGD データベースにはバスの順序を決定する方法がないため、バックエンドのネットリスタで生成されたネットリストには順序を抽出する方法があります。 したがって、バスは次のような形式で表します。

input/output [higher_number:lower_number] bus_name;

ここで問題となるのは、スティミュラスを通過するテストベンチやバスの波形をモニタするテストベンチはデフォルトの順序を認識する必要があることです。 このため、デザインは常に MSB である最大ビットを使用してコード化するようにお勧めします。

VHDL の例では、バスの宣言に DOWNTO 文を常に使用しています。

MY_BUS: in STD_LOGIC_VECTOR(3 DOWNTO 0);

Verilog の場合、バス インデックスで最大ビットを最初に宣言します。

input [3:0] MY_BUS;

これにより、RTL コードと NGD2VER/NGD2VHDL ネットリスタで生成されたネットリストとの間でバス命名インデックス形式が一致します。

3

元の HDL コードをリトル エンディアン形式でバス インデックス変換できない場合、次のような方法があります。

1. テストベンチを RTL 用とタイミング シミュレーション用に分けます。
2. テストベンチで機能を作成し、タイミング シミュレーション用にビッグ エンディアン形式のバス順序を逆にします。これにより、RTL シミュレーションのバス順序が一致します。
AR# 3852
作成日 08/31/2007
最終更新日 06/13/2002
ステータス アーカイブ
タイプ ??????