(57)【特許請求の範囲】
【請求項１】
第１のクロックを供給するクロック源と、
前記第１のクロックを分周し、前記第１のクロックに同期する第２のクロックを生成する分周回路と、
前記第１のクロックに同期して動作する第１の部分と、
前記第１及び第２のクロックから、前記第２のクロックの変化エッジを含む短い期間のみ有効になるイネーブル信号を発生するイネーブル信号発生回路と、
前記第１のクロックと前記イネーブル信号とが供給され、前記第１のクロックと前記イネーブル信号に基づいて前記第１のクロックに同期して動作する第２の部分と、を有することを特徴とする半導体装置。
【請求項２】
第１のクロックを供給するクロック源と、
前記第１のクロックを分周し、前記第１のクロックに同期する第２のクロックを生成する分周回路と、
外部装置からのデータをラッチし、論理回路に出力する第１のフリップ・フロップと、
前記論理回路からのデータをラッチして前記外部装置に出力できるように保持する第２のフリップ・フロップと、
前記論理回路からのデータをラッチして内部回路に出力できるように保持する第３のフリップ・フロップと、
前記内部回路からのデータをラッチする第４のフリップ・フロップと、
前記第１及び第２のクロックから、前記第２のクロックの変化エッジを含む短い期間のみ有効になるイネーブル信号を発生するイネーブル信号発生回路と、を備え、
前記イネーブル信号、前記第１乃至第４のフリップ・フロップに入力される信号の状態に応じて、前記第１乃至第４のフリップ・フロップを制御するステートマシンを有することを特徴とする半導体装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、周波数の異なる複数のクロックで動作する複数の部分を有する半導体装置及びその設計方法に関し、特に高速で動作するＣＰＵコアなどを内蔵したシステムＬＳＩなどにおいて、高速で動作する内部ブロックと低速で動作する外部とのインタフェースを行うブロックを有する半導体装置及びその設計方法に関する。
【０００２】
【従来の技術】
近年、半導体装置の動作の高速化が図られており、特にＣＰＵにおいてはそれが著しい。しかし、ＣＰＵ内部においては動作の高速化が図れても、ＣＰＵに接続される半導体素子や各種の入出力装置などの外部装置はＣＰＵと同じ速度で動作するのは難しい。そこで、ＣＰＵ内又はそれに接続する周辺ＬＳＩとして、高速な第１のクロックで動作する部分と、低速な第２のクロックで動作する部分を接続するためのインタフェースブロックを設けることが行われる。従って、このインタフェースブロックでは、２つの異なる周波数のクロックに同期して動作する部分が混在することになる。
【０００３】
図１は、このようなインタフェースブロックの従来例の構成を示す図である。図１において、参照番号１００で示す部分はＣＰＵであり、インタフェースブロック１と高速の第１クロックＣＬＫ１に同期して動作する内部回路２が設けられている。外部装置３は第１クロックＣＬＫ１より低速の第２クロックＣＬＫ２に同期して動作する部分である。インタフェースブロック１は、異なるクロックで動作する内部回路２と外部装置３の間でデータの入出力が行えるようにタイミングを調整する。図示のように、インタフェースブロック１は、第１クロックＣＬＫ１を出力する第１クロック源１１と、第２クロックＣＬＫ２を出力する第２クロック源１７と、論理回路１２と、第２クロックＣＬＫ２に同期して外部装置３からのデータをラッチするフリップ・フロップ（ＦＦ）１３と、第２クロックＣＬＫ２に同期して論理回路１２からのデータをラッチして外部装置３に出力できるように保持するＦＦ１４と、第１クロックＣＬＫ１に同期して論理回路１２からのデータをラッチして内部回路２に出力できるように保持するＦＦ１５と、第１クロックＣＬＫ１に同期して内部回路２からのデータをラッチするＦＦ１６とを有する。第１クロック源１１は、例えば、内部回路２から供給される第１クロックＣＬＫ１のバッファである。また、第２クロック源１７は、例えば、第１クロック源１１の出力する第１クロックＣＬＫ１を分周する分周回路や、外部装置３から供給される第２クロックＣＬＫ２のバッファや、外部装置３から供給される第２クロックＣＬＫ２を入力とするＰＬＬ(Phase Locked Loop) 回路である。また、図では第１及び第２のクロックが印加される回路要素としてＦＦ１３〜１６のみを示したが、クロックに同期して動作するゲートなどが設けられる場合もある。インタフェースブロック１が、単にデータを入出力するだけの回路であれば図示のようにＦＦを設けるだけであるが、実際には状態に応じてデータをラッチする場合やしない場合があり、実際にはインタフェースブロック１にはそのような制御を行うための制御回路が設けられているのが一般的である。
【０００４】
上記のようなクロック信号が入力された時点の状態に応じて状態を変化させると共に出力信号を変化させる回路は、一般にステートマシンと呼ばれ、広く使用されている。図２は、図１の従来例でステートマシンを使用した場合の構成を示す図である。第１のクロックＣＬＫ１に同期して動作する第１のステートマシン３１と、第２のクロックＣＬＫ２に同期して動作する第２のステートマシン２１が設けられている。通常のものと同様に、第２のステートマシン２１は、ステートマシンの状態と他の部分の状態に応じて次の遷移状態を算出する状態制御回路２２と、状態制御回路２２の出力する状態をラッチして保持し、状態制御回路２２に出力する状態ラッチ２３と、状態ラッチ２３の出力するその時点の状態に応じた制御信号を出力する状態デコーダ２４とで構成される。状態デコーダ２４の出力する制御信号はＦＦ１３及び１４に印加される。図では、ＦＦ１３及び１４に入力するデータが状態制御回路２２にに入力されているが、この他にＦＦ１３及び１４から出力されるデータや他の部分のデータを入力する場合もある。以上の構成は、これは第１のステートマシン３１も同じである。
【０００５】
【発明が解決しようとする課題】
上記のような、異なる周波数のクロックで動作する２つの部分を有する回路の場合、図１及び図２に示すように、２つのクロックに同期して動作する２つのブロックがあるものとして設計を行っていた。すなわち、２つの異なるクロック源１１及び１７があり、２つの異なるクロックＣＬＫ１及びＣＬＫ２に同期して動作する２つの部分１３と１４及び１５と１６があるものとして設計を行っていた。更にいえば、クロックＣＬＫ１及びＣＬＫ２に同期して動作する２つのステートマシン２１及び２２があるものとして設計を行っていた。
【０００６】
このように、一つのブロック内で複数の周波数の異なるクロックが存在すると、単一のクロックで設計するのと比べ、ブロック内部に異なるクロックで動作するＦＦが混在し、また内部の制御信号も複数のタイミングで変化を行うことになり、タイミングの検証が複雑になるという問題がある。また、ブロック内に複数のクロックで動作する部分がある場合、ブロックの設計の時に、クロック毎の複数のステートマシンを用意することになる。図３は、図２の構成のＲＴＬ記述の従来例を示す図であり、（１）に第１のクロックＣＬＫ１に同期して動作する第１のステートマシンの記述を、（２）に第２のクロックＣＬＫ２に同期して動作する第２のステートマシンの記述を示す。このように、２つのステートマシンを別々に記述していた。
【０００７】
図３のように、ブロック内に複数のクロックで動作する複数のステートマシンを設けるように設計する場合、動作やＲＴＬ(Register Transfer Level) などのブロックの機能をハードウエア記述言語ＨＤＬでの記述も複雑化し、不確定要素も増えるので、不具合が発生する可能性が高くなるという問題がある。
本発明は、このような問題を解決するためのもので、ブロック内に複数のクロックで動作する複数の部分がある場合の設計及び検証を容易できるようにすることを目的とする。
【０００８】
【課題を解決するための手段】
上記目的を実現するため、本発明の半導体装置は、周波数の異なる第１及び第２のクロックから第２のクロックの変化エッジを含む短い期間のみ有効になるイネーブル信号を発生させ、このイネーブル信号と第１のクロックを第２の部分に供給する。第２の部分ではイネーブル信号と第１のクロックを合成することにより実質的に第２のクロックが発生できる。このようにして第２の部分を第１のクロックに同期して動作する部分とすることができるので、全体を第１のクロックに同期して動作する部分とすることができ、設計及び検証が容易になる。
【０００９】
すなわち、本発明の半導体装置は、第１のクロックを供給するクロック源と、前記第１のクロックを分周し、前記第１のクロックに同期する第２のクロックを生成する分周回路と、前記第１のクロックに同期して動作する第１の部分と、前記第１及び第２のクロックから、前記第２のクロックの変化エッジを含む短い期間のみ有効になるイネーブル信号を発生するイネーブル信号発生回路と、前記第１のクロックと前記イネーブル信号とが供給され、前記第１のクロックと前記イネーブル信号に基づいて前記第１のクロックに同期して動作する第２の部分と、を有することを特徴とする。
【００１０】
第２のクロックが、第１のクロックより周波数が小さく第１のクロックを分周して得られる場合には、分周回路を設ける。
第２の部分をステートマシンとする場合には、イネーブル信号を、第２の部分に相当するステートマシンの状態遷移条件として使用する。
また、本発明の半導体装置の設計方法は、第１のクロックに同期して動作する第１の部分と、第２のクロックに同期して動作する第２の部分と、第１及び第２のクロックから、第２の部分の状態を変化させる第２のクロックの変化エッジを含む短い期間のみ有効になるイネーブル信号を発生するイネーブル信号発生回路とを備え、第２の部分へは第１のクロックとイネーブル信号が供給される半導体装置の設計方法であって、第１の部分と第２の部分は、第１のクロックに同期して動作する部分として設計することを特徴とする。
【００１１】
第２の部分をステートマシンとする場合には、イネーブル信号を、第２の部分に相当するステートマシンの状態遷移条件として使用する。
本発明によれば、第１のクロックに同期して動作する第１の部分も、第２のクロックに同期して動作する第２の部分も、共通の第１のクロックに同期して動作する部分として設計及び検証できるようになる。
【００１２】
特に、第２の部分をステートマシンとする場合には、イネーブル信号をステートマシンの状態遷移条件として使用すればよいため、設計も容易である。
【００１３】
【発明の実施の形態】
図４は、本発明の第１実施例のインタフェースブロックの構成を示す図であり、第２のクロックＣＬＫ２が第１のクロックＣＬＫ１に同期しており、ＣＬＫ１を分周することによりＣＬＫ２が得られる場合の実施例である。第１実施例のインタフェースブロック１は、図１に示した従来のインタフェースブロック１と比較して、第２クロック源１７が除かれ、その替わりに分周回路４１とイネーブル信号発生回路４２が設けられ、フリップ・フロップ（ＦＦ）１３、１４に、第１のクロックＣＬＫ１とイネーブル信号発生回路４２の出力するイネーブル信号ＥＮ１、ＥＮ２が供給される点が異なり、他はすでに説明した図１の従来例と同じである。なお、ＦＦ１３及び１４は、それぞれイネーブル信号ＥＮ１、ＥＮ２がアクティブの時にのみ第１のクロックＣＬＫ１に同期してラッチ動作を行う。
【００１４】
図４に示すように、イネーブル信号発生回路４２は、第１のクロックＣＬＫ１と第２のクロックＣＬＫ２からイネーブル信号を発生する。図５は、イネーブル信号発生回路４２の発生するイネーブル信号の例を示す図である。図示のように、ＣＬＫ２はＣＬＫ１の１／４の周波数のクロックであり、ＣＬＫ１を１／４分周することにより得られる。ここでは、分周回路４１の出力するＣＬＫ２の立ち上がりエッジのところでＣＬＫ１の１周期分の幅を有するイネーブル信号をＥＮ１、ＣＬＫ２の立ち下がりエッジのところでＣＬＫ１の１周期分の幅を有するイネーブル信号をＥＮ２とし、これらを使用するものとする。ＥＮ１はＦＦ１３に供給され、ＥＮ２はＦＦ１４に供給される。ＦＦ１３は、ＥＮ１が「高（Ｈ）」でアクティブである時に、ＣＬＫ１に同期して外部装置３からの入力データをラッチする。また、ＦＦ１４は、ＥＮ２が「高（Ｈ）」でアクティブである時に、ＣＬＫ１に同期して外部装置３への出力データをラッチする。すなわち、外部装置３からの入力データはＣＬＫ２の立ち上がりエッジに同期して取り込まれ、外部装置３への出力データはＣＬＫ２の立ち下がりエッジに同期して変化することになる。
【００１５】
なお、ここではＥＮ１とＥＮ２のみを使用したが、イネーブル信号発生回路４２は位相がＥＮ１とＥＮ２からそれぞれＣＬＫ１の１周期分ずれたＥＮ３、ＥＮ４を発生して、必要に応じて使用するようにする。また、第１のクロックＣＬＫ１を分周して発生した第２のクロックＣＬＫ２と、外部装置３のクロックとの位相が不確定な場合には、ＥＮ１〜ＥＮ４を発生させ、外部装置３のクロックの位相との差に応じて、ＥＮ１〜ＥＮ４のいずれかを選択して使用するようにしてもよい。
【００１６】
また、上記の例は、ＣＬＫ２の周波数がＣＬＫ１の１／４の場合であるが、ＣＬＫ２の周波数がＣＬＫ１の１／２であってもよく、その場合には、イネーブル信号発生回路４２は図示のようなＥＮ５及びＥＮ６を発生する。
図６は、イネーブル信号発生回路４２のうちのＣＬＫ１と２から上記のＥＮ１を発生させる回路部分の構成を示す図である。詳しい説明は省略するが、ＣＬＫ１とＣＬＫ２を入力することにより、前記のイネーブル信号ＥＮ１が出力される。なお、ＲＳＴＸはリセット信号である。
【００１７】
図４に示すようなインタフェースブロック１をステートマシンとして設計した場合の構成を図７に示す。図示のように、第１実施例のインタフェースブロック１では、１個のステートマシン５１が設けられる。ステートマシン５１の状態制御回路５２には、状態ラッチ５３の出力とＦＦ１３〜１６に入力されるデータと共に、イネーブル信号発生回路４２の出力するイネーブル信号ＥＮ１とＥＮ２が入力される。状態制御回路５２は、イネーブル信号ＥＮ１とＥＮ２を状態変数の一つとして、制御状態を変化させる。状態デコーダ５４は状態に応じてＦＦ１３〜１６でのラッチを制御する信号を出力する。
【００１８】
図８は、図７のインタフェースブロック１のＲＴＬ記述の例を示す図であり、共通のクロックＣＬＫ１に同期して動作する１個のステートマシンが記述される。
以上説明したように、本発明の第１実施例では、従来例では第２のクロックＣＬＫ２に同期して動作する部分（ステートマシン）が第１のクロックＣＬＫ１に同期して動作する部分（ステートマシン）と見なすことができるので、設計が容易になる。また、第１実施例では、分周回路４１も第１のクロックＣＬＫ１に同期して動作する部分であり、イネーブル信号発生回路４２もクロックＣＬＫ１から発生された信号に同期して動作する部分と見なせるので、すべての回路が第１のクロックＣＬＫ１に同期して動作する回路と見なせる。
【００１９】
第１実施例では、第２のクロックＣＬＫ２は、第１のクロックＣＬＫ１を分周することにより得られたが、このようなことが可能なのは、インタフェースブロック１と内部回路２を含むＣＰＵ１００と外部装置３に共通のクロック源が使用され、外部装置３には分周した信号が供給される場合である。しかし、本発明はこのような例に限定されるのもではなく、内部回路２と外部装置３が同期していない２つのクロックに同期して動作する場合にも適用可能である。
【００２０】
図９は、第２実施例のインタフェースブロック１の構成を示す図である。第１実施例と異なるのは、分周回路４１の替わりに、外部装置３から供給されるクロックから位相遅れのない同一周波数の第２のクロックＣＬＫ２を発生させるＰＬＬ回路６２を設けた点である。なお、第１クロック源１１として、内部回路２から供給される第１のクロックＣＬＫ１のクロックバッファを使用している。他の部分は第１実施例と同じである。
【００２１】
第２実施例では、外部装置３から供給されるクロックから位相遅れのない同一周波数の第２のクロックＣＬＫ２を発生させるＰＬＬ回路６２を設けたが、位相遅れなどが問題にならなければ、ＰＬＬ回路６２の替わりにバッファを使用することも可能である。
【００２２】
【発明の効果】
以上説明したように、本発明によれば、ブロック内に複数のクロックで動作する複数の部分がある場合でも、単一のクロックで動作するものとして設計及び検証ができるため、設計及び検証が容易になり、開発コストを低減することができる。
【図面の簡単な説明】
【図１】異なる周波数のクロックで動作する回路の従来例の構成を示す図である。
【図２】従来例のステートマシンの構成を示す図である。
【図３】従来例の構成の機能レベルのＲＴＬ記述の例を示す図である。
【図４】本発明の第１実施例のインタフェースブロックの構成を示す図である。
【図５】第１実施例のイネーブル信号の例を示す図である。
【図６】イネーブル信号発生回路（×４モード）の構成例を示す図である。
【図７】第１実施例のステートマシンの構成を示す図である。
【図８】第１実施例の構成の機能レベルのＲＴＬ記述の例を示す図である。
【図９】本発明の第２実施例のインタフェースブロックの構成を示す図である。
【符号の説明】
１１…第１クロックジェネレータ
１２…第２クロックジェネレータ
１５…第３クロックジェネレータ
３１…ビット線リセット回路
３２…コラム選択ゲート
３５…第４クロックジェネレータ
ＷＬ１〜ＷＬｎ…ワード線
ＢＬ１、／ＢＬ１…ビット線
ＳＡ…センスアンプ
【図１】
0004130006.tif 000002
【図２】
0004130006.tif 000003
【図３】
0004130006.tif 000004
【図４】
0004130006.tif 000005
【図５】
0004130006.tif 000006
【図６】
0004130006.tif 000007
【図７】
0004130006.tif 000008
【図８】
0004130006.tif 000009
【図９】
0004130006.tif 000010