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

Virtex/Virtex-E BlockRAM – 3.1i ソフトウェアで新しく追加された BRAMS_PORTA および BRAMS_PORTB 属性を使用する方法について

説明

キーワード : Virtex, Virtex-E, Block, BlockRAM, RAM, BRAMS_PORTA, FIFO, BRAMS_PORTB, constraint, ブロック, 制約

重要度 : 標準

概要 :
3.1i 以前のバージョンでは、TNM または TNM_NET プロパティがデュアル ポート Virtex ブロック RAM に付けられていたため、ブロック RAM インスタンスは TNM グループに追加されていました。 つまりブロック RAM の両方のポート (BEL) はそのグループに属しており、 TNM グループをトレースすると、TNM プロパティのトレースする入力ピンに関係なく、常にインスタンスがマークされていました。

この場合、2 つのポートが異なる周波数でアクセスされるデュアル ポート ブロック RAM のタイミング指定が困難でした。 3.1i では BRAMS_PORTA と BRAMS_PORTB という 2 つのタイムスペックが新しく追加され、デュアル ポート RAM で異なるタイム グループを指定できるようになりました。

このソリューションではこの 2 つの属性の使用方法および使用の際に発生する可能性のあるエラーについて記述します。

メモ : バージョン 4.1 では、デュアル ポート RAM に付けられた TNM プロパティは適正に解析されます。 UCF 構文例については、(ザイリンクス アンサー #12852) を参照してください。

ソリューション

1

BRAMS_PORTA および BRAMS_PORTB 属性は UCF または NCF ファイルに入力できます。 次に使用方法の例を示します。

1. NET "X" TNM_NET = BRAMS_PORTA groupA;
TNM グループ groupA にはネット X で駆動されるすべての A ポートが含まれます。ネット X がB ポートの入力にトレースされる場合、シングル ポート RAM のエレメントまたは Select RAM のエレメントは groupA には含まれません。

2. NET "X" TNM_NET=BRAMS_PORTB (dob*) groupB;
B ポートの出力のうち最低 1 つでもパターンが dob* の信号を駆動している場合、TNM グループ groupB にネット X で駆動される B ポートが含まれます。

3. INST "Y" TNM=BRAMS_PORTB groupC;
TNM グループ groupC にはインスタンス Y 内のすべての B ポートが含まれます。インスタンス Y がデュアル ポート RAM プリミティブの場合、groupC にはそのインスタンスの B ポートも含まれます。

4. INST "Y" TNM=BRAMS_PORTA (doa*) groupD;
A ポートの出力のうち最低 1 つでもパターンが doa* の信号を駆動している場合、TNM グループ groupD にはインスタンス Y ないの A ポートが含まれます。

5. TIMEGRP groupE = BRAMS_PORTA;
ユーザー グループ groupE にはデザイン内のすべてのブロック RAM エレメントの A ポートが含まれます。 この設定は、BRAMS_PORTA (*) と同等です。

6. TIMEGRP groupF = BRAMS_PORTB (mem/dob*);
ユーザー グループ groupF にはデザイン内でパターンが mem/dob* の信号を駆動するすべての B ポートが含まれます。

7. TIMESPEC TS01 = FROM BRAMS_PORTA TO BRAMS_PORTB (dob*);
仕様 TS01 では A ポートからパターンが dob* の信号を駆動する B ポートまでのパスを制御します。


これらの属性を使用する際には、次のことにも注意してください。

1. 属性 BRAMS_PORTA および BRAMS_PORTB は Virtex ファミリのデュアル ポート RAM にのみ使用でき、 シングル ポート ブロック RAM および、その他のデバイスのデュアル ポート Select RAM には使用できません。 これらのタイプの RAM エレメントには RAMS 属性を使用する必要があります。

2. Constraints Editor では現在のところこの 2 つの属性はサポートされていません。 制約は、UCF または NCF 制約ファイルに入力する必要があります。

3. これらの属性で定義されたパターン グループには RAM ベースのパターン グループにも属するエレメントが含まれる場合があります。 例 :

TIMEGRP ALL_RAMS = RAMS;
TIMEGRP ALL_APORTS = BRAMS_PORTA;

この例では、すべてのデュアル ポート ブロック RAM エレメントの A ポートが ALL_RAMS および ALL_PORTS の両方のグループに属しています。

4. 重要 : ポートは BRAMS_PORT グループで定義される出力を駆動する必要があります。 出力ポートが接続されていない場合、デザインが NGDBuild で解析される際に BRAMS_PORT グループはすべての適用可能な制約から削除されます。

2

これらの属性を使用した際に起こる可能性のあるエラーについて記述します。

1. デュアル ポート ブロック RAM が CLKA と CLKB の 2 つのクロックで制御されており、その 2 つのクロックに対し異なる周期制約がある場合、TRCE は TWR ファイルにブロック RAM のパスを UCF または NCF ファイルに表示されている順番でレポートします。

たとえば、UCF ファイルに次が表示されている場合、

NET clka PERIOD = 20 ns;
NET clkb PERIOD = 15 ns;

ブロック RAM のパスは CLKB のクロック周期制約の次に表示されます。

ブロック RAM のパスが正しいタイムスペックの下に表示されるようにするには、BRAMS_PORTA および BRAMS_PORTB 属性を使用しブロック RAM をグループ化してください。 たとえば、次の構文を使用するとブロック RAM および FF をグループ化できます。

NET clka TNM_NET = BRAMS_PORTA groupA;
NET clka TNM_NET = FFS groupA;
NET clkb TNM_NET = BRAMS_PORTB groupB;
NET clkb TNM_NET = FFS groupB;

TIMESPEC TS01 = PERIOD groupA 20ns;
TIMESPEC TS02 = PERIOD groupB 15ns;

3

これらの 2 つの属性を使用した際に起こる可能性のあるエラーについて記述します。

2. デザインにデュアル ポート RAM とクロックを共有する LUT RAMが含まれる場合、RAM グループから不正なブロック RAM ポートを除外できません。

たとえば、次の TIMEGRP が制約ファイルにあるとします。

NET clka TNM_NET = RAMS all_ram;

この場合、すべての LUT RAM だけでなく、ブロック RAM の両方のポートもグループに含まれてしまいます。 これは、グループが RAM グループのサブグループであるためです。

LUT RAM がデザインに含まれる場合は、ユーザー タイム グループを定義し、制約ファイルで EXCEPT 節を使用してください。 CLKDLL がデザインで使用される場合は、これらのタイム グループを指定するために CLKDLL 出力の全てのネットを使用する必要があります。 これは、ユーザー定義のタイム グループ名が CLKDLL を介して付けることができないためです。

次の例の制約ファイルでは、LUT RAM、FF、およびデュアル ポート ブロック RAM のポート A が同じ TIMEGRP にグループ化されるよう EXCEPT 節が使用されています。

NET "clka" TNM_NET = "FFS:clka_nolutrams";
NET "clka" TNM_NET = "BRAMS_PORTA:clka_nolutrams";
NET "clka" TNM_NET = "RAMS:clka_allrams";

TIMEGRP "clka_lutrams" = "clka_allrams EXCEPT BRAMS_PORTA BRAMS_PORTB";
TIMEGRP "clka" = "clka_nolutrams clka_lutrams";
AR# 9782
作成日 07/25/2000
最終更新日 08/22/2003
ステータス アーカイブ
タイプ 一般