(57)【要約】【課題】集積回路に含まれる複数の基本部品を確実にリセットすることができる集積回路の設計を容易に行うことができる。【解決手段】基本部品の動作モデルとして記述された複数の基本部品マクロを読み込む。基本部品は、リセット状態かリセット解除状態かを示す信号を出力するリセット出力端子を備える複数のフリップフロップ７１２０と、複数のフリップフロップのリセット出力端子の各々から出力された信号がリセット状態であることを示している場合にリセット状態信号を出力する出力部７２３０と、を含む。ネットリストと複数の基本部品マクロとにもとづいて集積回路の論理モデルを構築し、該論理モデルを用いて、該集積回路の論理シミュレーションを実行し、入力データに応じた出力データを出力する。【選択図】図１０
2014146108.tif 000002
【特許請求の範囲】
【請求項１】
演算ユニットと、
論理シミュレーションのプログラムを格納するメモリと、
を含み、
前記演算ユニットにより前記論理シミュレーションのプログラムを実行することにより、
複数の基本部品マクロを読み込み、
前記複数の基本部品マクロは、各々が基本部品の論理動作を規定する論理動作部を含み、前記基本部品の動作モデルとして所定のハードウェア記述言語により記述され、
前記基本部品は、
各々がリセット状態かリセット解除状態かを示す信号を出力するリセット出力端子を備え、少なくとも１つがリセット端子を備えると共に、前記リセット端子にリセット信号が入力されている場合にリセット状態となり、前記リセット信号の入力が停止された場合にリセット解除状態となるリセットフリップフロップである複数のフリップフロップと、
前記複数のフリップフロップのリセット出力端子の各々から出力された信号が入力されると共に、前記複数のフリップフロップのリセット出力端子の各々から出力された信号が前記リセット状態であることを示している場合にリセット状態信号を出力する出力部と、
を含み、
前記基本部品の間の接続情報を含むネットリストを読み込み、
前記ネットリストと前記複数の基本部品マクロとにもとづいて集積回路の論理モデルを構築し、
前記論理モデルを用いて、前記集積回路の論理シミュレーションを実行し、
前記論理シミュレーションの結果として入力データに応じた出力データを出力する、
論理シミュレーション装置。
【請求項２】
前記複数のフリップフロップの各々がリセットフリップフロップであり、
前記リセット信号出力部が前記リセットフリップフロップのリセット端子の各々に入力する前記リセット信号を出力する請求項１記載の論理シミュレーション装置。
【請求項３】
前記複数のフリップフロップが、リセットフリップフロップと、リセット端子を備えない非リセットフリップフロップと、を含み、
前記リセット信号出力部が前記リセットフリップフロップのリセット端子の各々に入力する前記リセット信号を出力する請求項１または請求項２記載の論理シミュレーション装置。
【請求項４】
前記複数のフリップフロップが、前記リセット状態の場合に前記リセット出力端子から正信号を出力するフリップフロップと、前記リセット状態の場合に前記リセット出力端子から負信号を出力するフリップフロップとを含み、
前記正信号及び前記負信号のいずれか一方を反転させて前記出力部に入力する信号を同極性とする反転部を含み、
前記出力部は、入力された信号の各々が同極性の場合に前記リセット状態信号を出力する請求項１〜３のいずれか１項記載の論理シミュレーション装置。
【請求項５】
コンピュータに、
複数の基本部品マクロを読み込み、
前記複数の基本部品マクロは、各々が基本部品の論理動作を規定する論理動作部を含み、前記基本部品の動作モデルとして所定のハードウェア記述言語により記述され、
前記基本部品は、
各々がリセット状態かリセット解除状態かを示す信号を出力するリセット出力端子を備え、少なくとも１つがリセット端子を備えると共に、前記リセット端子にリセット信号が入力されている場合にリセット状態となり、前記リセット信号の入力が停止された場合にリセット解除状態となるリセットフリップフロップである複数のフリップフロップと、前記複数のフリップフロップのリセット出力端子の各々から出力された信号が入力されると共に、前記複数のフリップフロップのリセット出力端子の各々から出力された信号が前記リセット状態であることを示している場合にリセット状態信号を出力する出力部と、
を含み、
前記基本部品の間の接続情報を含むネットリストを読み込み、
前記ネットリストと前記複数の基本部品マクロとにもとづいて集積回路の論理モデルを構築し、
前記論理モデルを用いて、前記集積回路の論理シミュレーションを実行し、
前記論理シミュレーションの結果として入力データに応じた出力データを出力する、
ことを含む処理を実行させるための論理シミュレーションプログラム。
【請求項６】
各々がリセット状態かリセット解除状態かを示す信号を出力するリセット出力端子を備え、少なくとも１つがリセット端子を備えると共に、前記リセット端子にリセット信号が入力されている場合に前記リセット状態となり、リセット信号の入力が停止された場合に前記リセット解除状態となるリセットフリップフロップである複数のフリップフロップと、
前記複数のフリップフロップのリセット出力端子の各々から出力された信号が入力されると共に、該複数のフリップフロップのリセット出力端子の各々から出力された信号が前記リセット状態であることを示している場合にリセット状態信号を出力する出力部と、
前記リセット端子に入力するリセット信号を出力すると共に、前記リセット信号を出力してから前記出力部が前記リセット状態信号を出力するまで前記リセット信号の出力を継続し、前記出力部が前記リセット状態信号を出力した場合に前記リセット信号の出力を停止するリセット信号出力部と、
を含む集積回路。
【請求項７】
相互に接続された複数の集積回路を備え、
前記複数の集積回路の各々は、
各々がリセット状態かリセット解除状態かを示す信号を出力するリセット出力端子を備え、少なくとも１つがリセット端子を備えると共に、前記リセット端子にリセット信号が入力されている場合に前記リセット状態となり、前記リセット信号の入力が停止された場合に前記リセット解除状態となるリセットフリップフロップである複数のフリップフロップと、
前記複数のフリップフロップのリセット出力端子の各々から出力された信号が入力されると共に、前記複数のフリップフロップのリセット出力端子の各々から出力された信号が前記リセット状態であることを示している場合にリセット状態信号を出力する出力部と、
前記リセット端子に入力するリセット信号を出力すると共に、前記リセット信号を出力してから前記出力部が前記リセット状態信号を出力し、かつ、当該集積回路がトランザクションを発行する集積回路である下位層集積回路がリセット解除信号を送信するまで、前記リセット信号の出力を継続し、前記出力部が前記リセット状態信号を出力し、かつ、前記リセット解除信号が送信された場合に、前記リセット信号の出力を停止するリセット信号出力部と、
を含む、
複合集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
開示の技術は、論理シミュレーション装置、論理シミュレーションプログラム、集積回路、および複合集積回路に関する。
【背景技術】
【０００２】
近年、集積回路（システムＬＳＩ、ＳｏＣ：システムオンチップ(System-on-a-Chip)）は、大規模化・複雑化してきている。これにともない、既存の回路ブロック情報（ＩＰ(Intellectual Property)）を組み合わせて集積回路を設計するケースが増加してきている。このような集積回路では、集積回路全体を制御するために、集積回路に含まれる基本部品の各々を確実にリセットすることができるように、基本部品の各々が要求する期間にわたってリセット信号を供給するための回路設計が必要とされる。
【０００３】
従来は、基本部品の各々の仕様書からリセット信号についての仕様をユーザが抽出し、集積回路全体のリセット期間として、基本部品の各々の要求を満たすリセット信号を供給すべき期間を定める必要があった。
【０００４】
また、集積回路の大規模化にともない、リセット信号が基本部品の各々に伝搬するまでの遅延時間が長くなってきている。一方で、伝搬遅延を考慮しない論理シミュレーション（レジスタ転送レベル：ＲＴＬ(Register Transfer Level)のシミュレーションなど）を実施して、設計開発を行うケースが増加してきている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０００−２９５６０号公報
【特許文献２】特開２００３−６７０７７号公報
【特許文献３】特開平１−７４６１０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、基本部品の各々の仕様書からリセット信号についての仕様をユーザが抽出する手法によれば、基本部品の各々の要求を満たすリセット期間を決定することはたいへん多くの時間と労力を必要とする作業である。多数の基本部品を含む集積回路の場合、さらに多くの時間と労力を必要とする作業となる。
【０００７】
また、ユーザによる各基本部品の仕様や各基本部品の接続関係の誤認識などによって誤ったリセット期間が決定されてしまうといったことも発生しやすい、という問題がある。
【０００８】
論理シミュレーションを実施することによって設計開発を行う場合、現実に製造される集積回路では、論理シミュレーションでは考慮されない、リセット信号が基本部品の各々まで到達するまでの伝搬遅延時間が生じる。さらに、リセット信号の伝播遅延時間は、集積回路設計の最終段階のタイミング調整を終えるまで確定されないことが多いため、最適かつ最短のリセット信号を供給すべき期間を定めることは困難である、という問題がある。
【０００９】
開示の技術は、一つの側面として、集積回路に含まれる複数の基本部品を確実にリセットすることができる集積回路の設計を容易に行うことが目的である。
【課題を解決するための手段】
【００１０】
開示の技術は、演算ユニットと、論理シミュレーションのプログラムを格納するメモリと、を含む。該演算ユニットにより該論理シミュレーションのプログラムを実行することにより、複数の基本部品マクロを読み込む。該複数の基本部品マクロは、各々が基本部品の論理動作を規定する論理動作部を含み、該基本部品の動作モデルとして所定のハードウェア記述言語により記述されている。開示の技術は、さらに、該基本部品の間の接続情報を含むネットリストを読み込み、該ネットリストと該複数の基本部品マクロとにもとづいて集積回路の論理モデルを構築する。開示の技術は、該論理モデルを用いて、該集積回路の論理シミュレーションを実行し、該論理シミュレーションの結果として入力データに応じた出力データを出力する。該基本部品は、複数のフリップフロップと出力部とを含む。該複数のフリップフロップは、各々がリセット状態かリセット解除状態かを示す信号を出力するリセット出力端子を備える。該複数のフリップフロップの少なくとも１つはリセット端子を備えるリセットフリップフロップである。該リセットフリップフロップは、該リセット端子にリセット信号が入力されている場合にリセット状態となり、リセット信号の入力が停止された場合にリセット解除状態となる。該出力部は、該複数のフリップフロップのリセット出力端子の各々から出力された信号が入力されると共に、該複数のフリップフロップのリセット出力端子の各々から出力された信号がリセット状態であることを示している場合にリセット状態信号を出力する。
【発明の効果】
【００１１】
開示の技術は、一つの側面として、集積回路に含まれる複数の基本部品を確実にリセットすることができる集積回路の設計を容易に行うことができる。
【図面の簡単な説明】
【００１２】
【図１】第１実施形態の集積回路の一例を示す概要図である。
【図２】第１実施形態の集積回路の動作の一例を示すタイミングチャートである。
【図３Ａ】第１実施形態のフリップフロップの一例を示す概要図である。
【図３Ｂ】第１実施形態のフリップフロップの一例を示す概要図である。
【図４Ａ】第２実施形態のフリップフロップの一例を示す概要図である。
【図４Ｂ】第２実施形態のフリップフロップの一例を示す概要図である。
【図５】第３実施形態の集積回路の一例を示す概要図である。
【図６】第４実施形態の集積回路の一例を示す概要図である。
【図７】第４実施形態の複合集積回路の一例を示す概要図である。
【図８】第４実施形態の複合集積回路の動作の一例を示すタイミングチャートである。
【図９】第５実施形態の論理シミュレーション装置の一例を示すブロック図である。
【図１０】第５実施形態の論理シミュレーション装置の一例を示す概要図である。
【図１１】第５実施形態の論理シミュレーション装置の動作の一例を示すフローチャートである。
【図１２】第５実施形態の論理シミュレーション装置の動作の一例を示すタイミングチャートである。
【発明を実施するための形態】
【００１３】
以下、図面を参照して開示の技術の実施形態の一例を詳細に説明する。なお、同一または対応する構成要素には同様の参照符号を付し、適宜説明を省略する。
【００１４】
［第１実施形態］
図１に開示の技術の集積回路の一例を示す。図１の集積回路２００は、回路ブロック２１０を含む。回路ブロック２１０は、クロック端子ｉＣＬＫおよびリセット端子ｉＲＳＴを備え、複数のフリップフロップ１２０を含む。
【００１５】
複数のフリップフロップ１２０の各々は、リセット端子Ｒ、出力端子Ｑ、入力端子Ｄ、クロック端子ＣＫを備える。出力端子Ｑはリセット出力端子としての役割も担う。フリップフロップ１２０はリセットフリップフロップである。すなわち、リセット端子Ｒにリセット信号が入力さている間リセットされ、出力端子Ｑにリセット状態であることを示す信号を出力する。
【００１６】
図示は省略するが、回路ブロック２１０のクロック端子ｉＣＬＫは、複数のフリップフロップ１２０のクロック端子ＣＫの各々に接続され、回路ブロック２１０のリセット端子ｉＲＳＴは複数のフリップフロップ１２０のリセット端子Ｒの各々に接続されている。
【００１７】
回路ブロック２１０のリセット端子ｉＲＳＴにリセット信号が入力されると、リセット信号は複数のフリップフロップ１２０のリセット端子Ｒの各々まで伝搬される。リセット信号がリセット端子Ｒに入力されている間フリップフロップ１２０はリセットされる。
【００１８】
しかしながら、回路ブロック２１０のリセット端子ｉＲＳＴにリセット信号が入力されてから、複数のフリップフロップ１２０のリセット端子Ｒの各々までリセット信号が到達するまでには伝搬による遅延が生じる。さらに、伝搬遅延時間の長さには複数のフリップフロップ１２０の各々の接続関係によってばらつきがある。
【００１９】
したがって、回路ブロック２１０のリセット端子ｉＲＳＴにリセット信号を入力する期間が十分に長くなければ、複数のフリップフロップ１２０の一部はリセットされたとしても、残りのフリップフロップ１２０はリセットされない可能性がある。一方、回路ブロック２１０のリセット端子ｉＲＳＴにリセット信号を入力する期間が長過ぎると、集積回路１００全体の動作に冗長性が生じる。
【００２０】
したがって、回路ブロック２１０のリセット端子ｉＲＳＴへのリセット信号の入力を継続する期間を最適かつ最短に決定することが望ましいが、該期間を最適かつ最短に予め決定することは困難である。
【００２１】
たとえば、ユーザは、フリップフロップ１２０の仕様書からリセットについての仕様を抽出し、かつ、集積回路２００におけるフリップフロップ１２０を含む複数の基本部品の接続関係を調べる。抽出した仕様や調べた接続関係にもとづいて、回路ブロック２１０のリセット端子ｉＲＳＴへのリセット信号の入力を継続する期間を定める必要があった。
【００２２】
本開示の技術では、集積回路２００は、さらに、フリップフロップ２４０、論理積素子２４５および多入力論理積素子２３０を含む。多入力論理積素子２３０は回路ブロック２１０に含まれる。
【００２３】
フリップフロップ２４０はリセット信号出力部の一例であり、多入力論理積素子２３０は出力部の一例である。
【００２４】
フリップフロップ２４０は、リセット端子Ｒ、出力端子Ｑ、イネーブル端子ＥＮ、入力端子Ｄ、クロック端子ＣＫを備える。多入力論理積素子２３０は、複数の入力端子と、一つの出力端子とを備える。
【００２５】
フリップフロップ２４０の出力端子Ｑは回路ブロック２１０のリセット端子ｉＲＳＴに接続される。この回路ブロック２１０のリセット端子ｉＲＳＴは、回路ブロック２１０に含まれる複数のフリップフロップ１２０のリセット端子Ｒの各々に接続されている。
【００２６】
複数のフリップフロップ１２０の出力端子Ｑの各々は、多入力論理積素子２３０の複数の入力端子の各々に接続され、多入力論理積素子２３０の出力端子Ｓｏｕｔは、論理積素子２４５の一方の入力端子に接続されている。論理積素子２４５の他方の入力端子にはフリップフロップ２４０の出力端子Ｑが接続されている。論理積素子２４５の出力端子は、フリップフロップ２４０のイネーブル端子ＥＮに接続されており、フリップフロップ２４０の入力端子Ｄには信号「１」が固定的に入力される。
【００２７】
回路ブロック２１０のクロック端子ｉＣＬＫは回路ブロック２１０に含まれる複数のフリップフロップ１２０のクロック端子ＣＫの各々に接続されている。
【００２８】
ここでは、フリップフロップ２４０として負信号Ｄ−フリップフロップ、回路ブロック２１０に含まれる複数のフリップフロップ１２０として正信号Ｄ−フリップフロップを使用する例を示す。
【００２９】
正信号Ｄ−フリップフロップおよび負信号Ｄ−フリップフロップは、リセット端子Ｒにリセット信号が入力されていない場合、クロック端子ＣＫへ入力されるクロック信号の立ち上がりエッジで入力端子Ｄに入力されている信号を出力端子Ｑに出力する。
【００３０】
負信号Ｄ−フリップフロップはリセット端子Ｒにリセット信号が入力されている間リセットされ、出力端子Ｑに信号「０」を出力する。正信号Ｄ−フリップフロップはリセット端子Ｒにリセット信号が入力されている間リセットされ、出力端子Ｑに信号「１」を出力する。
【００３１】
多入力論理積素子２３０は、複数の入力端子の各々への入力が信号「１」である場合、出力端子に信号「１」を出力する。
【００３２】
フリップフロップ２４０のクロック端子ＣＫおよび回路ブロック２１０のクロック端子ｉＣＬＫに図示しないクロック信号発生回路からクロック信号が入力される。該クロック信号は、回路ブロック２１０のクロック端子ｉＣＬＫに接続されている複数のフリップフロップ１２０のクロック端子ＣＫの各々に入力される。
【００３３】
リセット信号がフリップフロップ２４０のリセット端子Ｒに入力される。このリセット信号により、フリップフロップ２４０はリセットされて、フリップフロップ２４０の出力端子Ｑは複数のフリップフロップ１２０の各々をリセットするためのリセット信号である信号「０」を出力する。
【００３４】
フリップフロップ２４０の出力端子Ｑに接続されている論理積素子２４５の他方の入力端子には、出力端子Ｑが出力している信号「０」を反転した信号「１」が入力される。
【００３５】
この時点では、回路ブロック２１０に含まれている複数のフリップフロップ１２０の各々はまだリセットされていない。したがって、複数のフリップフロップ１２０の出力端子Ｑのいずれかはリセット状態であることを示す信号「１」ではなく、信号「０」を出力している。この信号「０」により、複数のフリップフロップ１２０の出力端子Ｑの各々に複数の入力端子の各々が接続されている多入力論理積素子２３０は、信号「０」を出力端子Ｓｏｕｔに出力する。信号「０」は論理積素子２４５の一方の入力端子に入力される。
【００３６】
したがって、論理積素子２４５の出力端子には信号「０」が出力され、該出力端子が接続されているイネーブル端子ＥＮには信号「０」が入力される。この信号「０」により、フリップフロップ２４０はディスエーブル状態となっており、フリップフロップ２４０のリセット端子Ｒへのリセット信号の入力が停止されてもフリップフロップ２４０の出力端子Ｑから出力される信号「０」が保持される。
【００３７】
フリップフロップ２４０の出力端子Ｑから出力され、保持されている信号「０」が回路ブロック２１０のリセット端子ｉＲＳＴに入力され、回路ブロック２１０に含まれる複数のフリップフロップ１２０のリセット端子Ｒの各々にリセット信号として伝搬する。
【００３８】
このとき、回路ブロック２１０のリセット端子ｉＲＳＴにリセット信号が入力されてから、複数のフリップフロップ１２０のリセット端子Ｒの各々までリセット信号が到達するまでには伝搬による遅延が生じる。さらに、伝搬遅延時間の長さにはフリップフロップ１２０の各々の接続関係によってもばらつきがある。伝搬遅延を経て、複数のフリップフロップ１２０のリセット端子Ｒの各々にリセット信号が入力されている間、複数のフリップフロップ１２０の各々はリセットされて、出力端子Ｑの各々からリセット状態であることを示す信号「１」を出力する。
【００３９】
複数のフリップフロップ１２０の出力端子Ｑの各々と接続されている多入力論理積素子２３０の入力端子の各々への入力が信号「１」となるので、多入力論理積素子２３０の出力端子Ｓｏｕｔからはリセット状態信号である信号「１」が出力される。該信号「１」は、論理積素子２４５の一方の入力端子に入力される。このとき、論理積素子２４５の他方の入力端子には、フリップフロップ２４０の出力端子Ｑから出力され、保持されている信号「０」を反転した信号「１」がまだ入力されているので、論理積素子２４５の出力が信号「１」となる。
【００４０】
この信号「１」が、フリップフロップ２４０のイネーブル端子ＥＮにイネーブル信号として入力され、フリップフロップ２４０はイネーブル状態となる。フリップフロップ２４０の入力端子Ｄには信号「１」が固定的に入力されている。したがって、フリップフロップ２４０のクロック端子ＣＫへ入力されるクロック信号の次のエッジ立ち上がり時にフリップフロップ２４０の出力端子Ｑの出力は信号「０」から信号「１」に変わる。すなわち、回路ブロック２１０のリセット端子ｉＲＳＴおよび回路ブロック２１０に含まれる複数のフリップフロップ１２０のリセット端子Ｒの各々へのリセット信号の入力が停止される。
【００４１】
たとえば、図２に示すように、クロック信号ＣＫ（ｉＣＬＫ）がフリップフロップ２４０のクロック端子ＣＫ、回路ブロック２１０のクロック端子ｉＣＬＫに与えられる。このクロック信号ＣＫ（ｉＣＬＫ）は、該回路ブロック２１０のクロック端子ｉＣＬＫを介して、複数のフリップフロップ１２０のクロック端子ＣＫの各々に与えられる。
【００４２】
そして、信号波形Ｒ（ｉＲＳＴ）によって示されるように、フリップフロップ２４０をリセットするための信号「０」が、Ｔ３〜Ｔ６まで、フリップフロップ２４０のリセット端子Ｒに与えられる。このリセット信号は一例である。
【００４３】
該信号「０」の入力によりフリップフロップ２４０はリセットされるので、Ｔ３で、フリップフロップ２４０の出力端子Ｑの出力は信号「０」となる。
【００４４】
一方、信号波形Ｒ（ｉＲＳＴ）によって示されるように、フリップフロップ２４０をリセットするための信号「０」がＴ７で信号「１」に変更される。すなわち、フリップフロップ２４０のためのリセット信号が停止される。しかしながら、信号波形Ｑで示されるように、フリップフロップ２４０の出力端子Ｑから出力される複数のフリップフロップ１２０のためのリセット信号である信号「０」は、Ｔ１１まで保持される。
【００４５】
すなわち、信号波形ＥＮで示されるように、フリップフロップ２４０のイネーブル端子ＥＮにイネーブル信号である信号「１」が与えられるまで、複数のフリップフロップ１２０のためのリセット信号である信号「０」は保持される。
【００４６】
Ｔ３では、複数のフリップフロップ１２０のいずれかはまだリセットされていない。したがって、複数のフリップフロップ１２０の出力端子Ｑのいずれかは信号「０」を出力している。複数のフリップフロップ１２０の出力端子Ｑの各々に接続されている多入力論理積素子２３０の複数の入力端子のいずれかには信号「０」が入力されるので、多入力論理積素子２３０の出力端子Ｓｏｕｔからは信号「０」が出力されている。この信号「０」が論理積素子２４５の一方の入力端子に入力される。したがって、論理積素子２４５の出力端子からは信号「０」が出力され、イネーブル端子ＥＮには信号「０」が入力されている。このため、複数のフリップフロップ１２０のためのリセット信号である信号「０」が保持されている。
【００４７】
回路ブロック２１０に含まれる複数のフリップフロップ１２０の各々がフリップフロップ２４０の出力端子Ｑから出力されるリセット信号である信号「０」によってリセットされる。リセットされると、複数のフリップフロップ１２０の各々の出力端子Ｑから信号「１」が出力される。フリップフロップ１２０の出力端子Ｑの各々と複数の入力端子の各々が接続されている多入力論理積素子２３０の出力端子Ｓｏｕｔは信号「１」をリセット状態信号として出力する。ここでは、この信号「１」は、Ｔ１１で出力されている。
【００４８】
この信号「１」が、論理積素子２４５の一方の入力端子に入力される。論理積素子２４５の他方の入力端子には、フリップフロップ２４０の出力端子Ｑが出力する信号「０」を反転した信号「１」が入力されているので、Ｔ１１で、イネーブル端子への入力がイネーブル信号である信号「１」となる。このイネーブル信号により、フリップフロップ２４０がイネーブル状態となり、Ｔ１２で、フリップフロップ２４０の出力端子Ｑからの出力は、入力端子Ｄに接続されている信号「１」に変化する。すなわち、回路ブロック２１０のリセット端子ｉＲＳＴおよび回路ブロック２１０に含まれる複数のフリップフロップ１２０のリセット端子Ｒの各々へのリセット信号はＴ１２で停止される。
【００４９】
ここでは、フリップフロップ２４０として負信号Ｄ−フリップフロップを使用する例を示したが、たとえば、フリップフロップ２４０として正信号Ｄ−フリップフロップを使用してもよい。この場合、たとえば、フリップフロップ２４０の出力端子Ｑからの出力を反転して、イネーブル端子ＥＮに接続されている論理積素子２４５の他方の入力端子および回路ブロック２１０のリセット端子ｉＲＳＴに接続すればよい。
【００５０】
また、回路ブロック２１０の複数のフリップフロップ１２０に正信号Ｄ−フリップフロップを使用する例を示したが、たとえば、負信号Ｄ−フリップフロップを使用してもよい。図３Ａに示すように、正信号Ｄ−フリップフロップであるフリップフロップ１２０の出力端子Ｑは、多入力論理積素子２３０の入力端子と直接接続される。一方、図３Ｂに示すように、負信号Ｄ−フリップフロップであるフリップフロップ１２０の出力端子Ｑには、反転部である反転素子２２５を接続し、該反転素子２２５を介して、フリップフロップ１２０の出力端子Ｑと多入力論理積素子２３０の入力端子とを接続すればよい。
【００５１】
これにより、多入力論理積素子２３０の複数の入力端子の各々に入力される複数のフリップフロップ１２０の各々がリセット状態であることを示す信号は信号「１」、すなわち、すべて同極となる。
【００５２】
回路ブロック２１０の複数のフリップフロップ１２０は、正信号Ｄ−フリップフロップのみであってもよいし、負信号Ｄ−フリップフロップのみであってもよいし、正信号Ｄ−フリップフロップと負信号Ｄ−フリップフロップとであってもよい。
【００５３】
多入力論理積素子２３０に多入力論理積素子を使用した例を示したが、本開示の技術はこれに限定されない。たとえば、複数のフリップフロップ１２０と同数の入力端子を有し、該入力端子の各々への入力がすべて同極である場合と、一つでも異なる場合とで、異なる信号を出力端子に出力する基本部品であれば、多入力論理積素子２３０として使用することができる。
【００５４】
上記では、多入力論理積素子２３０の複数の入力端子の各々への入力が信号「１」である場合に、多入力論理積素子２３０がリセット状態信号を出力するものとした。しかしながら、たとえば、複数のフリップフロップ１２０の各々の出力が信号「０」である場合に、リセット状態信号を出力する多入力否定論理和素子を多入力論理積素子に代えて使用することもできる。この場合、複数のフリップフロップ１２０として正信号Ｄ−フリップフロップを使用するのであれば、図３Ｂに示すように、フリップフロップ１２０の出力端子Ｑに反転素子２２５を接続する。該反転素子２２５を介してフリップフロップ１２０の出力端子Ｑと多入力否定論理和素子の入力端子とを接続すればよい。一方、複数のフリップフロップ１２０として負信号Ｄ−フリップフロップを使用するのであれば、フリップフロップ１２０の出力端子Ｑと多入力否定論理和素子の入力端子とを直接接続すればよい。
【００５５】
第１実施形態によれば、集積回路２００に含まれる複数の基本部品である複数のフリップフロップ１２０の各々が確実にリセットされるまで、リセット信号の供給を最適かつ最短に継続することができる。したがって、集積回路２００を設計する際に、複数の基本部品の各々を確実にリセットするためにリセット信号を供給すべき時間を考慮する必要がない。すなわち、集積回路２００に含まれる複数の基本部品を確実にリセットすることができる集積回路２００の設計を容易に行うことができる。
【００５６】
［第２実施形態］
次に開示の技術の第２実施形態について説明する。第１実施形態に記載した説明は適宜省略する。第１実施形態と第２実施形態の集積回路は略同様である。第１実施形態と第２実施形態の集積回路２００の差異は、回路ブロック２１０に含まれる複数のフリップフロップ１２０のいずれかがリセット端子Ｒを有さない非リセットフリップフロップに置き替えられることである。
【００５７】
図４Ａおよび図４Ｂにリセット端子Ｒを有さないフリップフロップ１２５の例を示す。
【００５８】
リセット端子Ｒを有さないフリップフロップ１２５には、回路ブロック２１０のリセット端子ｉＲＳＴは接続されない。一方で、フリップフロップ１２５の出力端子Ｑは、リセット端子Ｒを有するフリップフロップ１２０と同様に、多入力論理積素子２３０の入力端子に接続される。
【００５９】
リセット端子Ｒを有さないフリップフロップ１２５は、フリップフロップ２４０の出力端子Ｑからリセット信号である信号「０」が回路ブロック２１０のリセット端子ｉＲＳＴに入力されても、リセットはされない。
【００６０】
リセット端子Ｒを有さないフリップフロップ１２５がリセット状態であるか否かは予めユーザによって設定される。すなわち、フリップフロップ１２５の出力端子Ｑからの出力が信号「１」の場合にリセット状態であると定義されてもよいし、信号「０」の場合にリセット状態であると定義されてもよい。フリップフロップ１２５の出力端子はリセット出力端子としての役割も担う。
【００６１】
フリップフロップ１２５の出力端子Ｑからの出力が信号「１」の場合にリセット状態であると定義されている場合のフリップフロップ１２５の一例を図４Ａに示す。この場合、フリップフロップ１２５の出力端子Ｑは直接多入力論理積素子２３０の入力端子に接続される。
【００６２】
一方、フリップフロップ１２５の出力端子Ｑからの出力が信号「０」の場合にリセット状態であると定義されている場合は図４Ｂに示すように、フリップフロップ１２５の出力端子Ｑは反転部である反転素子２２５を介して多入力論理積素子２３０の入力端子に接続される。
【００６３】
第２実施形態によれば、回路ブロック２１０に含まれる複数のフリップフロップ１２０のいずれかをリセット端子を有さない非リセットフリップフロップ１２５に置き替えることができる。このような置き替えを行ったとしても、第１実施形態の開示の技術と同様に、集積回路２００の基本部品である複数のフリップフロップ１２０およびフリップ１２５の各々が確実にリセットされるまで、リセット信号の供給を最適かつ適切に継続することができる。したがって、集積回路２００を設計する際に、基本部品の各々を確実にリセットするためにリセット信号を供給すべき時間を考慮する必要がない。すなわち、集積回路２００に含まれる複数の基本部品を確実にリセットすることができる集積回路の設計を容易に行うことができる。
【００６４】
［第３実施形態］
次に開示の技術の第３実施形態について説明する。第１実施形態および第２実施形態で記載した説明は適宜省略する。図５に示すように、第１実施形態の集積回路２００と第３実施形態の集積回路３００とは略同様であるが、第３実施形態の集積回路３００は、複数の回路ブロック２１０および多入力論理積素子３３０を含む。
【００６５】
複数の回路ブロック２１０のリセット端子ｉＲＳＴの各々はリセット信号入力部２４０の出力端子Ｑに接続され、複数の回路ブロック２１０の多入力論理積素子２３０の出力端子Ｓｏｕｔの各々は多入力論理積素子３３０の入力端子の各々に接続される。多入力論理積素子３３０の出力端子は論理積素子２４５の一方の端子に接続されている。
【００６６】
フリップフロップ２４０の出力端子Ｑからリセット信号が複数の回路ブロック２１０のリセット端子ｉＲＳＴに与えられると、該リセット信号は、複数の回路ブロック２１０の各々に含まれる複数のフリップフロップ１２０のリセット端子Ｒの各々に入力される。
【００６７】
この時点では、複数の回路ブロック２１０に含まれる複数のフリップフロップ１２０のいずれかがリセットされていない。リセットされていないフリップフロップ１２０を含む回路ブロック２１０の多入力論理積素子２３０の出力端子Ｓｏｕｔは信号「０」を出力する。複数の回路ブロック２１０のいずれかの出力端子Ｓｏｕｔが信号「０」を出力している場合、多入力論理積素子３３０の出力は信号「０」となり、信号「０」が論理積素子２４５の一方の端子に入力される。
【００６８】
この場合、フリップフロップ２４０のイネーブル端子ＥＮへの入力は信号「０」となる。したがって、フリップフロップ２４０の出力端子Ｑから出力されているリセット信号は、フリップフロップ２４０のリセット端子Ｒへの信号「０」の入力が停止されても、保持される。
【００６９】
複数の回路ブロック２１０の各々に含まれる複数のフリップフロップ１２０の各々がリセットされると、複数の回路ブロック２１０の各々の多入力論理積素子２３０の出力端子Ｓｏｕｔの各々はリセット状態信号として信号「１」を出力する。複数の回路ブロック２１０の各々の多入力論理積素子２３０の出力端子Ｓｏｕｔの各々が信号「１」を出力すると、多入力論理積素子３３０の出力端子から信号「１」が出力され、論理積素子２４５の一方の端子に入力される。
【００７０】
論理積素子２４５の他方の端子には、フリップフロップ２４０の出力端子Ｑから出力されている信号「０」が反転され、信号「１」が入力されているので、フリップフロップ２４０のイネーブル端子ＥＮへの入力は信号「１」となる。したがって、フリップフロップ２４０の出力端子Ｑから出力されているリセット信号は停止される。
【００７１】
ここでは、第３実施形態を第１実施形態の集積回路２００の変形例として説明した。しかしながら、第３実施形態の複数の論理ブロック２１０に含まれる複数のフリップフロップ１２０のいずれかは、第２実施形態と同様に、リセット端子Ｒを有さない非リセットフリップフロップ１２５に置き替えられてもよい。
【００７２】
また、複数の回路ブロック２１０と同数の入力端子を有し、該入力端子の各々への入力がすべて同極である場合と、一つでも異なる場合とで、異なる信号を出力端子に出力する基本部品であれば、多入力論理積素子３３０に代えて使用することができる。
【００７３】
第３実施形態によれば、集積回路３００が複数のフリップフロップ１２０を含む複数の回路ブロック２１０を含んでいる。この場合であっても、第１実施形態、第２実施形態と同様に、集積回路の基本部品であるフリップフロップ１２０の各々が確実にリセットされるまで、リセット信号の供給を最適かつ最短に継続することができる。したがって、集積回路３００を設計する際に、基本部品の各々を確実にリセットするためにリセット信号を供給すべき時間を考慮する必要がない。すなわち、集積回路３００に含まれる複数の基本部品３００を確実にリセットすることができる集積回路の設計を容易に行うことができる。
【００７４】
［第４実施形態］
次に開示の技術の第４実施形態について説明する。第１実施形態〜第３実施形態に記載した説明は適宜省略する。第４実施形態は、複数の集積回路を含む複合集積回路である。第４実施形態の集積回路は、第１実施形態の集積回路２００と略同様であるが、一部変形されている。
【００７５】
図６に示す第４実施形態の複合集積回路に含まれる集積回路４００と第１実施形態の集積回路２００との差異は、第４実施形態の集積回路４００が外部信号入力端子Ｒｉｎおよび外部信号出力端子Ｒｏｕｔを有することである。さらに、集積回路４００は、論理積素子２４５に代えて、他方の入力端子への入力信号が反転されない論理積素子２４７を含む。
【００７６】
論理積素子２４７の他方の入力端子には外部信号入力端子Ｒｉｎが接続され、フリップフロップ２４０の出力端子Ｑは外部信号出力端子Ｒｏｕｔに接続される。
【００７７】
第４実施形態では、集積回路４００は、外部信号入力端子Ｒｉｎを介して、他の集積回路４００の外部信号出力端子Ｒｏｕｔに接続され、他の集積回路４００のフリップフロップ２４０の出力端子Ｑの出力を外部信号入力端子Ｒｉｎから入力する。集積回路４００は、外部信号入力端子Ｒｉｎへ入力される他の集積回路４００のフリップフロップ２４０が出力するリセット信号が停止されるまで、フリップフロップ２４０からのリセット信号の出力を継続する。すなわち、当該集積回路４００の回路ブロック２１０に含まれる複数のフリップフロップ１２０の各々がリセットされてもリセット信号の出力を停止しない。
【００７８】
複合集積回路において、複数の集積回路４００の各々の外部信号入力端子Ｒｉｎが、該集積回路４００がトランザクション（リード／ライトアクセス）を発行する集積回路の外部信号出力端子Ｒｏｕｔに接続される。該集積回路４００がトランザクションを発行する集積回路が複数ある場合は、該複数の集積回路４００の外部信号出力端子Ｒｏｕｔの各々に接続される。すなわち、集積回路４００は、自身がトランザクションを発行する集積回路４００すべてのリセットが完了するまで、自身のリセットを完了しない。
【００７９】
以下に、図７に一例を示す複合集積回路５００について説明する。複合集積回路５００は、リセット端子ＲＳＴを備え、３つのマスター集積回路４１０、４１５、４２０、３つのバス集積回路４３０、４３５、４４０、３つのスレーブ集積回路４５０、４５５、４６０を含む。マスター集積回路４１０、４１５、４２０、バス集積回路４３０、４３５、４４０、スレーブ集積回路４５０、４５５、４６０は、複数の集積回路４００の一例である。
【００８０】
マスター集積回路４１０、４１５、４２０とスレーブ集積回路４５０、４５５、４６０とはバス集積回路４３０、４３５、４４０を介して接続されている。
【００８１】
マスター集積回路４１０、４１５、４２０は、バス集積回路４３０、４３５、４４０に対してトランザクションを発行する機能を有する。ここで、図７の太線は、集積回路４００間にトランザクションの送信（発行）、受信があることを示す。たとえば、マスター集積回路４１０、４１５、４２０は、ＣＰＵ(Central Processing Unit)、ＧＰＵ(Graphic Processing Unit)、ＤＭＡ(Direct Memory Access)コントローラなどであってよい。
【００８２】
スレーブ集積回路４５０、４５５、４６０は、マスター集積回路４１０、４１５、４２０から発行されたトランザクションを受信する。スレーブ集積回路４５０、４５５、４６０は、各々が有する固有の機能を実行し、マスター集積回路４１０、４１５、４２０に向けて該トランザクションに対する応答を返す。たとえば、スレーブ集積回路４５０、４５５、４６０は、メモリコントローラ、割り込みコントローラ、汎用入出力インタフェース、タイマーモジュールなどであってよい。
【００８３】
バス集積回路４３０、４３５、４４０は、マスター集積回路４１０、４１５、４２０からのトランザクションをスレーブ集積回路４５０、４５５、４６０に伝える。一方、スレーブ集積回路４５０、４５５、４６０からの応答をマスター集積回路４１０、４１５、４２０に伝える。バス集積回路４３０、４３５、４４０は、複数の集積回路への信号の分配、複数の集積回路間の信号の調停、バスプロトコルの変換なども行う。バス集積回路４３０、４３５、４４０は、たとえば、バスマトリックス、インターコネクト、バスブリッジなどであってよい。
【００８４】
複合集積回路５００のリセット端子ＲＳＴは、マスター集積回路４１０、４１５、４２０、バス集積回路４３０、４３５、４４０、スレーブ集積回路４５０、４５５、４６０のリセット端子ＲＳＴの各々に接続される。
【００８５】
マスター集積回路４１０の外部信号入力端子Ｒｉｎは、該マスター集積回路４１０がトランザクションを発行するバス集積回路４３０の外部信号出力端子Ｒｏｕｔに接続される。マスター集積回路４１０に対してトランザクションを発行する集積回路はないため、マスター集積回路４１０の外部出力端子Ｒｏｕｔは開放状態とされる。
【００８６】
マスター集積回路４１５の外部信号入力端子Ｒｉｎは、該マスター集積回路４１５がトランザクションを発行するバス集積回路４３０の外部信号出力端子Ｒｏｕｔに接続される。マスター集積回路４１５に対してトランザクションを発行する集積回路はないため、マスター集積回路４１５の外部出力端子Ｒｏｕｔは開放状態とされる。
【００８７】
マスター集積回路４２０の外部信号入力端子Ｒｉｎは、該マスター集積回路４２０がトランザクションを発行するバス集積回路４４０の外部信号出力端子Ｒｏｕｔに接続される。マスター集積回路４２０に対してトランザクションを発行する集積回路はないため、マスター集積回路４２０の外部信号出力端子Ｒｏｕｔは開放状態とされる。
【００８８】
バス集積回路４３０の外部信号入力端子Ｒｉｎは、該バス集積回路４３０がトランザクションを発行するバス集積回路４３５およびバス集積回路４４０の外部信号出力端子Ｒｏｕｔに論理積素子２４９を介して接続される。論理積素子２４９の一方の入力端子にはバス集積回路４３５の外部信号出力端子Ｒｏｕｔが接続され、他方の入力端子にはバス集積回路４４０の外部信号出力端子Ｒｏｕｔが接続される。論理積素子２４９の出力端子にはバス集積回路４３０の外部信号入力端子Ｒｉｎが接続される。
【００８９】
バス集積回路４３５の外部信号入力端子Ｒｉｎは、該バス集積回路４３５がトランザクションを発行するスレーブ集積回路４５０の外部信号出力端子Ｒｏｕｔに接続される。
【００９０】
バス集積回路４４０の外部信号入力端子Ｒｉｎは、該バス集積回路４４０がトランザクションを発行するスレーブ集積回路４５５およびスレーブ集積回路４６０の外部信号出力端子Ｒｏｕｔに論理積素子２４９を介して接続される。論理積素子２４９の一方の入力端子にはスレーブ集積回路４５５の外部信号出力端子Ｒｏｕｔが接続され、他方の入力端子にはスレーブ集積回路４６０の外部信号出力端子Ｒｏｕｔが接続される。論理積素子２４９の出力端子にはバス集積回路４４０の外部信号入力端子Ｒｉｎが接続される。
【００９１】
スレーブ集積回路４５０、４５５、４６０は、トランザクションを発行する集積回路を有さないため、スレーブ集積回路４５０、４５５、４６０の外部信号入力端子Ｒｉｎには信号「１」が固定的に入力される。
【００９２】
複合集積回路５００のリセット端子ＲＳＴにリセット信号として信号「０」が入力される。該信号「０」により、該複合集積回路５００のリセット端子ＲＳＴに接続されているマスター集積回路４１０、４１５、４２０、バス集積回路４３０、４３５、４４０、スレーブ集積回路４５０、４５５、４６０のリセット端子ＲＳＴに信号「０」が伝搬される。
【００９３】
スレーブ集積回路４５０、４５５、４６０は、トランザクションを発行する集積回路を有さないため、他の集積回路のリセット状態に関係なく自身のリセット信号の停止を行う。
【００９４】
複合集積回路５００のリセット端子ＲＳＴから伝搬されたリセット信号によって、スレーブ集積回路４５０は該スレーブ集積回路４５０が含む複数のフリップフロップ１２０の各々をリセットする。複数のフリップフロップ１２０の各々がリセットされるまで、スレーブ集積回路４５０の多入力論理積素子２３０はリセット状態信号である信号「１」を出力しない。したがって、スレーブ集積回路４５０のフリップフロップ２４０は回路ブロック２１０へのリセット信号である信号「０」の入力を継続する。すなわち、スレーブ集積回路４５０の外部信号出力端子Ｒｏｕｔの出力は信号「０」である。
【００９５】
スレーブ集積回路４５０に含まれる複数のフリップフロップ１２０の各々がリセットされると、スレーブ集積回路４５０の多入力論理積素子２３０はリセット状態信号である信号「１」を出力する。スレーブ集積回路４５０の外部信号入力端子Ｒｉｎには信号「１」が固定的に入力されているため、スレーブ集積回路４５０のフリップフロップ２４０はリセット信号の回路ブロック２１０への入力を停止する。すなわち、スレーブ集積回路４５０の外部信号出力端子Ｒｏｕｔは信号「１」を出力する。
【００９６】
複合集積回路５００のリセット端子ＲＳＴから伝搬されたリセット信号によって、スレーブ集積回路４５５は該スレーブ集積回路４５５が含む複数のフリップフロップ１２０の各々をリセットする。複数のフリップフロップ１２０の各々がリセットされるまで、スレーブ集積回路４５５の多入力論理積素子２３０はリセット状態信号である信号「１」を出力しない。したがって、スレーブ集積回路４５５のフリップフロップ２４０は回路ブロック２１０へのリセット信号である信号「０」の入力を継続する。すなわち、スレーブ集積回路４５５の外部信号出力端子Ｒｏｕｔの出力は信号「０」である。
【００９７】
スレーブ集積回路４５５に含まれる複数のフリップフロップ１２０の各々がリセットされると、スレーブ集積回路４５５の多入力論理積素子２３０はリセット状態信号である信号「１」を出力する。スレーブ集積回路４５５の外部信号入力端子Ｒｉｎには信号「１」が固定的に入力されているため、スレーブ集積回路４５５のフリップフロップ２４０はリセット信号の回路ブロック２１０への入力を停止する。すなわち、スレーブ集積回路４５５の外部信号出力端子Ｒｏｕｔは信号「１」を出力する。
【００９８】
複合集積回路５００のリセット端子ＲＳＴから伝搬されたリセット信号によって、スレーブ集積回路４６０は該スレーブ集積回路４６０が含む複数のフリップフロップ１２０の各々をリセットする。複数のフリップフロップ１２０の各々がリセットされるまで、スレーブ集積回路４６０の多入力論理積素子２３０はリセット状態信号である信号「１」を出力しない。したがって、スレーブ集積回路４６０のフリップフロップ２４０は回路ブロック２１０へのリセット信号である信号「０」の入力を継続する。すなわち、スレーブ集積回路４６０の外部信号出力端子Ｒｏｕｔの出力は信号「０」である。
【００９９】
スレーブ集積回路４６０に含まれる複数のフリップフロップ１２０の各々がリセットされると、スレーブ集積回路４６０の多入力論理積素子２３０はリセット状態信号である信号「１」を出力する。スレーブ集積回路４６０の外部信号入力端子Ｒｉｎには信号「１」が固定的に入力されているため、スレーブ集積回路４６０のフリップフロップ２４０はリセット信号の回路ブロック２１０への入力を停止する。すなわち、スレーブ集積回路４６０の外部信号出力端子Ｒｏｕｔは信号「１」を出力する。
【０１００】
マスター集積回路４１０、４１５、４２０、バス集積回路４３０、４３５、４４０は、トランザクションを発行する集積回路を有する。したがって、トランザクションを発行される他の集積回路に含まれる複数のフリップフロップ１２０の各々のリセットが完了するまで、自身のリセット信号の出力を継続する。
【０１０１】
複合集積回路５００のリセット端子ＲＳＴから伝搬されたリセット信号によって、バス集積回路４３５は該バス集積回路４３５が含む複数のフリップフロップ１２０の各々をリセットする。複数のフリップフロップ１２０の各々がリセッされるまで、バス集積回路４３５の多入力論理積素子２３０はリセット状態信号である信号「１」を出力しない。したがって、バス集積回路４３５のフリップフロップ２４０は回路ブロック２１０へのリセット信号である信号「０」の入力を継続する。すなわち、バス集積回路４３５の外部信号出力端子Ｒｏｕｔの出力は信号「０」である。
【０１０２】
バス集積回路４３５に含まれる複数のフリップフロップ１２０の各々がリセットされると、バス集積回路４３５の多入力論理積素子２３０はリセット状態信号である信号「１」を出力する。バス集積回路４３５の外部信号入力端子Ｒｉｎにはスレーブ集積回路４５０の外部信号出力端子Ｒｏｕｔが接続されている。したがって、スレーブ集積回路４５０のフリップフロップ２４０がリセット信号である信号「０」を出力している間は、バス集積回路４３５のフリップフロップ２４０はリセット信号の出力を停止しない。すなわち、バス集積回路４３５の外部信号出力端子Ｒｏｕｔは信号「０」を出力する。
【０１０３】
スレーブ集積回路４５０のフリップフロップ２４０がリセット信号を停止すると、スレーブ集積回路４５０の外部信号出力端子Ｒｏｕｔは信号「１」を出力する。したがって、バス集積回路４３５の多入力論理積素子２３０がリセット状態信号である信号「１」を出力していれば、バス集積回路４３５のフリップフロップ２４０はリセット信号の出力を停止する。すなわち、バス集積回路４３５の外部信号出力端子Ｒｏｕｔは信号「１」を出力する。
【０１０４】
複合集積回路５００のリセット端子ＲＳＴから伝搬されたリセット信号によって、バス集積回路４４０は該バス集積回路４４０が含む複数のフリップフロップ１２０の各々をリセットする。複数のフリップフロップ１２０の各々がリセットされるまで、バス集積回路４４０の多入力論理積素子２３０はリセット状態信号である信号「１」を出力しない。したがって、バス集積回路４４０のフリップフロップ２４０は回路ブロック２１０への信号「０」の入力を継続する。すなわち、バス集積回路４４０の外部信号出力端子Ｒｏｕｔの出力は信号「０」である。
【０１０５】
バス集積回路４４０に含まれる複数のフリップフロップ１２０の各々がリセットされると、バス集積回路４４０の多入力論理積素子２３０はリセット状態信号である信号「１」を出力する。バス集積回路４４０の外部信号入力端子Ｒｉｎにはスレーブ集積回路４５５およびスレーブ集積回路４６０の外部信号出力端子Ｒｏｕｔが論理積素子２４９を介して接続されている。したがって、スレーブ集積回路４５５およびスレーブ集積回路４６０のいずれか一方のフリップフロップ２４０がリセット信号である信号「０」を出力している間は、バス集積回路４４０のフリップフロップ２４０はリセット信号の出力を停止しない。すなわち、バス集積回路４４０の外部信号出力端子Ｒｏｕｔは信号「０」を出力する。
【０１０６】
スレーブ集積回路４５５およびスレーブ集積回路４６０のフリップフロップ２４０がリセット信号を停止すると、スレーブ集積回路４５５およびスレーブ集積回路４６０の外部信号出力端子Ｒｏｕｔは信号「１」を出力する。したがって、バス集積回路４４０の多入力論理積素子２３０がリセット状態信号である信号「１」を出力していれば、バス集積回路４４０のフリップフロップ２４０はリセット信号の出力を停止する。すなわち、バス集積回路４４０の外部信号出力端子Ｒｏｕｔは信号「１」を出力する。
【０１０７】
複合集積回路５００のリセット端子ＲＳＴから伝搬されたリセット信号によって、バス集積回路４３０は該バス集積回路４３０が含む複数のフリップフロップ１２０の各々をリセットする。複数のフリップフロップ１２０の各々がリセットされるまで、バス集積回路４３０の多入力論理積素子２３０はリセット状態信号である信号「１」を出力しないので、バス集積回路４３０のフリップフロップ２４０は回路ブロック２１０への信号「０」の入力を継続する。したがって、バス集積回路４３０の外部信号出力端子Ｒｏｕｔの出力は信号「０」である。
【０１０８】
バス集積回路４３０に含まれる複数のフリップフロップ１２０の各々がリセットされると、バス集積回路４３０の多入力論理積素子２３０はリセット状態信号である信号「１」を出力する。バス集積回路４３０の外部信号入力端子Ｒｉｎにはバス集積回路４３５およびバス集積回路４４０の外部信号出力端子Ｒｏｕｔが論理積素子２４９を介して接続されている。したがって、バス集積回路４３５およびバス集積回路４４０のいずれか一方のフリップフロップ２４０がリセット信号である信号「０」を出力している間は、バス集積回路４３０のフリップフロップ２４０はリセット信号の出力を停止しない。すなわち、バス集積回路４３０の外部信号出力端子Ｒｏｕｔは信号「０」を出力する。
【０１０９】
バス集積回路４３５およびバス集積回路４４０のフリップフロップ２４０がリセット信号を停止すると、バス集積回路４３５およびバス集積回路４４０の外部信号出力端子Ｒｏｕｔは信号「１」を出力する。したがって、バス集積回路４３０の多入力論理積素子２３０がリセット状態信号である信号「１」を出力していれば、バス集積回路４３０のフリップフロップ２４０はリセット信号の出力を停止する。すなわち、バス集積回路４３０の外部信号出力端子Ｒｏｕｔは信号「１」を出力する。
【０１１０】
複合集積回路５００のリセット端子ＲＳＴから伝搬されたリセット信号によって、マスター集積回路４１０は該マスター集積回路４１０が含む複数のフリップフロップ１２０の各々をリセットする。複数のフリップフロップ１２０の各々がリセットされるまで、マスター集積回路４１０の多入力論理積素子２３０はリセット状態信号である信号「１」を出力しない。したがって、マスター集積回路４１０のフリップフロップ２４０は回路ブロック２１０への信号「０」の入力を継続する。すなわち、マスター集積回路４１０の外部信号出力端子Ｒｏｕｔの出力は信号「０」である。
【０１１１】
マスター集積回路４１０に含まれる複数のフリップフロップ１２０の各々がリセットされると、マスター集積回路４１０の多入力論理積素子２３０はリセット状態信号である信号「１」を出力する。マスター集積回路４１０の外部信号入力端子Ｒｉｎにはバス集積回路４３０の外部信号出力端子Ｒｏｕｔが接続されている。したがって、バス集積回路４３０のフリップフロップ２４０がリセット信号である信号「０」を出力している間は、マスター集積回路４１０のフリップフロップ２４０はリセット信号の出力を停止しない。
【０１１２】
バス集積回路４３０のフリップフロップ２４０がリセット信号を停止すると、バス集積回路４３０の外部信号出力端子Ｒｏｕｔは信号「１」を出力する。したがって、マスター集積回路４１０の多入力論理積素子２３０がリセット状態信号である信号「１」を出力していれば、マスター集積回路４１０のフリップフロップ２４０はリセット信号の出力を停止する。
【０１１３】
複合集積回路５００のリセット端子ＲＳＴから伝搬されたリセット信号によって、マスター集積回路４１５は該マスター集積回路４１５が含む複数のフリップフロップ１２０の各々をリセットする。複数のフリップフロップ１２０の各々がリセットされるまで、マスター集積回路４１５の多入力論理積素子２３０はリセット状態信号である信号「１」を出力しない。したがって、マスター集積回路４１５のフリップフロップ２４０は回路ブロック２１０への信号「０」の入力を継続する。
【０１１４】
マスター集積回路４１５に含まれる複数のフリップフロップ１２０の各々がリセットされると、マスター集積回路４１５の多入力論理積素子２３０はリセット状態信号である信号「１」を出力する。マスター集積回路４１５の外部信号入力端子Ｒｉｎにはバス集積回路４３０の外部信号出力端子Ｒｏｕｔが接続されている。したがって、バス集積回路４３０のフリップフロップ２４０がリセット信号である信号「０」を出力している間は、マスター集積回路４１５のフリップフロップ２４０はリセット信号の出力を停止しない。
【０１１５】
バス集積回路４３０のフリップフロップ２４０がリセット信号を停止すると、バス集積回路４３０の外部信号出力端子Ｒｏｕｔは信号「１」を出力する。したがって、マスター集積回路４１５の多入力論理積素子２３０がリセット状態信号である信号「１」を出力していれば、マスター集積回路４１５のフリップフロップ２４０はリセット信号の出力を停止する。
【０１１６】
複合集積回路５００のリセット端子ＲＳＴから伝搬されたリセット信号によって、マスター集積回路４２０は該マスター集積回路４２０が含む複数のフリップフロップ１２０の各々をリセットする。複数のフリップフロップ１２０の各々がリセットされるまで、マスター集積回路４２０の多入力論理積素子２３０はリセット状態信号である信号「１」を出力しない。したがって、マスター集積回路４２０のフリップフロップ２４０は回路ブロック２１０への信号「０」の入力を継続する。
【０１１７】
マスター集積回路４２０に含まれる複数のフリップフロップ１２０の各々がリセットされると、マスター集積回路４２０の多入力論理積素子２３０はリセット状態信号である信号「１」を出力する。マスター集積回路４２０の外部信号入力端子Ｒｉｎにはバス集積回路４４０の外部信号出力端子Ｒｏｕｔが接続されている。したがって、バス集積回路４４０のフリップフロップ２４０がリセット信号である信号「０」を出力している間は、マスター集積回路４２０のフリップフロップ２４０はリセット信号の出力を停止しない。
【０１１８】
バス集積回路４４０のフリップフロップ２４０がリセット信号を停止すると、バス集積回路４４０の外部信号出力端子Ｒｏｕｔは信号「１」を出力する。したがって、マスター集積回路４２０の多入力論理積素子２３０がリセット状態信号である信号「１」を出力していれば、マスター集積回路４２０のフリップフロップ２４０はリセット信号の出力を停止する。
【０１１９】
図８に一例を示すように、図示しないクロック信号発生回路から複合集積回路５００を介して、マスター集積回路４１０、４１５、４２０、バス集積回路４３０、４３５、４４０、スレーブ集積回路４５０、４５５、４６０にクロック信号ＣＬＫが与えられる。Ｔ３で、複合集積回路５００のリセット端子ＲＳＴに信号「０」を入力する。
【０１２０】
複合集積回路５００のリセット端子ＲＳＴに入力された信号「０」により、複合集積回路５００に含まれるスレーブ集積回路４５５のリセット端子ＲＳＴにも信号「０」が入力される。この信号「０」はフリップフロップ２４０のリセット端子Ｒに入力される。したがって、フリップフロップ２４０はリセットされ、信号波形群Ｓ２の信号波形Ｒｏｕｔに示されるように、スレーブ集積回路４５５のフリップフロップ２４０の出力端子Ｑの出力もＴ３で信号「０」となる。スレーブ集積回路４５５の複数のフリップフロップ１２０の各々はこの時点ではまだリセットが完了していないため、信号波形Ｓｏｕｔに示されるように、多入力論理積素子２３０はまだリセット状態信号である信号「１」を出力せず、信号「０」を出力している。
【０１２１】
すなわち、イネーブル端子ＥＮに接続されている論理積素子２４７の出力は信号「０」となり、イネーブル端子ＥＮには信号「０」が入力される。この信号「０」により、フリップフロップ２４０の出力端子Ｑの出力は、信号波形Ｒｏｕｔで示されるように、複合集積回路５００のリセット端子ＲＳＴへの信号「０」がＴ４で信号「１」に変化した後も信号「０」のまま維持される。
【０１２２】
ここでは、信号波形Ｓｏｕｔに示されるように、スレーブ集積回路４５５の複数のフリップフロップ１２０の各々がＴ９でリセットを完了し、多入力論理積素子２３０が信号「１」をリセット状態信号として出力する。スレーブ集積回路４５５の外部信号入力端子Ｒｉｎには信号「１」が固定的に入力されているため、リセット状態信号によって、スレーブ集積回路４５５のフリップフロップ２４０のイネーブル端子ＥＮに信号「１」が入力される。フリップフロップ２４０の入力端子Ｄには信号「１」が固定的に入力されている。したがって、クロック端子ＣＫへ入力される次のクロック信号の立ち上がりエッジで、すなわち、Ｔ１０で、フリップフロップ２４０の出力端子Ｑの出力は、信号波形Ｒｏｕｔに示されるように、信号「１」となる。
【０１２３】
複合集積回路５００のリセット端子ＲＳＴに入力された信号「０」により、複合集積回路５００に含まれるスレーブ集積回路４６０のリセット端子ＲＳＴにも信号「０」が入力される。この信号「０」はフリップフロップ２４０のリセット端子Ｒに入力される。したがって、フリップフロップ２４０はリセットされ、信号波形群Ｓ３の信号波形Ｒｏｕｔに示されるように、スレーブ集積回路４６０のフリップフロップ２４０の出力端子Ｑの出力もＴ３で信号「０」となる。スレーブ集積回路４６０の複数のフリップフロップ１２０の各々はこの時点ではまだリセットが完了していないため、信号波形Ｓｏｕｔに示されるように、多入力論理積素子２３０はまだリセット状態信号である信号「１」を出力せず、信号「０」を出力している。
【０１２４】
すなわち、イネーブル端子ＥＮに接続されている論理積素子２４７の出力は信号「０」となり、イネーブル端子ＥＮには信号「０」が入力される。この信号「０」により、フリップフロップ２４０の出力端子Ｑの出力は、信号波形Ｒｏｕｔに示されるように、複合集積回路５００のリセット端子ＲＳＴへの信号「０」がＴ４で信号「１」に変化した後も信号「０」のまま維持される。
【０１２５】
ここでは、信号波形Ｓｏｕｔに示されるように、スレーブ集積回路４６０の複数のフリップフロップ１２０の各々がＴ５でリセットを完了し、多入力論理積素子２３０が信号「１」をリセット状態信号として出力する。スレーブ集積回路４６０の外部信号入力端子Ｒｉｎには信号「１」が固定的に入力されているため、リセット状態信号によって、スレーブ集積回路４６０のフリップフロップ２４０のイネーブル端子ＥＮに信号「１」が入力される。フリップフロップ２４０の入力端子Ｄには信号「１」が固定的に入力されている。したがって、クロック端子ＣＫへ入力される次のクロック信号の立ち上がりエッジで、すなわち、Ｔ６で、フリップフロップ２４０の出力端子Ｑの出力は、信号波形Ｒｏｕｔに示されるように、信号「１」となる。
【０１２６】
複合集積回路５００のリセット端子ＲＳＴに入力された信号「０」により、複合集積回路５００に含まれるバス集積回路４４０のリセット端子ＲＳＴにも信号「０」が入力される。この信号「０」はフリップフロップ２４０のリセット端子Ｒに入力される。したがって、フリップフロップ２４０はリセットされ、信号波形群Ｂ３の信号波形Ｒｏｕｔに示されるように、バス集積回路４４０のフリップフロップ２４０の出力端子Ｑの出力もＴ３で信号「０」となる。バス集積回路４４０の複数のフリップフロップ１２０の各々はこの時点ではまだリセットが完了していないため、信号波形Ｓｏｕｔに示されるように、多入力論理積素子２３０はまだリセット状態信号である信号「１」を出力せず、信号「０」を出力している。
【０１２７】
すなわち、イネーブル端子ＥＮに接続されている論理積素子２４７の出力は信号「０」となり、イネーブル端子ＥＮには信号「０」が入力される。この信号「０」により、フリップフロップ２４０の出力端子Ｑの出力は、信号波形Ｒｏｕｔに示されるように、複合集積回路５００のリセット端子ＲＳＴへの信号「０」がＴ４で信号「１」に変化した後も信号「０」のまま維持される。
【０１２８】
ここでは、信号波形Ｓｏｕｔに示されるように、バス集積回路４４０の複数のフリップフロップ１２０の各々がＴ５でリセットを完了し、多入力論理積素子２３０が信号「１」をリセット状態信号として出力する。バス集積回路４４０の外部信号入力端子Ｒｉｎには、スレーブ集積回路４５５およびスレーブ集積回路４６０の外部信号出力端子Ｒｏｕｔが論理積素子２４９を介して接続されている。したがって、スレーブ集積回路４５５およびスレーブ集積回路４６０の外部信号出力端子Ｒｏｕｔの出力が信号「１」になるまで、すなわち、Ｔ１０まで、フリップフロップ２４０の出力端子Ｑの出力は、信号「０」のまま維持される。
【０１２９】
Ｔ１０で、バス集積回路４４０のフリップフロップ２４０のイネーブル端子ＥＮに信号「１」が入力される。フリップフロップ２４０の入力端子Ｄには信号「１」が固定的に入力されている。したがって、クロック端子ＣＫへ入力される次のクロック信号の立ち上がりエッジで、すなわち、Ｔ１１で、フリップフロップ２４０の出力端子Ｑの出力は、信号波形Ｒｏｕｔに示されるように、信号「１」となる。
【０１３０】
複合集積回路５００のリセット端子ＲＳＴに入力された信号「０」により、複合集積回路５００に含まれるマスター集積回路４２０のリセット端子ＲＳＴにも信号「０」が入力される。この信号「０」はフリップフロップ２４０のリセット端子Ｒに入力される。したがって、フリップフロップ２４０はリセットされ、信号波形群Ｍ３の信号波形Ｒｏｕｔに示されるように、マスター集積回路４２０のフリップフロップ２４０の出力端子Ｑの出力もＴ３で信号「０」となる。マスター集積回路４２０の複数のフリップフロップ１２０の各々はこの時点ではまだリセットが完了していないため、信号波形Ｓｏｕｔに示されるように、多入力論理積素子２３０はリセット状態信号である信号「１」を出力せず、信号「０」を出力している。
【０１３１】
すなわち、フリップフロップ２４０のイネーブル端子ＥＮに接続されている論理積素子２４７の出力は信号「０」となり、イネーブル端子ＥＮには信号「０」が入力される。この信号「０」により、フリップフロップ２４０の出力端子Ｑの出力は、信号波形Ｒｏｕｔに示されるように、複合集積回路５００のリセット端子ＲＳＴへの信号「０」がＴ４で信号「１」に変化した後も信号「０」のまま維持される。
【０１３２】
ここでは、信号波形Ｓｏｕｔに示されるように、マスター集積回路４２０の複数のフリップフロップ１２０の各々がＴ７でリセットを完了し、多入力論理積素子２３０が信号「１」をリセット状態信号として出力する。マスター集積回路４２０の外部信号入力端子Ｒｉｎには、バス集積回路４４０の外部信号出力端子Ｒｏｕｔが接続されている。したがって、バス集積回路４４０の外部信号出力端子Ｒｏｕｔの出力が信号「１」になるまで、すなわち、Ｔ１１まで、フリップフロップ２４０の出力端子Ｑの出力は、信号「０」のまま維持される。
【０１３３】
Ｔ１１で、マスター集積回路４２０のフリップフロップ２４０のイネーブル端子ＥＮに信号「１」が入力される。フリップフロップ２４０の入力端子Ｄには信号「１」が固定的に入力されている。したがって、クロック端子ＣＫへ入力される次のクロック信号の立ち上がりエッジで、すなわち、Ｔ１２で、フリップフロップ２４０の出力端子Ｑの出力は、信号波形Ｒｏｕｔに示されるように、信号「１」となる。
【０１３４】
第４実施形態によれば、トランザクションを発行される集積回路４００の複数のフリップフロップ１２０の各々のリセットが完了したことを確認してから、該集積回路４００にトランザクションを発行する集積回路のリセットを完了するため、複合集積回路５００全体の回路動作を容易に保証することができる。
【０１３５】
第４実施形態に開示の技術を適用しない場合、複合集積回路５００にリセット信号を入力する期間を仕様書にもとづいて予め決定することが要求される。複合集積回路５００に含まれる複数の集積回路４００の各々の複数のフリップフロップ１２０の各々が確実にリセットされるようにするためである。
【０１３６】
しかしながら、第４実施形態の開示の技術を使用した場合、複数の集積回路４００に含まれる複数のフリップフロップ１２０の各々がリセットされるまで、複数の集積回路４００のフリップフロップ２４０の各々がリセット信号の出力を停止しない。したがって、複合集積回路５００にリセット信号を入力する期間が、複合集積回路５００に含まれる複数の集積回路４００の各々の複数のフリップフロップ１２０の各々が確実にリセットされる期間に及ばなくてもよい。すなわち、複数の集積回路４００のいずれかに含まれる複数のフリップフロップ１２０のいずれかがリセットされない、などという現象を防ぐことができる。
【０１３７】
複合集積回路５００が大規模化すると、リセット信号が複数のフリップフロップ１２０の各々に伝搬するまでの遅延時間が長くなる。さらに、設計開発を行う際に、遅延を考慮しない論理シミュレーションを実施することも多い。第４実施形態の開示の技術によれば、このような場合でも、リセット信号を入力する期間を短く設計してしまったため、複数の集積回路のいずれかに含まれる複数のフリップフロップ１２０のいずれかがリセットされない、などという現象を防ぐことができる。
【０１３８】
なお、上記では、第１実施形態の集積回路２００を変形して、第４実施形態の複合集積回路５００に適用する例について説明したが、本開示の技術はこれに限定されない。第２実施形態の集積回路２００および第３実施形態の集積回路３００を各々変形して用いてもよいし、第１実施形態〜第３実施形態の集積回路２００および集積回路３００を変形して組み合わせることにより、第４実施形態の複合集積回路５００に用いてもよい。
【０１３９】
［第５実施形態］
次に開示の技術の第５実施形態について説明する。第１実施形態〜第４実施形態に記載した説明は適宜省略する。
【０１４０】
第５実施形態は、第１実施形態の集積回路２００の動作をシミュレーションする論理シミュレーション装置である。
【０１４１】
本開示の技術による論理シミュレーション装置は専用装置であってもよいし、たとえば、パーソナルコンピュータやエンジニアリングワークステーション等の汎用装置であってもよい。
【０１４２】
図９に示すように、論理シミュレーション装置６００は、ＣＰＵ６３０を含む。ＣＰＵ６３０は演算ユニットの一例である。
【０１４３】
論理シミュレーション装置６００は、さらに、ＲＡＭ(Random Access Memory)６３５、ＲＯＭ(Read Only Memory)６４０、ハードディスクなどの二次記憶装置６４５、可換媒体記憶装置６５０、および入出力インタフェース６５５を含む。ＲＡＭ６３５、ＲＯＭ６４０、二次記憶装置６４５、可換媒体記憶装置６５０に装着可能な記憶媒体は、メモリの一例である。
【０１４４】
論理シミュレーションのプログラムが、可換媒体記憶装置６５０に装着可能な記憶媒体に記憶されており、記憶媒体から可換媒体記憶装置６５０を介して、ＲＡＭ６３５あるいは二次記憶装置６４５にロードされる。あるいは、論理シミュレーションのプログラムは、遠隔地にある記憶媒体に記憶されており、この記憶媒体から入出力インタフェース６５５を介して、ＲＡＭ６３５あるいは二次記憶装置６４５にロードされる。
【０１４５】
入出力インタフェース６５５を介してユーザからプログラム実行指示があると、ＣＰＵ６３０は、記憶媒体、遠隔地記憶媒体、あるいは二次記憶装置６４５からプログラムをＲＡＭ６３５にロードする。ＣＰＵ６３０はＲＡＭ６３５の空き記憶空間をワークエリアとして使用して、ＲＡＭ６３５にロードされたプログラムを実行し、適宜ユーザと対話しながら処理を進める。
【０１４６】
なお、論理シミュレーション装置６００が専用装置である場合には、論理シミュレーションのプログラムは、ＲＯＭ６４０に予め記憶されていてもよい。
【０１４７】
上記プログラムを実行することにより、論理シミュレーション装置６００が、論理シミュレーションを実行する。
【０１４８】
図１０に、論理シミュレーション装置６００の概略ブロック図を示す。論理シミュレーション装置６００は、テストベンチ７１０を含み、テストベンチ７１０は集積回路論理モデル７２０を含む。
【０１４９】
テストベンチ７１０は、集積回路２００の論理シミュレーションを開始、制御、停止させるために必要な記述を所定のハードウェア記述言語により記載したものである。論理シミュレーション装置６００は、たとえば、Ｖｅｒｉｌｏｇで記述されたシミュレータであってよい。
【０１５０】
集積回路論理モデル７２０とは、基本部品マクロおよびネットリスト等のシミュレーション実行に必要な情報を統合して、集積回路の論理動作を実行可能な状態にしたものである。基本部品マクロは、基本部品の論理動作を規定する論理動作部を含み、該基本部品の動作モデルとして所定のハードウェア記述言語により記述されているマクロであり、ネットリストは基本部品の間の接続情報を含む。
【０１５１】
図１０に示す参照符号７１２０、７２３０は、各々基本部品であるフリップフロップ、多入力論理素子のマクロである。基本部品マクロは、基本部品の論理動作を規定する。たとえば、フリップフロップのマクロ（以下、フリップフロップ）７１２０は、フリップフロップの論理動作を規定し、リセット端子Ｒ、リセット出力端子である出力端子Ｑ、入力端子Ｄ、クロック端子ＣＫ、に相当するパラメータを備える。以下では、説明を容易にするため、基本部品マクロを基本部品と同様に記述する。
【０１５２】
ここでは、フリップフロップ７１２０は、第１実施形態のフリップフロップ１２０と同様に動作し、多入力論理積素子７２３０は、第１実施形態の多入力論理積素子２３０と同様に動作する。
【０１５３】
集積回路論理モデル７２０は、クロック信号を生成するクロック生成部７３０、リセット信号を生成するリセット信号生成部７４０、回路ブロック７５０を含む。回路ブロック７５０は、基本部品マクロであるフリップフロップ７１２０および多入力論理積素子７２３０を含む。
【０１５４】
集積回路論理モデル７２０において、クロック生成部７３０、リセット信号生成部７４０、基本部品マクロである複数のフリップフロップ７１２０および多入力論理積素子７２３０はネットリストに含まれている接続情報にしたがって接続されている。
【０１５５】
クロック生成部７３０が生成するクロック信号を回路ブロック７５０に入力するように、クロック生成部７３０と、回路ブロック７５０のクロック端子ｉＣＬＫとを接続する。リセット信号生成部７４０が生成するリセット信号を回路ブロック７５０に入力するように、リセット信号生成部７４０と回路ブロック７５０のリセット端子ｉＲＳＴとを接続する。回路ブロック７５０のクロック端子ｉＣＬＫと複数のフリップフロップ７１２０のクロック端子ＣＫの各々とが接続される。これにより、回路ブロック７５０に入力されたクロック信号が回路ブロック７５０に含まれる複数のフリップフロップ７１２０のクロック端子ＣＫの各々に入力される。回路ブロック７５０のリセット端子ｉＲＳＴと複数のフリップフロップ７１２０のリセット端子Ｒの各々とが接続される。これにより、回路ブロック７５０に入力されたリセット信号が回路ブロック７５０に含まれる複数のフリップフロップ７１２０の各々のリセット端子Ｒに入力される。複数のフリップフロップ７１２０の出力端子Ｑの各々が多入力論理積素子７２３０の入力端子の各々に接続される。
【０１５６】
テストベンチ７１０において、テストパターンデータベース７６０が集積回路論理モデル７２０にテストパターンを入力するように接続される。ログ記録部７７０が、クロック信号生成部７３０、リセット信号生成部７４０、出力部７２３０に接続される。これにより、ログ記録部７７０が、クロック生成部７３０が生成するクロック信号、リセット信号生成部７４０が生成するリセット信号、多入力論理積素子７２３０が出力するリセット状態信号を記録する。
【０１５７】
ＣＰＵ６３０が論理シミュレーションのプログラムを実行することにより、図１１に示すように、基本部品マクロとネットリストとが統合されて、集積回路論理モデル７２０が構築される（ステップ８１０）。ＣＰＵ６３０は、テストベンチ７１０を介して、集積回路論理モデル７２０の論理動作を開始させ、テストパターンデータベース７６０から入力データであるテストパターンを集積回路論理モデル７２０に与える。ステップ８２０で論理シミュレーションが実行され、テストパターンが処理されると論理シミュレーションの結果として出力される出力データが、ログ記録部７７０に記録される（ステップ８３０）。必要であれば、ステップ８４０で、記録された出力データにもとづいて、集積回路２００の設計変更を行う。
【０１５８】
論理シミュレーションでは、クロック生成部７３０が回路ブロック７５０のクロック端子ｉＣＬＫにクロック信号を与え、クロック端子ｉＣＬＫに接続されている複数のフリップフロップ７１２０のクロック端子ＣＫの各々に入力される。リセット信号生成部７４０が回路ブロック７５０のリセット端子ｉＲＳＴにリセット信号を与え、リセット端子ｉＲＳＴに接続されている複数のフリップフロップ７１２０のリセット端子Ｒの各々に入力される。
【０１５９】
複数のフリップフロップ７１２０の入力端子Ｄには、テストパターンデータベース７６０のテストパターンが与えられる。
【０１６０】
複数のフリップフロップ７１２０の各々がリセットされると、多入力論理積素子７２３０がリセット状態信号を出力する。
【０１６１】
クロック信号生成部７３０のクロック信号、リセット信号生成部の出力信号波形とともに、多入力論理積素子７２３０の出力信号波形がログ記録部７７０に記録される。
【０１６２】
図１２に、一例を示すように、クロック信号生成部７３０がクロック信号ｉＣＬＫを回路ブロック７５０のクロック端子ｉＣＬＫに与える。リセット信号生成部７４０がＴ３〜Ｔ７の間、リセット信号である信号「０」を出力し、回路ブロック７５０のリセット端子ｉＲＳＴに与える。該信号「０」は、複数のフリップフロップ７１２０のリセット端子Ｒに伝搬されるが、多入力論理積素子７２３０の出力ＳｏｕｔはＴ４まで信号「０」のままであり、Ｔ５でリセット状態信号である信号「１」を出力する。すなわち、複数のフリップフロップ７１２０の各々はＴ４までリセットされない。
【０１６３】
一方、入力データとしてテストパターンが入力されており、複数のフリップフロップ７１２０の入力端子Ｄに与えられているにもかかわらず、多入力論理積素子７２３０の出力ＳｏｕｔはＴ１１まで信号「１」のままである。すなわち、複数のフリップフロップ７１２０の各々は、Ｔ７でリセット信号の入力が停止された後も、Ｔ１１までリセット状態を保っている。
【０１６４】
第５実施形態によれば、回路ブロック７５０にリセット信号が入力されてから複数のフリップフロップ７１２０の各々のリセットが完了するまでの期間を、仕様書を参照せず、容易に知ることができる。
【０１６５】
また、リセット信号の入力が停止されてから、複数のフリップフロップ７１２０のリセット状態が解除されるまでの期間も容易に知ることができる。
【０１６６】
したがって、集積回路に含まれる複数の基本部品を確実にリセットすることができる集積回路の設計を容易に行うことができる。
【０１６７】
第５実施形態では、第１実施形態の集積回路２００を論理シミュレーション装置に適用する例について説明したが、たとえば、第２実施形態および第３実施形態の集積回路２００、３００、第４実施形態の複合集積回路５００を第５実施形態に適用してもよい。
【０１６８】
以上の実施形態に関し、更に以下の付記を開示する。
【０１６９】
（付記１）
演算ユニットと、
論理シミュレーションのプログラムを格納するメモリと、
を含み、
前記演算ユニットにより前記論理シミュレーションのプログラムを実行することにより、
複数の基本部品マクロを読み込み、
前記複数の基本部品マクロは、各々が基本部品の論理動作を規定する論理動作部を含み、前記基本部品の動作モデルとして所定のハードウェア記述言語により記述され、
前記基本部品は、
各々がリセット状態かリセット解除状態かを示す信号を出力するリセット出力端子を備え、少なくとも１つがリセット端子を備えると共に、前記リセット端子にリセット信号が入力されている場合にリセット状態となり、前記リセット信号の入力が停止された場合にリセット解除状態となるリセットフリップフロップである複数のフリップフロップと、
前記複数のフリップフロップのリセット出力端子の各々から出力された信号が入力されると共に、前記複数のフリップフロップのリセット出力端子の各々から出力された信号が前記リセット状態であることを示している場合にリセット状態信号を出力する出力部と、
を含み、
前記基本部品の間の接続情報を含むネットリストを読み込み、
前記ネットリストと前記複数の基本部品マクロとにもとづいて前記集積回路の論理モデルを構築し、
前記論理モデルを用いて、前記集積回路の論理シミュレーションを実行し、
前記論理シミュレーションの結果として入力データに応じた出力データを出力する、
論理シミュレーション装置。
【０１７０】
（付記２）
前記複数のフリップフロップの各々がリセットフリップフロップであり、
前記リセット信号出力部が前記リセットフリップフロップのリセット端子の各々に入力する前記リセット信号を出力する付記１記載の論理シミュレーション装置。
【０１７１】
（付記３）
前記複数のフリップフロップが、リセットフリップフロップと、リセット端子を備えない非リセットフリップフロップと、を含み、
前記リセット信号出力部が前記リセットフリップフロップのリセット端子の各々に入力する前記リセット信号を出力する付記１または付記２記載の論理シミュレーション装置。
【０１７２】
（付記４）
前記複数のフリップフロップが、前記リセット状態の場合に前記リセット出力端子から正信号を出力するフリップフロップと、前記リセット状態の場合に前記リセット出力端子から負信号を出力するフリップフロップとを含み、
前記正信号及び前記負信号のいずれか一方を反転させて前記出力部に入力する信号を同極性とする反転部を含み、
前記出力部は、入力された信号の各々が同極性の場合に前記リセット状態信号を出力する付記１〜３のいずれか１つに記載の論理シミュレーション装置。
【０１７３】
（付記５）
前記出力部は多入力論理積素子である、付記１〜４のいずれか１つに記載の論理シミュレーション装置。
【０１７４】
（付記６）
前記複数のフリップフロップはＤ−フリップフロップである、付記１〜５のいずれか１つに記載の論理シミュレーション装置。
【０１７５】
（付記７）
コンピュータに、
複数の基本部品マクロを読み込み、
前記複数の基本部品マクロは、各々が基本部品の論理動作を規定する論理動作部を含み、前記基本部品の動作モデルとして所定のハードウェア記述言語により記述され、
前記基本部品は、
各々がリセット状態かリセット解除状態かを示す信号を出力するリセット出力端子を備え、少なくとも１つがリセット端子を備えると共に、前記リセット端子にリセット信号が入力されている場合にリセット状態となり、前記リセット信号の入力が停止された場合にリセット解除状態となるリセットフリップフロップである複数のフリップフロップと、前記複数のフリップフロップのリセット出力端子の各々から出力された信号が入力されると共に、前記複数のフリップフロップのリセット出力端子の各々から出力された信号が前記リセット状態であることを示している場合にリセット状態信号を出力する出力部と、
を含み、
前記基本部品の間の接続情報を含むネットリストを読み込み、
前記ネットリストと前記複数の基本部品マクロとにもとづいて前記集積回路の論理モデルを構築し、
前記論理モデルを用いて、前記集積回路の論理シミュレーションを実行し、
前記論理シミュレーションの結果として入力データに応じた出力データを出力する、
ことを含む処理を実行させるための論理シミュレーションプログラム。
【０１７６】
（付記８）
前記複数のフリップフロップの各々がリセットフリップフロップであり、
前記リセット信号出力部が前記リセットフリップフロップのリセット端子の各々に入力する前記リセット信号を出力する付記７に記載の論理シミュレーションプログラム。
【０１７７】
（付記９）
前記複数のフリップフロップが、リセットフリップフロップと、リセット端子を備えない非リセットフリップフロップと、を含み、
前記リセット信号出力部が前記リセットフリップフロップのリセット端子の各々に入力する前記リセット信号を出力する付記７または付記８記載の論理シミュレーションプログラム。
【０１７８】
（付記１０）
前記複数のフリップフロップが、前記リセット状態の場合に前記リセット出力端子から正信号を出力するフリップフロップと、前記リセット状態の場合に前記リセット出力端子から負信号を出力するフリップフロップとを含み、
前記正信号及び前記負信号のいずれか一方を反転させて前記出力部に入力する信号を同極性とする反転部を含み、
前記出力部は、入力された信号の各々が同極性の場合に前記リセット状態信号を出力する付記７〜９のいずれか１つに記載の論理シミュレーションプログラム。
【０１７９】
（付記１１）
前記出力部は多入力論理積素子である、付記７〜１０のいずれか１つに記載の論理シミュレーションプログラム。
【０１８０】
（付記１２）
前記複数のフリップフロップはＤ−フリップフロップである、付記７〜１１のいずれか１つに記載の論理シミュレーションプログラム。
【０１８１】
（付記１３）
各々がリセット状態かリセット解除状態かを示す信号を出力するリセット出力端子を備え、少なくとも１つがリセット端子を備えると共に、前記リセット端子にリセット信号が入力されている場合に前記リセット状態となり、リセット信号の入力が停止された場合に前記リセット解除状態となるリセットフリップフロップである複数のフリップフロップと、
前記複数のフリップフロップのリセット出力端子の各々から出力された信号が入力されると共に、該複数のフリップフロップのリセット出力端子の各々から出力された信号が前記リセット状態であることを示している場合にリセット状態信号を出力する出力部と、
前記リセット端子に入力するリセット信号を出力すると共に、前記リセット信号を出力してから前記出力部が前記リセット状態信号を出力するまで前記リセット信号の出力を継続し、前記出力部が前記リセット状態信号を出力した場合に前記リセット信号の出力を停止するリセット信号出力部と、
を含む集積回路。
【０１８２】
（付記１４）
前記複数のフリップフロップの各々がリセットフリップフロップであり、
前記リセット信号出力部が前記リセットフリップフロップのリセット端子の各々に入力する前記リセット信号を出力する付記１３記載の集積回路。
【０１８３】
（付記１５）
前記複数のフリップフロップが、リセットフリップフロップと、リセット端子を備えない非リセットフリップフロップと、を含み、
前記リセット信号出力部が前記リセットフリップフロップのリセット端子の各々に入力する前記リセット信号を出力する付記１３記載の集積回路。
【０１８４】
（付記１６）
前記複数のフリップフロップが、リセット状態の場合に前記リセット出力端子から正信号を出力するフリップフロップと、リセット状態の場合に前記リセット出力端子から負信号を出力するフリップフロップとを含み、
前記正信号及び前記負信号のいずれか一方を反転させて前記出力部に入力する信号を同極性とする反転部を含み、
前記出力部は、入力された信号の各々が同極性の場合に前記リセット状態信号を出力する付記１３〜１５のいずれか１つに記載の集積回路。
【０１８５】
（付記１７）
前記出力部は多入力論理積素子である、付記１３〜１６のいずれか１つに記載の集積回路。
【０１８６】
（付記１８）
前記リセット信号出力部はイネーブル端子を有するフリップフロップであり、前記リセット信号を出力し、かつ、前記出力部がリセット状態信号を出力した場合に、前記イネーブル端子にイネーブル信号を入力し、前記リセット信号の出力を停止する、
付記１３〜１７のいずれか１つに記載の集積回路。
【０１８７】
（付記１９）
前記複数のフリップフロップはＤ−フリップフロップである、付記１３〜１８のいずれか１つに記載の集積回路。
【０１８８】
（付記２０）
相互に接続された複数の集積回路を備え、
前記複数の集積回路の各々は、
各々がリセット状態かリセット解除状態かを示す信号を出力するリセット出力端子を備え、少なくとも１つがリセット端子を備えると共に、前記リセット端子にリセット信号が入力されている場合に前記リセット状態となり、前記リセット信号の入力が停止された場合に前記リセット解除状態となるリセットフリップフロップである複数のフリップフロップと、
前記複数のフリップフロップのリセット出力端子の各々から出力された信号が入力されると共に、前記複数のフリップフロップのリセット出力端子の各々から出力された信号が前記リセット状態であることを示している場合にリセット状態信号を出力する出力部と、
前記リセット端子に入力するリセット信号を出力すると共に、前記リセット信号を出力してから前記出力部が前記リセット状態信号を出力し、かつ、当該集積回路がトランザクションを発行する集積回路である下位層集積回路がリセット解除信号を送信するまで、前記リセット信号の出力を継続し、前記出力部が前記リセット状態信号を出力し、かつ、前記リセット解除信号が送信された場合に、前記リセット信号の出力を停止するリセット信号出力部と、
を含む、
複合集積回路。
【０１８９】
（付記２１）
前記リセット信号出力部は、前記下位層集積回路が複数ある場合、前記下位層集積回路の各々がリセット解除信号を送信した場合に、前記リセット信号の出力を停止する、
付記２０記載の複合集積回路。
【０１９０】
（付記２２）
前記複数のフリップフロップの各々がリセットフリップフロップであり、
前記リセット信号出力部が前記リセットフリップフロップのリセット端子の各々に入力するリセット信号を出力する付記２０または付記２１記載の複合集積回路。
【０１９１】
（付記２３）
前記複数のフリップフロップが、リセットフリップフロップと、リセット端子を備えない非リセットフリップフロップと、を含み、
前記リセット信号出力部が前記リセットフリップフロップのリセット端子の各々に入力するリセット信号を出力する付記２０〜２２のいずれか１つに記載の複合集積回路。
【０１９２】
（付記２４）
前記複数のフリップフロップが、リセット状態の場合に前記リセット出力端子から正信号を出力するフリップフロップと、リセット状態の場合に前記リセット出力端子から負信号を出力するフリップフロップとを含み、
前記正信号及び前記負信号のいずれか一方を反転させて前記出力部に入力する信号を同極性とする反転部を含み、
前記出力部は、入力された信号の各々が同極性の場合に前記リセット状態信号を出力する付記２０〜２３のいずれか１つに記載の複合集積回路。
【０１９３】
（付記２５）
前記出力部は多入力論理積素子である、付記２０〜２４のいずれか１つに記載の複合集積回路。
【０１９４】
（付記２６）
前記リセット信号出力部はイネーブル端子を有するフリップフロップであり、前記リセット信号を出力し、前記出力部がリセット状態信号を出力し、かつ、前記リセット解除信号が送信された場合に、前記イネーブル端子にイネーブル信号を入力し、前記リセット信号の出力を停止する、
付記２０〜２５のいずれか１つに記載の複合集積回路。
【０１９５】
（付記２７）
前記複数のフリップフロップはＤ−フリップフロップである、付記２０〜２６のいずれか１つに記載の複合集積回路。
【符号の説明】
【０１９６】
１２０、１２５  フリップフロップ
２２５  反転素子
２４０  フリップフロップ
２３０  多入力論理積素子
２００、３００、４００  集積回路
５００  複合集積回路
６００  論理シミュレーション装置
７１０  テストベンチ
７７０  ログ記録部
７１２０  フリップフロップ
７２３０  多入力論理積素子
【図１】
2014146108.tif 000003
【図２】
2014146108.tif 000004
【図３Ａ】
2014146108.tif 000005
【図３Ｂ】
2014146108.tif 000006
【図４Ａ】
2014146108.tif 000007
【図４Ｂ】
2014146108.tif 000008
【図５】
2014146108.tif 000009
【図６】
2014146108.tif 000010
【図７】
2014146108.tif 000011
【図８】
2014146108.tif 000012
【図９】
2014146108.tif 000013
【図１０】
2014146108.tif 000014
【図１１】
2014146108.tif 000015
【図１２】
2014146108.tif 000016