説明

半導体集積回路設計装置、半導体集積回路設計方法、および、プログラム

【課題】半導体集積回路において、スキャンテスト時における消費電力を削減する。
【解決手段】半導体集積回路設計装置は、第1のスキャンFFのデータ入力端子に接続された第1のロジックコーンの入力端子数である第1の入力端子数と、第1のロジックコーンにデータを設定する第2のスキャンFFのデータ入力端子に接続された第2のロジックコーンの入力端子数である第2の入力端子数とを比較するデザイン解析部と、複数のスキャンFFのそれぞれのデータ入力端子に接続されたロジックコーンの入力端子数、および、複数のスキャンFFのそれぞれを第1のスキャンFFとした場合の前記比較結果に応じて、複数のスキャンFFを複数のグループに分類し、複数のグループのそれぞれに含まれるスキャンFFを相互に接続したスキャンチェーンを複数のグループのそれぞれについて生成するスキャンチェーン構築部と、を備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、半導体集積回路設計装置、半導体集積回路設計方法およびプログラムに関し、特に、テスト容易化設計(DFT:Design For Testability)に基づくスキャンテストが可能な半導体集積回路の設計装置、設計方法およびプログラムに関する。
【背景技術】
【0002】
半導体集積回路(以下、「LSI」という。)に関して、機能テストで十分な故障検出を確保することが必要とされる。LSIは、ロジック、メモリ、IPコア等が搭載された大規模回路であることから、スキャンテストにより故障検出を行う手法が主流となっている。スキャンテストにおいては、スキャンシフト動作の際に、すべてのスキャンフリップフロップ(以下、「スキャンFF」という。)を同時に動作させる。このとき、全スキャンFFまでのクロックラインが同時に動作することで瞬間的に消費電力が増大し、テスタでの電力リミットオーバーによるテスタ誤動作、テスト不能等を引き起こすおそれがある。そこで、スキャンテストにおいて、消費電力を抑える技術が必要とされている。
【0003】
特許文献1は、シフトモード動作後にスキャンFFのQ端子の固定解除(ホールド解除)を行う際に発生する消費電力を低減するために固定解除のタイミングをグループ毎に分けることで増加するテスト時間に対して、テストに必要なスキャンFFのQ端子のみ固定解除することで、消費電力を低減しつつテスト時間を削減する。
【0004】
図17は、特許文献1に記載されたクロック探索処理の詳細な手順を示すフローチャートである。
【0005】
ステップS10において、着目しているフリップフロップのクロック端子からバックトレースして、クロック名を抽出する。このとき、着目しているクロック信号名をクロック名としてクロック関係情報記憶部33に記憶させる。
【0006】
続いて、ステップS11において、フリップフロップのデータ入力端子のファンインコーンを抽出する。
【0007】
ステップS12において、当該フリップフロップを終点とするパスについて、当該パスの始点に当たるフリップフロップをすべて抽出し、抽出したフリップフロップに入力されているクロック信号名を抽出する。このとき、抽出したファンインコーンのフリップフロップのクロック信号名を、着目しているクロック名の関連クロックドメイン名として、クロック関係情報記憶部33に記憶させる。
【0008】
本工程により、クロック信号に基づき、テストパタン生成に必要な論理回路の接続関係を抽出し、テストパタン生成時に必要なスキャンFFのQ出力端子のみを解除することが可能となる。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】特開2010−139322号公報(第11頁、図12)
【発明の概要】
【発明が解決しようとする課題】
【0010】
以下の分析は、本発明者によってなされたものである。
【0011】
特許文献1に記載された技術は、テスト対象とする論理回路への値の設定を考慮してスキャンチェーン構成をしないため、スキャンシフト時の最大消費電力を抑える場合にテストパタン数が増加し、テスト時間が増大し得る。
【0012】
パタン数の増加が発生する理由は、対象スキャンFFのデータ入力に接続されたロジックコーン(すなわち、当該データ入力端子に接続された論理回路のうちの当該データ入力端子の論理値に影響を及ぼし得る回路の集合)の解析は可能であるものの、そのロジックコーンに値を設定するスキャンFF(以下、「制御スキャンFF」という。)側の解析をしていないためである。
【0013】
特許文献1に記載された技術によるとテストパタン数が増加するメカニズムについて、一例として、図18の半導体集積回路に基づいて説明する。
【0014】
バッファ回路500をテストするのに必要なパタンは、“{0}と{1}”の2パタンとなる。一方、OR回路700をテストするのに必要なパタンは、図19(a)に示すように5パタンとなる。
【0015】
ここで、テストパタンを止めたときのパタン数の増加の有無について検討する。図19(c)に示すように、OR回路700のテストパタンを止めた場合には、パタン数が増加する。一方、図19(b)に示すように、バッファ回路500のテストパタンを止めても、OR回路700をテストするための別のパタンに、そのパタンを含めることで、全体のパタン数の増加を防ぐことができる。
【0016】
すなわち、データ入力端子に接続されたロジックコーンをテストするためのパタン数の近いスキャンFF毎にスキャンチェーンを構成し、テストパタン数の多いスキャンFFのスキャンチェーンを常に動かし、テストパタン数が少ないスキャンFFのスキャンチェーンを各々交互に動作させることで、パタン数を増加させることなく、1パタン当りに動作するスキャンFFの数を減らし、消費電力を削減することが可能となる。
【0017】
ロジックコーンのテストに必要なテストパタン数は、ロジックコーンの入力端子数に依存し、バッファ回路等の1入力ゲートをテストするのに必要なテストパタンは、“{0}および{1}”であり、テストパタン数は2となる。一方、2入力ORゲートをテストするのに必要なテストパタンは“{00}、{10}および{01}”であり、テストパタン数は3となる。
【0018】
特許文献1に記載された技術でも、クロック探索処理によって、対象スキャンFFのデータ入力端子に接続されたロジックコーンの入力端子数を解析することができる。スキャンFF800はロジックコーン(OR回路700)の入力端子数が多いため、動作率の高いスキャンチェーンに含める。一方、スキャンFF600、610、620、630はロジックコーン(バッファ回路500、510、520、530)のテストに必要なテストパタン数が少ないため、動作率の低いスキャンチェーンに含める。
【0019】
しかし、図19(a)に示すように、OR回路700をテストするためには、OR回路700の入力端子に接続されたスキャンFF600、610、620、630に値を設定する必要がある。したがって、スキャンFF600、610、620、630を動作率の低いチェーンに含めてしまうと、入力端子700a〜700dの値の制御ができず、パタン数が増加してしまう。
【0020】
したがって、スキャンFFのデータ入力端子に接続されたロジックコーンの入力端子数に応じてスキャンFFを分類し、入力端子数の多いスキャンFFを動作率の高いスキャンチェーンに含めるとともに、入力端子数の少ないスキャンFFを動作率の低いスキャンチェーンに含めた場合には、スキャンシフト時に動作するスキャンFFの個数を削減することはできるものの、スキャンテストにおけるテストパタン数が増大し、テストに要する期間の長期化を招くおそれがある。
【0021】
そこで、スキャンテストにおけるテストパタン数を増大させることなく、スキャンシフト時に動作するスキャンFFの個数を削減して消費電力を抑えることが課題となる。
【課題を解決するための手段】
【0022】
本発明の第1の視点に係る半導体集積回路設計装置は、
第1のスキャンFFのデータ入力端子に接続された第1のロジックコーンの入力端子数である第1の入力端子数と、該第1のロジックコーンにデータを設定する第2のスキャンFFのデータ入力端子に接続された第2のロジックコーンの入力端子数である第2の入力端子数とを比較するデザイン解析部と、
複数のスキャンFFのそれぞれのデータ入力端子に接続されたロジックコーンの入力端子数、および、該複数のスキャンFFのそれぞれを前記第1のスキャンFFとした場合の前記比較結果に応じて、該複数のスキャンFFを複数のグループに分類し、該複数のグループのそれぞれに含まれるスキャンFFを相互に接続したスキャンチェーンを該複数のグループのそれぞれについて生成するスキャンチェーン構築部と、を備える。
【0023】
本発明の第2の視点に係る半導体集積回路設計方法は、
第1のスキャンFFのデータ入力端子に接続された第1のロジックコーンの入力端子数である第1の入力端子数と、該第1のロジックコーンにデータを設定する第2のスキャンFFのデータ入力端子に接続された第2のロジックコーンの入力端子数である第2の入力端子数とを比較する工程と、
複数のスキャンFFのそれぞれのデータ入力端子に接続されたロジックコーンの入力端子数、および、該複数のスキャンFFのそれぞれを前記第1のスキャンFFとした場合の前記比較結果に応じて、該複数のスキャンFFを複数のグループに分類する工程と、
前記複数のグループのそれぞれに含まれるスキャンFFを相互に接続したスキャンチェーンを前記複数のグループのそれぞれについて生成する工程と、を含む。
【0024】
本発明の第3の視点に係るプログラムは、
第1のスキャンFFのデータ入力端子に接続された第1のロジックコーンの入力端子数である第1の入力端子数と、該第1のロジックコーンにデータを設定する第2のスキャンFFのデータ入力端子に接続された第2のロジックコーンの入力端子数である第2の入力端子数とを比較する処理と、
複数のスキャンFFのそれぞれのデータ入力端子に接続されたロジックコーンの入力端子数、および、該複数のスキャンFFのそれぞれを前記第1のスキャンFFとした場合の前記比較結果に応じて、該複数のスキャンFFを複数のグループに分類する処理と、
前記複数のグループのそれぞれに含まれるスキャンFFを相互に接続したスキャンチェーンを前記複数のグループのそれぞれについて生成する処理と、をコンピュータに実行させる。なお、プログラムは、非トランジエントなコンピュータ読み取り可能な(non−transient computer−readable)記録媒体に記録したプログラム製品としても提供し得る。
【発明の効果】
【0025】
本発明に係る半導体集積回路設計装置、半導体集積回路設計方法、および、プログラムによると、半導体集積回路のスキャンテストにおけるテストパタン数を増大させることなく、スキャンシフト時に動作するスキャンFFの個数を削減して消費電力を抑えることが可能となる。
【図面の簡単な説明】
【0026】
【図1】第1の実施形態に係る半導体集積回路設計装置の構成を一例として示すブロック図である。
【図2】本発明に係る半導体集積回路設計装置の動作について説明するための図である。
【図3】第1の実施形態に係る半導体集積回路設計装置におけるデザイン解析部の動作を一例として示すフローチャートである。
【図4】第1の実施形態に係る半導体集積回路設計装置おけるロジックコーン入力端子数リストを一例として示す表である。
【図5】第1の実施形態に係る半導体集積回路設計装置おけるスキャンFF情報リストを一例として示す表である。
【図6】第1の実施形態に係る半導体集積回路設計装置におけるスキャンチェーン情報リストを一例として示す表である。
【図7】第1の実施形態に係る半導体集積回路設計装置におけるスキャンチェーン構築部の動作を一例として示すフローチャートである。
【図8】第1の実施形態に係る半導体集積回路設計装置におけるクロック制御回路挿入部の動作を一例として示すフローチャートである。
【図9】第1の実施形態に係る半導体集積回路設計装置におけるパタン生成部の動作を一例として示すフローチャートである。
【図10】第1の実施形態に係る半導体集積回路設計装置によって設計された半導体集積回路の構成を一例として示すブロック図である。
【図11】第1の実施形態に係る半導体集積回路設計装置によって設計された半導体集積回路におけるクロック制御回路の構成を一例として示す回路図である。
【図12】第1の実施形態に係る半導体集積回路設計装置によって設計された半導体集積回路におけるクロック制御回路の動作を一例として示すタイミングチャートである。
【図13】第1の実施形態に係る半導体集積回路設計装置の効果の一例について説明するための図である。
【図14】第2の実施形態に係る半導体集積回路設計装置の構成を一例として示すブロック図である。
【図15】第2の実施形態に係る半導体集積回路設計装置におけるロジックコーンパタン数リストを一例として示す表である。
【図16】第2の実施形態に係る半導体集積回路設計装置におけるデザイン解析部の動作を一例として示すフローチャートである。
【図17】特許文献1に記載されたクロック探索処理の詳細手順である。
【図18】特許文献1の課題を説明するための半導体集積回路である。
【図19】特許文献1の課題を説明するための半導体集積回路をテストするのに必要なテストパタンである。
【発明を実施するための形態】
【0027】
はじめに、本発明の概要について説明する。なお、この概要に付記する図面参照符号は、専ら理解を助けるための例示であり、本発明を図示の態様に限定することを意図するものではない。図1は、本発明に係る半導体集積回路設計装置の構成を一例として示すブロック図である。また、図2は、本発明に係る半導体集積回路設計装置の動作について説明するための図である。
【0028】
図1および図2(a)を参照すると、本発明に係る半導体集積回路設計装置は、第1のスキャンFF(FF1)のデータ入力端子に接続された第1のロジックコーン(LC1)の入力端子数である第1の入力端子数(N1)と、第1のロジックコーン(LC1)にデータを設定する第2のスキャンFF(FF2)のデータ入力端子に接続された第2のロジックコーン(LC2)の入力端子数である第2の入力端子数(N2)とを比較するデザイン解析部(100)と、複数のスキャンFFのそれぞれのデータ入力端子に接続されたロジックコーンの入力端子数、および、該複数のスキャンFFのそれぞれを第1のスキャンFFとした場合の前記比較結果に応じて、該複数のスキャンFFを複数のグループに分類し、該複数のグループのそれぞれに含まれるスキャンFFを相互に接続したスキャンチェーンを該複数のグループのそれぞれについて生成するスキャンチェーン構築部(200)と、を備える。ここで、スキャンチェーン構築部(200)は、複数のスキャンFFのそれぞれのデータ入力端子に接続されたロジックコーンの入力端子数の値が近いスキャンFF同士を同一のグループに分類するとともに、第1の入力端子数(N1)が第2の入力端子数(N2)よりも大きい場合には(N1>N2)、第2のスキャンFF(FF2)を第1のスキャンFF(FF1)と同一のグループに分類することが好ましい。
【0029】
このとき、データ入力端子に接続されたロジックコーンの入力端子数が相対的に多いスキャンFF同士と、相対的に少ないスキャンFF同士を、別々のグループに分類し、別個のスキャンチェーンに含まれるようにすることが可能となる。また、データ入力端子に接続されたロジックコーンの入力端子数が相対的に少ないスキャンFFが、データ入力端子に接続されたロジックコーンの入力端子数が相対的に多いスキャンFFのデータ入力端子に接続されたロジックコーンにデータを設定している場合には、これらのスキャンFFを同一のスキャンチェーンに含まれるようにすることが可能となる。
【0030】
半導体集積回路設計装置は、前記複数のスキャンチェーンのそれぞれに含まれるスキャンFFのデータ入力端子に接続されたロジックコーンの入力端子数に応じて、前記複数のスキャンチェーンのそれぞれの動作率を決定するクロック制御回路挿入部(300)を備えることが好ましい。クロック制御回路挿入部(300)は、スキャンチェーンに含まれるスキャンFFのデータ入力端子に接続されたロジックコーンの入力端子数が多くなるに従って動作率が高くなるように、前記複数のスキャンチェーンのそれぞれの動作率を決定することが好ましい。
【0031】
このとき、データ入力端子に接続されたロジックコーンの入力端子数が相対的に少ないスキャンFFを含むスキャンチェーンの動作率を相対的に低くし、データ入力端子に接続されたロジックコーンの入力端子数が相対的に多いスキャンFFを含むスキャンチェーンの動作率を相対的に高くすることで、テストパタン数を増加させることなく、稼動するスキャンFFの個数を削減することが可能となる。したがって、スキャンテストのスキャンシフト動作における消費電力を削減することができる。
【0032】
図2(b)を参照すると、スキャンチェーン構築部(200)は、第2のスキャンFF(FF2)が第3のスキャンFF(FF3)のデータ入力端子に接続された第3のロジックコーン(LC3)にもデータを設定し、かつ、第3のロジックコーンの入力端子数(N3)が第2の入力端子数(N2)よりも大きい場合には(N3>N2)、第1の入力端子数(N1)が第3のロジックコーンの入力端子数(N3)以上であるときに(N1≧N3)、第1のスキャンFF(FF1)および第2のスキャンFF(FF2)を同一のグループに分類し、それ以外のときに(N1<N3)、第3のスキャンFF(FF3)および第2のスキャンFF(FF2)を同一のグループに分類するようにしてもよい。
【0033】
図2(c)を参照すると、スキャンチェーン構築部(200)は、第1のロジックコーン(LC1)にデータを設定する第4のスキャンFF(FF4)のデータ入力端子に接続された第4のロジックコーン(LC4)の入力端子数である第4の入力端子数(N4)と、第1の入力端子数(N1)とを比較し、第1の入力端子数が第2の入力端子数よりも大きく、かつ、第1の入力端子数が第4の入力端子数よりも大きい場合には(N1>N2、N1>N4)、第1のスキャンFF、第2のスキャンFFおよび第4のスキャンFF(FF1、FF2、FF4)を同一のグループに分類するようにしてもよい。
【0034】
また、スキャンチェーン構築部(200)は、複数のスキャンFFを複数のグループに分類した際に、複数のグループのいずれかのグループに含まれるスキャンFFの数が所定の数を上回った場合には、同一の機能ブロックに属するスキャンFFを該グループに含めるようにし、それ以外のスキャンFFを他のグループに分類することが好ましい。
【0035】
なお、デザイン解析部(100)、スキャンチェーン構築部(200)およびクロック制御回路挿入部(300)は、前記複数のスキャンFFのそれぞれのデータ入力端子に接続されたロジックコーンの入力端子数の代わりに、前記複数のスキャンFFのそれぞれのデータ入力端子に接続されたロジックコーンに対するテストパタン数を用いるようにしてもよい。
【0036】
本発明は、スキャンテストの消費電力削減方法および半導体集積回路に関し、スキャンFFを用いた半導体集積回路設計装置および半導体集積回路設計方法に関する。特に、半導体集積回路設計装置は、テスト時におけるスキャンFFを同時に動作させる場合において、スキャンFFのデータ入力端子に接続されたロジックコーンの入力端子数と前記スキャンFFのデータ入力端子に接続されたスキャンFF(制御スキャンFF)のデータ入力端子に接続されたロジックコーンの入力端子数を考慮してスキャンチェーンを構成し、生成したスキャンチェーン毎にスキャンクロックの供給を制御するクロック制御回路を用いてパタン生成する機能を有し、データ入力端子に接続されたロジックコーンの入力端子数が多いスキャンFFで構成したスキャンチェーンは、常に動かし、データ入力端子に接続されたロジックコーンの入力端子数が少ないスキャンFFで構成したスキャンチェーンは、動作回数を少なくする。これにより、動作するスキャンFFの個数を減らし、スキャンパタン数を増加させることなく、スキャンシフト時の最大消費電力を抑えることができる。
【0037】
(実施形態1)
第1の実施形態に係る半導体集積回路設計装置について、図面を参照して説明する。図1は、本実施形態に係る半導体集積回路設計装置の構成を一例として示すブロック図である。図1を参照すると、半導体集積回路設計装置は、デザイン解析部100、スキャンチェーン構築部200、クロック制御回路挿入部300、および、パタン生成部400を備えている。
【0038】
デザイン解析部100は、被テスト回路2を入力とし、スキャンFF情報リスト71を生成する。
【0039】
スキャンチェーン構築部200は、スキャンFF情報リスト71と被テスト回路2を入力とし、スキャンFF情報リスト71を用いて被テスト回路2に対してスキャンチェーンを構築して、スキャンチェーン情報リスト72とスキャンチェーン構築済み回路73を生成する。
【0040】
クロック制御回路挿入部300は、スキャンチェーン構築済み回路73に対してクロック制御回路30を挿入し、クロック制御回路挿入後回路74を作成する。
【0041】
パタン生成部400は、クロック制御回路挿入後回路74とスキャンチェーン情報リスト72を入力とし、テストパタン75を生成する。
【0042】
図4は、ロジックコーン入力端子数リスト80を一例として示す表である。図4を参照すると、ロジックコーン入力端子数リスト80の各行は、スキャンFF名80a、入力端子数80b、観測スキャンFF名80c、および、観測入力端子数80dを含む。また、ロジックコーン入力端子数リスト80は、スキャンFFの個数に応じて、複数の行を有する。
【0043】
スキャンFF名80aには、スキャンFF名を記載する。入力端子数80bには、スキャンFF名80aに記載されたスキャンFFのデータ入力端子に接続されたロジックコーンの入力端子数(以下、「ロジックコーン入力端子数」という。)を記載する。観測スキャンFF名80cには、スキャンFF名80aに記載されたスキャンFFの出力信号を取り込む観測スキャンFFのうちの、当該スキャンFFよりもロジックコーン入力端子数が大きい観測スキャンFF名を記載する。観測入力端子数80dは、観測スキャンFF名80cに記載された観測スキャンFFのロジックコーン入力端子数を記載する。
【0044】
図5は、スキャンFF情報リスト71を一例として示す表である。図5を参照すると、スキャンFF情報リスト71の各行は、ロジックコーン情報71a、スキャンFF名71b、機能ブロック名71c、クロック名71d、および、制御スキャンFF名71eを含む。また、スキャンFF情報リスト71は、複数の行を含む。
【0045】
ロジックコーン情報71aには、対象スキャンFFのデータ入力端子に接続されたロジックコーンの情報(ロジックコーン入力端子数)を記載する。スキャンFF名71bには、当該対象スキャンFF名を記載する。機能ブロック名71cには、当該対象スキャンFFが存在している機能ブロック(モジュール)名を記載する。クロック名71dには、当該対象スキャンFFが接続されているクロック名を記載する。制御スキャンFF名71eには、当該対象スキャンFFに対する制御スキャンFFのうちの、当該対象スキャンFFよりもロジックコーン入力端子数が小さい制御スキャンFF名を記載する。
【0046】
図6は、スキャンチェーン情報リスト72を一例として示す表である。図6を参照すると、スキャンチェーン情報リスト72の各行は、スキャンチェーン番号72a、スキャンFF数72b、ロジックコーン情報72c、スキャンFF名72d、機能ブロック名72e、および、クロック名72fを含む。スキャンチェーン情報リスト72は、スキャンFFの個数に応じて、複数の行を有する。
【0047】
スキャンFF数72bには、スキャンチェーンに接続されたスキャンFFの番号を記載する。ロジックコーン情報72cには、対象スキャンFFのデータ入力端子に接続されたロジックコーンの情報を記載する。スキャンFF名72dには、当該対象スキャンFF名を記載する。機能ブロック名72eには、当該対象スキャンFFが存在している機能ブロック名を記載する。クロック名72fには、当該対象スキャンFFが接続しているクロック名を記載する。
【0048】
本実施形態に係る半導体集積回路設計装置におけるデザイン解析部100の動作について、図面を参照して説明する。図3は、デザイン解析部100の動作を一例として示すフローチャートである。
【0049】
図3を参照すると、デザイン解析部100は、ロジックコーンの解析を行うスキャンFFを選択する(ステップA1)。
【0050】
デザイン解析部100は、ステップA1で選択したスキャンFFのデータ入力端子に接続されたロジックコーンの入力端子数を解析する(ステップA2)。すなわち、デザイン解析部100は、スキャンFF名をロジックコーン入力端子数リスト80のスキャンFF名80aに記載し、スキャンFFのデータ入力端子に接続されたロジックコーンの入力端子数をロジックコーン入力端子数リスト80の入力端子数80bに記載し、ロジックコーン入力端子数リスト80を作成する。
【0051】
デザイン解析部100は、すべてのスキャンFFのロジックコーン解析を終了したかどうかを判定する(ステップA3)。終了した場合には(ステップA3のYes)、ステップA4に進む。一方、ロジックコーンの解析をしていないスキャンFFが存在する場合には(ステップA3のNo)、デザイン解析部100はステップA1に戻り、処理を繰り返す。
【0052】
デザイン解析部100は、スキャンFFのデータ入力端子に接続されたロジックコーンに値を設定するスキャンFF(以下、「制御スキャンFF」という。)を解析する対象となるスキャンFFを、対象スキャンFFとして設定する(ステップA4)。
【0053】
デザイン解析部100は、ステップA4で設定した対象スキャンFFに制御スキャンFFが存在するかどうかを判断する(ステップA5)。存在する場合には(ステップA5のYes)、ステップA6に進む。一方、存在しない場合には(ステップA5のNo)、ステップA13に進む。
【0054】
デザイン解析部100は、ステップA4で設定した対象スキャンFFに接続された制御スキャンFFを選択する(ステップA6)。
【0055】
デザイン解析部100は、ロジックコーン入力端子数リスト80のスキャンFF名80aにステップA6で選択した制御スキャンFF名が記載されている行の観測入力端子数80dに数値が記載されているかどうかを判定する(ステップA7)。観測入力端子数80dに数値が記載されている場合には(ステップA7のYes)、ステップA8に進む。一方、観測入力端子数80dに数値が記載されていない場合には(ステップA7のNo)、ステップA9に進む。
【0056】
ロジックコーン入力端子数リスト80の制御スキャンFFの行において、観測入力端子数80dに数値が記載されている場合には(ステップA7のYes)、制御スキャンFFの入力端子数として観測入力端子数80dの数値を選択する(ステップA8)。
【0057】
一方、ロジックコーン入力端子数リスト80の制御スキャンFFの行において、観測入力端子数80dに数値が記載されていない場合には(ステップA7のNo)、制御スキャンFFの入力端子数として、ロジックコーン入力端子数リスト80の入力端子数80bの数値を選択する(ステップA9)。
【0058】
デザイン解析部100は、ステップA4で設定した対象スキャンFFのロジックコーン入力端子数80bが制御スキャンFFの入力端子数よりも大きいかどうかを判定する(ステップA10)。対象スキャンFFのロジックコーン入力端子数80bが制御スキャンFFの入力端子数よりも大きい場合には(ステップA10のYes)、ステップA11に進む。一方、対象スキャンFFのロジックコーン入力端子数が制御スキャンFFの入力端子数以下である場合には(ステップA10のNo)、ステップA12に進む。
【0059】
対象スキャンFFのロジックコーンの入力端子数80bが制御スキャンFFの入力端子数よりも大きい場合には(ステップA10のYes)、デザイン解析部100は、ロジックコーン入力端子数リスト80のスキャンFF名80aに制御スキャンFFが記載された行の観測スキャンFF名80cに、ステップA4で設定した対象スキャンFF名を記載するとともに、観測入力端子数80dに対象スキャンFFのロジックコーン入力端子数80bを記載する(ステップA11)。
【0060】
デザイン解析部100は、ステップA4で設定した対象スキャンFFに接続されたすべての制御スキャンFFの調査が完了したかどうかを判定する(ステップA12)。調査が完了した場合には(ステップA12のYes)、ステップA13に進む。一方、調査が完了していない場合には(ステップA12のNo)、デザイン解析部100はステップA6に戻り、処理を繰り返す。
【0061】
デザイン解析部100は、すべてのスキャンFFに対して制御スキャンFFの調査が完了したかどうかを判定する(ステップA13)。調査が完了した場合には(ステップA13のYes)、ステップA14に進む。一方、調査が完了していない場合には(ステップS13のNo)、デザイン解析部100はステップA4に戻り、処理を繰り返す。
【0062】
すべてのスキャンFFの調査が完了した場合には(ステップA13のYes)、デザイン解析部100は、スキャンFF情報リスト71を作成する。すなわち、デザイン解析部100は、各スキャンFFに対して、ロジックコーン入力端子数リスト80の入力端子数80bをスキャンFF情報リスト71のロジックコーン情報71aに記載し、ロジックコーン入力端子数リスト80のスキャンFF名80aをスキャンFF情報リスト71のスキャンFF名71bに記載し、対象スキャンFFが存在している機能ブロックをスキャンFF情報リスト71の機能ブロック名71cに記載し、対象スキャンFFが接続しているクロック名をスキャンFF情報リスト71のクロック名71dに記載する。
【0063】
デザイン解析部100は、スキャンFF情報リスト71に反映するスキャンFFを設定する(ステップA15)。
【0064】
デザイン解析部100は、ステップA15で設定したスキャンFFのロジックコーン入力端子数リスト80の行に観測スキャンFF名80cが存在するかどうかを判定する(ステップA16)。観測スキャンFF名80cが存在する場合には(ステップA16のYes)、ステップA17に進む。一方、観測スキャンFF名80cが存在しない場合には(ステップA16のNo)、ステップA18に進む。
【0065】
ステップA15で設定したスキャンFFに観測スキャンFF名80cが存在する場合には(ステップA16のYes)、デザイン解析部100は、スキャンFF情報リスト71のスキャンFF名71bに観測スキャンFF名80cが記載されている行の制御スキャンFF名71eの箇所に、ステップA15で設定したスキャンFF名を記入し、ステップA15で設定したスキャンFF名がスキャンFF名71bに記載されている行をスキャンFF情報リスト71から削除する(ステップA17)。
【0066】
デザイン解析部100は、すべてのスキャンFFの設定が完了したかどうかを判定する(ステップA18)。設定が完了した場合には(ステップA18のYes)、処理を終了する。一方、設定が完了していない場合には(ステップA18のNo)、デザイン解析部100はステップA15に戻り、処理を繰り返す。
【0067】
本実施形態に係る半導体集積回路設計装置におけるスキャンチェーン構築部200の動作について、図面を参照して説明する。図7は、スキャンチェーン構築部200の動作を一例として示すフローチャートである。
【0068】
スキャンチェーン構築部200は、スキャンチェーン情報リスト72のスキャンチェーン番号72aを1に設定し、スキャンFF数72bのカウント数を1に設定する(ステップB1)。
【0069】
スキャンチェーン構築部200は、スキャンFF情報リスト71のロジックコーン情報71aの値が最も大きいスキャンFF群の行を抽出したスキャンFFリスト81を作成し、抽出したスキャンFF群を、スキャンFF情報リスト71から削除する(ステップB2)。
【0070】
スキャンチェーン構築部200は、スキャンFFリスト81内に制御スキャンFF名71eが記載されているスキャンFFが存在するかどうかを判定する(ステップB3)。かかるスキャンFFが存在する場合には(ステップB3のYes)、ステップB4に進む。一方、かかるスキャンFFが存在しない場合には(ステップB3のNo)、ステップB9に進む。
【0071】
スキャンチェーン構築部200は、スキャンFFリスト81の制御スキャンFF名71eが記載されている行を選択し、スキャンFF名71bのスキャンFFと制御スキャンFF名71eに記載されているスキャンFFをスキャンチェーン情報リスト72に記載し、記載したスキャンFF数分のスキャンFF数72bをカウントアップし、選択した制御スキャンFF名71eが記載されている行をスキャンFFリスト81から削除する(ステップB4)。
【0072】
スキャンチェーン構築部200は、カウントしたスキャンFF数72bが1チェーン当りスキャンFFの最大数を越えたかどうかを判定する(ステップB5)。スキャンFFの最大数を越えた場合には(ステップB5のYes)、ステップB6に進む。一方、スキャンFFの最大数を越えていない場合には(ステップB5のNo)、ステップB7に進む。
【0073】
1チェーン当りのスキャンFFの最大数を越えた場合には(ステップB5のYes)、スキャンチェーン構築部200は、スキャンチェーン情報リスト72のスキャンチェーン番号72aをカウントアップし、スキャンFF数72bを1に戻す(ステップB6)。
【0074】
スキャンチェーン構築部200は、スキャンFFリスト81内に制御スキャンFF名71eが記載されているスキャンFFが存在するかどうかを判定する(ステップB7)。かかるスキャンFFが存在する場合には(ステップB7のYes)、スキャンチェーン構築部200は、ステップB4に戻り、処理を繰り返す。一方、かかるスキャンFFが存在しない場合には(ステップB7のNo)、ステップB8に進む。
【0075】
ステップB7で制御スキャンFFが存在しない場合には(ステップB7のNo)、スキャンFFリスト81に記載しているスキャンFFをすべて選択したかを判定する(ステップB8)。スキャンFFをすべて選択した場合には(ステップB8のYes)、ステップB19に進む。一方、スキャンFFが残っている場合には(ステップB8のNo)、ステップB9に進む。
【0076】
スキャンチェーン構築部200は、スキャンFF数72bの値を確認する(ステップB9)。スキャンFF数72bが1でない場合には(ステップB9のNo)、ステップB10に進む。一方、スキャンFF数72bが1である場合には(スキャンB9のYes)、ステップB11に進む。
【0077】
スキャンFF数72bの値が1でない場合には(ステップB9のNo)、スキャンチェーン情報リスト72のスキャンチェーン番号72aの数値が最も大きい数値が記載されているスキャンFF群のうちで最も多く存在している機能ブロックを選択する(ステップB10)。
【0078】
スキャンFF数72bの値が1の場合(ステップB9のYes)、または、対象機能ブロック内のスキャンFFのうちの未選択のスキャンFFが存在する場合には(ステップB18のNo)、スキャンFFリスト81のうちで最もスキャンFFが多く存在する機能ブロックを選択する(ステップB11)。
【0079】
スキャンチェーン構築部200は、スキャンFFリスト81のうちの、ステップB10またはB11で選択した機能ブロック内で最もスキャンFF数の多いクロックドメインを対象クロックとして選択する(ステップB12)。
【0080】
スキャンチェーン構築部200は、スキャンFFリスト81のうちの、ステップB10またはB11で選択した機能ブロックに存在し、ステップB12で選択したクロックで動作するスキャンFFを一つ選択し、選択したスキャンFFの行をスキャンチェーン情報リスト72に記載し、スキャンFF数72bはカウントアップ値を記載し、選択したスキャンFFの行をスキャンFFリスト81から削除する(ステップB13)。
【0081】
スキャンチェーン構築部200は、カウントしたスキャンFF数72bが1チェーン当りのスキャンFFの最大個数を越えたかを判断する(ステップB14)。スキャンFFの最大個数を越えた場合には(ステップB14のYes)、ステップB15に進む。一方、スキャンFFの最大個数を越えていない場合には(ステップB14のNo)、ステップB16に進む。
【0082】
1チェーン当りのスキャンFFの最大数を越えた場合には(ステップB14のYes)、スキャンチェーン情報リスト72におけるスキャンチェーン番号72aをカウントアップし、スキャンFF数72bを1に戻す(ステップB15)。
【0083】
スキャンチェーン構築部200は、ステップB10またはB11で選択した機能ブロック内において、ステップB12で選択したクロックドメインのスキャンFFをすべて選択したかどうかを判定する(ステップB16)。スキャンFFをすべて選択した場合には(ステップB16のYes)、ステップB17に進む。一方、スキャンFFが残っている場合には(ステップB16のNo)、スキャンチェーン構築部200は、ステップB13に戻り、処理を繰り返す。
【0084】
選択したクロックドメインのスキャンFFをすべて選択した場合には(ステップB16のYes)、スキャンチェーン構築部200は、選択した機能ブロック内のスキャンFFをすべて選択したかどうかを判定する(ステップB17)。スキャンFFをすべて選択した場合には(ステップB17のYes)、B18に進む。一方、スキャンFFが残っている場合には(ステップB17のNo)、スキャンチェーン構築部200は、ステップB12に戻り、処理を繰り返す。
【0085】
機能ブロック内のスキャンFFをすべて選択した場合には(ステップB17のYes)、スキャンチェーン構築部200は、スキャンFFリスト81のスキャンFFをすべて選択したかを判定する(ステップB18)。スキャンFFをすべて選択した場合には(ステップB18のYes)、ステップB19に進む。一方、スキャンFFが残っている場合には(ステップB18のNo)、スキャンチェーン構築部200はステップB11に戻り、処理を繰り返す。
【0086】
スキャンチェーン構築部200は、スキャンFF情報リスト71のスキャンFFをすべて選択したかどうかを判定する(ステップB19)。スキャンFFをすべて選択した場合には(ステップB19のYes)、ステップB20に進む。一方、未選択のスキャンFFが残っている場合には(ステップB19のNo)、スキャンチェーン構築部200は、ステップB2に戻り、処理を繰り返す。
【0087】
スキャンFFをすべて選択した場合には(ステップB19のYes)、スキャンチェーン構築部200は、スキャンチェーン情報リスト72の情報を元に、スキャンチェーンを構築する(ステップB20)。
【0088】
本実施形態に係る半導体集積回路設計装置におけるクロック制御回路挿入部300の動作について、図面を参照して説明する。図8は、クロック制御回路挿入部300の動作を一例として示すフローチャートである。
【0089】
図8を参照すると、クロック制御回路挿入部300は、対象とするスキャンチェーンを選択する(ステップC1)。
【0090】
クロック制御回路挿入部300は、ステップC1で選択したスキャンチェーンに繋がっているスキャンFFのクロックドメインを解析する(ステップC2)。
【0091】
クロック制御回路挿入部300は、ステップC2で解析したクロックドメインを制御するクロック制御回路30を作成し、AMC信号4とSMC信号5とステップC1で選択したスキャンチェーンのスキャンイン信号6とスキャンチェーンに存在するスキャンFFのクロックを繋げる(ステップC3)。
【0092】
クロック制御回路挿入部300は、全スキャンチェーンに対してクロック制御回路30を挿入したかどうかを判定する(ステップC4)。全スキャンチェーンに対してクロック制御回路30を挿入した場合には(ステップC4のYes)、処理を終了する。一方、クロック制御回路30を挿入していないスキャンチェーンが存在する場合には(ステップC4のNo)、クロック制御回路挿入部300はステップC1に戻り、処理を繰り返す。
【0093】
本実施形態に係る半導体集積回路設計装置におけるパタン生成部400の動作について、図面を参照して説明する。図9は、パタン生成部400の動作を一例として示すフローチャートである。
【0094】
図9を参照すると、パタン生成部400は、動作させるスキャンチェーンの数を設定する(ステップD1)。
【0095】
パタン生成部400は、スキャンチェーン情報リスト72のロジックコーン情報72cの大きい順に、ステップD1で設定した数分のスキャンチェーンを選択する(ステップD2)。
【0096】
パタン生成部400は、ステップD2で選択したスキャンチェーンを用いてパタン生成を行う(ステップD3)。
【0097】
パタン生成部400は、パタン生成が完了したスキャンチェーンが存在するかどうかを判定する(ステップD4)。かかるスキャンチェーンが存在する場合には(ステップD4のYes)、ステップD5に進む。一方、かかるスキャンチェーンが存在しない場合には(ステップD4のNo)、パタン生成部400はステップD2に戻り、処理を繰り返す。
【0098】
パタン生成が完了したスキャンチェーンが存在する場合には(ステップD4のYes)、パタン生成が完了したスキャンチェーンをスキャンチェーン情報リスト72から削除する(ステップD5)。
【0099】
パタン生成部400は、被テスト回路に対してすべてのテストパタン生成が完了したかどうかを判定する(ステップD6)。テストパタン生成が完了した場合には(ステップD6のYes)、処理を終了する。一方、テストパタン生成が残っている場合には(ステップD6のNo)、パタン生成部400はステップD2に戻り、処理を繰り返す。
【0100】
図10は、本実施形態に係る半導体集積回路設計装置によって設計された半導体集積回路1の構成を一例として示すブロック図である。
【0101】
図10を参照すると、半導体集積回路1は、組み合わせ回路10、スキャンFF60a〜62a、スキャンFF60b〜62b、スキャンFF60c〜62c、第1ないし第3のスキャンチェーン21〜23、および、第1ないし第3のクロック制御回路30a〜30cを備えている。
【0102】
組み合わせ回路10の入力端子は、スキャンFF60a〜62a、スキャンFF60b〜62b、および、スキャンFF60c〜62cのそれぞれの出力端子に接続されている。一方、組み合わせ回路10の出力端子は、スキャンFF60a〜62a、スキャンFF60b〜62b、および、スキャンFF60c〜62cのそれぞれのデータ入力端子に接続されている。
【0103】
第1ないし第3のスキャンチェーン21〜23は、それぞれ、データ入力端子に接続されたロジックコーンの入力端子数の数が近いスキャンFFや、データのやり取りのあるスキャンFFで構成される。本実施形態では、半導体集積回路1は、一例として、3本のスキャンチェーンを含む。また、クロック制御回路30a〜30cは、それぞれ、スキャンチェーン21〜23に対して設けられる。
【0104】
スキャンチェーン21は、スキャンイン端子SIN1を入力信号とし、スキャンアウト端子SO1を出力信号とする。同様に、スキャンチェーン22は、スキャンイン端子SIN2を入力信号とし、スキャンアウト端子SO2を出力信号とする。スキャンチェーン23は、スキャンイン端子SIN3を入力信号とし、スキャンアウト端子SO3を出力信号とする。
【0105】
クロック制御回路30aは、通常モードとテストモードとを切り替えるAMC(Adaptive Mode Control)信号4と、スキャンシフトとキャプチャモードとを切り替えるSMC(Scan Mode Control)信号5と、スキャンチェーン21のスキャンイン端子SIN1と、スキャンクロック信号CLKA〜CLKCとを入力とする。また、クロック制御回路30aは、クロック制御信号40aをスキャンクロック信号CLKAで動作するスキャンFF60aのクロック信号として出力し、クロック制御信号41aをスキャンクロック信号CLKBで動作するスキャンFF61aのクロック信号として出力し、クロック制御信号42aをスキャンクロック信号CLKCで動作するスキャンFF62aのクロック信号として出力する。
【0106】
クロック制御回路30bは、AMC信号4と、SMC信号5と、スキャンチェーン22のスキャンイン端子SIN2と、スキャンクロック信号CLKA〜CLKCとを入力とする。また、クロック制御回路30bは、クロック制御信号40bをスキャンクロック信号CLKAで動作するスキャンFF60bのクロック信号として出力し、クロック制御信号41bをスキャンクロック信号CLKBで動作するスキャンFF61bのクロック信号として出力し、クロック制御信号42bをスキャンクロック信号CLKCで動作するスキャンFF62bのクロック信号として出力する。
【0107】
クロック制御回路30cは、AMC信号4と、SMC信号5と、スキャンチェーン23のスキャンイン端子SIN3と、スキャンクロック信号CLKA〜CLKCとを入力とする。また、クロック制御回路30cは、クロック制御信号40cをスキャンクロック信号CLKAで動作するスキャンFF60cのクロック信号として出力し、クロック制御信号41cをスキャンクロック信号CLKBで動作するスキャンFF61cのクロック信号として出力し、クロック制御信号42cをスキャンクロック信号CLKCで動作するスキャンFF62cのクロックとして出力する。
【0108】
図11は、図10に示したクロック制御回路30a〜30cの構成を一例として示す回路図である。
【0109】
図11を参照すると、クロック制御回路30a〜30cは、それぞれ、インバータ回路52、レベルラッチ回路50、インバータ回路53、OR回路51、および、AND回路54〜56を備えている。
【0110】
インバータ回路52は、SMC信号5を入力とし、レベルラッチ回路50に出力信号n52を出力する。
【0111】
インバータ回路53は、AMC信号4を入力とし、OR回路51に出力信号n53を出力する。
【0112】
レベルラッチ回路50は、スキャンイン信号6をデータ入力信号として入力し、インバータ回路52の出力信号n52をゲーティング信号として入力し、OR回路51に出力信号n50を出力する。
【0113】
OR回路51は、インバータ回路53の出力信号n53とレベルラッチ回路50の出力信号n50とをそれぞれ入力し、AND回路54〜56に出力信号n51を出力する。
【0114】
AND回路54は、OR回路51の出力信号n51とクロック信号CLKAとを入力とし、クロック制御信号40をスキャンクロック信号CLKAで動作するスキャンFFのクロック端子へ出力する。同様に、AND回路55は、OR回路51の出力信号n51とクロック信号CLKBとを入力とし、クロック制御信号41をスキャンクロック信号CLKBで動作するスキャンFFのクロック端子へ出力する。また、AND回路56は、OR回路51の出力信号n51とクロック信号CLKCとを入力とし、クロック制御信号42をスキャンクロック信号CLKCで動作するスキャンFFのクロック端子へ出力する。
【0115】
AND回路54〜56の個数は、制御対象とするクロックの数に応じて変動する。図11に示した例では、制御するクロック信号の個数がクロック信号CLKA〜CLKCの3系統のため、クロック制御回路30は3つのAND回路54〜56を備えている。
【0116】
図12は、クロック制御回路30(図11)の動作を一例として示すタイミングチャートである。
【0117】
クロック制御回路30は、通常モードとテストモードを切り替えるAMC信号4をテストモード時の1に設定することで、インバータ回路53の出力信号n53は0となり、OR回路51の出力信号n51には、レベルラッチ回路50の出力信号n50が伝播する。
【0118】
この状態において、クロック制御回路30は、スキャンシフトとキャプチャモードを切り替えるSMC信号5にキャプチャモードの0を設定することで、インバータ回路52の出力信号n52は1となり、レベルラッチ回路50は入力データを出力信号n50に伝播する。クロック制御回路30は、この状態において、キャプチャモード時にスキャンイン信号6に1を設定すると、レベルラッチ回路50の出力信号n50には1が伝播し、クロック制御信号40、41、42にはクロック信号が伝播する(キャプチャ1)。その後、SMC信号5を1に変更すると、レベルラッチ回路50には1の値が保持されるため、スキャンイン信号6の値に関わらず、以降のスキャンシフト期間中はクロック信号が伝播する(スキャンシフト1)。
【0119】
クロック制御回路30は、SMC信号5を0(キャプチャモード)に設定し、スキャンイン信号6に0を設定すると、レベルラッチ回路50の出力信号n50には0が伝播し、クロック制御信号40〜42は0となり、クロック信号が伝播しない(キャプチャ2)。その後、SMC信号5を1に変更すると、レベルラッチ回路50には0の値が保持されるため、スキャンイン信号6の値に関わらず、以降のスキャンシフト期間中はクロックが伝播しない(スキャンシフト2)。
【0120】
図13は、本実施形態に係る半導体集積回路設計装置の効果の一例について説明するための図である。図13に示した半導体集積回路3を参照して、本実施形態に係る半導体集積回路設計装置の動作を具体的に説明する。
【0121】
図13を参照すると、半導体集積回路3において、ロジックコーン11ないし16は、それぞれ、4個、3個、2個、6個、2個、10個の入力端子を有する。
【0122】
各スキャンFFのロジックコーン解析(デザイン解析部100のステップA2)により、ロジックコーン入力端子数リスト80のロジックコーン入力端子数80bの値に、スキャンFF91ないしスキャンFF96は、それぞれ、4、3、2、6、2、10を設定する。
【0123】
各スキャンFFと制御スキャンFFとのロジックコーン入力端子数を比較すると(ステップA10)、スキャンFF94の制御スキャンFFであるスキャンFF93のロジックコーン入力端子数はスキャンFF94のロジックコーン入力端子数よりも小さく、スキャンFF96の制御スキャンFFであるスキャンFF95のロジックコーン入力端子数はスキャンFF96よりも小さい。したがって、ロジックコーン入力端子数リスト80の観測スキャンFF名80cと観測入力端子数80dに対して、スキャンFF93はスキャンFF94の情報が記載され、スキャンFF95はスキャンFF96の情報が記載される。また、図3のステップA17において、デザイン解析部100は、スキャンFF情報リスト71のスキャンFF94の行の制御スキャンFF名71eにスキャンFF93を記載し、スキャンFF96の行の制御スキャンFF名71eにスキャンFF95を記載する。
【0124】
3本のスキャンチェーンで構築する場合には、スキャンチェーン構築部200は、スキャンFF情報リスト71に基づいて、スキャンFF96、95で1本のスキャンチェーンを構成し、スキャンFF94、93とで1本のスキャンチェーンを構成し、残りのスキャンFF92、91で1本のスキャンチェーンを構成する。
【0125】
クロック制御回路挿入部300は、スキャンチェーン毎にクロックを制御するクロック制御回路30を挿入する。これにより、スキャンチェーンの動作を任意に制御し、スキャンチェーン毎のパタン生成が可能となる。
【0126】
以上の構成において、入力端子数が最も多い10個の入力端子のロジックコーン16をテストするスキャンチェーンのスキャンFF96とスキャンFF95を常に動作させ、残り2つのスキャンチェーンは交互に動作させることで、動作するスキャンFF数は2/3となり、スキャンシフト時の消費電力を抑えることが可能となる。
【0127】
(実施形態2)
第2の実施形態に係る半導体集積回路設計装置について、図面を参照して説明する。図14は、本実施形態に係る半導体集積回路設計装置の構成を一例として示すブロック図である。
【0128】
第1の実施形態の半導体集積回路設計装置(図1)は、スキャンFFのロジックコーン入力端子数を解析するデザイン解析部100を備えている。一方、本実施形態では、半導体集積回路設計装置は、スキャンFFのロジックコーンをテストするために必要なパタン数を解析するデザイン解析部900を備えている。
【0129】
半導体集積回路設計装置における上記以外の構成、すなわち、スキャンチェーン構築部200、クロック制御回路挿入部300およびパタン生成部400は、本実施形態と第1の実施形態との間で同一である。
【0130】
図15は、デザイン解析部900で作成するロジックコーンパタン数リスト801を一例として示す表である。図15を参照すると、本実施形態では、スキャンFFのロジックコーン入力端子数を記載する入力端子数80b(図4)が、当該スキャンFFのデータ入力に接続されたロジックコーンをテストするために必要なパタン数80eに置き換わるとともに、観測スキャンFFのロジックコーン入力端子数を記載する観測入力端子数80dが、当該観測スキャンFFのロジックコーンをテストするため必要な観測パタン数80fに置き換わる点において、第1の実施形態と相違する。
【0131】
図16は、本実施形態のデザイン解析部900の動作を一例として示すフローチャートである。
【0132】
図16を参照すると、本実施形態では、ロジックコーン入力端子数の解析(ステップA2)の代わりに、ロジックコーンをテストするために必要なパタン数を解析する点(ステップE1、E2)と、制御スキャンFFの解析にロジックコーンの入力端子数を用いる(ステップA7、ステップA8、ステップA9、ステップA10、ステップA11)代わりに、当該パタン数を用いる点(ステップE7、ステップE8、ステップE9、ステップE10、ステップE11)と、その結果をスキャンFF情報リストに反映する(ステップE14)点において、第1の実施形態におけるデザイン解析部100の動作(図3)と相違する。
【0133】
デザイン解析部900は、ステップA1で選択したスキャンFFのデータ入力端子に接続されたロジックコーンを抽出する(ステップE1)。
【0134】
デザイン解析部900は、抽出したロジックコーンを対象にパタン生成を実行し、対象スキャンFFのデータ入力端子に接続されたロジックコーンをテストするのに必要なパタン数を算出し、スキャンFF名をロジックコーンパタン数リスト801のスキャンFF名80aに記載し、当該スキャンFFのデータ入力端子に接続されたロジックコーンをテストするのに必要なパタン数をロジックコーンパタン数リスト801のパタン数80eに記載し、ロジックコーンパタン数リスト801を作成する(ステップE2)。
【0135】
ステップA3ないしA6の動作は、第1の実施形態と同様である。
【0136】
デザイン解析部900は、ステップA6で選択した制御スキャンFFのロジックコーンパタン数リスト801の観測パタン数80fに数値が記載されているかどうかを判定する(ステップE7)。観測パタン数80fが記載されている場合には(ステップE7のYes)、ステップE8に進む。一方、観測パタン数80eが記載されていない場合には(ステップE7のNo)、ステップE9に進む。
【0137】
制御スキャンFFにロジックコーンパタン数リスト801の観測パタン数80fが記載されている場合には(ステップE7のYes)、当該制御スキャンFFのパタン数に観測パタン数80fの数値を選択する(ステップE8)。
【0138】
一方、制御スキャンFFにロジックコーンパタン数リスト801の観測パタン数80fが記載されていない場合には(ステップE7のNo)、当該制御スキャンFFのパタン数に当該ロジックコーンパタン数リスト801のパタン数80eの数値を選択する(ステップE9)。
【0139】
デザイン解析部900は、対象スキャンFFのパタン数が制御スキャンFFのパタン数より大きいかどうかを判定する(ステップE10)。対象スキャンFFのパタン数が制御スキャンFFのパタン数より大きい場合には(ステップE10のYes)、ステップE11に進む。一方、対象スキャンFFのパタン数が制御スキャンFFのパタン数以下である場合には(ステップE10のNo)、ステップA12に進む。
【0140】
対象スキャンFFのパタン数が制御スキャンFFのパタン数よりも大きい場合には(ステップE10のYes)、ロジックコーンパタン数リスト801のスキャンFF名80aに当該制御スキャンFFが記載されている行に対して、観測スキャンFF名80cにステップA4で設定した対象スキャンFF名を記載し、観測パタン数80fに当該対象スキャンFFのパタン数を記載する(ステップE11)。
【0141】
ステップA12、A13の動作は、第1の実施形態と同様である。
【0142】
すべてのスキャンFFの調査が完了した場合には(ステップA13のYes)、各スキャンFFに対して前記ロジックコーンパタン数リスト801のパタン数80eをスキャンFF情報リスト71のロジックコーン情報71aに記載し、ロジックコーンパタン数リスト801のスキャンFF名80aをスキャンFF情報リスト71のスキャンFF名71bに記載し、対象スキャンFFが存在している機能ブロックをスキャンFF情報リスト71の機能ブロック名71cに記載し、接続しているクロック名をスキャンFF情報リスト71のクロック名71dに記載する(ステップE14)。
【0143】
ステップA15ないしA18の動作は、第1の実施形態と同様である。
【0144】
スキャンチェーン構築部200、クロック制御回路挿入部300、および、パタン生成部400の構成および動作は、実施形態1と同一であることから、以下の動作は第1の実施形態と同一である。
【0145】
第1の実施形態では、ロジックコーンに必要なテストパタン数をロジックコーンの入力端子数で判断する。一方、本実施形態では、実際にテストパタンを生成しそのパタン数を基準に構築する。
【0146】
このため、本実施形態でも必要なテストパタン数を基準にスキャンチェーンを構築でき、ロジックコーンをテストするに多くのパタンが必要なスキャンチェーンは常に動かし、ロジックコーンをテストするに多くのパタンが必要ではないスキャンチェーンの動作回数を少なくすることで、第1の実施形態と同じく、スキャンパタン数を増加させることなく、スキャンシフト時の最大消費電力を抑えることが可能となる。
【0147】
なお、先行技術文献である上記特許文献の開示を、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素(各請求項の各要素、各実施例の各要素、各図面の各要素等を含む)の多様な組み合わせ、ないし、選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【符号の説明】
【0148】
1、3 半導体集積回路
2 被テスト回路
4 AMC(Adaptive Mode Control)信号
5 SMC(Scan Mode Control)信号
6 スキャンイン信号
10 組み合わせ回路
11〜16 ロジックコーン
21〜23 スキャンチェーン
30 クロック制御回路
30a〜30c クロック制御回路
33 クロック関係情報記憶部
40〜42、40a〜42a、40b〜42b、40c〜42c クロック制御信号
50 レベルラッチ回路
51 OR回路
52、53 インバータ回路
54〜56 AND回路
60a〜62a、60b〜62b、60c〜62c スキャンFF
71 スキャンFF情報リスト
71a ロジックコーン情報
71b スキャンFF名
71c 機能ブロック名
71d クロック名
71e 制御スキャンFF名
72 スキャンチェーン情報リスト
72a スキャンチェーン番号
72b スキャンFF数
72c ロジックコーン情報
72d スキャンFF名
72e 機能ブロック名
72f クロック名
73 スキャンチェーン構築済み回路
74 クロック制御回路挿入後回路
75 テストパタン
80 ロジックコーン入力端子数リスト
80a スキャンFF名
80b 入力端子数
80c 観測スキャンFF名
80d 観測入力端子数
80e パタン数
80f 観測パタン数
81 スキャンFFリスト
91〜96 スキャンFF
100 デザイン解析部
200 スキャンチェーン構築部
300 クロック制御回路挿入部
400 パタン生成部
500、510、520、530 バッファ回路
600、610、620、630 スキャンFF
700 OR回路
700a、700b、700c、700d 入力端子
800 スキャンFF
801 ロジックコーンパタン数リスト
900 デザイン解析部
CLKA、CLKB、CLKC スキャンクロック信号
LC1〜LC4 ロジックコーン
FF1〜FF4 スキャンFF
N1〜N4 入力端子数
n50〜n53 出力信号
SIN1〜SIN3 スキャンイン端子
SO1〜SO3 スキャンアウト端子

【特許請求の範囲】
【請求項1】
第1のスキャンフリップフロップ(以下「スキャンFF」という。)のデータ入力端子に接続された第1のロジックコーンの入力端子数である第1の入力端子数と、該第1のロジックコーンにデータを設定する第2のスキャンFFのデータ入力端子に接続された第2のロジックコーンの入力端子数である第2の入力端子数とを比較するデザイン解析部と、
複数のスキャンFFのそれぞれのデータ入力端子に接続されたロジックコーンの入力端子数、および、該複数のスキャンFFのそれぞれを前記第1のスキャンFFとした場合の前記比較結果に応じて、該複数のスキャンFFを複数のグループに分類し、該複数のグループのそれぞれに含まれるスキャンFFを相互に接続したスキャンチェーンを該複数のグループのそれぞれについて生成するスキャンチェーン構築部と、を備えることを特徴とする半導体集積回路設計装置。
【請求項2】
前記スキャンチェーン構築部は、前記複数のスキャンFFのそれぞれのデータ入力端子に接続されたロジックコーンの入力端子数の値が近いスキャンFF同士を同一のグループに分類するとともに、前記第1の入力端子数が前記第2の入力端子数よりも大きい場合には、前記第2のスキャンFFを前記第1のスキャンFFと同一のグループに分類することを特徴とする、請求項1に記載の半導体集積回路設計装置。
【請求項3】
前記複数のスキャンチェーンのそれぞれに含まれるスキャンFFのデータ入力端子に接続されたロジックコーンの入力端子数に応じて、前記複数のスキャンチェーンのそれぞれの動作率を決定するクロック制御回路挿入部を備えることを特徴とする、請求項1または2に記載の半導体集積回路設計装置。
【請求項4】
前記クロック制御回路挿入部は、スキャンチェーンに含まれるスキャンFFのデータ入力端子に接続されたロジックコーンの入力端子数が多くなるに従って動作率が高くなるように、前記複数のスキャンチェーンのそれぞれの動作率を決定することを特徴とする、請求項3に記載の半導体集積回路設計装置。
【請求項5】
前記スキャンチェーン構築部は、前記第2のスキャンFFが第3のスキャンFFのデータ入力端子に接続された第3のロジックコーンにもデータを設定し、かつ、該第3のロジックコーンの入力端子数が前記第2の入力端子数よりも大きい場合には、前記第1の入力端子数が該第3のロジックコーンの入力端子数以上であるときに、前記第1のスキャンFFおよび前記第2のスキャンFFを同一のグループに分類し、それ以外のときに、該第3のスキャンFFおよび前記第2のスキャンFFを同一のグループに分類することを特徴とする、請求項1ないし4のいずれか1項に記載の半導体集積回路設計装置。
【請求項6】
前記スキャンチェーン構築部は、前記第1のロジックコーンにデータを設定する第4のスキャンFFのデータ入力端子に接続された第4のロジックコーンの入力端子数である第4の入力端子数と、前記第1の入力端子数とを比較し、前記第1の入力端子数が前記第2の入力端子数よりも大きく、かつ、前記第1の入力端子数が前記第4の入力端子数よりも大きい場合には、前記第1のスキャンFF、前記第2のスキャンFFおよび前記第4のスキャンFFを同一のグループに分類することを特徴とする、請求項1ないし5のいずれか1項に記載の半導体集積回路設計装置。
【請求項7】
前記スキャンチェーン構築部は、前記複数のスキャンFFを前記複数のグループに分類した際に、前記複数のグループのいずれかのグループに含まれるスキャンFFの数が所定の数を上回った場合には、同一の機能ブロックに属するスキャンFFを該グループに含めるようにし、それ以外のスキャンFFを他のグループに分類することを特徴とする、請求項1ないし6のいずれか1項に記載の半導体集積回路設計装置。
【請求項8】
前記デザイン解析部、前記スキャンチェーン構築部および前記クロック制御回路挿入部は、前記複数のスキャンFFのそれぞれのデータ入力端子に接続されたロジックコーンの入力端子数の代わりに、前記複数のスキャンFFのそれぞれのデータ入力端子に接続されたロジックコーンに対するテストパタン数を用いることを特徴とする、請求項1ないし7のいずれか1項に記載の半導体集積回路設計装置。
【請求項9】
第1のスキャンフリップフロップ(以下「スキャンFF」という。)のデータ入力端子に接続された第1のロジックコーンの入力端子数である第1の入力端子数と、該第1のロジックコーンにデータを設定する第2のスキャンFFのデータ入力端子に接続された第2のロジックコーンの入力端子数である第2の入力端子数とを比較する工程と、
複数のスキャンFFのそれぞれのデータ入力端子に接続されたロジックコーンの入力端子数、および、該複数のスキャンFFのそれぞれを前記第1のスキャンFFとした場合の前記比較結果に応じて、該複数のスキャンFFを複数のグループに分類する工程と、
前記複数のグループのそれぞれに含まれるスキャンFFを相互に接続したスキャンチェーンを前記複数のグループのそれぞれについて生成する工程と、を含むことを特徴とする半導体集積回路設計方法。
【請求項10】
前記複数のスキャンFFのそれぞれのデータ入力端子に接続されたロジックコーンの入力端子数の値が近いスキャンFF同士を同一のグループに分類するとともに、前記第1の入力端子数が前記第2の入力端子数よりも大きい場合には、前記第2のスキャンFFを前記第1のスキャンFFと同一のグループに分類することを特徴とする、請求項9に記載の半導体集積回路設計方法。
【請求項11】
前記複数のスキャンチェーンのそれぞれに含まれるスキャンFFのデータ入力端子に接続されたロジックコーンの入力端子数に応じて、前記複数のスキャンチェーンのそれぞれの動作率を決定する工程を含むことを特徴とする、請求項9または10に記載の半導体集積回路設計方法。
【請求項12】
スキャンチェーンに含まれるスキャンFFのデータ入力端子に接続されたロジックコーンの入力端子数が多くなるに従って動作率が高くなるように、前記複数のスキャンチェーンのそれぞれの動作率を決定することを特徴とする、請求項11に記載の半導体集積回路設計方法。
【請求項13】
前記第2のスキャンFFが第3のスキャンFFのデータ入力端子に接続された第3のロジックコーンにもデータを設定し、かつ、該第3のロジックコーンの入力端子数が前記第2の入力端子数よりも大きい場合には、前記第1の入力端子数が該第3のロジックコーンの入力端子数以上であるときに、前記第1のスキャンFFおよび前記第2のスキャンFFを同一のグループに分類し、それ以外のときに、該第3のスキャンFFおよび前記第2のスキャンFFを同一のグループに分類することを特徴とする、請求項9ないし12のいずれか1項に記載の半導体集積回路設計方法。
【請求項14】
前記第1のロジックコーンにデータを設定する第4のスキャンFFのデータ入力端子に接続された第4のロジックコーンの入力端子数である第4の入力端子数と、前記第1の入力端子数とを比較する工程と、
前記第1の入力端子数が前記第2の入力端子数よりも大きく、かつ、前記第1の入力端子数が前記第4の入力端子数よりも大きい場合には、前記第1のスキャンFF、前記第2のスキャンFFおよび前記第4のスキャンFFを同一のグループに分類する工程と、を含むことを特徴とする、請求項9ないし13のいずれか1項に記載の半導体集積回路設計方法。
【請求項15】
前記第1ないし第4のロジックコーンの入力端子数である第1ないし第4の入力端子数の代わりに、前記第1ないし第4のロジックコーンに対するテストパタン数である第1ないし第4のテストパタン数を用いることを特徴とする、請求項9ないし14のいずれか1項に記載の半導体集積回路設計方法。
【請求項16】
第1のスキャンフリップフロップ(以下「スキャンFF」という。)のデータ入力端子に接続された第1のロジックコーンの入力端子数である第1の入力端子数と、該第1のロジックコーンにデータを設定する第2のスキャンFFのデータ入力端子に接続された第2のロジックコーンの入力端子数である第2の入力端子数とを比較する処理と、
複数のスキャンFFのそれぞれのデータ入力端子に接続されたロジックコーンの入力端子数、および、該複数のスキャンFFのそれぞれを前記第1のスキャンFFとした場合の前記比較結果に応じて、該複数のスキャンFFを複数のグループに分類する処理と、
前記複数のグループのそれぞれに含まれるスキャンFFを相互に接続したスキャンチェーンを前記複数のグループのそれぞれについて生成する処理と、をコンピュータに実行させることを特徴とするプログラム。
【請求項17】
前記複数のスキャンFFのそれぞれのデータ入力端子に接続されたロジックコーンの入力端子数の値が近いスキャンFF同士を同一のグループに分類するとともに、、前記第1の入力端子数が前記第2の入力端子数よりも大きい場合には、前記第2のスキャンFFを前記第1のスキャンFFと同一のグループに分類することを特徴とする、請求項16に記載のプログラム。
【請求項18】
前記複数のスキャンチェーンのそれぞれに含まれるスキャンFFのデータ入力端子に接続されたロジックコーンの入力端子数に応じて、前記複数のスキャンチェーンのそれぞれの動作率を決定する処理を、コンピュータに実行させることを特徴とする、請求項16または17に記載のプログラム。
【請求項19】
スキャンチェーンに含まれるスキャンFFのデータ入力端子に接続されたロジックコーンの入力端子数が多くなるに従って動作率が高くなるように、前記複数のスキャンチェーンのそれぞれの動作率を決定することを特徴とする、請求項18に記載のプログラム。
【請求項20】
前記第1ないし第4のロジックコーンの入力端子数である第1ないし第4の入力端子数の代わりに、前記第1ないし第4のロジックコーンに対するテストパタン数である第1ないし第4のテストパタン数を用いることを特徴とする、請求項16ないし19のいずれか1項に記載のプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate


【公開番号】特開2013−80331(P2013−80331A)
【公開日】平成25年5月2日(2013.5.2)
【国際特許分類】
【出願番号】特願2011−219267(P2011−219267)
【出願日】平成23年10月3日(2011.10.3)
【出願人】(302062931)ルネサスエレクトロニクス株式会社 (8,021)
【Fターム(参考)】