(57)【要約】本発明は、ＤＲＡＭを用いて大容量のＳＲＡＭのエミュレーションを可能とする論理回路エミュレータを提供する。その論理回路エミュレータは、検証対象の論理回路と、論理回路からＳＲＡＭとしてアクセスされるＤＲＡＭと、そのＤＲＡＭに対するリフレッシュの禁止／許可を示すリフレッシュ許可信号を生成するリフレッシュ許可信号生成部と、論理回路からＤＲＡＭに対するＳＲＡＭアクセスを中継し、リフレッシュ許可信号に基づいて、ＤＲＡＭに対するリフレッシュコマンドの発行を開始するＳＲＡＭラッパとを備える。
2012141318.tif 000002
【特許請求の範囲】
【請求項１】
検証対象の論理回路と、
前記論理回路からＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）としてアクセスされるＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）と、
前記ＤＲＡＭに対するリフレッシュコマンドの発行がその後の前記論理回路からの前記ＳＲＡＭとしての前記ＤＲＡＭに対するアクセスの完了を遅延させる可能性がある期間を含む第１の期間に、リフレッシュ禁止を表す第１のレベルであり、前記第１の期間以外の第２の期間にリフレッシュ許可を表す第２のレベルとなるリフレッシュ許可信号を生成するリフレッシュ許可信号生成手段と、
前記論理回路から前記ＤＲＡＭを前記ＳＲＡＭとしてアクセスできるようアクセスの中継を行うとともに、前記論理回路からのアクセス要求がなく、かつ、前記リフレッシュ許可信号が前記第２のレベルであるとき、前記ＤＲＡＭに対するリフレッシュコマンドの発行を開始するＳＲＡＭラッパと、
を備えた論理回路エミュレータ。
【請求項２】
前記ＤＲＡＭがＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  ＤＲＡＭ）であり、
前記ＳＲＡＭラッパが、前記論理回路から前記ＳＤＲＡＭをＳＳＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  ＳＲＡＭ）としてアクセス可能にするＳＳＲＡＭラッパであるとき、
前記ＳＤＲＡＭおよび前記ＳＳＲＡＭラッパを駆動するためのＳＤＲＡＭクロック信号を生成するＳＤＲＡＭクロック生成手段と、
前記論理回路を駆動するためのユーザクロック信号を生成するユーザクロック生成手段と、
をさらに備え、
前記リフレッシュ許可信号生成手段は、前記ＳＳＲＡＭラッパによる前記ＳＤＲＡＭクロック信号に基づく前記ＳＤＲＡＭに対するリフレッシュコマンドの発行が、その後の前記論理回路による前記ＳＳＲＡＭラッパに対するアクセスの結果の、前記ユーザクロック信号に基づく受信タイミングを遅延させる可能性がある期間を前記第１の期間として、前記リフレッシュ許可信号を生成することを特徴とする請求項１に記載の論理回路エミュレータ。
【請求項３】
前記リフレッシュ許可信号生成手段は、ユーザクロック周期保持レジスタ、ＳＤＲＡＭクロックカウンタ、およびリフレッシュ可否判定手段を有し、
前記ユーザクロック周期保持レジスタは、前記ＳＤＲＡＭクロックに対する前記ユーザクロックの周期、前記リフレッシュに要するリフレッシュ所要期間、および、前記ＳＳＲＡＭラッパからの前記ＳＤＲＡＭに対するアクセス処理に要するアクセス所要期間に基づき算出される値を保持し、
前記ＳＤＲＡＭクロックカウンタは、前記ユーザクロックに同期してカウンタ値をリセットするとともに、前記ＳＤＲＡＭクロックに同期してカウンタ値の加減算を行い、
前記リフレッシュ可否判定手段は、前記ＳＤＲＡＭクロックカウンタの値および前記ユーザクロック周期保持レジスタの値の少なくともいずれかに基づいて前記第１および第２の期間を検出することにより、前記リフレッシュ許可信号を生成することを特徴とする請求項２に記載の論理回路エミュレータ。
【請求項４】
前記リフレッシュ許可信号生成手段は、前記第１の期間には前記第１のレベルとなり前記第２の期間には前記第２のレベルとなる前記リフレッシュ許可信号を、デューティ比が制御されたユーザクロック信号として前記論理回路にさらに供給することにより、
前記リフレッシュ許可信号生成手段を前記ユーザクロック生成手段の代用として用いることを特徴とする請求項２または請求項３に記載の論理回路エミュレータ。
【請求項５】
ＤＲＡＭに対してＳＲＡＭとしてアクセスする論理回路を検証する論理回路エミュレータにおいて、
前記ＤＲＡＭに対するリフレッシュコマンドの発行がその後の前記論理回路からの前記ＳＲＡＭとしての前記ＤＲＡＭに対するアクセスの完了を遅延させる可能性がある期間を含む第１の期間に、リフレッシュ禁止を表す第１のレベルとなるリフレッシュ許可信号を生成し、
前記第１の期間以外の第２の期間にリフレッシュ許可を表す第２のレベルとなるリフレッシュ許可信号を生成し、
前記論理回路から前記ＳＲＡＭとして前記ＤＲＡＭに対するＳＲＡＭアクセス要求があると、前記ＳＲＡＭアクセス要求を前記ＤＲＡＭに中継し、
前記論理回路から前記ＳＲＡＭとして前記ＤＲＡＭに対するアクセス要求がなく、かつ、前記リフレッシュ許可信号が前記第２のレベルであるとき、前記ＤＲＡＭに対するリフレッシュコマンドの発行を開始する、論理回路検証方法。
【請求項６】
前記ＤＲＡＭがＳＤＲＡＭクロック信号によって駆動されるＳＤＲＡＭであり、前記論理回路がユーザクロック信号にしたがって前記ＳＤＲＡＭをＳＳＲＡＭとしてアクセスするとき、
前記ＳＤＲＡＭクロック信号に基づく前記ＳＤＲＡＭに対するリフレッシュコマンドの発行が、その後の前記論理回路による前記ＳＳＲＡＭとしての前記ＳＤＲＡＭに対するアクセスの結果の、前記ユーザクロック信号に基づく受信タイミングを遅延させる可能性がある期間を前記第１の期間とし、それ以外の期間を前記第２の期間として、前記リフレッシュ許可信号を生成することを特徴とする請求項５に記載の論理回路検証方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、論理回路設計において論理回路を検証する論理回路エミュレータに関し、特に、大容量メモリを含む論理回路を検証する論理回路エミュレータに関する。
【背景技術】
【０００２】
ＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）等の論理回路設計では、論理回路の動作をコンピュータ上で再現するＲＴＬ（Ｒｅｇｉｓｔｅｒ  Ｔｒａｎｓｆｅｒ  Ｌｅｖｅｌ）シミュレーションが一般的に用いられる。しかしながら、近年の回路規模の増大により、ＲＴＬシミュレーションではその検証速度が問題となってきている。そこで、論理回路エミュレータは、このような論理回路をＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）等の再構成可能デバイス上に再現し、高速動作させることで、大規模な論理回路の検証の高速化を行っている。
このような論理回路エミュレータは、検証対象の論理回路が小規模なメモリを含む場合、再構成可能デバイスの内部メモリを利用する。しかしながら、内部メモリの容量には限りがある。そこで、大規模なメモリを含む論理回路のエミュレーションを行う場合、このような論理回路エミュレータは、そのボード上に、再構成可能デバイスとは別にＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等の大容量メモリを搭載することがある。
このように、論理回路に含まれる大規模メモリのエミュレーションにＤＲＡＭを用いる場合、ＤＲＡＭのリフレッシュが問題になる。ＤＲＡＭは、リフレッシュ動作を行わない場合、一定期間を経過するとデータが消えてしまう特徴がある。
ところが、論理回路エミュレータの動作速度は、実際のＬＳＩの速度に比べて数分の１〜数十分の１であることが多い。したがって、論理回路エミュレータ上に構成されたＤＲＡＭコントローラからのリフレッシュ動作のみでは、データが消えてしまうことがある。
このような問題を解決するものとして、特許文献１に記載された技術が知られている。この特許文献１に記載された論理回路エミュレータは、論理回路に含まれる大規模メモリのエミュレーションにＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  ＤＲＡＭ）を用いる。
この論理回路エミュレータは、コマンド監視部と、強制リフレッシュコマンド発行部と、コマンド選択部とを備える。コマンド監視部は、検証対象の論理回路からＳＤＲＡＭへ発行されるコマンドを監視し、リフレッシュ可能な状態を検知する。強制リフレッシュコマンド発行部は、リフレッシュ可能な状態になった時、強制的にリフレッシュコマンドを発行する。コマンド選択部は、強制リフレッシュコマンドと通常動作時のコマンドとのいずれかを選択してＳＤＲＡＭに送出する。
このようにしてリフレッシュタイミングを制御することにより、この論理回路エミュレータは、検証対象の論理回路からのＳＤＲＡＭアクセスを妨げることなく、追加でリフレッシュ動作を行う。これにより、この論理回路エミュレータは、論理回路のエミュレーションにおいて用いられる大規模メモリとしてのＳＤＲＡＭからデータが消えるのを防ぐ構成を実現している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００２−２４５７９４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、論理回路エミュレータでは、ボード上に搭載したＤＲＡＭを、大容量のＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）としてエミュレーションするケースがある。このような場合、論理回路エミュレータは、検証対象の論理回路と、搭載したＤＲＡＭとを、ＳＲＡＭのインタフェースで接続する。このため、このようなケースでは、特許文献１に記載された論理回路エミュレータは、論理回路からＤＲＡＭに対して発行されるコマンドを監視することができず、リフレッシュ可能な状態を検出することができない。したがって、特許文献１に記載された論理回路エミュレータは、リフレッシュコマンドを発行することができず、ＤＲＡＭからデータが消えるのを防ぐことができない。
このように、特許文献１に記載された論理回路エミュレータでは、大容量のＳＲＡＭのエミュレーションを、ＤＲＡＭを用いて行うことができないという課題があった。
本発明は、上述の課題を解決するためになされたもので、ＤＲＡＭを用いて大容量のＳＲＡＭのエミュレーションを可能とする論理回路エミュレータを提供することを目的とする。
【課題を解決するための手段】
【０００５】
本発明の論理回路エミュレータは、検証対象の論理回路と、前記論理回路からＳＲＡＭとしてアクセスされるＤＲＡＭと、前記ＤＲＡＭに対するリフレッシュコマンドの発行がその後の前記論理回路からの前記ＳＲＡＭとしての前記ＤＲＡＭに対するアクセスの完了を遅延させる可能性がある期間を含む第１の期間に、リフレッシュ禁止を表す第１のレベルであり、前記第１の期間以外の第２の期間にリフレッシュ許可を表す第２のレベルとなるリフレッシュ許可信号を生成するリフレッシュ許可信号生成部と、前記論理回路から前記ＤＲＡＭを前記ＳＲＡＭとしてアクセスできるようアクセスの中継を行うとともに、前記論理回路からのアクセス要求がなく、かつ、前記リフレッシュ許可信号が前記第２のレベルであるとき、前記ＤＲＡＭに対するリフレッシュコマンドの発行を開始するＳＲＡＭラッパと、を備える。
また、本発明の論理回路検証方法は、ＤＲＡＭに対してＳＲＡＭとしてアクセスする論理回路を検証する論理回路エミュレータにおいて、前記ＤＲＡＭに対するリフレッシュコマンドの発行がその後の前記論理回路からの前記ＳＲＡＭとしての前記ＤＲＡＭに対するアクセスの完了を遅延させる可能性がある期間を含む第１の期間に、リフレッシュ禁止を表す第１のレベルとなるリフレッシュ許可信号を生成し、前記第１の期間以外の第２の期間にリフレッシュ許可を表す第２のレベルとなるリフレッシュ許可信号を生成し、前記論理回路から前記ＳＲＡＭとして前記ＤＲＡＭに対するＳＲＡＭアクセス要求があると、前記ＳＲＡＭアクセス要求を前記ＤＲＡＭに中継し、前記論理回路から前記ＳＲＡＭとして前記ＤＲＡＭに対するアクセス要求がなく、かつ、前記リフレッシュ許可信号が前記第２のレベルであるとき、前記ＤＲＡＭに対するリフレッシュコマンドの発行を開始する。
【発明の効果】
【０００６】
本発明は、ＤＲＡＭを用いて大容量のＳＲＡＭのエミュレーションを可能とする論理回路エミュレータを提供することができる。
【図面の簡単な説明】
【０００７】
【図１】図１は、本発明の第１の実施の形態としての論理回路エミュレータの構成図である。
【図２】図２は、本発明の第１の実施の形態としての論理回路エミュレータのリフレッシュ許可信号生成動作を説明するフローチャートである。
【図３】図３は、本発明の第２の実施の形態としての論理回路エミュレータの構成図である。
【図４】図４は、本発明の第２の実施の形態としての論理回路エミュレータにおけるＳＤＲＡＭクロックカウンタの動作を説明するフローチャートである。
【図５】図５は、本発明の第２の実施の形態としての論理回路エミュレータにおけるリフレッシュ可否判定部の動作を説明するフローチャートである。
【図６】図６は、本発明の第２の実施の形態としての論理回路エミュレータにおけるＳＳＲＡＭラッパの動作を説明するフローチャートである。
【図７】図７は、本発明の第２の実施の形態としての論理回路エミュレータにおける各クロック信号、ＳＤＲＡＭクロックカウンタ、および、リフレッシュ許可信号の各波形図である。
【図８】図８は、本発明の第２の実施の形態の他の態様としての論理回路エミュレータにおける各クロック信号、ＳＤＲＡＭクロックカウンタ、および、リフレッシュ許可信号の各波形図である。
【図９】図９は、本発明の第３の実施の形態としての論理回路エミュレータの構成図である。
【図１０】図１０は、本発明の第３の実施の形態としての論理回路エミュレータにおける各クロック信号、ＳＤＲＡＭクロックカウンタ、および、リフレッシュ許可信号の各波形図である。
【発明を実施するための形態】
【０００８】
以下、本発明の実施の形態について、図面を参照して詳細に説明する。
（第１の実施の形態）
本発明の第１の実施の形態としての論理回路エミュレータ１０の全体構成を示すブロック図を図１に示す。図１において、論理回路エミュレータ１０は、リフレッシュ許可信号生成部１１０、ＳＲＡＭラッパ１２０、ＤＲＡＭ１３０、ユーザ回路１４０を含んでいる。
なお、図１には、各部を１つずつ示しているが、本発明の論理回路エミュレータが備える各部の数を限定するものではない。すなわち、論理回路エミュレータ１０は、２以上の任意数の各部を備えるよう拡張可能である。
ユーザ回路１４０は、検証対象の論理回路である。
ＤＲＡＭ１３０は、キャパシタに蓄えられた電荷によってデータを保存する半導体メモリである。ＤＲＡＭ１３０は、時間の経過とともに失われる電荷を更新する記憶保持動作（以降、リフレッシュと記載する）を必要とする。
ＳＲＡＭラッパ１２０は、ユーザ回路１４０からＤＲＡＭ１３０をＳＲＡＭとしてアクセスできるようアクセスの中継を行う。ＳＲＡＭラッパ１２０の構成の詳細については後述する。
リフレッシュ許可信号生成部１１０は、リフレッシュ許可信号を生成する。このリフレッシュ許可信号は、第１の期間には、リフレッシュ禁止を表す第１のレベルとなるよう生成される。また、リフレッシュ許可信号は、第１の期間以外の第２の期間には、リフレッシュ許可を表す第２のレベルとなるよう生成される。
ここで、第１の期間とは、ＤＲＡＭ１３０に対するリフレッシュコマンドの発行が、アクセスの完了を遅延させる可能性がある期間である。そのアクセスは、その後のユーザ回路１４０によるＳＲＡＭとしてのＤＲＡＭ１３０に対するアクセスである。そして、リフレッシュ許可信号生成部１１０は、生成したリフレッシュ許可信号をＳＲＡＭラッパ１２０に送出する。
例えば、リフレッシュ許可信号生成部１１０は、ユーザ回路１４０の動作周期の開始から一定期間を第２の期間としてもよい。そして、リフレッシュ許可信号生成部１１０は、一定期間経過後から次のユーザ回路１４０の動作周期の開始までを、第１の期間としてもよい。
この一定期間の具体例として、ユーザ回路１４０の動作周期の開始時にＳＲＡＭラッパ１２０がアクセス中継処理を開始する必要がある場合を想定して説明する。
この場合、「ユーザ回路１４０の（最短）動作周期−リフレッシュ所要期間」を一定期間として定めておいてもよい。このとき、ＳＲＡＭラッパ１２０は、ユーザ回路１４０の動作周期の開始時から一定期間の間にリフレッシュを開始すれば、次のユーザ回路１４０の動作周期の開始前にリフレッシュを終了させることができる。したがって、リフレッシュ許可信号生成部１１０は、このように定めた一定期間を、第２の期間と判定する。その第２の期間は、ユーザ回路１４０からのＳＲＡＭラッパ１２０へのアクセスの完了を遅延させる可能性のない期間である。
一方、ＳＲＡＭラッパ１２０は、動作周期の開始時から一定期間経過後にリフレッシュを開始すると、次のユーザ回路１４０の動作周期の開始時までにリフレッシュを終了させることができない。このため、ＳＲＡＭラッパ１２０は、次の動作周期の開始時にアクセス中継処理を開始することができなくなり、アクセス完了が遅延する。したがって、リフレッシュ許可信号生成部１１０は、このように定めた一定期間経過後、次のユーザ回路１４０の動作周期までを、第１の期間と判定する。その第１の期間は、ユーザ回路１４０からのＳＲＡＭラッパ１２０へのアクセスの完了を遅延させる可能性がある、期間である。
また、例えば、リフレッシュ許可信号生成部１１０は、ユーザ回路１４０内のステートマシンの状態に基づいて、第１の期間および第２の期間を判定してもよい。
このようなステートマシンの状態の具体例について、上述の具体例と同様に、ユーザ回路１４０の動作周期の開始時にＳＲＡＭラッパ１２０がアクセス中継処理を開始する必要がある場合を想定して説明する。
このとき、ユーザ回路１４０の動作周期の開始時から上述の一定期間になりうるステートマシンの状態は、あらかじめ求めておかれるものとする。これにより、リフレッシュ許可信号生成部１１０は、ユーザ回路１４０のステートマシンの状態が、あらかじめ求めておかれた状態のいずれでもでなければ、第１の期間であると判定する。一方、リフレッシュ許可信号生成部１１０は、ユーザ回路１４０のステートマシンの状態が、あらかじめ求めておかれた状態のいずれかであれば、第２の期間であると判定する。
次に、ＳＲＡＭラッパ１２０の構成の詳細について説明する。ＳＲＡＭラッパ１２０は、ＳＲＡＭインタフェース１２１、ＤＲＡＭコントローラ１２２、およびＤＲＡＭインタフェース１２３を含んでいる。
ＤＲＡＭコントローラ１２２は、ＳＲＡＭインタフェース１２１を介して、ユーザ回路１４０からのＳＲＡＭアクセス要求を受信する。また、ＤＲＡＭコントローラ１２２は、ＤＲＡＭインタフェース１２３を介してＤＲＡＭ１３０に対してＤＲＡＭアクセスコマンドを発行する。
また、ＤＲＡＭコントローラ１２２は、ユーザ回路１４０からのＳＲＡＭアクセス要求が、ＤＲＡＭ１３０からの読み出しである場合は、ＤＲＡＭ１３０から送られてきたデータを、ＳＲＡＭインタフェース１２１を介してユーザ回路１４０に転送する。
また、ＤＲＡＭコントローラ１２２は、ユーザ回路１４０からのＳＲＡＭアクセス要求がなく、かつ、リフレッシュ許可信号生成部１１０から入力されるリフレッシュ許可信号が第２のレベルである場合に、ＤＲＡＭ１３０に対してリフレッシュコマンドを発行する。
以上のように構成された論理回路エミュレータ１０の動作について説明する。
まず、リフレッシュ許可信号生成部１１０がリフレッシュ許可信号を生成する動作について、図２のフローチャートを参照して説明する。
ここでは、まず、リフレッシュ許可信号生成部１１０は、ユーザ回路１４０の動作周期が開始したか否か確認する（ステップＳ１１）。
例えば、リフレッシュ許可信号生成部１１０は、ユーザ回路１４０がクロックに同期する回路であれば、クロックの動作エッジを起点とする動作周期が開始したか否かを確認してもよい。あるいは、リフレッシュ許可信号生成部１１０は、ユーザ回路１４０内のステートマシンを参照することにより、ステートマシンが開始状態であれば動作周期の起点であると判断してもよい。
ここで、ユーザ回路１４０の動作周期が開始していない場合、論理回路エミュレータ１０の動作は再びステップＳ１１へと戻り、再度判断を行う。
一方、ユーザ回路１４０の動作周期が開始した場合、リフレッシュ許可信号生成部１１０は、リフレッシュ許可を表す第２のレベルとなるリフレッシュ許可信号を出力する（ステップＳ１２）。
次に、リフレッシュ許可信号生成部１１０は、ＤＲＡＭ１３０に対するリフレッシュコマンドの発行が、アクセスの完了を遅延させる可能性のある期間を含む第１の期間になったか否かを判定する（ステップＳ１３）。そのアクセスは、そのリフレッシュコマンドの発行後の、ユーザ回路１４０によるＳＲＡＭラッパ１２０へのアクセスである。
例えば、上述のように、リフレッシュ許可信号生成部１１０は、ユーザ回路１４０の動作周期の開始から一定期間経過したか否かに基づいて、第１の期間になったか否かを判定してもよい。あるいは、リフレッシュ許可信号生成部１１０は、ユーザ回路１４０内のステートマシンの状態に基づいて、第１の期間になったか否かを判定してもよい。
ここで、第１の期間になっていない場合、論理回路エミュレータ１０の動作は再びステップＳ１３へと戻り、再度判断を行う。
一方、第１の期間となった場合、リフレッシュ許可信号生成部１１０は、リフレッシュ許可信号を、リフレッシュ禁止を表す第１のレベルに変化させて出力する（ステップＳ１４）。
リフレッシュ許可信号生成部１１０は、ステップＳ１１〜Ｓ１４までの動作を一周期として、上述の動作を繰り返し実行する。
次に、ＳＲＡＭラッパ１２０がリフレッシュコマンドを発行する動作について説明する。
ＳＲＡＭラッパ１２０は、ユーザ回路１４０からＳＲＡＭアクセス要求を受信しておらず、かつ、リフレッシュ許可信号生成部１１０から受信するリフレッシュ許可信号が第２のレベルであれば、ＤＲＡＭ１３０に対してリフレッシュコマンドを発行する。
一方、ＳＲＡＭラッパ１２０は、ユーザ回路１４０からＳＲＡＭアクセス要求を受信していなくても、リフレッシュ許可信号生成部１１０から受信するリフレッシュ許可信号が第１のレベルであれば、ＤＲＡＭ１３０に対してリフレッシュコマンドを発行しない。
また、ＳＲＡＭラッパ１２０は、ユーザ回路１４０からＳＲＡＭアクセス要求を受信すると、ＤＲＡＭ１３０に対してアクセス中継処理を行う。
以上で、論理回路エミュレータ１０の動作の説明を終了する。
次に、本発明の第１の実施形態の効果について説明する。
本発明の第１の実施形態としての論理回路エミュレータは、ＤＲＡＭを用いて大容量のＳＲＡＭを含む論理回路のエミュレーションを可能とする。
その理由は、第１の期間に、リフレッシュ許可信号生成部が、リフレッシュ禁止を表すリフレッシュ許可信号を生成するからである。その第１の期間は、ＤＲＡＭに対するリフレッシュコマンドの発行が、その後のユーザ回路からのＳＲＡＭとしてのＤＲＡＭに対するアクセスの完了を、遅延させる可能性がある期間である。また、それ以外の第２の期間には、リフレッシュ許可を表すリフレッシュ許可信号を生成するからである。
例えば、前述のように、ユーザ回路の動作周期の開始から「ユーザ回路の（最短）動作周期−リフレッシュ所要期間」経過後を第１の期間、それ以外を第２の期間とした場合を例として説明を続ける。
この場合、ＳＲＡＭラッパが発行するリフレッシュコマンドによるリフレッシュ動作は、リフレッシュコマンドを発行した動作周期の、次の動作周期の開始前には終了していることになる。したがって、リフレッシュコマンド発行後、次の動作周期でユーザ回路からＳＲＡＭラッパへのアクセス要求を受信した場合、リフレッシュは既に終了している。このため、ＳＲＡＭラッパは、ユーザ回路からのアクセス要求受信時にＤＲＡＭへの中継処理を開始させることができ、アクセス完了を遅延させることがない。
このように、ＳＲＡＭラッパは、ユーザ回路からのＳＲＡＭアクセスをＤＲＡＭに中継しながら、ＤＲＡＭに対するアクセスに支障がないようＤＲＡＭのリフレッシュを実行することができる。これにより、本発明の第１の実施の形態としての論理回路エミュレータは、容量が大きいメモリを容易に入手できるＤＲＡＭを用いて、大容量のＳＲＡＭを含む論理回路のエミュレーションを実行可能となる。
（第２の実施の形態）
次に、本発明の第２の実施形態について図面を参照して詳細に説明する。なお、本実施の形態の説明において参照する各図面において、本発明の第１の実施の形態と同一の構成および同様に動作するステップには同一の符号を付して本実施の形態における詳細な説明を省略する。
本発明の第２の実施形態としての論理回路エミュレータ２０の全体構成を示すブロック図を図３に示す。図３に示すように、論理回路エミュレータ２０は、再構成可能デバイス２００およびＳＤＲＡＭ２３０を備えている。
ここで、再構成可能デバイス２００は、一般的に、ＦＰＧＡやＣＰＬＤ（Ｃｏｍｐｌｅｘ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）等の名称で知られ、デバイス製造後に回路を書き変えて利用可能なデバイスである。
また、再構成可能デバイス２００は、リフレッシュ許可信号生成部２１０と、ＳＳＲＡＭラッパ２２０と、ユーザ回路１４０と、ＳＤＲＡＭクロック生成部２５０と、ユーザクロック生成部２６０とを含んでいる。なお、ユーザ回路１４０以外の各部は再構成可能デバイス２００外部に構成されていてもよい。
また、図３には、論理回路エミュレータ２０を構成する各部を１つずつ示しているが、本発明の論理回路エミュレータが備える各部の数を限定するものではない。すなわち、論理回路エミュレータ２０は、２以上の任意数の各部を備えるよう拡張可能である。
ＳＤＲＡＭ２３０は、外部から与えられるクロックに同期して動作するＤＲＡＭである。本実施の形態のＳＤＲＡＭ２３０は、後述のＳＤＲＡＭクロック信号に同期して動作する。
ＳＤＲＡＭクロック生成部２５０は、ＳＤＲＡＭ２３０およびＳＳＲＡＭラッパ２２０を駆動するためのクロック信号（以下、ＳＤＲＡＭクロックともいう）を生成する。
ユーザクロック生成部２６０は、ユーザ回路１４０を駆動するためのクロック信号（以下、ユーザクロックともいう）を生成する。
ＳＳＲＡＭラッパ２２０は、ユーザ回路１４０からＳＤＲＡＭ２３０をＳＳＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  ＳＲＡＭ）としてアクセスできるようアクセスの中継を行う。このため、ＳＳＲＡＭラッパ２２０は更に、ＳＳＲＡＭインタフェース２２１、ＳＤＲＡＭコントローラ２２２、および、ＳＤＲＡＭインタフェース２２３を含んでいる。
ＳＳＲＡＭインタフェース２２１は、ユーザ回路１４０からのＳＳＲＡＭアクセス要求を受信する。そして、ＳＳＲＡＭインタフェース２２１は、受信したＳＳＲＡＭアクセス要求をＳＤＲＡＭコントローラ２２２に中継する。そして、ＳＳＲＡＭインタフェース２２１は、中継したＳＳＲＡＭアクセス要求の結果をＳＤＲＡＭコントローラ２２２から受信する。
尚、ＳＳＲＡＭインタフェース２２１がＳＳＲＡＭアクセス要求をＳＤＲＡＭコントローラ２２２に中継する処理を開始してからその結果を受信するまでの期間を、以降、ＳＳＲＡＭインタフェースアクセスサイクルともいう。ＳＳＲＡＭインタフェースアクセスサイクルには、中継を受けたＳＤＲＡＭコントローラ２２２がＳＤＲＡＭ２３０にアクセスコマンドを発行してからその結果をＳＤＲＡＭ２３０から受け取るまでのＳＤＲＡＭアクセス処理期間が含まれる。このＳＳＲＡＭインタフェースアクセスサイクルは、このＳＤＲＡＭアクセス処理期間の前後に、ＳＤＲＡＭコントローラ２２２の判断処理やデータの受け渡しに要する時間が加味された期間となる。
具体的には、ＳＳＲＡＭインタフェース２２１は、ユーザ回路１４０からＳＳＲＡＭアクセス要求を受信後、ＳＤＲＡＭ２３０がリフレッシュ動作中でなければ、ＳＳＲＡＭインタフェースアクセスサイクルを開始する。
また、ＳＳＲＡＭインタフェース２２１は、ユーザ回路１４０からＳＳＲＡＭアクセス要求を受信後、ＳＤＲＡＭ２３０がリフレッシュ動作中である場合、特定のタイミングを待ってから、ＳＳＲＡＭインタフェースアクセスサイクルを開始する。その特定のタイミングは、ＳＳＲＡＭインタフェースアクセスサイクルに含まれるＳＤＲＡＭアクセス処理が、リフレッシュ動作期間に重複しないタイミングである。
ここで、ＳＳＲＡＭインタフェースアクセスサイクルの開始からＳＤＲＡＭアクセス処理の開始までの期間を、リフレッシュ動作と重複可能な重複可能期間と呼ぶことにする。このとき、ＳＳＲＡＭインタフェース２２１は、ＳＤＲＡＭ２３０のリフレッシュ終了までの期間が重複可能期間を切ると、ＳＳＲＡＭインタフェースアクセスサイクルを開始する。
ＳＤＲＡＭコントローラ２２２は、ＳＳＲＡＭインタフェース２２１からＳＳＲＡＭアクセス要求を中継されると、ＳＤＲＡＭインタフェース２２３を介して、ＳＤＲＡＭ２３０に対してＳＤＲＡＭアクセスコマンドを発行する。さらに、ＳＤＲＡＭコントローラ２２２は、ユーザ回路１４０からのＳＳＲＡＭアクセス要求が読み出し要求である場合は、ＳＤＲＡＭ２３０から送られてきたデータを、ＳＳＲＡＭインタフェース２２１を介してユーザ回路１４０に転送する。
また、ＳＤＲＡＭコントローラ２２２は、特定の場合に、リフレッシュ開始可能であれば、ＳＤＲＡＭ２３０に対してリフレッシュコマンドを発行する。その特定の場合は、ユーザ回路１４０からのＳＳＲＡＭアクセス要求がなく、かつ、後述のリフレッシュ許可信号生成部２１０からのリフレッシュ許可信号がリフレッシュ許可を表す第２のレベルである、場合である。
このとき、ＳＤＲＡＭコントローラ２２２は、以前に開始した他の処理を実行中であれば、リフレッシュ開始可能でなく、他の処理を実行中でなければ、リフレッシュ開始可能であると判断してもよい。
リフレッシュ許可信号生成部２１０は、第１の期間にはリフレッシュ禁止を表す第１のレベルとなり、第１の期間以外の第２の期間にはリフレッシュ許可を表す第２のレベルとなるリフレッシュ許可信号を生成する。
ここで、リフレッシュ許可信号生成部２１０は、ＳＤＲＡＭクロックに基づくＳＤＲＡＭ２３０に対するリフレッシュコマンドの発行が、受信タイミングを遅延させる可能性がある期間を第１の期間とする。その受信タイミングは、そのリフレッシュコマンドの発行後の、ユーザ回路１４０によるＳＳＲＡＭラッパ２２０に対するＳＳＲＡＭアクセス要求の結果の、ユーザクロックに基づく受信タイミングである。
このため、リフレッシュ許可信号生成部２１０は、ユーザクロック周期保持レジスタ２１１、ＳＤＲＡＭクロックカウンタ２１２、および、リフレッシュ可否判定部２１３を有してもよい。
ユーザクロック周期保持レジスタ２１１は、ＳＤＲＡＭクロックに対するユーザクロックの周期、ＳＤＲＡＭ２３０のリフレッシュに要するリフレッシュ所要期間、および、ＳＳＲＡＭインタフェースアクセスサイクルの所要期間に基づき算出される値を保持する。また、ユーザクロック周期保持レジスタ２１１に保持される値は、論理回路エミュレータ２０の設計時にあらかじめ設定される。あるいは、ユーザクロック周期保持レジスタ２１１に保持される値は、論理回路エミュレータ２０の利用時に設計者によって外部から設定されてもよい。
例えば、ユーザクロック周期保持レジスタ２１１には、連続処理所要時間を、ユーザクロックの周期の２倍から減算することにより算出される値を保持していてもよい。ここで、連続処理所要時間（以降、リフレッシュＳＳＲＡＭアクセス連続処理所要時間ともいう）は、リフレッシュとＳＳＲＡＭアクセスインタフェースサイクルとをこの順で連続処理した場合に要する時間である。
このような値は、第２の期間の長さに相当することになる。なお、ユーザクロック周期保持レジスタ２１１は、実際には、このようにして算出される値に対して、リフレッシュ可否の判定を容易にするための調整値を加算した値を保持していてもよい。調整値の詳細については後述する。
ＳＤＲＡＭクロックカウンタ２１２は、ユーザクロックに同期してカウンタ値をリセットするとともに、ＳＤＲＡＭクロックに同期してカウンタの加減算を行う。なお、ＳＤＲＡＭクロックカウンタ２１２は、ＳＤＲＡＭクロックに同期する他のクロック信号を用いてカウンタの加減算を行ってもよい。
例えば、ＳＤＲＡＭクロックカウンタ２１２は、ユーザクロックの立ち上がりエッジを検出すると、次のＳＤＲＡＭクロックの立ち上がりエッジで、ユーザクロック周期保持レジスタ２１１の値をカウンタ値として設定してもよい。この場合、ＳＤＲＡＭクロックカウンタ２１２は、ユーザクロックの立ち上がりエッジ以外では、カウンタ値が０でない場合にカウンタ値を１減算する。
リフレッシュ可否判定部２１３は、ＳＤＲＡＭクロックカウンタ２１２の値およびユーザクロック周期保持レジスタ２１１の値の少なくともいずれかに基づいて第１および第２の期間を検出することにより、リフレッシュ許可信号を生成する。
例えば、リフレッシュ可否判定部２１３は、１つ前のＳＤＲＡＭクロックサイクルにおいてユーザクロックがＬ（Ｌｏｗ）レベルであった場合には、現在のユーザクロックの変化をそのまま出力する。つまり、リフレッシュ可否判定部２１３は、ユーザクロックがＬレベルからＨ（Ｈｉｇｈ）レベルに変化した場合には、第２の期間が開始したとして、Ｈレベルのリフレッシュ許可信号を出力する。
また、リフレッシュ可否判定部２１３は、ＳＤＲＡＭクロックカウンタ２１２の値が０でない場合には、第２の期間中であるとして、Ｈレベルのリフレッシュ許可信号を出力する。また、リフレッシュ可否判定部２１３は、ＳＤＲＡＭクロックカウンタ２１２の値が０の場合には、第１の期間であるとして、Ｌレベルのリフレッシュ許可信号を出力する。
これにより、リフレッシュ可否判定部２１３は、今回のユーザクロックサイクルの開始時点から、次回のユーザクロックサイクルの終了時点より上述のリフレッシュＳＳＲＡＭアクセス連続処理所要時間前の時点までを第２の期間として判定することになる。また、リフレッシュ可否判定部２１３は、第２の期間終了時点から次回のユーザクロック立ち上がり時点までを第１の期間として判定することになる。
なお、この場合、ＳＤＲＡＭクロックカウンタ２１２がその値をリセットするのは、ユーザクロックの立ち上がりを検出してから１ＳＤＲＡＭクロック分遅延する。そこで、ＳＤＲＡＭクロックカウンタ２１２の値が０であるか否かに基づいてリフレッシュ可否判定部２１３が判定を行うために、ユーザクロック周期保持レジスタ２１１は、上述のようにして算出した第２の期間の長さから調整値として−１を加算した値を保持しておけばよい。
以上のように構成された論理回路エミュレータ２０の動作について説明する。
まず、ＳＤＲＡＭクロックカウンタ２１２の動作について、図４を用いて説明する。
ここでは、まず、ＳＤＲＡＭクロックカウンタ２１２は、ユーザクロックの立ち上がりを検出したか否かを判断する（ステップＳ２１）。
ここで、ユーザクロックの立ち上がりを検出した場合、ＳＤＲＡＭクロックカウンタ２１２は、次のＳＤＲＡＭクロックに同期して、カウンタ値をリセットする（ステップＳ２２）。例えば、ＳＤＲＡＭクロックカウンタ２１２は、カウンタ値をユーザクロック周期保持レジスタ２１１の値にリセットしてもよい。
一方、ユーザクロックの立ち上がりを検出しない場合、ＳＤＲＡＭクロックカウンタ２１２は、カウンタ値を加減算する（ステップＳ２３）。例えば、ステップＳ２２でカウンタ値をユーザクロック周期保持レジスタ２１１の値にリセットしている場合、ＳＤＲＡＭクロックカウンタ２１２は、カウンタ値を１減算する。ただし、カウンタ値が０の場合は０のままとする。
以上の動作を、ＳＤＲＡＭクロックカウンタ２１２は繰り返し実行する。
次に、リフレッシュ可否判定部２１３の動作について、図５を参照して説明する。
ここでは、まず、リフレッシュ可否判定部２１３は、ユーザクロックの立ち上がりを検出したか否かを判断する（ステップＳ３１）。
ここで、ユーザクロックの立ち上がりを検出した場合、リフレッシュ可否判定部２１３は、リフレッシュ許可を表す第２のレベル（ここでは、Ｈレベル）のリフレッシュ許可信号を出力する（ステップＳ３２）。
一方、ユーザクロックの立ち上がりを検出しない場合、リフレッシュ可否判定部２１３は、ＳＤＲＡＭクロックカウンタ２１２の値およびユーザクロック周期保持レジスタ２１１の値の少なくともいずれかに基づいて、第１および第２のいずれの期間であるかを判別する（ステップＳ３３）。
例えば、ＳＤＲＡＭクロックカウンタ２１２が、ステップＳ２２でカウンタ値をユーザクロック周期保持レジスタ２１１の値にリセットし、ステップＳ２３で１減算するよう構成されている場合について説明する。この場合、リフレッシュ可否判定部２１３は、ＳＤＲＡＭクロックカウンタ２１２の値が０であれば第１の期間であると判定し、０以外であれば第２の期間であると判定する。
ここで、第１の期間である（例えば、ＳＤＲＡＭクロックカウンタ２１２の値が０である）と判定した場合、リフレッシュ可否判定部２１３は、リフレッシュ禁止を表す第１のレベル（ここでは、Ｌレベル）のリフレッシュ許可信号を出力する（ステップＳ３４）。
一方、第２の期間である（例えば、ＳＤＲＡＭクロックカウンタ２１２の値が０以外である）と判定した場合、リフレッシュ可否判定部２１３は、ステップＳ３２を実行し、第２のレベル（Ｈレベル）のリフレッシュ許可信号を出力する。
以上の動作を、リフレッシュ可否判定部２１３は、繰り返し実行する。
以上のようにユーザクロック周期保持レジスタ２１１、ＳＤＲＡＭクロックカウンタ２１２およびリフレッシュ可否判定部２１３が連携して動作することにより、リフレッシュ許可信号生成部２１０は、本発明の第１の実施の形態におけるリフレッシュ許可信号生成部１１０と同様に、図２のフローチャートにしたがって動作することになる。
次に、ＳＳＲＡＭラッパ２２０がリフレッシュコマンドを発行する動作について、図６のフローチャートを参照して説明する。
ここでは、まず、ＳＳＲＡＭインタフェース２２１は、ユーザ回路１４０からＳＳＲＡＭアクセス要求を受信しているか否かを判断する（ステップＳ４１）。
ここで、ＳＳＲＡＭアクセス要求を受信していなければ、ＳＤＲＡＭコントローラ２２２は、リフレッシュ許可信号生成部２１０から受信するリフレッシュ許可信号が第２のレベル（ここでは、Ｈレベル）であるか否かを判断する（ステップＳ４２）。
ここで、リフレッシュ許可信号が第２のレベルでなければ、ＳＳＲＡＭラッパ２２０は、動作を終了する。
一方、リフレッシュ許可信号が第２のレベルであれば、ＳＤＲＡＭコントローラ２２２は、リフレッシュを開始可能であるか否かを判断する（ステップＳ４３）。ここで、ＳＤＲＡＭコントローラ２２２は、リフレッシュ開始可能であるか否かを、以前に開始したＳＤＲＡＭ２３０に対する他の処理を実行中であるか否か等に基づいて判断すればよい。
ここで、リフレッシュ開始可能でなければ、ＳＳＲＡＭラッパ２２０は、動作を終了する。
一方、リフレッシュ開始可能であれば、ＳＤＲＡＭコントローラ２２２は、ＳＤＲＡＭインタフェース２２３を介してＳＤＲＡＭ２３０に対してリフレッシュコマンドを発行する（ステップＳ４４）。
また、ステップＳ４１で、ＳＳＲＡＭアクセス要求を受信していると判断した場合、ＳＤＲＡＭコントローラ２２２は、ＳＤＲＡＭ２３０のリフレッシュを実行中であるか否かを判断する（ステップＳ４５）。
ここで、リフレッシュ実行中である場合、ＳＤＲＡＭコントローラ２２２は、リフレッシュ終了までの時間が重複可能期間以下になっているか否かを判断する（ステップＳ４６）。リフレッシュ終了までの時間が重複可能期間以下でなければ、ＳＤＲＡＭコントローラ２２２は、再度ステップＳ４６を実行することにより、重複可能期間以下になるのを待つ。
一方、ステップＳ４５でリフレッシュ実行中でない場合、および、ステップＳ４６でリフレッシュ終了までの時間が重複可能期間以下になった場合、ＳＤＲＡＭコントローラ２２２は、ＳＤＲＡＭ２３０に対してアクセスコマンドを発行する（ステップＳ４７）。このとき、ＳＤＲＡＭコントローラ２２２は、ＳＳＲＡＭインタフェース２２１から中継されるＳＤＲＡＭアクセス要求にしたがって、アクセスコマンドの発行を行う。
なお、ステップＳ４５においてリフレッシュ中であると判断される場合、そのリフレッシュ動作は、ＳＳＲＡＭアクセス要求を受信した今回のユーザ回路１４０の動作周期の、前回の動作周期において、ステップＳ４４で発行されたリフレッシュコマンドによるものである。また、このリフレッシュコマンドは、前回の動作周期においてリフレッシュ許可信号が第２のレベルである間に発行されたものである。すなわち、このリフレッシュコマンドは、前回の動作周期の開始時点から、今回の動作周期終了時点よりリフレッシュＳＳＲＡＭアクセス連続処理所要時間前の時点までの期間に発行されている。
そして、今回の動作周期において、ＳＳＲＡＭラッパ２２０は、ステップＳ４６でリフレッシュ終了までの時間が重複可能期間以下になるのを待ってからＳＳＲＡＭインタフェースアクセスサイクルを開始する。したがって、ＳＳＲＡＭラッパ２２０は、リフレッシュ動作とＳＤＲＡＭアクセスとを重複させることなく、かつ、今回の動作周期が終了するまでに、その処理を終了することができる。
次に、図７の波形図を用いて、論理回路エミュレータ２０の動作の具体例について説明する。以下では、ＳＤＲＡＭクロック１周期分の時間を１Ｔと定義する。図７（ａ）は、ユーザクロックが１０Ｔの場合のユーザクロックの波形、ＳＤＲＡＭクロックの波形、ＳＤＲＡＭクロックカウンタ２１２の値、および、リフレッシュ許可信号の波形をそれぞれ示す図である。図７（ｂ）は、ユーザクロックが１２Ｔの場合の各波形および値を示す図である。
ここで、図７において、ユーザクロックとＳＤＲＡＭクロックとの周期が異なり、位相が揃っているものとして説明する。なお、本発明の論理回路エミュレータは、これらの位相が揃っていない場合にも適用可能である。
図７において、ＳＤＲＡＭアクセス処理に要する時間、および、ＳＤＲＡＭ２３０のリフレッシュに要する時間はそれぞれ８Ｔである。また、ＳＳＲＡＭインタフェースアクセスサイクルは、ＳＤＲＡＭアクセス処理時間８Ｔの前後に、ＳＤＲＡＭコントローラ２２２の判断処理およびデータの受け渡しに要する時間が１Ｔずつ加味され、１０Ｔの時間を要するものとする。
また、リフレッシュ許可信号のＨレベルが、リフレッシュ許可を表す、第２のレベルであるものとする。また、Ｌレベルが、リフレッシュ禁止を表す、第１のレベルであるものとする。また、ユーザクロックおよびＳＤＲＡＭクロックのいずれにしたがって動作する回路も、クロック信号がＬレベルからＨレベルに変化する立ち上がりエッジで動作するものとする。
＜ユーザクロック１０Ｔの場合＞
まず、ユーザクロックが１０Ｔの場合の論理回路エミュレータ２０について、図７（ａ）を参照して説明する。
ここで、ユーザクロック周期保持レジスタ２１１は、（［ユーザクロックの周期］−９）×２の計算式によって算出される値（ここでは、（１０−９）×２＝２）を保持しているものとする。この計算式は、［ユーザクロックの周期×２］−［リフレッシュＳＳＲＡＭアクセス連続処理所要サイクル数］＋［調整値］の計算式を変形することにより導出されたものである。
ここで、リフレッシュＳＳＲＡＭアクセス連続処理所要サイクル数は、［リフレッシュ所要期間］＋［ＳＳＲＡＭインタフェースアクセス所要期間］−［重複可能期間］によって算出される。ここで、重複可能期間は、上述のように、リフレッシュ終了前にＳＳＲＡＭインタフェースアクセスを重複して開始可能な期間である。リフレッシュ期間は、ＳＤＲＡＭアクセス処理期間とは重複することはできないが、ＳＳＲＡＭインタフェースアクセスサイクル開始からＳＤＲＡＭアクセス開始までの期間とは、重複可能である。この例では、重複可能期間は１Ｔとなる。
したがって、リフレッシュＳＳＲＡＭアクセス連続処理所要サイクル数は、８Ｔ＋１０Ｔ−１Ｔ＝１７Ｔとなる。また、調整値を−１とすると、ユーザクロック周期保持レジスタ２１１は、（１０Ｔ×２）−（１７Ｔ）＋（−１Ｔ）を保持することとなる。この計算式を変形すると、（［ユーザクロックの周期］−９）×２の計算式が導出される。
ＳＤＲＡＭクロックカウンタ２１２は、ＳＤＲＡＭクロックに同期して動作する。また、ＳＤＲＡＭクロックカウンタ２１２は、ユーザクロックがＬレベルからＨレベルに変化したことを検出すると、次のＳＤＲＡＭクロックの立ち上がりエッジで、カウンタ値をユーザクロック周期保持レジスタ２１１の値にリセットする。
また、ＳＤＲＡＭクロックカウンタ２１２は、カウンタの値が０でない場合に、カウンタを１減算する。
リフレッシュ可否判定部２１３は、ＳＤＲＡＭクロックカウンタ２１２の値が０でない場合に、Ｈレベルのリフレッシュ許可信号を出力する。また、リフレッシュ可否判定部２１３は、ＳＤＲＡＭクロックカウンタ２１２の値が０である場合に、Ｌレベルのリフレッシュ許可信号（リフレッシュを禁止することを表す）を出力する。
また、リフレッシュ可否判定部２１３は、１つ前のＳＤＲＡＭクロックサイクルにおいてユーザクロックがＬレベルであった場合には、現在のユーザクロックの変化をそのまま出力する。つまり、ユーザクロックがＨレベルに変化した場合には、リフレッシュ可否判定部２１３は、Ｈレベルのリフレッシュ許可信号を出力する。
また、図７（ａ）において、時刻０Ｔを起点とするユーザクロックサイクルでは、ユーザ回路１４０からのＳＳＲＡＭアクセス要求がなく、時刻１０Ｔを起点とするユーザクロックサイクルで、ＳＳＲＡＭアクセス要求が発生したものとする。
ここで、時刻１０Ｔを起点とするユーザクロックサイクルでのアクセス要求に基づくＳＳＲＡＭインタフェースアクセスサイクルは、１０Ｔの時間が必要であり、時刻１０Ｔから時刻２０Ｔまでの期間を要する。このうち、ＳＤＲＡＭアクセス処理に要する時間は時刻１１Ｔから時刻１９Ｔである。したがって、８Ｔの時間を要するリフレッシュ要求をその前に完了するためには、遅くとも時刻３Ｔにはリフレッシュを開始する必要がある。
このため、リフレッシュ許可信号生成部２１０は、０Ｔから３Ｔの期間を第２の期間として、リフレッシュ許可を表す第２のレベル（Ｈレベル）のリフレッシュ許可信号を生成すればよい。また、リフレッシュ許可信号生成部２１０は、３Ｔから１０Ｔまでの期間を第１の期間として、リフレッシュ禁止を表す第１のレベル（Ｌレベル）のリフレッシュ許可信号を生成すればよい。
次に、図７（ａ）において、リフレッシュ許可信号生成部２１０がリフレッシュ許可信号を生成する動作について説明する。
図７（ａ）において、まず時刻０Ｔでは、ユーザクロックがＬレベルからＨレベルに変化する。そこで、リフレッシュ可否判定部２１３は、ユーザクロックの変化に伴って、Ｈレベルのリフレッシュ許可信号を出力する。
次に、時刻１Ｔでは、ＳＤＲＡＭクロックカウンタ２１２は、ユーザクロックがＨレベルへと変化したことを検出したことから、カウンタ値をユーザクロック周期保持レジスタ２１１の値（１０−９）×２＝２にリセットする。そして、リフレッシュ可否判定部２１３は、ＳＤＲＡＭクロックカウンタ２１２の値が０でないことから、継続して時刻２ＴまではＨレベルのリフレッシュ許可信号を出力する。
次に、時刻２Ｔでは、ＳＤＲＡＭクロックカウンタ２１２の値が１減算され、１となる。そして、リフレッシュ可否判定部２１３は、ＳＤＲＡＭクロックカウンタ２１２の値が０でないことから、継続して時刻３ＴまではＨレベルのリフレッシュ許可信号を出力する。
次に、時刻３Ｔでは、ＳＤＲＡＭクロックカウンタ２１２の値が１減算され、０となる。そして、リフレッシュ可否判定部２１３は、ＳＤＲＡＭクロックカウンタ２１２の値が０であることから、リフレッシュ許可信号をＬレベルに変化させて出力する。
以後、時刻１０Ｔまで同様に、リフレッシュ可否判定部２１３は、Ｌレベルのリフレッシュ許可信号を出力する。
以上で、図７（ａ）におけるリフレッシュ許可信号生成動作の説明を終了する。
次に、図７（ａ）において、ＳＳＲＡＭラッパ２２０が、リフレッシュコマンド発行する動作について説明する。
まず、時刻０Ｔでは、ユーザ回路１４０からのＳＳＲＡＭアクセス要求がなく、リフレッシュ許可信号がＨレベルであるが、以前に開始した他の処理が残っている等の理由により、ＳＤＲＡＭコントローラ２２２は、リフレッシュコマンドを発行しない。以降時刻２Ｔまで同様である。
次に、時刻３Ｔでは、ユーザ回路１４０からのＳＳＲＡＭアクセス要求がなく、リフレッシュ許可信号がＨレベルであり、以前に開始した他の処理が終わったので、ＳＤＲＡＭコントローラ２２２は、リフレッシュコマンドを発行する。
次に、時刻１０Ｔでは、ＳＳＲＡＭインタフェース２２１は、ユーザ回路１４０からのＳＳＲＡＭアクセス要求を受信する。このとき、ＳＤＲＡＭ２３０はリフレッシュ中であるが、リフレッシュ終了の１Ｔ前である。そこで、ＳＳＲＡＭインタフェース２２１は、ＳＤＲＡＭコントローラ２２２に対してＳＳＲＡＭアクセス要求を中継するＳＳＲＡＭインタフェースアクセスサイクルを開始する。
次に、時刻１１Ｔでは、リフレッシュが終了するとともに、ＳＤＲＡＭコントローラ２２２が、ＳＤＲＡＭ２３０へのリードまたはライトアクセスのコマンドを発行する。
次に、時刻１９Ｔでは、ＳＳＲＡＭアクセス要求がリード要求であった場合には、ＳＤＲＡＭコントローラ２２２は、ＳＤＲＡＭ２３０からリードデータを受信する。
次に、時刻２０Ｔでは、ＳＳＲＡＭインタフェース２２１が、ＳＤＲＡＭコントローラ２２２から受信したリードデータをユーザ回路１４０に送出する。そして、ユーザ回路１４０は、リードデータを受信する。
なお、ユーザクロックが１０Ｔの場合において、図７（ａ）に示した例では、リフレッシュコマンドの発行を時刻３Ｔに行っているが、これは、リフレッシュコマンドを発行可能な第２の期間のうち最も遅く発行した例である。
図７（ａ）に示したケースにおいても、時刻０Ｔ〜３Ｔの期間でリフレッシュコマンド発行可能である。したがって、例えば、時刻１Ｔにおいて、ＳＤＲＡＭコントローラ２２２が他の処理を終了する等してリフレッシュ可能となれば、リフレッシュコマンドを発行することが可能である。
その場合、時刻９Ｔでリフレッシュ動作が終了する。
そして、時刻１０Ｔにおいて、ＳＳＲＡＭインタフェース２２１は、ユーザ回路１４０からのＳＳＲＡＭアクセス要求を受信する。このとき、リフレッシュ中ではないので、ＳＳＲＡＭインタフェースアクセスサイクルを開始する。
そして、時刻１１Ｔにおいて、ＳＤＲＡＭコントローラ２２２がＳＤＲＡＭ２３０へのリードまたはライト処理を開始する。
そして、時刻２０Ｔで、ＳＳＲＡＭインタフェース２２１がリードデータをユーザ回路１４０に送出する。そして、ユーザ回路１４０は、リードデータを受信する。
以上で、ユーザクロックが１０Ｔの場合の説明を終了する。
＜ユーザクロック１２Ｔの場合＞
引き続き、ユーザクロックの周期がＳＤＲＡＭクロックの１２周期分（１２Ｔ）である場合について、図７（ｂ）を参照して説明する。
図７（ｂ）において、ユーザクロック周期保持レジスタ２１１は、図７（ａ）の場合と同様に、（［ユーザクロックの周期］−９）×２の計算式によって算出される値を保持しているものとする。ここでは、保持される値は、（１２−９）×２＝６となる。
また、ＳＤＲＡＭクロックカウンタ２１２およびリフレッシュ可否判定部２１３の構成は、図７（ａ）の場合と同様である。
また、図７（ｂ）において、時刻０Ｔを起点とするユーザクロックサイクルでは、ユーザ回路１４０からのＳＳＲＡＭアクセス要求がなく、時刻１２Ｔを起点とするユーザクロックサイクルで、ＳＳＲＡＭアクセス要求が発生したものとする。
ここで、時刻１２Ｔを起点とするユーザクロックサイクルでのＳＳＲＡＭインタフェースアクセスサイクルは、１０Ｔの時間が必要であり、最も遅く開始した場合には、時刻１４Ｔから時刻２４Ｔまでの期間を要する。
このうち、ＳＤＲＡＭアクセスに要する時間は時刻１５Ｔから時刻２３Ｔである。したがって、８Ｔの時間を要するリフレッシュ要求をその前に完了するためには、遅くとも時刻７Ｔにはリフレッシュを開始する必要がある。
このため、リフレッシュ許可信号生成部２１０は、０Ｔから７Ｔまでを第２の期間として、リフレッシュ許可を表すＨレベルとなるようリフレッシュ許可信号を出力すればよい。また、リフレッシュ許可信号生成部２１０は、７Ｔから１２Ｔまでの期間を第１の期間として、その間、リフレッシュ禁止を表すＬレベルとなるようリフレッシュ許可信号を出力すればよい。
次に、図７（ｂ）において、リフレッシュ許可信号生成部２１０がリフレッシュ許可信号を生成する動作について説明する。
まず、時刻０Ｔでは、ユーザクロックがＬレベルからＨレベルに変化する。そこで、リフレッシュ可否判定部２１３は、ユーザクロックの変化に伴ってリフレッシュ許可信号をＨレベルと変化させて出力する。
次に、時刻１Ｔでは、ＳＤＲＡＭクロックカウンタ２１２は、ユーザクロックがＨレベルへと変化したことを検出したことから、カウンタ値を、ユーザクロック周期保持レジスタ２１１の値（１２−９）×２＝６にリセットする。そこで、リフレッシュ可否判定部２１３は、ＳＤＲＡＭクロックカウンタ２１２の値が０でないことから、継続してリフレッシュ許可信号を時刻２ＴまでＨレベルに保つ。
次に、時刻２Ｔから６Ｔまでは、ＳＤＲＡＭクロックカウンタ２１２の値が１減算されていくが、その値はまだ１以上である。したがって、リフレッシュ可否判定部２１３は、時刻７Ｔまで、Ｈレベルのリフレッシュ許可信号を出力する。
次に、時刻７Ｔでは、ＳＤＲＡＭクロックカウンタ２１２の値が１減算され、０となる。そこで、リフレッシュ可否判定部２１３は、リフレッシュ許可信号をＬレベルに変化させる。以後、時刻１２Ｔまで同様に、リフレッシュ許可信号はＬレベルとなる。
次に、図７（ｂ）において、ＳＳＲＡＭラッパ２２０が、リフレッシュコマンド発行する動作について説明する。
まず、時刻０Ｔでは、ユーザ回路１４０からのＳＳＲＡＭアクセス要求がなく、リフレッシュ許可信号がＨレベルであるが、以前に開始した他の処理が残っている等の理由により、ＳＤＲＡＭコントローラ２２２は、リフレッシュコマンドを発行しない。以降時刻６Ｔまで同様である。
次に、時刻７Ｔでは、ユーザ回路１４０からのＳＳＲＡＭアクセス要求がなく、リフレッシュ許可信号がＨレベルであり、以前に開始した他の処理が終わったので、ＳＤＲＡＭコントローラ２２２は、リフレッシュコマンドを発行する。
次に、時刻１２Ｔでは、ＳＳＲＡＭインタフェース２２１は、ユーザ回路１４０からのＳＳＲＡＭアクセス要求を受信する。このとき、ＳＤＲＡＭ２３０がリフレッシュ中であるため、ＳＳＲＡＭインタフェース２２１は、ＳＤＲＡＭコントローラ２２２に対してＳＳＲＡＭアクセスを中継するＳＳＲＡＭインタフェースアクセスサイクルを開始しない。
次に、時刻１４Ｔでは、リフレッシュ終了の１Ｔ前になったので、ＳＳＲＡＭインタフェース２２１は、ＳＳＲＡＭインタフェースアクセスサイクルを開始する。
次に、時刻１５Ｔでは、リフレッシュが終了するとともに、ＳＤＲＡＭコントローラ２２２が、ＳＤＲＡＭ２３０へのリードまたはライトアクセスのコマンドを発行する。
次に、時刻２３Ｔでは、ＳＳＲＡＭアクセス要求がリード要求であった場合には、ＳＤＲＡＭコントローラ２２２は、ＳＤＲＡＭ２３０からリードデータを受信する。
次に、時刻２４Ｔでは、ＳＳＲＡＭインタフェース２２１が、ＳＤＲＡＭコントローラ２２２から受信したリードデータをユーザ回路１４０に送出する。そして、ユーザ回路１４０は、リードデータを受信する。
なお、ユーザクロックが１２Ｔの場合において、図７（ｂ）に示した例では、リフレッシュコマンドの発行を時刻７Ｔに行っているが、これは、リフレッシュコマンドを発行可能な第２の期間のうち最も遅く発行した例である。
図７（ｂ）に示したケースにおいても、時刻０Ｔ〜７Ｔの期間でリフレッシュコマンド発行可能である。
したがって、例えば、時刻５Ｔにおいて、ＳＤＲＡＭコントローラ２２２が他の処理を終了する等してリフレッシュ可能となれば、時刻５Ｔでリフレッシュコマンドを発行することが可能である。
その場合、時刻１２Ｔにおいて、ＳＳＲＡＭインタフェース２２１は、ユーザ回路１４０からのＳＳＲＡＭアクセス要求を受信する。時刻１２Ｔでは、ＳＤＲＡＭ２３０はリフレッシュ中であるが、リフレッシュ終了の１Ｔ前である。そこで、時刻１２Ｔに、ＳＳＲＡＭインタフェース２２１は、ＳＳＲＡＭインタフェースアクセスサイクルを開始する。
そして、時刻１３Ｔにおいてリフレッシュが終了し、ＳＤＲＡＭコントローラ２２２は、ＳＤＲＡＭ２３０へのリードまたはライト処理を開始する。
そして、時刻２２Ｔで、ＳＳＲＡＭインタフェース２２１がリードデータをユーザ回路１４０に送出する。
ユーザ回路１４０は、ユーザクロックにしたがって動作しているので、時刻２４Ｔで、このリードデータを受信することになる。
以上で、ユーザクロックが１２Ｔの場合の説明を終了する。
次に、本発明の第２の実施形態の効果について説明する。
本発明の第２の実施形態としての論理回路エミュレータは、ＳＤＲＡＭを用いて大容量のＳＳＲＡＭを含む論理回路のエミュレーションを可能とする。
その理由は、第２の期間に、リフレッシュ許可信号生成部が、リフレッシュ許可を表す信号を出力するからである。その第２の期間は、ＳＤＲＡＭクロックに基づくＳＤＲＡＭに対するリフレッシュコマンドの発行が、その後のユーザ回路によるＳＳＲＡＭラッパに対するアクセスの結果の、ユーザクロックに基づく受信タイミングを、遅延させる可能性がある第１の期間以外の期間である。そして、ＳＳＲＡＭラッパが、ユーザ回路からのＳＳＲＡＭアクセス要求がなく、リフレッシュ許可を表す信号が出力されている第２の期間に、ＳＤＲＡＭに対してリフレッシュコマンドを発行するからである。
したがって、本発明の第２の実施形態としての論理回路エミュレータは、このような第２の期間にリフレッシュコマンドを発行することにより、次回のユーザクロックサイクルでユーザ回路からのＳＳＲＡＭアクセス要求があったとしても、次回のユーザクロックサイクル中においてそのＳＳＲＡＭアクセス要求に応じた処理を完了可能となる。
このため、本発明の第２の実施形態としての論理回路エミュレータは、ＳＤＲＡＭをＳＳＲＡＭとしてアクセスする論理回路を検証する場合においても、ＳＤＲＡＭに保存されたデータを保持することが可能となる。したがって、本発明の第２の実施形態としての論理回路エミュレータは、ＳＤＲＡＭを大容量のＳＳＲＡＭとしてエミュレーションすることが可能となるのである。
（本発明の第２の実施の形態の他の態様）
次に、本発明の第２の実施の形態の他の態様について説明する。ここで説明する他の態様では、リフレッシュ許可信号生成部２１０が有する各部の構成が、第２の実施の形態におけるものと若干異なる。
ユーザ周期保持レジスタ２１１は、本発明の第２の実施の形態と同様に、第２の期間の長さに調整値を加算した値を保持する。
ＳＤＲＡＭクロックカウンタ２１２は、ユーザクロックがＨレベルに変化したことを検出すると、カウンタ値をユーザ周期保持レジスタ２１１にリセットする代わりに、０にリセットする。そして、ＳＤＲＡＭクロックカウンタ２１２は、それ以外の場合には、カウンタ値を１減算する代わりに、１加算する。
リフレッシュ可否判定部２１３は、１つ前のＳＤＲＡＭクロックサイクルにおいてユーザクロックがＬレベルであった場合には、現在のユーザクロックの変化をそのまま出力する。つまり、リフレッシュ可否判定部２１３は、ユーザクロックがＬレベルからＨレベルに変化した場合にはＨレベルのリフレッシュ許可信号を出力する。
また、リフレッシュ可否判定部２１３は、ＳＤＲＡＭクロックカウンタ２１２の値が、０であるか否かを判定する代わりに、ユーザ周期保持レジスタ２１１の値未満であるか否かを判定する。
すなわち、リフレッシュ可否判定部２１３は、ＳＤＲＡＭクロックカウンタ２１２の値がユーザ周期保持レジスタ２１１の値未満の場合に、第２の期間であるとして、Ｈレベルのリフレッシュ許可信号を出力する。また、リフレッシュ可否判定部２１３は、ＳＤＲＡＭクロックカウンタ２１２の値がユーザ周期保持レジスタ２１１の値以上の場合に、第１の期間であるとして、Ｌレベルのリフレッシュ許可信号を出力する。
これにより、リフレッシュ可否判定部２１３は、今回のユーザクロックサイクルの開始時点から、次回のユーザクロックサイクルの終了時点より上述のリフレッシュＳＳＲＡＭアクセス連続処理所要時間前の時点までを第２の期間として判定することになる。また、リフレッシュ可否判定部２１３は、第２の期間終了時点から次回のユーザクロック立ち上がり時点までを第１の期間として判定することになる。
なお、この場合、ＳＤＲＡＭクロックカウンタ２１２がその値をリセットするのは、ユーザクロックの立ち上がりを検出してから１ＳＤＲＡＭクロック分遅延する。そこで、ＳＤＲＡＭクロックカウンタ２１２の値がユーザ周期保持レジスタ２１１の値未満であるか否かに基づいてリフレッシュ可否判定部２１３が判定を行うために、ユーザクロック周期保持レジスタ２１１は、第２の期間の長さから調整値として−１を加算した値を保持しておけばよい。
次に、このように構成された本発明の第２の実施の形態の他の態様の具体例について、図８を参照して説明する。
図８（ａ）は、ユーザクロックが１０Ｔの場合のユーザクロックの波形、ＳＤＲＡＭクロックの波形、ＳＤＲＡＭクロックカウンタ２１２の値、リフレッシュ許可信号の波形をそれぞれ示す図である。図８（ｂ）は、ユーザクロックが１２Ｔの場合の各波形および値を示す図である。なお、図８において、論理回路エミュレータ２０の各部の構成は、ＳＤＲＡＭクロックカウンタ２１２およびリフレッシュ可否判定部２１３の構成が図７の場合と異なる点以外は、図７の場合と同様であるものとする。
＜ユーザクロック１０Ｔの場合＞
まず、ユーザクロックが１０Ｔの場合のリフレッシュ許可信号生成部２１０の動作について、図８（ａ）を参照して説明する。
まず、時刻０Ｔでは、ユーザクロックがＬレベルからＨレベルに変化する。そこで、リフレッシュ可否判定部２１３は、ユーザクロックの変化に伴ってリフレッシュ許可信号をＨレベルへと変化させる。
次に、時刻１Ｔにおいて、ＳＤＲＡＭクロックカウンタ２１２はユーザクロックのＨレベルへの変化を検出したことにより、カウンタ値を０にクリアする。ここで、ＳＤＲＡＭクロックカウンタ２１２の値０は、ユーザクロック周期保持レジスタ２１１の値（１０−９）×２＝２未満である。そこで、リフレッシュ可否判定部２１３は、継続してリフレッシュ許可信号を時刻２ＴまでＨレベルに保つ。
次に、時刻２Ｔでは、ＳＤＲＡＭクロックカウンタ２１２の値が１加算されて１となるが、値はまだ２未満である。そこで、リフレッシュ可否判定部２１３は、時刻３Ｔまでリフレッシュ許可信号をＨレベルに保つ。
次に、時刻３Ｔでは、ＳＤＲＡＭクロックカウンタ２１２の値が１加算され、２となる。つまり、ＳＤＲＡＭクロックカウンタ２１２の値は、ユーザクロック周期保持レジスタ２１１の値２以上である。そこで、リフレッシュ可否判定部２１３は、リフレッシュ許可信号をＬレベルに変化させる。以後、時刻１０Ｔまで、同様にしてリフレッシュ許可信号はＬレベルとなる。
なお、図８（ａ）において、ＳＳＲＡＭラッパ２２０がリフレッシュコマンド発行する動作は、図７（ａ）の場合と同様であるため、説明を省略する。
＜ユーザクロック１２Ｔの場合＞
引き続き、ユーザクロックの周期がＳＤＲＡＭクロックの１２周期分（１２Ｔ）である場合について説明する。
まず、時刻０Ｔでは、ユーザクロックがＬレベルからＨレベルに変化する。そこで、リフレッシュ可否判定部２１３は、ユーザクロックの変化に伴ってリフレッシュ許可信号をＨレベルへと変化させる。
次に、時刻１Ｔでは、ＳＤＲＡＭクロックカウンタ２１２は、ユーザクロックのＨレベルへの変化を検出したことから、カウンタ値を０にクリアする。ここで、ＳＤＲＡＭクロックカウンタ２１２の値０は、ユーザクロック周期保持レジスタ２１１の値（１２−９）×２＝６未満である。そこで、リフレッシュ可否判定部２１３は、継続してリフレッシュ許可信号を時刻２ＴまでＨレベルに保つ。
以降、時刻２Ｔから６Ｔまでは、ＳＤＲＡＭクロックカウンタ２１２の値が１ずつ加算されていくが、値はまだ６未満である。そこで、リフレッシュ可否判定部２１３は、同様に時刻７Ｔまでリフレッシュ許可信号をＨレベルに保つ。
次に、時刻７Ｔでは、ＳＤＲＡＭクロックカウンタ２１２の値が１加算され、６となる。ここで、ＳＤＲＡＭクロックカウンタ２１２の値は、ユーザクロック周期保持レジスタ２１１の値６以上である。そこで、リフレッシュ可否判定部２１３は、リフレッシュ許可信号をＬレベルに変化させる。以後時刻１２Ｔまで同様にリフレッシュ許可信号はＬレベルとなる。
なお、図８（ｂ）において、ＳＳＲＡＭラッパ２２０がリフレッシュコマンド発行する動作は、図７（ｂ）の場合と同様であるため、説明を省略する。
このように、図７および図８において、リフレッシュ許可信号の波形は（ａ）および（ｂ）においてそれぞれ同一となっている。したがって、本発明の第２の実施形態の他の態様の論理回路エミュレータは、本発明の第２の実施形態と同様にリフレッシュ許可信号を生成していることがわかる。これにより、本発明の第２の実施の形態の他の態様の論理回路エミュレータは、本発明の第２の実施の形態と同様に、ＳＤＲＡＭを大容量のＳＳＲＡＭとしてエミュレーション動作させることが可能となる。
なお、本発明の第２の実施の形態およびその他の態様において、リフレッシュ許可信号生成部２１０を構成する各部の異なる構成について説明したが、本発明におけるリフレッシュ許可信号生成部の構成はこれに限らない。
例えば、本発明の第２の実施の形態の他の態様では、ユーザクロック周期保持レジスタ２１１が、（ユーザクロックの周期−９）×２で算出される値を保持していた。また、リフレッシュ可否判定部２１３は、ＳＤＲＡＭクロックカウンタ２１２の値がユーザクロック周期保持レジスタ２１１の値未満であるか否かに基づいて、第１の期間および第２の期間のいずれの期間であるかを判定していた。
これに対して、例えば、ユーザクロック周期保持レジスタ２１１が、（ユーザクロックの周期−９）×２−１で算出される値を保持しておいてもよい。そして、リフレッシュ可否判定部２１３は、ＳＤＲＡＭクロックカウンタ２１２の値がユーザクロック周期保持レジスタ２１１の値以下であるか否かに基づいて、第１の期間および第２の期間のいずれの期間であるかを判定してもよい。
その他、リフレッシュ許可信号生成部２１０を構成する各部の構成はこれに限らない。ユーザクロック周期保持レジスタ２１１は、ＳＤＲＡＭクロックに対するユーザクロックの周期、リフレッシュに要するリフレッシュ所要期間、および、ＳＳＲＡＭラッパ２２０からＳＤＲＡＭ２３０へのアクセスに要するアクセス所要期間に基づき算出される値を保持しておけばよい。
また、ＳＤＲＡＭクロックカウンタ２１２は、ユーザクロックに同期してカウンタ値をリセットするとともに、ＳＤＲＡＭクロックに同期してカウンタ値の加減算を行うようにすればよい。そして、リフレッシュ可否判定部２１３は、ユーザクロック周期保持レジスタ２１１の値およびＳＤＲＡＭクロックカウンタ２１２の値の少なくとも１つに基づいて、第１の期間および第２の期間のいずれであるかを判断すればよい。
（第３の実施の形態）
次に、本発明の第３の実施形態について図面を参照して詳細に説明する。なお、本実施の形態の説明において参照する各図面において、本発明の第１および第２の実施の形態と同一の構成および同様に動作するステップには同一の符号を付して本実施の形態における詳細な説明を省略する。
本発明の第３の実施形態としての論理回路エミュレータ３０の全体構成を示すブロック図を図９に示す。図９に示すように、論理回路エミュレータ３０は、再構成可能デバイス３００およびＳＤＲＡＭ２３０を備えている。
また、再構成可能デバイス３００は、本発明の第２の実施の形態における再構成可能デバイス３００に対して、リフレッシュ許可信号生成部２１０およびユーザクロック生成部２６０に替えて、リフレッシュ許可信号生成部３１０を備える点が異なる。なお、ユーザ回路１４０以外の各部は再構成可能デバイス３００外部に構成されていてもよい。
また、図９には、論理回路エミュレータ３０を構成する各部を１つずつ示しているが、本発明の論理回路エミュレータが備える各部の数を限定するものではない。すなわち、論理回路エミュレータ３０は、２以上の任意数の各部を備えるよう拡張可能である。
リフレッシュ許可信号生成部３１０は、本発明の第２の実施の形態におけるリフレッシュ許可信号生成部３１０と同様に構成されるのに加えて、生成したリフレッシュ制御信号を、デューティ比を制御したユーザクロック信号としてユーザ回路１４０に供給する。すなわち、リフレッシュ許可信号生成部３１０は、リフレッシュ許可信号を兼用するユーザクロック信号を生成する。
このため、リフレッシュ許可信号生成部３１０は、ユーザクロック周期保持レジスタ２１１、ＳＤＲＡＭクロックカウンタ２１２、および、リフレッシュ可否判定部３１３を含んでいてもよい。
この場合、ユーザクロック周期保持レジスタ２１１およびＳＤＲＡＭクロックカウンタ２１２は、本発明の第２の実施の形態と同様に構成される。
リフレッシュ可否判定部３１３は、本発明の第２の実施の形態におけるリフレッシュ可否判定部２１３と同様に構成される。このことにより、リフレッシュ可否判定部３１３は、第１の期間と判定した期間に第１のレベルとなり、第２の期間と判定した期間に第２のレベルとなるリフレッシュ許可信号を生成する。
そして、リフレッシュ可否判定部３１３は、生成したリフレッシュ許可信号をＳＳＲＡＭラッパ２２０に供給するだけでなく、さらに、デューティ比が制御されたユーザクロック信号としてユーザ回路１４０に出力する。
以上のように構成された論理回路エミュレータ３０の動作例を、図１０の波形図を用いて、説明する。
ここで、図１０では、ユーザクロックとＳＤＲＡＭクロックとの周期が異なり、位相が揃っているものとする。なお、これらのクロックの位相が揃っていない場合にも、本実施の形態は適用可能である。また、本発明の第２の実施の形態と同様に、ＳＤＲＡＭクロック１周期分の時間を１Ｔと定義する。
また、図１０において、ＳＤＲＡＭアクセス処理に要する時間、ＳＤＲＡＭ２３０のリフレッシュに要する時間、および、ＳＳＲＡＭインタフェースアクセスサイクルに要する時間は、それぞれ、８Ｔ、８Ｔおよび１０Ｔであるものとする。これらは、本発明の第２の実施の形態において図７および図８を参照して説明した動作例と同様である。
また、ユーザクロック、ＳＤＲＡＭクロックのいずれにしたがって動作する回路も、それぞれクロックがＬレベルからＨレベルに変化する立ち上がりエッジで動作するものとする。
図１０（ａ）は、ユーザクロックが１０Ｔの場合のユーザクロックおよびＳＤＲＡＭクロックの各波形を示す。また、図１０（ｂ）は、ユーザクロックが１２Ｔの場合の各波形を示す。また、図１０（ａ）および（ｂ）において、ユーザクロックの波形のうち、本実施の形態におけるユーザクロックの波形を実線で示し、一般的なデューティ比１：１のユーザクロックの波形を対比のため点線で示している。なお、ＳＤＲＡＭクロックカウンタ２１２のカウンタ値については、図７および図８と同様であるため、図示を省略している。
＜ユーザクロックが１０Ｔの場合＞
図１０（ａ）は、時刻１０Ｔを起点とするユーザクロックサイクルではユーザ回路１４０からのＳＳＲＡＭアクセス要求がなく、時刻１０Ｔを起点とするユーザクロックサイクルでＳＳＲＡＭアクセス要求が発生する場合の各波形を示している。
ここで、時刻１０Ｔを起点とするユーザクロックサイクルでのＳＳＲＡＭアクセス要求に基づくＳＳＲＡＭインタフェースアクセスサイクルは、１０Ｔの時間を必要とする。すなわち、ＳＳＲＡＭインタフェースアクセスサイクルは、時刻１０Ｔから時刻２０Ｔまでの期間を要する。このうち、ＳＤＲＡＭアクセスに要する時間は時刻１１Ｔから時刻１９Ｔであるため、８Ｔの時間を要するリフレッシュ要求をその前に完了するためには、遅くとも時刻３Ｔにはリフレッシュを開始する必要がある。
このとき、リフレッシュ許可信号生成部３１０がリフレッシュ許可信号を兼用したユーザクロック信号を生成する動作について説明する。
まず、時刻０Ｔ〜３Ｔまでは、リフレッシュ可否判定部３１３は、図７（ａ）および図８（ａ）の場合と同様に、リフレッシュ開始を許可する第２の期間であると判定する。そこで、リフレッシュ可否判定部３１３は、Ｈレベルの信号をリフレッシュ許可信号としてＳＳＲＡＭラッパ２２０に出力する。さらに、リフレッシュ可否判定部３１３は、Ｈレベルの信号をユーザクロック信号としてユーザ回路１４０に出力する。
次に、時刻３Ｔ〜１０Ｔまでは、リフレッシュ可否判定部３１３は、図７（ａ）および図８（ａ）の場合と同様に、リフレッシュ開始を禁止する第１の期間であると判定する。そこで、リフレッシュ可否判定部３１３は、Ｌレベルの信号をリフレッシュ許可信号としてＳＳＲＡＭラッパ２２０に出力する。さらに、リフレッシュ可否判定部３１３は、Ｌレベルの信号をユーザクロック信号としてユーザ回路１４０に出力する。
以上で、ユーザクロックが１０Ｔの場合の説明を終了する。
＜ユーザクロックが１２Ｔの場合＞
図１０（ｂ）は、時刻０Ｔを起点とするユーザクロックサイクルではユーザ回路１４０からのＳＳＲＡＭアクセス要求がなく、時刻１２Ｔを起点とするユーザクロックサイクルでＳＳＲＡＭアクセス要求が発生する場合の動作例である。
ここで、時刻１２Ｔを起点とするユーザクロックサイクルでのＳＳＲＡＭアクセス要求に応じたＳＳＲＡＭインタフェースアクセスサイクルは、１０Ｔの時間が必要である。したがって、時刻１２Ｔを起点とするユーザクロックサイクルでＳＳＲＡＭインタフェースアクセスサイクルを終了するためには、最も遅くて時刻１４Ｔから時刻２４Ｔまでの期間にＳＳＲＡＭインタフェースアクセスサイクルを実行する必要がある。
このうち、ＳＤＲＡＭアクセスに要する期間は、時刻１５Ｔから時刻２３Ｔとなる。したがって８Ｔの時間を要するリフレッシュ要求をその前に完了するためには、遅くとも時刻７Ｔにはリフレッシュを開始する必要がある。
このとき、リフレッシュ許可信号生成部３１０がリフレッシュ許可信号を兼用したユーザクロック信号を生成する動作について説明する。
まず、時刻０Ｔ〜７Ｔまでは、リフレッシュ可否判定部３１３は、図７（ｂ）および図８（ｂ）の場合と同様に、リフレッシュ開始を許可する第２の期間であると判定する。そこで、リフレッシュ可否判定部３１３は、Ｈレベルの信号をリフレッシュ許可信号としてＳＳＲＡＭラッパ２２０に出力する。さらに、リフレッシュ可否判定部３１３は、Ｈレベルの信号をユーザクロック信号としてユーザ回路１４０に出力する。
次に、時刻７Ｔ〜１２Ｔまでは、リフレッシュ可否判定部３１３は、図７（ｂ）および図８（ｂ）の場合と同様に、リフレッシュ開始を禁止する第１の期間であると判定する。そこで、リフレッシュ可否判定部３１３は、Ｌレベルの信号をリフレッシュ許可信号としてＳＳＲＡＭラッパ２２０に出力する。さらに、リフレッシュ可否判定部３１３は、Ｌレベルの信号をユーザクロック信号としてユーザ回路１４０に出力する。
以上で、ユーザクロックが１２Ｔの場合の説明を終了する。
なお、図１０（ａ）および（ｂ）において、ＳＳＲＡＭラッパ２２０がリフレッシュ許可信号にしたがってリフレッシュコマンドを発行する動作については、図７および図８を参照して説明した動作例と同様であるため、説明を省略する。
次に、本発明の第３の実施形態の効果について説明する。
本発明の第３の実施の形態としての論理回路エミュレータは、ＳＤＲＡＭを大容量のＳＳＲＡＭとしてエミュレーション動作させることを可能としながら、回路構成および配線の簡素化を実現することができる。
その理由は、リフレッシュ可否判定部が、第２の期間に第２のレベルとなるリフレッシュ許可信号を、デューティ比が制御されたユーザクロック信号としてユーザ回路に出力する。その第２の期間は、リフレッシュ開始を禁止する第１の期間に第１のレベルとなり、リフレッシュ開始を許可する期間である。このため、リフレッシュ許可信号生成部がユーザクロック生成部の代用となるからである。
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
この出願は、２０１１年４月１１日に出願された日本出願特願２０１１−０８７４９１を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【０００９】
１０、２０、３０    論理回路エミュレータ
１１０、２１０、３１０    リフレッシュ許可信号生成部
１２０    ＳＲＡＭラッパ
１２１    ＳＲＡＭインタフェース
１２２    ＤＲＡＭコントローラ
１２３    ＤＲＡＭインタフェース
１３０    ＤＲＡＭ
１４０    ユーザ回路
２００、３００    再構成可能デバイス
２１１    ユーザクロック周期保持レジスタ
２１２    ＳＤＲＡＭクロックカウンタ
２１３、３１３    リフレッシュ可否判定部
２２０    ＳＳＲＡＭラッパ
２２１    ＳＳＲＡＭインタフェース
２２２    ＳＤＲＡＭコントローラ
２２３    ＳＤＲＡＭインタフェース
２３０    ＳＤＲＡＭ
２５０    ＳＤＲＡＭクロック生成部
２６０    ユーザクロック生成部
【図１】
2012141318.tif 000003
【図２】
2012141318.tif 000004
【図３】
2012141318.tif 000005
【図４】
2012141318.tif 000006
【図５】
2012141318.tif 000007
【図６】
2012141318.tif 000008
【図７】
2012141318.tif 000009
【図８】
2012141318.tif 000010
【図９】
2012141318.tif 000011
【図１０】
2012141318.tif 000012
【国際調査報告】
2012141318.tif 000013
2012141318.tif 000014