(57)【特許請求の範囲】
【請求項１】
汎用メモリ装置と、
検証回路のデータを保存している記憶装置と、
前記汎用メモリ装置と前記記憶装置の間に介設されているエミュレータとを含み、
前記汎用メモリ装置は、
制御回路と、
各々に所定の順番を有する複数のメモリを備え、
前記検証回路は、各々に設定される順番を有する複数のメモリブロックを有し、
前記制御回路は、
メモリ照合回路を備え、
前記メモリ照合回路は、下記３つのルール：
ルール１：
実装されている複数の前記メモリの全てを使うように前記設定される順番に基づいて前記複数のメモリブロックを複数の前記メモリのうち前記所定の順番に対応する１つのメモリに循環的に割り当てること
ルール２：
前記ルール１において、複数の前記メモリブロックのうちの１つのメモリブロックを前記１つのメモリに格納することができない場合、前記１つのメモリブロックを前記１つのメモリの次の順番のメモリに格納すること
ルール３：
前記ルール２が適用された場合、前記１つのメモリに前記１つのメモリブロックの順番の次の順番のメモリブロックを格納すること
に従って前記複数のメモリブロックと複数の前記メモリとの照合を実行し、前記照合に基づいて複数の前記メモリブロックを複数の前記メモリに振り分ける
エミュレータ用汎用メモリシステム。
【請求項２】
複数の前記メモリブロックは、第１データサイズと第１データアドレスをそれぞれに有し、
前記複数のメモリは、第２データサイズと第２データアドレスをそれぞれに有し、
前記第２データサイズは、前記第１データサイズよりも小さくなく、且つ、前記第２データアドレスは、前記第１データアドレスよりも小さくない
請求項１に記載のエミュレータ用汎用メモリシステム。
【請求項３】
前記メモリ照合回路は、ハードウエア記述言語（ＶＨＤＬ）を用いて、複数の前記メモリブロックのアドレスとデータのサイズを記述する
請求項１または請求項２に記載のエミュレータ用汎用メモリシステム。
【請求項４】
前記制御回路は、
前記エミュレータの動作スピードと前記メモリ制御回路のメモリ格納動作スピードとを整合させる速度変換回路を更に備える
請求項１〜３から選択される１請求項のエミュレータ用汎用メモリシステム。
【請求項５】
前記制御回路は、
コマンド振り分け回路と、
メモリ制御回路を更に備え、
前記コマンド振り分け回路は、前記メモリ照合回路から前記メモリブロックの前記設定される順番と前記メモリの前記所定の順番との対応関係のもとで、前記速度変換回路から受信するコマンドを前記メモリ制御回路に送信し、
前記メモリ制御回路は、前記コマンドに基づいて前記メモリを制御する
請求項４に記載のエミュレータ用汎用メモリシステム。
【請求項６】
前記メモリ制御回路は、前記コマンドがリードコマンドである場合、前記コマンドに付加されている対応関係に基づいて、前記メモリから前記メモリブロックに格納されるデータを読み出して受信し、前記メモリブロックに格納されるデータを前記記憶装置に前記エミュレータを介して返送する
請求項５に記載のエミュレータ用汎用メモリシステム。
【請求項７】
端末を更に含み、
前記汎用メモリ装置は、解析用メモリを更に備え、前記解析用メモリに格納されているデバッグ用プログラムにより前記端末から与えられるコマンドに従って、前記メモリブロックをデバッグする
請求項１から請求項６のいずれかに記載のエミュレータ用汎用メモリシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、エミュレータ用汎用メモリシステムに関する。
【０００２】
【従来の技術】
大規模なＬＳＩの開発のためには、その開発期間の短縮とその開発コストの削減が要請される。大幅なそのような削減のために、エミュレータが用いられている。エミュレータの検証環境で使用される公知のメモリ装置は、非常に高価であり、且つ、そのメモリ容量が小さい問題点があり、更に、そのメモリ装置のメモリ容量に存在する空き容量が有効に利用されていない問題点がある。このような問題点が残存する公知装置では、メモリ容量を削減して検証範囲を狭めることを余儀なくされ、又は、複数の検証回路を用意することを余儀なくされている。
【０００３】
メモリ装置のメモリ資源を有効に活用することができることが求められる。更に、メモリ容量を意識しない検証回路設計を実現し、更に、その検証範囲を拡大する検証回路を実現することが望まれる。
【０００４】
【発明が解決しようとする課題】
本発明の課題は、メモリ装置のメモリ資源を有効に活用することにより、メモリ容量を意識しない検証回路の設計を実現することができるエミュレータ用汎用メモリシステムを提供することにある。
本発明の他の課題は、メモリ装置のメモリ資源を有効に活用することにより、検証範囲を拡大する検証回路を実現することができるエミュレータ用汎用メモリシステムを提供することにある。
【０００５】
【課題を解決するための手段】
その課題を解決するための手段が、下記のように表現される。その表現中に現れる技術的事項には、括弧（）つきで、番号、記号等が添記されている。その番号、記号等は、本発明の実施の複数・形態又は複数の実施例のうちの少なくとも１つの実施の形態又は複数の実施例を構成する技術的事項、特に、その実施の形態又は実施例に対応する図面に表現されている技術的事項に付せられている参照番号、参照記号等に一致している。このような参照番号、参照記号は、請求項記載の技術的事項と実施の形態又は実施例の技術的事項との対応・橋渡しを明確にしている。このような対応・橋渡しは、請求項記載の技術的事項が実施の形態又は実施例の技術的事項に限定されて解釈されることを意味しない。
【０００６】
本発明によるエミュレータ用汎用メモリシステムは、汎用メモリ装置（１）と、検証回路（５）のデータを保存している記憶装置（４）と、汎用メモリ装置（１）と記憶装置（４）の間に介設されているエミュレータ（２）とから構成されている。汎用メモリ装置（１）は、制御回路（８）と、複数のメモリ（７）を備えている。複数のメモリの各々（７−ｋ）は、所定の順番（ｋ）を有する。検証回路（５）は、複数のメモリブロック（６）を有している。複数のメモリブロックの各々（６−ｊ）は、設定される順番（ｊ）を有する。制御回路（８）は、メモリ照合回路（１２）を備え、メモリ照合回路（１２）は、３つのルール：
ルール１：
実装されている複数のメモリ（７）の全てを使うように、設定される順番（ｊ）に基づいて複数のメモリブロック（６）を複数のメモリ（７）のうち所定の順番（ｋ）に対応する１つのメモリ（７−ｋ）に循環的に割り当てること
ルール２：
ルール１において、複数のメモリブロック（６）のうちの１つのメモリブロック（６−ｊ）を複数のメモリのうちの１つのメモリ（７−ｋ）に格納することができない場合、１つのメモリブロック（６−ｊ）を１つのメモリ（７−ｋ）の次の順番のメモリ（７−（ｋ＋１））に格納すること
ルール３：
ルール２が適用された場合、１つのメモリ（７−ｋ）に１つのメモリブロック（６−ｊ）の順番の次の番号のメモリブロック（６−（ｊ＋１））を格納すること
に従って複数のメモリブロック（６）と複数のメモリ（７）との照合を実行し、その照合に基づいて複数のメモリブロック（６）を複数のメモリ（７）に振り分けて格納する。
【０００７】
このようなルールは、格納可能に必然的に決定される順番に従って、複数のメモリブロックを複数のメモリに自動的に格納する秩序を作り、無意識的に大規模ＬＳＩの設計が可能になり、設計時間の短縮を確実に可能にする。メモリ装置のメモリ資源を有効に活用することにより、メモリ容量を意識しない検証回路の設計を実現することができる。
【０００８】
複数のメモリブロック（６）は、第１データサイズと第１データアドレスをそれぞれに有し、複数のメモリ（７）は、第２データサイズと第２データアドレスをそれぞれに有し、第２データサイズは、第１データサイズよりも小さくなく、且つ、第２データアドレスは、第１データアドレスよりも小さくない。このような条件のもとで、記述のルールが更に有効に活用される。
【０００９】
メモリ照合回路（１２）は、ハードウエア記述言語を用いて、複数の前記メモリブロックのアドレスとデータのサイズを記述していて、検証回路が異なった場合にも、アドレスサイズとデータサイズを変更することにより、汎用メモリ装置（１）をそのままに使用することができる。
【００１０】
制御回路（８）は、エミュレータ（２）の動作スピードとメモリ制御回路（１５）のメモリ格納動作スピードとを整合させる速度変換回路（１３）を備えることが特に好ましい。
【００１１】
制御回路（８）は、コマンド振り分け回路（１４）と、メモリ制御回路（１５）を更に備えている。コマンド振り分け回路（１４）は、メモリ照合回路（１２）からメモリブロック（６）の設定される順番を示すメモリブロック番号とメモリ（７）の所定の順番を示すメモリ番号との対応関係のもとで、速度変換回路（１３）から受信するコマンドをメモリ制御回路（１５）に送信する。メモリ制御回路（１５）は、そのコマンドに基づいてメモリ（７）を制御する。このようなメモリ制御回路の追加は、後述される返送とデバッグを容易に可能にする。
【００１２】
メモリ制御回路（１５）は、コマンドがリードコマンドである場合、そのコマンドに付加されている対応関係に基づいて、メモリ（７）からメモリブロック（６）を読み出して受信し、記憶装置（４）にメモリブロック（６）をエミュレータ（２）を介して返送することができる。
【００１３】
端末（９）と、解析用メモリ（１７）とが更に追加される。汎用メモリ装置（１）は、解析用メモリ（１７）に格納されているデバッグ用プログラムにより端末（９）から与えられるコマンドに従って、メモリブロック（６）をデバッグすることができる。
【００１４】
【発明の実施の形態】
図に対応して、本発明によるエミュレータ用汎用メモリシステムの実施の形態は、大容量の汎用メモリ装置がエミュレータとともに設けられている。その汎用メモリ装置１は、図１に示されるように、エミュレータ２に双方向に接続している。エミュレータ２は、第１端末３により操作され得る。エミュレータ２は、記憶装置４に接続している。記憶装置４は、検証回路５のデータを保存している。
【００１５】
検証回路５の中では、図２に示されるように、複数のメモリブロック６が用いられている。メモリブロック６として、第１メモリブロック６−１と、第２メモリブロック６−２と、第３メモリブロック６−３と、第４メモリブロック６−４とが例示されている。このように構成される検証回路５のデータは、記憶装置４から読み出され、エミュレータ２内に検証回路５が模擬的に構築される。ここで、メモリブロック６に付与された“−”以降の番号をメモリブロック番号とし、この番号の順番に割り当て設定がなされる。
【００１６】
汎用メモリ装置１は、メモリブロック６を組ブロックとして格納するメモリ７と、複数のメモリブロックを組み合わせて結合し組ブロックを生成する制御回路８を備えている。汎用メモリ装置１は、更に、ライト／リードのようなコマンドにより、メモリ７に格納された組ブロックの内容を第２端末９を用いて解析するＣＰＵ１１を備えている。ＣＰＵ１１は、解析用メモリ１７に記憶されている解析用プログラムによりその解析を実行する。メモリ７は、第１増設メモリ７−１、第２増設メモリ７−２、第ｚ増設メモリ７−ｚのｚ個のメモリを有している。ここで、各増設メモリに付与された“−”以降の番号をメモリ番号とし、この番号の順番に複数のメモリブロック６が割り当てられる。
【００１７】
制御回路８は、メモリ７を初期化し検証回路５に含まれるメモリブロック６をメモリ７に割り当てるメモリ照合回路１２と、エミュレータ２の動作スピードと汎用メモリ装置１の動作スピードとの差分を吸収する速度変換回路１３と、メモリブロック６が格納された増設メモリ７−ｊに対して発行されるエミュレータ２のコマンドを振り分けるコマンド振り分け回路１４と、エミュレータ２のコマンドに基づいて特定の増設メモリを制御するメモリ制御回路１５と、後述されるメモリ容量オーバーを検出しエラーを出力するエラー検出回路１６とを備えている。
【００１８】
図２に示されるように、第１メモリブロック６−１と、第２メモリブロック６−２と、第３メモリブロック６−３と、第４メモリブロック６−４のそれぞれのアドレス（メモリ）サイズは、３２ワード、１６ワード、６４ワード、３２ワードとして例示されている。第１メモリブロック６−１と、第２メモリブロック６−２と、第３メモリブロック６−３と、第４メモリブロック６−４のそれぞれのデータサイズとして、３２、６４、７２、６４ビット／ワードが例示されている。メモリ７として、８０ワード×７２ビットのメモリ容量を持つ第１増設メモリ７−１と第２増設メモリ７−２とが実装されて用意されている。
【００１９】
図３は、各メモリブロック６−１，２，３，４のデータをメモリ７に対して送信し、メモリ７のデータをメモリ７から受信して検証回路５を検証するインタフェースが追加された検証環境の構築を示している。検証回路５とメモリ７とはその検証環境に置かれて、検証回路５とメモリ７との間で、アドレスとデータと制御信号とメモリブロック番号に関して送受信が行われ、メモリブロック番号はコマンド実行時に出力される。
【００２０】
メモリ照合回路１２は、図４に示されるように、ハードウエア記述言語（ＶＨＤＬ）を用いて、各メモリブロックのアドレスとデータのサイズが設定される。そのアドレスとデータとは、ＶＨＤＬのｃｏｎｓｔａｎｔ文を用いて、次のように記述される。
constant aabit : std logic vector(7 down to 0) : = "00100000";
constant dabit : std logic vector(7 down to 0) : = "00100000";
ここで、ａａｂｉｔは第１メモリブロック６−１のアドレスサイズであり３２ワード（５ビット）が例示され、ｄａｂｉｔは第１メモリブロック６−１のデータサイズであり３２ビットが例示されている。ｃｏｎｓｔａｎｔの名前は、任意である。サイズは、２進表現で示されている。検証回路が異なった場合にも、アドレスサイズとデータサイズを変更することにより、汎用メモリ装置１を使用することができる。
【００２１】
第１増設メモリ７−１と第２増設メモリ７−２のアドレスは、１６進表現で、 “０”ｈ〜“４Ｆ”ｈであり、ワード数は既述の通り、８０である。次に、メモリ照合回路１２は、第１増設メモリ７−１と第２増設メモリ７−２を初期化して、それらのスタートアドレスの番地を “０”に設定する。このようにメモリ７を初期化した後に、メモリブロック番号がもっとも小さい第１メモリブロック６−１は既述の記述言語により第１増設メモリ７−１に格納される。第１メモリブロック６−１を格納する第１増設メモリ７−１のスタートアドレスは０番地である。
【００２２】
順次にメモリブロック番号が若い順に、複数のメモリブロックをメモリ７に格納して行くためのルールが、次のように規定される：
ルール１：
実装されているメモリ７を全て使うようにするため、メモリブロック番号順にメモリブロック６−ｋをメモリ７−ｊにメモリ番号順に割り当てる。全てのメモリ７−ｊにメモリブロック６−ｋが割り当てられたら、最初に割り当てたメモリ７−１から順に繰り返すこと（今の場合、２枚のメモリ７−１，７−２を交互に用いること）。
ルール２：
ルール１において、格納対象のメモリブロック６−ｋのデータ量がメモリ７−ｊのメモリ容量を越える場合には、メモリブロック６−ｋをメモリ７−ｊの次のメモリ番号のメモリ７−（ｊ＋１）に格納すること。
ルール３：
ルール２が適用された場合、メモリ７−ｊにはメモリブロック６−ｋの番号の次の番号のメモリブロック６−（ｋ＋１）を格納すること。
【００２３】
このようなルールに従えば、例示される第１メモリブロック６−１と第２メモリブロック６−２は、第１増設メモリ７−１と第２増設メモリ７−２とに下記されるように格納されることになる。第１メモリブロック６−１は、第１増設メモリ７−１のメモリ容量を越えないので、ルール１に従って、無条件に第１増設メモリ７−１に格納される。ルール１に従って、第２メモリブロック６−２は第２増設メモリ７−２に格納されるべきである。第２メモリブロック６−２は、無条件に第２増設メモリ７−２に格納される。
【００２４】
今の場合、メモリ７としては２枚しかないので、第３メモリブロック６−３は、ルール１に従って、第１増設メモリ７−１に格納されるべきである。３２ワードのアドレスサイズの第１メモリブロック６−１は、第１増設メモリ７−１の中で、番地“０”ｈ〜“１Ｆ”ｈに格納されている。第３メモリブロック６−３が第１増設メモリ７−１に格納されるならば、そのスタートアドレスは、“２０”ｈ（＝ “１Ｆ”ｈ＋“１”ｈ）になる。第３メモリブロック６−３のアドレスサイズは、６４ワードであり、第１メモリブロック６−１と第３メモリブロック６−３とを割り付けた場合の最終アドレスは、“５Ｆ”ｈ（＝“２Ｆ”ｈ＋１＋“３Ｆ”ｈ）であり、第１増設メモリ７−１の最終アドレスである“４Ｆ”ｈを越えてしまう。
【００２５】
第１増設メモリ７−１に第３メモリブロック６−３が格納できないため、ルール２に従って、第３メモリブロック６−３は次のメモリ番号に対応する第２増設メモリ７−２に格納される。既に割り当てられている第２メモリブロック６−２は、第２増設メモリ７−２の領域“０”ｈ〜“Ｆ”ｈに格納されている。したがって、第３メモリブロック６−３は、第２増設メモリ７−２の“１０”ｈ（＝“Ｆ”ｈ＋“１”ｈ）〜“４Ｆ”ｈに格納される。ルール２が適用されたので、ルール３に従って、次に割り当てする第４メモリブロック６−４が第１増設メモリ７−１に格納されることになる。第４メモリブロック６−４は、第１増設メモリ７−１の領域“２０”ｈ〜“３Ｆ”ｈに格納されることになる。
【００２６】
コマンド振り分け回路１４は、メモリブロック６の格納が完了すれば、速度変換回路１３で速度変換されたコマンドを受信し、コマンドに付属する情報をメモリ照合回路１２から受信する。コマンド振り分け回路１４は、メモリ照合回路１２から受信したメモリブロック６−ｊのメモリブロック番号とメモリブロック６−ｊを格納している増設メモリ７−ｋのメモリ番号との対応関係に基づいて、速度変換回路１３から受信したコマンドをメモリ制御回路１５に送信する。メモリブロック６−ｊとメモリ７−ｋの対応関係の照合は、実行コマンドに付加されたメモリブロック番号ｊに基づいて実行される。
【００２７】
メモリ制御回路１５は、コマンドに対応するメモリ７−ｋを制御する。メモリ制御回路１５は、コマンドがリードコマンドである場合には、そのコマンドに付加されているメモリブロック番号ｊに基づいて、メモリ７−ｋからメモリブロック６−ｊのデータを読み出して受信し、検証回路５のそのメモリブロック６−ｊにそのデータを速度変換回路１３とエミュレータ２とを介して返送する。その返送の際には、エミュレータ２の速度に整合するように速度変換回路１３で送信速度が調整される。エラー検出回路１６は、検証回路５でライブラリ化されたメモリブロックの総メモリ容量がメモリ７の容量をオーバーする場合に、エラー信号を出力する。
【００２８】
汎用メモリ装置１は、解析用メモリ１７に格納されたデバッグ用プログラムにより第２端末９から与えられるコマンドに従って、ＣＰＵ１１を制御して、速度変換回路１３、コマンド振り分け回路１４、メモリ制御回路１５を介して、メモリ７に格納されているメモリブロック６のデータをデバッグすることができる。
【００２９】
図５は、汎用メモリ装置１により、メモリブロック６のデータをデバッグする機能を説明する図である。ＣＰＵ１１は、デバッグ対象のメモリブロック６−ｊを解析用メモリ１７のメモリブロック設定領域２１に設定する。リード、ライトのようなコマンドが、第２端末９から入力される。ＣＰＵ１１は、解析用メモリ１７のデバッグ用プログラム２２により実行される命令を処理して速度変換回路１３にデバッグ用のコマンドを送信する。速度変換回路１３は、ＣＰＵ１１の動作速度とメモリ制御回路１５の動作速度の差分を吸収して、コマンド振り分け回路１４にコマンドを送信する。コマンド振り分け回路１４は、そのコマンドがＣＰＵ１１から送られてきたものであれば、解析用メモリ１７のメモリブロック設定領域２１を参照して、メモリ制御回路１５にそのコマンドを送信して、対応するメモリ７にそのコマンドを実行させる。そのコマンドがリードコマンドであれば、メモリ制御回路１５がメモリ７からデータを受信し、速度変換回路１３はＣＰＵ１１の動作速度に合わせてそのデータをＣＰＵ１１に送信する。ＣＰＵ１１はそのデータを第２端末９に送信して結果を表示する。
【００３０】
【発明の効果】
本発明によるエミュレータ用汎用メモリシステムは、ルールに従ってメモリ装置のメモリ資源を有効に活用するので、メモリ容量を意識しない検証回路の設計を実現することができる。
【図面の簡単な説明】
【図１】  図１は、本発明によるエミュレータ用汎用メモリシステムの実施の形態を示すシステムブロック図である。
【図２】  図２は、メモリブロックとメモリの関係を示すメモリ領域図である。
【図３】  図３は、検証環境を示すデータ流れ図である。
【図４】  図４は、記述言語を示すコマンドである。
【図５】  図５は、本発明によるエミュレータ用汎用メモリシステムの実施の他の形態を示すシステムブロック図である。
【符号の説明】
１…汎用メモリ装置
２…エミュレータ
４…記憶装置
５…検証回路
６…メモリブロック
６−ｊ…１つのメモリブロック
６−（ｊ＋１）…次の番号のメモリブロック
７…メモリ
７−ｋ…１つのメモリ
７−（ｋ＋１）…次の番号のメモリ
８…制御回路
９…端末
１２…メモリ照合回路
１３…速度変換回路
１４…コマンド振り分け回路
１５…メモリ制御回路
１７…解析用メモリ
【図１】
0003735860.tif 000002
【図２】
0003735860.tif 000003
【図３】
0003735860.tif 000004
【図４】
0003735860.tif 000005
【図５】
0003735860.tif 000006