(57)【要約】【課題】使用するクロックの安定性が確保されていない場合でもＲＯＭ値が壊れることを防ぐ。【解決手段】第１のクロックに対応した読み出しアドレスに対応してデータが読み出される、第１の記憶手段と、前記第１のクロックに対応した書き込みアドレスに対応して前記第１の記憶手段から読み出された前記データが書き込まれ、第２のクロックに対応した読み出しアドレスに対応して前記書き込まれた前記データが読み出される、第２の記憶手段と、前記第１のクロックの安定化を確認し、前記第１のクロックが安定化していないときは、前記第１の記憶手段の前記読み出しアドレスを固定値に固定し、前記第１のクロックが安定化しているときは、前記第１の記憶手段に前記第１のクロックに対応した前記読み出しアドレスを発生し、前記第２の記憶手段に前記第１のクロックに対応した前記書き込みアドレスを発生する、アドレス発生手段と、を有する半導体記憶装置である。【選択図】      図１
2014016892.tif 000002
【特許請求の範囲】
【請求項１】
第１のクロックに対応した読み出しアドレスに対応してデータが読み出される第１の記憶手段と、
前記第１のクロックに対応した書き込みアドレスに対応して前記第１の記憶手段から読み出された前記データが書き込まれ、第２のクロックに対応した読み出しアドレスに対応して前記書き込まれた前記データが読み出される、第２の記憶手段と、
前記第１のクロックの安定化を確認し、
前記第１のクロックが安定化していないときは、前記第１の記憶手段の前記読み出しアドレスを固定値に固定し、
前記第１のクロックが安定化しているときは、前記第１の記憶手段に前記第１のクロックに対応した前記読み出しアドレスを発生し、前記第２の記憶手段に前記第１のクロックに対応した前記書き込みアドレスを発生する、
アドレス発生手段と、を有する半導体記憶装置。
【請求項２】
前記第２の記憶手段の前記書き込みアドレスと前記第２の記憶手段の前記読み出しアドレスとが同一であって、かつ、前記書き込みアドレスの書き込みの動作と前記読み出しアドレスの読み出しの動作とが同じ時間の動作になるように設定された場合、前記アドレス発生手段の前記アドレスの発生を停止させるアドレス調停手段を有する、請求項１記載の半導体記憶装置。
【請求項３】
前記第１のクロックを生成し、前記第１のクロックを前記第１の記憶手段と前記第２の記憶手段と前記アドレス発生手段と前記アドレス調停手段とに供給し、前記アドレス発生手段に前記第１のクロックの安定化を前記アドレス発生手段が確認するための信号を供給する、クロック生成手段を有する、請求項１乃至２の何れか１項記載の半導体記憶装置。
【請求項４】
前記第１の記憶手段は初期値付きＲＡＭからなる、請求項１乃至３の何れか１項記載の半導体記憶装置。
【請求項５】
前記クロック生成手段が、フェーズ  ロック  ループ（ＰＬＬ）からなる、請求項１乃至４の何れか１項記載の半導体記憶装置。
【請求項６】
前記第１の記憶手段から読み出された前記データ、あるいは、前記第２の記憶手段から読み出された前記データ、のエラーを訂正するエラー訂正手段を有する、請求項１乃至５の何れか１項記載の半導体記憶装置。
【請求項７】
第１のクロックにより、第１の記憶手段に格納されたデータを第２の記憶手段に書き込み、第２のクロックにより、前記第２の記憶手段から前記データを所望の動作を行う回路に読み出す、半導体記憶装置の制御方法であって、
前記第１のクロックの安定化を確認する、確認工程と、
前記第１のクロックが安定化していないときは、前記第１の記憶手段の読み出しアドレスを固定値に固定し、前記第１のクロックが安定化しているときは、前記第１のクロックに対応して、前記第１の記憶手段に読み出しアドレスと前記第２の記憶手段に書き込みアドレスとを発生する、発生工程と、
前記読み出しアドレスにより前記第１の記憶手段に格納された前記データを読み出し、前記書き込みアドレスにより前記読み出された前記データを前記第２の記憶手段に書き込む、書き込み工程と、
前記第２のクロックにより、前記第２の記憶手段に書き込まれた前記データを前記回路に読み出す、読み出し工程と、を有する半導体記憶装置の制御方法。
【請求項８】
前記第２の記憶手段の前記書き込みアドレスと前記第２の記憶手段の前記読み出しアドレスとが同一であって、かつ前記書き込みアドレスの書き込みの動作と前記読み出しアドレスの読み出しの動作とが同じ時間の動作になるように設定された場合、前記発生工程を停止する調停工程を有する、請求項７記載の半導体記憶装置の制御方法。
【請求項９】
前記読み出し工程が行われていないときに、前記書き込み工程を実施する、請求項７乃至８の何れか１項記載の半導体記憶装置の制御方法。
【請求項１０】
前記読み出し工程が行われているときに、前記第２の記憶手段の前記読み出しアドレスと異なる前記第２の記憶手段の前記書き込みアドレスに前記書き込み工程を実施する、請求項７乃至８の何れか１項記載の半導体記憶装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体記憶装置に関し、特に、ＦＰＧＡなどに使用される半導体記憶装置およびその制御方法に関する。
【背景技術】
【０００２】
フィールドプログラマブルゲートアレイ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ、以下ＦＰＧＡ）や各種大規模集積回路においてはオンチップ  リードオンリーメモリー（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ、以下ＲＯＭ）が広く使用されている。このような構成は、例えば、特開２０００−１５１３８８に開示されている。ＲＯＭに格納されたプログラムやデータ（以下、ＲＯＭ値と称す）は所望の機能を有するユーザ回路で参照され所望の機能を実現するために必要となるもので、万一何らかの理由でＲＯＭ値が壊れると装置が誤動作を起こすという問題がある。
【０００３】
最新のＦＰＧＡにおいてはランダムアクセスメモリー（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ、以下ＲＡＭ）ブロックが大量に搭載されているのが一般的である。また、ＦＰＧＡのコンフィグレーション時にＲＡＭに初期値を与えることができるのも一般的である。従ってこの特徴を利用して、ＦＰＧＡにおいて大規模ＲＯＭを実現する場合、ＲＡＭに初期値を与えることによりＲＯＭ機能を実現する場合が多い。
【０００４】
このような手法を用いることにより、ＲＯＭ機能実現のためにルックアップテーブル（Ｌｏｏｋ  Ｕｐ  Ｔａｂｌｅ、以下ＬＵＴ）を消費することを防ぎ、ＬＵＴをユーザ回路実現のために振り向けることができる。ＦＰＧＡにおいては、このようにしてＬＵＴを有効に活用して大規模回路を実現するのが一般的である。特に、ＲＯＭの規模が大きい場合ほどＬＵＴの有効利用が可能となる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０００−１５１３８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ＲＯＭを実現するために初期値付きＲＡＭを用いる場合には以下のような課題があった。すなわち、ＲＯＭ値を保存するためのメモリセルがＲＡＭで構成されているので、ＲＯＭの読み出しクロック（Ｃｌｏｃｋ）が不安定になった場合、アドレス信号のＳｅｔｕｐ  Ｔｉｍｅ／Ｈｏｌｄ  Ｔｉｍｅを満たせなくなる場合（以下、アドレスレーシングと称す）が生じ、結果としてＲＡＭ内にマルチアドレスアクセス状態が生じ、マルチアドレスとなったメモリセルの保持値が破壊される場合がある。従って、この初期値付きＲＡＭを用いたＲＯＭの読み出しクロックには、安定なクロックを供給する必要がある。しかしながら、通信機器では種々の理由で特に装置の立ち上げ時にクロックが安定しない場合が多く、このような場合はＲＯＭ値が破壊されることになる。
【０００７】
なお、ここで注意を有するのは、ＲＯＭ値が破壊されるのはＲＡＭへの書き込みの際のアドレスレーシングのみではなく、読み出し時のアドレスレーシングによってもメモリセルの保持値が破壊される場合があることである。従って、読み出しだけの動作でもＲＯＭ値が破壊される場合があることである。
【０００８】
クロックが安定しない具体的な場合としては次のような場合があげられる。すなわち、クロックラインにフェーズ  ロック  ループ（Ｐｈａｓｅ  Ｌｏｃｋｅｄ  Ｌｏｏｐ、以下ＰＬＬ）を用いる場合に、装置に電源が入り、その後ＰＬＬがロックするまでの時間、または何らかの理由でＰＬＬのロックが外れた場合に再度ロックするまでの間の時間である。また、受信データ（Ｄａｔａ）からクロックを抽出する構成を取る回路（Ｃｌｏｃｋ  Ｄａｔａ  Ｒｅｃｏｖｅｒｙ、以下ＣＤＲ）においては、やはり受信データからクロックを抽出してクロック抽出ＰＬＬをロックさせるまでの時間、またはクロック抽出ＰＬＬが何らかの理由によりロックが外れて再度ロックするまでの間の時間である。
【０００９】
また、クロックラインを装置のモードにより切り替えて使用するような仕様の装置においては、クロックラインを切り替えた瞬間である。さらにまた、雷等で外部から強力なサージノイズを受けた瞬間である。
【００１０】
既知の半導体記憶装置の構成を図１１に示す。ＲＯＭは初期値付きＲＡＭで構成されており、ユーザ回路クロックで動作し、ユーザ回路から直接参照される。また、このときのタイムチャートを図１２に示す。図１２では一例としてサージノイズ等でクロックラインにグリッジが乗った場合を想定している。グリッジの立ち上がりエッジがほぼアドレスの変化点と一致し、アドレスラインに規定されるＳｅｔｕｐ  Ｔｉｍｅ／Ｈｏｌｄ  Ｔｉｍｅが満たされない場合アドレスレーシングが発生し、複数のアドレスが指定されたような動作となる場合がある。
【００１１】
次に図１３に、図１１のＲＯＭを構成する初期値付きＲＡＭの、ＲＡＭの内部構造を示す。ＲＡＭは一般的なＦＰＧＡの静的ＲＡＭ（Ｓｔａｔｉｃ  ＲＡＭ）の例である。複数のアドレスライン（本例ではアドレス０（Ａｄｄ＿０）とアドレス１６（Ａｄｄ＿１６））が有効になると、有効になったアドレスに配置されているメモリセル間に衝突がおき、メモリセルに保持されている情報が破壊される場合がある。
【００１２】
なお、実際にはいかなる場合でもクロックが不安定にならないよう、種々のプロテクション回路が搭載されている。しかしながら、実際には簡単で完全なプロテクションを実現することは難しく、結果として装置評価時に十分に長い時間をかけて実力値把握のための評価を行っているのが実情である。つまり、装置評価に多大な時間を要すという問題があった。
【００１３】
また、ＲＯＭの不安定問題を回避するために、ＬＵＴを用いて組み合わせ回路によってＲＯＭを実現する方法も挙げられる。しかしながら、この場合、ＦＰＧＡ内のＬＵＴがＲＯＭ機能実現のために消費されるために、ユーザ回路に使用できるＬＵＴ数が制限されるという問題が発生する。
【００１４】
ＲＯＭ機能を実現するために初期値付きＲＡＭを用いる場合の別の課題として、メモリセルがＲＡＭで構成されているので、α線や宇宙線の影響によるソフトエラーでメモリセルに保持されている値が破壊される場合がある。つまりこのような場合もＲＯＭ値が破壊されることになる。
【００１５】
実際には１ｂｉｔエラーの場合はＥｒｒｏｒ  Ｃｈｅｃｋ  ａｎｄ  Ｃｏｒｒｅｃｔ（以下ＥＣＣ）回路によってエラー訂正が可能であり、実質問題になるのは同一Ｗｏｒｄ線内に２ｂｉｔエラーが発生する場合である。ＥＣＣ回路において２ｂｉｔエラーは、エラー発生の有無は認識可能であるが、エラー訂正はできないので、エラー訂正技術としては万全ではないという問題がある。
【００１６】
以上のように、既知のＦＰＧＡのＲＯＭでは、使用するクロックの安定性が確保されないとアドレスレーシングによりＲＯＭ値が壊れる場合が有り、復旧が不可能なので、結果として装置故障となってしまうという問題がある。また、使用するクロックの安定性を確認するため、評価時に悪環境下での長時間のエージングが必要になり、開発期間が長くなるという問題がある。また、ＬＵＴでＲＯＭを実現した場合、ＦＰＧＡのＬＵＴリソースを大量に消費し、ユーザ回路に割り当てることができるＬＵＴが減少するという問題がある。さらに、ソフトエラー等で２ｂｉｔエラーが生じた場合、ＥＣＣ回路を用いても訂正ができないという問題がある。
【００１７】
本発明は、上記の課題に鑑みてなされたものであり、その目的は、使用するクロックの安定性が確保されていない場合でもＲＯＭ値が壊れることを防ぎ、使用するクロックの安定性を確認するための評価の際に悪環境下での長期間のエージングの必要を無くし、ＬＵＴでＲＯＭを実現する必要を無くしユーザ回路に割り当てるＬＵＴの減少を防ぎ、ソフトエラー等で２ｂｉｔエラーに発展することを防ぐことでＥＣＣ回路を用いてｂｉｔエラーを訂正可能とする、半導体記憶装置およびその制御方法を提供することにある。
【課題を解決するための手段】
【００１８】
第１のクロックに対応した読み出しアドレスに対応してデータが読み出される第１の記憶手段と、前記第１のクロックに対応した書き込みアドレスに対応して前記第１の記憶手段から読み出された前記データが書き込まれ、第２のクロックに対応した読み出しアドレスに対応して前記書き込まれた前記データが読み出される、第２の記憶手段と、前記第１のクロックの安定化を確認し、前記第１のクロックが安定化していないときは、前記第１の記憶手段の前記読み出しアドレスを固定値に固定し、前記第１のクロックが安定化しているときは、前記第１の記憶手段に前記第１のクロックに対応した前記読み出しアドレスを発生し、前記第２の記憶手段に前記第１のクロックに対応した前記書き込みアドレスを発生する、アドレス発生手段と、を有する半導体記憶装置である。
【００１９】
また、第１のクロックにより、第１の記憶手段に格納されたデータを第２の記憶手段に書き込み、第２のクロックにより、前記第２の記憶手段から前記データを所望の動作を行う回路に読み出す、半導体記憶装置の制御方法であって、前記第１のクロックの安定化を確認する、確認工程と、前記第１のクロックが安定化していないときは、前記第１の記憶手段の読み出しアドレスを固定値に固定し、前記第１のクロックが安定化しているときは、前記第１のクロックに対応して、前記第１の記憶手段に読み出しアドレスと前記第２の記憶手段に書き込みアドレスとを発生する、発生工程と、前記読み出しアドレスにより前記第１の記憶手段に格納された前記データを読み出し、前記書き込みアドレスにより前記読み出された前記データを前記第２の記憶手段に書き込む、書き込み工程と、前記第２のクロックにより、前記第２の記憶手段に書き込まれた前記データを前記回路に読み出す、読み出し工程と、を有する半導体記憶装置の制御方法である。
【発明の効果】
【００２０】
本発明の半導体記憶装置およびその制御方法によって、使用するクロックの安定性が確保されていない場合でも、第１の記憶手段であるＲＯＭのＲＯＭ値が壊れることを防ぎ、結果として装置故障に発展することを防ぐことができる。また、使用するクロックの安定性を確認するため、評価時に悪環境下での長期間のエージングの必要がなくなり開発期間の短縮が可能になる。さらに、ＬＵＴでＲＯＭを実現する必要が無くなり、ＦＰＧＡのＬＵＴリソースをユーザ回路に割り当てることができ、ユーザ回路に割り当てるＬＵＴの減少を防ぐことができる。
【図面の簡単な説明】
【００２１】
【図１】本発明の第１の実施の形態の半導体記憶装置の構成を示す図である。
【図２】本発明の第１の実施の形態の半導体記憶装置の動作を示す図である。
【図３】本発明の第１の実施の形態の半導体記憶装置の動作を示す図である。
【図４】本発明の第１の実施の形態の半導体記憶装置の動作を示す図である。
【図５】本発明の第１の実施の形態の半導体記憶装置の動作を示す図である。
【図６】本発明の第２の実施の形態の半導体記憶装置の構成を示す図である。
【図７】本発明の第２の実施の形態の半導体記憶装置の構成を示す図である。
【図８】本発明の第２の実施の形態の半導体記憶装置の構成を示す図である。
【図９】本発明の第２の実施の形態の半導体記憶装置の動作を示す図である。
【図１０】本発明の第２の実施の形態の半導体記憶装置の構成を示す図である。
【図１１】既知の半導体記憶装置の構成を示す図である。
【図１２】既知の半導体記憶装置の動作を示す図である。
【図１３】ＲＯＭを構成する初期値付きＲＡＭの内部構造を示す図である。
【発明を実施するための形態】
【００２２】
以下、図を参照しながら、本発明の実施の形態を詳細に説明する。但し、以下に述べる実施形態には、本発明を実施するために技術的に好ましい限定がされているが、発明の範囲を以下に限定するものではない。
（第１の実施の形態）
図１を参照して、本発明の第１の実施の形態の半導体記憶装置およびその制御方法を説明する。
【００２３】
ＲＯＭ１は初期値付きＲＡＭである。このＲＯＭ１のクロック（Ｃｌｏｃｋ）にはＦＰＧＡ１０内のクロック作成手段であるＰＬＬ２で作成されるＣｌｏｃｋを供給し、ＰＬＬ２が安定するまではＲＯＭ１のアドレスを固定値に固定して、万一Ｃｌｏｃｋが不安定になってもアドレスが固定されていることでアドレスレーシングを防ぐ。また、ＲＯＭ１のＲＯＭ値をＰＬＬ２のＣｌｏｃｋを用いて一旦第２の記憶手段であるＲＡＭ４にコピーし、ユーザ回路６ではユーザ回路ＣｌｏｃｋにてＲＡＭ４にアクセスする。これにより、ユーザ回路６のＣｌｏｃｋが不安定になった場合でも、ＲＯＭ１本体のＲＯＭ値を壊すことは無い。
（構成の説明）
図１において、第１の記憶手段であるＲＯＭ１は初期値付きＲＡＭであり、クロック生成手段であるＰＬＬ２は安定したＣｌｏｃｋを生成し供給し、アドレス発生手段であるアドレスカウンタ３はＲＯＭ１のＲＯＭ値を第２の記憶手段であるＲＡＭ４にコピーするためにＲＯＭ１並びにＲＡＭ４にアドレスを与え、ＲＡＭ４はユーザ回路６にＲＯＭ値を渡し、アドレス調停手段であるアドレス調停回路５はＲＡＭ４のＷｒｉｔｅアドレスとＲｅａｄアドレスを競合させないための調停をおこなう。ユーザ回路６はＲＡＭ４からＲＯＭ値を受けて所望の機能を実行する。
【００２４】
さらに、図１の第１の実施の形態の半導体記憶装置およびその制御方法の詳細を説明する。図１のＰＬＬ  Ｃｌｏｃｋ  ドメインの側において、ＲＯＭ１にプログラムやデータであるＲＯＭ値が書き込まれている。ＲＯＭ１は初期値付きＲＡＭからなる。ＲＡＭにはＳＲＡＭを用いることができる。初期値は、別途のＲＯＭに記憶した初期値ファイル（図１に記載なし）を準備し、この値をロードすることにより初期値を得る。
【００２５】
ＰＬＬ２は、ＦＰＧＡ１０のコンフィグレーションが完了した後に、リファレンスクロック（Ｒｅｆ＿Ｃｌｏｃｋ）を受けて動作を開始する。Ｒｅｆ＿Ｃｌｏｃｋは、ＦＰＧＡ１０の内部回路（図１に記載なし）で生成され供給されることができる。ＰＬＬ２は、動作を開始し、発信周波数が安定し、ロック（ＰＬＬ＿Ｌｏｃｋ）がかかると、安定なＣｌｏｃｋを生成し供給するようになる。
【００２６】
ＰＬＬ２はＰＬＬ＿Ｌｏｃｋ信号をアドレスカウンタ３に供給し、Ｃｌｏｃｋを、ＲＯＭ１にはＲｅａｄ＿Ｃｌｏｃｋとして、ＲＡＭ４にはＷｒｉｔｅ＿Ｃｌｏｃｋとして、アドレスカウンタ３とアドレス調停部５とにはそれぞれＣｌｏｃｋとして供給する。
【００２７】
アドレスカウンタ３は、ＰＬＬ２からのＰＬＬ＿Ｌｏｃｋ信号を確認する前は、アドレス値をたとえば０などに固定している。これにより、ＲＯＭ１のアドレス（Ｒｅａｄ＿Ａｄｄ）は同様のたとえば０などの固定値に固定されている。よって、ＰＬＬ２のロックがはずれてＣｌｏｃｋが不安定なときには、ＲＯＭ１のアドレスは固定されていることでアドレスレーシングを防ぐことができ、ＲＯＭ１のＲＯＭ値が壊されることはない。
【００２８】
アドレスカウンタ３は、ＰＬＬ２からのＰＬＬ＿Ｌｏｃｋ信号の供給を確認するとともに、アドレス調停部５からＣｏｕｎｔ＿ＥＮ信号（後述）が供給されていることによって、Ａｄｄｒｅｓｓの発生を開始する。すなわち、アドレスカウンタ３は、ＰＬＬ＿Ｌｏｃｋ信号を確認することでＣｌｏｃｋの安定化を確認していることになる。
【００２９】
アドレスカウンタ３は、ＰＬＬ＿Ｌｏｃｋ信号とＣｏｕｎｔ＿ＥＮ信号（後述）とによって、ＰＬＬ２から供給されるＣｌｏｃｋに対応したＡｄｄｒｅｓｓを発生する。そして、この同一のＡｄｒｅｓｓを、ＲＯＭ１にはＲｅａｄアドレス（Ｒｅａｄ＿Ａｄｄ）として、ＲＡＭ４にはＷｒｉｔｅアドレス（Ｗｒｉｔａ＿Ａｄｄ）として、アドレス調停部にはアドレス（Ａｄｄｒｅｓｓ）として供給する。このＡｄｄｅｓｓを受けて、ＲＯＭ１のＲＯＭ値（Ｄａｔａ＿Ｏｕｔ）が読み出され、この読み出されたＲＯＭ値がＲＡＭ４に書き込まれる（Ｄａｔａ＿Ｉｎ）。
【００３０】
一方、ユーザＣｌｏｃｋドメインの側では、ユーザ回路Ｃｌｏｃｋが、ＲＡＭ４にはＲｅａｄ＿Ｃｌｏｃｋとして、アドレス調停部５とユーザ回路６とにはＣｌｏｃｋとして供給される。このユーザ回路Ｃｌｏｃｋは、例えばＦＰＧＡ１０の内部回路（図１に記載なし）で生成され供給されることができる。また、このユーザ回路Ｃｌｏｃｋは、外部から与えられることもできる。
【００３１】
供給されたユーザ回路Ｃｌｏｃｋに対応して、ユーザ回路６はアドレス（Ｒｅａｄ＿Ａｄｄ）を発生し、このアドレスをＲＡＭ４にＲｅａｄ＿Ａｄｄとして与える。このアドレスに対応して、ＲＡＭ４に書き込まれたＲＯＭ値（Ｄａｔａ＿Ｏｕｔ）は、ユーザ回路６に読み出される（Ｄａｔａ＿Ｉｎ）。
【００３２】
一方、ユーザ回路６はアドレス（Ｒｅａｄ＿Ａｄｄ）を、アドレス調停部５にもＡｄｄｒｅｓｓとして供給する。アドレス調停部５では、ユーザ回路６からのＡｄｄｒｅｓｓの供給を受けて、ＲＡＭ４のＷｒｉｔｅ＿ＡｄｄとＲｅａｄ＿Ａｄｄとが競合しているか否かを検知する。ここでの競合とは、ＲＡＭ４でのＷｒｉｔｅ＿ＡｄｄとＲｅａｄ＿Ａｄｄとが同一でかつ同一の時間に設定された状態をいう。アドレス調停部５は、この競合を検知した場合、Ｃｏｕｎｔ＿ＥＮ信号のアドレスカウンタ３への供給を停止する。
【００３３】
アドレスカウンタ３はＣｏｕｎｔ＿ＥＮ信号の停止を受けて、Ａｄｒｅｓｓの発生を停止する。アドレス調停部５は、毎Ｃｌｏｃｋごとに監視を行い、競合がなくなったことを検知した場合は、Ｃｏｕｎｔ＿ＥＮ信号のアドレスカウンタ３への供給を再び開始する。アドレスカウンタ３は、Ｃｏｕｎｔ＿ＥＮ信号を受けて、Ａｄｄｒｅｓｓの発生を再開する。このＡｄｄｒｅｓｓを受けて、ＲＯＭ１のＲＯＭ値（Ｄａｔａ＿Ｏｕｔ）が読み出され、この読み出されたＲＯＭ値がＲＡＭ４に書き込まれる（Ｄａｔａ＿Ｉｎ）。
（動作の説明）
図２は、図１に示す第１の実施の形態のタイムチャートを示す。図２を用いて第１の実施の形態の半導体記憶装置の動作を説明する。
【００３４】
第一に、ＦＰＧＡ１０のコンフィグレーションが完了し、内部回路（図１に記載なし）の動作が有効になると、Ｃｏｎｆｉｇ＿Ｄｏｎｅ信号が有効となり、ＰＬＬ２が動作し始める。すなわち、ＰＬＬ＿Ｃｌｏｃｋが有効となり、Ｃｌｏｃｋの生成が始まる。
【００３５】
第二に、ＰＬＬ２の発振周波数が安定するとＰＬＬ２がロックされＰＬＬ＿Ｌｏｃｋが有効になる。これにより安定化したＣｌｏｃｋが、ＰＬＬ２で生成され、供給されるようになる。ＰＬＬ＿Ｌｏｃｋが有効になったことを検知して、アドレスカウンタ３がアドレスの発生を始める。このアドレスが、ＲＯＭ１のＲｅａｄ＿Ａｄｄｒｅｓｓとして、また、ＲＡＭ４のＷｒｉｔｅ＿Ａｄｄｒｅｓｓとして供給される。このＲＯＭ１のＲｅａｄ＿ＡｄｄｒｅｓｓとＲＡＭ４のＷｒｉｔｅ＿Ａｄｄｒｅｓｓとによって、ＲＯＭ１のＲＯＭ値が読み出され、この読み出されたＲＯＭ値がＲＡＭ４に書き込まれる。
【００３６】
第三に、前記転送が完了すると書き込み完了信号が有効になり、ユーザ回路の動作が可能となる。書き込み完了の確認は、ＦＰＧＡ１０の内部回路（図１に記載なし）にて行われる。さらに、前記内部回路は前記書き込み完了の信号をユーザ回路に供給する（図１に記載なし）。ユーザ回路は、書き込み完了信号の有効を受けて、この書き込み完了前に有効化されているユーザ回路Ｃｌｏｃｋに対応し、ユーザ回路が発生しＲＡＭ４に供給するＲｅａｄ＿Ａｄｄｒｅｓｓによって、ＲＡＭ４からＲＯＭ値を読み出し、所望の動作を開始する。
【００３７】
このユーザ回路Ｃｌｏｃｋは、例えばＦＰＧＡ１０の内部回路（図１に記載なし）で生成され供給されることができる。また、このユーザ回路Ｃｌｏｃｋは、外部から与えられることもできる。
【００３８】
第四に、ユーザ回路がＲＡＭ４をアクセスしない設定となっている時間に、繰り返してＲＯＭ１のＲＯＭ値をＲＡＭ４に書き込む。繰り返してＲＯＭ１のＲＯＭ値をＲＡＭ４に書き込みことで、万一、ユーザ回路Ｃｌｏｃｋの不安定さが原因でＲＡＭ４に書き込まれたＲＯＭ値が壊されたとしても、再書き込みされた時点から装置は正常動作に戻ることができる。
【００３９】
図３は図２のタイムチャートの他の実施例である。二回目以降のＲＯＭ１からＲＡＭ４への書き込みは、必ずしも一度にＲＯＭ１の全内容を書き込む必要は無く、図３のように１、２、３というように複数回に分けて書き込んでも良い。ユーザ回路からのアクセス度合いにより、適宜書き込みのスケジュールを変更してかまわない。このようにしてユーザ回路の動作を妨げないようにできる効果がある。
【００４０】
図４は図２のタイムチャートの更に他の実施例である。ＲＡＭ４のＷｒｉｔｅアドレスとＲｅａｄアドレスの競合が発生しない範囲では、ＲＡＭ４の書き込みと読み出しとを同時に行っても良い。このようにしてユーザ回路の動作を妨げないようにできる効果がある。
【００４１】
図５は図２のタイムチャートの更に他の実施例である。書き込み動作は常時行う必要は無く、ユーザ回路Ｃｌｏｃｋの安定度を考慮して書き込み間隔を決めても良い。このようにすることでＲＯＭ１の読み出し並びにＲＡＭ４の書き込み動作回数を抑えることが可能になり、結果的に消費電力の削減が可能になる。
（効果の説明）
以上のように、ＲＯＭ１に安定したＣｌｏｃｋを用いることにより、ユーザ回路のＣｌｏｃｋが不安定になったとしても、その瞬間にＲＡＭ４の値が壊れて装置は一瞬誤動作するが、ＲＯＭ１のＲＯＭ値は壊れることがないので、ＲＯＭ１からＲＡＭ４へ再度書き込みが行われた時点で、また安定に装置が動作することが可能となる。
【００４２】
以上により、本発明の第１の実施の形態の半導体記憶装置では、使用するＣｌｏｃｋの安定性が確保されていない場合でも、ＲＯＭ値が壊れることを防ぎ、結果として装置故障に発展することを防ぐことができる。また、使用するＣｌｏｃｋの安定性を確認するため、評価時に悪環境下での長期間のエージングの必要がなくなり、開発期間の短縮が可能になる。さらに、ＬＵＴでＲＯＭを実現する必要が無く、ＦＰＧＡのＬＵＴリソースをユーザ回路に割り当てることができ、ユーザ回路に割り当てるＬＵＴの減少を防ぐことができる。
（第２の実施の形態）
図６〜１０を参照して本発明の第２の実施の形態の半導体記憶装置を説明する。第２の実施の形態の構成では、エラー訂正手段であるＥＣＣ回路を付加した以外は第１の実施の形態の構成と同じである。
【００４３】
図６に、ＲＯＭ１の出力側にＷｏｒｄ線単位に１ｂｉｔの信号誤り訂正が可能なＥＣＣ回路（Ｄｅｃｏｄｅｒ）７を付加した例を示す。本対策により、ソフトエラー等によりＲＯＭ１の値に１ｂｉｔエラーが発生した場合でも誤り訂正が可能となる。この場合は、ＦＰＧＡのコンフィグレーション時に、初期値として誤り訂正用のビット（ＥＣＣビット、ＲＯＭ１のＥＣＣ＿Ｏｕｔ、ＥＣＣ回路７のＥＣＣ＿Ｉｎに対応）を与える必要がある。なお、ＥＣＣ回路７は既知の技術であるので、ここでは詳細動作には触れない。
【００４４】
図７に、ＲＡＭ４の出力側にＷｏｒｄ線単位に１ｂｉｔの信号誤り訂正が可能なＥＣＣ回路（Ｄｅｃｏｄｅｒ）７を付加した例を示す。この場合はＲＡＭ４の１ｂｉｔエラー訂正が可能になる。
【００４５】
図８は、エラー訂正手段であるＥＣＣ回路（Ｄｅｃｏｄｅｒ）７にて１ｂｉｔ訂正を行う際、訂正後の値を訂正値書き込み手段であるＥＣＣ回路（Ｅｎｃｏｄｅｒ）８にて再度ＲＯＭ１に書き込む例である。ソフトエラー等により１ｂｉｔエラーが発生した際、そのエラーをそのままにしておくと、同一Ｗｏｒｄ線に別の１ｂｉｔエラーが発生する場合があり、その際は合計で２ｂｉｔエラーとなりＥＣＣ回路でも訂正ができなくなるので、装置の誤動作となる。本対策により、このような問題を回避することが可能となる。
【００４６】
図９は図８の動作を説明するタイムチャートである。Ｄａｔａ＿Ｎｏ＝４に１ｂｉｔエラーが発生したと仮定して説明する。４のエラーはＥＣＣ回路（Ｄｅｃｏｄｅｒ）７内で訂正されるため、ＥＣＣ回路（Ｄｅｃｏｄｅｒ）７から出力された段階ではエラー無しの値となる。本訂正後の値を用いてＥＣＣ回路（Ｅｎｃｏｄｅｒ）８で再度ＥＣＣ符号を計算してＲＯＭ１（初期値付きＲＡＭで構成されているので書き込みが可能）に書き込む。
【００４７】
また次に、ＥＣＣ＿Ｎｏ＝７に１ｂｉｔエラーが発生したと仮定した場合を説明する。ＥＣＣ＿Ｎｏ＝７のエラーはＥＣＣ回路（Ｄｅｃｏｄｅｒ）７のＤａｔａ出力には影響は与えないが、ＥＣＣ回路７からは出力されないのでＥＣＣ回路（Ｅｎｃｏｄｅｒ）８で再度ＥＣＣ符号を計算してＲＯＭ１（初期値付きＲＡＭで構成されているので書き込みが可能）に書き込むことでＤａｔａ並びにＥＣＣ符号の両方にエラーが存在しない状態に設定できる。
【００４８】
図１０は図８の他の実施例である。ＥＣＣ回路（Ｄｅｃｏｄｅｒ）７にＥＣＣしたｂｉｔの訂正値書き込み機能を付け加えたものである。図８に比べてＥＣＣ回路（Ｅｎｃｏｄｅｒ）８が別途に必要ないので回路が簡略化される。
【００４９】
以上により、本発明の第２の実施の形態では、使用するＣｌｏｃｋの安定性が確保されていない場合でも、ＲＯＭ値が壊れることを防ぎ、結果として装置故障に発展することを防ぐことができる。また、使用するＣｌｏｃｋの安定性を確認するため、評価時に悪環境下での長期間のエージングの必要がなくなり、開発期間の短縮が可能になる。さらに、ＬＵＴでＲＯＭを実現する必要が無く、ＦＰＧＡのＬＵＴリソースをユーザ回路に割り当てることができ、ユーザ回路に割り当てるＬＵＴの減少を防ぐことができる。さらにまた、ＥＣＣ回路を用いることで、ソフトエラー等で２ｂｉｔエラーに発展することを防ぎ、ｂｉｔエラーの訂正を行うことができる。
【００５０】
また、上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【００５１】
付記
（付記１）
第１のクロックに対応した読み出しアドレスに対応してデータが読み出される第１の記憶手段と、
前記第１のクロックに対応した書き込みアドレスに対応して前記第１の記憶手段から読み出された前記データが書き込まれ、第２のクロックに対応した読み出しアドレスに対応して前記書き込まれた前記データが読み出される、第２の記憶手段と、
前記第１のクロックの安定化を確認し、
前記第１のクロックが安定化していないときは、前記第１の記憶手段の前記読み出しアドレスを固定値に固定し、
前記第１のクロックが安定化しているときは、前記第１の記憶手段に前記第１のクロックに対応した前記読み出しアドレスを発生し、前記第２の記憶手段に前記第１のクロックに対応した前記書き込みアドレスを発生する、
アドレス発生手段と、を有する半導体記憶装置。
（付記２）
前記第２の記憶手段の前記書き込みアドレスと前記第２の記憶手段の前記読み出しアドレスとが同一であって、かつ、前記書き込みアドレスの書き込みの動作と前記読み出しアドレスの読み出しの動作とが同じ時間の動作になるように設定された場合、前記アドレス発生手段の前記アドレスの発生を停止させるアドレス調停手段を有する、付記１記載の半導体記憶装置。
（付記３）
前記第１のクロックを生成し、前記第１のクロックを前記第１の記憶手段と前記第２の記憶手段と前記アドレス発生手段と前記アドレス調停手段とに供給し、前記アドレス発生手段に前記第１のクロックの安定化を前記アドレス発生手段が確認するための信号を供給する、クロック生成手段を有する、付記１乃至２の何れか１項記載の半導体記憶装置。
（付記４）
前記第１の記憶手段は初期値付きＲＡＭからなる、付記１乃至３の何れか１項記載の半導体記憶装置。
（付記５）
前記第２の記憶手段はＲＡＭからなる、付記１乃至４の何れか１項記載の半導体記憶装置。
（付記６）
前記クロック生成手段が、フェーズ  ロック  ループ（ＰＬＬ）からなる、付記１乃至５の何れか１項記載の半導体記憶装置。
（付記７）
前記第１の記憶手段から読み出された前記データ、あるいは、前記第２の記憶手段から読み出された前記データ、のエラーを訂正するエラー訂正手段を有する、付記１乃至６の何れか１項記載の半導体記憶装置。
（付記８）
前記エラー訂正した前記データを前記第１の記憶手段に書き込む訂正値書き込み手段を有する、付記７記載の半導体記憶装置。
（付記９）
前記第２の記憶手段に前記書き込まれた前記データを、前記第２のクロックにより読み出して所望の動作を行う回路を有する、付記１乃至８の何れか１項記載の半導体記憶装置。
（付記１０）
第１のクロックにより、第１の記憶手段に格納されたデータを第２の記憶手段に書き込み、第２のクロックにより、前記第２の記憶手段から前記データを所望の動作を行う回路に読み出す、半導体記憶装置の制御方法であって、
前記第１のクロックの安定化を確認する、確認工程と、
前記第１のクロックが安定化していないときは、前記第１の記憶手段の読み出しアドレスを固定値に固定し、前記第１のクロックが安定化しているときは、前記第１のクロックに対応して、前記第１の記憶手段に読み出しアドレスと前記第２の記憶手段に書き込みアドレスとを発生する、発生工程と、
前記読み出しアドレスにより前記第１の記憶手段に格納された前記データを読み出し、前記書き込みアドレスにより前記読み出された前記データを前記第２の記憶手段に書き込む、書き込み工程と、
前記第２のクロックにより、前記第２の記憶手段に書き込まれた前記データを前記回路に読み出す、読み出し工程と、を有する半導体記憶装置の制御方法。
（付記１１）
前記第２の記憶手段の前記書き込みアドレスと前記第２の記憶手段の前記読み出しアドレスとが同一であって、かつ前記書き込みアドレスの書き込みの動作と前記読み出しアドレスの読み出しの動作とが同じ時間の動作になるように設定された場合、前記発生工程を停止する調停工程を有する、付記１０記載の半導体記憶装置の制御方法。
（付記１２）
前記読み出し工程が行われていないときに、前記書き込み工程を実施する、付記１０乃至１１の何れか１項記載の半導体記憶装置の制御方法。
（付記１３）
前記読み出し工程が行われているときに、前記第２の記憶手段の前記読み出しアドレスと異なる前記第２の記憶手段の前記書き込みアドレスに前記書き込み工程を実施する、付記１０乃至１１の何れか１項記載の半導体記憶装置の制御方法。
（付記１４）
前記書き込み工程が、前記データを一括で書き込む、付記１０乃至１３の何れか１項記載の半導体記憶装置の制御方法。
（付記１５）
前記書き込み工程が、前記データを複数回に分割して書き込む、付記１０乃至１３の何れか１項記載の半導体記憶装置の制御方法。
（付記１６）
前記第１の記憶手段から読み出された前記データ、あるいは、前記第２の記憶手段から読み出された前記データ、のエラーを訂正する訂正工程を有する、付記１１乃至１５の何れか１項記載の半導体記憶装置。
（付記１７）
前記エラーを訂正した前記データを前記第１の記憶手段に書き込む訂正値書き込み工程を有する、付記１６記載の半導体記憶装置。
【符号の説明】
【００５２】
１    ＲＯＭ
２    ＰＬＬ
３    アドレスカウンタ
４    ＲＡＭ
５    アドレス調停部
６    ユーザ回路
７    ＥＣＣ回路（Ｄｅｃｏｄｅｒ）
８    ＥＣＣ回路（Ｅｎｃｏｄｅｒ）
１０    ＦＰＧＡ
【図１】
2014016892.tif 000003
【図２】
2014016892.tif 000004
【図３】
2014016892.tif 000005
【図４】
2014016892.tif 000006
【図５】
2014016892.tif 000007
【図６】
2014016892.tif 000008
【図７】
2014016892.tif 000009
【図８】
2014016892.tif 000010
【図９】
2014016892.tif 000011
【図１０】
2014016892.tif 000012
【図１１】
2014016892.tif 000013
【図１２】
2014016892.tif 000014
【図１３】
2014016892.tif 000015