(57)【要約】【課題】フリップフロップ追加による利益と、スキャンＦＦの段数増加による不利益と、を考慮に入れ、スキャンテスト回路の設計を行う半導体設計方法が、望まれる。【解決手段】複数のスキャンＦＦから構成されるスキャンテスト回路の設計方法は、複数のスキャンＦＦ間の遅延値を抽出することで、スキャンテスト回路の動作レート候補値を複数算出する第１の工程と、中継用フリップフロップの追加を仮定し、複数の動作レート候補値をそれぞれ使用して、スキャンテストの実施に必要な時間をスキャンシフト時間として算出し、スキャンシフト時間に基づき、中継用フリップフロップを追加することの効果が最も高い動作レート候補値を、中継用フリップフロップの追加後のスキャンテスト回路に適用する動作レートとして選択する第２の工程と、動作レートを満たすように、複数のスキャンＦＦ間に中継用フリップフロップを追加する第３の工程と、を含んでいる。【選択図】図１
2013073487.tif 000002
【特許請求の範囲】
【請求項１】
複数のスキャンフリップフロップから構成されるスキャンテスト回路の設計方法であって、
前記複数のスキャンフリップフロップ間の遅延値を抽出することで、前記スキャンテスト回路の動作レートに関する候補値となるスキャンシフト動作レート候補値を複数算出する第１の工程と、
前記複数のスキャンフリップフロップ間に中継用フリップフロップの追加を仮定し、前記複数のスキャンシフト動作レート候補値をそれぞれ使用して、スキャンテストの実施に必要な時間をスキャンシフト時間として算出し、前記スキャンシフト時間に基づき、前記中継用フリップフロップを追加することの効果が最も高いスキャンシフト動作レート候補値を、前記中継用フリップフロップの追加後のスキャンテスト回路に適用するスキャンシフト動作レートとして選択する第２の工程と、
前記スキャンシフト動作レートを満たすように、前記複数のスキャンフリップフロップ間に前記中継用フリップフロップを追加する第３の工程と、
を含むことを特徴とする半導体設計方法。
【請求項２】
前記第２の工程は、
前記スキャンシフト時間及び前記中継用フリップフロップの追加前のスキャンテスト回路のスキャンテストに必要な時間から、スキャンシフト時間短縮値を算出した後、前記中継用フリップフロップを追加した段数及び前記スキャンシフト時間短縮値から前記中継用フリップフロップ１段あたりの中継用フリップフロップ追加効果値を算出し、前記複数のスキャンシフト動作レート候補値から、前記中継用フリップフロップ追加効果値が最も高いスキャンシフト動作レート候補値を算出する請求項１の半導体設計方法。
【請求項３】
前記第１の工程は、
前記複数のスキャンフリップフロップ間の遅延値を複数のカテゴリに分類し、前記分類された複数のカテゴリの値から前記スキャンシフト動作レート候補値を抽出する工程を含み、
前記第２の工程は、
前記複数のスキャンシフト動作レート候補値をそれぞれ満たすように、前記中継用フリップフロップを追加すると仮定し前記複数のスキャンフリップ間を区切ったときのスキャンフリップフロップ段数増加値を算出する工程と、
前記複数のスキャンシフト動作レート候補値それぞれの前記スキャンフリップフロップ段数増加値と前記中継用フリップフロップの追加前のスキャン用シフトテスト回路に含まれるスキャンフリップフロップの段数と、を加算することで、前記複数のスキャンシフト動作レート候補値それぞれについてスキャンフリップフロップ段数合計値を算出する工程と、
前記複数のスキャンシフト動作レート候補値それぞれと、前記スキャンフリップフロップ段数合計値と、を乗算することで、前記スキャンシフト時間を算出する工程と、
を含む請求項２の半導体設計方法。
【請求項４】
前記第２の工程は、
前記中継用フリップフロップの追加前のスキャンテスト回路のスキャンテストに必要な時間から前記スキャンシフト時間を減算することで、前記スキャンシフト時間短縮値を算出し、さらに、前記スキャンシフト時間短縮値を前記スキャンフリップフロップ段数増加値で除算することで、前記中継用フリップフロップ追加効果値として算出する請求項３の半導体設計方法。
【請求項５】
さらに、前記複数のスキャンシフト動作レート候補値と、前記スキャンフリップ段数増加値と、前記スキャンフリップ段数合計値と、前記スキャンシフト時間と、前記スキャンシフト時間短縮値と、前記中継用フリップフロップ追加効果値と、をスキャンシフト動作レート候補情報として記憶する工程を含む請求項４の半導体設計方法。
【請求項６】
複数のスキャンフリップフロップから構成されるスキャンテスト回路を設計する半導体設計装置であって、
前記複数のスキャンフリップフロップ間の遅延値を抽出することで、前記スキャンテスト回路の動作レートに関する候補値となるスキャンシフト動作レート候補値を複数算出し、
前記複数のスキャンフリップフロップ間に中継用フリップフロップの追加を仮定し、前記複数のスキャンシフト動作レート候補値をそれぞれ使用して、スキャンテストの実施に必要な時間をスキャンシフト時間として算出し、前記スキャンシフト時間に基づき、前記中継用フリップフロップを追加することの効果が最も高いスキャンシフト動作レート候補値を、前記中継用フリップフロップの追加後のスキャンテスト回路に適用するスキャンシフト動作レートとして選択した後、
前記スキャンシフト動作レートを満たすように、前記複数のスキャンフリップフロップ間に前記中継用フリップフロップを追加することを特徴とする半導体設計装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体設計方法及び半導体設計装置に関する。特に、スキャンテスト回路を備える半導体集積回路の半導体設計方法及び半導体設計装置に関する。
【背景技術】
【０００２】
近年、半導体集積回路には多くの機能が実装されている。競合他社の製品との差別化のためである。また、多くの機能を実装するために、高集積化の進行が著しい。さらに、自社の半導体集積回路の競争力を維持するためには、そのコストが低いことが必要である。
【０００３】
このような状況下において、半導体集積回路の機能を実現するモジュール（回路）が正常に動作しているか否かを確認するためのテストとして、スキャンテスト回路が半導体集積回路に実装されている。スキャンテストは、スキャンフリップフロップにクロックを供給することで行われることから、動作レート（スキャン用シフトレジスタ回路の動作周波数）を高くすることで、スキャンテストを高速に実施することが可能になる。上述のように、近年の半導体集積回路は高集積化が進んでおり、スキャンテストを高速に実施する必要性が高まっている。スキャンテストを高速に実施できれば、テスト時間が短縮され、半導体集積回路の製造コストも低下するためである。
【０００４】
ここで、特許文献１において、スキャン用シフトレジスタ回路を構成するスキャンフリップフロップの間にフリップフロップを挿入することで、スキャンテスト時間を短縮する技術が開示されている。特許文献１で開示された技術では、スキャンフリップフロップ間の配線が、所定の距離以上離れている場合に、中継用フリップフロップを挿入することで、中継用フリップフロップを含めたスキャンフリップフロップ間の遅延を一定の範囲内に納めている。スキャンフリップフロップ間の遅延が縮小すれば、セットアップタイム及びホールドタイムに関する制約が緩和され、動作周波数を高くすることできる。その結果、スキャンテスト時間が短縮できる。
【０００５】
さらに、特許文献２においても、スキャンフリップフロップ間にフリップフロップを挿入することとで、スキャンテスト時間を短縮する技術が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０００−０８８９２４号公報
【特許文献２】特開２００３−１９６３３４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
なお、上記先行技術文献の各開示を、本書に引用をもって繰り込むものとする。以下の分析は、本発明の観点からなされたものである。
【０００８】
特許文献１及び２で開示された技術によれば、スキャンフリップフロップの間に中継用フリップフロップを追加することによって、スキャン用シフトレジスタ回路の動作周波数を高くすることができる。しかし、特許文献１及び２で開示された技術には、スキャンフリップフロップの段数増加に対する考慮がなく、中継用フリップフロップを追加したにも関わらず、スキャンテスト時間が長くなる場合があるという問題がある。また、スキャンテスト時間が短縮される場合であっても、追加した中継用フリップフロップの段数に見合ったスキャンテスト時間の短縮が行えない場合がある。この場合には、中継用フリップフロップの追加に伴うコスト上昇及び基板面積の増加が問題になる。即ち、特許文献１及び２で開示された技術では、中継用フリップフロップの追加による利益（動作周波数の上昇によるスキャンテスト時間短縮）と、スキャンフリップフロップの段数増加による不利益（コスト増加及び基板面積増加）と、を考慮に入れたスキャンテスト回路の設計がされていない。
【０００９】
以上のとおり、スキャンテスト回路を備える半導体集積回路を設計する半導体設計装置には、解決すべき問題点が存在する。そのため、フリップフロップ追加による利益と、スキャンフリップフロップの段数増加による不利益と、を考慮に入れ、スキャンテスト回路の設計を行う半導体設計方法及び半導体設計装置が、望まれる。
【課題を解決するための手段】
【００１０】
本発明の第１の視点によれば、複数のスキャンフリップフロップから構成されるスキャンテスト回路の設計方法であって、前記複数のスキャンフリップフロップ間の遅延値を抽出することで、前記スキャンテスト回路の動作レートに関する候補値となるスキャンシフト動作レート候補値を複数算出する第１の工程と、前記複数のスキャンフリップフロップ間に中継用フリップフロップの追加を仮定し、前記複数のスキャンシフト動作レート候補値をそれぞれ使用して、スキャンテストの実施に必要な時間をスキャンシフト時間として算出し、前記スキャンシフト時間に基づき、前記中継用フリップフロップを追加することの効果が最も高いスキャンシフト動作レート候補値を、前記中継用フリップフロップの追加後のスキャンテスト回路に適用するスキャンシフト動作レートとして選択する第２の工程と、前記スキャンシフト動作レートを満たすように、前記複数のスキャンフリップフロップ間に前記中継用フリップフロップを追加する第３の工程と、を含む半導体設計方法が提供される。
【００１１】
本発明の第２の視点によれば、複数のスキャンフリップフロップから構成されるスキャンテスト回路を設計する半導体設計装置であって、前記複数のスキャンフリップフロップ間の遅延値を抽出することで、前記スキャンテスト回路の動作レートに関する候補値となるスキャンシフト動作レート候補値を複数算出し、前記複数のスキャンフリップフロップ間に中継用フリップフロップの追加を仮定し、前記複数のスキャンシフト動作レート候補値をそれぞれ使用して、スキャンテストの実施に必要な時間をスキャンシフト時間として算出し、前記スキャンシフト時間に基づき、前記中継用フリップフロップを追加することの効果が最も高いスキャンシフト動作レート候補値を、前記中継用フリップフロップの追加後のスキャンテスト回路に適用するスキャンシフト動作レートとして選択した後、前記スキャンシフト動作レートを満たすように、前記複数のスキャンフリップフロップ間に前記中継用フリップフロップを追加する半導体設計装置が提供される。
【発明の効果】
【００１２】
本発明の各視点によれば、フリップフロップ追加による利益と、スキャンフリップフロップの段数増加による不利益と、を考慮に入れ、スキャンテスト回路の設計を行う半導体設計方法及び半導体設計装置が、提供される。
【図面の簡単な説明】
【００１３】
【図１】本発明の一実施形態の概要を説明するための図である。
【図２】本発明の第１の実施形態に係る半導体設計装置１の内部構成の一例を示す図である。
【図３】設計ツール１１で使用するデータの一例を示す図である。
【図４】半導体設計装置１の動作の概略の一例を示すフローチャートである。
【図５】スキャン用シフトレジスタ回路の結線の一例を示す図である。
【図６】図５に示す各スキャンフリップフロップ間の遅延値をまとめた図である。
【図７】スキャン用シフトレジスタ回路の高速化処理の一例を示すフローチャートである。
【図８】図５及び図６に示す各スキャンフリップフロップ間の遅延情報をカテゴリごとに分類した際の一例を示す図である。
【図９】カテゴリ毎のスキャンシフト動作レート候補値の一例を示す図である。
【図１０】ＥＣＯ情報ファイルの書式の一例を示す図である。
【図１１】図５に示すスキャン用シフトレジスタ回路に対して、中継用フリップフロップを追加した結線の一例を示す図である。
【図１２】図１１に示す各スキャンフリップフロップ間の遅延値をまとめた図である。
【発明を実施するための形態】
【００１４】
初めに、図１を用いて一実施形態の概要について説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、本発明を図示の態様に限定することを意図するものではない。
【００１５】
上述のように、中継用フリップフロップを用いることで、スキャンテスト時間を短縮することができる。しかし、中継用フリップフロップを追加すると、スキャンフリップフロップの段数増加によるスキャンテスト時間増大を招く場合がある。そのため、フリップフロップ追加による利益と、スキャンフリップフロップの段数増加による不利益と、を考慮に入れ、スキャンテスト回路の設計を行う半導体設計方法が、望まれる。
【００１６】
そこで、一例として図１に示す半導体設計方法を提供する。図１に示す半導体設計方法は、複数のスキャンフリップフロップから構成されるスキャンテスト回路の設計方法であって、複数のスキャンフリップフロップ間の遅延値を抽出することで、スキャンテスト回路の動作レートに関する候補値となるスキャンシフト動作レート候補値を複数算出する第１の工程と、複数のスキャンフリップフロップ間に中継用フリップフロップの追加を仮定し、複数のスキャンシフト動作レート候補値をそれぞれ使用して、スキャンテストの実施に必要な時間をスキャンシフト時間として算出し、スキャンシフト時間に基づき、中継用フリップフロップを追加することの効果が最も高いスキャンシフト動作レート候補値を、中継用フリップフロップの追加後のスキャンテスト回路に適用するスキャンシフト動作レートとして選択する第２の工程と、スキャンシフト動作レートを満たすように、複数のスキャンフリップフロップ間に中継用フリップフロップを追加する第３の工程と、を含んでいる。
【００１７】
第１の工程では、スキャンフリップフロップ間の遅延値から、スキャンテスト回路に適用するスキャンシフト動作レート候補値を複数算出する。より具体的には、各スキャンフリップフロップ間の遅延値を複数のカテゴリに分類し、各カテゴリの下限値をスキャンシフト動作レートの候補値とすることが考えられる。
【００１８】
第２の工程では、第１の工程で算出したスキャンシフト動作レート候補値について、中継用フリップフロップをスキャンテスト回路に追加した場合に、スキャンテストを実施した際に必要になるスキャンシフト時間を算出する。このスキャンシフト時間から中継用フリップフロップを追加することの効果が最も高いスキャンシフト動作レート候補値を中継用フリップフロップの追加後のスキャンテスト回路のスキャンシフト動作レートとして算出する。その際、スキャンシフト時間を追加する中継用フリップフロップの段数で除算することで、中継用フリップフロップを１段追加したことによる効果値を算出し、この効果値が最も高いスキャンシフト動作レート候補値を選択することが考えられる。
【００１９】
第３の工程では、第２の工程で選択したスキャンシフト動作レートを満たすように、複数のスキャンフリップフロップ間に中継用フリップフロップを追加する。
【００２０】
このようにして、スキャンテスト回路を設計することで、フリップフロップ追加による利益と、スキャンフリップフロップの段数増加による不利益と、が考慮されたスキャンテスト回路を得ることができる。即ち、むやみに中継用フリップフロップを追加して動作周波数を上昇させるのではなく、中継用フリップフロップを追加したことの効果が最も期待できる段数に限り中継用フリップフロップを追加し、スキャンテスト回路の高速化を実現する。その結果、中継用フリップフロップを追加したことにより、動作周波数を上昇させることができ、スキャンテスト時間の短縮という利益を享受することができる。一方、中継用フリップフロップを追加したことの効果が最も高い段数に限り、中継用フリップフロップを追加しているため、コストの上昇や基板面積増加といった不利益を最小限にすることができる。
【００２１】
本発明において下記の形態が可能である。
【００２２】
［形態１］上記第１の視点に係る半導体設計方法のとおりである。
【００２３】
［形態２］前記第２の工程は、前記スキャンシフト時間及び前記中継用フリップフロップの追加前のスキャンテスト回路のスキャンテストに必要な時間から、スキャンシフト時間短縮値を算出した後、前記中継用フリップフロップを追加した段数及び前記スキャンシフト時間短縮値から前記中継用フリップフロップ１段あたりの中継用フリップフロップ追加効果値を算出し、前記複数のスキャンシフト動作レート候補値から、前記中継用フリップフロップ追加効果値が最も高いスキャンシフト動作レート候補値を算出することが好ましい。
【００２４】
［形態３］前記第１の工程は、前記複数のスキャンフリップフロップ間の遅延値を複数のカテゴリに分類し、前記分類された複数のカテゴリの値から前記スキャンシフト動作レート候補値を抽出する工程を含み、前記第２の工程は、前記複数のスキャンシフト動作レート候補値をそれぞれ満たすように、前記中継用フリップフロップを追加すると仮定し前記複数のスキャンフリップ間を区切ったときのスキャンフリップフロップ段数増加値を算出する工程と、前記複数のスキャンシフト動作レート候補値それぞれの前記スキャンフリップフロップ段数増加値と前記中継用フリップフロップの追加前のスキャン用シフトテスト回路に含まれるスキャンフリップフロップの段数と、を加算することで、前記複数のスキャンシフト動作レート候補値それぞれについてスキャンフリップフロップ段数合計値を算出する工程と、前記複数のスキャンシフト動作レート候補値それぞれと、前記スキャンフリップフロップ段数合計値と、を乗算することで、前記スキャンシフト時間を算出する工程と、を含むことが好ましい。
【００２５】
［形態４］前記第２の工程は、前記中継用フリップフロップの追加前のスキャンテスト回路のスキャンテストに必要な時間から前記スキャンシフト時間を減算することで、前記スキャンシフト時間短縮値を算出し、さらに、前記スキャンシフト時間短縮値を前記スキャンフリップフロップ段数増加値で除算することで、前記中継用フリップフロップ追加効果値として算出することが好ましい。
【００２６】
［形態５］前記半導体設計方法は、さらに、前記複数のスキャンシフト動作レート候補値と、前記スキャンフリップ段数増加値と、前記スキャンフリップ段数合計値と、前記スキャンシフト時間と、前記スキャンシフト時間短縮値と、前記中継用フリップフロップ追加効果値と、をスキャンシフト動作レート候補情報として記憶する工程を含むことが好ましい。
【００２７】
［形態６］上記第２の視点に係る半導体設計装置のとおりである。
【００２８】
以下に具体的な実施の形態について、図面を参照してさらに詳しく説明する。
【００２９】
［第１の実施形態］
本発明の第１の実施形態について、図面を用いてより詳細に説明する。
【００３０】
図２は、本実施形態に係る半導体設計装置１の内部構成の一例を示す図である。
【００３１】
半導体設計装置１は、制御部１０と、メモリ２０と、記憶部３０と、操作部４０と、表示部５０から構成されている。
【００３２】
制御部１０は、半導体設計装置１に含まれる各部（例えば、操作部４０等）の制御を行う。さらに、制御部１０において、半導体集積回路の回路設計、レイアウト設計等を実現する。より具体的には、制御部１０で、半導体集積回路の設計プログラムを実行する。ここで、制御部１０が担う機能のうち、半導体集積回路の設計を行う機能モジュールを設計ツール１１と定め、以下の説明を行う。
【００３３】
メモリ２０は、制御部１０が使用する一時的な記憶領域として用いられる。
【００３４】
記憶部３０は、設計プログラムや設計データ等の情報を記憶する。
【００３５】
操作部４０は、半導体設計装置１を使用するユーザ（設計者）の操作を受け付ける。ユーザの操作に必要な情報は、表示部５０に表示する。
【００３６】
次に、設計ツール１１において使用する各種のデータについて説明する。
【００３７】
図３は、設計ツール１１で使用するデータの一例を示す図である。
【００３８】
これらのデータ（ファイル）は、メモリ２０に一時的に記憶され、記憶部３０に恒常的に記憶される。設計ツール１１は、レイアウト設計上、遵守しなければならない情報を集約した設計制約、配線の幅、配線間で許容される間隔、遅延時間等の情報を含む設計ルール、セルやマクロセルの接続に関する情報を含むネットリスト及びセルライブラリを読み込む。設計ツール１１は、これらのデータを使用して、セル配置後のレイアウトデータを生成する。
【００３９】
さらに、設計ツール１１は、セル配置後のレイアウトデータを検証し、中継用フリップフロップを追加したスキャンテスト回路のレイアウトデータを出力する。具体的には、フリップフロップ追加による利益と、スキャンフリップフロップの段数増加による不利益と、を考慮に入れ、スキャンテスト回路を変更（再設計）する。
【００４０】
また、スキャンテスト回路の変更の際には、スキャンシフト動作レート候補情報ファイルとＥＣＯ情報ファイルの生成を行う。スキャンシフト動作レート候補情報ファイルには、スキャンフリップフロップ間パスのタイミングを高速化するために必要な情報が含まれている。スキャンシフト動作レート候補情報ファイルの詳細については後述する。
【００４１】
ＥＣＯ情報ファイルは、新たに追加する中継用フリップフロップの接続情報と中継用フリップフロップを追加した後のスキャンシフト動作レート情報を含むファイルである。ＥＣＯ情報ファイルの詳細についても後述する。
【００４２】
次に、半導体設計装置１の動作について説明する。
【００４３】
初めに、半導体設計装置１の動作の概略について説明する。
【００４４】
図４は、半導体設計装置１の動作の概略の一例を示すフローチャートである。なお、図４における動作主体は、設計ツール１１である。
【００４５】
ステップＳ０１では、設計制約、設計ルール、セルライブラリ、ネットリストを使用して、フロアプランニングを実施する。フロアプランニングでは、マクロセルの位置を指定し、スタンダードセルのグルーピング及び位置の指定、電源配線の概略などを決定する。
【００４６】
ステップＳ０２では、スタンダードセルを最適な位置に自動配置し、セル間の総配線長の最短化や、配線遅延時間の最小化などを実施する。
【００４７】
ステップＳ０３では、スキャン用シフトレジスタ回路の高速化処理（中継用フリップフロップの追加）を実施する。スキャン用シフトレジスタ回路の高速化処理の詳細については後述する。
【００４８】
ステップＳ０４では、設計対象となっている半導体集積回路に含まれるフリップフロップやマクロセルに対してクロックを分配する回路を生成する。
【００４９】
ステップＳ０５では、ネットリストに基づいて、スタンダードセルやマクロセル間を自動で配線する。
【００５０】
ステップＳ０６では、他の半導体設計支援ツールで使用するデータを出力する。より具体的には、配線容量や配線遅延時間を計算し、タイミング検証用ツールで使用するタイミング検証用ファイルや、マスクレイアウトデータを記述する標準フォーマットであるＧＤＳＩＩの形式で記述された配置配線結果のストリームファイルを出力する。
【００５１】
次に、スキャン用シフトレジスタ回路の高速化処理について説明する。
【００５２】
図５は、スキャン用シフトレジスタ回路の結線の一例を示す図である。図５に示すスキャン用シフトレジスタ回路に対して高速化処理を適用する場合について説明する。
【００５３】
図５に示すスキャン用シフトレジスタ回路は、回路機能ブロック群６０と、スキャンフリップフロップＳＦＦ０１〜ＳＦＦ１２から構成されている。図５のスキャンフリップフロップ間に示す数字は、各スキャンフリップフロップ間の遅延値（単位はｎｓ）である。スキャンフリップフロップＳＦＦ０１は、回路機能ブロック群６０が出力する信号と、スキャンシフトの入力信号を受け付ける。スキャンフリップフロップＳＦＦ０１のスキャンシフトパスの出力信号は、次段のスキャンフリップフロップＳＦＦ０２に入力される。スキャンフリップフロップＳＦＦ０２〜ＳＦＦ１２までの入出力に関しても同様である。図６は、各スキャンフリップフロップ間の遅延値をまとめた図である。
【００５４】
図７は、スキャン用シフトレジスタ回路の高速化処理の一例を示すフローチャートである。なお、図７における動作主体も設計ツール１１である。
【００５５】
ステップＳ３０１では、セル配置後のレイアウトデータを読み込んだ後、スキャン用シフトレジスタ回路の情報及び遅延の抽出を行う。具体的には、本ステップにおいて、図５に示すスキャン用シフトレジスタ回路の情報を抽出する。さらに、抽出したスキャン用シフトレジスタ回路の情報から各スキャンフリップフロップ間パスの遅延値を算出する。
【００５６】
ステップＳ３０２では、抽出した各スキャンフリップフロップ間パスの遅延値情報をカテゴリごとに分類する。
【００５７】
図８は、図５及び図６に示す各スキャンフリップフロップ間の遅延情報をカテゴリごとに分類した際の一例を示す図である。図８は、カテゴリ毎にスキャンフリップフロップ間パスごとのカテゴリ、各カテゴリに含まれるパス数、スキャンフリップフロップ間パス遅延値で構成されている。図５に示すスキャン用シフトレジスタ回路におけるスキャンフリップフロップ間パスの最大遅延値は、スキャンフリップフロップＳＦＦ０６とＳＦＦ０７の間の８．８ｎｓとなる。従って、カテゴリはカテゴリ８まで作成する。なお、図８では、各カテゴリについての遅延値を１．０ｎｓの範囲で区切り、カテゴリ０は０．０〜１．０ｎｓ、・・・、カテゴリ８は８．０〜９．０ｎｓとしている。但し、各カテゴリを区切る範囲は１．０ｎｓに限定する趣旨ではない。各カテゴリを区切る範囲（分解能）は、任意の値とすることができる。
【００５８】
カテゴリ毎に分類した各スキャンフリップフロップ間パスの遅延値情報は、スキャンシフト動作レート候補情報ファイルに出力される。
【００５９】
ステップＳ３０３では、スキャンフリップフロップの段数増加値と段数合計値の算出を行う。さらに、本ステップでは、各カテゴリから得られるスキャンシフト動作レートの候補値を抽出する。ここで、スキャンシフト動作レート候補値は、各カテゴリの下限値とする。具体的には、カテゴリ８のスキャンシフト動作レート候補値は８．０ｎｓ、カテゴリ７のスキャンシフト動作レート候補値は７．０ｎｓのように定める。
【００６０】
さらに、各スキャンシフト動作レート候補値を満たすように中継用フリップフロップを挿入すると仮定し、スキャンフリップフロップ間を区切ったときのスキャンフリップフロップ段数増加値を算出する。例えば、スキャンシフト動作レート候補値を６．０ｎｓと定める場合、カテゴリ８の８．２ｎｓと８．８ｎｓの２つのパスに１段ずつ中継用フリップフロップの追加が必要になる。さらに、カテゴリ６の６．５ｎｓのパスにも中継用フリップフロップを１段追加する必要があり、スキャンシフト動作レート候補値６．０ｎｓを満たすためには、合計３段の中継用フリップフロップの追加が必要となる。このような処理を、全てのスキャンシフト動作レート候補値に対して行う。
【００６１】
図９は、カテゴリ毎のスキャンシフト動作レート候補値の一例を示す図である。図９の横軸には、各カテゴリの各スキャンシフト動作レート候補値を満たすために必要な中継のフリップフロップの段数を示している。図９の縦軸には、カテゴリ、スキャンフリップフロップ段数増加値、スキャンフリップフロップ段数合計値、スキャンシフト時間、スキャンシフト時間短縮値、中継用フリップフロップ追加効果値、をそれぞれ示している。
【００６２】
本ステップでは、図９のスキャンフリップフロップ段数増加値を算出する。なお、算出されたスキャンフリップフロップ段数増加値は、スキャンシフト動作レート候補情報ファイルに出力される。また、本ステップでは、スキャンシフト動作レート候補値ごとのスキャンフリップフロップ段数増加値と当初からスキャン用シフトレジスタ回路に存在していたスキャンフリップフロップの段数を加算し、スキャンシフト動作レート候補値ごとのスキャンフリップフロップ段数合計値を算出する。図５に示すスキャン用シフトレジスタ回路には、当初、１２段のスキャンフリップフロップが存在していたため、カテゴリごとのスキャンフリップフロップ段数増加値に１２を加算して、スキャンフリップフロップ段数合計値を算出する。スキャンフリップフロップ段数合計値もスキャンシフト動作レート候補情報ファイルに出力される。
【００６３】
ステップＳ３０４では、各スキャンシフト動作レート候補値のスキャンシフト時間及び短縮値を算出する。本ステップでは、各スキャンシフト動作レート候補値と、対応するスキャンフリップフロップ段数合計値を乗算し、各スキャンシフト動作レート候補値のスキャンシフト時間を算出する。例えば、スキャンシフト動作レート候補値を５．０ｎｓとすると、対応するスキャンフリップフロップ段数合計値は１７であるから、スキャンシフト時間は８５ｎｓ（５．０×１７段＝８５ｎｓ）となる。このスキャンシフト時間は、スキャンシフト動作レート候補情報ファイルに出力される。
【００６４】
さらに、本ステップでは、既に生成されたスキャンシフト動作レート候補情報ファイルの内容に基づき、スキャンフリップフロップ間パスのタイミングを最適化する前（高速化前）のスキャンシフト動作レートから算出したスキャンシフト時間から、各スキャンシフト動作レート候補値に対応したスキャンシフト時間を減算し、各スキャンシフト時間短縮値を算出する。例えば、図９において、スキャンフリップフロップ間パスのタイミングを最適化する前のスキャンシフト動作レートは８．８ｎｓであって、スキャンフリップフロップ段数合計値は１２であるから、スキャンフリップフロップ間パスのタイミングを最適化前のスキャンシフト時間は、８．８×１２＝１０５．６ｎｓとなる。従って、スキャンシフト動作レート候補値が５．０ｎｓの時のスキャンシフト時間短縮値は、１０５．６−８５＝２０．６ｎｓと計算できる。このような計算をカテゴリごとに行う。スキャンシフト時間短縮値についても、スキャンシフト動作レート候補情報ファイルに出力される。
【００６５】
ステップＳ３０５では、中継用フリップフロップ追加効果値の算出及びスキャンシフト動作レートの選択を行う。本ステップでは、スキャンシフト時間短縮値を各スキャンシフト動作レート候補値のスキャンフリップフロップ段数増加値で除算し、中継用フリップフロップを１段追加したときのスキャンシフト時間短縮値を中継用フリップフロップ追加効果値として算出する。例えば、スキャンシフト動作レート候補値が５．０ｎｓのときの中継用フリップフロップ追加効果値は、４．１ｎｓ（２０．６÷５＝４．１）となる。
【００６６】
なお、中継用フリップフロップ追加効果値が負の値となる場合は、スキャンシフト動作レートは高速化できるが、スキャンシフト時間が増加することを意味する。従って、中継用フリップフロップ追加効果値が負の値となるスキャンシフト動作レート候補値は採用しない。
【００６７】
同様に、中継用フリップフロップ追加効果値を全てのスキャンシフト動作レート候補値に対して算出する。この中継用フリップフロップ追加効果値もスキャンシフト動作レート候補情報ファイルに出力される。さらに、本ステップでは、算出された中継用フリップフロップ追加効果値が最も高いスキャンシフト動作レート候補値をスキャンシフト動作レートとして選択する。
【００６８】
図９においては、スキャンシフト動作レート候補値が６．０ｎｓのときに、中継用フリップフロップ追加効果値が最大となる（５．２ｎｓ）。このときのスキャンテスト時間は、３段の中継用フリップフロップの追加で１５．６ｎｓに相当する時間、高速化される。従って、スキャンシフト動作レート候補値として６．０ｎｓが、実際にスキャンテストを行うスキャンシフト動作レートとして選択される。
【００６９】
選択したスキャンシフト動作レートはＥＣＯ情報ファイルに出力される。より具体的には、本ステップで得られたスキャンシフト動作レート（６．０ｎｓ）を満たすようにスキャンフリップフロップ間パスに中継用フリップフロップを追加するために必要な中継用フリップフロップの接続情報、中継用フリップフロップ追加後のスキャンシフト動作レート情報を含むファイルがＥＣＯ情報ファイルとして出力される。
【００７０】
図１０は、ＥＣＯ情報ファイルの書式の一例を示す図である。図１０に示すように、ＥＣＯ情報ファイルには、新たに追加する中継用フリップフロップのインスタンス名、セル名、接続情報と、中継用フリップフロップ追加後のスキャンシフト動作レート情報が含まれている。これらの情報は、中継用フリップフロップを追加する際に使用される。なお、ＥＣＯ情報ファイルに出力されるスキャンシフト動作レート情報は、スキャンシフト動作レート候補値の６．０ｎｓとしても良いが、図９に示すスキャンフリップフロップ間パスの遅延情報を参照して、６．０ｎｓ以下のスキャンフリップフロップ間パス遅延値のうち最大の５．９ｎｓとしても良い。
【００７１】
ステップＳ３０６では、ステップＳ３０５で出力されたＥＣＯ情報ファイルに従って、半導体集積回路の配置配線装置を利用しつつ、中継用フリップフロップをスキャン用シフトレジスタ回路に追加する。その後、スキャンテスト時間の高速化を行ったレイアウトデータが出力される。また、中継用フリップフロップ追加後のスキャンシフト動作レートは、後工程のＳＴＡ（Ｓｔａｔｉｃ  Ｔｉｍｉｎｇ  Ａｎａｌｙｓｉｓ）解析において、タイミング制約を作成するために必要な情報として使用される。
【００７２】
図１１は、図５に示すスキャン用シフトレジスタ回路に対して、中継用フリップフロップを追加した結線の一例を示す図である。図１１に示すスキャン用シフトレジスタ回路は、図５に示すスキャン用シフトレジスタ回路の構成に対し、中継用フリップフロップＰＦＦ０１〜ＰＦＦ０３を追加している。図１２は、各スキャンフリップフロップ間の遅延値をまとめた図である。
【００７３】
図１１においては、スキャン用シフトレジスタ回路を構成しているスキャンフリップフロップＳＦＦ０１〜ＳＦＦ１２のうち、スキャンフリップフロップＳＦＦ０６とＳＦＦ０７の間、スキャンフリップフロップＳＦＦ０７とＳＦＦ０８の間、スキャンフリップフロップＳＦＦ０９とＳＦＦ１０の間のパスに、それぞれ１段ずつ中継用フリップフロップＰＦＦ０１〜ＰＦＦ０３が追加されている。その結果、各中継用フリップフロップＰＦＦ０１〜ＰＦＦ０３の前後のスキャンフリップフロップ間の遅延値を縮小できる。
【００７４】
以上のとおり、本実施形態に係る半導体設計装置１は各スキャンフリップフロップ間の遅延値を抽出すると共に、各スキャンフリップフロップ間の遅延値を任意の分解能でカテゴリに分類する。さらに、各カテゴリの代表遅延値（例えば、下限値）を使用して、目標となるスキャンシフト動作レート候補値を抽出し、スキャンシフト動作レートの候補値を満たすように中継用フリップフロップを挿入すると仮定してスキャンフリップフロップ間を区切ったときに増加するスキャンフリップフロップの段数を算出する。その後、増加するスキャンフリップフロップの段数に基づいて算出したスキャンシフト時間と、当初のスキャンシフト時間と、を比較してスキャンシフト時間短縮値を算出する。さらに、中継用フリップフロップを１段追加したときのスキャンシフト時間短縮値を中継用フリップフロップ追加効果値として算出する。
【００７５】
この中継用フリップフロップ追加効果値が最も大きくなるスキャンシフト動作レートを選択し、スキャンシフト動作レートを満たすようにスキャンフリップフロップ間に中継用フリップフロップを追加することで、スキャンシフト動作レートの高速化とスキャンフリップフロップの段数増加の得失を考慮した（トレードオフ関係を加味した）スキャンシフト動作レートを求めることができる。
【００７６】
また、高速化とスキャンフリップフロップの段数増加の得失を考慮して、スキャンシフト動作レートを満たすようにスキャンフリップフロップ間に中継用フリップフロップを追加することで、半導体集積回路のコスト及び基板面積の増加を抑制することができる。
【００７７】
なお、引用した上記の特許文献等の各開示は、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素の多様な組み合わせないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【符号の説明】
【００７８】
１  半導体設計装置
１０  制御部
１１  設計ツール
２０  メモリ
３０  記憶部
４０  操作部
５０  表示部
６０  回路機能ブロック群
ＰＦＦ０１〜ＰＦＦ０３  中継用フリップフロップ
ＳＦＦ０１〜ＳＦＦ１２  スキャンフリップフロップ
【図１】
2013073487.tif 000003
【図２】
2013073487.tif 000004
【図３】
2013073487.tif 000005
【図４】
2013073487.tif 000006
【図５】
2013073487.tif 000007
【図６】
2013073487.tif 000008
【図７】
2013073487.tif 000009
【図８】
2013073487.tif 000010
【図９】
2013073487.tif 000011
【図１０】
2013073487.tif 000012
【図１１】
2013073487.tif 000013
【図１２】
2013073487.tif 000014