半導体設計方法及び半導体設計装置
【課題】フリップフロップ追加による利益と、スキャンFFの段数増加による不利益と、を考慮に入れ、スキャンテスト回路の設計を行う半導体設計方法が、望まれる。
【解決手段】複数のスキャンFFから構成されるスキャンテスト回路の設計方法は、複数のスキャンFF間の遅延値を抽出することで、スキャンテスト回路の動作レート候補値を複数算出する第1の工程と、中継用フリップフロップの追加を仮定し、複数の動作レート候補値をそれぞれ使用して、スキャンテストの実施に必要な時間をスキャンシフト時間として算出し、スキャンシフト時間に基づき、中継用フリップフロップを追加することの効果が最も高い動作レート候補値を、中継用フリップフロップの追加後のスキャンテスト回路に適用する動作レートとして選択する第2の工程と、動作レートを満たすように、複数のスキャンFF間に中継用フリップフロップを追加する第3の工程と、を含んでいる。
【解決手段】複数のスキャンFFから構成されるスキャンテスト回路の設計方法は、複数のスキャンFF間の遅延値を抽出することで、スキャンテスト回路の動作レート候補値を複数算出する第1の工程と、中継用フリップフロップの追加を仮定し、複数の動作レート候補値をそれぞれ使用して、スキャンテストの実施に必要な時間をスキャンシフト時間として算出し、スキャンシフト時間に基づき、中継用フリップフロップを追加することの効果が最も高い動作レート候補値を、中継用フリップフロップの追加後のスキャンテスト回路に適用する動作レートとして選択する第2の工程と、動作レートを満たすように、複数のスキャンFF間に中継用フリップフロップを追加する第3の工程と、を含んでいる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、半導体設計方法及び半導体設計装置に関する。特に、スキャンテスト回路を備える半導体集積回路の半導体設計方法及び半導体設計装置に関する。
【背景技術】
【0002】
近年、半導体集積回路には多くの機能が実装されている。競合他社の製品との差別化のためである。また、多くの機能を実装するために、高集積化の進行が著しい。さらに、自社の半導体集積回路の競争力を維持するためには、そのコストが低いことが必要である。
【0003】
このような状況下において、半導体集積回路の機能を実現するモジュール(回路)が正常に動作しているか否かを確認するためのテストとして、スキャンテスト回路が半導体集積回路に実装されている。スキャンテストは、スキャンフリップフロップにクロックを供給することで行われることから、動作レート(スキャン用シフトレジスタ回路の動作周波数)を高くすることで、スキャンテストを高速に実施することが可能になる。上述のように、近年の半導体集積回路は高集積化が進んでおり、スキャンテストを高速に実施する必要性が高まっている。スキャンテストを高速に実施できれば、テスト時間が短縮され、半導体集積回路の製造コストも低下するためである。
【0004】
ここで、特許文献1において、スキャン用シフトレジスタ回路を構成するスキャンフリップフロップの間にフリップフロップを挿入することで、スキャンテスト時間を短縮する技術が開示されている。特許文献1で開示された技術では、スキャンフリップフロップ間の配線が、所定の距離以上離れている場合に、中継用フリップフロップを挿入することで、中継用フリップフロップを含めたスキャンフリップフロップ間の遅延を一定の範囲内に納めている。スキャンフリップフロップ間の遅延が縮小すれば、セットアップタイム及びホールドタイムに関する制約が緩和され、動作周波数を高くすることできる。その結果、スキャンテスト時間が短縮できる。
【0005】
さらに、特許文献2においても、スキャンフリップフロップ間にフリップフロップを挿入することとで、スキャンテスト時間を短縮する技術が開示されている。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2000−088924号公報
【特許文献2】特開2003−196334号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
なお、上記先行技術文献の各開示を、本書に引用をもって繰り込むものとする。以下の分析は、本発明の観点からなされたものである。
【0008】
特許文献1及び2で開示された技術によれば、スキャンフリップフロップの間に中継用フリップフロップを追加することによって、スキャン用シフトレジスタ回路の動作周波数を高くすることができる。しかし、特許文献1及び2で開示された技術には、スキャンフリップフロップの段数増加に対する考慮がなく、中継用フリップフロップを追加したにも関わらず、スキャンテスト時間が長くなる場合があるという問題がある。また、スキャンテスト時間が短縮される場合であっても、追加した中継用フリップフロップの段数に見合ったスキャンテスト時間の短縮が行えない場合がある。この場合には、中継用フリップフロップの追加に伴うコスト上昇及び基板面積の増加が問題になる。即ち、特許文献1及び2で開示された技術では、中継用フリップフロップの追加による利益(動作周波数の上昇によるスキャンテスト時間短縮)と、スキャンフリップフロップの段数増加による不利益(コスト増加及び基板面積増加)と、を考慮に入れたスキャンテスト回路の設計がされていない。
【0009】
以上のとおり、スキャンテスト回路を備える半導体集積回路を設計する半導体設計装置には、解決すべき問題点が存在する。そのため、フリップフロップ追加による利益と、スキャンフリップフロップの段数増加による不利益と、を考慮に入れ、スキャンテスト回路の設計を行う半導体設計方法及び半導体設計装置が、望まれる。
【課題を解決するための手段】
【0010】
本発明の第1の視点によれば、複数のスキャンフリップフロップから構成されるスキャンテスト回路の設計方法であって、前記複数のスキャンフリップフロップ間の遅延値を抽出することで、前記スキャンテスト回路の動作レートに関する候補値となるスキャンシフト動作レート候補値を複数算出する第1の工程と、前記複数のスキャンフリップフロップ間に中継用フリップフロップの追加を仮定し、前記複数のスキャンシフト動作レート候補値をそれぞれ使用して、スキャンテストの実施に必要な時間をスキャンシフト時間として算出し、前記スキャンシフト時間に基づき、前記中継用フリップフロップを追加することの効果が最も高いスキャンシフト動作レート候補値を、前記中継用フリップフロップの追加後のスキャンテスト回路に適用するスキャンシフト動作レートとして選択する第2の工程と、前記スキャンシフト動作レートを満たすように、前記複数のスキャンフリップフロップ間に前記中継用フリップフロップを追加する第3の工程と、を含む半導体設計方法が提供される。
【0011】
本発明の第2の視点によれば、複数のスキャンフリップフロップから構成されるスキャンテスト回路を設計する半導体設計装置であって、前記複数のスキャンフリップフロップ間の遅延値を抽出することで、前記スキャンテスト回路の動作レートに関する候補値となるスキャンシフト動作レート候補値を複数算出し、前記複数のスキャンフリップフロップ間に中継用フリップフロップの追加を仮定し、前記複数のスキャンシフト動作レート候補値をそれぞれ使用して、スキャンテストの実施に必要な時間をスキャンシフト時間として算出し、前記スキャンシフト時間に基づき、前記中継用フリップフロップを追加することの効果が最も高いスキャンシフト動作レート候補値を、前記中継用フリップフロップの追加後のスキャンテスト回路に適用するスキャンシフト動作レートとして選択した後、前記スキャンシフト動作レートを満たすように、前記複数のスキャンフリップフロップ間に前記中継用フリップフロップを追加する半導体設計装置が提供される。
【発明の効果】
【0012】
本発明の各視点によれば、フリップフロップ追加による利益と、スキャンフリップフロップの段数増加による不利益と、を考慮に入れ、スキャンテスト回路の設計を行う半導体設計方法及び半導体設計装置が、提供される。
【図面の簡単な説明】
【0013】
【図1】本発明の一実施形態の概要を説明するための図である。
【図2】本発明の第1の実施形態に係る半導体設計装置1の内部構成の一例を示す図である。
【図3】設計ツール11で使用するデータの一例を示す図である。
【図4】半導体設計装置1の動作の概略の一例を示すフローチャートである。
【図5】スキャン用シフトレジスタ回路の結線の一例を示す図である。
【図6】図5に示す各スキャンフリップフロップ間の遅延値をまとめた図である。
【図7】スキャン用シフトレジスタ回路の高速化処理の一例を示すフローチャートである。
【図8】図5及び図6に示す各スキャンフリップフロップ間の遅延情報をカテゴリごとに分類した際の一例を示す図である。
【図9】カテゴリ毎のスキャンシフト動作レート候補値の一例を示す図である。
【図10】ECO情報ファイルの書式の一例を示す図である。
【図11】図5に示すスキャン用シフトレジスタ回路に対して、中継用フリップフロップを追加した結線の一例を示す図である。
【図12】図11に示す各スキャンフリップフロップ間の遅延値をまとめた図である。
【発明を実施するための形態】
【0014】
初めに、図1を用いて一実施形態の概要について説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、本発明を図示の態様に限定することを意図するものではない。
【0015】
上述のように、中継用フリップフロップを用いることで、スキャンテスト時間を短縮することができる。しかし、中継用フリップフロップを追加すると、スキャンフリップフロップの段数増加によるスキャンテスト時間増大を招く場合がある。そのため、フリップフロップ追加による利益と、スキャンフリップフロップの段数増加による不利益と、を考慮に入れ、スキャンテスト回路の設計を行う半導体設計方法が、望まれる。
【0016】
そこで、一例として図1に示す半導体設計方法を提供する。図1に示す半導体設計方法は、複数のスキャンフリップフロップから構成されるスキャンテスト回路の設計方法であって、複数のスキャンフリップフロップ間の遅延値を抽出することで、スキャンテスト回路の動作レートに関する候補値となるスキャンシフト動作レート候補値を複数算出する第1の工程と、複数のスキャンフリップフロップ間に中継用フリップフロップの追加を仮定し、複数のスキャンシフト動作レート候補値をそれぞれ使用して、スキャンテストの実施に必要な時間をスキャンシフト時間として算出し、スキャンシフト時間に基づき、中継用フリップフロップを追加することの効果が最も高いスキャンシフト動作レート候補値を、中継用フリップフロップの追加後のスキャンテスト回路に適用するスキャンシフト動作レートとして選択する第2の工程と、スキャンシフト動作レートを満たすように、複数のスキャンフリップフロップ間に中継用フリップフロップを追加する第3の工程と、を含んでいる。
【0017】
第1の工程では、スキャンフリップフロップ間の遅延値から、スキャンテスト回路に適用するスキャンシフト動作レート候補値を複数算出する。より具体的には、各スキャンフリップフロップ間の遅延値を複数のカテゴリに分類し、各カテゴリの下限値をスキャンシフト動作レートの候補値とすることが考えられる。
【0018】
第2の工程では、第1の工程で算出したスキャンシフト動作レート候補値について、中継用フリップフロップをスキャンテスト回路に追加した場合に、スキャンテストを実施した際に必要になるスキャンシフト時間を算出する。このスキャンシフト時間から中継用フリップフロップを追加することの効果が最も高いスキャンシフト動作レート候補値を中継用フリップフロップの追加後のスキャンテスト回路のスキャンシフト動作レートとして算出する。その際、スキャンシフト時間を追加する中継用フリップフロップの段数で除算することで、中継用フリップフロップを1段追加したことによる効果値を算出し、この効果値が最も高いスキャンシフト動作レート候補値を選択することが考えられる。
【0019】
第3の工程では、第2の工程で選択したスキャンシフト動作レートを満たすように、複数のスキャンフリップフロップ間に中継用フリップフロップを追加する。
【0020】
このようにして、スキャンテスト回路を設計することで、フリップフロップ追加による利益と、スキャンフリップフロップの段数増加による不利益と、が考慮されたスキャンテスト回路を得ることができる。即ち、むやみに中継用フリップフロップを追加して動作周波数を上昇させるのではなく、中継用フリップフロップを追加したことの効果が最も期待できる段数に限り中継用フリップフロップを追加し、スキャンテスト回路の高速化を実現する。その結果、中継用フリップフロップを追加したことにより、動作周波数を上昇させることができ、スキャンテスト時間の短縮という利益を享受することができる。一方、中継用フリップフロップを追加したことの効果が最も高い段数に限り、中継用フリップフロップを追加しているため、コストの上昇や基板面積増加といった不利益を最小限にすることができる。
【0021】
本発明において下記の形態が可能である。
【0022】
[形態1]上記第1の視点に係る半導体設計方法のとおりである。
【0023】
[形態2]前記第2の工程は、前記スキャンシフト時間及び前記中継用フリップフロップの追加前のスキャンテスト回路のスキャンテストに必要な時間から、スキャンシフト時間短縮値を算出した後、前記中継用フリップフロップを追加した段数及び前記スキャンシフト時間短縮値から前記中継用フリップフロップ1段あたりの中継用フリップフロップ追加効果値を算出し、前記複数のスキャンシフト動作レート候補値から、前記中継用フリップフロップ追加効果値が最も高いスキャンシフト動作レート候補値を算出することが好ましい。
【0024】
[形態3]前記第1の工程は、前記複数のスキャンフリップフロップ間の遅延値を複数のカテゴリに分類し、前記分類された複数のカテゴリの値から前記スキャンシフト動作レート候補値を抽出する工程を含み、前記第2の工程は、前記複数のスキャンシフト動作レート候補値をそれぞれ満たすように、前記中継用フリップフロップを追加すると仮定し前記複数のスキャンフリップ間を区切ったときのスキャンフリップフロップ段数増加値を算出する工程と、前記複数のスキャンシフト動作レート候補値それぞれの前記スキャンフリップフロップ段数増加値と前記中継用フリップフロップの追加前のスキャン用シフトテスト回路に含まれるスキャンフリップフロップの段数と、を加算することで、前記複数のスキャンシフト動作レート候補値それぞれについてスキャンフリップフロップ段数合計値を算出する工程と、前記複数のスキャンシフト動作レート候補値それぞれと、前記スキャンフリップフロップ段数合計値と、を乗算することで、前記スキャンシフト時間を算出する工程と、を含むことが好ましい。
【0025】
[形態4]前記第2の工程は、前記中継用フリップフロップの追加前のスキャンテスト回路のスキャンテストに必要な時間から前記スキャンシフト時間を減算することで、前記スキャンシフト時間短縮値を算出し、さらに、前記スキャンシフト時間短縮値を前記スキャンフリップフロップ段数増加値で除算することで、前記中継用フリップフロップ追加効果値として算出することが好ましい。
【0026】
[形態5]前記半導体設計方法は、さらに、前記複数のスキャンシフト動作レート候補値と、前記スキャンフリップ段数増加値と、前記スキャンフリップ段数合計値と、前記スキャンシフト時間と、前記スキャンシフト時間短縮値と、前記中継用フリップフロップ追加効果値と、をスキャンシフト動作レート候補情報として記憶する工程を含むことが好ましい。
【0027】
[形態6]上記第2の視点に係る半導体設計装置のとおりである。
【0028】
以下に具体的な実施の形態について、図面を参照してさらに詳しく説明する。
【0029】
[第1の実施形態]
本発明の第1の実施形態について、図面を用いてより詳細に説明する。
【0030】
図2は、本実施形態に係る半導体設計装置1の内部構成の一例を示す図である。
【0031】
半導体設計装置1は、制御部10と、メモリ20と、記憶部30と、操作部40と、表示部50から構成されている。
【0032】
制御部10は、半導体設計装置1に含まれる各部(例えば、操作部40等)の制御を行う。さらに、制御部10において、半導体集積回路の回路設計、レイアウト設計等を実現する。より具体的には、制御部10で、半導体集積回路の設計プログラムを実行する。ここで、制御部10が担う機能のうち、半導体集積回路の設計を行う機能モジュールを設計ツール11と定め、以下の説明を行う。
【0033】
メモリ20は、制御部10が使用する一時的な記憶領域として用いられる。
【0034】
記憶部30は、設計プログラムや設計データ等の情報を記憶する。
【0035】
操作部40は、半導体設計装置1を使用するユーザ(設計者)の操作を受け付ける。ユーザの操作に必要な情報は、表示部50に表示する。
【0036】
次に、設計ツール11において使用する各種のデータについて説明する。
【0037】
図3は、設計ツール11で使用するデータの一例を示す図である。
【0038】
これらのデータ(ファイル)は、メモリ20に一時的に記憶され、記憶部30に恒常的に記憶される。設計ツール11は、レイアウト設計上、遵守しなければならない情報を集約した設計制約、配線の幅、配線間で許容される間隔、遅延時間等の情報を含む設計ルール、セルやマクロセルの接続に関する情報を含むネットリスト及びセルライブラリを読み込む。設計ツール11は、これらのデータを使用して、セル配置後のレイアウトデータを生成する。
【0039】
さらに、設計ツール11は、セル配置後のレイアウトデータを検証し、中継用フリップフロップを追加したスキャンテスト回路のレイアウトデータを出力する。具体的には、フリップフロップ追加による利益と、スキャンフリップフロップの段数増加による不利益と、を考慮に入れ、スキャンテスト回路を変更(再設計)する。
【0040】
また、スキャンテスト回路の変更の際には、スキャンシフト動作レート候補情報ファイルとECO情報ファイルの生成を行う。スキャンシフト動作レート候補情報ファイルには、スキャンフリップフロップ間パスのタイミングを高速化するために必要な情報が含まれている。スキャンシフト動作レート候補情報ファイルの詳細については後述する。
【0041】
ECO情報ファイルは、新たに追加する中継用フリップフロップの接続情報と中継用フリップフロップを追加した後のスキャンシフト動作レート情報を含むファイルである。ECO情報ファイルの詳細についても後述する。
【0042】
次に、半導体設計装置1の動作について説明する。
【0043】
初めに、半導体設計装置1の動作の概略について説明する。
【0044】
図4は、半導体設計装置1の動作の概略の一例を示すフローチャートである。なお、図4における動作主体は、設計ツール11である。
【0045】
ステップS01では、設計制約、設計ルール、セルライブラリ、ネットリストを使用して、フロアプランニングを実施する。フロアプランニングでは、マクロセルの位置を指定し、スタンダードセルのグルーピング及び位置の指定、電源配線の概略などを決定する。
【0046】
ステップS02では、スタンダードセルを最適な位置に自動配置し、セル間の総配線長の最短化や、配線遅延時間の最小化などを実施する。
【0047】
ステップS03では、スキャン用シフトレジスタ回路の高速化処理(中継用フリップフロップの追加)を実施する。スキャン用シフトレジスタ回路の高速化処理の詳細については後述する。
【0048】
ステップS04では、設計対象となっている半導体集積回路に含まれるフリップフロップやマクロセルに対してクロックを分配する回路を生成する。
【0049】
ステップS05では、ネットリストに基づいて、スタンダードセルやマクロセル間を自動で配線する。
【0050】
ステップS06では、他の半導体設計支援ツールで使用するデータを出力する。より具体的には、配線容量や配線遅延時間を計算し、タイミング検証用ツールで使用するタイミング検証用ファイルや、マスクレイアウトデータを記述する標準フォーマットであるGDSIIの形式で記述された配置配線結果のストリームファイルを出力する。
【0051】
次に、スキャン用シフトレジスタ回路の高速化処理について説明する。
【0052】
図5は、スキャン用シフトレジスタ回路の結線の一例を示す図である。図5に示すスキャン用シフトレジスタ回路に対して高速化処理を適用する場合について説明する。
【0053】
図5に示すスキャン用シフトレジスタ回路は、回路機能ブロック群60と、スキャンフリップフロップSFF01〜SFF12から構成されている。図5のスキャンフリップフロップ間に示す数字は、各スキャンフリップフロップ間の遅延値(単位はns)である。スキャンフリップフロップSFF01は、回路機能ブロック群60が出力する信号と、スキャンシフトの入力信号を受け付ける。スキャンフリップフロップSFF01のスキャンシフトパスの出力信号は、次段のスキャンフリップフロップSFF02に入力される。スキャンフリップフロップSFF02〜SFF12までの入出力に関しても同様である。図6は、各スキャンフリップフロップ間の遅延値をまとめた図である。
【0054】
図7は、スキャン用シフトレジスタ回路の高速化処理の一例を示すフローチャートである。なお、図7における動作主体も設計ツール11である。
【0055】
ステップS301では、セル配置後のレイアウトデータを読み込んだ後、スキャン用シフトレジスタ回路の情報及び遅延の抽出を行う。具体的には、本ステップにおいて、図5に示すスキャン用シフトレジスタ回路の情報を抽出する。さらに、抽出したスキャン用シフトレジスタ回路の情報から各スキャンフリップフロップ間パスの遅延値を算出する。
【0056】
ステップS302では、抽出した各スキャンフリップフロップ間パスの遅延値情報をカテゴリごとに分類する。
【0057】
図8は、図5及び図6に示す各スキャンフリップフロップ間の遅延情報をカテゴリごとに分類した際の一例を示す図である。図8は、カテゴリ毎にスキャンフリップフロップ間パスごとのカテゴリ、各カテゴリに含まれるパス数、スキャンフリップフロップ間パス遅延値で構成されている。図5に示すスキャン用シフトレジスタ回路におけるスキャンフリップフロップ間パスの最大遅延値は、スキャンフリップフロップSFF06とSFF07の間の8.8nsとなる。従って、カテゴリはカテゴリ8まで作成する。なお、図8では、各カテゴリについての遅延値を1.0nsの範囲で区切り、カテゴリ0は0.0〜1.0ns、・・・、カテゴリ8は8.0〜9.0nsとしている。但し、各カテゴリを区切る範囲は1.0nsに限定する趣旨ではない。各カテゴリを区切る範囲(分解能)は、任意の値とすることができる。
【0058】
カテゴリ毎に分類した各スキャンフリップフロップ間パスの遅延値情報は、スキャンシフト動作レート候補情報ファイルに出力される。
【0059】
ステップS303では、スキャンフリップフロップの段数増加値と段数合計値の算出を行う。さらに、本ステップでは、各カテゴリから得られるスキャンシフト動作レートの候補値を抽出する。ここで、スキャンシフト動作レート候補値は、各カテゴリの下限値とする。具体的には、カテゴリ8のスキャンシフト動作レート候補値は8.0ns、カテゴリ7のスキャンシフト動作レート候補値は7.0nsのように定める。
【0060】
さらに、各スキャンシフト動作レート候補値を満たすように中継用フリップフロップを挿入すると仮定し、スキャンフリップフロップ間を区切ったときのスキャンフリップフロップ段数増加値を算出する。例えば、スキャンシフト動作レート候補値を6.0nsと定める場合、カテゴリ8の8.2nsと8.8nsの2つのパスに1段ずつ中継用フリップフロップの追加が必要になる。さらに、カテゴリ6の6.5nsのパスにも中継用フリップフロップを1段追加する必要があり、スキャンシフト動作レート候補値6.0nsを満たすためには、合計3段の中継用フリップフロップの追加が必要となる。このような処理を、全てのスキャンシフト動作レート候補値に対して行う。
【0061】
図9は、カテゴリ毎のスキャンシフト動作レート候補値の一例を示す図である。図9の横軸には、各カテゴリの各スキャンシフト動作レート候補値を満たすために必要な中継のフリップフロップの段数を示している。図9の縦軸には、カテゴリ、スキャンフリップフロップ段数増加値、スキャンフリップフロップ段数合計値、スキャンシフト時間、スキャンシフト時間短縮値、中継用フリップフロップ追加効果値、をそれぞれ示している。
【0062】
本ステップでは、図9のスキャンフリップフロップ段数増加値を算出する。なお、算出されたスキャンフリップフロップ段数増加値は、スキャンシフト動作レート候補情報ファイルに出力される。また、本ステップでは、スキャンシフト動作レート候補値ごとのスキャンフリップフロップ段数増加値と当初からスキャン用シフトレジスタ回路に存在していたスキャンフリップフロップの段数を加算し、スキャンシフト動作レート候補値ごとのスキャンフリップフロップ段数合計値を算出する。図5に示すスキャン用シフトレジスタ回路には、当初、12段のスキャンフリップフロップが存在していたため、カテゴリごとのスキャンフリップフロップ段数増加値に12を加算して、スキャンフリップフロップ段数合計値を算出する。スキャンフリップフロップ段数合計値もスキャンシフト動作レート候補情報ファイルに出力される。
【0063】
ステップS304では、各スキャンシフト動作レート候補値のスキャンシフト時間及び短縮値を算出する。本ステップでは、各スキャンシフト動作レート候補値と、対応するスキャンフリップフロップ段数合計値を乗算し、各スキャンシフト動作レート候補値のスキャンシフト時間を算出する。例えば、スキャンシフト動作レート候補値を5.0nsとすると、対応するスキャンフリップフロップ段数合計値は17であるから、スキャンシフト時間は85ns(5.0×17段=85ns)となる。このスキャンシフト時間は、スキャンシフト動作レート候補情報ファイルに出力される。
【0064】
さらに、本ステップでは、既に生成されたスキャンシフト動作レート候補情報ファイルの内容に基づき、スキャンフリップフロップ間パスのタイミングを最適化する前(高速化前)のスキャンシフト動作レートから算出したスキャンシフト時間から、各スキャンシフト動作レート候補値に対応したスキャンシフト時間を減算し、各スキャンシフト時間短縮値を算出する。例えば、図9において、スキャンフリップフロップ間パスのタイミングを最適化する前のスキャンシフト動作レートは8.8nsであって、スキャンフリップフロップ段数合計値は12であるから、スキャンフリップフロップ間パスのタイミングを最適化前のスキャンシフト時間は、8.8×12=105.6nsとなる。従って、スキャンシフト動作レート候補値が5.0nsの時のスキャンシフト時間短縮値は、105.6−85=20.6nsと計算できる。このような計算をカテゴリごとに行う。スキャンシフト時間短縮値についても、スキャンシフト動作レート候補情報ファイルに出力される。
【0065】
ステップS305では、中継用フリップフロップ追加効果値の算出及びスキャンシフト動作レートの選択を行う。本ステップでは、スキャンシフト時間短縮値を各スキャンシフト動作レート候補値のスキャンフリップフロップ段数増加値で除算し、中継用フリップフロップを1段追加したときのスキャンシフト時間短縮値を中継用フリップフロップ追加効果値として算出する。例えば、スキャンシフト動作レート候補値が5.0nsのときの中継用フリップフロップ追加効果値は、4.1ns(20.6÷5=4.1)となる。
【0066】
なお、中継用フリップフロップ追加効果値が負の値となる場合は、スキャンシフト動作レートは高速化できるが、スキャンシフト時間が増加することを意味する。従って、中継用フリップフロップ追加効果値が負の値となるスキャンシフト動作レート候補値は採用しない。
【0067】
同様に、中継用フリップフロップ追加効果値を全てのスキャンシフト動作レート候補値に対して算出する。この中継用フリップフロップ追加効果値もスキャンシフト動作レート候補情報ファイルに出力される。さらに、本ステップでは、算出された中継用フリップフロップ追加効果値が最も高いスキャンシフト動作レート候補値をスキャンシフト動作レートとして選択する。
【0068】
図9においては、スキャンシフト動作レート候補値が6.0nsのときに、中継用フリップフロップ追加効果値が最大となる(5.2ns)。このときのスキャンテスト時間は、3段の中継用フリップフロップの追加で15.6nsに相当する時間、高速化される。従って、スキャンシフト動作レート候補値として6.0nsが、実際にスキャンテストを行うスキャンシフト動作レートとして選択される。
【0069】
選択したスキャンシフト動作レートはECO情報ファイルに出力される。より具体的には、本ステップで得られたスキャンシフト動作レート(6.0ns)を満たすようにスキャンフリップフロップ間パスに中継用フリップフロップを追加するために必要な中継用フリップフロップの接続情報、中継用フリップフロップ追加後のスキャンシフト動作レート情報を含むファイルがECO情報ファイルとして出力される。
【0070】
図10は、ECO情報ファイルの書式の一例を示す図である。図10に示すように、ECO情報ファイルには、新たに追加する中継用フリップフロップのインスタンス名、セル名、接続情報と、中継用フリップフロップ追加後のスキャンシフト動作レート情報が含まれている。これらの情報は、中継用フリップフロップを追加する際に使用される。なお、ECO情報ファイルに出力されるスキャンシフト動作レート情報は、スキャンシフト動作レート候補値の6.0nsとしても良いが、図9に示すスキャンフリップフロップ間パスの遅延情報を参照して、6.0ns以下のスキャンフリップフロップ間パス遅延値のうち最大の5.9nsとしても良い。
【0071】
ステップS306では、ステップS305で出力されたECO情報ファイルに従って、半導体集積回路の配置配線装置を利用しつつ、中継用フリップフロップをスキャン用シフトレジスタ回路に追加する。その後、スキャンテスト時間の高速化を行ったレイアウトデータが出力される。また、中継用フリップフロップ追加後のスキャンシフト動作レートは、後工程のSTA(Static Timing Analysis)解析において、タイミング制約を作成するために必要な情報として使用される。
【0072】
図11は、図5に示すスキャン用シフトレジスタ回路に対して、中継用フリップフロップを追加した結線の一例を示す図である。図11に示すスキャン用シフトレジスタ回路は、図5に示すスキャン用シフトレジスタ回路の構成に対し、中継用フリップフロップPFF01〜PFF03を追加している。図12は、各スキャンフリップフロップ間の遅延値をまとめた図である。
【0073】
図11においては、スキャン用シフトレジスタ回路を構成しているスキャンフリップフロップSFF01〜SFF12のうち、スキャンフリップフロップSFF06とSFF07の間、スキャンフリップフロップSFF07とSFF08の間、スキャンフリップフロップSFF09とSFF10の間のパスに、それぞれ1段ずつ中継用フリップフロップPFF01〜PFF03が追加されている。その結果、各中継用フリップフロップPFF01〜PFF03の前後のスキャンフリップフロップ間の遅延値を縮小できる。
【0074】
以上のとおり、本実施形態に係る半導体設計装置1は各スキャンフリップフロップ間の遅延値を抽出すると共に、各スキャンフリップフロップ間の遅延値を任意の分解能でカテゴリに分類する。さらに、各カテゴリの代表遅延値(例えば、下限値)を使用して、目標となるスキャンシフト動作レート候補値を抽出し、スキャンシフト動作レートの候補値を満たすように中継用フリップフロップを挿入すると仮定してスキャンフリップフロップ間を区切ったときに増加するスキャンフリップフロップの段数を算出する。その後、増加するスキャンフリップフロップの段数に基づいて算出したスキャンシフト時間と、当初のスキャンシフト時間と、を比較してスキャンシフト時間短縮値を算出する。さらに、中継用フリップフロップを1段追加したときのスキャンシフト時間短縮値を中継用フリップフロップ追加効果値として算出する。
【0075】
この中継用フリップフロップ追加効果値が最も大きくなるスキャンシフト動作レートを選択し、スキャンシフト動作レートを満たすようにスキャンフリップフロップ間に中継用フリップフロップを追加することで、スキャンシフト動作レートの高速化とスキャンフリップフロップの段数増加の得失を考慮した(トレードオフ関係を加味した)スキャンシフト動作レートを求めることができる。
【0076】
また、高速化とスキャンフリップフロップの段数増加の得失を考慮して、スキャンシフト動作レートを満たすようにスキャンフリップフロップ間に中継用フリップフロップを追加することで、半導体集積回路のコスト及び基板面積の増加を抑制することができる。
【0077】
なお、引用した上記の特許文献等の各開示は、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素の多様な組み合わせないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【符号の説明】
【0078】
1 半導体設計装置
10 制御部
11 設計ツール
20 メモリ
30 記憶部
40 操作部
50 表示部
60 回路機能ブロック群
PFF01〜PFF03 中継用フリップフロップ
SFF01〜SFF12 スキャンフリップフロップ
【技術分野】
【0001】
本発明は、半導体設計方法及び半導体設計装置に関する。特に、スキャンテスト回路を備える半導体集積回路の半導体設計方法及び半導体設計装置に関する。
【背景技術】
【0002】
近年、半導体集積回路には多くの機能が実装されている。競合他社の製品との差別化のためである。また、多くの機能を実装するために、高集積化の進行が著しい。さらに、自社の半導体集積回路の競争力を維持するためには、そのコストが低いことが必要である。
【0003】
このような状況下において、半導体集積回路の機能を実現するモジュール(回路)が正常に動作しているか否かを確認するためのテストとして、スキャンテスト回路が半導体集積回路に実装されている。スキャンテストは、スキャンフリップフロップにクロックを供給することで行われることから、動作レート(スキャン用シフトレジスタ回路の動作周波数)を高くすることで、スキャンテストを高速に実施することが可能になる。上述のように、近年の半導体集積回路は高集積化が進んでおり、スキャンテストを高速に実施する必要性が高まっている。スキャンテストを高速に実施できれば、テスト時間が短縮され、半導体集積回路の製造コストも低下するためである。
【0004】
ここで、特許文献1において、スキャン用シフトレジスタ回路を構成するスキャンフリップフロップの間にフリップフロップを挿入することで、スキャンテスト時間を短縮する技術が開示されている。特許文献1で開示された技術では、スキャンフリップフロップ間の配線が、所定の距離以上離れている場合に、中継用フリップフロップを挿入することで、中継用フリップフロップを含めたスキャンフリップフロップ間の遅延を一定の範囲内に納めている。スキャンフリップフロップ間の遅延が縮小すれば、セットアップタイム及びホールドタイムに関する制約が緩和され、動作周波数を高くすることできる。その結果、スキャンテスト時間が短縮できる。
【0005】
さらに、特許文献2においても、スキャンフリップフロップ間にフリップフロップを挿入することとで、スキャンテスト時間を短縮する技術が開示されている。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2000−088924号公報
【特許文献2】特開2003−196334号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
なお、上記先行技術文献の各開示を、本書に引用をもって繰り込むものとする。以下の分析は、本発明の観点からなされたものである。
【0008】
特許文献1及び2で開示された技術によれば、スキャンフリップフロップの間に中継用フリップフロップを追加することによって、スキャン用シフトレジスタ回路の動作周波数を高くすることができる。しかし、特許文献1及び2で開示された技術には、スキャンフリップフロップの段数増加に対する考慮がなく、中継用フリップフロップを追加したにも関わらず、スキャンテスト時間が長くなる場合があるという問題がある。また、スキャンテスト時間が短縮される場合であっても、追加した中継用フリップフロップの段数に見合ったスキャンテスト時間の短縮が行えない場合がある。この場合には、中継用フリップフロップの追加に伴うコスト上昇及び基板面積の増加が問題になる。即ち、特許文献1及び2で開示された技術では、中継用フリップフロップの追加による利益(動作周波数の上昇によるスキャンテスト時間短縮)と、スキャンフリップフロップの段数増加による不利益(コスト増加及び基板面積増加)と、を考慮に入れたスキャンテスト回路の設計がされていない。
【0009】
以上のとおり、スキャンテスト回路を備える半導体集積回路を設計する半導体設計装置には、解決すべき問題点が存在する。そのため、フリップフロップ追加による利益と、スキャンフリップフロップの段数増加による不利益と、を考慮に入れ、スキャンテスト回路の設計を行う半導体設計方法及び半導体設計装置が、望まれる。
【課題を解決するための手段】
【0010】
本発明の第1の視点によれば、複数のスキャンフリップフロップから構成されるスキャンテスト回路の設計方法であって、前記複数のスキャンフリップフロップ間の遅延値を抽出することで、前記スキャンテスト回路の動作レートに関する候補値となるスキャンシフト動作レート候補値を複数算出する第1の工程と、前記複数のスキャンフリップフロップ間に中継用フリップフロップの追加を仮定し、前記複数のスキャンシフト動作レート候補値をそれぞれ使用して、スキャンテストの実施に必要な時間をスキャンシフト時間として算出し、前記スキャンシフト時間に基づき、前記中継用フリップフロップを追加することの効果が最も高いスキャンシフト動作レート候補値を、前記中継用フリップフロップの追加後のスキャンテスト回路に適用するスキャンシフト動作レートとして選択する第2の工程と、前記スキャンシフト動作レートを満たすように、前記複数のスキャンフリップフロップ間に前記中継用フリップフロップを追加する第3の工程と、を含む半導体設計方法が提供される。
【0011】
本発明の第2の視点によれば、複数のスキャンフリップフロップから構成されるスキャンテスト回路を設計する半導体設計装置であって、前記複数のスキャンフリップフロップ間の遅延値を抽出することで、前記スキャンテスト回路の動作レートに関する候補値となるスキャンシフト動作レート候補値を複数算出し、前記複数のスキャンフリップフロップ間に中継用フリップフロップの追加を仮定し、前記複数のスキャンシフト動作レート候補値をそれぞれ使用して、スキャンテストの実施に必要な時間をスキャンシフト時間として算出し、前記スキャンシフト時間に基づき、前記中継用フリップフロップを追加することの効果が最も高いスキャンシフト動作レート候補値を、前記中継用フリップフロップの追加後のスキャンテスト回路に適用するスキャンシフト動作レートとして選択した後、前記スキャンシフト動作レートを満たすように、前記複数のスキャンフリップフロップ間に前記中継用フリップフロップを追加する半導体設計装置が提供される。
【発明の効果】
【0012】
本発明の各視点によれば、フリップフロップ追加による利益と、スキャンフリップフロップの段数増加による不利益と、を考慮に入れ、スキャンテスト回路の設計を行う半導体設計方法及び半導体設計装置が、提供される。
【図面の簡単な説明】
【0013】
【図1】本発明の一実施形態の概要を説明するための図である。
【図2】本発明の第1の実施形態に係る半導体設計装置1の内部構成の一例を示す図である。
【図3】設計ツール11で使用するデータの一例を示す図である。
【図4】半導体設計装置1の動作の概略の一例を示すフローチャートである。
【図5】スキャン用シフトレジスタ回路の結線の一例を示す図である。
【図6】図5に示す各スキャンフリップフロップ間の遅延値をまとめた図である。
【図7】スキャン用シフトレジスタ回路の高速化処理の一例を示すフローチャートである。
【図8】図5及び図6に示す各スキャンフリップフロップ間の遅延情報をカテゴリごとに分類した際の一例を示す図である。
【図9】カテゴリ毎のスキャンシフト動作レート候補値の一例を示す図である。
【図10】ECO情報ファイルの書式の一例を示す図である。
【図11】図5に示すスキャン用シフトレジスタ回路に対して、中継用フリップフロップを追加した結線の一例を示す図である。
【図12】図11に示す各スキャンフリップフロップ間の遅延値をまとめた図である。
【発明を実施するための形態】
【0014】
初めに、図1を用いて一実施形態の概要について説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、本発明を図示の態様に限定することを意図するものではない。
【0015】
上述のように、中継用フリップフロップを用いることで、スキャンテスト時間を短縮することができる。しかし、中継用フリップフロップを追加すると、スキャンフリップフロップの段数増加によるスキャンテスト時間増大を招く場合がある。そのため、フリップフロップ追加による利益と、スキャンフリップフロップの段数増加による不利益と、を考慮に入れ、スキャンテスト回路の設計を行う半導体設計方法が、望まれる。
【0016】
そこで、一例として図1に示す半導体設計方法を提供する。図1に示す半導体設計方法は、複数のスキャンフリップフロップから構成されるスキャンテスト回路の設計方法であって、複数のスキャンフリップフロップ間の遅延値を抽出することで、スキャンテスト回路の動作レートに関する候補値となるスキャンシフト動作レート候補値を複数算出する第1の工程と、複数のスキャンフリップフロップ間に中継用フリップフロップの追加を仮定し、複数のスキャンシフト動作レート候補値をそれぞれ使用して、スキャンテストの実施に必要な時間をスキャンシフト時間として算出し、スキャンシフト時間に基づき、中継用フリップフロップを追加することの効果が最も高いスキャンシフト動作レート候補値を、中継用フリップフロップの追加後のスキャンテスト回路に適用するスキャンシフト動作レートとして選択する第2の工程と、スキャンシフト動作レートを満たすように、複数のスキャンフリップフロップ間に中継用フリップフロップを追加する第3の工程と、を含んでいる。
【0017】
第1の工程では、スキャンフリップフロップ間の遅延値から、スキャンテスト回路に適用するスキャンシフト動作レート候補値を複数算出する。より具体的には、各スキャンフリップフロップ間の遅延値を複数のカテゴリに分類し、各カテゴリの下限値をスキャンシフト動作レートの候補値とすることが考えられる。
【0018】
第2の工程では、第1の工程で算出したスキャンシフト動作レート候補値について、中継用フリップフロップをスキャンテスト回路に追加した場合に、スキャンテストを実施した際に必要になるスキャンシフト時間を算出する。このスキャンシフト時間から中継用フリップフロップを追加することの効果が最も高いスキャンシフト動作レート候補値を中継用フリップフロップの追加後のスキャンテスト回路のスキャンシフト動作レートとして算出する。その際、スキャンシフト時間を追加する中継用フリップフロップの段数で除算することで、中継用フリップフロップを1段追加したことによる効果値を算出し、この効果値が最も高いスキャンシフト動作レート候補値を選択することが考えられる。
【0019】
第3の工程では、第2の工程で選択したスキャンシフト動作レートを満たすように、複数のスキャンフリップフロップ間に中継用フリップフロップを追加する。
【0020】
このようにして、スキャンテスト回路を設計することで、フリップフロップ追加による利益と、スキャンフリップフロップの段数増加による不利益と、が考慮されたスキャンテスト回路を得ることができる。即ち、むやみに中継用フリップフロップを追加して動作周波数を上昇させるのではなく、中継用フリップフロップを追加したことの効果が最も期待できる段数に限り中継用フリップフロップを追加し、スキャンテスト回路の高速化を実現する。その結果、中継用フリップフロップを追加したことにより、動作周波数を上昇させることができ、スキャンテスト時間の短縮という利益を享受することができる。一方、中継用フリップフロップを追加したことの効果が最も高い段数に限り、中継用フリップフロップを追加しているため、コストの上昇や基板面積増加といった不利益を最小限にすることができる。
【0021】
本発明において下記の形態が可能である。
【0022】
[形態1]上記第1の視点に係る半導体設計方法のとおりである。
【0023】
[形態2]前記第2の工程は、前記スキャンシフト時間及び前記中継用フリップフロップの追加前のスキャンテスト回路のスキャンテストに必要な時間から、スキャンシフト時間短縮値を算出した後、前記中継用フリップフロップを追加した段数及び前記スキャンシフト時間短縮値から前記中継用フリップフロップ1段あたりの中継用フリップフロップ追加効果値を算出し、前記複数のスキャンシフト動作レート候補値から、前記中継用フリップフロップ追加効果値が最も高いスキャンシフト動作レート候補値を算出することが好ましい。
【0024】
[形態3]前記第1の工程は、前記複数のスキャンフリップフロップ間の遅延値を複数のカテゴリに分類し、前記分類された複数のカテゴリの値から前記スキャンシフト動作レート候補値を抽出する工程を含み、前記第2の工程は、前記複数のスキャンシフト動作レート候補値をそれぞれ満たすように、前記中継用フリップフロップを追加すると仮定し前記複数のスキャンフリップ間を区切ったときのスキャンフリップフロップ段数増加値を算出する工程と、前記複数のスキャンシフト動作レート候補値それぞれの前記スキャンフリップフロップ段数増加値と前記中継用フリップフロップの追加前のスキャン用シフトテスト回路に含まれるスキャンフリップフロップの段数と、を加算することで、前記複数のスキャンシフト動作レート候補値それぞれについてスキャンフリップフロップ段数合計値を算出する工程と、前記複数のスキャンシフト動作レート候補値それぞれと、前記スキャンフリップフロップ段数合計値と、を乗算することで、前記スキャンシフト時間を算出する工程と、を含むことが好ましい。
【0025】
[形態4]前記第2の工程は、前記中継用フリップフロップの追加前のスキャンテスト回路のスキャンテストに必要な時間から前記スキャンシフト時間を減算することで、前記スキャンシフト時間短縮値を算出し、さらに、前記スキャンシフト時間短縮値を前記スキャンフリップフロップ段数増加値で除算することで、前記中継用フリップフロップ追加効果値として算出することが好ましい。
【0026】
[形態5]前記半導体設計方法は、さらに、前記複数のスキャンシフト動作レート候補値と、前記スキャンフリップ段数増加値と、前記スキャンフリップ段数合計値と、前記スキャンシフト時間と、前記スキャンシフト時間短縮値と、前記中継用フリップフロップ追加効果値と、をスキャンシフト動作レート候補情報として記憶する工程を含むことが好ましい。
【0027】
[形態6]上記第2の視点に係る半導体設計装置のとおりである。
【0028】
以下に具体的な実施の形態について、図面を参照してさらに詳しく説明する。
【0029】
[第1の実施形態]
本発明の第1の実施形態について、図面を用いてより詳細に説明する。
【0030】
図2は、本実施形態に係る半導体設計装置1の内部構成の一例を示す図である。
【0031】
半導体設計装置1は、制御部10と、メモリ20と、記憶部30と、操作部40と、表示部50から構成されている。
【0032】
制御部10は、半導体設計装置1に含まれる各部(例えば、操作部40等)の制御を行う。さらに、制御部10において、半導体集積回路の回路設計、レイアウト設計等を実現する。より具体的には、制御部10で、半導体集積回路の設計プログラムを実行する。ここで、制御部10が担う機能のうち、半導体集積回路の設計を行う機能モジュールを設計ツール11と定め、以下の説明を行う。
【0033】
メモリ20は、制御部10が使用する一時的な記憶領域として用いられる。
【0034】
記憶部30は、設計プログラムや設計データ等の情報を記憶する。
【0035】
操作部40は、半導体設計装置1を使用するユーザ(設計者)の操作を受け付ける。ユーザの操作に必要な情報は、表示部50に表示する。
【0036】
次に、設計ツール11において使用する各種のデータについて説明する。
【0037】
図3は、設計ツール11で使用するデータの一例を示す図である。
【0038】
これらのデータ(ファイル)は、メモリ20に一時的に記憶され、記憶部30に恒常的に記憶される。設計ツール11は、レイアウト設計上、遵守しなければならない情報を集約した設計制約、配線の幅、配線間で許容される間隔、遅延時間等の情報を含む設計ルール、セルやマクロセルの接続に関する情報を含むネットリスト及びセルライブラリを読み込む。設計ツール11は、これらのデータを使用して、セル配置後のレイアウトデータを生成する。
【0039】
さらに、設計ツール11は、セル配置後のレイアウトデータを検証し、中継用フリップフロップを追加したスキャンテスト回路のレイアウトデータを出力する。具体的には、フリップフロップ追加による利益と、スキャンフリップフロップの段数増加による不利益と、を考慮に入れ、スキャンテスト回路を変更(再設計)する。
【0040】
また、スキャンテスト回路の変更の際には、スキャンシフト動作レート候補情報ファイルとECO情報ファイルの生成を行う。スキャンシフト動作レート候補情報ファイルには、スキャンフリップフロップ間パスのタイミングを高速化するために必要な情報が含まれている。スキャンシフト動作レート候補情報ファイルの詳細については後述する。
【0041】
ECO情報ファイルは、新たに追加する中継用フリップフロップの接続情報と中継用フリップフロップを追加した後のスキャンシフト動作レート情報を含むファイルである。ECO情報ファイルの詳細についても後述する。
【0042】
次に、半導体設計装置1の動作について説明する。
【0043】
初めに、半導体設計装置1の動作の概略について説明する。
【0044】
図4は、半導体設計装置1の動作の概略の一例を示すフローチャートである。なお、図4における動作主体は、設計ツール11である。
【0045】
ステップS01では、設計制約、設計ルール、セルライブラリ、ネットリストを使用して、フロアプランニングを実施する。フロアプランニングでは、マクロセルの位置を指定し、スタンダードセルのグルーピング及び位置の指定、電源配線の概略などを決定する。
【0046】
ステップS02では、スタンダードセルを最適な位置に自動配置し、セル間の総配線長の最短化や、配線遅延時間の最小化などを実施する。
【0047】
ステップS03では、スキャン用シフトレジスタ回路の高速化処理(中継用フリップフロップの追加)を実施する。スキャン用シフトレジスタ回路の高速化処理の詳細については後述する。
【0048】
ステップS04では、設計対象となっている半導体集積回路に含まれるフリップフロップやマクロセルに対してクロックを分配する回路を生成する。
【0049】
ステップS05では、ネットリストに基づいて、スタンダードセルやマクロセル間を自動で配線する。
【0050】
ステップS06では、他の半導体設計支援ツールで使用するデータを出力する。より具体的には、配線容量や配線遅延時間を計算し、タイミング検証用ツールで使用するタイミング検証用ファイルや、マスクレイアウトデータを記述する標準フォーマットであるGDSIIの形式で記述された配置配線結果のストリームファイルを出力する。
【0051】
次に、スキャン用シフトレジスタ回路の高速化処理について説明する。
【0052】
図5は、スキャン用シフトレジスタ回路の結線の一例を示す図である。図5に示すスキャン用シフトレジスタ回路に対して高速化処理を適用する場合について説明する。
【0053】
図5に示すスキャン用シフトレジスタ回路は、回路機能ブロック群60と、スキャンフリップフロップSFF01〜SFF12から構成されている。図5のスキャンフリップフロップ間に示す数字は、各スキャンフリップフロップ間の遅延値(単位はns)である。スキャンフリップフロップSFF01は、回路機能ブロック群60が出力する信号と、スキャンシフトの入力信号を受け付ける。スキャンフリップフロップSFF01のスキャンシフトパスの出力信号は、次段のスキャンフリップフロップSFF02に入力される。スキャンフリップフロップSFF02〜SFF12までの入出力に関しても同様である。図6は、各スキャンフリップフロップ間の遅延値をまとめた図である。
【0054】
図7は、スキャン用シフトレジスタ回路の高速化処理の一例を示すフローチャートである。なお、図7における動作主体も設計ツール11である。
【0055】
ステップS301では、セル配置後のレイアウトデータを読み込んだ後、スキャン用シフトレジスタ回路の情報及び遅延の抽出を行う。具体的には、本ステップにおいて、図5に示すスキャン用シフトレジスタ回路の情報を抽出する。さらに、抽出したスキャン用シフトレジスタ回路の情報から各スキャンフリップフロップ間パスの遅延値を算出する。
【0056】
ステップS302では、抽出した各スキャンフリップフロップ間パスの遅延値情報をカテゴリごとに分類する。
【0057】
図8は、図5及び図6に示す各スキャンフリップフロップ間の遅延情報をカテゴリごとに分類した際の一例を示す図である。図8は、カテゴリ毎にスキャンフリップフロップ間パスごとのカテゴリ、各カテゴリに含まれるパス数、スキャンフリップフロップ間パス遅延値で構成されている。図5に示すスキャン用シフトレジスタ回路におけるスキャンフリップフロップ間パスの最大遅延値は、スキャンフリップフロップSFF06とSFF07の間の8.8nsとなる。従って、カテゴリはカテゴリ8まで作成する。なお、図8では、各カテゴリについての遅延値を1.0nsの範囲で区切り、カテゴリ0は0.0〜1.0ns、・・・、カテゴリ8は8.0〜9.0nsとしている。但し、各カテゴリを区切る範囲は1.0nsに限定する趣旨ではない。各カテゴリを区切る範囲(分解能)は、任意の値とすることができる。
【0058】
カテゴリ毎に分類した各スキャンフリップフロップ間パスの遅延値情報は、スキャンシフト動作レート候補情報ファイルに出力される。
【0059】
ステップS303では、スキャンフリップフロップの段数増加値と段数合計値の算出を行う。さらに、本ステップでは、各カテゴリから得られるスキャンシフト動作レートの候補値を抽出する。ここで、スキャンシフト動作レート候補値は、各カテゴリの下限値とする。具体的には、カテゴリ8のスキャンシフト動作レート候補値は8.0ns、カテゴリ7のスキャンシフト動作レート候補値は7.0nsのように定める。
【0060】
さらに、各スキャンシフト動作レート候補値を満たすように中継用フリップフロップを挿入すると仮定し、スキャンフリップフロップ間を区切ったときのスキャンフリップフロップ段数増加値を算出する。例えば、スキャンシフト動作レート候補値を6.0nsと定める場合、カテゴリ8の8.2nsと8.8nsの2つのパスに1段ずつ中継用フリップフロップの追加が必要になる。さらに、カテゴリ6の6.5nsのパスにも中継用フリップフロップを1段追加する必要があり、スキャンシフト動作レート候補値6.0nsを満たすためには、合計3段の中継用フリップフロップの追加が必要となる。このような処理を、全てのスキャンシフト動作レート候補値に対して行う。
【0061】
図9は、カテゴリ毎のスキャンシフト動作レート候補値の一例を示す図である。図9の横軸には、各カテゴリの各スキャンシフト動作レート候補値を満たすために必要な中継のフリップフロップの段数を示している。図9の縦軸には、カテゴリ、スキャンフリップフロップ段数増加値、スキャンフリップフロップ段数合計値、スキャンシフト時間、スキャンシフト時間短縮値、中継用フリップフロップ追加効果値、をそれぞれ示している。
【0062】
本ステップでは、図9のスキャンフリップフロップ段数増加値を算出する。なお、算出されたスキャンフリップフロップ段数増加値は、スキャンシフト動作レート候補情報ファイルに出力される。また、本ステップでは、スキャンシフト動作レート候補値ごとのスキャンフリップフロップ段数増加値と当初からスキャン用シフトレジスタ回路に存在していたスキャンフリップフロップの段数を加算し、スキャンシフト動作レート候補値ごとのスキャンフリップフロップ段数合計値を算出する。図5に示すスキャン用シフトレジスタ回路には、当初、12段のスキャンフリップフロップが存在していたため、カテゴリごとのスキャンフリップフロップ段数増加値に12を加算して、スキャンフリップフロップ段数合計値を算出する。スキャンフリップフロップ段数合計値もスキャンシフト動作レート候補情報ファイルに出力される。
【0063】
ステップS304では、各スキャンシフト動作レート候補値のスキャンシフト時間及び短縮値を算出する。本ステップでは、各スキャンシフト動作レート候補値と、対応するスキャンフリップフロップ段数合計値を乗算し、各スキャンシフト動作レート候補値のスキャンシフト時間を算出する。例えば、スキャンシフト動作レート候補値を5.0nsとすると、対応するスキャンフリップフロップ段数合計値は17であるから、スキャンシフト時間は85ns(5.0×17段=85ns)となる。このスキャンシフト時間は、スキャンシフト動作レート候補情報ファイルに出力される。
【0064】
さらに、本ステップでは、既に生成されたスキャンシフト動作レート候補情報ファイルの内容に基づき、スキャンフリップフロップ間パスのタイミングを最適化する前(高速化前)のスキャンシフト動作レートから算出したスキャンシフト時間から、各スキャンシフト動作レート候補値に対応したスキャンシフト時間を減算し、各スキャンシフト時間短縮値を算出する。例えば、図9において、スキャンフリップフロップ間パスのタイミングを最適化する前のスキャンシフト動作レートは8.8nsであって、スキャンフリップフロップ段数合計値は12であるから、スキャンフリップフロップ間パスのタイミングを最適化前のスキャンシフト時間は、8.8×12=105.6nsとなる。従って、スキャンシフト動作レート候補値が5.0nsの時のスキャンシフト時間短縮値は、105.6−85=20.6nsと計算できる。このような計算をカテゴリごとに行う。スキャンシフト時間短縮値についても、スキャンシフト動作レート候補情報ファイルに出力される。
【0065】
ステップS305では、中継用フリップフロップ追加効果値の算出及びスキャンシフト動作レートの選択を行う。本ステップでは、スキャンシフト時間短縮値を各スキャンシフト動作レート候補値のスキャンフリップフロップ段数増加値で除算し、中継用フリップフロップを1段追加したときのスキャンシフト時間短縮値を中継用フリップフロップ追加効果値として算出する。例えば、スキャンシフト動作レート候補値が5.0nsのときの中継用フリップフロップ追加効果値は、4.1ns(20.6÷5=4.1)となる。
【0066】
なお、中継用フリップフロップ追加効果値が負の値となる場合は、スキャンシフト動作レートは高速化できるが、スキャンシフト時間が増加することを意味する。従って、中継用フリップフロップ追加効果値が負の値となるスキャンシフト動作レート候補値は採用しない。
【0067】
同様に、中継用フリップフロップ追加効果値を全てのスキャンシフト動作レート候補値に対して算出する。この中継用フリップフロップ追加効果値もスキャンシフト動作レート候補情報ファイルに出力される。さらに、本ステップでは、算出された中継用フリップフロップ追加効果値が最も高いスキャンシフト動作レート候補値をスキャンシフト動作レートとして選択する。
【0068】
図9においては、スキャンシフト動作レート候補値が6.0nsのときに、中継用フリップフロップ追加効果値が最大となる(5.2ns)。このときのスキャンテスト時間は、3段の中継用フリップフロップの追加で15.6nsに相当する時間、高速化される。従って、スキャンシフト動作レート候補値として6.0nsが、実際にスキャンテストを行うスキャンシフト動作レートとして選択される。
【0069】
選択したスキャンシフト動作レートはECO情報ファイルに出力される。より具体的には、本ステップで得られたスキャンシフト動作レート(6.0ns)を満たすようにスキャンフリップフロップ間パスに中継用フリップフロップを追加するために必要な中継用フリップフロップの接続情報、中継用フリップフロップ追加後のスキャンシフト動作レート情報を含むファイルがECO情報ファイルとして出力される。
【0070】
図10は、ECO情報ファイルの書式の一例を示す図である。図10に示すように、ECO情報ファイルには、新たに追加する中継用フリップフロップのインスタンス名、セル名、接続情報と、中継用フリップフロップ追加後のスキャンシフト動作レート情報が含まれている。これらの情報は、中継用フリップフロップを追加する際に使用される。なお、ECO情報ファイルに出力されるスキャンシフト動作レート情報は、スキャンシフト動作レート候補値の6.0nsとしても良いが、図9に示すスキャンフリップフロップ間パスの遅延情報を参照して、6.0ns以下のスキャンフリップフロップ間パス遅延値のうち最大の5.9nsとしても良い。
【0071】
ステップS306では、ステップS305で出力されたECO情報ファイルに従って、半導体集積回路の配置配線装置を利用しつつ、中継用フリップフロップをスキャン用シフトレジスタ回路に追加する。その後、スキャンテスト時間の高速化を行ったレイアウトデータが出力される。また、中継用フリップフロップ追加後のスキャンシフト動作レートは、後工程のSTA(Static Timing Analysis)解析において、タイミング制約を作成するために必要な情報として使用される。
【0072】
図11は、図5に示すスキャン用シフトレジスタ回路に対して、中継用フリップフロップを追加した結線の一例を示す図である。図11に示すスキャン用シフトレジスタ回路は、図5に示すスキャン用シフトレジスタ回路の構成に対し、中継用フリップフロップPFF01〜PFF03を追加している。図12は、各スキャンフリップフロップ間の遅延値をまとめた図である。
【0073】
図11においては、スキャン用シフトレジスタ回路を構成しているスキャンフリップフロップSFF01〜SFF12のうち、スキャンフリップフロップSFF06とSFF07の間、スキャンフリップフロップSFF07とSFF08の間、スキャンフリップフロップSFF09とSFF10の間のパスに、それぞれ1段ずつ中継用フリップフロップPFF01〜PFF03が追加されている。その結果、各中継用フリップフロップPFF01〜PFF03の前後のスキャンフリップフロップ間の遅延値を縮小できる。
【0074】
以上のとおり、本実施形態に係る半導体設計装置1は各スキャンフリップフロップ間の遅延値を抽出すると共に、各スキャンフリップフロップ間の遅延値を任意の分解能でカテゴリに分類する。さらに、各カテゴリの代表遅延値(例えば、下限値)を使用して、目標となるスキャンシフト動作レート候補値を抽出し、スキャンシフト動作レートの候補値を満たすように中継用フリップフロップを挿入すると仮定してスキャンフリップフロップ間を区切ったときに増加するスキャンフリップフロップの段数を算出する。その後、増加するスキャンフリップフロップの段数に基づいて算出したスキャンシフト時間と、当初のスキャンシフト時間と、を比較してスキャンシフト時間短縮値を算出する。さらに、中継用フリップフロップを1段追加したときのスキャンシフト時間短縮値を中継用フリップフロップ追加効果値として算出する。
【0075】
この中継用フリップフロップ追加効果値が最も大きくなるスキャンシフト動作レートを選択し、スキャンシフト動作レートを満たすようにスキャンフリップフロップ間に中継用フリップフロップを追加することで、スキャンシフト動作レートの高速化とスキャンフリップフロップの段数増加の得失を考慮した(トレードオフ関係を加味した)スキャンシフト動作レートを求めることができる。
【0076】
また、高速化とスキャンフリップフロップの段数増加の得失を考慮して、スキャンシフト動作レートを満たすようにスキャンフリップフロップ間に中継用フリップフロップを追加することで、半導体集積回路のコスト及び基板面積の増加を抑制することができる。
【0077】
なお、引用した上記の特許文献等の各開示は、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素の多様な組み合わせないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【符号の説明】
【0078】
1 半導体設計装置
10 制御部
11 設計ツール
20 メモリ
30 記憶部
40 操作部
50 表示部
60 回路機能ブロック群
PFF01〜PFF03 中継用フリップフロップ
SFF01〜SFF12 スキャンフリップフロップ
【特許請求の範囲】
【請求項1】
複数のスキャンフリップフロップから構成されるスキャンテスト回路の設計方法であって、
前記複数のスキャンフリップフロップ間の遅延値を抽出することで、前記スキャンテスト回路の動作レートに関する候補値となるスキャンシフト動作レート候補値を複数算出する第1の工程と、
前記複数のスキャンフリップフロップ間に中継用フリップフロップの追加を仮定し、前記複数のスキャンシフト動作レート候補値をそれぞれ使用して、スキャンテストの実施に必要な時間をスキャンシフト時間として算出し、前記スキャンシフト時間に基づき、前記中継用フリップフロップを追加することの効果が最も高いスキャンシフト動作レート候補値を、前記中継用フリップフロップの追加後のスキャンテスト回路に適用するスキャンシフト動作レートとして選択する第2の工程と、
前記スキャンシフト動作レートを満たすように、前記複数のスキャンフリップフロップ間に前記中継用フリップフロップを追加する第3の工程と、
を含むことを特徴とする半導体設計方法。
【請求項2】
前記第2の工程は、
前記スキャンシフト時間及び前記中継用フリップフロップの追加前のスキャンテスト回路のスキャンテストに必要な時間から、スキャンシフト時間短縮値を算出した後、前記中継用フリップフロップを追加した段数及び前記スキャンシフト時間短縮値から前記中継用フリップフロップ1段あたりの中継用フリップフロップ追加効果値を算出し、前記複数のスキャンシフト動作レート候補値から、前記中継用フリップフロップ追加効果値が最も高いスキャンシフト動作レート候補値を算出する請求項1の半導体設計方法。
【請求項3】
前記第1の工程は、
前記複数のスキャンフリップフロップ間の遅延値を複数のカテゴリに分類し、前記分類された複数のカテゴリの値から前記スキャンシフト動作レート候補値を抽出する工程を含み、
前記第2の工程は、
前記複数のスキャンシフト動作レート候補値をそれぞれ満たすように、前記中継用フリップフロップを追加すると仮定し前記複数のスキャンフリップ間を区切ったときのスキャンフリップフロップ段数増加値を算出する工程と、
前記複数のスキャンシフト動作レート候補値それぞれの前記スキャンフリップフロップ段数増加値と前記中継用フリップフロップの追加前のスキャン用シフトテスト回路に含まれるスキャンフリップフロップの段数と、を加算することで、前記複数のスキャンシフト動作レート候補値それぞれについてスキャンフリップフロップ段数合計値を算出する工程と、
前記複数のスキャンシフト動作レート候補値それぞれと、前記スキャンフリップフロップ段数合計値と、を乗算することで、前記スキャンシフト時間を算出する工程と、
を含む請求項2の半導体設計方法。
【請求項4】
前記第2の工程は、
前記中継用フリップフロップの追加前のスキャンテスト回路のスキャンテストに必要な時間から前記スキャンシフト時間を減算することで、前記スキャンシフト時間短縮値を算出し、さらに、前記スキャンシフト時間短縮値を前記スキャンフリップフロップ段数増加値で除算することで、前記中継用フリップフロップ追加効果値として算出する請求項3の半導体設計方法。
【請求項5】
さらに、前記複数のスキャンシフト動作レート候補値と、前記スキャンフリップ段数増加値と、前記スキャンフリップ段数合計値と、前記スキャンシフト時間と、前記スキャンシフト時間短縮値と、前記中継用フリップフロップ追加効果値と、をスキャンシフト動作レート候補情報として記憶する工程を含む請求項4の半導体設計方法。
【請求項6】
複数のスキャンフリップフロップから構成されるスキャンテスト回路を設計する半導体設計装置であって、
前記複数のスキャンフリップフロップ間の遅延値を抽出することで、前記スキャンテスト回路の動作レートに関する候補値となるスキャンシフト動作レート候補値を複数算出し、
前記複数のスキャンフリップフロップ間に中継用フリップフロップの追加を仮定し、前記複数のスキャンシフト動作レート候補値をそれぞれ使用して、スキャンテストの実施に必要な時間をスキャンシフト時間として算出し、前記スキャンシフト時間に基づき、前記中継用フリップフロップを追加することの効果が最も高いスキャンシフト動作レート候補値を、前記中継用フリップフロップの追加後のスキャンテスト回路に適用するスキャンシフト動作レートとして選択した後、
前記スキャンシフト動作レートを満たすように、前記複数のスキャンフリップフロップ間に前記中継用フリップフロップを追加することを特徴とする半導体設計装置。
【請求項1】
複数のスキャンフリップフロップから構成されるスキャンテスト回路の設計方法であって、
前記複数のスキャンフリップフロップ間の遅延値を抽出することで、前記スキャンテスト回路の動作レートに関する候補値となるスキャンシフト動作レート候補値を複数算出する第1の工程と、
前記複数のスキャンフリップフロップ間に中継用フリップフロップの追加を仮定し、前記複数のスキャンシフト動作レート候補値をそれぞれ使用して、スキャンテストの実施に必要な時間をスキャンシフト時間として算出し、前記スキャンシフト時間に基づき、前記中継用フリップフロップを追加することの効果が最も高いスキャンシフト動作レート候補値を、前記中継用フリップフロップの追加後のスキャンテスト回路に適用するスキャンシフト動作レートとして選択する第2の工程と、
前記スキャンシフト動作レートを満たすように、前記複数のスキャンフリップフロップ間に前記中継用フリップフロップを追加する第3の工程と、
を含むことを特徴とする半導体設計方法。
【請求項2】
前記第2の工程は、
前記スキャンシフト時間及び前記中継用フリップフロップの追加前のスキャンテスト回路のスキャンテストに必要な時間から、スキャンシフト時間短縮値を算出した後、前記中継用フリップフロップを追加した段数及び前記スキャンシフト時間短縮値から前記中継用フリップフロップ1段あたりの中継用フリップフロップ追加効果値を算出し、前記複数のスキャンシフト動作レート候補値から、前記中継用フリップフロップ追加効果値が最も高いスキャンシフト動作レート候補値を算出する請求項1の半導体設計方法。
【請求項3】
前記第1の工程は、
前記複数のスキャンフリップフロップ間の遅延値を複数のカテゴリに分類し、前記分類された複数のカテゴリの値から前記スキャンシフト動作レート候補値を抽出する工程を含み、
前記第2の工程は、
前記複数のスキャンシフト動作レート候補値をそれぞれ満たすように、前記中継用フリップフロップを追加すると仮定し前記複数のスキャンフリップ間を区切ったときのスキャンフリップフロップ段数増加値を算出する工程と、
前記複数のスキャンシフト動作レート候補値それぞれの前記スキャンフリップフロップ段数増加値と前記中継用フリップフロップの追加前のスキャン用シフトテスト回路に含まれるスキャンフリップフロップの段数と、を加算することで、前記複数のスキャンシフト動作レート候補値それぞれについてスキャンフリップフロップ段数合計値を算出する工程と、
前記複数のスキャンシフト動作レート候補値それぞれと、前記スキャンフリップフロップ段数合計値と、を乗算することで、前記スキャンシフト時間を算出する工程と、
を含む請求項2の半導体設計方法。
【請求項4】
前記第2の工程は、
前記中継用フリップフロップの追加前のスキャンテスト回路のスキャンテストに必要な時間から前記スキャンシフト時間を減算することで、前記スキャンシフト時間短縮値を算出し、さらに、前記スキャンシフト時間短縮値を前記スキャンフリップフロップ段数増加値で除算することで、前記中継用フリップフロップ追加効果値として算出する請求項3の半導体設計方法。
【請求項5】
さらに、前記複数のスキャンシフト動作レート候補値と、前記スキャンフリップ段数増加値と、前記スキャンフリップ段数合計値と、前記スキャンシフト時間と、前記スキャンシフト時間短縮値と、前記中継用フリップフロップ追加効果値と、をスキャンシフト動作レート候補情報として記憶する工程を含む請求項4の半導体設計方法。
【請求項6】
複数のスキャンフリップフロップから構成されるスキャンテスト回路を設計する半導体設計装置であって、
前記複数のスキャンフリップフロップ間の遅延値を抽出することで、前記スキャンテスト回路の動作レートに関する候補値となるスキャンシフト動作レート候補値を複数算出し、
前記複数のスキャンフリップフロップ間に中継用フリップフロップの追加を仮定し、前記複数のスキャンシフト動作レート候補値をそれぞれ使用して、スキャンテストの実施に必要な時間をスキャンシフト時間として算出し、前記スキャンシフト時間に基づき、前記中継用フリップフロップを追加することの効果が最も高いスキャンシフト動作レート候補値を、前記中継用フリップフロップの追加後のスキャンテスト回路に適用するスキャンシフト動作レートとして選択した後、
前記スキャンシフト動作レートを満たすように、前記複数のスキャンフリップフロップ間に前記中継用フリップフロップを追加することを特徴とする半導体設計装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【公開番号】特開2013−73487(P2013−73487A)
【公開日】平成25年4月22日(2013.4.22)
【国際特許分類】
【出願番号】特願2011−213141(P2011−213141)
【出願日】平成23年9月28日(2011.9.28)
【出願人】(302062931)ルネサスエレクトロニクス株式会社 (8,021)
【Fターム(参考)】
【公開日】平成25年4月22日(2013.4.22)
【国際特許分類】
【出願日】平成23年9月28日(2011.9.28)
【出願人】(302062931)ルネサスエレクトロニクス株式会社 (8,021)
【Fターム(参考)】
[ Back to top ]