(57)【要約】【課題】スキャンパスにおける遅延時間に、特別な配慮を必要としない半導体集積回路とその設計方法を実現する。【解決手段】論理ブロック１の入力端子Ｉの前段に設けられたスキャンＦＦ２のスキャンデータ用の入力端子ＳＩに、スキャン経路４からきた信号をラッチ１０でラッチして与えるように構成する。対応するラッチ１０とスキャンＦＦ２は、クロック信号ＣＬＫの異なるエッジ（一方が立ち上がりであれば、他方は立ち下がり）で動作するように組み合わせる。また、ゲートセル１２を設け、通常動作時にラッチ１０に対するクロック信号ＣＬＫを停止させる。【選択図】図１
2007170959.tif 000002
【特許請求の範囲】
【請求項１】
与えられる入力信号に応じてそれぞれ所定の論理動作を行い、その論理動作に応じた信号を出力する複数の論理ブロックと、
前記論理ブロックに与える入力信号毎に設けられ、通常動作モード時には第１の入力端子に与えられる該論理ブロックに対する入力信号を選択し、スキャンモード時には第２の入力端子に与えられるスキャン信号を選択して、第１のクロック供給路から与えられるクロック信号に同期して出力するＮ（但し、Ｎは２以上の整数）個のスキャン・フリップフロップと、
前記スキャン・フリップフロップに対応して設けられ、データ端子に与えられる信号をゲート端子に与えられるクロック信号に同期して保持して該スキャン・フリップフロップの第２の入力端子に出力するＮ個のラッチと、
スキャン入力端子から前記複数のラッチの内の１番目のラッチのデータ端子に前記スキャン信号を伝搬する第１のスキャン経路と、
前記スキャン・フリップフロップの内でｉ（但し、ｉ＝１〜Ｎ−１）番目のラッチに対応するｉ番目のスキャン・フリップフロップの出力側から、ｉ＋１番目のラッチのデータ端子に前記スキャン信号を伝搬する第ｉ＋１のスキャン経路と、
前記Ｎ番目のスキャン・フリップフロップの出力側からスキャン出力端子に前記スキャン信号を伝搬する第Ｎ＋１のスキャン経路と、
スキャンモード時には外部クロック端子に与えられるクロック信号を出力し、通常動作モード時には該クロック信号の出力を停止するゲートセルと、
前記ゲートセルの出力側から前記複数のラッチのゲート端子に前記クロック信号を供給する第２のクロック供給路と、
前記外部クロック端子に与えられるクロック信号のタイミングを調整して前記第１のクロック供給路に出力する遅延バッファとを、
備えたことを特徴とする半導体集積回路。
【請求項２】
前記スキャン・フリップフロップが、前記クロック信号の立ち上がりで動作するものと立ち下がりで動作するものが混在している場合に、該クロック信号の立ち上がりで動作するスキャン・フリップフロップに対してクロック信号の立ち下がりで動作するラッチを設け、該クロック信号の立ち下がりで動作するスキャン・フリップフロップに対してクロック信号の立ち上がりで動作するラッチを設けたことを特徴とする請求項１記載の半導体集積回路。
【請求項３】
複数の論理ブロックとこれらの論理ブロックに入力信号をクロック信号に同期して与えるためのフリップフロップを有する半導体集積回路の回路図情報を準備する処理と、
前記回路図情報中のフリップフロップを、スキャン・フリップフロップに置き換える処理と、
前記スキャン・フリップフロップのスキャンの順番を決定し、スキャン入力端子からその順番に従って該スキャン・フリップフロップをチェーン状に接続してスキャン出力端子に至るスキャン経路を設ける処理と、
前記スキャン経路上の各スキャン・フリップフロップの前段に、クロック信号に従って該スキャン・フリップフロップへ与えるデータを保持するラッチを挿入する処理と、
スキャンモード時には外部クロック端子に与えられるクロック信号を出力し、通常動作モード時には該クロック信号の出力を停止するゲートセルを設ける処理と、
前記ゲートセルの出力側から前記複数のラッチに前記クロック信号を供給するクロック供給路を設ける処理と、
前記外部クロック端子に与えられるクロック信号のタイミングを調整して前記スキャン・フリップフロップに供給する遅延バッファを設ける処理とを、
順次行うことを特徴とする半導体集積回路の設計方法。
【請求項４】
前記スキャン・フリップフロップが、前記クロック信号の立ち上がりで動作するものと立ち下がりで動作するものが混在している場合に、
前記ラッチを挿入する処理において、クロック信号の立ち上がりで動作するスキャン・フリップフロップに対してクロック信号の立ち下がりで動作するラッチを設け、クロック信号の立ち下がりで動作するスキャン・フリップフロップに対してクロック信号の立ち上がりで動作するラッチを設け、
前記クロック供給路を設ける処理において、前記クロック信号の立ち下がりで動作するラッチに対する第１のクロック供給路と、該クロック信号の立ち上がりで動作するラッチに対する第２のクロック供給路を設け、該第２のクロック供給路には、該クロック信号の位相を反転したクロック信号を供給するように構成する、
ことを特徴とする請求項３記載の半導体集積回路の設計方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路、特にスキャン回路を有する半導体集積回路とその設計方法に関するものである。
【背景技術】
【０００２】
図２は、スキャン回路を有する従来の半導体集積回路の概略の構成図である。
この半導体集積回路は、入力される信号に応じて論理処理を行いその結果を出力する論理ブロック１１，１２の入力側に、従来配置されているタイミング調整用のフリップフロップ（以下、「ＦＦ」という）に代えて、スキャンＦＦ（ＳＦＦ）２１〜２４を設けると共に、スキャン入力データＳＩＮを入力するためのスキャン入力端子３を設けている。
【０００３】
スキャンＦＦは、通常動作モードが指定されたときには、入力端子Ｄに与えられるデータをクロック端子に与えられるクロック信号ＣＬＫに同期して出力端子Ｑへ出力し、スキャンモードが指定されたときには、入力端子ＳＩに与えられるデータをこのクロック信号ＣＬＫに同期して出力端子Ｑへ出力するものである。
【０００４】
スキャン入力端子３は、スキャン経路４１とタイミング整用の遅延バッファ５１を介してスキャンＦＦ２１の入力端子ＳＩに接続されている。スキャンＦＦ２１の出力端子Ｑは、論理ブロック１１の入力端子Ｉ２に接続されると共に、スキャン経路４２と遅延バッファ５２を介してスキャンＦＦ２２の入力端子ＳＩに接続されている。同様に、スキャンＦＦ２２の出力端子Ｑは、論理ブロック１１の入力端子Ｉ１に接続されると共に、スキャン経路４３と遅延バッファ５３を介してスキャンＦＦ２３の入力端子ＳＩに接続されている。更に、スキャンＦＦ２３の出力端子Ｑは、論理ブロック１２の入力端子Ｉ１に接続されると共に、スキャン経路４４と遅延バッファ５４を介してスキャンＦＦ２４の入力端子ＳＩに接続されている。そして、スキャンＦＦ２４の出力端子Ｑは、論理ブロック１２の入力端子Ｉ２に接続されると共に、スキャン経路４５を介してスキャン出力端子６に接続されている。
【０００５】
スキャンＦＦ２１〜２４のクロック端子には、クロック端子７に与えられるクロック信号ＣＬＫが、クロック供給路８を介して許容範囲内の位相差で与えられるようになっている。また、スキャンＦＦ２１〜２４の選択端子ＳＥには、モード設定端子９に入力されるモード選択信号ＭＯＤが共通に与えられるようになっている。なお。図示していないが、論理ブロック１１，１２には、他の回路や外部入力端子からその他の入力信号が与えられ、処理結果の信号の一部は他の回路や外部出力端子へ出力されるようになっている。
【０００６】
次に動作を説明する。
この半導体集積回路では、モード選択信号ＭＯＤによってスキャンモードが指定されると、各スキャンＦＦ２１〜２４は入力端子ＳＩ側が選択される。これにより、スキャン入力端子３から、スキャン経路４１→遅延バッファ５１→スキャンＦＦ２１→スキャン経路４２→遅延バッファ５２→スキャンＦＦ２２→・・・→スキャンＦＦ２４→スキャン経路４５を経てスキャン出力端子６に至るスキャンパスが構成される。
【０００７】
この状態で、クロック端子７のクロック信号ＣＬＫに同期して、スキャン入力端子３からスキャン入力データＳＩＮを順次直列に入力すると、入力されたスキャン入力データＳＩＮはスキャンパスによってシフトレジスタを構成するスキャンＦＦ２１〜２４に保持される。スキャンＦＦ２１〜２４に保持されたスキャン入力データＳＩＮは、論理ブロック１１，１２へ入力信号として与えられ、これによってこれらの論理ブロック１１，１２からスキャン入力データＳＩＮに応じた処理結果の信号が出力される。
【０００８】
ここで、モード選択信号ＭＯＤを通常動作モードに切り替えて、クロック信号ＣＬＫを１パルスだけ与えると、論理ブロック１１，１２の出力信号がスキャンＦＦ２１〜２４に保持される。
【０００９】
その後、モード選択信号ＭＯＤによってスキャンモードに戻し、クロック端子７にクロック信号ＣＬＫを与えると、スキャンＦＦ２１〜２４に保持されている論理ブロック１１，１２の出力信号が、スキャン出力端子６から順次出力される。
【００１０】
スキャン出力端子６から出力されたスキャン出力データＳＯＵＴを、スキャン入力データＳＩＮに対応して予め計算しておいた期待値と比較することにより、論理ブロック１１，１２の動作を確認することができる。
【００１１】
一方、モード選択信号ＭＯＤによって通常動作モードが指定されたときには、各スキャンＦＦ２１〜２４は入力端子Ｄ側に切り替えられるので、これらのスキャンＦＦ２１〜２４を接続するスキャンチェーンは無くなる。これにより、論理ブロック１１，１２には所定の入力信号経路で伝搬された入力信号が、スキャンＦＦ２１〜２４からクロック信号ＣＬＫのタイミングに従って与えられる。
【００１２】
なお、下記特許文献１には、反転したクロック信号のタイミングでスキャンパスのデータを保持する第１のＦＦと、動作モードによって通常動作時のデータとこの第１のＦＦで保持したデータを切り替えるセレクタと、このセレクタで選択されたデータをクロック信号のタイミングで保持する第２のＦＦとで構成されるスキャンＦＦが記載されている。
【００１３】
【特許文献１】特開平１０−２６７９９４号公報
【発明の開示】
【発明が解決しようとする課題】
【００１４】
しかしながら、前記半導体集積回路では、通常動作モードのデータ経路とスキャンモードのデータ経路の相違による伝搬遅延の相違を補正するために、各スキャン経路４中にタイミング調整用の遅延バッファ５を挿入している。このため、回路規模と消費電力が増加するという問題があった。更に、近年の集積回路の微細化により、遅延バッファ５を構成する素子の遅延量が少なくなってきているので、所望の遅延時間を得るための素子数が多くなり問題が顕著になっている。
【００１５】
本発明は、スキャンモード時のスキャンパスにおける遅延時間に、特別な配慮を必要としない半導体集積回路とその設計方法を実現すること目的としている。
【課題を解決するための手段】
【００１６】
本発明の半導体集積回路は、与えられる入力信号に応じてそれぞれ所定の論理動作を行い、その論理動作に応じた信号を出力する複数の論理ブロックと、前記論理ブロックに与える入力信号毎に設けられ、通常動作モード時には第１の入力端子に与えられる該論理ブロックに対する入力信号を選択し、スキャンモード時には第２の入力端子に与えられるスキャン信号を選択して、第１のクロック供給路から与えられるクロック信号に同期して出力するＮ（但し、Ｎは２以上の整数）個のスキャンＦＦと、前記スキャンＦＦに対応して設けられ、データ端子に与えられる信号をゲート端子に与えられるクロック信号に同期して保持して該スキャンＦＦの第２の入力端子に出力するＮ個のラッチと、スキャン入力端子から前記複数のラッチの内の１番目のラッチのデータ端子に前記スキャン信号を伝搬する第１のスキャン経路と、前記スキャンＦＦの内でｉ（但し、ｉ＝１〜Ｎ−１）番目のラッチに対応するｉ番目のスキャンＦＦの出力側から、ｉ＋１番目のラッチのデータ端子に前記スキャン信号を伝搬する第ｉ＋１のスキャン経路と、前記Ｎ番目のスキャンＦＦの出力側からスキャン出力端子に前記スキャン信号を伝搬する第Ｎ＋１のスキャン経路と、スキャンモード時には外部クロック端子に与えられるクロック信号を出力し、通常動作モード時には該クロック信号の出力を停止するゲートセルと、前記ゲートセルの出力側から前記複数のラッチのゲート端子に前記クロック信号を供給する第２のクロック供給路と、前記外部クロック端子に与えられるクロック信号のタイミングを調整して前記第１のクロック供給路に出力する遅延バッファとを備たことを特徴としている。
【発明の効果】
【００１７】
本発明では、スキャンＦＦの第２の入力端子（即ち、スキャンデータの入力端子）の前にラッチを設け、このラッチでスキャンデータをラッチしてから、スキャンＦＦに与えるようにしている。これにより、スキャンパスにおける遅延時間に特別な配慮を必要としない半導体集積回路が実現できるという効果がある。
【発明を実施するための最良の形態】
【００１８】
複数のスキャンＦＦが同一特性ではなく、クロック信号の立ち上がりで動作するものと立ち下がりで動作するものが混在している場合には、クロック信号の立ち上がりで動作するスキャンＦＦに対してクロック信号の立ち下がりで動作するラッチを設け、クロック信号の立ち下がりで動作するスキャンＦＦに対してクロック信号の立ち上がりで動作するラッチを設ける。
【００１９】
この発明の前記並びにその他の目的と新規な特徴は、次の好ましい実施例の説明を添付図面と照らし合わせて読むと、より完全に明らかになるであろう。但し、図面は、もっぱら解説のためのものであって、この発明の範囲を限定するものではない。
【実施例１】
【００２０】
図１は、本発明の実施例を示す半導体集積回路の概略の構成図であり、図２中の要素と共通の要素には共通の符号が付されている。
【００２１】
この半導体集積回路は、図２中の遅延バッファ５１〜５４に代えてラッチ（ＬＡＴ）１０１〜１０４を設けると共に、スキャンＦＦ２１〜２４に対するクロック信号ＣＬＫのタイミングを調整するための遅延バッファ１１と、これらのラッチ１０１〜１０４にクロック信号ＣＬＫを供給するためのゲートセル１２、クロック供給路１３，１５、及びインバータ１４を設けている。
【００２２】
即ち、この半導体集積回路は、入力される信号に応じて論理処理を行いその結果を出力する論理ブロック１１，１２の入力側にスキャンＦＦ２１〜２４を設けると共に、スキャン入力データＳＩＮを入力するためのスキャン入力端子３を有している。
【００２３】
スキャンＦＦ２１〜２４は、通常動作モードが指定されたときには、入力端子Ｄに与えられるデータをクロック端子に与えられるクロック信号ＣＬＫに同期して出力端子Ｑへ出力し、スキャンモードが指定されたときには、入力端子ＳＩに与えられるデータをこのクロック信号ＣＬＫに同期して出力端子Ｑへ出力するものである。
【００２４】
一方、ラッチ１０１〜１０４は、ゲート端子Ｇに与えられるクロック信号ＣＬＫがレベル“Ｌ”の時は、入力端子Ｄの信号をそのまま出力端子Ｑから出力し、このクロック信号ＣＬＫがレベル“Ｈ”の時は、“Ｈ”に立ち上がる直前の出力端子Ｑの信号を保持するものである。
【００２５】
スキャン入力端子３は、スキャン経路４１とラッチ１０１を介してスキャンＦＦ２１の入力端子ＳＩに接続されている。スキャンＦＦ２１の出力端子Ｑは、論理ブロック１１の入力端子Ｉ２に接続されると共に、スキャン経路４２とラッチ１０２を介してスキャンＦＦ２２の入力端子ＳＩに接続されている。同様に、スキャンＦＦ２２の出力端子Ｑは、論理ブロック１１の入力端子Ｉ１に接続されると共に、スキャン経路４３とラッチ１０３を介してスキャンＦＦ２３の入力端子ＳＩに接続されている。更に、スキャンＦＦ２３の出力端子Ｑは、論理ブロック１２の入力端子Ｉ１に接続されると共に、スキャン経路４４とラッチ１０４を介してスキャンＦＦ２４の入力端子ＳＩに接続されている。そして、スキャンＦＦ２４の出力端子Ｑは、論理ブロック１２の入力端子Ｉ２に接続されると共に、スキャン経路４５を介してスキャン出力端子６に接続されている。
【００２６】
スキャンＦＦ２１〜２４のクロック端子には、クロック端子７に与えられるクロック信号ＣＬＫが遅延バッファ１１でタイミングを調整され、クロック供給路８を介して許容範囲内の位相差で与えられるようになっている。また、スキャンＦＦ２１〜２４の選択端子ＳＥには、モード設定端子９に入力されるモード選択信号ＭＯＤが、共通に与えられるようになっている。
【００２７】
また、クロック信号ＣＬＫとモード選択信号ＭＯＤは、ゲートセル１２に与えられている。ゲートセル１２は、モード選択信号ＭＯＤで通常動作モードが指定されたときは、“Ｌ”を出力し、スキャンモードが指定されたときには、クロック信号ＣＬＫをそのまま出力するものである。ゲートセル１２は、ＡＮＤゲートと同様の機能を有しているが、入力信号の変化時にひげ状のパルスが発生しないように構成されたゲートである。
【００２８】
ゲートセル１２の出力側は、クロック供給路１３を介してラッチ１０１〜１０３のゲート端子Ｇに接続されると共に、インバータ１４とクロック供給路１５を介してラッチ１０４のゲート端子Ｇに接続されている。なお。図示していないが、論理ブロック１１，１２には、他の回路や外部入力端子からその他の入力信号が与えられ、処理結果の信号の一部は他の回路や外部出力端子へ出力されるようになっている。
【００２９】
図３は、図１の半導体集積回路の設計手順を示すフローチャートである。また、図４は、スキャンＦＦ間のデータ転送タイミングの説明図であり、図５は、ラッチとスキャンＦＦに与えられるクロック信号のタイミングの説明図である。以下、これらの図３〜図５を参照しつつ、図１の半導体集積回路の設計方法を説明する。
【００３０】
ステップＳ１において、通常のタイミング調整用のＦＦを使用した回路図の情報（ネットリスト）を用い、この通常のＦＦをスキャンＦＦ２１〜２４に置き換える。
【００３１】
ステップＳ２において、スキャン入力端子３からスキャン出力端子６に至るスキャンパスを設定する。即ち、スキャンＦＦ２１〜２４のスキャンの順番を決定し、スキャン入力端子３とスキャン出力端子６を設け、決定した順番に従ってスキャンＦＦをチェーン状に接続するスキャン経路４１〜４５を設ける。
【００３２】
ステップＳ３において、スキャンパス上の各スキャンＦＦ２１〜２４の前段に、ラッチ１０１〜１０４を挿入する。このとき、クロック信号ＣＬＫの立ち上がりエッジで動作するスキャンＦＦ２１〜２３には、このクロック信号ＣＬＫの立ち下がりのエッジで動作するラッチ１０１〜１０３を挿入する。また、クロック信号ＣＬＫの立ち下がりエッジで動作するスキャンＦＦ２４には、このクロック信号ＣＬＫの立ち上がりのエッジで動作するラッチ１０４を挿入する。
【００３３】
ステップＳ４において、クロック信号ＣＬＫの出力をモード選択信号ＭＯＤによって制御するゲートセル１２を設ける。
【００３４】
ステップＳ５において、ステップＳ３で挿入したラッチの内でクロック信号の立ち下がりのエッジで動作するラッチ１０１〜１０３には、クロック信号ＣＬＫを同位相で供給するためのクロック供給路１３を設ける。また、クロック信号ＣＬＫの立ち上がりのエッジで動作するラッチ１０４には、クロック信号ＣＬＫを反転して供給するためのインバータ１４とクロック供給路１５を設ける。
【００３５】
ここで、クロック信号の立ち上がりで動作するラッチと、立ち下がりで動作するラッチを分離する理由は次のとおりである。
【００３６】
例えば図４に示すように、クロック信号ＣＬＫの立ち上がりエッジで動作するスキャンＦＦ２３の後段に、クロック信号ＣＬＫの立ち下がりエッジで動作するスキャンＦＦ２４が接続された場合、クロック１サイクル中にスキャンＦＦ２３，２４のデータが変化してしまうので、スキャン経路４４に故障が発生してもスキャンモードでの故障判断ができなくなるためである。また、スキャンＦＦ２３，２４の接続順序が逆の場合は、故障判定が２サイクルとなるので判断は可能であるが、ラッチ挿入後のクロックの調整が非常に難しくなるためである。
【００３７】
ステップＳ６において、各スキャンＦＦ２１〜２４に供給されるクロック信号と、各ラッチ１０１〜１０４に供給されるクロック信号のタイミング差を算定し、クロック端子７とクロック供給路８の間に遅延時間を調整するための遅延バッファ１１を挿入する。
【００３８】
ここで、図５に示すように、クロック信号の立ち上がりで動作するスキャンＦＦに対しては、前段にクロック信号の立ち下がりで動作するラッチが設けられているので、このスキャンＦＦにはラッチに与えるクロック信号が立ち下がった後で、クロック信号が立ち上がるように遅延バッファ１１の遅延量を設定する。また、クロック信号の立ち下がりで動作するスキャンＦＦに対しては、前段にクロック信号の立ち上がりで動作するラッチが設けられているので、このスキャンＦＦにはラッチに与えるクロック信号が立ち上がった後で、クロック信号が立ち下がるように遅延バッファ１１の遅延量を設定する。
【００３９】
ステップＳ７において、シミュレーションによってタイミングの確認を行い、所定の機能が満たされていると判定されれば、設計は終了する。
【００４０】
次に、図１の半導体集積回路の動作を説明する。
この半導体集積回路では、モード選択信号ＭＯＤによってスキャンモードが指定されると、各スキャンＦＦ２１〜２４は入力端子ＳＩ側が選択される。これにより、スキャン入力端子３から、スキャン経路４１→ラッチ１０１→スキャンＦＦ２１→スキャン経路４２→ラッチ１０２→スキャンＦＦ２２→・・・→スキャンＦＦ２４→スキャン経路４５を経てスキャン出力端子６に至るスキャンパスが構成される。
【００４１】
この状態で、クロック端子７のクロック信号ＣＬＫに同期して、スキャン入力端子３からスキャン入力データＳＩＮを順次直列に入力すると、入力されたスキャン入力データＳＩＮは、クロック信号ＣＬＫが“Ｌ”の時にラッチ１０１に取り込まれ、このクロック信号ＣＬＫが“Ｈ”になると、直前に取り込んだデータがそのまま保持される。従って、スキャンＦＦ２１には、クロック信号ＣＬＫの立ち上がりによってラッチ１０１に保持されたデータが取り込まれて出力される。クロック信号ＣＬＫの立ち上がり毎に、このような動作が繰り返され、クロック信号ＣＬＫに同期して順次直列に入力されたスキャン入力データＳＩＮが、スキャンパス上のシフトレジスタを構成するスキャンＦＦ２１〜２４に保持される。スキャンＦＦ２１〜２４に保持されたスキャン入力データＳＩＮは、論理ブロック１１，１２へ入力信号として与えられ、これによってこれらの論理ブロック１１，１２からスキャン入力データＳＩＮに応じた処理結果の信号が出力される。
【００４２】
ここで、モード選択信号ＭＯＤを通常動作モードに切り替えて、クロック信号ＣＬＫを１パルスだけ与えると、論理ブロック１１，１２の出力信号がスキャンＦＦ２１〜２４に保持される。
【００４３】
その後、モード選択信号ＭＯＤによってスキャンモードに戻し、クロック端子７にクロック信号ＣＬＫを与えると、スキャンＦＦ２１〜２４に保持されている論理ブロック１１，１２の出力信号が、スキャン出力端子６から順次出力される。
【００４４】
スキャン出力端子６から出力されたスキャン出力データＳＯＵＴを、スキャン入力データＳＩＮに対応して予め計算しておいた期待値と比較することにより、論理ブロック１１，１２の動作を確認することができる。
【００４５】
一方、モード選択信号ＭＯＤによって通常動作モードが指定されたときには、各スキャンＦＦ２１〜２４は入力端子Ｄ側に切り替えられるので、これらのスキャンＦＦ２１〜２４を接続するスキャンチェーンは無くなる。これにより、論理ブロック１１，１２には所定の入力信号経路で伝搬された入力信号が、スキャンＦＦ２１〜２４からクロック信号ＣＬＫのタイミングに従って与えられる。
【００４６】
以上のように、本実施例の半導体集積回路は、スキャンパス上にタイミング調整用の遅延バッファ５に代えてラッチ１０を設け、スキャンＦＦ２とは反対のクロックエッジでデータを保持するようにしている。これにより、スキャンパスにおける遅延時間に特別な配慮を必要とせずに、データのシフト動作が可能になるという利点がある。
【００４７】
また、ゲートセル１２を設け、通常動作モード時にラッチ１０に対するクロック信号ＣＬＫの供給を停止するようにしている。これにより、遅延バッファ５を用いた場合よりも消費電力を低減することができる。
【００４８】
また、スキャンＦＦ２と同数のラッチ１０が必要になるが、ラッチ１０を構成するゲート数は一定であるので、必要な遅延時間に応じて遅延素子の数を増減させる場合に比べて回路規模を縮小することができる可能性が高い。
【００４９】
更に、スキャンＦＦに与えるクロック信号ＣＬＫのタイミングを調整するだけで、スキャンモード時のデータ保持タイミングを保証することができるので、回路規模の縮小と設計時間の短縮が可能である。例えば、２００ｋゲート程度のマイクロプロセッサの場合、従来の設計方法に比べて、面積で３％程度、ゲート数で７％程度の縮小が可能になり、消費電力では８％程度の削減ができた。また、設計に必要な日数では、３日程度の短縮効果が見られた。
【００５０】
なお、本発明は、上記実施例１に限定されず、種々の変形が可能である。この変形例としては、例えば、次のようなものがある。
（１）  論理ブロックやその入出力信号の数は一例である。また、スキャンパスは１本として説明したが、複数のスキャンパスを並列して設けることができる。
（２）  単一のクロック信号を用いる回路を説明したが、複数のクロック信号を用いる回路では、各クロック信号に対して同様の回路を構成することができる。
（３）  クロック信号ＣＬＫの立ち上がりエッジで動作するスキャンＦＦと、立ち下がりエッジで動作するスキャンＦＦが混在した場合を説明したが、すべてのスキャンＦＦが同じエッジで動作する場合には、ラッチに対するクロック供給路は１つで良い。
【図面の簡単な説明】
【００５１】
【図１】本発明の実施例を示す半導体集積回路の概略の構成図である。
【図２】従来の半導体集積回路の概略の構成図である。
【図３】図１の半導体集積回路の設計手順を示すフローチャートである。
【図４】スキャンＦＦ間のデータ転送タイミングの説明図である。
【図５】ラッチとスキャンＦＦに与えられるクロック信号のタイミングの説明図である。
【符号の説明】
【００５２】
１    論理ブロック
２    スキャンＦＦ
４    スキャン経路
１０    ラッチ
１１    遅延バッファ
１２    ゲートセル
【図１】
2007170959.tif 000003
【図２】
2007170959.tif 000004
【図３】
2007170959.tif 000005
【図４】
2007170959.tif 000006
【図５】
2007170959.tif 000007