(57)【特許請求の範囲】
【請求項１】
半導体集積回路内の複数のマクロを複数のスキャンチェーンで接続するための半導体集積回路設計方法であって、
前記複数のマクロ間の距離に応じて、前記複数のマクロを前記複数のスキャンチェーンの中のいずれかのスキャンチェーンに接続するマクロとして割り当てる割り当てステップと、
前記複数のマクロを前記割り当てられたスキャンチェーンで接続した半導体集積回路の設計データを生成する生成ステップとを有し、
前記割り当てステップは、前記複数のマクロ間の距離に応じて、前記複数のマクロを前記複数のスキャンチェーンに順番に繰り返し割り当てることを特徴とする半導体集積回路設計方法。
【請求項２】
前記割り当てステップは、
前記複数のマクロの中の１個のマクロを基点マクロとして第１のスキャンチェーンに割り当てる第１の割り当てステップと、
前記基点マクロに最も近い又は遠いマクロから順に前記第１のスキャンチェーン以外の他のスキャンチェーンに割り当てる第２の割り当てステップと、
未割り当てのマクロの中で前記基点マクロに最も近い又は遠いマクロから順番に繰り返して前記複数のスキャンチェーンに割り当てる第３の割り当てステップとを有することを特徴とする請求項１記載の半導体集積回路設計方法。
【請求項３】
半導体集積回路内の複数のマクロを複数のスキャンチェーンで接続するための半導体集積回路設計方法であって、
前記複数のマクロのＩＲドロップに応じて、前記複数のマクロを前記複数のスキャンチェーンの中のいずれかのスキャンチェーンに接続するマクロとして割り当てる割り当てステップと、
前記複数のマクロを前記割り当てられたスキャンチェーンで接続した半導体集積回路の設計データを生成する生成ステップとを有し、
前記割り当てステップは、前記複数のマクロのＩＲドロップに応じて、前記複数のマクロを前記複数のスキャンチェーンに順番に繰り返し割り当てることを特徴とする半導体集積回路設計方法。
【請求項４】
前記割り当てステップは、
前記複数のマクロの中で前記ＩＲドロップが最も大きい又は小さいマクロから順番に前記複数のスキャンチェーンに割り当てる第１の割り当てステップと、
未割り当てのマクロの中で前記ＩＲドロップが最も大きい又は小さいマクロから順番に繰り返して前記複数のスキャンチェーンに割り当てる第２の割り当てステップとを有することを特徴とする請求項３記載の半導体集積回路設計方法。
【請求項５】
半導体集積回路内の複数のマクロを複数のスキャンチェーンで接続するための半導体集積回路設計方法であって、
前記複数のマクロの電源線間の抵抗値に応じて、前記複数のマクロを前記複数のスキャンチェーンの中のいずれかのスキャンチェーンに接続するマクロとして割り当てる割り当てステップと、
前記複数のマクロを前記割り当てられたスキャンチェーンで接続した半導体集積回路の設計データを生成する生成ステップとを有し、
前記割り当てステップは、前記複数のマクロの電源線間の抵抗値に応じて、前記複数のマクロを前記複数のスキャンチェーンに順番に繰り返し割り当てることを特徴とする半導体集積回路設計方法。
【請求項６】
前記割り当てステップは、
前記複数のマクロの中の１個のマクロを基点マクロとして第１のスキャンチェーンに割り当てる第１の割り当てステップと、
前記基点マクロに対して前記抵抗値が最も低いマクロから順に前記第１のスキャンチェーン以外の他のスキャンチェーンに割り当てる第２の割り当てステップと、
未割り当てのマクロの中で各スキャンチェーンの最後に割り当てられたマクロに対して前記抵抗値が最も高いマクロから順番に繰り返して前記各スキャンチェーンに割り当てる第３の割り当てステップとを有することを特徴とする請求項５記載の半導体集積回路設計方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路設計方法に関する。
【背景技術】
【０００２】
近年、各分野から半導体集積回路（ＬＳＩ）の低消費電力化が求められており、クロックゲーティングや、スリープモード信号、ディセーブル信号等を多用し、通常動作時において、同時に動作する回路を極力減らして低消費電力化を目指そうとすることが多くなってきている。
【０００３】
このようなＬＳＩでは、逆にテスト時の方が同時に動作する回路が多くなり、テスト時の消費電力が通常動作時の消費電力を上回ってしまうことがある。
【０００４】
その結果、ＬＳＩのテスト時には通常動作時より大きなＩＲドロップが発生し、回路動作が不安定になったり、動作不良を起こしてしまう。ＩＲドロップは、回路に電流が流れることによる電源電圧降下である。通常動作では良品として扱われるものでも、テスト動作では不良品として扱われてしまうことがある。
【０００５】
ＬＳＩのテスト回路としてスキャンチェーンを生成するが、クロックツリーに基づいて接続したり、配置位置に基づいて単純に物理的距離が近いマクロ同士を接続したり、タイミングエラーが起きにくいようにする事を優先して接続しており、ＩＲドロップを考慮して行うことはほとんど無かった。
【０００６】
このため、テスト時のＩＲドロップの影響については、後からチェックするしかなく、テストでＮＧとなった場合には、ＬＳＩ設計のやり直しを発生させてしまう。
【０００７】
また、下記の特許文献１には、スキャンテスト時のＩＲドロップによる誤動作を防止する手法が提案されている。特許文献１には、半導体集積回路をテストするためスキャンフリップフロップ群を直列に接続して構成したスキャンテスト回路情報が挿入された論理接続情報を入力として、上記スキャンテスト回路情報を含むマスクレイアウトパターンを出力する自動配置配線部と、上記マスクレイアウトパターンに基づいて、電源電圧を供給する配線の物理的形状、電源供給源からの距離、電源系統を解析し、電源ＲＣネットワーク解析結果として出力する電源ＲＣネットワーク解析部と、上記電源ＲＣネットワーク解析結果に基づいて、スキャンフリップフロップをグルーピングし、スキャン回路グループ情報として出力するスキャン回路グルーピング部と、上記マスクレイアウトパターンと、上記スキャン回路グループ情報と、各スキャンフリップフロップの動作回数を示した動作率情報に基づいて、上記配線上に生じる電圧降下を解析し、ＩＲドロップによる各スキャンフリップフロップの誤動作が発生するか否かを判定するＩＲドロップ解析部と、上記スキャン回路グループ情報に基づいて、上記論理接続情報のスキャンテスト回路を変更するスキャンチェーン挿入部と、上記ＩＲドロップ解析部により、各スキャンフリップフロップの誤動作が発生しないと判定されるまで、上記自動配置配線部、上記電源ＲＣネットワーク解析部、上記スキャン回路グルーピング部、上記ＩＲドロップ解析部、および上記スキャンチェーン挿入部の一連の機能を自動的に繰り返し実行するスキャンチェーン生成用リピート部を備え、上記スキャン回路グルーピング部は、上記ＩＲドロップ解析部による解析結果が出力されている場合には、上記ＩＲドロップ解析部による解析結果と上記電源ＲＣネットワーク解析結果に基づいて、同時にスキャンテスト動作させても誤動作を生じないスキャンフリップフロップ同士をグルーピングする半導体集積回路テスト設計支援装置が記載されている。
【０００８】
また、下記の特許文献２には、スキャンフリップフロップ回路を含む内部回路ブロックと、外部から入力されたスキャンモード信号を前記スキャンフリップフロップ回路に出力する第１の入力バッファ回路と、外部から入力されたスキャンイン信号を前記スキャンフリップフロップ回路に出力する第２の入力バッファ回路と、外部から入力されたスキャンクロック信号を前記スキャンフリップフロップ回路に出力する第３の入力バッファ回路と、論理積ゲートを有し前記論理積ゲートに入力された前記内部回路ブロックの出力と前記第１の入力バッファ回路の出力との論理積の信号を外部に送出する１つ以上の出力バッファ回路とを備え、前記入力バッファ回路及び前記出力バッファ回路の電源線及びグランド線には電源端子及びグランド端子を前記入力バッファ回路及び前記出力バッファ回路の近傍に接続することを特徴とする半導体集積回路が記載されている。
【０００９】
【特許文献１】特開２００６−６６８２５号公報
【特許文献２】特許第２９５９００９号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかし、特許文献１は、実際にＩＲドロップによるスキャンテスト回路の誤動作判定を行いながらスキャンチェーン/スキャン回路を生成していく方法であり、フローが複雑になり工数が増え、また、イタレーション（スキャンチェーン/スキャン回路生成のやり直し）が多く発生することがあり、効率が悪い。これでは、結局は初期のスキャンチェーンの出来具合により、設計ＴＡＴが大きく左右されてしまう。
【００１１】
本発明の目的は、設計のやり直しがなく、テスト時のＩＲドロップが小さくなるように複数のマクロを複数のスキャンチェーンで接続することができる半導体集積回路設計方法を提供することである。
【課題を解決するための手段】
【００１２】
本発明の半導体集積回路設計方法は、半導体集積回路内の複数のマクロを複数のスキャンチェーンで接続するための半導体集積回路設計方法であって、前記複数のマクロ間の距離に応じて、前記複数のマクロを前記複数のスキャンチェーンの中のいずれかのスキャンチェーンに接続するマクロとして割り当てる割り当てステップと、前記複数のマクロを前記割り当てられたスキャンチェーンで接続した半導体集積回路の設計データを生成する生成ステップとを有し、前記割り当てステップは、前記複数のマクロ間の距離に応じて、前記複数のマクロを前記複数のスキャンチェーンに順番に繰り返し割り当てることを特徴とする。
【００１３】
本発明の半導体集積回路設計方法は、半導体集積回路内の複数のマクロを複数のスキャンチェーンで接続するための半導体集積回路設計方法であって、前記複数のマクロのＩＲドロップに応じて、前記複数のマクロを前記複数のスキャンチェーンの中のいずれかのスキャンチェーンに接続するマクロとして割り当てる割り当てステップと、前記複数のマクロを前記割り当てられたスキャンチェーンで接続した半導体集積回路の設計データを生成する生成ステップとを有し、前記割り当てステップは、前記複数のマクロのＩＲドロップに応じて、前記複数のマクロを前記複数のスキャンチェーンに順番に繰り返し割り当てることを特徴とする。
【００１４】
本発明の半導体集積回路設計方法は、半導体集積回路内の複数のマクロを複数のスキャンチェーンで接続するための半導体集積回路設計方法であって、前記複数のマクロの電源線間の抵抗値に応じて、前記複数のマクロを前記複数のスキャンチェーンの中のいずれかのスキャンチェーンに接続するマクロとして割り当てる割り当てステップと、前記複数のマクロを前記割り当てられたスキャンチェーンで接続した半導体集積回路の設計データを生成する生成ステップとを有し、前記割り当てステップは、前記複数のマクロの電源線間の抵抗値に応じて、前記複数のマクロを前記複数のスキャンチェーンに順番に繰り返し割り当てることを特徴とする。
【発明の効果】
【００１５】
テスト時のＩＲドロップが小さくなるように複数のマクロを複数のスキャンチェーンで接続することができる。また、テスト後にスキャンチェーン接続設計をやり直すことがないので、効率的な設計を行うことができる。
【発明を実施するための最良の形態】
【００１６】
（第１の実施形態）
図８は、本発明の第１の実施形態による半導体集積回路設計装置を構成するコンピュータのハードウェア構成例を示すブロック図である。このコンピュータは、ＣＡＤ（computer-aided design）により、レジスタ転送レベル（ＲＴＬ）設計データ及びネットリスト設計データ（以下、ネットリストという）の生成及びスキャンテスト回路の生成等を行うができる。
【００１７】
バス８０１には、中央処理装置（ＣＰＵ）８０２、ＲＯＭ８０３、ＲＡＭ８０４、ネットワークインタフェース８０５、入力装置８０６、出力装置８０７及び外部記憶装置８０８が接続されている。
【００１８】
ＣＰＵ８０２は、データの処理及び演算を行うと共に、バス８０１を介して接続された上記の構成ユニットを制御するものである。ＲＯＭ８０３には、予めブートプログラムが記憶されており、このブートプログラムをＣＰＵ８０２が実行することにより、コンピュータが起動する。外部記憶装置８０８にコンピュータプログラムが記憶されており、そのコンピュータプログラムがＲＡＭ８０４にコピーされ、ＣＰＵ８０２により実行される。このコンピュータは、コンピュータプログラムを実行することにより、後述する図１、図３及び図６の処理等を行うことができる。
【００１９】
外部記憶装置８０８は、例えばハードディスク記憶装置等であり、電源を切っても記憶内容が消えない。外部記憶装置８０８は、コンピュータプログラム、ＲＴＬ設計データ及びネットリスト等を記録媒体に記録したり、記録媒体からコンピュータプログラム等を読み出すことができる。
【００２０】
ネットワークインタフェース８０５は、ネットワークに対してコンピュータプログラム及びＲＴＬ設計データ等を入出力することができる。入力装置８０６は、例えばキーボード及びポインティングデバイス（マウス）等であり、各種指定又は入力等を行うことができる。出力装置８０７は、ディスプレイ及びプリンタ等であり、表示又は印刷することができる。
【００２１】
図９は、一般的な半導体集積回路ＣＰの構成例を示すブロック図である。半導体集積回路ＣＰは、複数のマクロＭ１〜Ｍ６及び電源パッドＰＤを有する。電源パッドＰＤには、外部から電源電圧が供給される。マクロＭ１〜Ｍ６は、フリップフロップ又はＲＡＭ等のユニット回路である。半導体集積回路ＣＰ内では、２本に分岐された第１の電源線ＶＬ１及び第２の電源線ＶＬ２が電源パッドＰＤに接続される。例えば、３個のマクロＭ１〜Ｍ３は、第１の電源線ＶＬ１に接続され、第１の電源線ＶＬ１から電源電圧の供給を受ける。また、他の３個のマクロＭ４〜Ｍ６は、第２の電源線ＶＬ２に接続され、第２の電源線ＶＬ２から電源電圧の供給を受ける。
【００２２】
半導体集積回路ＣＰは、製品出荷前に、スキャンテストを行う。スキャンテストは、例えば、３個のマクロＭ１〜Ｍ３を第１のスキャンチェーンＳＣ１でシリアルに接続し、外部からスキャンデータを入力し、３個のマクロＭ１〜Ｍ３を通過して出力されたデータを調べることにより、３個のマクロＭ１〜Ｍ３が正常にスキャンデータを伝達できるか否かを調べるテストである。同様に、３個のマクロＭ４〜Ｍ６を第２のスキャンチェーンＳＣ２でシリアルに接続し、スキャンテストを行う。スキャンテストを行うためのスキャン回路として、マクロＭ１〜Ｍ６は、通常のデータ入出力端子とは別に、スキャンデータを入出力するためのスキャンイン端子及びスキャンアウト端子を有し、スキャンチェーンＳＣ１，ＳＣ２が接続される。スキャンチェーンＳＣ１はマクロＭ１〜Ｍ３のスキャンイン端子及びスキャンアウト端子に接続され、スキャンチェーンＳＣ２はマクロＭ４〜Ｍ６のスキャンイン端子及びスキャンアウト端子に接続される。
【００２３】
第１のスキャンチェーンＳＣ１のスキャンテストを行うと、３個のマクロＭ１〜Ｍ３が同時に動作する。この３個のマクロＭ１〜Ｍ３は、同じ第１の電源線ＶＬ１に接続されているため、スキャンテスト時には通常動作時より大きなＩＲドロップが第１の電源線ＶＬ１に発生し、マクロＭ１〜Ｍ３に供給される電源電圧が低下してしまう。これにより、マクロＭ１〜Ｍ３の回路動作が不安定になったり、動作不良を起こしてしまうことがある。
【００２４】
同様に、第２のスキャンチェーンＳＣ２のスキャンテストを行うと、３個のマクロＭ４〜Ｍ６が同時に動作する。この３個のマクロＭ４〜Ｍ６は、同じ第２の電源線ＶＬ２に接続されているため、スキャンテスト時には通常動作時より大きなＩＲドロップが第２の電源線ＶＬ２に発生し、マクロＭ４〜Ｍ６に供給される電源電圧が低下してしまう。これにより、マクロＭ４〜Ｍ６の回路動作が不安定になったり、動作不良を起こしてしまうことがある。
【００２５】
図１０は、本実施形態による半導体集積回路ＣＰの構成例を示すブロック図である。以下、図１０の回路が図９の回路と異なる点を説明する。マクロＭ１〜Ｍ３は第１の電源線ＶＬ１に接続され、マクロＭ４〜Ｍ６は第２の電源線ＶＬ２に接続される。
【００２６】
３個のマクロＭ１，Ｍ４及びＭ５は、第１のスキャンチェーンＳＣ１によりシリアルに接続される。マクロＭ１は第１の電源線ＶＬ１に接続され、マクロＭ４及びＭ５は第２の電源線ＶＬ２に接続される。したがって、第１のスキャンチェーンＳＣ１のスキャンテスト時には、マクロＭ１，Ｍ４及びＭ５が同時に動作するが、その動作によるＩＲドロップは第１の電源線ＶＬ１及び第２の電源線ＶＬ２に分散される。そのため、第１の電源線ＶＬ１及び第２の電源線ＶＬ２のそれぞれのＩＲドロップは小さくなり、マクロＭ１，Ｍ４及びＭ５の回路動作が安定し、動作不良を防止することができる。
【００２７】
同様に、３個のマクロＭ２，Ｍ３及びＭ６は、第２のスキャンチェーンＳＣ２によりシリアルに接続される。マクロＭ２及びＭ３は第１の電源線ＶＬ１に接続され、マクロＭ６は第２の電源線ＶＬ２に接続される。したがって、第２のスキャンチェーンＳＣ２のスキャンテスト時には、マクロＭ２，Ｍ３及びＭ６が同時に動作するが、その動作によるＩＲドロップは第１の電源線ＶＬ１及び第２の電源線ＶＬ２に分散される。そのため、第１の電源線ＶＬ１及び第２の電源線ＶＬ２のそれぞれのＩＲドロップは小さくなり、マクロＭ２，Ｍ３及びＭ６の回路動作が安定し、動作不良を防止することができる。
【００２８】
以上のように、スキャンテスト時のＩＲドロップを小さくするためには、消費電力が大きいマクロについて、第１の電源線ＶＬ１を共有しているマクロＭ１〜Ｍ３同士又は第２の電源線ＶＬ２を共有しているマクロＭ４〜Ｍ６同士をなるべく同じスキャンチェーンで接続せずに、異なるスキャンチェーンで接続することが好ましい。これにより、電源線ＶＬ１又はＶＬ２のいずれかにＩＲドロップを集中させることを防止し、電源線ＶＬ１及びＶＬ２のＩＲドロップを小さくし、マクロＭ１〜Ｍ６の回路動作を安定させることができる。
【００２９】
図１は本実施形態による半導体集積回路設計装置の設計方法を示すフローチャートであり、図２は本実施形態による半導体集積回路ＣＰの構成例を示す図である。半導体集積回路ＣＰは、例えば６個のスキャンテスト対象マクロＭ１〜Ｍ６を有する。半導体集積回路設計装置は、ネットリストを基に以下のスキャン回路の設計を行い、そのスキャン回路を組み込んだネットリストを生成する。
【００３０】
まず、ステップＳ１０１では、ＣＰＵ８０２は、任意の基点となるマクロを選択し、第１のスキャンチェーンＳＣ１のマクロとする。例えば、マクロＭ１を基点として選択し、マクロＭ１を第１のスキャンチェーンＳＣ１のマクロとする。
【００３１】
次に、ステップＳ１０２では、ＣＰＵ８０２は、先の基点のマクロに最も近いマクロから順に第２のスキャンチェーンＳＣ２、第３のスキャンチェーンＳＣ３、・・・、第ＮのスキャンチェーンＳＣＮ（Ｎはスキャンチェーン数）と割り当てていく。例えば、基点のマクロＭ１に最も近いマクロはマクロＭ２であるので、マクロＭ２を第２のスキャンチェーンＳＣ２のマクロとして割り当てる。スキャンチェーン数が２である場合には、これでこのステップを終了する。
【００３２】
次に、ステップＳ１０３では、ＣＰＵ８０２は、次に近いマクロから順に第１のスキャンチェーンＳＣ１、第２のスキャンチェーンＳＣ２、第３のスキャンチェーンＳＣ３、・・・、第ＮのスキャンチェーンＳＣＮと割り当てる。例えば、基点のマクロＭ１から次に近いマクロはマクロＭ４であるので、マクロＭ４を第１のスキャンチェーンＳＣ１のマクロとして割り当てる。続いて、基点のマクロＭ１から次に近いマクロはマクロＭ５であるので、マクロＭ５を第２のスキャンチェーンＳＣ２のマクロとして割り当てる。スキャンチェーン数が２である場合には、これでこのステップを終了する。
【００３３】
次に、ステップＳ１０４では、ＣＰＵ８０２は、すべてのマクロを割り当てたか否かをチェックする。割り当てていなければ、ステップＳ１０３に戻る。例えば、未だ割り当てられていないマクロとしてマクロＭ３及びＭ６が存在するので、ステップＳ１０３に戻る。
【００３４】
ステップＳ１０３では、例えば、基点のマクロＭ１から次に近いマクロはマクロＭ３であるので、マクロＭ３を第１のスキャンチェーンＳＣ１のマクロとして割り当てる。続いて、基点のマクロＭ１から次に近いマクロはマクロＭ６であるので、マクロＭ６を第２のスキャンチェーンＳＣ２のマクロとして割り当てる。スキャンチェーン数が２である場合には、これでこのステップを終了する。
【００３５】
次に、ステップＳ１０４において、すべてのマクロが割り当てられていれば、ステップＳ１０５に進む。例えば、すべてのマクロＭ１〜Ｍ６が割り当てられたので、ステップＳ１０５に進む。
【００３６】
ステップＳ１０５では、ＣＰＵ８０２は、割り当てられたマクロを各スキャンチェーンで接続する。例えば、上記のように、マクロＭ１，Ｍ４，Ｍ３は第１のスキャンチェーンＳＣ１のグループとして割り当てられ、マクロＭ２，Ｍ５，Ｍ６は第２のスキャンチェーンＳＣ２のグループとして割り当てられる。したがって、マクロＭ１，Ｍ４，Ｍ３を第１のスキャンチェーンＳＣ１でシリアルに接続し、マクロＭ２，Ｍ５，Ｍ６を第２のスキャンチェーンＳＣ２でシリアルに接続する。ＣＰＵ８０２は、マクロをスキャンチェーンで接続した半導体集積回路のネットリスト設計データを生成する。
【００３７】
マクロをスキャンチェーンで接続する順番は、上記の割り当て順で接続してもよいし、それ以外の順で接続してもよい。上記の割り当てられたスキャンチェーンの同じグループ内であれば、どのような順で接続してもよい。例えば、同じグループ内で近い順にマクロを接続することができる。
【００３８】
なお、基点のマクロＭ１から近いマクロから順に割り当てる例を説明したが、基点のマクロＭ１から遠いマクロから順に割り当てるようにしてもよい。
【００３９】
以上のように、本実施形態は、各マクロ間の物理的な距離を基に、各スキャンチェーンに接続するマクロを割り当てる。マクロの物理的な距離が遠いもの同士は一般的に電源線を共有している確率が低いので、本実施形態によるスキャンチェーン接続を行えば、異なる電源線に接続されるマクロを各スキャンチェーンで接続することができる。これにより、スキャンテスト時には、各電源線のＩＲドロップが小さくなり、マクロの動作を安定させることができる。
【００４０】
本実施形態の半導体集積回路設計方法は、半導体集積回路ＣＰ内の複数のマクロＭ１〜Ｍ６を複数のスキャンチェーンＳＣ１，ＳＣ２で接続するための半導体集積回路設計方法であって、前記複数のマクロＭ１〜Ｍ６間の距離に応じて、前記複数のマクロＭ１〜Ｍ６を前記複数のスキャンチェーンＳＣ１，ＳＣ２の中のいずれかのスキャンチェーンに接続するマクロとして割り当てる割り当てステップＳ１０１〜Ｓ１０４と、前記複数のマクロＭ１〜Ｍ６を前記割り当てられたスキャンチェーンＳＣ１，ＳＣ２で接続した半導体集積回路ＣＰの設計データを生成する生成ステップＳ１０５とを有する。
【００４１】
前記割り当てステップＳ１０１〜Ｓ１０４は、前記複数のマクロＭ１〜Ｍ６間の距離に応じて、前記複数のマクロＭ１〜Ｍ６を前記複数のスキャンチェーンＳＣ１，ＳＣ２に順番に繰り返し割り当てる。
【００４２】
また、前記割り当てステップは、前記複数のマクロＭ１〜Ｍ６の中の１個のマクロを基点マクロＭ１として第１のスキャンチェーンＳＣ１に割り当てる第１の割り当てステップＳ１０１と、前記基点マクロＭ１に最も近い又は遠いマクロから順に前記第１のスキャンチェーンＳＣ１以外の他のスキャンチェーンＳＣ２に割り当てる第２の割り当てステップＳ１０２と、未割り当てのマクロの中で前記基点マクロＭ１に最も近い又は遠いマクロから順番に繰り返して前記複数のスキャンチェーンＳＣ１，ＳＣ２に割り当てる第３の割り当てステップＳ１０３，Ｓ１０４とを有する。
【００４３】
（第２の実施形態）
図３は本発明の第２の実施形態による半導体集積回路設計装置の設計方法を示すフローチャートであり、図５は本実施形態による半導体集積回路ＣＰの構成例を示す図である。半導体集積回路ＣＰは、例えば６個のスキャンテスト対象マクロＭ１〜Ｍ６を有する。半導体集積回路設計装置は、ネットリストを基に以下のスキャン回路の設計を行い、そのスキャン回路を組み込んだネットリストを生成する。以下、本実施形態が第１の実施形態と異なる点を説明する。
【００４４】
図４は、６個のマクロＭ１〜Ｍ６のＩＲドロップを演算し、６個のマクロＭ１〜Ｍ６をＩＲドロップの大きい順に並べた図である。半導体集積回路設計装置は、通常動作モードにおける半導体集積回路ＣＰの抵抗網の等価回路を生成し、その抵抗網を基に各マクロＭ１〜Ｍ６のＩＲドロップを演算する。例えば、マクロＭ１はＩＲドロップが最大であり、マクロＭ３はＩＲドロップが最小である。マクロＭ１，Ｍ４，Ｍ２，Ｍ５，Ｍ６，Ｍ３は、大きいＩＲドロップから小さいＩＲドロップに向けて順に並ぶ。なお、上記の通常動作モードは、半導体集積回路の待機モードではなく、最大電力を消費するモードであることが好ましい。
【００４５】
まず、ステップＳ３０１では、ＣＰＵ８０２は、最もＩＲドロップ（ＩＲＤ）の大きいマクロを選択し、第１のスキャンチェーンＳＣ１のマクロとする。例えば、最もＩＲドロップが大きいマクロはマクロＭ１であるので、マクロＭ１を第１のスキャンチェーンＳＣ１のマクロとする。
【００４６】
次に、ステップＳ３０２では、ＣＰＵ８０２は、次にＩＲドロップの大きいマクロから順に第２のスキャンチェーンＳＣ２、第３のスキャンチェーンＳＣ３、・・・、第ＮのスキャンチェーンＳＣＮ（Ｎはスキャンチェーン数）と割り当てていく。例えば、上記のマクロＭ１の次にＩＲドロップが大きいマクロはマクロＭ４であるので、マクロＭ４を第２のスキャンチェーンＳＣ２のマクロとして割り当てる。スキャンチェーン数が２である場合には、これでこのステップを終了する。
【００４７】
次に、ステップＳ３０３では、ＣＰＵ８０２は、次にＩＲドロップの大きいマクロから順に第１のスキャンチェーンＳＣ１、第２のスキャンチェーンＳＣ２、第３のスキャンチェーンＳＣ３、・・・、第ＮのスキャンチェーンＳＣＮと割り当てる。例えば、上記のマクロＭ４の次にＩＲドロップが大きいマクロはマクロＭ２であるので、マクロＭ２を第１のスキャンチェーンＳＣ１のマクロとして割り当てる。続いて、上記のマクロＭ２の次にＩＲドロップが大きいマクロはマクロＭ５であるので、マクロＭ５を第２のスキャンチェーンＳＣ２のマクロとして割り当てる。スキャンチェーン数が２である場合には、これでこのステップを終了する。
【００４８】
次に、ステップＳ３０４では、ＣＰＵ８０２は、すべてのマクロを割り当てたか否かをチェックする。割り当てていなければ、ステップＳ３０３に戻る。例えば、未だ割り当てられていないマクロとしてマクロＭ３及びＭ６が存在するので、ステップＳ３０３に戻る。
【００４９】
ステップＳ３０３では、例えば、上記のマクロＭ５の次にＩＲドロップが大きいマクロはマクロＭ６であるので、マクロＭ６を第１のスキャンチェーンＳＣ１のマクロとして割り当てる。続いて、上記のマクロＭ６の次にＩＲドロップが大きいマクロはマクロＭ３であるので、マクロＭ３を第２のスキャンチェーンＳＣ２のマクロとして割り当てる。スキャンチェーン数が２である場合には、これでこのステップを終了する。
【００５０】
次に、ステップＳ３０４において、すべてのマクロが割り当てられていれば、ステップＳ３０５に進む。例えば、すべてのマクロＭ１〜Ｍ６が割り当てられたので、ステップＳ３０５に進む。
【００５１】
ステップＳ３０５では、ＣＰＵ８０２は、割り当てられたマクロを各スキャンチェーンで接続する。例えば、上記のように、マクロＭ１，Ｍ２，Ｍ６は第１のスキャンチェーンＳＣ１のグループとして割り当てられ、マクロＭ４，Ｍ５，Ｍ３は第２のスキャンチェーンＳＣ２のグループとして割り当てられる。したがって、マクロＭ１，Ｍ２，Ｍ６を第１のスキャンチェーンＳＣ１でシリアルに接続し、マクロＭ４，Ｍ５，Ｍ３を第２のスキャンチェーンＳＣ２でシリアルに接続する。ＣＰＵ８０２は、マクロをスキャンチェーンで接続した半導体集積回路のネットリスト設計データを生成する。
【００５２】
マクロをスキャンチェーンで接続する順番は、上記の割り当て順で接続してもよいし、それ以外の順で接続してもよい。上記の割り当てられたスキャンチェーンの同じグループ内であれば、どのような順で接続してもよい。例えば、同じグループ内で近い順にマクロを接続することができる。
【００５３】
なお、ＩＲドロップの大きいマクロから順に割り当てる例を説明したが、ＩＲドロップの小さいマクロから順に割り当てるようにしてもよい。
【００５４】
以上のように、本実施形態は、通常動作モードでの各マクロのＩＲドロップを基に、各スキャンチェーンに接続するマクロを割り当てる。これにより、ＩＲドロップの大きい複数のマクロが同一のスキャンチェーンに割り当てられることを防止し、各スキャンチェーンにおいてＩＲドロップの偏りを減らし、ＩＲドロップが均一になるようにすることができる。これにより、スキャンテスト時には、各電源線のＩＲドロップが小さくなり、マクロの動作を安定させることができる。
【００５５】
本実施形態の半導体集積回路設計方法は、半導体集積回路ＣＰ内の複数のマクロＭ１〜Ｍ６を複数のスキャンチェーンＳＣ１，ＳＣ２で接続するための半導体集積回路設計方法であって、前記複数のマクロＭ１〜Ｍ６のＩＲドロップに応じて、前記複数のマクロＭ１〜Ｍ６を前記複数のスキャンチェーンＳＣ１，ＳＣ２の中のいずれかのスキャンチェーンに接続するマクロとして割り当てる割り当てステップＳ３０１〜Ｓ３０４と、前記複数のマクロＭ１〜Ｍ６を前記割り当てられたスキャンチェーンＳＣ１，ＳＣ２で接続した半導体集積回路ＣＰの設計データを生成する生成ステップＳ３０５とを有する。
【００５６】
前記割り当てステップＳ３０１〜Ｓ３０４は、前記複数のマクロＭ１〜Ｍ６のＩＲドロップに応じて、前記複数のマクロＭ１〜Ｍ６を前記複数のスキャンチェーンＳＣ１，ＳＣ２に順番に繰り返し割り当てる。
【００５７】
また、前記割り当てステップは、前記複数のマクロＭ１〜Ｍ６の中で前記ＩＤドロップが最も大きい又は小さいマクロから順番に前記複数のスキャンチェーンＳＣ１，ＳＣ２に割り当てる第１の割り当てステップＳ３０１，Ｓ３０２と、未割り当てのマクロの中で前記ＩＤドロップが最も大きい又は小さいマクロから順番に繰り返して前記複数のスキャンチェーンＳＣ１，ＳＣ２に割り当てる第２の割り当てステップＳ３０３，Ｓ３０４とを有する。
【００５８】
（第３の実施形態）
図６は本発明の第３の実施形態による半導体集積回路設計装置の設計方法を示すフローチャートであり、図７は本実施形態による半導体集積回路ＣＰの構成例を示す図である。半導体集積回路ＣＰは、例えば６個のスキャンテスト対象マクロＭ１〜Ｍ６を有する。半導体集積回路設計装置は、ネットリストを基に以下のスキャン回路の設計を行い、そのスキャン回路を組み込んだネットリストを生成する。以下、本実施形態が第１の実施形態と異なる点を説明する。
【００５９】
半導体集積回路設計装置は、各マクロＭ１〜Ｍ６間の電源配線抵抗Ｒ２〜Ｒ６を演算する。抵抗Ｒ２は、マクロＭ１の電源線及びマクロＭ２の電源線間の抵抗である。抵抗Ｒ３は、マクロＭ１の電源線及びマクロＭ３の電源線間の抵抗である。抵抗Ｒ４は、マクロＭ１の電源線及びマクロＭ４の電源線間の抵抗である。抵抗Ｒ５は、マクロＭ１の電源線及びマクロＭ５の電源線間の抵抗である。抵抗Ｒ６は、マクロＭ１の電源線及びマクロＭ６の電源線間の抵抗である。
【００６０】
例えば、半導体集積回路ＣＰは、第１の電源パッドＰＤ１及び第２の電源パッドＰＤ２を有する。マクロＭ１の電源線は第１の電源パッドＰＤ１に接続され、マクロＭ６の電源線は第２の電源パッドＰＤ２に接続される。この場合、マクロＭ１及びマクロＭ６は異なる電源パッドの電源線に接続されるので、マクロＭ１及びＭ６間の抵抗Ｒ６は非常に高い値となる。また、マクロＭ１及びＭ２が同じ電源線に接続される場合には、マクロＭ１及びＭ２間の抵抗Ｒ２は非常に低い値となる。
【００６１】
まず、ステップＳ６０１では、ＣＰＵ８０２は、任意のマクロを選択し、第１のスキャンチェーンＳＣ１のマクロとする。例えば、マクロＭ１を第１のスキャンチェーンＳＣ１のマクロとする。
【００６２】
次に、ステップＳ６０２では、ＣＰＵ８０２は、先のマクロから最も抵抗値の低いマクロから順に第２のスキャンチェーンＳＣ２、第３のスキャンチェーンＳＣ３、・・・、第ＮのスキャンチェーンＳＣＮ（Ｎはスキャンチェーン数）と割り当てていく。例えば、先のマクロＭ１から最も抵抗値の低いマクロはマクロＭ２であるので（抵抗Ｒ２〜Ｒ６の中で最も低い抵抗は抵抗Ｒ２であるので）、マクロＭ２を第２のスキャンチェーンＳＣ２のマクロとして割り当てる。スキャンチェーン数が２である場合には、これでこのステップを終了する。
【００６３】
次に、ステップＳ６０３では、ＣＰＵ８０２は、各スキャンチェーンの最後に割り当てられたマクロから最も抵抗値が高く、かつ未割り当てのマクロをそのスキャンチェーンに割り当てる。例えば、第１のスキャンチェーンＳＣ１の最後に割り当てられたマクロはマクロＭ１であり、そのマクロＭ１から最も抵抗値が高くかつ未割り当てのマクロはマクロＭ６であるので、マクロＭ６を第１のスキャンチェーンＳＣ１のマクロとして割り当てる。続いて、第２のスキャンチェーンＳＣ２の最後に割り当てられたマクロはマクロＭ２であり、そのマクロＭ２から最も抵抗値が高くかつ未割り当てのマクロはマクロＭ４であるので、マクロＭ４を第２のスキャンチェーンＳＣ２のマクロとして割り当てる。スキャンチェーン数が２である場合には、これでこのステップを終了する。
【００６４】
次に、ステップＳ６０４では、ＣＰＵ８０２は、すべてのマクロを割り当てたか否かをチェックする。割り当てていなければ、ステップＳ６０３に戻る。例えば、未だ割り当てられていないマクロとしてマクロＭ３及びＭ５が存在するので、ステップＳ６０３に戻る。
【００６５】
ステップＳ６０３では、例えば、第１のスキャンチェーンＳＣ１の最後に割り当てられたマクロはマクロＭ６であり、そのマクロＭ６から最も抵抗値が高くかつ未割り当てのマクロはマクロＭ３であるので、マクロＭ３を第１のスキャンチェーンＳＣ１のマクロとして割り当てる。続いて、第２のスキャンチェーンＳＣ２の最後に割り当てられたマクロはマクロＭ４であり、そのマクロＭ４から最も抵抗値が高くかつ未割り当てのマクロはマクロＭ５であるので、マクロＭ５を第２のスキャンチェーンＳＣ２のマクロとして割り当てる。スキャンチェーン数が２である場合には、これでこのステップを終了する。
【００６６】
次に、ステップＳ６０４において、すべてのマクロが割り当てられていれば、ステップＳ６０５に進む。例えば、すべてのマクロＭ１〜Ｍ６が割り当てられたので、ステップＳ６０５に進む。
【００６７】
ステップＳ６０５では、ＣＰＵ８０２は、割り当てられたマクロを各スキャンチェーンで接続する。例えば、上記のように、マクロＭ１，Ｍ６，Ｍ３は第１のスキャンチェーンＳＣ１のグループとして割り当てられ、マクロＭ２，Ｍ４，Ｍ５は第２のスキャンチェーンＳＣ２のグループとして割り当てられる。したがって、マクロＭ１，Ｍ６，Ｍ３を第１のスキャンチェーンＳＣ１でシリアルに接続し、マクロＭ２，Ｍ４，Ｍ５を第２のスキャンチェーンＳＣ２でシリアルに接続する。ＣＰＵ８０２は、マクロをスキャンチェーンで接続した半導体集積回路のネットリスト設計データを生成する。
【００６８】
マクロをスキャンチェーンで接続する順番は、上記の割り当て順で接続してもよいし、それ以外の順で接続してもよい。上記の割り当てられたスキャンチェーンの同じグループ内であれば、どのような順で接続してもよい。例えば、同じグループ内で近い順にマクロを接続することができる。
【００６９】
以上のように、本実施形態は、各マクロ間の電源配線抵抗値を求め、それを基に各スキャンチェーンに接続するマクロを割り当てる。電源配線抵抗値が高いマクロ間ほどＩＲドロップの相関が低くなる確率が高いので（その２個のマクロが異なる電源線に接続されている可能性が高いので）、本実施形態によるスキャンチェーン接続を行えば、異なる電源線に接続されるマクロを各スキャンチェーンで接続することができる。これにより、スキャンテスト時には、各電源線のＩＲドロップが小さくなり、マクロの動作を安定させることができる。
【００７０】
本実施形態の半導体集積回路設計方法は、半導体集積回路ＣＰ内の複数のマクロＭ１〜Ｍ６を複数のスキャンチェーンＳＣ１，ＳＣ２で接続するための半導体集積回路設計方法であって、前記複数のマクロＭ１〜Ｍ６の電源線間の抵抗値Ｒ２〜Ｒ６に応じて、前記複数のマクロＭ１〜Ｍ６を前記複数のスキャンチェーンＳＣ１，ＳＣ２の中のいずれかのスキャンチェーンに接続するマクロとして割り当てる割り当てステップＳ６０１〜Ｓ６０４と、前記複数のマクロＭ１〜Ｍ６を前記割り当てられたスキャンチェーンＳＣ１，ＳＣ２で接続した半導体集積回路ＣＰの設計データを生成する生成ステップＳ６０５とを有する。
【００７１】
前記割り当てステップＳ６０１〜Ｓ６０４は、前記複数のマクロＭ１〜Ｍ６の電源線間の抵抗値Ｒ２〜Ｒ６に応じて、前記複数のマクロＭ１〜Ｍ６を前記複数のスキャンチェーンＳＣ１，ＳＣ２に順番に繰り返し割り当てる。
【００７２】
また、前記割り当てステップは、前記複数のマクロＭ１〜Ｍ６の中の１個のマクロを基点マクロＭ１として第１のスキャンチェーンＳＣ１に割り当てる第１の割り当てステップＳ６０１と、前記基点マクロＭ１に対して前記抵抗値が最も低いマクロから順に前記第１のスキャンチェーンＳＣ１以外の他のスキャンチェーンＳＣ２に割り当てる第２の割り当てステップＳ６０２と、未割り当てのマクロの中で各スキャンチェーンＳＣ１，ＳＣ２の最後に割り当てられたマクロに対して前記抵抗値が最も高いマクロから順番に繰り返して前記各スキャンチェーンＳＣ１，ＳＣ２に割り当てる第３の割り当てステップＳ６０３，Ｓ６０４とを有する。
【００７３】
第１〜第３の実施形態によれば、半導体集積回路のスキャンテスト時において、電源電圧のＩＲドロップによる回路誤動作を回避させることができる。具体的には、スキャンテスト時のＩＲドロップの発生を出来るだけ抑えるようにスキャンチェーンを生成することにより、スキャンテスト時の回路動作不良を防止することができる。これにより、コスト、設計ＴＡＴの大幅な増加を伴うことなく、スキャンテスト時のＩＲドロップを抑制した半導体集積回路設計を行うことができる。
【００７４】
また、テスト時のＩＲドロップが小さくなるように複数のマクロを複数のスキャンチェーンで接続することができる。また、テスト後にスキャンチェーン接続設計をやり直すことがないので、効率的な設計を行うことができる。
【００７５】
本実施形態は、図８のコンピュータがプログラムを実行することによって実現することができる。また、プログラムをコンピュータに供給するための手段、例えばかかるプログラムを記録したＣＤ−ＲＯＭ等のコンピュータ読み取り可能な記録媒体又はかかるプログラムを伝送するインターネット等の伝送媒体も本発明の実施形態として適用することができる。また、上記のプログラムを記録したコンピュータ読み取り可能な記録媒体等のコンピュータプログラムプロダクトも本発明の実施形態として適用することができる。上記のプログラム、記録媒体、伝送媒体及びコンピュータプログラムプロダクトは、本発明の範疇に含まれる。記録媒体としては、例えばフレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、磁気テープ、不揮発性のメモリカード、ＲＯＭ等を用いることができる。
【００７６】
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【００７７】
本発明の実施形態は、例えば以下のように種々の適用が可能である。
【００７８】
（付記１）
半導体集積回路内の複数のマクロを複数のスキャンチェーンで接続するための半導体集積回路設計方法であって、
前記複数のマクロ間の距離に応じて、前記複数のマクロを前記複数のスキャンチェーンの中のいずれかのスキャンチェーンに接続するマクロとして割り当てる割り当てステップと、
前記複数のマクロを前記割り当てられたスキャンチェーンで接続した半導体集積回路の設計データを生成する生成ステップと
を有することを特徴とする半導体集積回路設計方法。
（付記２）
前記割り当てステップは、前記複数のマクロ間の距離に応じて、前記複数のマクロを前記複数のスキャンチェーンに順番に繰り返し割り当てることを特徴とする付記１記載の半導体集積回路設計方法。
（付記３）
前記割り当てステップは、
前記複数のマクロの中の１個のマクロを基点マクロとして第１のスキャンチェーンに割り当てる第１の割り当てステップと、
前記基点マクロに最も近い又は遠いマクロから順に前記第１のスキャンチェーン以外の他のスキャンチェーンに割り当てる第２の割り当てステップと、
未割り当てのマクロの中で前記基点マクロに最も近い又は遠いマクロから順番に繰り返して前記複数のスキャンチェーンに割り当てる第３の割り当てステップとを有することを特徴とする付記２記載の半導体集積回路設計方法。
（付記４）
半導体集積回路内の複数のマクロを複数のスキャンチェーンで接続するための半導体集積回路設計方法であって、
前記複数のマクロのＩＲドロップに応じて、前記複数のマクロを前記複数のスキャンチェーンの中のいずれかのスキャンチェーンに接続するマクロとして割り当てる割り当てステップと、
前記複数のマクロを前記割り当てられたスキャンチェーンで接続した半導体集積回路の設計データを生成する生成ステップと
を有することを特徴とする半導体集積回路設計方法。
（付記５）
前記割り当てステップは、前記複数のマクロのＩＲドロップに応じて、前記複数のマクロを前記複数のスキャンチェーンに順番に繰り返し割り当てることを特徴とする付記４記載の半導体集積回路設計方法。
（付記６）
前記割り当てステップは、
前記複数のマクロの中で前記ＩＤドロップが最も大きい又は小さいマクロから順番に前記複数のスキャンチェーンに割り当てる第１の割り当てステップと、
未割り当てのマクロの中で前記ＩＤドロップが最も大きい又は小さいマクロから順番に繰り返して前記複数のスキャンチェーンに割り当てる第２の割り当てステップとを有することを特徴とする付記５記載の半導体集積回路設計方法。
（付記７）
半導体集積回路内の複数のマクロを複数のスキャンチェーンで接続するための半導体集積回路設計方法であって、
前記複数のマクロの電源線間の抵抗値に応じて、前記複数のマクロを前記複数のスキャンチェーンの中のいずれかのスキャンチェーンに接続するマクロとして割り当てる割り当てステップと、
前記複数のマクロを前記割り当てられたスキャンチェーンで接続した半導体集積回路の設計データを生成する生成ステップと
を有することを特徴とする半導体集積回路設計方法。
（付記８）
前記割り当てステップは、前記複数のマクロの電源線間の抵抗値に応じて、前記複数のマクロを前記複数のスキャンチェーンに順番に繰り返し割り当てることを特徴とする付記７記載の半導体集積回路設計方法。
（付記９）
前記割り当てステップは、
前記複数のマクロの中の１個のマクロを基点マクロとして第１のスキャンチェーンに割り当てる第１の割り当てステップと、
前記基点マクロに対して前記抵抗値が最も低いマクロから順に前記第１のスキャンチェーン以外の他のスキャンチェーンに割り当てる第２の割り当てステップと、
未割り当てのマクロの中で各スキャンチェーンの最後に割り当てられたマクロに対して前記抵抗値が最も高いマクロから順番に繰り返して前記各スキャンチェーンに割り当てる第３の割り当てステップとを有することを特徴とする付記８記載の半導体集積回路設計方法。
【図面の簡単な説明】
【００７９】
【図１】本発明の第１の実施形態による半導体集積回路設計装置の設計方法を示すフローチャートである。
【図２】本発明の第１の実施形態による半導体集積回路の構成例を示す図である。
【図３】本発明の第２の実施形態による半導体集積回路設計装置の設計方法を示すフローチャートである。
【図４】６個のマクロをＩＲドロップの大きい順に並べた図である。
【図５】本発明の第２の実施形態による半導体集積回路の構成例を示す図である。
【図６】本発明の第３の実施形態による半導体集積回路設計装置の設計方法を示すフローチャートである。
【図７】本発明の第３の実施形態による半導体集積回路の構成例を示す図である。
【図８】本発明の第１の実施形態による半導体集積回路設計装置を構成するコンピュータのハードウェア構成例を示すブロック図である。
【図９】一般的な半導体集積回路の構成例を示すブロック図である。
【図１０】本発明の第１の実施形態による半導体集積回路の構成例を示すブロック図である。
【符号の説明】
【００８０】
ＣＰ  半導体集積回路
Ｍ１〜Ｍ６  マクロ
ＳＣ１，ＳＣ２  スキャンチェーン
ＰＤ，ＰＤ１，ＰＤ２  電源パッド
８０１  バス
８０２  ＣＰＵ
８０３  ＲＯＭ
８０４  ＲＡＭ
８０５  ネットワークインタフェース
８０６  入力装置
８０７  出力装置
８０８  外部記憶装置
【図１】
0005181638.tif 000002
【図２】
0005181638.tif 000003
【図３】
0005181638.tif 000004
【図４】
0005181638.tif 000005
【図５】
0005181638.tif 000006
【図６】
0005181638.tif 000007
【図７】
0005181638.tif 000008
【図８】
0005181638.tif 000009
【図９】
0005181638.tif 000010
【図１０】
0005181638.tif 000011