(57)【要約】【課題】異なるメモリシステム間での簡潔なマッピングを提供するためのメモリマッピングシステムと、それを製造及び使用するための方法である。【解決手段】メモリマッピングシステムは、コンテンツを、一つあるいは複数の第１のメモリシステムから第２のメモリシステムに、第２のメモリシステム内でのメモリ空間の損失無しに、簡潔にマップすることができる。有利には、メモリマッピングシステムは、コンパイルの間、設計メモリシステムをエミュレーションメモリシステムにより効率的にマップするために、ハードウェアエミュレータメモリシステムに適用することができる。【選択図】    図１
2006294033.tif 000002
【特許請求の範囲】
【請求項１】
異なるメモリシステムをマッピングするための方法であって、
複数の第１のメモリレジスタを備え、また、第１のメモリ深さと第１のデータ幅を持つ第１のアドレス空間を有する、第１のメモリシステムを提供し、
複数の第２のメモリレジスタを備え、また、第２のメモリ深さと第２のデータ幅を持ち、前記第１のメモリ深さが前記第２のデータ幅より大きい、第２のアドレス空間を有する、第２のメモリシステムを提供し、
前記第１のアドレス空間を横切る前記第１のメモリシステムを、それぞれ前記第１のデータ幅に等しいブロック幅を有する一様な、予め選択された数の第１のメモリブロックであって、前記第１のメモリブロックのそれぞれが、前記予め選択された数によって除算された前記第１のデータ幅の商に等しいブロック深さを有するように、２の累乗に等しい数の第１のメモリブロックに分割し、そして、前記第１のメモリブロックを、前記第２のメモリシステムの前記第２のアドレス空間を横切る、隣接する第２のメモリブロック内に配置することによって、前記第１のメモリシステムを前記第２のメモリシステムにマッピングする。
【請求項２】
請求項１の方法であって、前記第１のメモリシステムの前記提供は、少なくとも一つの第１の設計メモリインスタンスを提供することを含んでおり、前記第１のメモリシステムの前記マッピングは、前記少なくとも一つの第１の設計メモリインスタンスのそれぞれを前記第２のメモリシステムにマッピングすることを有している。
【請求項３】
請求項１の方法であって、前記第１のメモリシステムの前記提供は、前記第２のデータ幅より小さい前記第１のデータ幅を持つ前記第１のメモリシステムを提供することを含んでいる。
【請求項４】
請求項１の方法であって、前記第１のメモリシステムの前記提供は、前記第１のメモリシステムに結合されたアドレスバスの予め定められたアドレスバス幅によって累乗された２に等しい前記第１のメモリ深さを持つ前記第１のメモリシステムを提供することを含んでいる。
【請求項５】
請求項１の方法であって、前記第１のメモリシステムの前記提供は、スタティックランダムアクセスメモリ（ＳＲＡＭ）システムとダイナミックランダムアクセスメモリ（ＤＲＡＭ）システムを有するグループから選択されたメモリシステムを提供することを含んでいる。
【請求項６】
請求項１の方法であって、前記第１のメモリシステムの前記提供は、前記第１のメモリシステムを、少なくとも一つの読出ポートと少なくとも一つの書込ポートのポートチェーンを有する複数ポートメモリシステムとして提供することを含んでいる。
【請求項７】
請求項６の方法であって、前記第１のメモリシステムの前記提供は、前記少なくとも一つの読出ポートを読出ポートメモリプリミティブとして提供することを含んでいる。
【請求項８】
請求項６の方法であって、前記第１のメモリシステムの前記提供は、前記少なくとも一つの書込ポートを書込ポートメモリプリミティブとして提供することを含んでいる。
【請求項９】
請求項１の方法であって、前記第２のメモリシステムの前記提供は、スタティックランダムアクセスメモリ（ＳＲＡＭ）システムとダイナミックランダムアクセスメモリ（ＤＲＡＭ）システムを有するグループから選択されたメモリシステムを提供することを含んでいる。
【請求項１０】
請求項１の方法であって、前記第２のメモリシステムの前記提供は、３２ビットと６４ビットを有するグループから選択された、予め定められた第２のデータ幅を持つ前記第２のメモリシステムを提供することを含んでいる。
【請求項１１】
請求項１の方法であって、前記第１のメモリシステムの前記第２のメモリシステムへの前記マッピングは、前記第１のデータ幅を横切る前記第１のメモリシステムを複数の第１のメモリ部分に分離することを含み、また、前記第１のメモリ部分のそれぞれを前記第２のメモリシステムにマッピングすることを有している。
【請求項１２】
請求項１１の方法であって、前記第１のメモリシステムの前記分離は、前記第１のメモリ部分のそれぞれが、２の予め選択された累乗に等しいデータ幅を有するように、前記第１のメモリシステムを分離することを有している。
【請求項１３】
請求項１１の方法であって、前記第１のメモリシステムの前記分離は、前記第１のデータ幅を複数のサブデータ幅に分離することを有し、また、前記第１のメモリ部分のそれぞれは、前記第１のメモリ深さと、関連するサブデータ幅を持つメモリサブ空間を有している。
【請求項１４】
請求項１の方法であって、前記第１のメモリシステムの前記第２のメモリシステムへの前記分離は、更に、前記第１のメモリシステムを少なくとも一つのプリミティブメモリシステムとして表すことを有しており、前記少なくとも一つのプリミティブメモリシステムのそれぞれは、前記第１のメモリブロックを提供するために前記第１のデータ幅を横切って分割されている。
【請求項１５】
請求項１の方法であって、前記第２のメモリシステムの前記提供は、前記第２のメモリシステムをエミュレーションメモリシステムとして提供することを含んでいる。
【請求項１６】
異なるメモリシステムをマッピングするための方法であって、
複数の第１のメモリレジスタを有し、また、予め定められたアドレスバス幅を有するアドレスバスに結合されており、また、第１のデータ幅と、前記アドレスバス幅によって累乗された２に等しい第１のメモリ深さを持つ第１のアドレス空間を有する、第１のメモリシステムを提供し、
複数の第２のメモリレジスタを有し、また、第２メモリ深さと第２のデータ幅を持ち、前記第１のデータ幅は前記第２のデータ幅よりも小さく、前記第１のメモリ深さは前記第２のデータ幅より大きい、第２のアドレス空間を有する、第２のメモリシステムを提供し、
前記第１のアドレス空間を横切る前記第１のメモリシステムを、それぞれ前記第１のデータ幅に等しいブロック幅を有する一様な、予め選択された数の第１のメモリブロックであって、前記第１のメモリブロックのそれぞれが、前記予め選択された数によって除算された前記第１のデータ幅の商に等しいブロック深さを有するように、２の累乗に等しい数の第１のメモリブロックに分割し、そして、前記第１のメモリブロックを、前記第２のメモリシステムの前記第２のアドレス空間を横切る、隣接する第２のメモリブロック内に配置することによって、前記第１のメモリシステムを前記第２のメモリシステムにマッピングする。
【請求項１７】
複数の設計メモリレジスタを有し、また、設計メモリ深さと設計データ幅を持つ設計アドレス空間を有している、設計メモリシステムを含む電子回路設計を検証するためのハードウェアエミュレーションシステムであって、
複数のエミュレーションメモリレジスタを有し、また、エミュレーションメモリ深さと、設計メモリ深さより小さいかあるいは等しいエミュレーションデータ幅を持つエミュレーションアドレス空間を有する、エミュレーションメモリシステムと、
設計アドレス空間を横切る設計メモリシステムを、それぞれが設計データ幅に等しいブロック幅を有する一様な、予め選択された数の設計メモリブロックであって、設計メモリブロックのそれぞれが、前記予め選択された数によって除算された設計データ幅の商に等しいブロック深さを有するように、２の累乗に等しい数の設計メモリブロックに分割し、そして、設計メモリブロックを、前記エミュレーションメモリシステムの前記エミュレーションアドレス空間を横切る、隣接するエミュレーションメモリブロック内に配置することによって、設計メモリシステムを前記エミュレーションメモリシステムにマップするコンパイラシステムを備えている。
【請求項１８】
請求項１７のハードウェアエミュレーションシステムであって、前記設計メモリシステムは、少なくとも一つの設計メモリインスタンスを含み、前記コンパイラシステムは、少なくとも一つの設計メモリインスタンスを前記エミュレーションシステムにマップする、
【請求項１９】
請求項１７のハードウェアエミュレーションシステムであって、設計メモリシステムの設計データ幅は、前記エミュレーションメモリシステムの前記エミュレーションデータ幅より小さい。
【請求項２０】
請求項１７のハードウェアエミュレーションシステムであって、設計メモリシステムの設計メモリ深さは、設計メモリシステムと協同するアドレスバスの予め定められたアドレスバス幅によって累乗された２に等しい。
【請求項２１】
請求項１７のハードウェアエミュレーションシステムであって、設計メモリシステムは、スタティックランダムアクセスメモリ（ＳＲＡＭ）システムとダイナミックランダムアクセスメモリ（ＤＲＡＭ）システムを有するグループから選択される。
【請求項２２】
請求項１７のハードウェアエミュレーションシステムであって、設計メモリシステムは、少なくとも一つの読出ポートと少なくとも一つの書込ポートのポートチェーンを有する複数ポートメモリシステムとして提供される。
【請求項２３】
請求項２２のハードウェアエミュレーションシステムであって、複数ポートメモリシステムの少なくとも一つの読出ポートの少なくとも一つは、読出ポートメモリプリミティブとして提供される。
【請求項２４】
請求項２２のハードウェアエミュレーションシステムであって、複数ポートメモリシステムの少なくとも一つの書込ポートの少なくとも一つは、書込ポートメモリプリミティブとして提供される。
【請求項２５】
請求項１７のハードウェアエミュレーションシステムであって、前記エミュレーションメモリシステムは、スタティックランダムアクセスメモリ（ＳＲＡＭ）システムとダイナミックランダムアクセスメモリ（ＤＲＡＭ）システムを有するグループから選択される。
【請求項２６】
請求項１７のハードウェアエミュレーションシステムであって、前記エミュレーションメモリシステムの前記エミュレーションデータ幅は、３２ビットデータ幅と６４ビットデータ幅を有するグループから選択される。
【請求項２７】
請求項１７のハードウェアエミュレーションシステムであって、前記コンパイラシステムは、設計データ幅を横切る設計メモリシステムを複数の設計メモリ部分に分離し、そして、設計メモリ部分のそれぞれを前記エミュレーションメモリシステムにマップする。
【請求項２８】
請求項２７のハードウェアエミュレーションシステムであって、前記コンパイラシステムは、設計メモリ部分のそれぞれが、２の予め定められた累乗に等しいデータ幅を有するように、設計メモリシステムを分離する。
【請求項２９】
請求項２７のハードウェアエミュレーションシステムであって、前記コンパイラシステムは、設計データ幅を複数のサブデータ幅に分離し、また、設計メモリ部分のそれぞれは、設計メモリ深さと、関連するサブデータ幅を持つ、メモリサブ空間を有している。
【請求項３０】
請求項１７のハードウェアエミュレーションシステムであって、設計メモリシステムは、少なくとも一つのプリミティブメモリとして表され、また、前記コンパイラシステムは、設計メモリブロックを提供するために、設計データ幅を横切る少なくとも一つのプリミティブメモリシステムのそれぞれを分割する。
【発明の詳細な説明】
【関連出願の参照】
【０００１】
本出願は、２００５年４月６日に出願された米国仮出願番号６０／６６８８６３に対する優先権を主張している。仮出願に対する優先権は明確に請求され、また、仮出願の開示は、その全てが参照として本明細書に組み込まれている。
【技術分野】
【０００２】
本発明は、一般的には、電子回路設計を検証するためのハードウェアエミュレーションシステムに関し、より詳しくは、しかしながらそれに限らないが、ユーザ設計メモリシステムと物理的な（実際の）エミュレーションメモリシステム間でマップする(map)ためのコンパイラシステム(compiler  system)に関する。
【背景技術】
【０００３】
ハードウェア論理エミュレーション（及び／またはアクセラレーション）システムは、一つあるいは複数のプログラマブル（プログラム可能な）集積回路を介してユーザ設計を実行するために利用することができる。このようなハードウェア論理エミュレーションシステムは、カリフォルニア州、サンノゼに本社があるケイデンス・デザイン・システムズ・インコーポレイテッド等の種々の販売会社から商業的に入手可能である。
【０００４】
典型的なハードウェアエミュレーションシステムは、プログラム可能に相互接続される、プログラマブル論理装置（あるいは、集積回路チップ）及び／または処理装置（あるいは、集積回路チップ）を用いる。プログラマブル論理装置ベースのエミュレーションシステムでは、例えば、フィールドプログラマブルゲートアレイ(field  programmable  gate  array：ＦＰＧＡ)等の少なくとも一つのプログラマブル論理装置内にプログラム可能である。したがって、ユーザ設計内に表現されている論理は、プログラマブル論理装置内で、実際の動作形態を取って実行される。プログラマブル論理装置を用いる通常のハードウェアエミュレーションシステムの一例は、米国特許第５１０９３５３号明細書、米国特許第５０３６４７３号明細書、米国特許第５４７５８３０号明細書、米国特許第５９６０１９１号明細書に開示されている。それぞれの開示は、その全てが参照として本明細に組み込まれている。
【０００５】
同様に、ユーザ設計は、その機能が、ユーザ設計の出力を計算することによって、処理装置内に生成されていると思われるように、プロセッサベースのエミュレーションシステム内で処理される。したがって、ユーザ設計内に表現されている論理は、それ自身はプロセッサベースのエミュレーションシステム内で実行されない。言い換えれば、ユーザ設計内に表現されている論理は、処理システム内で実際の動作形態をとらない。処理装置を使用する、典型的な通常のハードウェア論理エミュレーションシステムは、米国特許第５５５１０１３号明細書、米国特許第６０３５１１７号明細書、米国特許第６０５１０３０号明細書に開示されている。それぞれの開示は、その全てが参照として本明細に組み込まれている。
【特許文献１】米国特許第５１０９３５３号明細書
【特許文献２】米国特許第５０３６４７３号明細書
【特許文献３】米国特許第５４７５８３０号明細書
【特許文献４】米国特許第５９６０１９１号明細書
【特許文献５】米国特許第５５５１０１３号明細書
【特許文献６】米国特許第６０３５１１７号明細書
【特許文献７】米国特許第６０５１０３０号明細書
【０００６】
ハードウェア論理エミュレーションシステムに対する主要な用途は、ユーザ設計をデバッグすることである。したがって、ユーザ設計を実際のシリコン内に組み付ける前に、ユーザ設計内に存在する機能エラーを確認及び解決することができる。シミュレーション等の代わりのものは、典型的に、エミュレーションよりかなり遅いため、回路設計者は、長年、このようなデバッグを実行するためにハードウェアエミュレーションステムを用いている。シミュレーションは、ソフトウェアベースの取り組み方法である。一方、エミュレーションでは、ユーザ設計は、マシン実行可能なモデルを形成するためにテストベンチ(testbench)を用いてコンパイルされる。典型的には、テストベンチは、ユーザ設計と直接的に相互作用するターゲットシステム(target  system)（あるいはボード）として表される。マシン実行可能なモデルは、コンパイルされると、ワークステーションあるいはパーソナルコンピュータを介して実行可能である。
【０００７】
マシン実行可能なモデルのコンパイルを促進するために、ユーザ設計は、通常、ネットリスト(netlist)記述の形式で提供される。ネットリスト記述は、ユーザ設計の構成要素と、構成要素間の電気的な相互接続を表す。構成要素は、ユーザ設計を実行するための各回路要素を含む。典型的な通常の回路要素は、結合論理回路要素（あるいはゲート）、フリップフロップやラッチ等のシーケンシャル論理回路要素、スタティックランダムアクセスメモリ（ＳＲＡＭ）やダイナミックランダムアクセスメモリ（ＤＲＡＭ）等のメモリ要素である。ユーザ設計内に組み入れられるメモリ要素は、しばしば、“設計メモリシステム”と呼ばれる。ネットリスト記述は、ハードウェア記述言語等の任意の通常のソースから得られ、また、エミュレーションシステムによって使用可能な形式にコンパイルされる。
【０００８】
ユーザ設計の設計メモリシステムのそれぞれは、コンパイルの間、ハードウェアエミュレーションシステムの物理的なエミュレータメモリシステムにマップされる。エミュレータメモリシステムは、典型的には、固定のデータ幅を有している。例えば、カリフォルニア州、サンノゼのケイデンス・デザイン・システムズ・インコーポレイテッドは、スタティックランダムアクセスメモリ（ＳＲＡＭ）とダイナミックランダムアクセスメモリ（ＤＲＡＭ）を含むエミュレータメモリシステムを備えるPalladium  II  アクセラレータ／エミュレーションシステムを提供している。スタティックランダムアクセスメモリ（ＳＲＡＭ）は、３２ビットの固定データ幅を有している。一方、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）のデータ幅は、６４ビットである。
【０００９】
したがって、多くのメモリリッチ(memory-rich)なユーザ設計に対して、エミュレータメモリシステムは、迅速にクリティカル(critical)なシステムリソースとなる。各設計メモリシステムは、典型的には、個々の設計メモリシステムのデータ幅に関係なく、エミュレータメモリシステムにマップされる。したがって、１、２あるいは３ビット等の非常に小さいデータ幅を持つ設計メモリシステムであっても、エミュレータメモリシステムの固定データ幅にマップされる。これにより、エミュレータメモリシステム内の多くのメモリワードの重要な部分は、“失われ(lost)”、その後のエミュレーションの間使用されない。したがって、このような、設計メモリシステムからエミュレータメモリシステムへの効率の良くないマッピングは、クリティカルなシステムリソースの無駄な使用を引き起こす。
【００１０】
設計メモリシステムとエミュレータシステム間でのより簡潔なマッピングを提供するための従来の試みは、満足するものを提供していない。一つの取り組み方法では、異なる設計メモリシステムが、エミュレーションメモリシステムの同じアドレス領域にマップされる。しかしながら、この取り組み方法は、実行するのが困難であり、また、常に効果があるものではない。他の取り組み方法は、設計メモリシステムをエミュレータメモリシステムにマッピングするための手動方法の使用を提案した。実際のユーザ設計に適用することが非常に困難であることに加えて、これらの手動方法は、時間を消費し、エラーが発生する傾向があることが判明した。
【００１１】
前述の観点から、現時点で使用可能なハードウェア論理エミュレーションシステムの前述した障害及び欠陥を克服する、異なるメモリシステム間でのマッピングのための改良されたシステム及び方法に対する要望がある。
【好ましい実施例の詳細な説明】
【００１２】
図面は、大きさを示すように描かれていないこと、また、図面を通して、一般的には、類似の構成あるいは機能要素は、説明目的のために同様の参照数字よって表されていることに注意すべきである。また、図面は、本発明の好ましい実施例の説明を容易とするために用いられているだけであることを注意すべきである。
【００１３】
現時点で使用可能なハードウェアエミュレータメモリシステムは、コンパイルの間、設計メモリシステムを効率良くマップしないので、メモリシステムを固定データ幅を有している共通のメモリシステムに簡潔にマップするために、個別のメモリシステムそれぞれのユニークな（特有の）データ幅を考慮するメモリマッピングシステムは、望ましいことを証明し、また、ハードウェアエミュレータメモリシステムのような、幅広い範囲のシステム応用に対する基本原理を提供することができる。この結果は、図１に示されているようなメモリマッピングシステム１００を使用することによって、本明細書に開示されている一つの実施例により達成される。
【００１４】
メモリマッピングシステム１００は、コンテンツを、一つあるいは複数の第１のメモリシステム２００から第２のメモリシステム３００に、第２のメモリシステム３００内のメモリ空間の損失無しに、簡潔にマップすることができる。図１に説明されているように、第１のメモリシステム２００は、通常のメモリ動作を実行するための、一つあるいは複数のスタティックランダムアクセスメモリ（ＳＲＡＭ）システム及び／またはダイナミックランダムアクセスメモリ（ＤＲＡＭ）システムのような、通常のメモリシステムにより構成される。典型的な通常のメモリ動作は、第１のメモリシステム２００へのデータの書き込み、（少なくとも一時的な）、第１のメモリシステム２００内でのデータの蓄積及び／または第１のメモリシステム２００からのデータの読み出しを含む。好ましくは、第１のメモリシステム２００は、半導体集積回路等の物理的なメモリシステム及び／またはメモリプリミティブ(primitive)（メモリ基本要素）等の仮想メモリシステムとして提供される。データを蓄積するための、複数のアドレス可能なメモリレジスタ２１０を有しているため、第１のメモリシステム２００は、メモリレジスタ２１０の予め定められた数を定めるメモリ深さ(depth)２３０と、メモリレジスタ２１０それぞれに蓄積可能なデータビットの数を明らかにする予め定められたデータ幅(width)２２０を有している。これにより、第１のメモリシステム２００に対する第１のメモリ空間は、第１のメモリシステム２００のデータ幅２２０とメモリ深さ２３０によって定められる。
【００１５】
同様に、第２のメモリシステム３００は、第１のメモリシステム２００を参照して先により詳しく説明した方法で、通常のメモリシステムとして提供される。これにより、第２のメモリシステム３００は、複数のアドレス可能なメモリレジスタ３１０を備え、また、予め定められたデータ幅３２０とメモリ深さ３３０を有している。第２のメモリシステム３００のデータ幅３２０は、メモリレジスタ３１０それぞれに蓄積可能なデータビットの数を定める。一方、メモリ深さ３３０は、メモリレジスタ３１０の予め定められた数を定める。簡略化するために、第１のメモリシステム２００の予め定められたデータ幅２２０は、２の累乗に等しく、第２のメモリシステム３００の予め定められたデータ幅３２０より小さいものとして開示及び記載されている。また、第１のメモリシステム２００のメモリ深さ２３０は、第２のメモリシステム３００の予め定められたデータ幅３２０より大きいものとして開示及び記載されている。第２のメモリシステム３００に対する第２のメモリ空間は、第２のメモリシステム３００のデータ幅３２０とメモリ深さ３３０によって定められる。
【００１６】
第２のメモリシステム３００は、任意の通常のデータ幅３２０を有することができるが、メモリマッピングシステム１００の構造と動作は、説明目的のために、６４ビットのデータ幅３２０を有する第２のメモリシステム３００を参照に開示及び記載されている。したがって、メモリマッピングシステム１００は、２のＮ乗［２Ｎ］に等しいデータ幅２２０と、２のＷ乗［２Ｗ］に等しいメモリ深さ２３０を持つ第１のメモリシステム２００を、Ｎが６より大きい［Ｎ＞６］正の整数であり、Ｗが６より小さい［Ｗ＜６］正の整数である、第２のメモリシステム３００内にマップすることができる。
【００１７】
第２のメモリシステム３００は、前述したように６４ビットのデータ幅３２０を有しているため、第１のメモリシステム２００のデータ幅２２０は、３２、１６、８、４、２あるいは１に等しい。一方、第１のメモリシステム２００のメモリ深さ２３０は、１２８、２５６、５１２、１０２４、２０４８等に等しい。これにより、第１のメモリシステム２００は、２の（Ｎ＋Ｗ−６）乗［２Ｎ＋Ｗ−６］に等しいメモリ深さ３３０を有し、また、前述したように、６４ビットのデータ幅３２０を有している、第２のメモリシステム３００内にマップ可能である。メモリマッピングシステム１００の構造及び動作のより一般的な説明は、メモリマッピングシステム１００が、任意のデータ幅２２０Ａ−Ｎを持つ任意の適当な数の第１のメモリシステム２００Ａ−Ｎを第２のメモリシステム３００に簡潔にマップするものとして開示及び記載されている、図５を参照にして以下で明らかにされる。
【００１８】
１．基本メモリ表現
【００１９】
カリフォルニア州、サンノゼのケイデンス・デザイン・システムズ・インコーポレイテッドによって提供されているPalladium  II  アクセラレータ／エミュレーションシステムのような、通常のハードウェアエミュレーションシステムでは、全ての設計メモリ（図１に示されている第１のメモリシステム２００によって表されている）は、共通のエミュレーションメモリシステム（図１に示されている第２のメモリシステム３００によって表されている）にマップされる。エミュレーションメモリシステムは、典型的には、６４ビット幅のダイナミックランダムアクセスメモリ（ＤＲＡＭ）システム及び／または３２ビット幅のスタティックランダムアクセスメモリ（ＳＲＡＭ）システムにより構成される。図２に説明されているように、ハードウェアエミュレーションシステム（図示されていない）の設計データベース内の各メモリインスタンス（メモリの実例）(memory  instance)４００は、複数ポートメモリシステム４１０によって提供される。複数ポートメモリシステム４１０は、読出ポート５００と書込ポート６００のポートチェーン(port  chain)４２０により構成されているものとして示されている。
【００２０】
ポートチェーン４２０内の各読出ポート５００は、図３Ａに示されているように、読出ポートメモリプリミティブ（あるいはＭＰＲプリミティブ）５１０によって表される。一方、ポートチェーン４２０内の各書込ポート６００は、図３Ｂに示されているように、書込ポートメモリプリミティブ（あるいはＭＰＷプリミティブ）６１０によって表される。図３Ａ−Ｂを参照すると、読出ポート５００は、［ＭＰＲ＜Ｄ＞Ｘ＜Ｗ＞］として表示され、また、書込ポート６００は、［ＭＰＷ＜Ｄ＞Ｘ＜Ｗ＞］として表示されている。ここで、＜Ｄ＞は、メモリ深さ（ワード数）であり、また、＜Ｗ＞は、メモリ幅（データビット数）である。読出ポートメモリプリミティブ５１０は、アドレス入力ポートＡと、データ出力ポートＤＯを有しているものとして示されている。同様に、書込ポートメモリプリミティブ６１０は、アドレス入力ポートＡ、データ入力ポートＤＩ、書込イネーブル入力ポートＷＥを有している。読出ポートメモリプリミティブ５１０と書込ポートメモリプリミティブ６１０は、それぞれ同じように、図２に説明されている方法でポートチェーン４２０を形成するために、メモリプリミティブ５１０、６１０を結合するための第１の通信ポートＳＹＮＣＩＮと第２の通信ポートＳＹＮＣＯＵＴを含んでいる。
【００２１】
２．メモリ変換
【００２２】
２．１．プリミティブメモリインスタンスのマッピング
【００２３】
データ幅［ＤＷ］とデータ深さ［Ｄ＝２ＡＷ］（ＡＷは、アドレスバス幅）を持つ、選択されたメモリインスタンス４００（図２に示されている）を考える。メモリインスタンス４００は、アドレス空間を、等しい深さ［２ＡＷ−ｋ］の［Ｋ＝２ｋ］個の塊に分割し、そして、これらの塊をエミュレーションメモリシステム３００（図１に示されている）に並べてマップすることによって、エミュレーションメモリシステム３００（図１に示されている）にマップされる。テーブル１は、ｋ及びＫがＡＷに依存する様子を説明している。
【表１】
2006294033.tif 000003
【００２４】
メモリインスタンス４００の各アドレスａは、［ａ＝Ｋ＊（Ｄ／Ｋ）＋Ｄ％Ｋ］で表される。ここで、［Ｄ／Ｋ］は、ＤをＫで除算した整数の商を表し、［Ｄ％Ｋ］は、ＤをＫで除算した整数の剰余である。したがって、メモリインスタンス４００のアドレスａに関連するメモリレジスタのコンテンツ［Ｎ（ａ）］は、エミュレーションメモリシステム３００の［Ｄ／Ｋ］番目のワードの［Ｄ％Ｋ］番目のセクションにマップされる。例えば、メモリインスタンス４００が、２０４８ワードのメモリ深さ２３０（図１に示されている）と、１６ビットのデータ幅２２０（図１に示されている）を有している場合には、メモリインスタンス４００は、テーブル２（Ｋ＝４）に示されているように、エミュレーションメモリシステム３００の５１２ワードの深さの領域にマップされる。
【表２】
2006294033.tif 000004
【００２５】
２．２．プリミティブポートモデル
【００２６】
２．２．１．読出ポートモデル
【００２７】
各読出ポート５００は、メモリマッピングシステム１００（図１に示されている）により、深さＤと幅Ｗを持つプリミティブメモリインスタンス４００として合成される。これにより、読出ポート５００は、エミュレーションの間、正しい機能（あるいは行動）を提供するために、追加の論理システムと協同可能である。図３Ａに戻ると、例えば、プリミティブメモリインスタンス４００は、重要性が低いアドレスビットに基づいてワードの“右”セクションを選択するためのｋ段のマルチプレクサが続く、６４ビット幅の読出ポートメモリプリミティブ５１０として表されているように示されている。図４Ａは、［２Ｋ×１６］読出ポートメモリプリミティブ５１０の読出ポート５００の表現を示している。
【００２８】
２．２．２書込ポートモデル
【００２９】
同様に、各書込ポート６００は、幅Ｄと深さＷを持つプリミティブメモリインスタンス４００としてメモリマッピングシステム１００（図1に示されている）により合成される。これにより、書込ポート６００は、エミュレーションの間、正しい機能（あるいは行動）を提供するために、追加の論理システムと協同可能である。図４Ｂを注目すると、例えば、書込ポート６００は、リード・モディファイ・ライト(Read-Modify-Write：ＲＭＷ)回路６２０として表されている。リード・モディファイ・ライト回路６２０は、［Ｍ（ａｈ）]（ａｈは、メモリアドレスａの最も重要なビット［ａｗ−ｋ］を示す。）の現時点のコンテンツを読み出す、６４ビット幅の読出ポートメモリプリミティブ６３０を含むものとして示されている。同様に、リード・モディファイ・ライト回路６２０は、ｋ個の入力６４２と、［Ｋ＝２ｋ］個の出力６４４を有するデコーダＤＥＣ６４０を含んでいる。デコーダＤＥＣ６４０の入力６４２は、重要でないアドレスビットに結合されるものとして示されている。一方、デコーダＤＥＣ６４０の出力６４４は、複数のマルチプレクサ６５０のＳＥＬ入力６５２に結合される。マルチプレクサ６５０のそれぞれは、６４ビットワードの一つのセクションと協同し、そして、デコーダ出力値に基づいて、それを新しい入力値でアップデートする（その一つのセクション）か、あるいは、それを不変のままに保持する（全ての他のセクション）。図４Ｂに示されているように、リード・モディファイ・ライト回路６２０も、６４ビット幅の書込ポートメモリプリミティブ６６０を含んでいる。書込ポートメモリプリミティブ６６０は、修正された６４ビットのワードを同じアドレスに書き込む。図４Ｂは、［２Ｋ×１６］書込ポートメモリプリミティブ６１０の書込ポート６００の表現を示している。
【００３０】
２．３．通常変換
【００３１】
メモリプリミティブ５１０、６１０（図３Ａ−Ｂに示されている）により構成され、また、［２ｎ］に等しい深さと［２ｗ］に等しい幅（ｗ＜６、ｎ＞６）を有する、プリミティブメモリは、深さ［２ｎ＋ｗ−６］と幅６４を持つエミュレーションメモリシステム３００（図１に示されている）領域にマップされる。各正の整数Ｗは、（式１）にしたがって因数分解される。（式１）では、ｒは任意の負でない整数であり、ｆｉ（ｉ＝１：６）は「０」あるいは「１」に等しい。
Ｗ＝ｒ*６４＋ｆ１*３２＋ｆ２*１６＋ｆ３*８＋ｆ４*４＋ｆ５*２＋ｆ６*１
（式１）
【００３２】
したがって、［２ｎ］に等しい深さとＷに等しい幅を持つメモリインスタンスは、ｒ個の６４ビット幅のメモリインスタンスと、６個までのプリミティブメモリインスタンスの集合として表される。プリミティブメモリインスタンスのそれぞれは、先により詳しく説明した方法で、エミュレーションメモリシステム３００（図１に示されている）の６４ビット幅の領域に、順次マップされる。エミュレーションメモリシステム３００（図１に示されている）のこれらの領域の典型的な数と深さは、テーブル３に示されている。Ｄに等しい深さと、Ｗに等しい幅を持つメモリインスタンスの変換（大部分の損失が無く、［Ｗ＜６４］と仮定する。）は、エミュレーションメモリシステム３００の［Ｄ＊（６４−Ｗ）／６４］ワードを節約する。望ましくは、この値は、重さを節約するメモリインスタンスとしてあるいは重さそのものとして参照される。有利には、この変換は、調査を必用としない。
【表３】
2006294033.tif 000005
【００３３】
３．現時点での好ましい実施例
【００３４】
前述した変換は、ｅｔ３コンパイル処理の一部分として、Incisive  XE3.0内で実行及びテストされた。Incisiveは、ケイデンスのPalladium  製品上で設計のデバッグをコンパイルするために使用されるツールである。変換は、メモリポート（ＭＰＲ及びＭＰＷプリミティブ）の数を増大させ、また、追加の論理ゲートを生成する、オリジナルのメモリインスタンスが、Ｒ個のＭＰＲ、Ｗ個のＭＰＷ及びｄｗ（０＜ｄｗ＜６４）に等しいデータ幅を有している場合には、変換は、ｄｗの値に応じて、Ｗ個のＭＰＲ（ｄｗ＝１、２、４、８、１６、３２に対して）から、［（６Ｗ＋５Ｒ）個のＭＰＲ＋５Ｗ個のＭＰＷ（ｄｗ＝６３に対して）］までを追加する。各オリジナルのＭＰＲの変換は、ｄｗに応じて、３２個（ｄｗ＝３２に対して）から、３８４個（ｄｗ＝６３に対して）の論理ゲート（プリミティブ）までを追加する。各オリジナルのＭＰＷの変換は、ｄｗに応じて、６６個（ｄｗ＝３２に対して）から４９２個（ｄｗ＝６３に対して）までの論理ゲートを追加する。また、変換は、ステップカウントを増加する。これにより、エミュレーション速度が低下する。より多くのメモリインスタンスが変換され、この増加の可能性がより高くなる。
【００３５】
したがって、ソフトウェアは、変換されるメモリの数を最小化するように試みる。そのデフォルト（初期）の行動は、以下の通りである。先ず、エミュレーションメモリシステム３００（図１に示されている）の使用可能なサイズ［ＤＨ］を、与えられた設計に対して要求される、エミュレーションメモリシステム３００（図１に示されている）のサイズ［ＤＤ］と比較する。［ＤＤ］が［ＤＨ］を超えていない場合には、変換は必要でない。そうでなければ、実施例は、設計データベースを閲覧し、全ての“簡潔化可能な(compactible)”メモリインスタンスを集め、それらのそれぞれに対してその重さを調べ、そして、重さを減少させるためにこれらのインスタンスを変換する。変換は、エミュレーションメモリシステム３００内に充分な空間が蓄積されると停止する。
【００３６】
この行動は、次のコマンド（任意の結合において）を用いて変更される。
【００３７】
エミュレーションメモリシステム３００（デフォルトによって、ｕ＝１００）に対して、“使用ファクタ（因子）”ｕを定める。定められると、実施は、［ＤＤ］を、［ＤＨ］よりも［ＤＨ＊ｕ／１００］と比較する。［ｕ＜１００］に設定することにより、より多くのメモリインスタンスが変換される。［ｕ＝０］である場合には、全ての“簡潔化可能な”メモリインスタンスが変換される。［ｕ＞１００］に設定することにより、変換されるメモリインスタンスの数が減少する。ｕが“十分大きい値”を超える場合には、メモリインスタンスは変換されない。
【００３８】
いくつかのメモリインスタンスの変換を強制する（名前によって指定される）。
【００３９】
いくつかのメモリインスタンスの変換を阻止する（名前によって指定される）。
【００４０】
“最小変換深さ”を定める（すなわち、与えられた値に等しいあるいは超える深さを持つ任意のメモリインスタンスの変換を強制する。）。
【００４１】
“最大非変換深さ”を定める（すなわち、与えられた値に等しいあるいは小さい深さを持つ任意のメモリインスタンスの変換を阻止する。）。
【００４２】
メモリ幅Ｗ（Ｗ＜６４）が与えられると、“メモリの残り(remainder)”は、［６４−Ｗ］として定められる。“最小変換残り”を定める（すなわち、与えられた値と等しいあるいは超える残りを持つ任意のメモリインスタンスの変換を強制する。）。
【００４３】
“最大非変換残り”を定める（すなわち、与えられた値と等しいあるいは小さい残りを持つ任意のメモリインスタンスの変換を阻止する。）。
【００４４】
これにより、変換されたメモリインスタンスは、前述した方法で、一つあるいは複数の“新しい”メモリインスタンスによって表される。新しいメモリインスタンスのそれぞれは、オリジナルの名前からユニークに（特有の方法で）導き出されたユニークな（特有な）名前を得る。変換されたメモリインスタンスのオリジナルの名前のリストは、設計データベース内に蓄えられる。これにより、実行プログラム(run  time  program)は、メモリコンテンツを正しくアクセスすることができる。
【００４５】
ユーザの側からは、メモリ変換は、完全に透明である。すなわち、オリジナルのメモリインスタンスの名前のみが、ユーザインターフェース内で使用される。変換の間に生成されるＭＰＲ／ＭＰＷプリミティブ及びゲートは、ユーザには見えない。
【００４６】
４．実験結果
【００４７】
メモリ簡潔化の実行によって、いくつかの設計に対するハードウェア要求がかなり減少される。３つの実際の設計が、テーブル４に示されている。
【表４】
2006294033.tif 000006
【００４８】
これらの設計のそれぞれに対して、２つのセットの実験が実行された。第１のセット（Ａ）では、全ての“簡潔化可能な”メモリインスタンスの変換が強制された。第２のセット（Ｂ）では、最も大きい重さを有し、与えられたハードウェア配列に十分に適合する、いくつかのメモリインスタンスのみが変換された。各セットは、少なくとも５回試行した。したがって、テーブル４は、ステップカウンタに対して最大値と最小値の両方を含んでいる。実行パラメータについては、平均値が示されている。
【００４９】
追加のゲート及びネットの数は、セットＡに対しては十分に大きく、セットＢに対しては無視できるほど小さかったということに注意する価値がある。メモリ変換の実行時間は、特にセットＢに対しては、無視できるほど小さかった。また、メモリインスタンスの小さい、時には、非常に小さいサブセットのみの変換が、重要なメモリ節約のために提供される。ステップカウンタ内での重要でない違いが、セットＡとＢの間に発生する。
【００５０】
説明の目的のためにのみ、第１のメモリシステム２００を第２のメモリシステム３００内にマッピングするものとして、図１を参照して開示及び記載されているが、メモリマッピングシステム１００は、図５に説明されているように、コンテンツを、予め選択された数であるＮ個の第１のメモリシステム２００Ａ−Ｎから、第２のメモリシステム３００に、第２のメモリシステム３００内でのメモリ空間の損失無しに、簡潔にマップすることができる。第１のメモリシステム２００Ａ−Ｎのそれぞれは、第１のメモリシステム２００（図１に示されている）を参照して前述した方法で、通常のメモリシステムにより構成される。第１のメモリシステム２００Ａ−Ｎは、それぞれ、メモリ深さ２３０Ａ−Ｎと、予め定められたデータ幅２２０Ａ−Ｎを有している。第２のメモリシステム３００も同様に、図１を参照して先により詳しく説明した方法で、通常のメモリシステムとして提供され、予め定められたデータ幅３２０とメモリ深さ３３０を有している。
【００５１】
図５に説明されているように、第１のメモリシステム２００Ａ−Ｎのメモリ深さ２３０Ａ−Ｎは、異なる及び／または一様なメモリ深さを含んでいる。データ幅２２０Ａ−Ｎも同様に、異なっている及び／または一様である。予め定められたデータ幅２２０Ａ−Ｎのそれぞれは、予め定められたデータ幅２２０（図１に示されている）を参照して先により詳しく説明した方法で提供され、また、メモリ深さ２３０Ａ−Ｎのそれぞれは、メモリ深さ２３０（図１に示されている）を参照して先に説明した方法で提供される。第１のメモリシステム２００Ａ−Ｎのそれぞれは、先に明らかにした方法で、第２のメモリシステム３００にマップされる。
【００５２】
有利には、メモリマッピングシステム１００は、第１のメモリシステム２００Ａ−Ｎの一つあるいは複数を、適当に定められた数の第１のメモリ部分に分離する。例えば、第１のメモリシステム２００Ａは、データ幅２２０Ａに沿って第１のメモリ部分２０２Ａ、２０４Ａに分離されるものとして示されている。少し異なって述べると、第１のメモリシステム２２０Ａのデータ幅２２０Ａは、２つのデータサブ幅(data  sub-width)２２２Ａ、２２４Ａに分離される。したがって、メモリ部分２０２Ａは、データサブ幅２２２Ａとメモリ深さ２３０Ａによって定められるメモリサブ空間(memory  subspace)を有している。一方、メモリ部分２０４Ａに対するメモリサブ空間は、データサブ幅２２４Ａとメモリ深さ２３０Ａによって定められる。これにより、第１のメモリシステム２２０Ａのデータ幅２２０Ａが２の累乗に等しくない場合には、メモリマッピングシステム１００は、第１のメモリシステム２２０Ａを、各メモリ部分が２の累乗に等しいデータサブ幅２２２Ａ、２２４Ａを有するように、メモリ部分２０２Ａ、２０４Ａ等の複数の第１のメモリ部分に分離する。
【００５３】
例えば、第１のメモリシステム２２０Ａは、５ビットに等しいデータ幅２２０Ａを有している。５ビットのデータ幅２２０Ａは、２の累乗に等しくないため、メモリマッピングシステム１００は、データ幅２２０Ａを、それぞれ２の累乗に等しい、４ビットのデータサブ幅２２２Ａと、１ビットのデータサブ幅２２４Ａに分離する。これにより、第１のメモリシステム２２０Ａは、４ビットのデータサブ幅２２２Ａを有するメモリ部分２０２Ａと、１ビットのデータサブ幅２２４Ａを有するメモリ部分２０４Ａに分離される。したがって、メモリマッピングシステム１００は、第１のメモリシステム２００Ａを第２のメモリシステム３００に簡潔にマップするために、先により詳しく説明した方法で、メモリ部分２０２Ａ、２０４Ａのそれぞれを処理する。したがって、メモリマッピングシステム１００は、任意のデータ幅２２０Ａ−Ｎを持つ第１のメモリシステム２００Ａ−Ｎを第２のメモリシステム３００に簡潔にマップすることができる。
【００５４】
本発明は、種々の修正及び代替の形態を許容し、したがって、特別な実施例が、図面に例示の方法で示され、明細書で詳しく説明されている。しかしながら、本発明は、開示されている特別な形態あるいは方法に制限されず、逆に、本発明は、全ての修正、等価及び代替をカバーする。
【図面の簡単な説明】
【００５５】
【図１】図１は、２つの異なるメモリシステム間での簡潔なマッピングを提供するためのメモリマッピングシステムの実施例を説明する典型的なトップレベル(top-level)のブロック図である。
【図２】図２は、メモリインスタンスを説明する典型的なブロック図であり、メモリインスタンスは、読出ポートと書込ポートのポートチェーンを有する複数ポートメモリシステムとして提供されている。
【図３Ａ】図３Ａは、図２の読出ポートに対する読出ポートメモリプリミティブを説明する典型的なブロック図である。
【図３Ｂ】図３Ｂは、図２の書込ポートに対する書込ポートメモリプリミティブを説明する典型的なブロック図である。
【図４Ａ】図４Ａは、図１のメモリマッピングシステムによって合成された回路を説明する詳細図であり、［２Ｋ×１６］読出ポートメモリプリミティブを形成している。
【図４Ｂ】図４Ｂは、図１のメモリマッピングシステムによって合成された回路を説明する詳細図であり、［２Ｋ×１６］書込ポートメモリプリミティブを形成している。
【図５】図５は、図１のメモリマッピングシステムの異なる実施例を説明する典型的なブロック図であり、メモリマッピングシステムは、複数のメモリシステムを共通のメモリシステムに簡潔にマップするように構成されている。
【図１】
2006294033.tif 000007
【図２】
2006294033.tif 000008
【図３Ａ】
2006294033.tif 000009
【図３Ｂ】
2006294033.tif 000010
【図４Ａ】
2006294033.tif 000011
【図４Ｂ】
2006294033.tif 000012
【図５】
2006294033.tif 000013
【外国語明細書】
2006294033000001.pdf
2006294033000002.pdf
2006294033000003.pdf
2006294033000004.pdf