1. 作成されるライブラリの種類
このG/A RAMライブラリ作成ツールを使うと、以下のライブラリを作成することができます。
(1) RTLシミュレーション用ライブラリ (_rtl.lib, _rtl.vhd)
弊社ゲートアレイ同期RAMのRTLシミュレーション用ライブラリです。
ここで、Verilog記述用のファイル名は、"(RAMセル名)_rtl.lib"で、VHDL記述用のファイル名は、"(RAMセル名)_rtl.vhd"です。
(2) バス記述用ラッパーの例 (_wrp.v, _wrp.vhdS)
上記(1)のRAMモデルは、入出力ピンがバス記述になっておらず、接続に手間がかかります。そこで、それらのピンをバス記述へ変換するためのモジュールです。ただし、これを用いると、階層が1つ増えます。そして、このモジュールは、必ずしも使用する必要はありませんが、このモジュールを使用した場合は、お客様のRTL記述ファイルと一緒に、このファイルもお送りください。
ここで、このモジュール名は、"(RAMセル名)_wrp"になります。
また、Verilog記述用のファイル名は、"(RAMセル名)_wrp.v"で、VHDL記述用のファイル名は、"(RAMセル名)_wrp.vhd"です。
(3) 論理合成用モジュール(S1L50000シリーズのみ)
S1L50000シリーズの同期RAMは、非同期RAMにd-FFなどの回路を付加したソフトマクロです。そして、そのソフトマクロは、このモジュールを論理合成することで実現されます。つきましては、論理合成される場合は、このドキュメントの 3-2章をご参照くださり、お客様のRTLと一緒に、このファイルも合成してください。
また、弊社で論理合成させていただく場合は、お客様のRTL記述ファイルと一緒に、このファイルもお送りください。
ここで、Verilog記述用のファイル名は、"(RAMセル名)_syn.lib" で、VHDL 記述用のファイル名は、"(RAMセル名)_syn.vhd"です。
2. 注意
以下に、このライブラリに関する一般的な注意を記します。
- S1L50000シリーズ以外のRAMの機能につきましては、それぞれのデザインガイドをご参照ください。
S1L50000シリーズについては、このドキュメントの3章をご参照ください。
- RTLシミュレーション・ライブラリは、簡易モデルですので、実機の動作を十分に反映しておりません。最終的には、遅延シミュレーションにて、十分に検証してください。
- アドレスがX(不定)状態の時に書き込み動作を行うと、全てのアドレスの保持データが、Xになります。
- コントロール信号がXになった場合、書き込み動作の可能性がある場合は、入力されているアドレスにXを書き込みます。
3. S1L50000シリーズ同期RAM
S1L50000シリーズ同期RAMは、ソフトマクロです。しかし、RTL上では、1つのマクロとして扱い、論理合成以降で、ソフトマクロとして扱います。
3-1. シミュレーションや動作に関する注意
以下に、S1L50000シリーズ同期RAMのシミュレーションや動作に関する注意を記します。
- 同期1ポートRAMのチップ・セレクト(XCS)や同期2ポートRAMのリード・イネーブル(XRB)をインアクティブ(High)にすると、出力データは保持されません(シミュレーションでは、X(不定)状態になります)。
- 同期2ポートRAMで、同じアドレスに、同時に書き込みと読み出しと行うと、同じサイクル内で書き込んだデータを読み出すことが可能です。しかし、その読み出しアクセス・タイムは、通常のそれとは異なること(参照:3-11)にご注意ください。
- 同期2ポートRAMにおいて、ある読み出しアドレス(AB*)をラッチした状態で、読み出しクロック(CKB)が停止した状態でも、そのアドレスに新たなデータが書き込まれた場合、その新たなデータが読み出されることに注意してください。これは、出力データをラッチしない構造のためです。
- ソフトマクロのため、タイミングは、配置配線後に変わります。
- 強制チップセレクト(FCS)は、テスト専用端子です。通常動作時には、Highに固定してご使用ください。また、RTLシミュレーション・モデルでは、FCSがHighの場合にのみ正しい動作をするように記述しております。例えば、FCSがLowの場合に書き込み状態になり、その状態でFCSがHighに変化した場合、タイミングによっては、書き込み動作がなされることがありますが、このRTLシミュレーション・モデルでは、書き込みを行いません。
3-2. 論理合成時の注意
以下に、S1L50000シリーズ同期RAMを含んだRTLを、論理合成する場合の注意を記します。
- 上記1-(3)で説明した、論理合成用モジュールには、S1L50000シリーズの標準セルが記述されていますので、リンク・ライブラリにも、S1L50000シリーズのライブラリを指定してください。
例) set link_library { * s1l50000_33v.db }
- 上記1-(3)で説明した、論理合成用モジュールに、"DL2"という遅延セルが内蔵されていますので、これが論理圧縮されて消えないよう、ドント・タッチの指定をお願いします。
例) set_dont_touch s1l50000/DL2
- 上記1-(3)で説明した、論理合成用モジュルール(_syn.vまたは_syn.vhd)を、他のRTLソース・ファイルと一緒に読み込んでください。
例) read_verilog SK06008X_syn.v
3-3. 概要
以下に、S1L50000シリーズ同期RAMの概要を説明します。
- 同期RAMには、1ポート・タイプと、2ポート・タイプがあります。同期2ポートRAMは、ポートAが、書き込み専用で、ポートBが、読み出し専用です。
- ワード深さ(ワード数)は、4Word刻みで8Word ~ 256Wordの範囲で構成可能です。また、ワード幅(ビット数)は、1bit刻みで1bit ~ 32bitの範囲で構成可能です。ただし、内蔵されている非同期RAMにおきまして、非存在アドレスへのアクセス(例. 94 word RAMのアドレス94へアクセス)が禁止されております。回路的に、その可能性があります場合は、ワード深さが2のベキ乗のRAMを組み合わせてご使用ください。
3-4. ワード・ビット構成とセル名
S1L50000シリーズ同期RAMのセル名は、以下のように、その大きさによって決まります
- 同期1ポートRAMのセル名 … SJwwwbbX
- 同期2ポートRAMのセル名 … SKwwwbbX
ここで、www: ワード深さ(ワード数)を、16進数で表した3桁の文字
bb: ワード幅(ビット数)を、16進数で表現した2桁の文字
表1. 1ポートRAMのセル名例
ビット/ワード |
32 Word |
64 Word |
128 Word |
256 Word |
8 bit |
SJ02008X |
SJ04008X |
SJ08008X |
SJ10008X |
10 bit |
SJ0200AX |
SJ0400AX |
SJ0800AX |
SJ1000AX |
16 bit |
SJ02010X |
SJ04010X |
SJ08010X |
SJ10010X |
32 bit |
SJ02020X |
SJ04020X |
SJ08020X |
SJ10020X |
表2. 2ポートRAMのセル名例
ビット/ワード |
32 Word |
64 Word |
128 Word |
256 Word |
8 bit |
SK02008X |
SK04008X |
SK08008X |
SK10008X |
10 bit |
SK0200AX |
SK0400AX |
SK0800AX |
SK1000AX |
16 bit |
SK02010X |
SK04010X |
SK08010X |
SK10010X |
32 bit |
SK02020X |
SK04020X |
SK08020X |
SK10020X |
3-5. ベーシック・セル数
S1L50000シリーズ同期RAMのベーシック・セル数(BC数)は、非同期RAMに、以下の付加回路の大きさを加えたものになります。 ここで、非同期RAMの大きさは、S1L50000シリーズデザインガイドをご参照ください。
ここで、D-FFのBC数は、S1L50000シリーズMSIライブラリをご参照ください。ただし、とりあえずの目安をでよろしければ、ローノイズ・タイプSCAN―FFの10BCで計算するといいでしょう。
3-6. 同期1ポートRAM端子説明
表3に、同期1ポートRAMの端子説明を示します。
表3.同期1ポートRAM端子説明
端子名 |
信号名 |
説明 |
CK |
クロック入力 |
このクロック入力(CK)の立ち上がりエッジ(L->H)で、FCS以外の入力信号をラッチします。 |
XCS |
チップ・セレクト入力 |
CKでラッチされた値が、Lowの場合、RAMが動作します。このラッチされた値が、Highの場合は、出力Y*が不定になり、直前のデータは保持されないことにご注意ください。 |
XWE |
ライト・イネーブル入力 |
CKでラッチされた値が、Lowの場合は、書き込み動作を、それがHighの場合は、読み出し動作を行います。 |
A0 ~ An |
アドレス入力 |
アドレス入力端子です。 |
D0 ~ Dn |
データ入力 |
書き込みデータ入力端子です。 |
Y0 ~ Yn |
データ出力 |
読み出し動作時には、CKの立ち上がりエッジからアクセス時間後に、読み出しデータが出力されます。書き込み動作時には、サイクルの前半は不定で、後半に書き込んだデータが読み出されます。 |
FCS |
強制チップ・セレクト入力 |
テスト時に、非同期RAMを強制的にディスエイブルするために用います。通常使用時は、Highに固定してください。 |
3-7. 同期1ポートRAM構成図
同期1ポートRAMは、図1のように、非同期1ポートRAMとD-FFとゲートを用いて構成されています。
3-8. 同期1ポートRAMタイミング仕様
図2と図3に、同期1ポートRAMのタイミング図を示し、表4に、タイミング・データを示します。
表4.同期1ポートRAMタイミング・データ
端子名 |
信号名 |
説明 |
アクセス・タイム |
tACS |
(D-FF遅延)+(非同期RAMアクセス・タイム) |
入力信号セットアップ・タイム |
tSI |
D-FFのセットアップ・タイム |
入力信号ホールド・タイム |
tHI |
D-FFのホールド・タイム |
出力ホールド・タイム |
tHO |
(D-FF遅延)+(非同期RAM出力ホールド・タイム) |
クロック・ハイ・パルス幅 |
tWH |
(非同期RAMライト・パルス幅)+(マージン) |
書き込み後読み出し遅延 |
tDWR |
(非同期RAM・RWアクセス・タイム)+(DL2遅延)+(OR21遅延) |
3-9. 同期2ポートRAM端子説明
表5に、同期2ポートRAMの端子説明を示します。
表5.同期2ポートRAM端子説明
名称 |
記号 |
説明 |
CKA |
クロックA入力 |
ポートA(書き込みポート)用のクロック入力です。このクロック入力(CKA)の立ち上がりエッジ(L->H)で、ポートAの入力信号(XWAとAA*とD*)をラッチします。 |
XWA |
ライト・イネーブル入力 |
CKAでラッチされた値が、Lowの場合は、書き込み動作を行います。 |
AA0 ~ AAn |
ライト・アドレス入力 |
書き込みポート用アドレス入力端子です。 |
D0 ~ Dn |
データ入力 |
書き込みデータ入力端子です。 |
CKB |
クロックB入力 |
ポートB(読み出しポート)用のクロック入力です。このクロック入力(CKB)の立ち上がりエッジ(L->H)で、ポートBの入力信号(XRBとAB*)をラッチします。 |
XRB |
リード・イネーブル入力 |
CKBでラッチされた値が、Lowの場合は、読み出し動作を行います。この入力が、Highの場合は、出力Y*が不定になる(直前のデータを保持しない)ことにご注意ください。 |
Y0 ~ Yn |
データ出力 |
読み出し動作時には、CKBの立ち上がりエッジからアクセス時間後に、読み出しデータが出力されます。 |
FCS |
強制チップ・セレクト入力 |
テスト時に、非同期RAMを強制的にディスエイブルするために用います。通常使用時は、Highに固定してください。 |
3-10. 同期2ポートRAM構成図
同期2ポートRAMは、図4のように、非同期2ポートRAMとD-FFとゲートを用いて構成されています。
3-11. 同期2ポートRAMタイミング仕様
図5と図6に、同期2ポートRAMのタイミング図を示し、表6に、タイミング・データを示します。
表6.同期2ポートRAMタイミング・データ
名称 |
記号 |
説明 |
アクセス・タイム |
tACS |
(D-FF遅延)+(非同期RAMアクセス・タイム) |
入力信号セットアップ・タイム |
tSI |
D-FFのセットアップ・タイム |
入力信号ホールド・タイム |
tHI |
D-FFのホールド・タイム |
出力ホールド・タイム |
tHO |
(D-FF遅延)+(非同期RAM出力ホールド・タイム) |
クロック・ハイ・パルス幅 |
tWH |
非同期RAMライト・パルス幅+マージン |
同じアドレスへの同時書き込み後読み出し遅延 |
tDWR |
CKAに対して、(DL2遅延)+(IN1遅延)+(NO2遅延)+(非同期RAMアクセス・タイム) |