(57)【要約】【課題】クロックゲーティング回路を搭載した半導体集積回路の回路規模の増大を抑制しながら、テスト時の消費電力を低減する。【解決手段】本発明による半導体集積回路は、第１フリップフロップ回路５、第２フリップフロップ回路７、制御回路３、及びクロックゲーティング回路２を具備する。第１フリップフロップ５は、スキャンシフトによって第１データを格納する。第２フリップフロップ７は、スキャンシフトによって第２データを格納する。第３制御回路３は、第１データとスキャンイネーブル信号ＳＭＣとの論理演算結果と、第２データと組合せ回路９からの第１イネーブル信号ＥＮ１との論理演算結果との論理演算結果をゲート制御信号Ｃ１として出力する。クロックゲーティング回路２は、ゲート制御信号Ｃ１に応じて次段のフリップフロップ回路１へのクロック信号ＣＬＫの伝播を制御する。【選択図】図１
2013061229.tif 000002
【特許請求の範囲】
【請求項１】
第２実施例
スキャンシフトによって第１データを格納する第１フリップフロップと、
スキャンシフトによって第２データを格納する第２フリップフロップと、
前記第１データとスキャンイネーブル信号との論理演算結果をイネーブル制御信号として出力する第１制御回路と、
組合せ回路からの第１イネーブル信号と前記第２データとの論理演算結果を第２イネーブル信号として出力する第２制御回路と、
前記イネーブル制御信号と前記第２イネーブル信号との論理演算結果をゲート制御信号として出力する第３制御回路と、
前記ゲート制御信号に応じて次段のフリップフロップ回路へのクロック信号の伝播を制御するクロックゲーティング回路と
を具備する
半導体集積回路。
【請求項２】
請求項１に記載の半導体集積回路において、
前記第１制御回路は、前記第１データと前記スキャンイネーブル信号との論理和を前記イネーブル信号として出力するＯＲゲートであり、
前記第２制御回路は、前記第１イネーブル信号と前記第２データとの論理積を前記第２イネーブル信号として出力するＡＮＤゲートであり、
前記第３制御回路は、前記イネーブル制御信号と前記第２イネーブル信号との論理和を前記ゲート制御信号として出力するＯＲゲートである
半導体集積回路。
【請求項３】
ＣＰＵが、ＲＴＬ記述による半導体集積回路にクロックゲーティング回路を挿入するステップと、
前記ＣＰＵが、前記クロックゲーティング回路と、前記クロックゲーティング回路によって、クロック信号の伝播が制御されるフリップフロップの数とを対応付けてＣＧＣ制御データベースとして記録するステップと、
前記ＣＰＵが、スキャンシフトによって自身に格納されるデータによって前記クロックゲーティング回路に対するイネーブル信号の入力を制御するフリップフロップ回路を、前記半導体集積回路に挿入するステップと、
前記ＣＰＵが、前記フリップフロップ回路と前記クロックゲーティング回路とを対応付けて前記ＣＧＣ制御データベースに記録するステップと
を具備する
半導体集積回路の設計支援方法。
【請求項４】
請求項３に記載の設計支援方法において、
前記フリップフロップ回路を挿入するステップは、
前記ＣＰＵが、スキャンシフトによって第１データを格納する第１フリップフロップと、スキャンシフトによって第２データを格納する第２フリップフロップと、前記第１データとスキャンイネーブル信号との論理演算結果をイネーブル制御信号として出力する第１制御回路と、組合せ回路からの第１イネーブル信号と前記第２データとの論理演算結果を第２イネーブル信号として出力する第２制御回路と、前記イネーブル制御信号と前記第２イネーブル信号との論理演算結果をゲート制御信号として出力する第３制御回路とを追加するステップと、
前記ＣＰＵが、前記クロックゲーティング回路のイネーブル端子と前記ゲート制御信号が供給される信号線とを接続するステップと
を備え、
前記フリップフロップ回路と前記クロックゲーティング回路とを対応付けて前記ＣＧＣ制御データベースに記録するステップは、前記ＣＰＵが、前記第２フリップフロップと、前記クロックゲーティング回路とを対応付けて前記ＣＧＣ制御データベースとして記憶装置に記録するステップを備える
半導体集積回路の設計支援方法。
【請求項５】
請求項３又は４に記載の設計支援方法において、
前記ＣＰＵが、前記ＣＧＣ制御データベースと予め指定されたフリップフロップの活性化率に基づいてスキャンパステストにおけるテストパタンを生成するステップを更に具備する
半導体集積回路の設計支援方法。
【請求項６】
請求項３から５のいずれか１項に記載の設計支援方法をコンピュータに実行させる半導体集積回路の設計支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スキャンパステストが実行可能な半導体集積回路、その設計支援方法、及び設計支援プログラムに関する。
【背景技術】
【０００２】
近年、低消費電力化を実現するため、フリップフロップ回路に対する不要なクロック入力を一時的に遮断するクロックゲーティング（Ｃｌｏｃｋ  Ｇａｔｉｎｇ：ＣＧ、ゲーテッドクロック（ＧＣ）とも称す）手法が適用されている。クロックゲーティング回路（Ｃｌｏｃｋ  Ｇａｔｉｎｇ  Ｃｉｒｃｕｉｔ：ＣＧＣ）は、前段の組合せ回路から出力されたイネーブル信号に応じて次段のフリップフロップ回路へクロック信号の入力を制御する。クロックゲーティング回路は、クロック周波数が同じクロックドメイン毎に設けられることが好ましい。これにより、同時に動作するフリップフロップの数を少なくし、消費電力を低減することができる。
【０００３】
一方、半導体集積回路の故障状態を検出するテスト容易化（ＤＦＴ：Ｄｅｓｉｇｎ  Ｆｏｒ  Ｔｅｓｔ）技術として、スキャンパステストがある。スキャンパステストでは、スキャンモード（シフトモード又はスキャンシフトモードとも称す）において、回路内のフリップフロップ回路によりスキャンパス（スキャンチェーンとも称す）が形成され、通常動作モードにおいて、半導体集積回路本来の機能を実現する組合せ回路（論理回路）が形成される。スキャンモードでは、スキャンシフト動作によりスキャンパス上のフリップフロップ回路（以下、スキャンレジスタと称す）に対するデータの書込み（スキャンイン）や取り出し（スキャンアウト）が行われる。又、スキャンインによりスキャンパスにテストパタンデータが格納された後、キャプチャモードに切替えられる。キャプチャモードでは、通常動作時と同様に半導体集積回路内の組合せ回路にフリップフロップ回路（スキャンレジスタ）が接続され、組合せ回路にフリップフロップ回路内のテストパタンデータが取り込まれる。組合せ回路は、当該データに基づいた処理結果を、次段のフリップフロップ回路に格納する。続いて、スキャンモードに切替えられることで再度スキャンパスが形成され、スキャンシフト動作によってスキャンレジスタ内のデータが外部に取り出される（スキャンアウト）。これにより、テストパタンに応じた組合せ回路の動作解析を行うことが可能となる。
【０００４】
クロックゲーティング回路が搭載されている半導体集積回路に対してスキャンパステストを行う場合、クロックゲーティング回路に対するイネーブル信号線の故障検出を行うことが要求される。
【０００５】
イネーブル信号線の故障を検出する方法として、イネーブル信号線にテストポイント挿入（ＴＰＩ）を行う方法や、スキャンイネーブル信号によって制御される選択回路によって、クロックゲーティング回路の動作を制御する方法がある。
【０００６】
例えば、テストモード信号とイネーブル信号の論理和によりクロックゲーティング回路の動作を制御する場合、イネーブル信号線にテストポイントを挿入することでイネーブル信号の故障を検出することができる。しかし、テストモード時、テストモード信号はハイレベル“１”に固定されるため、クロックゲーティング回路は、イネーブル信号に関わらず常にクロック信号をフリップフロップ回路に伝搬させる。この間、フリップフロップ回路に対するクロック信号の伝搬制御はできないため、テスト時における消費電力を抑制することができない。
【０００７】
一方、スキャンイネーブル信号とイネーブル信号との論理和によりクロックゲーティング回路の動作を制御する方法の場合、スキャンシフト時、スキャンイネーブル信号がハイレベル“１”であるため、クロックゲーティング回路はクロック信号をフリップフロップ回路に伝搬させる。一方、キャプチャ時には、スキャンイネーブル信号がハイレベル“０”に固定されるため、クロックゲーティング回路は、イネーブル信号に応じてフリップフロップ回路に対するクロック信号の入力を制御可能となる。しかし、キャプチャ中にもクロック信号をフリップフロップ回路に伝搬させるためには、組合せ回路からのイネーブル信号の論理レベルを制御する必要がある。このため、テストパタンが複雑化するとともにその数が増大してしまう。
【０００８】
このようなテストパタンの増大を防ぐため、スキャンイネーブル信号に替えて外部端子から入力される制御信号によってクロックゲーティング回路を制御する方法がある。しかし、この方法の場合、制御信号用の外部端子を新たに設ける必要があるため、コストの増大が問題となる。
【０００９】
上述のような問題を解決する半導体集積回路が、例えば、特開２０１０−２２３７９３に記載されている（特許文献１参照）。特許文献１に記載の半導体集積回路では、スキャンレジスタに格納されたデータを利用して、クロックゲーティング回路へのイネーブル信号の入力を制御している。このため、組合せ回路に入力するテストパタンを複雑化することなく、クロックゲーティング動作を自由に制御することが可能となる。この結果、特許文献１に記載の半導体集積回路は、クロックゲーティング回路を制御するための外部端子を新たに用意することなく、少ないテストパタン数でイネーブル信号線の故障検出ができる。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２０１０−２２３７９３
【発明の概要】
【発明が解決しようとする課題】
【００１１】
特許文献１に記載の技術では、クロックゲーティング回路に対するスキャンイネーブル信号の入力のみならず、組み合わせ回路からのイネーブル信号の入力も、スキャンレジスタ内のテストパタンデータによって制御している。特許文献１では、イネーブル信号の入力を任意に設定可能なテストパタンデータによって制御できるため、キャプチャ時においても、フリップフロップ回路に対するクロックの入力を遮断することが可能となる。これにより、テスト対象とならないフリップフロップ回路のトグルが抑制されるため、キャプチャ時の電力を削減することができる。
【００１２】
しかし、特許文献１では、複数のスキャンレジスタに格納されたデータの組み合わせによって、イネーブル信号の入力を遮断するクロックゲーティング回路を決定している。このため、Ｎ個のクロックゲーティング回路を制御する場合、Ｎ個のスキャンレジスタが必要となる。又、この場合、Ｎ出力のデコーダをＮ−１個用意するとともに、クロックゲーティング回路を制御するデコーダをＮ−１個のデコーダから選択する選択回路を用意する必要がある。
【００１３】
従って、特許文献１に記載の半導体集積回路では、スキャンパステストの省電力化のためにスキャンレジスタに格納するデータパタンは複雑化し、回路規模も増大してしまう。特に、制御対象となるクロックゲーティング回路の数が増大した場合、デコーダ数や選択回路数が増大するため回路規模も大きくなる。又、デコーダ出力数や選択回路を制御する制御信号数に応じてスキャンレジスタ数も増えるため、テストパタンデータ量も増大してしまう。
【課題を解決するための手段】
【００１４】
上記の課題を解決するために、本発明は、以下に述べられる手段を採用する。その手段を構成する技術的事項の記述には、［特許請求の範囲］の記載と［発明を実施するための形態］の記載との対応関係を明らかにするために、［発明を実施するための形態］で使用される番号・符号が付加されている。ただし、付加された番号・符号は、［特許請求の範囲］に記載されている発明の技術的範囲を限定的に解釈するために用いてはならない。
【００１５】
本発明による半導体集積回路は、第１フリップフロップ回路（５）、第２フリップフロップ回路（７）、第１制御回路（４）、第２制御回路（６）、第３制御回路（３）、及びクロックゲーティング回路（２）を具備する。第１フリップフロップ（５）は、スキャンシフトによって第１データを格納する。第２フリップフロップ（７）は、スキャンシフトによって第２データを格納する。第１制御回路（４）は、第１データとスキャンイネーブル信号（ＳＭＣ）との論理演算結果をイネーブル制御信号（Ｃ２）として出力する。第２制御回路（６）は、組合せ回路（９）からの第１イネーブル信号（ＥＮ１）と第２データとの論理演算結果を第２イネーブル信号（ＥＮ２）として出力する。第３制御回路（３）は、イネーブル制御信号（Ｃ２）と第２イネーブル信号（ＥＮ２）との論理演算結果をゲート制御信号（Ｃ１）として出力する。クロックゲーティング回路（２）は、ゲート制御信号（Ｃ２）に応じて次段のフリップフロップ回路（１）へのクロック信号（ＣＬＫ）の伝播を制御する。
【００１６】
他の観点において本発明による半導体集積回路の設計支援方法は、ＣＰＵ（１１０）が、ＲＴＬ記述による半導体集積回路にクロックゲーティング回路（２）を挿入するステップと、ＣＰＵ（１１０）が、クロックゲーティング回路（２）と、クロックゲーティング回路（２）によって、クロック信号（ＣＬＫ）の伝播が制御されるフリップフロップ（１）の数とを対応付けてＣＧＣ制御データベース（２０２）として記録するステップと、ＣＰＵ（１１０）が、スキャンシフトによって自身に格納されるデータによってクロックゲーティング回路に対するイネーブル信号の入力を制御するフリップフロップ回路（７）を、半導体集積回路に挿入するステップと、ＣＰＵ（１１０）が、フリップフロップ回路（７）とクロックゲーティング回路（２）とを対応付けてＣＧＣ制御データベース（２０２）に記録するステップとを具備する。
【発明の効果】
【００１７】
本発明によれば、クロックゲーティング回路を搭載した半導体集積回路の回路規模の増大を抑制しながら、テスト時の消費電力を低減することができる。
【００１８】
又、組合せ回路とクロックゲーティング回路とを接続するイネーブル信号線の異常を検出することができる。
【００１９】
更に、スキャンパステスト時のフリップフロップの活性化率を容易に設定することができる。
【図面の簡単な説明】
【００２０】
【図１】図１は、本発明による半導体集積回路の構成の一例を示す図である。
【図２】図２は、本発明に係るモード制御回路の動作の一例を示す真理値表である。
【図３】図３は、本発明に係るイネーブル制御回路の動作の一例を示す真理値表である。
【図４】図４は、本発明に係るゲート制御回路３の動作の一例を示す真理値表である。
【図５】図５は、本発明による半導体集積回路の構成の他の一例を示す図である。
【図６】図６は、本発明に係る半導体集積回路設計支援装置の構成の一例を示す図である。
【図７】図７は、本発明に係る半導体集積回路の設計方法の一例を示すフロー図である。
【図８】図８は、本発明に係るＣＧＣ制御データベースの構造の一例を示す図である。
【発明を実施するための形態】
【００２１】
以下、添付図面を参照しながら本発明の実施の形態を説明する。図面において同一、又は類似の参照符号は、同一、類似、又は等価な構成要素を示す。
【００２２】
（半導体集積回路）
図１から図５を参照して、本発明による半導体集積回路の構成の一例を説明する。図１は、本発明による半導体集積回路の構成の一例を示す図である。図１に示す半導体集積回路は、フリップフロップ回路１−１〜１−３、５、７、１０、１２、クロックゲーティング回路２、ゲート制御回路３（第３制御回路）、モード制御回路４（第１制御回路）、イネーブル制御回路６（第２制御回路）、組合せ回路９、１１を具備する。
【００２３】
フリップフロップ回路１−１〜１−３、５、７、１０、１２は、スキャンモードにおいて他のフリップフロップ回路（図示しないフリップフロップ回路も含んでも良い）とともにシリアルに接続されてスキャンパスを形成し、スキャンレジスタとして機能する。フリップフロップ回路１−１〜１−３、５、７、１０、１２は、スキャンモードにおけるスキャンシフト動作によってテストパタンデータが設定されるため、それぞれに設定する値は一意に決定できる。スキャンテストにおいては、フリップフロップ回路を始点、終点とした組合せ回路のロジックコーンとして扱えば良いため、テストパタンデータの作成は容易である。そのテストパタンデータの長さはフリップフロップ回路間に設けられた組合せ回路の論理の複雑さ、深さによって決まる。
【００２４】
組合せ回路１１は、キャプチャモードにおいて、前段に接続されるフリップフロップ回路１２からの出力データを処理し、処理結果を、後段に接続されるフリップフロップ回路１−１に出力する。フリップフロップ回路１−１は、クロックゲーティング回路２から供給されるクロック信号ＣＬＫに同期して、組合せ回路１１からの出力データを格納する。同様に、キャプチャモード時、フリップフロップ１−２、１−３は、図示しない組合せ回路に接続され、クロックゲーティング回路２から供給されるクロック信号ＣＬＫに同期して、フリップフロップ回路からの出力データを格納する。
【００２５】
クロックゲーティング回路２は、ゲート制御回路３からのゲート制御信号Ｃ１に応じて、フリップフロップ回路へのクロック信号の伝搬又は遮断を制御する。詳細には、クロックゲーティング回路２は、クロック信号ＣＬＫが供給されるクロック端子ＣＬＫとゲート制御信号Ｃ１が入力されるイネーブル端子ＥＮと、次段のフリップフロップ回路にクロック信号ＣＬＫを供給するクロック端子ＧＣＬＫを備える。クロックゲーティング回路２は、ゲート制御信号Ｃ１に応じて、クロック信号ＣＬＫを伝搬させるか遮断するかを決定し、伝搬させる場合、クロック信号ＣＬＫを、クロック端子ＧＣＬＫを介してフリップフロップ回路１−１〜１−３に出力する。例えば、クロックゲーティング回路２は、クロック信号ＣＬＫの反転信号に応じてゲート制御信号Ｃ１を保持するラッチ回路と、クロック信号ＣＬＫが示す論理値と当該ラッチ回路からの出力（ゲート制御信号Ｃ１）が示す論理値との論理積をクロック端子ＧＣＬＫに出力するＡＮＤゲートを備える（図示なし）。この場合、クロックゲーティング回路２は、ゲート制御信号Ｃ１がハイレベル“１”のとき、クロック信号ＣＬＫをクロック端子ＧＣＬＫに出力し、ゲート制御信号Ｃ１がハイレベル“０”のとき、ローレベル“０”の信号をクロック端子ＧＣＬＫに出力する。すなわち、クロックゲーティング回路２は、ハイレベル“１”のゲート制御信号Ｃ１に応じて、クロック信号ＣＬＫを伝搬させて制御対象となるフリップフロップ１−１〜１−３に供給し、ローレベル“０”のゲート制御信号Ｃ１に応じて、フリップフロップ回路１−１〜１−３へのクロック信号ＣＬＫを遮断する。
【００２６】
ゲート制御回路３は、モード制御回路４から出力されたイネーブル制御信号Ｃ２が示す論理値と、イネーブル制御回路６から出力されたイネーブル信号（以下、第２イネーブル信号ＥＮ２と称す）が示す論理値との論理演算結果を、ゲート制御信号Ｃ１としてクロックゲーティング回路２に出力する。ここでは、ゲート制御回路３として、イネーブル制御信号Ｃ２と第２イネーブル信号ＥＮ２との論理和をゲート制御信号Ｃ１として出力するＯＲゲートが好適に利用される。尚、ゲート制御回路３は、クロックゲーティング回路２に内蔵されていても良い。ゲート制御回路３の動作の詳細は後述する。
【００２７】
モード制御回路４は、スキャンイネーブル信号ＳＭＣが示す論理値と、フリップフロップ回路５（第１フリップフロップ）の保持データ（第１データ）との論理演算結果を、イネーブル制御信号Ｃ２としてゲート制御回路３に出力する。ここでは、モード制御回路４として、スキャンイネーブル信号ＳＭＣとフリップフロップ回路５の保持データとの論理和を、イネーブル制御信号Ｃ２として出力するＯＲゲートが好適に利用される。尚、スキャンイネーブル信号ＳＭＣは、スキャンモードとキャプチャモードとの切り替えを制御する信号である。例えば、半導体集積回路は、ハイレベル“１”のスキャンイネーブル信号ＳＭＣに応じてスキャンモードに設定され、ローレベル“０”のスキャンイネーブル信号ＳＭＣに応じてキャプチャモードに設定される。
【００２８】
図２は、本発明に係るモード制御回路４の動作の一例を示す真理値表である。図２を参照して、モード制御回路４は、スキャンイネーブル信号ＳＭＣがローレベル“０”の場合、フリップフロップ回路５の保持データが示す論理値のイネーブル制御信号Ｃ２を、ゲート制御回路３に出力する。すなわち、モード制御回路４は、キャプチャモードのとき、フリップフロップ回路５の保持データがイネーブル制御信号Ｃ２として出力する。一方、スキャンイネーブル信号ＳＭＣがハイレベル“１”の場合、フリップフロップ回路５の保持データが示す論理値に関わらず、ハイレベル“１”のイネーブル制御信号Ｃ２をゲート制御回路３に出力する。すなわち、モード制御回路４は、スキャンモードのとき、フリップフロップ回路５の保持データに関わらずハイレベル“１”のイネーブル制御信号Ｃ２を出力する。上述したモード制御回路４の動作を換言すると、モード制御回路４は、フリップフロップ回路５の保持データがハイレベル“１”を示す場合、スキャンイネーブル信号ＳＭＣが示す論理値に関わらず、ハイレベル“１”のイネーブル制御信号Ｃ２をゲート制御回路３に出力する。すなわち、モード制御回路４は、フリップフロップ回路５の保持データがハイレベル“１”の場合、ゲート制御回路３へのスキャンイネーブル信号ＳＭＣの伝搬を遮断し、イネーブル制御信号Ｃ２をハイレベル”１”に固定する。一方、フリップフロップ回路５の保持データがローレベル“０”の場合、モード制御回路４は、スキャンイネーブル信号ＳＭＣが示す論理値のイネーブル制御信号Ｃ２を、ゲート制御回路３に出力する。すなわち、フリップフロップ回路５の保持データがローレベル“０”の場合、モード制御回路４は、スキャンイネーブル信号ＳＭＣをイネーブル制御信号Ｃ２としてゲート制御回路３に出力（伝播）する。この際、キャプチャモードの場合、ローレベル“０”のスキャンイネーブル信号ＳＭＣがイネーブル制御信号Ｃ２としてゲート制御回路３に出力され、スキャンモードの場合、ハイレベル“１”のスキャンイネーブル信号ＳＭＣがイネーブル制御信号Ｃ２としてゲート制御回路３に出力される。
【００２９】
このように、本発明に係るモード制御回路４は、スキャンシフトによってフリップフロップ回路５に設定されたテストパタンデータを用いて、スキャンイネーブル信号ＳＭＣのゲート制御回路３（クロックゲーティング回路２）への伝搬を制御することができる。
【００３０】
フリップフロップ回路５は、スキャンモードにおいて、他のフリップフロップ回路とともにスキャンパスを形成するスキャンレジスタとして機能する。このため、スキャンシフト動作によってテストデータがフリップフロップ回路５に書き込まれる。フリップフロップ回路５の保持データは、キャプチャモードにおいてゲート制御回路３を制御するイネーブル制御信号Ｃ２となる。すなわち、キャプチャモードにおけるイネーブル制御信号Ｃ２の値は、スキャンレジスタに設定されたテストパタンデータによって設定されることとなる。
【００３１】
組合せ回路１１は、キャプチャモードにおいて、前段に接続されるフリップフロップ回路１０からの出力データを処理し、処理結果（以下、第１イネーブル信号ＥＮ１と称す）を、イネーブル信号線８を介してイネーブル制御回路６に出力する。第１イネーブル信号ＥＮ１のクロックゲーティング回路２への入力は、イネーブル制御回路６及びゲート制御回路３によって制御される。
【００３２】
イネーブル制御回路６は、イネーブル信号線８を介して組合せ回路９から出力された第１イネーブル信号ＥＮ１が示す論理値と、フリップフロップ回路７（第２フリップフロップ）の保持データ（第２データ）との論理演算結果を、第２イネーブル信号ＥＮ２としてゲート制御回路３に出力する。ここでは、イネーブル制御回路６として、第１イネーブル信号ＥＮ１とフリップフロップ回路７の保持データとの論理積を、第２イネーブル信号ＥＮ２として出力するＡＮＤゲートが好適に利用される。尚、第１イネーブル信号ＥＮ１は、フリップフロップ回路１０の保持データに基づいた組合せ回路９の処理結果である。
【００３３】
図３は、本発明に係るイネーブル制御回路６の動作の一例を示す真理値表である。図３を参照して、イネーブル制御回路６は、フリップフロップ回路７の保持データがハイレベル“１”の場合、第１イネーブル信号ＥＮ１が示す論理値の第２イネーブル信号ＥＮ２を、ゲート制御回路３に出力する。すなわち、フリップフロップ回路７の保持データがハイレベル“１”の場合、イネーブル制御回路６は、組合せ回路９からの第１イネーブル信号ＥＮ１を第２イネーブル信号ＥＮ２としてゲート制御回路３に出力（伝播）する。一方、フリップフロップ回路７の保持データがローレベル“０”の場合、イネーブル制御回路６は、第１イネーブル信号ＥＮ１が示す論理値に関わらず、ローレベル“０”の第２イネーブル信号ＥＮ２をゲート制御回路３に出力する。すなわち、イネーブル制御回路６は、フリップフロップ回路７の保持データがローレベル“０”の場合、クロックゲーティング回路２への第１イネーブル信号ＥＮ１の伝搬を遮断し、第２イネーブル信号ＥＮ２を“０”に固定する。
【００３４】
このように、本発明に係るイネーブル制御回路６は、スキャンシフトによってフリップフロップ回路７に設定されたテストパタンデータを用いて、第１イネーブル信号ＥＮ１のゲート制御回路３（クロックゲーティング回路２）への伝搬を制御することができる。
【００３５】
図４は、本発明に係るゲート制御回路３の動作の一例を示す真理値表である。図２から図４を参照して、ゲート制御回路３は、イネーブル制御信号Ｃ２が示す論理値がローレベル“０”を示す場合、第２イネーブル信号ＥＮ２が示す論理値のゲート制御信号Ｃ１を、クロックゲーティング回路２に出力する。すなわち、半導体集積回路がキャプチャモードに設定された場合、ゲート制御回路３は、第２イネーブル信号ＥＮ２をゲート制御信号Ｃ１としてクロックゲーティング回路２に出力（伝播）する。例えば、キャプチャモードにおいて、フリップフロップ回路７にハイレベル“１”のデータが保持されている場合、第１イネーブル信号ＥＮ１が第２イネーブル信号ＥＮ２としてゲート制御回路３に入力される。この場合、クロックゲーティング回路２は、組合せ回路９から出力された第１イネーブル信号ＥＮ１に応じてフリップフロップ回路１−１〜１−３へのクロック信号ＣＬＫの供給を制御することとなる。すなわち、スキャンシフトによりフリップフロップ回路７にハイレベル“１”のテストパタンデータを書き込むことで、キャプチャモードにおけるフリップフロップ回路１−１〜１−３に対するクロック信号ＣＬＫの供給又は遮断を、第１イネーブル信号ＥＮ１に応じて制御することが可能となる。あるいは、キャプチャモードにおいて、フリップフロップ回路７にローレベル“０”のデータが保持されている場合、ローレベル“０”の第２イネーブル信号ＥＮ２がゲート制御回路３に入力される。この場合、クロックゲーティング回路２は、フリップフロップ回路１−１〜１−３へのクロック信号ＣＬＫの供給を遮断する。すなわち、スキャンシフトによりフリップフロップ回路７にローレベル“０”のテストパタンデータを書き込むことで、キャプチャモードにおけるフリップフロップ回路１−１〜１−３に対するクロック信号ＣＬＫの供給を停止することが可能となる。これによりキャプチャモード時のフリップフロップ回路１−１〜１−３のトグルを抑えることができ、キャプチャ時の電力消費を削減することができる。フリップフロップ回路７及びイネーブル制御回路６をクロックグループ単位（クロックドメイン単位）で挿入することによって、クックドメイン単位でクロック信号が意図的に遮断される。これにより、半導体集積回路におけるキャプチャ時の消費電力は低減し、ＩＲドロップ等の影響は削減され、テスト時の特性が改善される。
【００３６】
一方、イネーブル制御信号Ｃ２が示す論理値がローレベル“１”を示す場合、ゲート制御回路３は、第２イネーブル信号ＥＮ２が示す論理値に関わらず、ハイレベル“１”のゲート制御信号Ｃ１をクロックゲーティング回路２に出力する。すなわち、ゲート制御回路３は、フリップフロップ回路５にハイレベル“１”のデータが設定されている場合、クロックゲーティング回路２への第２イネーブル信号ＥＮ２の伝搬を遮断し、ゲート制御信号Ｃ１を“１”に固定する。これにより、クロックゲーティング回路２は、スキャンイネーブル信号ＳＭＣ、第１イネーブル信号ＥＮ１、又はフリップフロップ回路７に格納されたデータの論理値に関わらずフリップフロップ回路１−１〜１−３にクロック信号ＣＬＫを出力（伝播）する。尚、スキャンモードの場合もイネーブル制御信号Ｃ２が示す論理値はローレベル“１”を示すため、フリップフロップ回路１−１〜１−３にクロック信号ＣＬＫは出力（伝播）され、スキャンシフト動作が可能となる。
【００３７】
本発明では、キャプチャモードにおいて、フリップフロップ回路５の保持データによってイネーブル制御信号Ｃ２をハイレベル“１”に固定し、クロック信号ＣＬＫをフリップフロップ回路１−１〜１−３に伝播させ、フリップフロップ回路７の保持データによって第２イネーブル制御信号Ｃ２をローレベル“０”に固定し、フリップフロップ回路１−１〜１−３へのクロック信号ＣＬＫを遮断する。このように、本発明では、キャプチャモードにおいて、第１イネーブル信号ＥＮ１に拠らず、フリップフロップ回路５、７に設定されたデータに基づいて、フリップフロップ回路１−１〜１−３へのクロック信号ＣＬＫの伝播を制御することができるため、イネーブル信号線８に対する故障検査を行うことが可能となる。又、この故障検査の際に行われるクロック信号ＣＬＫの伝播制御は、スキャンシフト動作によってフリップフロップ回路５、７に対し一意に設定されたテストパタンデータで行われるため、当該検査のために外部端子を用意する必要はない。更に、イネーブル信号線８の故障検出は最低１回行われれば良いため、当該故障検出テスト以外のテストパタンデータとして“１”をフリップフロップ回路５に設定することで、キャプチャモードにおいて、第２イネーブル信号ＥＮの値に拠らずフリップフロップ回路１−１〜１−３へのクロック信号ＣＬＫが伝搬することとなる。このためＡＴＰＧ時に制御しなければならない論理が減るため、パタン数を削減できる。
【００３８】
本発明では、第１イネーブル信号ＥＮ１及びフリップフロップ回路７内データの論理演算結果と、スキャンイネーブル信号ＳＭＣ及びフリップフロップ回路５内データの論理演算結果との論理演算結果によって、クロックゲーティング回路２のゲーティング動作を制御している。このため、キャプチャ時におけるクロック信号ＣＬＫの伝播を制御するためには、少なくとも３つの論理演算回路を必要とする。本実施の形態では１つのＡＮＤゲートと２つのＯＲゲートを用意するだけで、クロックゲーティング回路２の制御が可能となる。特に、キャプチャ時の消費電力低減のためにクロックゲーティング回路２のクロック伝搬を遮断する場合、１組のフリップフロップ回路７とイネーブル制御回路６（ここではＡＮＤゲート）のみを用意すれば良い。従って、本発明による半導体集積回路は、特許文献１に記載の回路に比べ格段に小型化できる。
【００３９】
図１に示す半導体集積回路の一例では、１つのクロックゲーティング回路２におけるクロック伝搬の制御を行う構成について説明したがこれに限らず、図５に示すように複数のクロックゲーティング回路２−１、２−２におけるクロック伝搬の制御が行われても良い。又、クロック伝搬が制御されるクロックゲーティング回路は、複数のみならず１つのフリップフロップ回路に対するクロック信号の供給を制御しても良い。
【００４０】
図５は、本発明による半導体集積回路の構成の他の一例を示す図である。図５に示す半導体集積回路では、ゲート制御回路３に複数のクロックゲーティング回路２−１、２−２が接続されている。又、クロックゲーティング回路２−１はフリップフロップ回路１−１１に対するクロック信号ＣＬＫの供給を制御し、クロックゲーティング回路２−２はフリップフロップ回路１−２１、１−２２に対するクロック信号ＣＬＫの供給を制御する。フリップフロップ回路１−１１は、組合せ回路１１−１１を介して前段のフリップフロップ回路１２−１１に接続され、フリップフロップ回路１−２１は、組合せ回路１１−２１を介して前段のフリップフロップ回路１２−２１に接続される。フリップフロップ回路１−２２も同様に図示しない組合せ回路に接続される。その他の構成は、図１に示す半導体集積回路と同様である。
【００４１】
本発明によれば、複数のクロックゲーティング回路２−１、２−２のクロック伝搬を制御する場合でも、ゲート制御回路３、モード制御回路４、フリップフロップ回路５、７、及びイネーブル制御回路６をそれぞれ１つ用意すれば良い。動作については、図１の説明と同様であるためその説明は省略する。又、ゲーティング動作の制御対象となるクロックゲーティング回路の駆動数は、１つとは限らず、複数でも構わない。ここで、駆動数とはクロックゲーティング回路がクロック信号ＣＬＫの供給を制御する対象のフリップフロップ回路の数を示す。
【００４２】
図５に示す一例では、１つのフリップフロップ回路７に設定されたデータによって、それぞれ駆動数が異なる複数のクロックゲーティング回路２−１、２−２のキャプチャ時におけるクロック遮断（電力消費抑制）が制御される。フリップフロップ回路７が制御可能なクロックゲーティング回路、すなわち、フリップフロップ回路７による電力抑制量は、半導体集積回路の設計時にＥＤＡツール又は設計者によって予め設定される。この際、クロックゲーティング回路の駆動数が考慮されて、フリップフロップ回路７と、これによって制御されるクロックゲーティング回路が対応付けられる。
【００４３】
（半導体集積回路の設計方法及びテストパタン生成方法）
図６から図８を参照して、本発明による半導体集積回路の設計支援装置、及び設計方法を説明する。
【００４４】
図６を参照して、本発明による半導体集積回路設計支援装置１００（以下、設計支援装置１００と称す）の構成の一例を説明する。図６は、本発明による設計支援装置１００の実施の形態における構成図である。設計支援装置１００は、バス１６０を介して相互に接続されるＣＰＵ１１０、ＲＡＭ１２０、入力装置１３０、出力装置１４０、記憶装置１５０を具備する。入力装置１３０は、キーボードやマウス等のユーザによって操作されることで、各種データをＣＰＵ１１０や記憶装置１５０に出力する。出力装置１４０は、モニタやプリンタに例示され、ＣＰＵ１１０から出力される半導体装置のレイアウト結果をユーザに対し視認可能に出力する。記憶装置１５０はハードディスクやメモリ等に例示される外部記憶装置である。
【００４５】
記憶装置１５０は、半導体集積回路設計支援プログラム２００（以下、設計支援プログラムと称す）、ＲＴＬ（Ｒｅｇｉｓｔｅｒ  Ｔｒａｎｓｆｅｒ  Ｌｅｖｅｌ）記述によるネットリスト２０１、及びＣＧＣ制御データベース２０２を格納している。ＣＰＵ１１０は、入力装置１３０からの入力に応答して、記憶装置１５０内の設計支援プログラム２００を実行することで、ＥＤＡツールとしての機能を実現する。この際、記憶装置１５０からの各種データやプログラムはＲＡＭ１２０に一時格納され、ＣＰＵ１１０は、ＲＡＭ１２０内のデータを用いて各種処理を実行する。
【００４６】
図７は、本発明に係る半導体集積回路の設計方法の一例を示すフロー図である。ここでは、図１又は図５に示す半導体集積回路に対するクロックゲーティング回路２の実装からテストパタンの作成までの設計方法を説明する。先ず、ＣＰＵ１１０は、予め設計された半導体集積回路のネットリスト２０１に対し、クロックゲーティング回路２を挿入する（ステップＳ１０１）。この際、ＣＰＵ１２は、挿入したクロックゲーティング回路２のインスタンス（以下ＣＧＣインスタンス２２と称す）と、当該クロックゲーティング回路２の駆動数（以下、ＣＧＣ駆動Ｆ／Ｆ数２３と称す）とを対応付けてＣＧＣ制御データベース２０２に記録する。図８は、本発明に係るＣＧＣ制御データベースの構造の一例を示す図である。図８を参照して、挿入されたクロックゲーティング回路２“ａ”の駆動数が“５”の場合、ＣＧＣインスタンス２２“ａ”とＣＧＣ駆動Ｆ／Ｆ数“５”とが対応付けられてＣＧＣ制御データベース２０２に記録される。尚、ステップＳ１０１の時点では、後述するパワー制御Ｆ／Ｆインスタンス２１は設定されていない。
【００４７】
続いて、ＣＰＵ１１０は、クロックゲーティング回路２を制御するためのフリップフロップ回路５、７をネットリスト２０１上に設定、又はネットリスト２０１に追加するとともに、ゲート制御回路３、モード制御回路４、イネーブル制御回路６をネットリスト２０１に追加し、それぞれの構成を結線する（ステップＳ１０２）。ＣＰＵ１１０は、クロックゲーティング回路２を制御するフリップフロップ回路７が決まると、当該フリップフロップ回路７のインスタンス（以下、パワー制御Ｆ／Ｆインスタンス２１と称す）と、制御対象のＣＧＣインスタンス２２とＣＧＣ駆動Ｆ／Ｆ数２３とを対応付けてＣＧＣ制御データベース２０２に記録する。
【００４８】
ステップＳ１０２においてＣＰＵ１１０は、ＣＧＣ制御データベース２０２を参照し、制御対象となるクロックゲーティング回路２のＣＧＣ駆動Ｆ／Ｆ数２３の数や、論理依存性、あるいはクロックゲーティング回路２の配置位置等を考慮して、クロックゲーティング回路２を制御するフリップフロップ回路５、７を追加する。例えば、１つのフリップフロップ回路７によってクロック信号ＣＬＫの停止対象となるフリップフロップ回路の総数（以下、総駆動数と称す）が均等になるようにクロックゲーティング回路２を制御するフリップフロップ回路７が決定されることが好ましい。あるいは、総駆動数の上限値又は下限値が、フリップフロップ回路７の挿入条件として定義され、ＣＧＣ駆動Ｆ／Ｆ数２３の総和が総駆動数の上限値以下又は下限値以上となるように、クロックゲーティング回路２を制御するフリップフロップ回路７が決定されることが好ましい。又、フリップフロップ回路７を追加する場合、フリップフロップ回路７とクロックゲーティング回路２との配置位置も考慮されることが好ましい。
【００４９】
図８は、１つのフリップフロップ回路７によってクロック供給を停止するフリップフロップ回路の上限が６と規定されている場合の設定例を示す。図８を参照して、ＣＰＵ１１０は、クロックゲーティング回路２“ａ”、“ｂ”、“ｃ”が近傍にあり同一クロック信号ＣＬＫを制御している場合、総駆動数が６以下となるように、フリップフロップ回路７“Ａ”、“Ｂ”を追加する。ここでは、フリップフロップ回路７“Ａ”が制御するクロックゲーティング回路２として、ＣＧＣ駆動Ｆ／Ｆ数２３が“５”のＣＧＣインスタンス“ａ”が設定され、フリップフロップ回路７“Ｂ”が制御するクロックゲーティング回路２として、ＣＧＣ駆動Ｆ／Ｆ数２３が“３”のＣＧＣインスタンス“ｂ”と、ＣＧＣ駆動Ｆ／Ｆ数２３が“２”のＣＧＣインスタンス“ｂ”（総駆動数は“５”）が設定される。又、フリップフロップ回路７“Ｃ”が制御するクロックゲーティング回路２として、ＣＧＣ駆動Ｆ／Ｆ数２３が“１”のＣＧＣインスタンス“ａ”と、ＣＧＣ駆動Ｆ／Ｆ数２３が“２”のＣＧＣインスタンス“ｅ”とＣＧＣ駆動Ｆ／Ｆ数２３が“３”のＣＧＣインスタンス“ｆ”（総駆動数は“６”）が設定される。このように、フリップフロップ回路７（パワー制御Ｆ／Ｆインスタンス２１）の制御対象となるフリップフロップ回路数（ＣＧＣ駆動Ｆ／Ｆ数２３）を、所定の条件で自動的に設定することが可能となる。又、フリップフロップ回路５もフリップフロップ回路７と同様に、追加されることが好ましい。
【００５０】
ＣＰＵ１１０は、フリップフロップ回路５、７や制御回路等の追加が完了したＲＴＬ記述の半導体集積回路を論理合成し（ステップＳ１０４）、スキャンパスを構成するためのセレクタの追加や結線を行う（ステップＳ１０３）。これにより、ステップＳ１０２で追加されたフリップフロップ回路５、７がスキャンパスの一部を構成するスキャンレジスタとして機能することとなる。
【００５１】
続いて、ＣＰＵ１１０は、設計支援プログラム２００を実行することでＡＴＰＧ（Ａｕｔｏｍａｔｉｃ  Ｔｅｓｔ  Ｐａｔｔｅｒｎ  Ｇｅｎｅｒａｔｏｒ）として機能し、テストパタン２０４を生成する（ステップＳ１０５）。この際、ＣＰＵ１１０は、ＣＧＣ制御データベース２０２と記憶装置１５０に格納された活性化率２０３を考慮してテストパタンを生成する。詳細には、ＣＰＵ１１０は、スキャンパスを含む論理合成された半導体集積回路の回路構成を認識し、従来のＡＴＰＧと同様のアルゴリズムによりテスト内容に応じたテストパタン２０４を作成する。この際、ＣＰＵ１１０は、入力装置１３０を介してユーザから指定された活性化率２０３に基づいて、キャプチャモード時に活性化（フリップフロップ回路に対してクロック信号ＣＬＫを供給）又は非活性化（フリップフロップ回路に対してクロック信号ＣＬＫを停止）させるフリップフロップ回路の数の上限値又は下限値を決める。活性化率２０３は、キャプチャモード時において消費電力量の目標値に応じて設定されることが好ましい。又、活性化率２０３として半導体集積回路における活性化（クロック供給）するフリップフロップ回路の割合の上限又は下限が設定されることが好ましい。
【００５２】
例えば、ＣＰＵ１１０は、決められた活性化率の上限値以下となるようにＣＧＣ制御データベース２０２を参照して、フリップフロップ回路７に設定するテストパタンデータの値を決める。ここで、ＣＧＣ制御データベース２０２にはフリップフロップ回路７が制御可能な総駆動数が対応付けられている。このため、ＣＰＵ１１０は、フリップフロップ回路７の総駆動数の総和が、活性化率の上限値以下となるように、フリップフロップ回路７への設定値を決定することで、ユーザが指定した活性化率に抑えたスキャンパス試験を行うためのテストパタン２０４の生成が可能になる。このように、本発明によれば、ユーザ指定の活性化率を満足するテストパタン２０４を容易に生成することができる。生成されたテストパタン２０４は、記憶装置１５０に格納され、スキャンテストに利用される。尚、フリップフロップ回路５に対して設定するスキャンパスデータの設定方法もフリップフロップ回路７に対する設定方法と同様である。
【００５３】
ステップＳ１０２の工程を実行することはユーザによる手作業でも比較的容易である。しかし、この工程をＥＤＡツールに機能として組込み、上述のように自動的に挿入する手法は有効である。この場合、回路実装者が意識することなく、従来手法と同様に本発明を実現することができる。又、ステップＳ１０３以降の工程においては、追加したフリップフロップ回路５、７５は回路実装者が意識することなく、スキャンパスに組み込まれ、パタン作成（ＡＴＰＧ）においても、意識することなく自動的に作成することができる。又、フリップフロップ回路５、７に設定するデータにより、従来よりも柔軟に活性化率を変更してスキャンパステストを行うことが可能となるため、パタン作成のアルゴリズムを最適化することにより、パタン数をより従来よりも削減できる場合がある。
【００５４】
以上、本発明の実施の形態を詳述してきたが、具体的な構成は上記実施の形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。ゲート制御回路３、モード制御回路４、イネーブル制御回路６のそれぞれの論理演算方法は、上述の形態に限らず、他の論理演算回路によって実現されても良い。
【００５５】
図１、図５に示す一例ではフリップフロップ回路５、７を利用したクロック伝搬制御方法について説明したが、これに限らず、フリップフロップ回路７及びイネーブル制御回路６、ゲート制御回路３を削除した構成でも構わない。この場合、キャプチャ時の消費電力削減効果はなくなるが、図２に示す真理値表に従うイネーブル制御信号Ｃ２によってクロックゲーティング回路２を制御することで、イネーブル信号線８の故障検出テストを行うことは可能となる。このとき、スキャンシフト動作によってフリップフロップ回路５に設定されたテストパタンデータによって故障検出テストが可能となることから、ＡＴＰＧ時に制御しなければならない論理が減りパタン数が削減される。
【符号の説明】
【００５６】
１、１−１〜１−３、１−１１、１−２１、１−２２  ：フリップフロップ回路
２、２−１、２−２  ：クロックゲーティング回路
３  ：ゲート制御回路
４  ：モード制御回路
５、７、１０、１２、１２−１１、１２−２１  ：フリップフロップ回路
６  ：イネーブル制御回路
８  ：イネーブル信号線
９、１１、１１−１１、１１−２１  ：組合せ回路
２１：パワー制御Ｆ／Ｆインスタンス
２２：ＣＧＣインスタンス
２３：ＣＧＣ駆動Ｆ／Ｆ数
１００：設計支援装置
１３０：入力装置
１４０：出力装置
１５０：記憶装置
１６０：バス
２００：半導体集積回路設計支援プログラム
２０１：ネットリスト
２０２：ＣＧＣ制御データベース
２０３：活性化率
２０４：テストパタン
【図１】
2013061229.tif 000003
【図２】
2013061229.tif 000004
【図３】
2013061229.tif 000005
【図４】
2013061229.tif 000006
【図５】
2013061229.tif 000007
【図６】
2013061229.tif 000008
【図７】
2013061229.tif 000009
【図８】
2013061229.tif 000010