(57)【特許請求の範囲】
【請求項１】
データ信号及び継続して変化するクロック信号を入力し、前記クロック信号の立ち下がりエッジに前記データ信号の反転タイミングが同期するように前記クロック信号に応じて前記データ信号を遅延させることによって第１のゲート信号を生成する手段と、
前記クロック信号と前記第１のゲート信号とを入力し、前記クロック信号に応じて前記第１のゲート信号を遅延させることによって前記第１のゲート信号に対して前記クロック信号の半周期分だけ位相がずれた第２のゲート信号を生成する手段と、
論理積ゲートからなり、前記第１のゲート信号及び前記第２のゲート信号に基づいて前記クロック信号の出力をＯＮ／ＯＦＦ制御する手段と、
を備えることを特徴とするゲーティッドクロック生成回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、クロック信号をＯＮ／ＯＦＦ制御して出力するゲーティッドクロック生成回路に関するものである。
【０００２】
【従来の技術】
クロック同期の半導体集積回路（以下、「クロック同期回路」という）において、クロック信号が供給されるフリップフロップ間のクロック信号の遅延時間差（以下、「スキュー」という）が大きい場合、不動または誤動作などの不具合が発生する。このため、クロック同期回路は一般に同期設計されている。
【０００３】
同期設計とは、外部から入力されたクロック信号を回路内で分周、ＯＮ／ＯＦＦ制御、又は反転を行わずに、直接フリップフロップのクロック入力端子に入力し、尚かつ、クロック信号のスキューを最小にするように回路素子の配置や回路素子間の配線（以下、配置配線という）を行う設計のことである。
【０００４】
しかし、クロック同期回路では全てのフリップフロップに常にクロック信号が入力され、フリップフロップの消費電力が増大する。したがって、クロック同期回路全体の消費電力も増大する。
【０００５】
クロック同期回路の消費電力を削減する効果的な方法として、ゲーティッドクロック生成回路を設け、任意の条件において動作する必要のないフリップフロップのクロック入力端子にはゲーティッドクロック生成回路が出力するゲーティッドクロック信号を供給する方法が提案されている。
【０００６】
そして、従来のゲーティッドクロック生成回路としては、例えば図１４又は図１６のような構成の回路が挙げられる。
【０００７】
まず、図１４のゲーティッドクロック生成回路について説明する。クロック信号ＣＬＫ１が入力される入力端子１は、バッファ・ゲートＢＵＦ１を介してバッファ・ゲートＢＵＦ２の入力端子およびバッファ・ゲートＢＵＦ３の入力端子に接続される。
【０００８】
バッファ・ゲートＢＵＦ２の出力端子は、フリップフロップＦＦ１のクロック入力端子に接続される。また、バッファ・ゲートＢＵＦ３の出力端子は、ＡＮＤゲートＡＮ１の第２入力端子に接続される。
【０００９】
データ信号Ｄａｔａ１が入力される入力端子２が、フリップフロップＦＦ１のデータ入力端子に接続される。また、フリップフロップＦＦ１の出力端子がＡＮＤゲートＡＮ１の第１入力端子に接続される。そして、ＡＮＤゲートＡＮ１の出力端子がゲーティッドクロック信号ＧＣＬＫ１を出力する出力端子３に接続される。
【００１０】
このような構成のゲーティッドクロック生成回路の動作について図１４の回路構成図及び図１５のタイミングチャートを参照して説明する。入力端子１に入力されたクロック信号ＣＬＫ１は、バッファ・ゲートＢＵＦ１及びＢＵＦ２を介してフリップフロップＦＦ１のクロック入力端子に到達する。また、入力端子２に入力されたデータ信号Ｄａｔａ１は、フリップフロップＦＦ１のデータ入力端子に到達する。そうすると、フリップフロップＦＦ１の出力端子からＡＮＤゲートＡＮ１の第１入力端子に送出されるゲート信号Ｇａｔｅ１は、図１５（ａ）に示すようなデータ信号Ｄａｔａ１の反転タイミングがクロック信号ＣＬＫ１の立ち上がりエッジまで遅延した波形の信号となる。
【００１１】
一方、入力端子１に入力されたクロック信号ＣＬＫ１は、ＡＮＤゲートＡＮ１の第２入力端子にも到達する。ＡＮＤゲートＡＮ１は、ゲート信号Ｇａｔｅ１とクロック信号ＣＬＫ１との論理積であるゲーティッドクロック信号ＧＣＬＫ１を出力端子３に送出する。
【００１２】
したがって、クロック信号が必要な期間をデータ信号によって入力することにより、その必要な期間のみクロック信号がゲーティッドクロック信号ＧＣＬＫ１として出力されることになる。
【００１３】
次に、図１６のゲーティッドクロック生成回路について説明する。クロック信号ＣＬＫ２が入力される入力端子４は、インバータＩＮＶ２の入力端子およびバッファ・ゲートＢＵＦ５の入力端子に接続される。
【００１４】
インバータＩＮＶ２の出力端子は、バッファ・ゲートＢＵＦ４を介してフリップフロップＦＦ３のクロック入力端子に接続される。また、バッファ・ゲートＢＵＦ５の出力端子は、ＡＮＤゲートＡＮ３の第２入力端子に接続される。
【００１５】
そして、データ信号Ｄａｔａ２が入力される入力端子５が、フリップフロップＦＦ３のデータ入力端子に接続される。また、フリップフロップＦＦ３の出力端子がＡＮＤゲートＡＮ３の第１入力端子に接続される。また、ＡＮＤゲートＡＮ３の出力端子がゲーティッドクロック信号ＧＣＬＫ２を出力する出力端子６に接続される。
【００１６】
このような構成のゲーティッドクロック生成回路の動作について図１６の回路構成図及び図１７のタイミングチャートを参照して説明する。入力端子４に入力されたクロック信号ＣＬＫ２は、インバータＩＮＶ２で反転されたのち、バッファ・ゲートＢＵＦ４を介してフリップフロップＦＦ３のクロック入力端子に到達する。また、入力端子５に入力されたデータ信号Ｄａｔａ２は、フリップフロップＦＦ３のデータ入力端子に到達する。そうすると、フリップフロップＦＦ３の出力端子からＡＮＤゲートＡＮ３の第１入力端子に送出されるゲート信号Ｇａｔｅ３は、図１７（ａ）に示すようにデータ信号Ｄａｔａ２の反転タイミングがクロック信号ＣＬＫ２の立ち下がりエッジまで遅延した波形の信号となる。
【００１７】
一方、入力端子４に入力されたクロック信号ＣＬＫ２は、バッファ・ゲートＢＵＦ５を介してＡＮＤゲートＡＮ３の第２入力端子にも到達する。ＡＮＤゲートＡＮ３は、ゲート信号Ｇａｔｅ３とクロック信号ＣＬＫ２との論理積であるゲーティッドクロック信号ＧＣＬＫ２を出力端子６に送出する。
【００１８】
したがって、クロック信号が必要な期間をデータ信号によって入力することにより、その必要な期間のみクロック信号がゲーティッドクロック信号ＧＣＬＫ２として出力されることになる。
【００１９】
【発明が解決しようとする課題】
しかしながら、配置配線によって信号遅延時間が異なるため、ゲーティッドクロック信号を出力するＡＮＤゲートの第１入力端子に到達するゲート信号のエッジとゲーティッドクロック信号を出力するＡＮＤゲートの第２入力端子に到達するクロック信号のエッジとが図１５（ａ）や図１７（ａ）に示したように一致するとは限らない。
【００２０】
例えば、図１４のゲーティッドクロック生成回路において、クロック信号ＣＬＫ１がゲート信号Ｇａｔｅ１より早くＡＮＤゲートＡＮ１に到達したとすると、図１５（ｂ）に示すようにゲート信号Ｇａｔｅ１の反転タイミング近傍でクロック信号ＣＬＫ１およびゲート信号Ｇａｔｅ１がともにＨｉｇｈである期間ｔ１ができてしまう。そのため、期間ｔ１においてゲーティッドクロック信号ＧＣＬＫ１にグリッジが発生することになる。逆に、ゲート信号Ｇａｔｅ１がクロック信号ＣＬＫ１より早くＡＮＤゲートＡＮ１に到達すると、図１５（ｃ）に示すようにゲート信号Ｇａｔｅ１の反転タイミング近傍でクロック信号ＣＬＫ１およびゲート信号Ｇａｔｅ１がともにＨｉｇｈである期間がないので、ゲーティッドクロック信号ＧＣＬＫ１にグリッジが発生することはない。
【００２１】
また、図１６のゲーティッドクロック生成回路において、ゲート信号Ｇａｔｅ３がクロック信号ＣＬＫ２より早くＡＮＤゲートＡＮ３に到達したとすると、図１７（ｃ）に示すようにゲート信号Ｇａｔｅ３の反転タイミング近傍でクロック信号ＣＬＫ２およびゲート信号Ｇａｔｅ３がともにＨｉｇｈである期間ｔ２ができてしまう。そのため、期間ｔ２においてゲーティッドクロック信号ＧＣＬＫ２にグリッジが発生することになる。逆に、クロック信号ＣＬＫ２がゲート信号Ｇａｔｅ３より早くＡＮＤゲートＡＮ３に到達すると、図１７（ｂ）に示すようにゲート信号Ｇａｔｅ３の反転タイミング近傍でクロック信号ＣＬＫ２およびゲート信号Ｇａｔｅ３がともにＨｉｇｈである期間がないので、ゲーティッドクロック信号ＧＣＬＫ２にグリッジが発生することはない。
【００２２】
ゲーティッドクロック信号にグリッジが発生すると、ゲーティッドクロック信号を入力する回路が誤動作するおそれがある。そのため、クロック同期回路では配置配線を行った後、クロック信号とゲート信号についてゲーティッドクロック信号を出力するＡＮＤゲートまでの遅延時間を確認していた。そして、ゲーティッドクロック信号にグリッジが発生する場合には、クロック信号及びゲート信号の遅延時間を調整するために冗長な回路を挿入するなどして配置配線をやり直したり、再設計を行ったりしていた。
【００２３】
本発明は、上記の問題点に鑑み、グリッジが発生しないゲーティッドクロック生成回路を提供することを目的とする。
【００２４】
【課題を解決するための手段】
上記目的を達成するために、本発明に係るゲーティッドクロック生成回路においては、データ信号及び継続して変化するクロック信号を入力し、前記クロック信号の立ち下がりエッジに前記データ信号の反転タイミングが同期するように前記クロック信号に応じて前記データ信号を遅延させることによって第１のゲート信号を生成する手段と、前記クロック信号と前記第１のゲート信号とを入力し、前記クロック信号に応じて前記第１のゲート信号を遅延させることによって前記第１のゲート信号に対して前記クロック信号の半周期分だけ位相がずれた第２のゲート信号を生成する手段と、論理積ゲートからなり、前記第１のゲート信号及び前記第２のゲート信号に基づいて前記クロック信号の出力をＯＮ／ＯＦＦ制御する手段と、を備えるようにする。
【００２５】
また、従来のゲーティッドクロック生成回路を備えたクロック同期回路を設計したのち従来のゲーティッドクロック生成回路を上記構成のゲーティッドクロック生成回路に修正する方法としては、継続して変化するクロック信号の立ち上がりエッジにデータ信号の反転タイミングが同期するように前記クロック信号に応じて前記データ信号を遅延させることによって生成される第１のゲート信号に基づいて前記クロック信号の出力をＯＮ／ＯＦＦ制御するゲーティッドクロック生成回路を備えたクロック同期回路の回路図情報又はネットリストに対して前記クロック信号を反転させるインバータを追加するステップと、前記第１のゲート信号を生成しているフリップフロップを前記回路図情報又はネットリストから検索するステップと、前記第１のゲート信号を生成しているフリップフロップのデータ入力とデータ入力を同一にし且つ前記インバータが出力する信号をクロック入力とするフリップフロップを前記回路図情報又はネットリストに追加するステップと、追加したフリップフロップが出力する信号と修正前のゲーティッドクロック生成回路が出力していた信号との論理積を出力するＡＮＤゲートを前記回路図情報又はネットリストに追加するステップと、追加したＡＮＤゲートが出力する信号を修正後のゲーティッドクロック生成回路の出力信号とするステップと、を有する方法がある。
【００２６】
また、上記方法をコンピュータに実行させるプログラムとしては、継続して変化するクロック信号の立ち上がりエッジにデータ信号の反転タイミングが同期するように前記クロック信号に応じて前記データ信号を遅延させることによって生成される第１のゲート信号に基づいて前記クロック信号の出力をＯＮ／ＯＦＦ制御するゲーティッドクロック生成回路を備えたクロック同期回路の回路図情報又はネットリストを入力するステップと、前記回路図情報又はネットリストに対して前記クロック信号を反転させるインバータを追加するステップと、前記第１のゲート信号を生成しているフリップフロップを前記回路図情報又はネットリストから検索するステップと、前記第１のゲート信号を生成しているフリップフロップのデータ入力とデータ入力を同一にし且つ前記インバータが出力する信号をクロック入力とするフリップフロップを前記回路図情報又はネットリストに追加するステップと、追加したフリップフロップが出力する信号と修正前のゲーティッドクロック生成回路が出力していた信号との論理積を出力するＡＮＤゲートを前記回路図情報又はネットリストに追加するステップと、追加したＡＮＤゲートが出力する信号を修正後のゲーティッドクロック生成回路の出力信号とするステップと、をコンピュータに実行させるためのプログラムがある。
【００２７】
また、従来のゲーティッドクロック生成回路を備えたクロック同期回路を設計したのち従来のゲーティッドクロック生成回路を上記構成のゲーティッドクロック生成回路に修正する方法としては、継続して変化するクロック信号の立ち下がりエッジにデータ信号の反転タイミングが同期するように前記クロック信号に応じて前記データ信号を遅延させることによって生成される第１のゲート信号に基づいて前記クロック信号の出力をＯＮ／ＯＦＦ制御するゲーティッドクロック生成回路を備えたクロック同期回路の回路図情報又はネットリストから前記第１のゲート信号を生成しているフリップフロップを検索するステップと、前記第１のゲート信号を生成しているフリップフロップが出力する信号をデータ入力とし且つ前記クロック信号をクロック入力とするフリップフロップを前記回路図情報又はネットリストに追加するステップと、追加したフリップフロップの出力信号と修正前のゲーティッドクロック生成回路の出力信号との論理積を出力するＡＮＤゲートを前記回路図情報又はネットリストに追加するステップと、追加したＡＮＤゲートの出力信号を修正後のゲーティッドクロック生成回路の出力信号とするステップと、を有する方法がある。
【００２８】
また、上記方法をコンピュータに実行させるプログラムとしては、継続して変化するクロック信号の立ち下がりエッジにデータ信号の反転タイミングが同期するように前記クロック信号に応じて前記データ信号を遅延させることによって生成される第１のゲート信号に基づいて前記クロック信号の出力をＯＮ／ＯＦＦ制御するゲーティッドクロック生成回路を備えたクロック同期回路の回路図情報又はネットリストを入力するステップと、前記回路図情報又はネットリストから前記第１のゲート信号を生成しているフリップフロップを検索するステップと、前記第１のゲート信号を生成しているフリップフロップが出力する信号をデータ入力とし且つ前記クロック信号をクロック入力とするフリップフロップを前記回路図情報又はネットリストに追加するステップと、追加したフリップフロップの出力信号と修正前のゲーティッドクロック生成回路の出力信号との論理積を出力するＡＮＤゲートを前記回路図情報又はネットリストに追加するステップと、追加したＡＮＤゲートの出力信号を修正後のゲーティッドクロック生成回路の出力信号とするステップと、をコンピュータに実行させるためのプログラムがある。
【００２９】
また、従来のゲーティッドクロック生成回路を備えたクロック同期回路を表現するハードウェア記述言語による記述において、従来のゲーティッドクロック生成回路を表現するハードウェア記述言語による記述を上記構成のゲーティッドクロック生成回路を表現するハードウェア記述言語による記述に修正する方法としては、継続して変化するクロック信号の立ち上がりエッジにデータ信号の反転タイミングが同期するように前記クロック信号に応じて前記データ信号を遅延させることによって生成される第１のゲート信号に基づいて前記クロック信号の出力をＯＮ／ＯＦＦ制御するゲーティッドクロック生成回路を備えたクロック同期回路を表現する論理合成前のハードウェア記述言語による記述に対して前記クロック信号を反転させるインバータを表現するハードウェア記述言語による記述を追加するステップと、前記第１のゲート信号を生成しているフリップフロップを表現する記述を前記クロック同期回路を表現する論理合成前のハードウェア記述言語による記述から検索するステップと、前記第１のゲート信号を生成しているフリップフロップのデータ入力とデータ入力を同一にし且つ前記インバータが出力する信号をクロック入力とするフリップフロップを表現するハードウェア記述言語による記述を前記クロック同期回路を表現する論理合成前のハードウェア記述言語による記述に追加するステップと、追加したフリップフロップが出力する信号と修正前のゲーティッドクロック生成回路が出力していた信号との論理積を出力するＡＮＤゲートを表現するハードウェア記述言語による記述を前記クロック同期回路を表現する論理合成前のハードウェア記述言語による記述に追加するステップと、追加したＡＮＤゲートが出力する信号を修正後のゲーティッドクロック生成回路の出力信号とするように前記クロック同期回路を表現する論理合成前のハードウェア記述言語による記述を書き換えるステップと、を有する方法がある。
【００３０】
また、上記方法をコンピュータに実行させるプログラムとしては、継続して変化するクロック信号の立ち上がりエッジにデータ信号の反転タイミングが同期するように前記クロック信号に応じて前記データ信号を遅延させることによって生成される第１のゲート信号に基づいて前記クロック信号の出力をＯＮ／ＯＦＦ制御するゲーティッドクロック生成回路を備えたクロック同期回路を表現する論理合成前のハードウェア記述言語による記述を入力するステップと、前記クロック同期回路を表現する論理合成前のハードウェア記述言語による記述に対して前記クロック信号を反転させるインバータを表現するハードウェア記述言語による記述を追加するステップと、前記第１のゲート信号を生成しているフリップフロップを表現する記述を前記クロック同期回路を表現する論理合成前のハードウェア記述言語による記述から検索するステップと、前記第１のゲート信号を生成しているフリップフロップのデータ入力とデータ入力を同一にし且つ前記インバータが出力する信号をクロック入力とするフリップフロップを表現するハードウェア記述言語による記述を前記クロック同期回路を表現する論理合成前のハードウェア記述言語による記述に追加するステップと、追加したフリップフロップが出力する信号と修正前のゲーティッドクロック生成回路が出力していた信号との論理積を出力するＡＮＤゲートを表現するハードウェア記述言語による記述を前記クロック同期回路を表現する論理合成前のハードウェア記述言語による記述に追加するステップと、追加したＡＮＤゲートが出力する信号を修正後のゲーティッドクロック生成回路の出力信号とするように前記クロック同期回路を表現する論理合成前のハードウェア記述言語による記述を書き換えるステップと、をコンピュータに実行させるためのプログラムがある。
【００３１】
また、従来のゲーティッドクロック生成回路を備えたクロック同期回路を表現するハードウェア記述言語による記述において、従来のゲーティッドクロック生成回路を表現するハードウェア記述言語による記述を上記構成のゲーティッドクロック生成回路を表現するハードウェア記述言語による記述に修正する方法としては、継続して変化するクロック信号の立ち下がりエッジにデータ信号の反転タイミングが同期するように前記クロック信号に応じて前記データ信号を遅延させることによって生成される第１のゲート信号に基づいて前記クロック信号の出力をＯＮ／ＯＦＦ制御するゲーティッドクロック生成回路を備えたクロック同期回路を表現する論理合成前のハードウェア記述言語による記述から前記第１のゲート信号を生成しているフリップフロップを表現する記述を検索するステップと、前記第１のゲート信号を生成しているフリップフロップが出力する信号をデータ入力とし且つ前記クロック信号をクロック入力とするフリップフロップを表現するハードウェア記述言語による記述を前記クロック同期回路を表現する論理合成前のハードウェア記述言語による記述に追加するステップと、追加したフリップフロップが出力する信号と修正前のゲーティッドクロック生成回路が出力していた信号との論理積を出力するＡＮＤゲートを表現するハードウェア記述言語による記述を前記クロック同期回路を表現する論理合成前のハードウェア記述言語による記述に追加するステップと、追加したＡＮＤゲートが出力する信号を修正後のゲーティッドクロック生成回路の出力信号とするように前記クロック同期回路を表現する論理合成前のハードウェア記述言語による記述を書き換えるステップと、を有する方法がある。
【００３２】
また、上記方法をコンピュータに実行させるプログラムとしては、継続して変化するクロック信号の立ち下がりエッジにデータ信号の反転タイミングが同期するように前記クロック信号に応じて前記データ信号を遅延させることによって生成される第１のゲート信号に基づいて前記クロック信号の出力をＯＮ／ＯＦＦ制御するゲーティッドクロック生成回路を備えたクロック同期回路を表現する論理合成前のハードウェア記述言語による記述から前記第１のゲート信号を生成しているフリップフロップを表現する記述を検索するステップと、前記第１のゲート信号を生成しているフリップフロップが出力する信号をデータ入力とし且つ前記クロック信号をクロック入力とするフリップフロップを表現するハードウェア記述言語による記述を前記クロック同期回路を表現する論理合成前のハードウェア記述言語による記述に追加するステップと、追加したフリップフロップが出力する信号と修正前のゲーティッドクロック生成回路が出力していた信号との論理積を出力するＡＮＤゲートを表現するハードウェア記述言語による記述を前記クロック同期回路を表現する論理合成前のハードウェア記述言語による記述に追加するステップと、追加したＡＮＤゲートが出力する信号を修正後のゲーティッドクロック生成回路の出力信号とするように前記クロック同期回路を表現する論理合成前のハードウェア記述言語による記述を書き換えるステップと、をコンピュータに実行させるためのプログラムがある。
【００３３】
【発明の実施の形態】
本発明の一実施形態について図面を参照して説明する。本発明に係る第一実施形態のゲーティッドクロック生成回路の構成を図１に示す。尚、図１４と同一の部分には同一の符号を付す。
【００３４】
クロック信号ＣＬＫ１が入力される入力端子１は、バッファ・ゲートＢＵＦ１を介して、バッファ・ゲートＢＵＦ２の入力端子、バッファ・ゲートＢＵＦ３の入力端子、およびインバータＩＮＶ１の入力端子にそれぞれ接続される。
【００３５】
バッファ・ゲートＢＵＦ２の出力端子は、フリップフロップＦＦ１のクロック入力端子に接続される。また、バッファ・ゲートＢＵＦ３の出力端子は、ＡＮＤゲートＡＮ１の第２入力端子に接続される。また、インバータＩＮＶ１の出力端子は、フリップフロップＦＦ２のクロック入力端子に接続される。
【００３６】
データ信号Ｄａｔａ１が入力される入力端子２が、フリップフロップＦＦ１のデータ入力端子およびフリップフロップＦＦ２のデータ入力端子に接続される。
また、フリップフロップＦＦ１の出力端子がＡＮＤゲートＡＮ１の第１入力端子に接続される。また、ＡＮＤゲートＡＮ１の出力端子がＡＮＤゲートＡＮ２の第１入力端子に接続される。また、フリップフロップＦＦ２の出力端子がＡＮＤゲートＡＮ２の第２入力端子に接続される。そして、ＡＮＤゲートＡＮ２の出力端子がゲーティッドクロック信号ＧＣＬＫ１を出力する出力端子３に接続される。
【００３７】
このような構成のゲーティッドクロック生成回路の動作について図１の回路構成図及び図３のタイミングチャート図を参照して説明する。尚、図１のゲーティッドクロック生成回路に入力するクロック信号ＣＬＫ１およびデータ信号Ｄａｔａ１の波形は、図１５（ａ）と同一の信号波形とする。
【００３８】
入力端子１に入力されたクロック信号ＣＬＫ１は、バッファ・ゲートＢＵＦ１及びＢＵＦ２を介してフリップフロップＦＦ１のクロック入力端子に到達する。
また、入力端子２に入力されたデータ信号Ｄａｔａ１は、フリップフロップＦＦ１のデータ入力端子に到達する。そうすると、フリップフロップＦＦ１の出力端子からＡＮＤゲートＡＮ１の第１入力端子に送出されるゲート信号Ｇａｔｅ１は、図３に示すようなデータ信号Ｄａｔａ１の反転タイミングがクロック信号ＣＬＫ１の立ち上がりエッジまで遅延した波形の信号となる。
【００３９】
一方、入力端子１に入力されたクロック信号ＣＬＫ１は、バッファ・ゲートＢＵＦ３を介してＡＮＤゲートＡＮ１の第２入力端子にも到達する。ＡＮＤゲートＡＮ１は、ゲート信号Ｇａｔｅ１とクロック信号ＣＬＫ１との論理積である信号をＡＮＤゲートＡＮ２の第１入力端子に送出する。
【００４０】
そして、入力端子１に入力されたクロック信号ＣＬＫ１は、バッファ・ゲートＢＵＦ１及びインバータＩＮＶ１を介してフリップフロップＦＦ２のクロック入力端子に到達する。また、入力端子２に入力されたデータ信号Ｄａｔａ１は、フリップフロップＦＦ２のデータ入力端子に到達する。そうすると、フリップフロップＦＦ２の出力端子からＡＮＤゲートＡＮ２の第２入力端子に送出されるゲート信号Ｇａｔｅ２は、図３に示すようなデータ信号Ｄａｔａ１の反転タイミングがクロック信号ＣＬＫ１の立ち下がりエッジまで遅延した波形の信号となる。
【００４１】
フリップフロップＦＦ１のデータ入力端子に入力されるデータ信号Ｄａｔａ１は、図１のゲーティッドクロック生成回路を備えたクロック同期回路のいずれかの部分で生成されている。クロック同期回路では回路全体が同期設計されているため、データ信号Ｄａｔａ１はクロック信号ＣＬＫ１の立ち上がりで変化する信号から生成された信号である。このため、フリップフロップＦＦ２が出力するゲート信号Ｇａｔｅ２は、フリップフロップＦＦ１が出力するゲート信号Ｇａｔｅ１よりクロック信号ＣＬＫ１の半周期だけ進んだ信号となる。
【００４２】
上述したように、ＡＮＤゲートＡＮ２の第１入力端子にはゲート信号Ｇａｔｅ１とクロック信号ＣＬＫ１との論理積である信号が入力され、ＡＮＤゲートＡＮ２の第２入力端子にはゲート信号Ｇａｔｅ２が入力されるので、ＡＮＤゲートＡＮ２はゲート信号Ｇａｔｅ１とゲート信号Ｇａｔｅ２とクロック信号ＣＬＫ１との論理積であるゲーティッドクロック信号ＧＣＬＫ１を出力端子３に送出する。
尚、ゲート信号Ｇａｔｅ１およびゲーティッドクロック信号ＧＣＬＫ１の波形は図１５（ａ）と同一である。
【００４３】
したがって、クロック信号が必要な期間をデータ信号によって入力することにより、その必要な期間のみクロック信号がゲーティッドクロック信号ＧＣＬＫ１として出力されることになる。
【００４４】
さらに、図１のゲーティッドクロック生成回路ではグリッジが発生しないことを説明する。図３中に示した期間Ｔ１、期間Ｔ２、期間Ｔ３の間のＡＮＤゲートＡＮ１の入力信号並びにＡＮＤゲートＡＮ２の入力信号及び出力信号の遷移の様子を図４に示す。また、図３中に示した期間Ｔ４、期間Ｔ５、期間Ｔ６の間のＡＮＤゲートＡＮ１の入力信号並びにＡＮＤゲートＡＮ２の入力信号及び出力信号の遷移の様子を図５に示す。尚、図４及び図５において、各丸印の中には左から順にクロック信号ＣＬＫ１の論理状態、ゲート信号Ｇａｔｅ１の論理状態、ゲート信号Ｇａｔｅ２の論理状態を示し、「／」記号の右側にＡＮＤゲートＡＮ２の出力状態、すなわちゲーティッドクロック信号ＧＣＬＫ１の論理状態を示すものとする。
【００４５】
まず、図４について説明する。期間Ｔ１では、「１００／０」の状態である。
期間Ｔ１から期間Ｔ２へ遷移するとき、クロック信号ＣＬＫ１とゲート信号Ｇａｔｅ２の２つの信号が反転し、「００１／０」の状態に遷移しようとする。このとき、ゲーティッドクロック生成回路の配置配線により、２通りの遷移が考えられる。すなわち、クロック信号ＣＬＫ１がゲート信号Ｇａｔｅ２より先に反転する場合は「１００／０」→「０００／０」→「００１／０」と遷移し、ゲート信号Ｇａｔｅ２がクロック信号ＣＬＫ１より先に反転する場合は「１００／０」→「１０１／０」→「００１／０」と遷移する。
【００４６】
これら２通りの遷移のどちらを経由してもゲーティッドクロック信号ＧＣＬＫ１の論理状態は０のままであるので、期間Ｔ１から期間Ｔ２へ遷移するときにゲーティッドクロック信号ＧＣＬＫ１にはグリッジが発生しないことが分かる。
【００４７】
また、期間Ｔ２では「００１／０」の状態である。期間Ｔ２から期間Ｔ３へ遷移するとき、クロック信号ＣＬＫ１とゲート信号Ｇａｔｅ１の２つの信号が反転し、「１１１／１」の状態に遷移しようとする。このとき、ゲーティッドクロック生成回路の配置配線により、２通りの遷移が考えられる。すなわち、クロック信号ＣＬＫ１がゲート信号Ｇａｔｅ１より先に反転する場合は「００１／０」→「１０１／０」→「１１１／１」と遷移し、ゲート信号Ｇａｔｅ１がクロック信号ＣＬＫ１より先に反転する場合は「００１／０」→「０１１／０」→「１１１／１」と遷移する。
【００４８】
これら２通りの遷移のどちらを経由しても区間Ｔ３になるまでゲーティッドクロック信号ＧＣＬＫ１の論理状態は０から１へ一度のみ変化するので、期間Ｔ２から期間Ｔ３へ遷移するときにゲーティッドクロック信号ＧＣＬＫ１にはグリッジが発生しないことが分かる。
【００４９】
次に、図５について説明する。期間Ｔ４では、「１１１／１」の状態である。
期間Ｔ４から期間Ｔ５へ遷移するとき、クロック信号ＣＬＫ１とゲート信号Ｇａｔｅ２の２つの信号が反転し、「０１０／０」の状態に遷移しようとする。このとき、ゲーティッドクロック生成回路の配置配線により、２通りの遷移が考えられる。すなわち、クロック信号ＣＬＫ１がゲート信号Ｇａｔｅ２より先に反転する場合は「１１１／１」→「０１１／０」→「０１０／０」と遷移し、ゲート信号Ｇａｔｅ２がクロック信号ＣＬＫ１より先に反転する場合は「１１１／１」→「１１０／０」→「０１０／０」と遷移する。
【００５０】
これら２通りの遷移のどちらを経由してもゲーティッドクロック信号ＧＣＬＫ１の論理状態は一旦１から０に変化するとその後は０のままであるので、期間Ｔ４から期間Ｔ５へ遷移するときにゲーティッドクロック信号ＧＣＬＫ１にはグリッジが発生しないことが分かる。
【００５１】
また、期間Ｔ５では、「０１０／０」の状態である。期間Ｔ５から期間Ｔ６へ遷移するとき、クロック信号ＣＬＫ１とゲート信号Ｇａｔｅ１の２つの信号が反転し、「１００／０」の状態に遷移しようとする。このとき、ゲーティッドクロック生成回路の配置配線により、２通りの遷移が考えられる。すなわち、クロック信号ＣＬＫ１がゲート信号Ｇａｔｅ１より先に反転する場合は「０１０／０」→「１１０／０」→「１００／０」と遷移し、ゲート信号Ｇａｔｅ１がクロック信号ＣＬＫ１より先に反転する場合は「０１０／０」→「０００／０」→「１００／０」と遷移する。
【００５２】
これら２通りの遷移のどちらを経由してもゲーティッドクロック信号ＧＣＬＫ１の論理状態は０のままであるので、期間Ｔ５から期間Ｔ６へ遷移するときにゲーティッドクロック信号ＧＣＬＫ１にはグリッジが発生しないことが分かる。
【００５３】
このように図１のゲーティッドクロック生成回路ではグリッジが発生しないので、図１のゲーティッドクロック生成回路が出力するゲーティッドクロック信号を入力する回路の誤作動を防ぐことができる。
【００５４】
次に、本発明に係る第二実施形態のゲーティッドクロック生成回路の構成を図２に示す。尚、図１６と同一の部分には同一の符号を付す。
【００５５】
クロック信号ＣＬＫ２が入力される入力端子４は、インバータＩＮＶ２の入力端子およびバッファ・ゲートＢＵＦ５の入力端子に接続される。
【００５６】
インバータＩＮＶ２の出力端子は、バッファ・ゲートＢＵＦ４の入力端子およびインバータＩＮＶ３の入力端子に接続される。また、バッファ・ゲートＢＵＦ５の出力端子は、ＡＮＤゲートＡＮ３の第２入力端子に接続される。
【００５７】
バッファ・ゲートＢＵＦ４の出力端子は、フリップフロップＦＦ３のクロック入力端子に接続される。また、インバータＩＮＶ３の出力端子は、フリップフロップＦＦ４のクロック入力端子に接続される。
【００５８】
そして、データ信号Ｄａｔａ２が入力される入力端子５が、フリップフロップＦＦ３のデータ入力端子に接続される。また、フリップフロップＦＦ３の出力端子がＡＮＤゲートＡＮ３の第１入力端子およびフリップフロップＦＦ４のデータ入力端子に接続される。また、ＡＮＤゲートＡＮ３の出力端子がＡＮＤゲートＡＮ４の第１入力端子に接続される。また、フリップフロップＦＦ４の出力端子がＡＮＤゲートＡＮ４の第２入力端子に接続される。そして、ＡＮＤゲートＡＮ４の出力端子がゲーティッドクロック信号ＧＣＬＫ２を出力する出力端子６に接続される。
【００５９】
このような構成のゲーティッドクロック生成回路の動作について図２の回路構成図及び図６のタイミングチャートを参照して説明する。入力端子４に入力されたクロック信号ＣＬＫ２は、インバータＩＮＶ２で反転されたのち、バッファ・ゲートＢＵＦ４を介してフリップフロップＦＦ３のクロック入力端子に到達する。また、入力端子５に入力されたデータ信号Ｄａｔａ２は、フリップフロップＦＦ３のデータ入力端子に到達する。そうすると、フリップフロップＦＦ３の出力端子からＡＮＤゲートＡＮ３の第１入力端子に送出されるゲート信号Ｇａｔｅ３は、図６に示すようにデータ信号Ｄａｔａ２の反転タイミングがクロック信号ＣＬＫ２の立ち下がりエッジまで遅延した波形の信号となる。
【００６０】
一方、入力端子４に入力されたクロック信号ＣＬＫ２は、バッファ・ゲートＢＵＦ５を介してＡＮＤゲートＡＮ３の第２入力端子にも到達する。ＡＮＤゲートＡＮ３は、ゲート信号Ｇａｔｅ３とクロック信号ＣＬＫ２との論理積である信号をＡＮＤゲートＡＮ４の第１入力端子に送出する。
【００６１】
そして、入力端子４に入力されたクロック信号ＣＬＫ２は、インバータＩＮＶ２及びＩＮＶ３を介してフリップフロップＦＦ４のクロック入力端子に到達する。また、フリップフロップＦＦ３の出力端子から出力されるゲート信号Ｇａｔｅ３がフリップフロップＦＦ４のデータ入力端子に到達する。そうすると、フリップフロップＦＦ４の出力端子からＡＮＤゲートＡＮ４の第２入力端子に送出されるゲート信号Ｇａｔｅ４は、ゲート信号Ｇａｔｅ３の反転タイミングがクロック信号ＣＬＫ２の立ち上がりエッジまで遅延した波形の信号となる。
【００６２】
フリップフロップＦＦ４が出力するゲート信号Ｇａｔｅ４は、フリップフロップＦＦ３が出力するゲート信号Ｇａｔｅ３を遅延した信号であるので、フリップフロップＦＦ４が出力するゲート信号Ｇａｔｅ４は、フリップフロップＦＦ３が出力するゲート信号Ｇａｔｅ３よりクロック信号ＣＬＫ１の半周期だけ遅れた信号となる。
【００６３】
上述したように、ＡＮＤゲートＡＮ４の第１入力端子にはゲート信号Ｇａｔｅ３とクロック信号ＣＬＫ２との論理積である信号が入力され、ＡＮＤゲートＡＮ４の第２入力端子にはゲート信号Ｇａｔｅ４が入力されるので、ＡＮＤゲートＡＮ４はゲート信号Ｇａｔｅ３とゲート信号Ｇａｔｅ４とクロック信号ＣＬＫ２との論理積であるゲーティッドクロック信号ＧＣＬＫ２を出力端子６に送出する。
尚、ゲート信号Ｇａｔｅ３およびゲーティッドクロック信号ＧＣＬＫ２の波形は図１７（ａ）と同一である。
【００６４】
したがって、クロック信号が必要な期間をデータ信号によって入力することにより、その必要な期間のみクロック信号がゲーティッドクロック信号ＧＣＬＫ２として出力されることになる。
【００６５】
さらに、図２のゲーティッドクロック生成回路ではグリッジが発生しないことを説明する。図６中に示した期間Ｔ７、期間Ｔ８、期間Ｔ９の間のＡＮＤゲートＡＮ３の入力信号並びにＡＮＤゲートＡＮ４の入力信号及び出力信号の遷移の様子を図７に示す。また、図６中に示した期間Ｔ１０、期間Ｔ１１、期間Ｔ１２の間のＡＮＤゲートＡＮ３の入力信号並びにＡＮＤゲートＡＮ４の入力信号及び出力信号の遷移の様子を図８に示す。尚、図７及び図８において、各丸印の中には左から順にクロック信号ＣＬＫ２の論理状態、ゲート信号Ｇａｔｅ３の論理状態、ゲート信号Ｇａｔｅ４の論理状態を示し、「／」記号の右側にＡＮＤゲートＡＮ４の出力状態、すなわちゲーティッドクロック信号ＧＣＬＫ２の論理状態を示すものとする。
【００６６】
まず、図７について説明する。期間Ｔ７では、「１００／０」の状態である。
期間Ｔ７から期間Ｔ８へ遷移するとき、クロック信号ＣＬＫ２とゲート信号Ｇａｔｅ３の２つの信号が反転し、「０１０／０」の状態に遷移しようとする。このとき、ゲーティッドクロック生成回路の配置配線により、２通りの遷移が考えられる。すなわち、クロック信号ＣＬＫ２がゲート信号Ｇａｔｅ３より先に反転する場合は「１００／０」→「０００／０」→「０１０／０」と遷移し、ゲート信号Ｇａｔｅ３がクロック信号ＣＬＫ２より先に反転する場合は「１００／０」→「１１０／０」→「０１０／０」と遷移する。
【００６７】
これら２通りの遷移のどちらを経由してもゲーティッドクロック信号ＧＣＬＫ２の論理状態は０のままであるので、期間Ｔ７から期間Ｔ８へ遷移するときにゲーティッドクロック信号ＧＣＬＫ２にはグリッジが発生しないことが分かる。
【００６８】
また、期間Ｔ８では、「０１０／０」の状態である。期間Ｔ８から期間Ｔ９へ遷移するとき、クロック信号ＣＬＫ２とゲート信号Ｇａｔｅ４の２つの信号が反転し、「１１１／１」の状態に遷移しようとする。このとき、ゲーティッドクロック生成回路の配置配線により、２通りの遷移が考えられる。すなわち、クロック信号ＣＬＫ２がゲート信号Ｇａｔｅ４より先に反転する場合は「０１０／０」→「１１０／０」→「１１１／１」と遷移し、ゲート信号Ｇａｔｅ４がクロック信号ＣＬＫ２より先に反転する場合は「０１０／０」→「０１１／０」→「１１１／１」と遷移する。
【００６９】
これら２通りの遷移のどちらを経由しても区間Ｔ９になるまでゲーティッドクロック信号ＧＣＬＫ２の論理状態は０から１へ一度のみ変化するので、期間Ｔ８から期間Ｔ９へ遷移するときにゲーティッドクロック信号ＧＣＬＫ２にはグリッジが発生しないことが分かる。
【００７０】
次に、図８について説明する。期間Ｔ１０では、「１１１／１」の状態である。期間Ｔ１０から期間Ｔ１１へ遷移するとき、クロック信号ＣＬＫ２とゲート信号Ｇａｔｅ３の２つの信号が反転し、「００１／０」の状態に遷移しようとする。このとき、ゲーティッドクロック生成回路の配置配線により、２通りの遷移が考えられる。すなわち、クロック信号ＣＬＫ２がゲート信号Ｇａｔｅ３より先に反転する場合は「１１１／１」→「０１１／０」→「００１／０」と遷移し、ゲート信号Ｇａｔｅ３がクロック信号ＣＬＫ２より先に反転する場合は「１１１／１」→「１０１／０」→「００１／０」と遷移する。
【００７１】
これら２通りの遷移のどちらを経由してもゲーティッドクロック信号ＧＣＬＫ２の論理状態は一旦１から０に変化するとその後は０のままであるので、期間Ｔ１０から期間Ｔ１１へ遷移するときにゲーティッドクロック信号ＧＣＬＫ２にはグリッジが発生しないことが分かる。
【００７２】
また、期間Ｔ１１では、「００１／０」の状態である。期間Ｔ１１から期間Ｔ１２へ遷移するとき、クロック信号ＣＬＫ２とゲート信号Ｇａｔｅ４の２つの信号が反転し、「１００／０」の状態に遷移しようとする。このとき、ゲーティッドクロック生成回路の配置配線により、２通りの遷移が考えられる。すなわち、クロック信号ＣＬＫ２がゲート信号Ｇａｔｅ４より先に反転する場合は「００１／０」→「１０１／０」→「１００／０」と遷移し、ゲート信号Ｇａｔｅ４がクロック信号ＣＬＫ２より先に反転する場合は「００１／０」→「０００／０」→「１００／０」と遷移する。
【００７３】
これら２通りの遷移のどちらを経由してもゲーティッドクロック信号ＧＣＬＫ２の論理状態は０のままであるので、期間Ｔ１１から期間Ｔ１２へ遷移するときにゲーティッドクロック信号ＧＣＬＫ２にはグリッジが発生しないことが分かる。
【００７４】
このように図２のゲーティッドクロック生成回路ではグリッジが発生しないので、図２のゲーティッドクロック生成回路が出力するゲーティッドクロック信号を入力する回路の誤作動を防ぐことができる。
【００７５】
上述したようにクロック同期回路は一般に同期設計される。同期設計では、外部から入力されるクロック信号を反転させた信号である反転クロック信号を用いるためには、その反転クロック信号も別の１つのクロック信号とみなして配置配線する必要がある。このようにスキューを抑えなければならないクロック信号の数が増えると、配置配線が困難になる上、クロック信号を入出力するバッファ・ゲートの数が増大して、クロック同期回路を搭載するチップの面積が大きくなり、コストが増加することになる。
【００７６】
したがって、図１８（ｃ）のようにフリップフロップＦＦ２８〜ＦＦ３１に入力されるクロック信号が２種類とみなされる回路ではなく、図１８（ａ）のようにフリップフロップＦＦ２０〜ＦＦ２３に入力されるクロック信号を１種類とする回路や図１８（ｂ）のようにフリップフロップＦＦ２４〜ＦＦ２７に入力されるクロック信号を１種類とする回路になるように設計することが望ましい。
【００７７】
尚、図１８（ａ）のクロック同期回路では、フリップフロップＦＦ２０〜ＦＦ２３すべてにクロック信号ＣＬＫがインバータを介さずに入力されるため、フリップフロップＦＦ２０〜ＦＦ２３に入力されるクロック信号が１種類となる。また、図１８（ｂ）のクロック同期回路では、フリップフロップＦＦ２４〜ＦＦ２７すべてにクロック信号ＣＬＫがインバータを介して入力されるため、フリップフロップＦＦ２４〜ＦＦ２７に入力されるクロック信号が１種類となる。また、図１８（ｃ）のクロック同期回路では、フリップフロップＦＦ２８及びＦＦ２９にクロック信号ＣＬＫがインバータを介さずに入力され、フリップフロップＦＦ３０及びＦＦ３１にクロック信号ＣＬＫがインバータＩＮＶ２１を介して入力されるため、フリップフロップＦＦ２８〜ＦＦ３１に入力されるクロック信号が２種類とみなされる。
【００７８】
ところが、上述した本発明に係るゲーティッドクロック回路をクロック同期回路に用いた場合、例えば図１のゲーティッドクロック回路を用いた場合、図９に示すような回路構成になる。尚、図９において図１と同一の部分には同一の符号を付す。
【００７９】
図９のクロック同期回路ではフリップフロップＦＦ２に供給されるクロック信号を別のクロック信号とみなして設計を行う必要があった。このため、本発明に係るゲーティッドクロック回路を備えたクロック同期回路は、同期設計を行ううえで設計者にとって設計しにくい回路構成となっていた。
【００８０】
そこで、まず従来のゲーティッドクロック生成回路を用いてクロック同期回路を設計し、その後従来のゲーティッドクロック生成回路部分を修正し、本発明に係るゲーティッドクロック生成回路に変更するとよい。以下に、その方法について具体的に説明する。
【００８１】
クロック同期回路に設けられる従来のゲーティッドクロック生成回路部分を修正して本発明に係るゲーティッドクロック生成回路に変更する回路修正装置を図１０に示す。図１０の回路修正装置は、回路図情報若しくはネットリスト又はハードウェア記述言語（以下、「ＨＤＬ」という）による記述等の入力データを入力するための入力装置１１と、修正結果を出力する出力装置１２と、入力データ及び修正結果を格納するハードディスク１３と、修正するために必要なデータを保持するメモリ１４と、修正を行うためのプログラムが記録された記録媒体１５と、記録媒体１５に記録されたプログラムに従って修正を実行するＣＰＵ（Central Processor Unit）１６と、を備えている。尚、ＣＰＵ１６は、バス１７を介して入力装置１１、出力装置１２、ハードディスク１３、メモリ１４、および記録媒体１５に接続される。
【００８２】
ＣＰＵ１６は記録媒体１５に記録されたプログラムを読み込み、そのプログラムに従って後述する処理を実行する。メモリ１４は、入力データに追加する回路部分の回路図情報及びネットリスト並びに入力データに追加する回路部分を表現するＨＤＬによる記述のデータを予め格納している。
【００８３】
ネットリストが入力された場合に図１０の回路修正装置が実行する処理手順について図１０の構成図及び図１１のフローチャート図を参照して説明する。
【００８４】
まず入力装置１１は、従来のゲーティッドクロック生成回路が設けられたクロック同期回路のネットリスト、例えば図１９に示す回路のネットリストを入力する（ステップＳ１０）。尚、図１９において、図９と同一の部分には同一の符号を付す。また入力装置１１は、クロック信号が供給される端子の情報、すなわちクロック信号が供給される端子が入力端子１であることを入力する（ステップＳ２０）。
【００８５】
入力装置１１が入力したデータは、ＣＰＵ１６によってメモリ１４に転送される。そしてＣＰＵ１６は、メモリ１４に転送されたデータに基づき、ネットリストの中からクロック信号が供給される端子に接続されている回路部分を検索して列挙する（ステップＳ３０）。その際、バッファ・ゲート及びインバータは配線とみなし、その先に接続されている回路部分を検索する。従って、フリップフロップＦＦ１、ＦＦ１０〜ＦＦ１２、およびＡＮＤゲートＡＮ１が列挙される。
【００８６】
次にＣＰＵ１６は、ステップＳ３０において列挙された回路部分の中で、クロック信号がクロック入力端子に入力されるフリップフロップ以外の回路部分、すなわちＡＮＤゲートＡＮ１だけを抽出する（ステップＳ４０）。ステップＳ４０では、ＡＮＤゲートＡＮ１がクロック信号に基づいてゲーティッドクロック信号を生成している回路部分であることが判別されている。
【００８７】
そしてＣＰＵ１６は、ステップＳ４０において抽出された回路部分の入力信号を生成しているフリップフロップ、すなわちフリップフロップＦＦ１を抽出する（ステップＳ５０）。
【００８８】
次にＣＰＵ１６は、ステップＳ４０において抽出された回路部分の入力信号の反転タイミングがクロック信号の立ち上がりエッジと同期するか否かを判定する（ステップＳ６０）。その際、ステップＳ４０において抽出された回路部分の入力信号の反転タイミングがクロック信号の立ち上がりエッジと同期するか否かの情報を入力装置１１が入力するようにしてもよく、クロック信号が供給される入力端子とフリップフロップとの間に設けられているインバータを検索し、検索されたインバータの数に基づいてステップＳ４０において抽出された回路部分の入力信号の反転タイミングがクロック信号の立ち上がりエッジと同期するか否かを判定してもよい。
【００８９】
ステップＳ４０において抽出された回路部分の入力信号の反転タイミングがクロック信号の立ち上がりエッジと同期していれば（ステップＳ６０のＹｅｓ）、ＣＰＵ１６は、メモリ１４が予め格納していたデータからフリップフロップを取り出し、ステップＳ５０で抽出されたフリップフロップと同じデータ入力を持つフリップフロップとして新たにネットリストに追加したのち（ステップＳ７０）、ステップＳ９０に移行する。
【００９０】
一方、ステップＳ４０において抽出された回路部分の入力信号の反転タイミングがクロック信号の立ち上がりエッジと同期しておらず、クロック信号の立ち下がりエッジと同期していれば（ステップＳ６０のＮｏ）、ＣＰＵ１６は、メモリ１４が予め格納していたデータからフリップフロップを取り出し、ステップＳ５０で抽出されたフリップフロップの出力をデータ入力とするフリップフロップとして新たにネットリストに追加したのち（ステップＳ８０）、ステップＳ９０に移行する。
【００９１】
尚、ステップＳ１０で図１９の回路のネットリストを入力しているので、ＡＮＤゲートの入力信号の反転タイミングがクロック信号の立ち上がりエッジと同期する。したがって、ＣＰＵ１６はステップＳ８０の処理は行わずステップＳ７０の処理を行う。すなわち、ステップＳ５０において抽出されたフリップフロップＦＦ１と同じデータ入力を持つフリップフロップを新たにネットリストに追加する。
【００９２】
ステップＳ９０では、ＣＰＵ１６は、メモリ１４が予め格納していたデータからインバータを取り出し、クロック信号を入力するインバータとしてネットリストに追加する。そしてＣＰＵ１６は、その追加したインバータの出力を、ステップＳ７０またはステップＳ８０において追加したフリップフロップのクロック入力に接続するようにネットリストを書き換える（ステップＳ１００）。
【００９３】
次にＣＰＵ１６は、メモリ１４が予め格納していたデータからＡＮＤゲートを取り出してネットリストに追加し（ステップＳ１１０）、ステップＳ４０で抽出した回路部分の出力と、ステップＳ７０又はステップＳ８０で追加したフリップフロップの出力とを、その追加したＡＮＤゲートの入力に接続するようにネットリストを書き換える（ステップＳ１２０）。
【００９４】
そしてＣＰＵ１６は、ステップＳ１１０で追加したＡＮＤゲートの出力を、ステップＳ４０で抽出した回路部分の出力に接続されていた出力端子に接続するようにネットリストを書き換えて（ステップＳ１３０）、フローを終了する。さらにＣＰＵ１６は、フロー処理を行って修正されたネットリストを修正結果としてハードディスク１３に格納する。
【００９５】
図１０の回路修正装置がこのような処理を行うことによって、図１９に示すクロック同期回路のネットリストが修正され、図９に示すクロック同期回路のネットリストに変更される。
【００９６】
しかしながら、図１０の回路修正装置が上述したようにネットリストを入力して修正する場合、修正した回路が動作しなくなるおそれがある。例えば、修正した回路が図９に示すクロック同期回路の場合、追加したフリップフロップＦＦ２のデータ入力端子に入力されるデータ信号は、図１９に示す修正前のクロック同期回路におけるフリップフロップＦＦ１のデータ入力端子に入力されるデータ信号Ｄａｔａ１であり、修正前のデータパスはクロック信号ＣＬＫ１の立ち上がりエッジから次の立ち上がりエッジまでの１周期以内に、フリップフロップＦＦ１のデータ入力端子に到達すればよいが、追加したフリップフロップＦＦ２のデータ入力端子にはクロック信号ＣＬＫ１の立ち上がりエッジから次の立ち下がりエッジまでに到達する必要がある。つまり、従来許容されていた遅延時間の半分でフリップフロップＦＦ２に到達する必要がある。このように、遅延時間への制約が厳しくなるため、修正したクロック同期回路が正常に動作する保証がなくなる。
【００９７】
そこで、回路図情報やネットリストなどすでに回路図になったものを修正するのではなく、論理合成前のＨＤＬによる記述を用いて修正を行うようにするとよい。論理合成前のＨＤＬによる記述を用いて修正を行うことによって、論理合成の際に遅延時間に対する制約を満たすかどうかを判断することができ、正常に動作する回路であるかを確認することができる。また、論理合成時に遅延時間を含めた最適化を行うことも可能となる。
【００９８】
論理合成前のＨＤＬによる記述が入力された場合に図１０の回路修正装置が実行する処理手順について図１３のフローチャート図を参照して説明する。
【００９９】
まず入力装置１１が、例えば図１９のクロック同期回路と論理的に等価となる図２０のＨＤＬによる記述を入力する（ステップＳ２１０）。図２０に示す記述は、ＶＨＤＬ（VHSIC Hardware Description Language）による記述であり、図１９のクロック同期回路の一部２０と論理的に等価となる記述以外は省略している。尚、以下の説明においては説明を簡単にするため、図２０において省略した記述については処理の対象にしないこととする。
【０１００】
また入力装置１１は、ＨＤＬによる記述中の「clk1」がクロック信号を表現する記述であることを入力する（ステップＳ２２０）。
【０１０１】
入力装置１１が入力したデータは、ＣＰＵ１６によってメモリ１４に転送される。そしてＣＰＵ１６は、メモリ１４に転送されたデータに基づき、ＨＤＬによる記述の中から「clk1」を入力として使用しているプロセス文あるいは同時処理文を検索して列挙する（ステップＳ２３０）。したがって、図２０に示すＨＤＬによる記述の中から、プロセス文Ａ１および同時処理文Ｂ１が検索され列挙される。
【０１０２】
次にＣＰＵ１６は、ステップＳ２３０において列挙されたプロセス文あるいは同時処理文の中で、信号のエッジを表現する記述「event」に「clk1」を入力しているもの以外のプロセス文あるいは同時処理文を抽出する（ステップＳ２４０）。したがって、同時処理文Ｂ１のみが抽出される。尚、同時処理文Ｂ１は「clk1」および「gate1」を入力してゲーティッドクロック信号となる「gclk1」を出力する記述である。
【０１０３】
そしてＣＰＵ１６は、ステップＳ２４０において抽出されたプロセス文あるいは同時処理文の入力となる信号を出力するプロセス文あるいは同時処理文を抽出する（ステップＳ２５０）。したがって、同時処理文Ｂ１の入力信号である「gate1」を出力するプロセス文Ａ１が抽出される。
【０１０４】
次にＣＰＵ１６は、ステップＳ２４０において抽出されたプロセス文あるいは同期処理文の入力信号のエッジが「clk1」の立ち上がりエッジと同期するか否かを判定する（ステップＳ２６０）。ステップＳ２４０において抽出されたプロセス文の入力信号のエッジは、「event」記述部分が「clk1'event and clk1='1'」であれば立ち上がりエッジに同期、「clk1'event and clk1='0'」であれば立ち下がりエッジに同期していると判別できる。
【０１０５】
ステップＳ２４０において抽出されたプロセス文あるいは同期処理文の入力信号のエッジが「clk1」の立ち上がりエッジと同期していれば（ステップＳ２６０のＹｅｓ）、ＣＰＵ１６は、ステップＳ２５０で抽出されたプロセス文あるいは同時処理文がフリップフロップのみを表現する記述であるかを判定する。フリップフロップ以外の回路を表現する記述が含まれている場合は、フリップフロップのみを表現する記述とフリップフロップ以外の回路を表現する記述とに分離する。
【０１０６】
そしてＣＰＵ１６は、メモリ１４が予め格納していたデータからフリップフロップを表現する記述を取り出し、ステップＳ２５０で抽出されたプロセス文あるいは同時処理文に表現されているフリップフロップと同じデータ入力を持つフリップフロップを表現する記述として新たにＨＤＬによる記述に追加したのち（ステップＳ２７０）、ステップＳ２９０に移行する。
【０１０７】
一方、ステップＳ２４０において抽出されたプロセス文あるいは同期処理文の入力信号のエッジが「clk1」の立ち上がりエッジと同期しておらず「clk1」の立ち下がりエッジと同期していれば（ステップＳ２６０のＮｏ）、ＣＰＵ１６は、ステップＳ２５０で抽出されたプロセス文あるいは同時処理文がフリップフロップのみを表現する記述であるかを判定する。フリップフロップ以外の回路を表現する記述が含まれている場合は、フリップフロップのみを表現する記述とフリップフロップ以外の回路を表現する記述とに分離する。
【０１０８】
そしてＣＰＵ１６は、メモリ１４が予め格納していたデータからフリップフロップを表現する記述を取り出し、ステップＳ２５０で抽出されたプロセス文あるいは同時処理文に表現されているフリップフロップの出力をデータ入力とするフリップフロップを表現する記述として新たにＨＤＬによる記述に追加したのち（ステップＳ２８０）、ステップＳ２９０に移行する。
【０１０９】
尚、ステップＳ２１０で図２０のＨＤＬによる記述を入力しているので、ステップＳ２４０で抽出された同時処理文Ｂ１の入力信号のエッジはクロック信号の立ち上がりエッジと同期する。したがって、ＣＰＵ１６はステップＳ２８０の処理は行わずステップＳ２７０の処理を行う。具体的には、以下のような処理を行う。
【０１１０】
プロセス文Ａ１の記述のうちフリップフロップ以外を表現する部分を分離して、図１２のプロセス文Ａ２として追加する。さらに、フリップフロップのデータ入力端子に入力されるデータ信号を示す新たな信号名「data_input_to_ff1」を新たに導入する。それに伴い、プロセス文Ａ１を図１２のプロセス文Ａ３に変更する。つまり、プロセス文Ａ１をプロセス文Ａ２とプロセス文Ａ３とに分離する。このような分離を行っても、論理的には分離前と等価である。
【０１１１】
そして、信号「data_input_to_ff1」をデータ入力端子に入力するフリップフロップを表現するプロセス文を新たにＨＤＬによる記述に追加する。以上がステップ２７０における具体的な処理である。
【０１１２】
ステップＳ２９０では、ＣＰＵ１６は、メモリ１４が予め格納していたデータからインバータを表現する記述を取り出し、クロック信号を入力するインバータを表現する記述としてＨＤＬによる記述に追加する。すなわち、ＣＰＵ１６は新たな信号名「inv_clk1」を導入し、図１２に示す同時処理文Ｂ２を新たにＨＤＬによる記述に追加する。
【０１１３】
そしてＣＰＵ１６は、その追加した記述に表現されているインバータの出力がステップＳ２７０またはステップＳ２８０において追加した記述に表現されているフリップフロップのクロック入力に接続されるようにＨＤＬによる記述を書き換える（ステップＳ３００）。すなわち、信号「inv_clk1」をステップＳ２７０またはステップＳ２８０で追加したプロセス文中の「event」に導入する。そうすると、図１２に示すプロセス文Ａ４となる。
【０１１４】
次にＣＰＵ１６は、メモリ１４が予め格納していたデータからＡＮＤゲートを表現する記述を取り出してＨＤＬによる記述に追加する（ステップＳ３１０）。
【０１１５】
また、ステップＳ２４０で抽出したプロセス文あるいは同時処理文の出力と、ステップＳ２７０又はステップＳ２８０で追加した記述に表現されているフリップフロップの出力とを、その追加した記述に表現されているＡＮＤゲートの入力に接続するために、新たな信号名「gate1_tmp」を導入してＨＤＬによる記述を書き換える（ステップＳ３２０）。そうすると、プロセス文Ｂ１は図１２に示す同時処理文Ｂ３に変更される。
【０１１６】
そしてＣＰＵ１６は、ステップＳ３１０で追加した記述に表現されているＡＮＤゲートの出力信号を、ステップＳ２３０で抽出したプロセス文あるいは同時処理文の出力信号と同一にするようにＨＤＬによる記述を書き換え（ステップＳ３３０）、フローを終了する。そうすると、ステップＳ３１０で追加した記述は図１２に示す同期処理文Ｂ４となる。
【０１１７】
さらにＣＰＵ１６は、フロー処理を行って修正されたＨＤＬによる記述を修正結果としてハードディスク１３に格納する。図１０の回路修正装置がこのような処理を行うことによって、図２０に示すＨＤＬによる記述が修正され、図１２に示すＨＤＬによる記述に変更される。図１２に示すＨＤＬによる記述は、図９のクロック同期回路を表現している。尚、図１２に示すＨＤＬによる記述は、図９のクロック同期回路の一部２１と論理的に等価となる記述以外は省略している。
【０１１８】
この後、修正されたＨＤＬによる記述を論理合成する際に、設計者が遅延時間に対する制約を適切に与えて論理合成すれば、追加された回路部分を含めたクロック同期回路全体が動作可能であるかを設計者が判断できる。また、クロック同期回路が動作可能で有る場合、遅延時間のみならず、ファンアウト数や信号遷移時間等のその他の制約も含めて調整できる。これにより、回路図情報やネットリストを用いた場合よりも意図通りに動作する可能性の高いクロック同期回路を論理合成することができ、設計したクロック同期回路の信頼性が高くなる。
【０１１９】
【発明の効果】
本発明によると、ゲーティッド生成回路は、継続して変化するクロック信号の立ち下がりエッジに反転タイミングが同期する第１のゲート信号と、前記第１のゲート信号に対して前記クロック信号の半周期分だけ位相がずれた第２のゲート信号と、に基づいて前記クロック信号の出力をＯＮ／ＯＦＦ制御するので、配置配線で定まる遅延時間によって前記クロック信号の立ち下がりエッジに対して前記第１のゲート信号や前記第２のゲート信号の反転タイミングがずれた場合でも、グリッジが発生することがない。これにより、冗長な回路を挿入するなどして配置配線をやり直したり再設計をして遅延時間を調整する必要がなくなる。
【０１２０】
また、本発明によると、回路図情報又はネットリストの修正方法は、継続して変化するクロック信号の立ち上がりエッジにデータ信号の反転タイミングが同期するように前記クロック信号に応じて前記データ信号を遅延させることによって生成される第１のゲート信号に基づいて前記クロック信号の出力をＯＮ／ＯＦＦ制御するゲーティッドクロック生成回路を備えたクロック同期回路の回路図情報又はネットリストに対して前記クロック信号を反転させるインバータを追加するステップと、前記第１のゲート信号を生成しているフリップフロップを前記回路図情報又はネットリストから検索するステップと、前記第１のゲート信号を生成しているフリップフロップのデータ入力とデータ入力を同一にし且つ前記インバータが出力する信号をクロック入力とするフリップフロップを前記回路図情報又はネットリストに追加するステップと、追加したフリップフロップが出力する信号と修正前のゲーティッドクロック生成回路が出力していた信号との論理積を出力するＡＮＤゲートを前記回路図情報又はネットリストに追加するステップと、追加したＡＮＤゲートが出力する信号を修正後のゲーティッドクロック生成回路の出力信号とするステップと、を有するので、前記第１のゲート信号に基づいてクロック信号の出力をＯＮ／ＯＦＦ制御するゲーティッドクロック生成回路を備えたクロック同期回路の回路図情報又はネットリストを、前記第１のゲート信号及び前記第１のゲート信号に対して前記クロック信号の半周期分だけ位相が進んだ第２のゲート信号に基づいてクロック信号の出力をＯＮ／ＯＦＦ制御するゲーティッドクロック生成回路を備えたクロック同期回路の回路図情報又はネットリストに修正することができる。これにより、設計者は従来と同様に前記第１のゲート信号に基づいてクロック信号の出力をＯＮ／ＯＦＦ制御するゲーティッドクロック生成回路を備えたクロック同期回路を設計すればよく、クロック信号の種類を増やして設計を行う必要がなくなる。
【０１２１】
また、本発明によると、回路図情報又はネットリストの修正方法は、継続して変化するクロック信号の立ち下がりエッジにデータ信号の反転タイミングが同期するように前記クロック信号に応じて前記データ信号を遅延させることによって生成される第１のゲート信号に基づいて前記クロック信号の出力をＯＮ／ＯＦＦ制御するゲーティッドクロック生成回路を備えたクロック同期回路の回路図情報又はネットリストから前記第１のゲート信号を生成しているフリップフロップを検索するステップと、前記第１のゲート信号を生成しているフリップフロップが出力する信号をデータ入力とし且つ前記クロック信号をクロック入力とするフリップフロップを前記回路図情報又はネットリストに追加するステップと、追加したフリップフロップの出力信号と修正前のゲーティッドクロック生成回路の出力信号との論理積を出力するＡＮＤゲートを前記回路図情報又はネットリストに追加するステップと、追加したＡＮＤゲートの出力信号を修正後のゲーティッドクロック生成回路の出力信号とするステップと、を有するので、前記第１のゲート信号に基づいてクロック信号の出力をＯＮ／ＯＦＦ制御するゲーティッドクロック生成回路を備えたクロック同期回路の回路図情報又はネットリストを、前記第１のゲート信号及び前記第１のゲート信号に対して前記クロック信号の半周期分だけ位相が遅れた第２のゲート信号に基づいてクロック信号の出力をＯＮ／ＯＦＦ制御するゲーティッドクロック生成回路を備えたクロック同期回路の回路図情報又はネットリストに修正することができる。これにより、設計者は従来と同様に前記第１のゲート信号に基づいてクロック信号の出力をＯＮ／ＯＦＦ制御するゲーティッドクロック生成回路を備えたクロック同期回路を設計すればよく、クロック信号の種類を増やして設計を行う必要がなくなる。
【０１２２】
また、本発明によると、ハードウェア記述による記述の修正方法は、継続して変化するクロック信号の立ち上がりエッジにデータ信号の反転タイミングが同期するように前記クロック信号に応じて前記データ信号を遅延させることによって生成される第１のゲート信号に基づいて前記クロック信号の出力をＯＮ／ＯＦＦ制御するゲーティッドクロック生成回路を備えたクロック同期回路を表現する論理合成前のＨＤＬによる記述に対して前記クロック信号を反転させるインバータを表現するＨＤＬによる記述を追加するステップと、前記第１のゲート信号を生成しているフリップフロップを表現する記述を前記クロック同期回路を表現する論理合成前のＨＤＬによる記述から検索するステップと、前記第１のゲート信号を生成しているフリップフロップのデータ入力とデータ入力を同一にし且つ前記インバータが出力する信号をクロック入力とするフリップフロップを表現するＨＤＬによる記述を前記クロック同期回路を表現する論理合成前のＨＤＬによる記述に追加するステップと、追加したフリップフロップが出力する信号と修正前のゲーティッドクロック生成回路が出力していた信号との論理積を出力するＡＮＤゲートを表現するＨＤＬによる記述を前記クロック同期回路を表現する論理合成前のＨＤＬによる記述に追加するステップと、追加したＡＮＤゲートが出力する信号を修正後のゲーティッドクロック生成回路の出力信号とするように前記クロック同期回路を表現する論理合成前のＨＤＬによる記述を書き換えるステップと、を有するので、前記第１のゲート信号に基づいてクロック信号の出力をＯＮ／ＯＦＦ制御するゲーティッドクロック生成回路を備えたクロック同期回路を表現する論理合成前のＨＤＬによる記述を、前記第１のゲート信号及び前記第１のゲート信号に対して前記クロック信号の半周期分だけ位相が進んだ第２のゲート信号に基づいてクロック信号の出力をＯＮ／ＯＦＦ制御するゲーティッドクロック生成回路を備えたクロック同期回路を表現する論理合成前のＨＤＬによる記述に修正することができる。これにより、設計者は従来と同様に前記第１のゲート信号に基づいてクロック信号の出力をＯＮ／ＯＦＦ制御するゲーティッドクロック生成回路を備えたクロック同期回路を設計すればよく、クロック信号の種類を増やして設計を行う必要がなくなる。また、論理合成前のＨＤＬによる記述を用いて修正を行っているので、論理合成の際に遅延時間に対する制約を満たすかどうかを判断することができ、正常に動作する回路であるかを確認することができる。また、論理合成時に遅延時間を含めた最適化を行うことも可能となる。これにより、クロック同期回路の信頼性が向上する。
【０１２３】
また、本発明によると、ハードウェア記述による記述の修正方法は、継続して変化するクロック信号の立ち下がりエッジにデータ信号の反転タイミングが同期するように前記クロック信号に応じて前記データ信号を遅延させることによって生成される第１のゲート信号に基づいて前記クロック信号の出力をＯＮ／ＯＦＦ制御するゲーティッドクロック生成回路を備えたクロック同期回路を表現する論理合成前のＨＤＬによる記述から前記第１のゲート信号を生成しているフリップフロップを表現する記述を検索するステップと、前記第１のゲート信号を生成しているフリップフロップが出力する信号をデータ入力とし且つ前記クロック信号をクロック入力とするフリップフロップを表現するＨＤＬによる記述を前記クロック同期回路を表現する論理合成前のＨＤＬによる記述に追加するステップと、追加したフリップフロップが出力する信号と修正前のゲーティッドクロック生成回路が出力していた信号との論理積を出力するＡＮＤゲートを表現するＨＤＬによる記述を前記クロック同期回路を表現する論理合成前のＨＤＬによる記述に追加するステップと、追加したＡＮＤゲートが出力する信号を修正後のゲーティッドクロック生成回路の出力信号とするように前記クロック同期回路を表現する論理合成前のＨＤＬによる記述を書き換えるステップと、を有するので、前記第１のゲート信号に基づいてクロック信号の出力をＯＮ／ＯＦＦ制御するゲーティッドクロック生成回路を備えたクロック同期回路を表現する論理合成前のＨＤＬによる記述を、前記第１のゲート信号及び前記第１のゲート信号に対して前記クロック信号の半周期分だけ位相が遅れた第２のゲート信号に基づいてクロック信号の出力をＯＮ／ＯＦＦ制御するゲーティッドクロック生成回路を備えたクロック同期回路を表現する論理合成前のＨＤＬによる記述に修正することができる。これにより、設計者は従来と同様に前記第１のゲート信号に基づいてクロック信号の出力をＯＮ／ＯＦＦ制御するゲーティッドクロック生成回路を備えたクロック同期回路を設計すればよく、クロック信号の種類を増やして設計を行う必要がなくなる。また、論理合成前のＨＤＬによる記述を用いて修正を行っているので、論理合成の際に遅延時間に対する制約を満たすかどうかを判断することができ、正常に動作する回路であるかを確認することができる。また、論理合成時に遅延時間を含めた最適化を行うことも可能となる。これにより、クロック同期回路の信頼性が向上する。
【図面の簡単な説明】
【図１】      本発明に係る第一実施形態のゲーティッドクロック生成回路の構成を示す図である。
【図２】      本発明に係る第二実施形態のゲーティッドクロック生成回路の構成を示す図である。
【図３】      図１のゲーティッドクロック生成回路の動作を示すタイミングチャート図である。
【図４】      図３の期間Ｔ１〜Ｔ３での状態遷移を示す図である。
【図５】      図３の期間Ｔ４〜Ｔ６での状態遷移を示す図である。
【図６】      図２のゲーティッドクロック生成回路の動作を示すタイミングチャート図である。
【図７】      図６の期間Ｔ７〜Ｔ９での状態遷移を示す図である。
【図８】      図６の期間Ｔ１０〜Ｔ１２での状態遷移を示す図である。
【図９】      図１のゲーティッドクロック生成回路を備えるクロック同期回路の構成を示す図である。
【図１０】      回路修正装置の構成を示す図である。
【図１１】      ネットリストの修正処理を示すフローチャート図である。
【図１２】      図９のクロック同期回路を表現するＨＤＬによる記述を示す図である。
【図１３】      ＨＤＬによる記述の修正処理を示すフローチャート図である。
【図１４】      従来のゲーティッドクロック生成回路の構成を示す図である。
【図１５】      図１４のゲーティッドクロック生成回路の動作を示すタイミングチャート図である。
【図１６】      従来のゲーティッドクロック生成回路の他の構成を示す図である。
【図１７】      図１６のゲーティッドクロック生成回路の動作を示すタイミングチャート図である。
【図１８】      クロック同期回路の構成を示す図である。
【図１９】      図１４のゲーティッドクロック生成回路を備えるクロック同期回路の構成を示す図である。
【図２０】      図１９のクロック同期回路を表現するＨＤＬによる記述を示す図である。
【符号の説明】
１、２、４、５    入力端子
３、６    出力端子
１１    入力装置
１２    出力装置
１３    ハードディスク
１４    メモリ
１５    記録媒体
１６    ＣＰＵ
Ａ１〜Ａ４    プロセス文
Ｂ１〜Ｂ４    同時処理文
ＡＮ１〜ＡＮ４    ＡＮＤゲート
ＢＵＦ１〜ＢＵＦ５    バッファ・ゲート
ＦＦ１〜ＦＦ４    フリップフロップ
ＩＮＶ１〜ＩＮＶ３    インバータ
【図１】
0003698657.tif 000002
【図２】
0003698657.tif 000003
【図３】
0003698657.tif 000004
【図４】
0003698657.tif 000005
【図５】
0003698657.tif 000006
【図６】
0003698657.tif 000007
【図７】
0003698657.tif 000008
【図８】
0003698657.tif 000009
【図９】
0003698657.tif 000010
【図１０】
0003698657.tif 000011
【図１１】
0003698657.tif 000012
【図１２】
0003698657.tif 000013
【図１３】
0003698657.tif 000014
【図１４】
0003698657.tif 000015
【図１５】
0003698657.tif 000016
【図１６】
0003698657.tif 000017
【図１７】
0003698657.tif 000018
【図１８】
0003698657.tif 000019
【図１９】
0003698657.tif 000020
【図２０】
0003698657.tif 000021