(57)【特許請求の範囲】
【請求項１】
１又は複数のターゲットメモリを含むターゲット回路設計の機能をエミュレートするための論理エミュレータのためのエミュレーションメモリであって、
アドレスポートおよびデータポートを有するメモリ回路と、
前記アドレスポートに接続されたアドレス出力ポートを有するプログラム可能なアドレス回路であって、エミュレーション時において前記ターゲット回路設計における１クロックサイクルに相当する複数のタイムスライスにわたるアドレスを格納するための格納手段を含むものと、
を具備し、前記格納手段には、エミュレーション時において、前記ターゲット回路設計の１クロックサイクルにおいてアクセスされるべき前記１又は複数のターゲットメモリの各アドレスを前記メモリ回路のアドレススペース内のメモリアドレスにそれぞれマッピングしたものが前記論理エミュレータから入力されて前記複数のタイムスライスに対応づけてそれぞれ格納され、前記アドレス回路は、該格納手段に格納された前記メモリ回路の前記メモリアドレスを前記複数のタイムスライスに対応して前記アドレス出力ポートから出力することで前記メモリ回路にアクセスすることを特徴とするエミュレーションメモリ。
【請求項２】
前記メモリ回路が４０９６×３２ビットのランダムアクセスメモリを有し、前記アドレスポートが１２ビットの入力ポートであり、前記データポートが、３２ビットの幅を有し、書込みポートと読出しポートとを有し、前記メモリ回路が４つの書込みイネーブルポートを有する請求項１に記載のエミュレーションメモリ。
【請求項３】
前記メモリ回路が第１の半導体基板上に集積されており、前記アドレス回路が第２の半導体基板上に集積されている請求項１に記載のエミュレーションメモリ。
【請求項４】
前記論理エミュレータは前記マッピングされた前記メモリ回路の前記メモリアドレスを発生するプログラマブルなルーティング及び制御回路を含んでおり、該発生された前記メモリ回路の前記メモリアドレスが前記格納手段に入力されて格納される請求項１に記載のエミュレーションメモリ。
【請求項５】
前記アドレス回路が複数のエミュレーションアドレスセレクタ回路を含み、各前記エミュレーションアドレスセレクタ回路が、１つのエミュレーションメモリアドレスの１つのアドレスビットを発生するものである請求項１に記載のエミュレーションメモリ。
【請求項６】
前記アドレス回路の前記格納手段は、前記アドレスセレクタ回路に接続されていて前記１つのエミュレーションメモリアドレスを格納するアドレスレジスタを含み、前記アドレスレジスタの出力が前記アドレス出力ポートに対応している請求項５に記載のエミュレーションメモリ。
【請求項７】
前記ターゲットメモリは、第１のタイプの第１のターゲットメモリと、第２のタイプの第２のターゲットメモリとを含んでおり、該第１のターゲットメモリおよび第２のターゲットメモリは、実際の動作時において、前記ターゲット回路設計の１クロックサイクルにおいてそれぞれアドレスを受け取ってアクセスされる性格のものであり、
前記アドレス回路は、エミュレーション時において、前記エミュレーションメモリの第１のタイムスライスにおいて第１のターゲットメモリアドレスに対応する第１のエミュレーションアドレスを発生し、前記エミュレーションメモリの第２のタイムスライスにおいて第２のターゲットメモリアドレスに対応する第２のエミュレーションアドレスを発生するものであり、これにより、第１のターゲットメモリおよび第２のターゲットメモリのエミュレーションを行うことを特徴とする請求項１に記載のエミュレーションメモリ。
【請求項８】
前記メモリ回路は、各々がＮワードのデータを格納する第１のメモリ回路と第２のメモリ回路とを含み、
前記ターゲット回路設計が、Ｍワードのデータを格納するための第１のターゲットメモリを含んでおり、前記Ｍが前記Ｎより大きな値であり、
前記格納手段には、エミュレーション時において、前記ターゲット回路設計の１クロックサイクルにおいてアクセスされるべき前記第１のターゲットメモリの前記Ｍワードのデータのアドレスを、前記Ｍワードのデータのうちの前記Ｎワードのデータに対応する前記第１のメモリ回路のための第１のエミュレーションアドレスと、前記ＭワードのデータのうちのＭ−Ｎワードのデータに対応する前記第２のメモリ回路のための第２のエミュレーションアドレスとに分割してマッピングしたものが前記論理エミュレータから入力されてそれぞれ異なるタイムスライスに対応づけてそれぞれ格納される、
ことを特徴とする請求項１に記載のエミュレーションメモリ。
【請求項９】
前記Ｎが４０９６であって、前記Ｍが６１４４であり、前記第１のエミュレーションアドレスが、前記Ｍワードのデータのワード０からワード４０９５に対応し、前記第２のエミュレーションアドレスが、前記Ｍワードのデータのワード４０９６からワード６１４３に対応するものである請求項８に記載のエミュレーションメモリ。
【請求項１０】
前記メモリ回路は、Ｎビット幅のデータワードを格納するための第１のメモリ回路を含み、
前記ターゲット回路設計がＭビット幅のデータワードを格納するための第１のターゲットメモリを含み、前記Ｍが前記Ｎより大きな値であり、
前記格納手段には、エミュレーション時において、前記ターゲット回路設計の１クロックサイクルにおいてアクセスされるべき前記第１のターゲットメモリの前記Ｍワードのデータのアドレスを、前記Ｍワードのデータのうちの前記Ｎワードのデータに対応する前記第１のメモリ回路のための第１のエミュレーションアドレスと、前記ＭワードのデータのうちのＭ−Ｎワードのデータに対応する前記第１のメモリ回路のための第２のエミュレーションアドレスとに分割してマッピングしたものが前記論理エミュレータから入力されてそれぞれ異なるタイムスライスに対応づけてそれぞれ格納される、
ことを特徴とする請求項１に記載のエミュレーションメモリ。
【請求項１１】
前記Ｎが３２であり、前記Ｍが６４である請求項１０に記載のエミュレーションメモリ。
【請求項１２】
メモリ回路を備えた論理エミュレータを使用して、１又は複数のターゲットメモリを含むターゲット回路設計の機能をエミュレートする方法であって、
コンピュータに、前記ターゲット回路設計の１クロックサイクルにおいてアクセスされるべき前記１又は複数のターゲットメモリの各アドレスを、複数のタイムスライスに対応づけて、前記メモリ回路のアドレススペース内のメモリアドレスにそれぞれマッピングする処理を行わせるステップと、
エミュレーション時において、前記マッピングされた前記メモリ回路の前記メモリアドレスを使用して、前記論理エミュレータにより、該メモリアドレスを前記複数のタイムスライスに対応づけて実時間で発生し、前記メモリ回路のアドレスに入力するステップと、
前記メモリ回路への前記メモリアドレスの入力に応じて、前記複数のタイムスライスにおいて、前記論理エミュレータにより、前記ターゲット回路設計の１クロックサイクルにおける前記１又は複数のターゲットメモリの機能をエミュレートするステップと
を具備する方法。
【請求項１３】
前記マッピングするステップの前に、前記ターゲット回路設計を前記１又は複数のターゲットメモリのサイズに従って分類するステップをさらに含む請求項１２に記載の方法。
【請求項１４】
前記メモリ回路が複数のエミュレーションメモリを備え、各前記エミュレーションメモリのサイズがＮビットであり、１つの前記ターゲットメモリのサイズがＭビットであり、前記Ｍが前記Ｎより大きな値であり、前記マッピングするステップが、
１つの前記ターゲットメモリのＮ個の下位ビットを第１のエミュレーションメモリにマッピングすることと、
１つの前記ターゲットメモリのＭ−Ｎ個の上位ビットを第２のエミュレーションメモリにマッピングすることと
を前記コンピュータに実行させることからなる請求項１２に記載の方法。
【請求項１５】
前記Ｎが１３１０７２ビットである請求項１４に記載の方法。
【請求項１６】
前記メモリ回路が、３２ビットワードを有するエミュレーションメモリを含み、１つの前記ターゲットメモリが６４ビット幅のワードを有し、前記マッピングするステップが、
前記６４ビット幅のワードのビット３１〜０を、前記エミュレーションメモリにおける第１の対のワードの第１のワードにマッピングすることと、
前記６４ビット幅のワードのビット６３〜３２を、前記第１の対のワードの第２のワードにマッピングすることと
を前記コンピュータに実行させることからなる請求項１２に記載の方法。
【請求項１７】
前記マッピングするステップが、所定のサイズより大きなサイズを有する各前記ターゲットメモリを、該所定のサイズより小さなサイズに分割することを前記コンピュータに実行させるステップを含み、分割されたサイズに従い前記マッピングを行うことを特徴とする請求項１２に記載の方法。
【請求項１８】
前記所定のサイズが、前記メモリ回路の前記アドレスのバイト数に等しいものである請求項１７に記載の方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、回路エミュレーションシステムの分野に関し、特に、エミュレーションシステム内のメモリ回路設計をエミュレートするためのシステムに関するものである。
【０００２】
【従来の技術】
電子回路設計の速度および複雑さが高まるのに伴い、様々な開発段階における回路設計のテストがますます重大になっている。論理エミュレータは、複雑な回路設計の開発が進行するのに伴って、該回路設計をテストする。論理エミュレータは、回路設計の機能をエミュレートする、ソフトウエアによって構成可能なハードウエアを含むことができる。回路設計は、該回路設計の機能および作用を記述するデータセットによって詳述される。
【０００３】
メモリ回路設計は、エミュレートされる必要がある回路設計の１つの構成要素である。回路設計は、例えば、単一ポート・ランダムアクセイメモリ（ＲＡＭ）および多重ポート・ビデオＲＡＭ（ＶＲＡＭ）などの、多種類のメモリ回路設計を含むことができる。これらのメモリ回路設計のサイズは、高さおよび幅において異なることもできる。例えば、１つのメモリ回路設計は、各々が２４ビットの幅を有する３０７２個のエントリ（３Ｋの高さ）を有するものであってよい。また、他のメモリ回路設計は、各々が１２８ビットの幅を有する１２８個のエントリ高さを有するものであってよい。
【０００４】
【発明が解決しようとする課題】
従来の論理エミュレータの場合、設計者は、自分自身のメモリ回路設計作業バージョンを配線しなければならなかった。その場合、前記設計者は、配線したメモリ回路を前記論理エミュレータにインターフェイス接続している。しかし、これは、多くの理由により望ましくない。第１に、前記メモリ回路設計は除去またはディスエーブル（不能）状態にされなければならないので、設計者は、簡単に、前記回路設計に関するソフトウエア記述を前記論理エミュレータに直接的に使用することができない。第２に、設計者は、前記論理エミュレータにインターフェイス接続すべき物理的なメモリ回路を構築しなければならない。これは、時間がかかり、エラーを生じやすく、高いコストがかかる手続きであり、設計者の新たなメモリ回路設計を容易にテスト能力を制限するものである。第３に、前記論理エミュレータは、前記メモリ回路設計の配線済バージョンと直接的にインターフェイス接続されなければならない。これは、前記論理エミュレータのコストを高くし、該論理エミュレータを他の外部回路とインターフェイス接続するために使用可能なハードウエアインターフェイス資源を拘束する。
【０００５】
米国特許No.5,448,522は、タグレジスタを使用して多重ポートメモリ回路エミュレーションを支援するシステムを開示している。エミュレートされる多重ポートメモリ回路と同数の読出しポートおよび書込みポートを実現するために、メモリアレイの多数のコピーが作成される。しかし、これには多くの問題点がある。例えば、メモリアレイの多数のコピーが必要であるので、前記エミュレータにおいて大量のメモリが使用される。さらに、メモリアレイの１つのコピーにおける書込みは、追跡され、前記メモリアレイの他のコピーに反映されなければならない。しかし、このためには、前記メモリアレイに付加的な論理が使用されなければならない。
故に、現在、改良された論理エミュレータが要求されている。
この発明は、上述の点に鑑みてなされたもので、効率的に且つ確実に、多数のメモリ回路設計をエミュレートできるようにするシステムおよび方法を提供しようとするものである。
【０００６】
【課題を解決するための手段】
この発明に係るシステムは、多数のメモリ回路設計を同時にエミュレートする。前記メモリ回路設計のアドレススペースは、前記システムのエミュレーションメモリのアドレススペースにマッピングされる。また、前記メモリ回路設計のアドレススペースは、多数の時間周期全体にわたってマッピングされる。こうして、前記システムは、多重ポートを有するメモリをエミュレートできる。
メモリ回路設計をエミュレートするためのシステムおよび方法が開示されている。このシステムは、タイムスライスされた論理エミュレータを備えている。このタイムスライスされた論理エミュレータは、１組のタイムスライスにおける機能の一部をエミュレートすることによって、ターゲット設計の１サイクルに実行される機能をエミュレートする。すなわち、１組のタイムスライスは、前記ターゲット設計における１つのクロックサイクルを示す。前記システムは、ターゲット設計に含まれる多くの異なる種類のメモリ設計をエミュレートする。このシステムは、エミュレーションメモリを備えている。前記メモリ設計は、プログラマブルなアドレス発生ブロックを介して、前記エミュレーションメモリにマッピングされる。ある特定のタイムスライスにおいて、前記プログラマブルなアドレス発生ブロックは、メモリ設計アドレスの全部または一部を１つのエミュレーションメモリのアドレスにマッピングするアドレスを発生する。前記プログラマブルなアドレス発生ブロックによって、多数のメモリ設計が１つのエミュレーションメモリにマッピング可能になり、また、１つのメモリ設計が多数のエミュレーションメモリにマッピング可能になる。このようにして、多数のタイムスライスにわたって、前記システムは、多くの異なる種類のメモリをエミュレートすることができる。
【０００７】
【発明の実施の形態】
以下、添付図面を参照してこの発明の一実施の形態を詳細に説明する。
ａ．エミュレーションシステム
図１は、様々な種類のメモリ設計を含む回路設計をエミュレートするためのエミュレーションシステムを示すものである。該エミュレーションシステムは、コンピュータシステム１００と論理エミュレータ１５０とを具備している。
前記コンピュータシステム１００は、相互に接続されたプロセッサ１１０とコンピュータメモリ１０５と外部インターフェイス１２０とを備えている。前記プロセッサ１１０は、各種処理を実行し、且つ、前記コンピュータメモリ１０５および外部インターフェイス１２０を制御するためのものである。前記コンピュータメモリ１０５は、プログラムおよびデータを格納する。また、前記外部インターフェイス１２０は、前記論理エミュレータ１５０と通信を行う。
【０００８】
前記データは回路設計１９０を含む。ターゲット（目標）設計としても知られている回路設計１９０は、前記論理エミュレータ１５０によってエミュレートされるべき回路を示す。一実施の形態において、前記回路設計１９０は、回路のVHDL記述を含んでいる。また、他の実施の形態において、前記回路設計１９０は、回路のVerilog記述を含んでいてよい。重要なことは、前記回路設計１９０が任意の数のメモリ回路設計１９５を含んでいることである。該メモリ回路設計１９５は、様々な種類のものであってよい。例えば、該メモリ回路設計１９５は、単純なＲＡＭメモリ設計と、多重ポート・キャッシュメモリ設計と、ＥＥＰＲＯＭと、レジスタファイルとを含んでいてよい。回路設計１９０に含まれることができるメモリ回路設計の種類および数は、この発明の一実施の形態に関する商業的に重要な事項である。設計者は、従来のシステムより容易に、より多くの回路をエミュレートすることができる。
【０００９】
一実施の形態において、前記コンピュータシステム１００は、米国カルフォルニア州、Mountain Viewに在るSun Microsystemsから供給されるワークステーションである。他の実施の形態において、前記コンピュータシステム１００および論理エミュレータ１５０が、１つのコンピュータシステムに含まれる。
前記論理エミュレータ１５０は、米国特許No.08/追補に詳細に開示されている。一実施の形態において、前記論理エミュレータ１５０は、タイムスライシングと呼ばれる技術を使用して、回路設計１９０の機能をエミュレートする。このタイムスライシングによって、前記論理エミュレータ１５０は、多数のクロックサイクルを使用して、前記回路設計１９０の１つのクロックサイクル中に実行される機能をエミュレートすることができる。１つのエミュレータクロックサイクルからの出力は、新たな出力を発生するためにエミュレーション回路にフィードバックされる。該エミュレーション回路は、エミュレータクロックサイクル間に再構成され、前記論理エミュレータ１５０が前記回路設計１９０の機能をエミュレートすることを可能にする。
【００１０】
前記論理エミュレータ１５０は、多数のプロセッサボード１６０を含んでいる。各プロセッサボード１６０は、ボードインターフェイス回路１６２に接続された多数の集積回路１７０を備えている。これらの集積回路１７０は、前記プロセッサボード１６０間で情報を交換することができ、従って、共働して前記回路設計１９０をエミュレートすることができる。一実施の形態において、１つの集積回路１７０は多数の小さなメモリ設計をエミュレートすることができ、多数の集積回路１７０で１つの大きなメモリ設計をエミュレートすることができる。
前記集積回路１７０は、次のような相互接続を有する多数の回路ブロックを含んでいる。前記集積回路１７０に対する入力は、ルーティングおよび制御ブロック１７２と、バックプレーンセレクタ１７４と、制御および出力回路１７１に接続されている。前記ルーティングおよび制御ブロック１７２およびバックプレーンセレクタ１７４は、出力セレクタ１７６に接続されている。該出力セレクタ１７６の出力は、レジスタ１７８、フィードバックセレクタ１７９、エミュレーションメモリ１８０および前記集積回路１７０の出力に接続されている。前記制御および出力回路１７１は、前記集積回路１７０の出力にも接続されている。
【００１１】
前記制御および出力回路１７１は、前記集積回路１７０の入力からの制御信号を受け取る。前記制御および出力回路１７１は、前記集積回路１７０内の回路を制御するための制御信号を発生する。また、前記制御および出力回路１７１は、プログラムされた出力を発生するためのプログラマブル出力メモリを含んでいる。
前記バックプレーンセレクタ１７４は、３２個の３２：１セレクタを含んでいる。こうして、前記集積回路１７０は、（ボードインターフェイス１６２から）任意の順序で、３２のバックプレーン入力のうちの任意のものを選択できるようになっている。
【００１２】
前記ルーティングおよび制御ブロック１７２は、多数のセレクタ群、レジスタ群およびプログラマブル論理ブロック群を含んでいる。回路設計１９０のエミュレーション時において、前記ルーティングおよび制御ブロック１７２は、入力およびその出力端子からのフィードバックの供給を受けながら、絶えずプログラムおよび再プログラムされる。こうして、前記ルーティングおよび制御ブロック１７２は、エミュレーション処理の大きな部分を実行する。エミュレーション時において、前記ルーティングおよび制御ブロック１７２は、エミュレーションメモリ１８０のためのアドレスおよびデータを発生するようプログラムされる。
前記レジスタ１７８は、前記セレクタ１７６からの出力を後での使用（例えば、プログラマブルなパイプラインすなわち逐次制御）のために格納する。
【００１３】
前記フィードバックセレクタ１７９は、前記出力セレクタ１７６からの直線的フィードバック、または、前記レジスタ１７８の出力からの直線的フィードバックを選択する。
前記エミュレーションメモリ１８０は、前記エミュレータ１５０が多くの種類のメモリ設計をエミュレートすることを可能にする。前記エミュレーションメモリ１８０は、前記出力セレクタ１７６からからの入力を受け取り、該出力セレクタ１７６にフィードバックされる出力を発生する。
る。
【００１４】
ｂ．エミュレーションメモリ
図２は、図１のエミュレーションメモリ１８０の一実施の形態を示す図である。一実施の形態において、前記エミュレーションメモリ１８０は、前記集積回路１７０上に集積される。他の実施の形態において、前記エミュレーションメモリ１８０は、個別の集積回路または多数の集積回路上に集積される。
前記エミュレーションメモリ１８０は、次のような接続を有する回路を含んでいる。前記エミュレーションデータセレクタ２００およびエミュレーションアドレスセレクタは、前記エミュレーションメモリ１８０の入力に接続されている。前記エミュレーションデータセレクタ２００の出力は、４Ｋ×３２のＲＡＭ２３０のデータ入力（３２ビットＷデータ）に接続されている。前記エミュレーションアドレスセレクタ２１０の出力は、エミュレーションアドレスレジスタ２２０に接続されている。前記エミュレーションアドレスレジスタ２２０の出力は、前記ＲＡＭ２３０のアドレス入力（１２ビット）と書込みイネーブル入力（４ビット）に接続されている。前記ＲＡＭ２３０は、チップセレクトライン２４０をさらに有する。該ＲＡＭ２３０の出力（３２ビットＲデータ）は、メモリ出力セレクタ２４０に接続されている。該メモリ出力セレクタ２４０の出力は、前記エミュレーションメモリ１８０の出力に接続されている。
【００１５】
前記エミュレーションデータセレクタ２００は、３２個の３２：１セレクタを含んでいる。その３２本の入力ラインは、前記エミュレーションメモリ１８０の３２ビット幅の入力データバスから来ている。これらの３２個の３２：１セレクタによって、前記エミュレーションデータセレクタ２００は、任意の入力ラインを任意のＷデータ入力に接続することができる。こうして、前記３２ビットのデータラインのうちの任意のものに前記ＲＡＭ２３０用のデータを発生させることによって、当該システムにおける融通性が提供される。
【００１６】
前記エミュレーションアドレスセレクタ２１０は、１６個の３５：１セレクタを含んでいる。各前記３５：１セレクタは、前記エミュレーションメモリ１８０の３２本の入力ラインと、１本のグラウンドラインと、１本のＶＣＣラインと、エミュレーションアドレスレジスタ２２０からの１本の対応する出力ラインとを含む３５本の入力ラインを有する。例えば、前記エミュレーションアドレスレジスタ２２０のためのアドレス２２４のビット７を出力する前記３５：１セレクタは、次のような入力を有する。すなわち、前記エミュレーションメモリ１８０の入力バスからのビット３１〜０、ＶＣＣ、グラウンド、および、前記エミュレーションアドレスレジスタ２２０によって出力されるアドレス２２４のビット７である。このようにして、前記エミュレーションアドレスセレクタ２１０は、前記エミュレーションメモリ１８０の入力、前記エミュレーションアドレスレジスタ２２０からのフィードバック、設定値（前記ＶＣＣラインおよびグラウンドラインからの０もしくは１）、または、これらのラインの組合わせを選択する。
【００１７】
前記エミュレーションアドレスレジスタ２２０は、前記エミュレーションアドレスセレクタ２１０からの出力を格納する。前記エミュレーションアドレスレジスタ２２０の出力は、１２ビットのアドレス２２４と、４本の書込みイネーブルラインとを含むものである。前記アドレス２２４は前記ＲＡＭ２３０における１つの３２ビットエントリのアドレスを選択し、前記４本の書込みイネーブルラインは前記エントリの４バイトのうちのどのバイトに書込みを行うべきかを選択するものである。このようにして、前記アドレス２２４と書込みイネーブル２２２との組合わせを使用することによって、前記ＲＡＭ２３０における任意のバイトに選択的に書込みを行うことができる。
【００１８】
前記エミュレーションアドレスレジスタ２２０によって、前記エミュレーションメモリ１８０は、エミュレーション時における多数のタイムスライスにわたるアドレスを格納することができる。例えば、１つのタイムスライスにおいて、３２ビットのデータエントリの下位１６ビットのみが前記ルーティングおよび制御ブロック１７２によって発生される、と仮定する。また、前記データエントリのアドレスも発生される、と仮定する。前記エミュレーションアドレスレジスタ２２０は、第１のタイムスライス時に前記アドレスを格納することができるが、前記ＲＡＭ２３０におけるエントリの２つの下位バイトのみをイネーブル状態にする。次のタイムスライスにおいて、前記ルーティングおよび制御ブロック１７２によって、上位１６ビットの情報が発生される。この場合、上記と同じアドレスが使用されるが、前記ＲＡＭ２３０におけるエントリの２つの上位バイトのみがイネーブル状態にされる。従って、同一のメモリ一に対する多重メモリアクセスのために、アドレスを発生しなおす必要がない。
【００１９】
前記ＲＡＭ２３０の出力（Ｒデータ）は、メモリ出力セレクタ２４０に接続されている。該メモリ出力セレクタ２４０は、３２個の３２：１マルチプレクサを含んでいる。これら３２個の３２：１マルチプレクサによって、前記ＲＡＭ２３０からのデータラインのうちの任意のものが、前記エミュレーションメモリ１８０の出力の任意のデータに接続可能になる。
前記エミュレーションデータセレクタ２００、エミュレーションアドレスセレクタ２１０、エミュレーションアドレスレジスタ２２０、セレクタ２４０および前記ＲＡＭ２３０のチップセレクトは、すべて、前記制御および出力回路１７１によって制御される。
【００２０】
前記ＲＡＭ２３０は、読出しポートと書込みポートとを有する、４Ｋ×３２ビットのスタティックＲＡＭを含んでいる。該ＲＡＭ２３０はライトスルー（write-through）メモリである（すなわち、１クロックサイクル中にある値Ｘが書かれた場合、該値Ｘは、同じクロックサイクル中に、前記ＲＡＭ２３０の出力に現れる）。他の実施の形態において、前記ＲＡＭ２３０の代りに、および／または、該ＲＡＭ２３０に加えて、１６Ｋ×６４のＥＥＰＲＯＭまたは１Ｍ×１のＤＲＡＭのような他の種類のメモリが使用される。さらに、前記ＲＡＭ２３０は、前記集積回路１７０上に含まれている必要はない。こうして、一実施の形態において、前記ＲＡＭ２３０は前記集積回路１７０である。これら多種類のメモリの場合、前記エミュレーションデータセレクタ２００、エミュレーションアドレスセレクタ２１０、エミュレーションアドレスレジスタ２２０およびメモリ出力セレクタ２４０に対して、対応する変更がなされる。
【００２１】
ｃ．多数のメモリ設計をエミュレートする方法の一実施の形態
図３は、多数のメモリ回路設計１９５をエミュレートする方法の一実施の形態を示すものである。この実施の形態は、前記コンピュータシステム１００およびエミュレータ１５０において実施されることができる。一般に、この実施の形態は、前記メモリ回路設計１９５を１つまたは複数のエミュレーションメモリ１８０にマッピングする。このマッピング処理は、メモリ回路設計１９５を識別し、該メモリ回路設計１９５のアドレススペースと前記エミュレーションメモリ１８０のアドレススペースとの間の有効相関関係を決定することを含むものである。
【００２２】
ブロック３１０において、前記コンピュータシステム１００は、回路設計１９０内におけるメモリ回路設計１９５を識別する。これは、ターゲット回路設計１９５の動作に関する記述を分析することによって実行可能である。前記コンピュータシステム１００は、各前記メモリ回路設計のビット幅およびエントリ高さを識別する。こうして、各前記メモリ回路設計は、該メモリ回路設計におけるエントリ数、および、各エントリにおけるビット数によって識別される。さらに、各前記メモリ回路設計ごとのポートの数および種類が識別される。例えば、前記コンピュータシステム１００は、あるメモリ回路設計を、１Ｋのエントリおよび３２ビット幅のエントリを有するデュアルポートＲＡＭとして識別することができる。
【００２３】
次に、ステップ３２０において、すべてのメモリの種類が処理されたか否かが判定される。ノーである場合、ブロック３２３および３２５の処理が実行される。
ブロック３２３では、各メモリ回路設計の幅が、前記ＲＡＭ２３０の最も近い書込みイネーブル境界にパディングされる。例えば、あるメモリ回路設計が４ビット幅のエントリを有するが、前記ＲＡＭ２３０のための書込みイネーブルが８ビット境界上にある場合、前記メモリ回路設計の幅が８ビットに増加される。従って、このブロックは、前記ＲＡＭ２３０の最小細分性を、前記メモリ回路設計のエントリの幅に一致させる。前記出力セレクタ２４０はメモリ値が個々のビットとしてアクセスされ得るようにするので、読出し専用メモリの場合はすべて、前記パディングは必要ではない。
【００２４】
次に、ステップ３２５において、各前記メモリ回路設計のビットサイズが求められる。これは、前記パディングされた幅をエントリの数と乗算することによって行われる。例えば、図２のエミュレーションメモリ１８０の場合、１Ｋ×３２のメモリ回路設計は３２７６８ビットを有し、１Ｋ×４のメモリ回路設計は８１９２（１Ｋ×８−８にパディングされる幅）ビットを有する。
すべてのメモリ回路設計が処理された後、ブロック３３０において、該メモリ回路設計１９５がサイズ別に分類される。もっとも大きなメモリが、分類リストの最初にくる。
【００２５】
次に、ブロック３４０において、前記コンピュータシステム１００は、すべてのメモリ回路設計１９５が前記エミュレーションメモリ１８０にマッピングされたか否かを判定する。すべてのメモリ回路設計１９５がマッピングされてない場合、ブロック３４３およびブロック３４５が実行される。こうして、ブロック３４３およびブロック３４５が、もっとも大きなサイズのメモリ回路設計１９５から、各メモリ回路設計１９５ごとに実行される。
ブロック３４３において、特定のメモリ回路設計１９５のアドレススペースが、前記エミュレーションメモリ１８０のアドレススペースにマッピングされる。前記エミュレーションメモリ１８０のアドレススペースは、１つの大きなメモリスペース（メモリパレット）として扱われる。そして、各メモリ回路設計が、前記メモリパレットの対応する部分に割り当てられる。図４はブロック３４３を示している。
【００２６】
ブロック３４５において、必要に応じて、複数の異なるサブスペースについて付加的なタイムスライスが割り当てられる。理想的には、すべてのメモリ回路設計１９５は、ＲＡＭ２３０の一部に割り当てられる。しかし、前記メモリ回路設計が多重ポートメモリのためのものである場合、付加的なタイムスライスが必要になる。第１のタイムスライスにおいて、前記エミュレーションメモリ１８０は第１のポートによるアクセスをエミュレートでき、第２のタイムスライスにおいて、前記エミュレーションメモリ１８０は第２のポートによるアクセスをエミュレートできる。このように、一実施の形態において、前記付加的なタイムスライスが、１を超える各メモリ回路設計ごとに追加される。
【００２７】
前記ＲＡＭ２３０の幅より広いメモリ回路設計１９５について、さらに付加的なタイムスライスが追加されてよい。例えば、前記メモリ回路設計が６４ビットの幅であり、前記ＲＡＭ２３０が３２ビットの幅である、と仮定する。さらに、前記マッピングブロック３４３が前記メモリ回路設計のアドレススペースを示す２つのアドレスサブスペースを作成する、と仮定する。また、前記２つのアドレスサブスペースが１つのＲＡＭ２３０のアドレススペースにマッピングされる、と仮定する。そして、第１のタイムスライスにおいて、前記メモリ回路設計のエントリの下位３２ビットが前記ＲＡＭ２３０に書き込まれ、第２のタイムスライスにおいて、前記メモリ回路設計のエントリの上位３２ビットが前記ＲＡＭ２３０に書き込まれる。
【００２８】
付加的なタイムスライスを追加する他の理由は、複数の異なるメモリのアドレススペースが前記ＲＡＭ２３０のアドレススペースにマッピングされ、前記ＲＡＭ２３０に対するアクセスに衝突が生じる、場合に発生する。例えば、２つのメモリ回路設計１９５が前記ＲＡＭ２３０のアドレススペースにマッピングされ、これら２つのメモリ回路設計が同一のサイクル内にアクセスされるべきことが回路設計１９０によって定義されている場合、付加的なタイムスライスが必要になる。
【００２９】
すべてのメモリ回路設計１９５のアドレススペースがマッピングされた後、ブロック３５０において、前記エミュレータ１５０が前記コンピュータシステム１００によってプログラムされる。これは、前記制御および出力回路１７１に制御プログラムをロードすることを含む。このロードの一部は、前記ルーティングおよび制御ブロック１７２および前記集積回路１７０の他の構成要素が前記メモリ回路のアドレススペースを前記エミュレーションメモリ１８０のアドレススペースにマッピングするための正しいアドレスおよびデータ情報を前記エミュレーションメモリ１８０に供給する、ことを保証する制御信号を含む。次に、エミュレーションが実行される。これは、前記回路設計１９０を実施するためのテストベクトルを前記エミュレータ１５０に供給することを含むものである。
【００３０】
図４は、前記メモリ回路設計を前記エミュレーションメモリ１８０のアドレススペースにマッピングする方法の一実施の形態を示すものである。
ブロック４１０において、１つまたは複数の部分的アドレスサブスペースを発生するために、前記メモリ回路のアドレススペースが、前記ＲＡＭ２３０の高さによって割られる。このブロック４１０は、前記ＲＡＭ２３０全体に前記メモリ回路のアドレススペースを配分することによって、前記ＲＡＭ２３０の高さより大きな高さを有するメモリ回路設計を前記エミュレーションメモリ１８０のアドレススペースにはめ込む、という課題を解決するものである。
【００３１】
ブロック４２０では、必要に応じて、前記部分的アドレスサブスペースがさらに分割される。ブロック４１０において作成された部分的アドレスサブスペースが、アドレスサブスペースを発生するために、前記ＲＡＭ２３０の幅によって割られる。こうして、ブロック４１０は、前記ＲＡＭ２３０における多数のエントリ全体に前記メモリ回路設計のアドレススペースを配分することによって、前記ＲＡＭ２３０の幅より大きな幅を有するメモリ回路設計を前記エミュレーションメモリ１８０のアドレススペースにはめ込む、という課題を解決するものである。
【００３２】
ブロック４３０では、前記コンピュータシステム１００は、前記アドレスサブスペースと前記エミュレーションアドレススペースとの間の関係を求める。これは、前記論理エミュレータにおいて、特定のサブスペースをＲＡＭ２３０の特定の部分に割り当てることを含むものである。
【００３３】
ｄ．メモリ設計をエミュレーションメモリにマッピングする例
図５は、１つの設計における多数のメモリが前記エミュレーションメモリ１８０にマッピングされる一例を示すものである。上述の如く、ソフトウエアツールは、前記エミュレーションメモリ１８０のアドレススペースを１つの大きなメモリパレットとして扱う。前記メモリ回路設計１９５は、該メモリパレット５００にマッピングされる。
この例において、前記回路設計１９０は、８Ｋ×６４ビットのメモリ５１０、３Ｋ×３２ビットのデュアルポートメモリ５２０、４×２５６ビットのメモリ５３０、１２８×１２８ビットのメモリ５４０、および、３２×３２ビットのメモリ５５０であるメモリ回路設計１９５を含んでいる。これらのメモリ回路設計１９５は、図３のステップを使用して前記メモリパレット５００にマッピングされる。
【００３４】
この例の目的のために、前記メモリパレット５００は、４Ｋ×３２ビットの６倍のアドレススペースのみを示している。あるシステムにおいて、前記メモリパレット５００は、これよりはるかに大きなメモリスペースを有する。一例として、前記メモリパレット５００は、前記ＲＡＭ２３０の物理的なアドレススペースを示す４Ｋ×３２ビットの境界を有する。
【００３５】
図３および図４に説明された実施の形態に続いて、前記メモリ回路設計１９５は、次のように前記メモリパレット５００にマッピングされる。
先ず、ブロック３１０において、すべての前記メモリ回路設計１９５が識別される。次に、ブロック３２３およびブロック３４５の処理が各前記メモリ回路設計１９５ごとに実行される。前記ＲＡＭ２３０の書込みイネーブル境界がバイト境界上にあるこの例において、ブロック３２３は、１Ｋ×４ビットのメモリ５３０を１Ｋ×８ビットのメモリ５３０にパッディングする。このため、次のメモリは、次の表１に示すようなサイズを有する。
【００３６】
【表１】
0003995751.tif 000002
次の表２は、前記ブロック３３０の実行後におけるメモリ回路設計１９５の分類リストを示すものである。
【００３７】
【表２】
0003995751.tif 000003
【００３８】
次に、各前記メモリ回路設計１９５が、前記メモリパレット５００にマッピングされる。ブロック４１０において、前記８Ｋ×６４ビットのメモリ５１０のアドレススペースは、各々が４Ｋ×６４ビットである２つの部分的サブスペースに分けられる。そして、ブロック４２０において、前記２つの部分的サブスペースは、さらに、各々が４Ｋ×３２ビットである完成サブスペースに分けられる。ブロック４３０において、これら４つの完成サブスペースは、前記メモリパレット５００の第１の利用可能アドレススペース（最初の４つのエミュレーションメモリ１８０のアドレススペース）にマッピングされる。ブロック４１０およびブロック４２０の処理は、前記３Ｋ×３２ビットのメモリ５２０について実行され、１つの３Ｋ×２４ビットのアドレスサブスペースを発生する。このアドレスサブスペースは、ブロック４３０において、前記メモリパレット５００の次の利用可能な部分にマッピングされる。次に、１２８×１２８ビットのメモリ５４０が、ブロック４１０およびブロック４２０の処理を受ける。ブロック４１０は、１２８×１２８ビットの部分的アドレスサブスペースを形成する。ブロック４２０は、１２８×３２ビットの完成アドレスサブスペースを形成する。そして、前記コンピュータシステム１００は、これらのサブスペースを前記メモリパレット５００における次の利用可能なスペースにマッピングする。その後、ブロック４１０およびブロック４２０が、１Ｋ×４ビットのメモリ５３０について実行され、１Ｋ×８のアドレスサブスペースを形成する。第５番目のエミュレーションメモリ１８０のアドレススペースには未だ余裕があるので、前記１Ｋ×８のアドレスサブスペースが１Ｋ×２４のアドレスサブスペースの次のスペースにマッピングされる。次に、３２×３２ビットのメモリ５５０が、ブロック４１０およびブロック４２０の処理を受ける。これは、前記メモリパレット５００の次の利用可能なエリアにマッピングされる。
【００３９】
表３はブロック３４５の結果を示すものである。前記マッピングが１つのメモリ回路設計１９５について行われた後、ブロック３４５の処理が実行される。表３は、タイムスライス割り当ての結果を示す。
このタイムスライス割り当てにおいて、多数の衝突が付加的なタイムスライスを必要とする。１つのメモリ回路設計の多重ポート（例えば、３４×２４のデュアルポートメモリ５２０）が存在する場合に、このような衝突が発生する。さらに、前記回路設計１９０（例えば、３Ｋ×２４のメモリ５２０、１Ｋ×４のメモリ５３０および３２×３２のメモリ５５０）の同一クロックサイクルにおいて、２つまたは３つ以上メモリ回路設計１９５が書込まれ、または、読み出されるべき場合に、このような衝突が発生する。例えば、前記回路設計１９０のすべてのクロックサイクルにおいて、すべてのメモリ回路設計１９５が書込まれ、または、読み出されるべき場合を仮定する。多くの回路設計１９０において、実際はそうではなく、衝突が発生しないので、多数のタイムスライスの分解は必要とならない。
【００４０】
【表３】
0003995751.tif 000004
【００４１】
この発明の他の実施の形態は、上述した基本的なマッピングアルゴリズムに対する多くの改善点を有する。例えば、一実施の形態において、付加的なタイムスライスを追加する必要性を回避するために、前記回路設計１９０の同一クロックサイクルでアクセスされるメモリ回路設計１９５は、複数の異なるＲＡＭ２３０にマッピングされる。また、他の実施の形態において、３２ビットより広いメモリ回路設計１９５から形成されるサブスペース組は、前記複数のＲＡＭ２３０全体にマッピングされる。これは、前記ルーティングおよび論理ブロック１７２における潜在的に重複した処理を犠牲にして必要とされるタイムスライスの数を減少させる。
【００４２】
【発明の効果】
以上のように、この発明は、効率的に且つ確実に、多数のメモリ回路設計をエミュレートできる、という優れた効果を奏するものである。
【図面の簡単な説明】
【図１】エミュレーションメモリ回路を有するエミュレーションシステムを示す図。
【図２】前記エミュレーションシステムに使用されるエミュレーションメモリ回路を示す図。
【図３】メモリ回路設計を含む回路設計エミュレートする方法の一実施の形態を示す図。
【図４】メモリ回路設計を前記エミュレーションメモリにマッピングする方法の一実施の形態を示す図。
【図５】メモリ回路設計をエミュレーションメモリアドレススペースにマッピングする一例を示す図。
【符号の説明】
１００    コンピュータシステム
１０５    コンピュータメモリ
１１０    プロセッサ
１５０    論理エミュレータ
１７０    集積回路
１８０    エミュレーションメモリ
【図１】
0003995751.tif 000005
【図２】
0003995751.tif 000006
【図３】
0003995751.tif 000007
【図４】
0003995751.tif 000008
【図５】
0003995751.tif 000009