(57)【要約】【課題】従来に比べて検証期間を短縮できる半導体集積回路設計方法を提供すること。【解決手段】処理（ＳＴ１）では、半導体集積回路の設計仕様３１に対してハードウェア記述言語を用いてＲＴＬ（Ｒｅｇｉｓｔｏｒ  Ｔｒａｎｓｆｅｒ  Ｌｅｖｅｌ）で記述され、複数のレジスタを表すＲＴＬデータ３２を生成する。処理（ＳＴ２）では、検証用のデータの事象３４に従って、ＲＴＬデータ３２における複数のレジスタのうちのスキャン対象レジスタ群と、端子情報３５（ＳＩ、ＳＯ、ＭＤ）とを用いて、シフトレジスタ構成（ＳＩ、ＳＯ、ＭＤ）となるようにスキャン対象レジスタ群が接続された仮想スキャンチェーンを生成する。処理（ＳＴ３）では、検証用のテストパターン３３及び事象３４に従って、仮想スキャンチェーンに対するシミュレーションを実行する。その実行結果に問題がある場合（ＳＴ４−ＮＧ）、処理（ＳＴ１）を再度実行する。【選択図】図３
2011198303.tif 000002
【特許請求の範囲】
【請求項１】
制御部を備えたコンピュータが実行する方法であって、
前記制御部が、半導体集積回路の設計仕様に対して、ハードウェア記述言語を用いてＲＴＬ（Ｒｅｇｉｓｔｏｒ  Ｔｒａｎｓｆｅｒ  Ｌｅｖｅｌ）で記述され、クロックに同期して動作する複数のレジスタを表すＲＴＬデータを生成する工程と、
前記制御部が、検証用のデータの事象に従って、前記ＲＴＬデータが表す前記複数のレジスタのうちの、スキャンチェーンに必要なレジスタ群であるスキャン対象レジスタ群と、入力データ、出力データ、モード信号がそれぞれ供給される端子を表す端子情報とを用いて、前記モード信号の切り替えに応じて前記入力データを入力し、前記出力データを出力するためのシフトレジスタ構成となるように前記スキャン対象レジスタ群が接続された仮想スキャンチェーンを生成する工程と、
前記制御部が、検証用のテストパターン及び前記事象に従って、前記仮想スキャンチェーンに対するシミュレーションを実行する工程と、
前記仮想スキャンチェーンに対するシミュレーションの実行結果に問題がある場合、前記制御部が、前記ＲＴＬデータを生成する工程を再度実行する工程と
を具備する半導体集積回路設計方法。
【請求項２】
前記仮想スキャンチェーンに対するシミュレーションの実行結果に問題がない場合、前記制御部が、前記ＲＴＬデータに対して論理合成を行い、前記複数のレジスタと前記論理回路とをゲートの接続で表現されたゲートレベルネットリストを生成する工程と、
前記制御部が、前記ゲートレベルネットリストに対してＤＦＴ（Ｄｅｓｉｇｎ  Ｆｏｒ  Ｔｅｓｔａｂｉｌｉｔｙ）合成を行い、前記モード信号の切り替えに応じて前記入力データを入力し、前記出力データを出力するためのシフトレジスタ構成である前記スキャンチェーンを生成する工程と、
前記制御部が、前記テストパターン及び前記事象に従って、前記スキャンチェーンに対するシミュレーションを実行する工程と、
前記スキャンチェーンに対するシミュレーションの実行結果に問題がある場合、前記制御部が、前記ゲートレベルネットリストを生成する工程を再度実行する工程と
を更に具備する請求項１に記載の半導体集積回路設計方法。
【請求項３】
前記仮想スキャンチェーンを生成する工程は、
前記制御部が、前記ＲＴＬデータが表す前記複数のレジスタから、前記事象に関連する対象レジスタ群を抽出し、前記事象関連レジスタ群を表すレジスタリストを生成する工程と、
前記制御部が、前記レジスタリストの中から、前記スキャンチェーンに必要なレジスタ群を前記スキャン対象レジスタ群として抽出し、前記スキャン対象レジスタ群を表すスキャン対象レジスタリストを生成する工程と、
前記制御部が、前記ＲＴＬデータと前記スキャン対象レジスタリストと前記端子情報とを用いて前記仮想スキャンチェーンを生成する工程と
を含む請求項１又は２に記載の半導体集積回路設計方法。
【請求項４】
前記ＲＴＬデータと前記スキャン対象レジスタリストと前記端子情報とを用いて前記仮想スキャンチェーンを生成する工程は、
前記制御部が、前記ＲＴＬデータと、前記端子情報が表す端子とに基づいて、前記スキャン対象レジスタリストが表す前記スキャン対象レジスタ群に入出力される前記データが前記クロックに応じて変化するレジスタ変化条件を抽出し、前記レジスタ変化条件を表すレジスタ変化条件リストを生成する工程と、
前記制御部が、前記レジスタ変化条件リストに従って、前記モード信号の論理値が第１の論理値であるときに前記スキャン対象レジスタ群の前記データを変化させ、前記モード信号の論理値が第２の論理値であるときに前記スキャン対象レジスタ群の前記データを変化させないことを表す判定文を、前記ＲＴＬデータに追記し、その旨を表すスキャンシフト時動作停止ネットリストを生成する工程と、
前記制御部が、前記スキャンシフト時動作停止ネットリストに従って、前記スキャン対象レジスタ群の配列を指定するシフト動作用レジスタ配列情報を生成する工程と、
前記制御部が、前記シフト動作用レジスタ配列情報に従って、前記モード信号の論理値が第２の論理値であるときに、前記入力データを入力し、前記出力データを出力するためのシフト動作を指定する前記仮想スキャンチェーンを生成する工程と
を含む請求項３に記載の半導体集積回路設計方法。
【請求項５】
前記事象は、電源が遮断されたときに前記データが退避・回復されることを表す電源遮断情報を含み、
前記電源遮断情報において、前記モード信号、前記出力データ、前記入力データは、それぞれ、前記電源が遮断されたときに前記データを退避・回復するためのバックアップモード信号、前記データを退避するときの退避データ、前記データを回復するときの回復データを表す
請求項１〜４のいずれかに記載の半導体集積回路設計方法。
【請求項６】
半導体集積回路の設計仕様に対して、ハードウェア記述言語を用いてＲＴＬ（Ｒｅｇｉｓｔｏｒ  Ｔｒａｎｓｆｅｒ  Ｌｅｖｅｌ）で記述され、クロックに同期して動作する複数のレジスタを表すＲＴＬデータを生成するＲＴＬデータ生成部と、
検証用のデータの事象に従って、前記ＲＴＬデータが表す前記複数のレジスタのうちの、スキャンチェーンに必要なレジスタ群であるスキャン対象レジスタ群と、入力データ、出力データ、モード信号がそれぞれ供給される端子を表す端子情報とを用いて、前記モード信号の切り替えに応じて前記入力データを入力し、前記出力データを出力するためのシフトレジスタ構成となるように前記スキャン対象レジスタ群が接続された仮想スキャンチェーンを生成する仮想スキャンチェーン生成部と、
検証用のテストパターン及び前記事象に従って、前記仮想スキャンチェーンに対するシミュレーションを実行するシミュレーション実行部と
を具備し、
前記仮想スキャンチェーンに対するシミュレーションの実行結果に問題がある場合、再度、前記ＲＴＬデータ生成部は前記ＲＴＬデータを生成する処理を実行する
半導体集積回路設計装置。
【請求項７】
前記仮想スキャンチェーンに対するシミュレーションの実行結果に問題がない場合、前記ＲＴＬデータに対して論理合成を行い、前記複数のレジスタと前記論理回路とをゲートの接続で表現されたゲートレベルネットリストを生成するゲートレベルネットリスト生成部と、
前記ゲートレベルネットリストに対してＤＦＴ（Ｄｅｓｉｇｎ  Ｆｏｒ  Ｔｅｓｔａｂｉｌｉｔｙ）合成を行い、前記モード信号の切り替えに応じて前記入力データを入力し、前記出力データを出力するためのシフトレジスタ構成である前記スキャンチェーンを生成するスキャンチェーン生成部と
を具備し、
前記シミュレーション実行部は、前記テストパターン及び前記事象に従って、前記スキャンチェーンに対するシミュレーションを実行し、
前記スキャンチェーンに対するシミュレーションの実行結果に問題がある場合、再度、前記ゲートレベルネットリスト生成部は前記ゲートレベルネットリストを生成する処理を実行する
請求項６に記載の半導体集積回路設計装置。
【請求項８】
前記仮想スキャンチェーン生成部は、
前記ＲＴＬデータが表す前記複数のレジスタから、前記事象に関連する対象レジスタ群を抽出し、前記事象関連レジスタ群を表すレジスタリストを生成し、
前記レジスタリストの中から、前記スキャンチェーンに必要なレジスタ群を前記スキャン対象レジスタ群として抽出し、前記スキャン対象レジスタ群を表すスキャン対象レジスタリストを生成し、
前記ＲＴＬデータと前記スキャン対象レジスタリストと前記端子情報とを用いて前記仮想スキャンチェーンを生成する
請求項６又は７に記載の半導体集積回路設計装置。
【請求項９】
前記仮想スキャンチェーン生成部は、
前記ＲＴＬデータと、前記端子情報が表す端子とに基づいて、前記スキャン対象レジスタリストが表す前記スキャン対象レジスタ群に入出力される前記データが前記クロックに応じて変化するレジスタ変化条件を抽出し、前記レジスタ変化条件を表すレジスタ変化条件リストを生成し、
前記レジスタ変化条件リストに従って、前記モード信号の論理値が第１の論理値であるときに前記スキャン対象レジスタ群の前記データを変化させ、前記モード信号の論理値が第２の論理値であるときに前記スキャン対象レジスタ群の前記データを変化させないことを表す判定文を、前記ＲＴＬデータに追記し、その旨を表すスキャンシフト時動作停止ネットリストを生成し、
前記スキャンシフト時動作停止ネットリストに従って、前記スキャン対象レジスタ群の配列を指定するシフト動作用レジスタ配列情報を生成し、
前記シフト動作用レジスタ配列情報に従って、前記モード信号の論理値が第２の論理値であるときに、前記入力データを入力し、前記出力データを出力するためのシフト動作を指定する前記仮想スキャンチェーンを生成する
請求項８に記載の半導体集積回路設計装置。
【請求項１０】
前記事象は、電源が遮断されたときに前記データが退避・回復されることを表す電源遮断情報を含み、
前記電源遮断情報において、前記モード信号、前記出力データ、前記入力データは、それぞれ、前記電源が遮断されたときに前記データを退避・回復するためのバックアップモード信号、前記データを退避するときの退避データ、前記データを回復するときの回復データを表す
請求項６〜９のいずれかに記載の半導体集積回路設計装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スキャンチェーンを生成して半導体集積回路の故障を検出するためのテストを行う半導体集積回路設計方法に関する。
【背景技術】
【０００２】
一般的な半導体集積回路設計方法がｈｔｔｐ：／／ｗｗｗ．ｃｑｐｕｂ．ｃｏ．ｊｐ／ｄｗｍ／ｃｏｎｔｅｎｔｓ／０１０７／ｄｗｍ０１０７００８３０．ｐｄｆに記載されている。図１は、一般的な半導体集積回路設計方法を示すフローチャートである。
【０００３】
（ＳＴ１０１；ＲＴＬ設計処理）
半導体集積回路の設計仕様に対してＲＴＬ（Ｒｅｇｉｓｔｏｒ  Ｔｒａｎｓｆｅｒ  Ｌｅｖｅｌ）、ハードウェア記述言語を用いてＲＴＬ（Ｒｅｇｉｓｔｏｒ  Ｔｒａｎｓｆｅｒ  Ｌｅｖｅｌ）で記述されたＲＴＬデータを生成する。ＲＴＬデータ３２は、クロックに同期して動作する複数のレジスタと、複数のレジスタの各々に接続される論理回路と、それらの間のデータ転送とを表している。
【０００４】
（ＳＴ１０２；ＲＴＬ機能検証処理）
次に、検証用のテストパターン及び検証用のデータの事象に従って、ＲＴＬデータに対するシミュレーションを実行する。
【０００５】
ＲＴＬデータに対するシミュレーションの実行結果に問題がある場合（ＳＴ１０３−ＮＧ）、ＲＴＬ設計処理（ＳＴ１０１）を再度実行する。
【０００６】
（ＳＴ１０４；論理合成処理）
ＲＴＬデータに対するシミュレーションの実行結果に問題がない場合（ＳＴ１０３−ＹＥＳ）、ＲＴＬデータに対して論理合成を行い、複数のレジスタと論理回路とをゲートの接続で表現されたゲートレベルネットリストを生成する。
【０００７】
（ＳＴ１０５；ＤＦＴ合成処理）
ゲートレベルネットリストに対してＤＦＴ（Ｄｅｓｉｇｎ  Ｆｏｒ  Ｔｅｓｔａｂｉｌｉｔｙ）合成を行い、半導体集積回路の故障を検出するためのテストを容易化する回路であるスキャンチェーンを生成する。
【０００８】
（ＳＴ１０６；ゲート検証処理）
テストパターン及び事象に従って、スキャンチェーンに対するシミュレーションを実行する。
【０００９】
スキャンチェーンに対するシミュレーションの実行結果に問題がある場合（ＳＴ１０７−ＮＧ）、ＲＴＬ設計処理（ＳＴ１０１）を再度実行する。
【００１０】
スキャンチェーンに対するシミュレーションの実行結果に問題がない場合（ＳＴ１０７−ＹＥＳ）、検証終了する。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２００８−２５１０１３号公報
【非特許文献】
【００１２】
【非特許文献１】ｈｔｔｐ：／／ｗｗｗ．ｃｑｐｕｂ．ｃｏ．ｊｐ／ｄｗｍ／ｃｏｎｔｅｎｔｓ／０１０７／ｄｗｍ０１０７００８３０．ｐｄｆ  （Ｄｅｓｉｇｎ  Ｗａｖｅ  Ｍａｇａｚｉｎｅ  ２００６  Ｏｃｔｏｂｅｒ  記事より）
【発明の概要】
【発明が解決しようとする課題】
【００１３】
従来の半導体集積回路設計方法では、スキャンチェーンはＤＦＴ合成処理（ＳＴ１０５）で生成される。このため、ゲート検証処理（ＳＴ１０６）でスキャンチェーンによる検証を行ったときに、その検証結果に問題がある場合（ＳＴ１０７−ＮＧ）、即ち、半導体集積回路に不具合が発見された場合、ＲＴＬ設計処理（ＳＴ１０１）まで戻って機能修正を行う必要がある。その結果、ゲート検証処理（ＳＴ１０６）でスキャンチェーンによる検証を行うまでに、ＲＴＬ機能検証処理（ＳＴ１０２）、論理合成処理（ＳＴ１０４）、ＤＦＴ合成処理（ＳＴ１０５）、ゲート検証処理（ＳＴ１０６）を行う必要があるため、検証期間が延びてしまうという問題がある。
【課題を解決するための手段】
【００１４】
以下に、発明を実施するための形態で使用される符号を括弧付きで用いて、課題を解決するための手段を記載する。この符号は、特許請求の範囲の記載と発明を実施するための形態の記載との対応を明らかにするために付加されたものであり、特許請求の範囲に記載されている発明の技術的範囲の解釈に用いてはならない。
【００１５】
本発明の半導体集積回路設計方法では、工程としてＲＴＬ設計処理（ＳＴ１）、仮想スキャンチェーン生成処理（ＳＴ２）、ＲＴＬ機能検証処理（ＳＴ３）をコンピュータ（１０）が実行する。コンピュータ（１０）は、コンピュータプログラム（１３）が格納された記憶部（１２）と、コンピュータプログラムを実行する制御部（１１）とを備えている。ＲＴＬ設計処理（ＳＴ１）では、制御部（１１）が、半導体集積回路の設計仕様（３１）に対して、ハードウェア記述言語を用いてＲＴＬ（Ｒｅｇｉｓｔｏｒ  Ｔｒａｎｓｆｅｒ  Ｌｅｖｅｌ）で記述され、クロックに同期して動作する複数のレジスタを表すＲＴＬデータ（３２）を生成する。仮想スキャンチェーン生成処理（ＳＴ２）では、制御部（１１）が、検証用のデータの事象（３４）に従って、ＲＴＬデータ（３２）が表す複数のレジスタのうちの、スキャンチェーンに必要なレジスタ群であるスキャン対象レジスタ群と、入力データ（ＳＩ）、出力データ（ＳＯ）、モード信号（ＭＤ）がそれぞれ供給される端子を表す端子情報（３５）とを用いて、モード信号（ＭＤ）の切り替えに応じて入力データ（ＳＩ）を入力し、出力データ（ＳＯ）を出力するためのシフトレジスタ構成となるようにスキャン対象レジスタ群が接続された仮想スキャンチェーン（４３）を生成する。ＲＴＬ機能検証処理（ＳＴ３）では、制御部（１１）が、検証用のテストパターン（３３）及び事象（３４）に従って、仮想スキャンチェーンに対するシミュレーションを実行する。仮想スキャンチェーン（４３）に対するシミュレーションの実行結果に問題がある場合（ＳＴ４−ＮＧ）、制御部（１１）がＲＴＬ設計処理（ＳＴ１）を再度実行する。
【発明の効果】
【００１６】
本発明の半導体集積回路設計方法によれば、スキャンチェーンは、ＲＴＬ機能検証処理（ＳＴ３）の前に、仮想スキャンチェーン（４３）として仮想スキャンチェーン生成処理（ＳＴ２）で生成される。このため、ＲＴＬ機能検証処理（ＳＴ３）でスキャンチェーンによる検証を行うことができる。その結果、ＲＴＬ機能検証処理（ＳＴ３）でスキャンチェーンによる検証を行ったときに、その検証結果に問題がある場合（ＳＴ４−ＮＧ）、即ち、半導体集積回路に不具合が発見された場合、ＲＴＬ設計処理（ＳＴ１）まで戻って機能修正を行うため、従来の半導体集積回路設計方法に比べて検証期間を短縮できる。
【００１７】
具体的には、従来の半導体集積回路設計方法では、スキャンチェーンはＤＦＴ合成処理（ＳＴ１０５）で生成されるため、ゲート検証処理（ＳＴ１０６）でスキャンチェーンによる検証を行ったときに、半導体集積回路に不具合が発見された場合（ＳＴ１０７−ＮＧ）、ＲＴＬ設計処理（ＳＴ１０１）まで戻って機能修正を行う必要がある。一方。本発明の半導体集積回路設計方法によれば、スキャンチェーンは、まず、ＲＴＬ機能検証処理（ＳＴ３）の前に、仮想スキャンチェーン（４３）として仮想スキャンチェーン生成処理（ＳＴ２）で生成されるため、ＲＴＬ機能検証処理（ＳＴ３）でスキャンチェーンによる検証を行ったときに、半導体集積回路に不具合が発見された場合（ＳＴ４−ＮＧ）、ＲＴＬ設計処理（ＳＴ１０１）に戻って機能修正を行う。このため、従来の半導体集積回路設計方法に比べて検証期間を短縮できる。
【図面の簡単な説明】
【００１８】
【図１】図１は、一般的な半導体集積回路設計方法を示すフローチャートである。
【図２】図２は、本発明の実施形態による半導体集積回路設計方法に適用されるコンピュータ１０の構成を示すブロック図である。
【図３】図３は、本発明の実施形態による半導体集積回路設計方法を示すフローチャートである。
【図４】図４は、図３の仮想スキャンチェーン生成処理（ＳＴ２）を示すフローチャートである。
【図５】図５は、図４のＳＴ１３を示すフローチャートである。
【図６】図６は、図５のＳＴ２１において、ＲＴＬデータ３２の一部を示している。
【図７】図７は、図５のＳＴ２１において、ＲＴＬデータ３２に対するレジスタ変化条件の一例を示している。
【図８Ａ】図８Ａは、図５のＳＴ２１を示すフローチャートである。
【図８Ｂ】図８Ｂは、図５のＳＴ２１を示すフローチャートである。
【図９】図９は、図５のＳＴ２２において、ＲＴＬデータ３２に追記される判定文の一例を示している。
【図１０】図１０は、図５のＳＴ２３において、ＲＴＬデータ３２に対するシフト動作用レジスタ配列情報５３の一例を示している。
【図１１】図１１は、図５のＳＴ２４において、ＲＴＬデータ３２に対する仮想スキャンチェーン４３の一例を示している。
【発明を実施するための形態】
【００１９】
以下に添付図面を参照して、本発明の実施形態による半導体集積回路設計方法について詳細に説明する。
【００２０】
図２は、本発明の実施形態による半導体集積回路設計方法に適用されるコンピュータ１０の構成を示すブロック図である。そのコンピュータ１０は、制御部１１と、記憶部１２と、表示部を具備している。
【００２１】
制御部１１としては、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）が例示され、記憶部１２としては、記録媒体であるメモリが例示される。記憶部１２には、コンピュータに実行させるためのコンピュータプログラム１３が記憶されている。制御部１１は、起動時などに記憶部１２からコンピュータプログラム１３を読み取って実行し、その実行結果を表示部に表示する。
【００２２】
記憶部１２は、ネットワークを介して端末に接続されたワークステーションに設けられ、制御部１１と表示部は端末に設けられていてもよい。この場合、ワークステーションの記憶部１２にソフトウェアとしてコンピュータプログラム１３がインストールされ、端末の制御部１１は、ワークステーションの記憶部１２からソフトウェアを読み取って実行し、その実行結果を表示部に表示する。
【００２３】
制御部１１は、ＲＴＬデータ生成部２１と、仮想スキャンチェーン生成部２２と、シミュレーション実行部２３と、ゲートレベルネットリスト生成部２４と、スキャンチェーン生成部２５とを備えている。
【００２４】
図３は、本発明の実施形態による半導体集積回路設計方法を示すフローチャートである。
【００２５】
制御部１１は、後述の動作により、スキャンチェーンを生成する。ここで、スキャンチェーンとは、半導体集積回路の故障を検出するためのテストを容易化する回路である。
【００２６】
また、制御部１１には、検証用のテストパターン３３と、検証用のデータの事象３４と、端子情報３５とが与えられる。事象３４とは、電源が遮断されたときにデータが退避・回復されることを表す電源遮断情報を含んでいる。以降、事象３４を電源遮断情報３４と称する。端子情報３５は、入力データＳＩ、出力データＳＯ、モード信号ＭＤがそれぞれ供給される端子を表している。
【００２７】
事象３４は、特開２００８−２５１０１３号公報に記載されている電源遮断情報として、電源が遮断されたときにデータを退避・回復するためのバックアップモード信号ＭＤと、データを退避するときの退避データＴＯと、データを回復するときの回復データＴＩとを含んでいるものとする。以降、事象３４を電源遮断情報３４と称する。この場合、端子情報３５におけるモード信号ＭＤ、出力データＳＯ、入力データＳＩは、それぞれ、バックアップモード信号ＭＤ、退避データＴＯ、回復データＴＩを表している。
【００２８】
（ＳＴ１；ＲＴＬ設計処理）
ＲＴＬデータ生成部２１は、半導体集積回路の設計仕様３１に対して、ハードウェア記述言語を用いてＲＴＬ（Ｒｅｇｉｓｔｏｒ  Ｔｒａｎｓｆｅｒ  Ｌｅｖｅｌ）で記述されたＲＴＬデータ３２を生成する。ＲＴＬデータ３２は、クロックに同期して動作する複数のレジスタと、複数のレジスタの各々に接続される論理回路と、それらの間のデータ転送とを表している。
【００２９】
（ＳＴ２；仮想スキャンチェーン生成処理）
仮想スキャンチェーン生成部２２は、電源遮断情報３４に従って、ＲＴＬデータ３２が表す複数のレジスタのうちの、スキャンチェーンに必要なレジスタ群であるスキャン対象レジスタ群と、端子情報３５とを用いて、モード信号ＭＤの切り替えに応じて入力データＳＩを入力し、出力データＳＯを出力するためのシフトレジスタ構成となるようにスキャン対象レジスタ群が接続された仮想スキャンチェーンを生成する。
【００３０】
（ＳＴ３；ＲＴＬ機能検証処理）
シミュレーション実行部２３は、検証用のテストパターン３３及び電源遮断情報３４に従って、仮想スキャンチェーンに対するシミュレーションを実行する。
【００３１】
仮想スキャンチェーンに対するシミュレーションの実行結果に問題がある場合（ＳＴ４−ＮＧ）、ＲＴＬデータ生成部２１は、ＲＴＬ設計処理（ＳＴ１）を再度実行する。
【００３２】
（ＳＴ５；論理合成処理）
仮想スキャンチェーンに対するシミュレーションの実行結果に問題がない場合（ＳＴ４−ＹＥＳ）、ゲートレベルネットリスト生成部２４は、ＲＴＬデータ３２に対して論理合成を行い、複数のレジスタと論理回路とをゲートの接続で表現されたゲートレベルネットリスト３６を生成する。
【００３３】
（ＳＴ６；ＤＦＴ合成処理）
スキャンチェーン生成部２５は、ゲートレベルネットリスト３６に対してＤＦＴ（Ｄｅｓｉｇｎ  Ｆｏｒ  Ｔｅｓｔａｂｉｌｉｔｙ）合成を行い、モード信号ＭＤの切り替えに応じて入力データＳＩを入力し、出力データＳＯを出力するためのシフトレジスタ構成であるスキャンチェーンを生成する。
【００３４】
（ＳＴ７；ゲート検証処理）
シミュレーション実行部２３は、テストパターン３３及び電源遮断情報３４に従って、スキャンチェーンに対するシミュレーションを実行する。
【００３５】
スキャンチェーンに対するシミュレーションの実行結果に問題がある場合（ＳＴ８−ＮＧ）、ゲートレベルネットリスト生成部２４は、論理合成処理（ＳＴ５）を再度実行する。
【００３６】
スキャンチェーンに対するシミュレーションの実行結果に問題がない場合（ＳＴ８−ＹＥＳ）、制御部１１は検証終了する。
【００３７】
図４は、図３の仮想スキャンチェーン生成処理（ＳＴ２）を示すフローチャートである。
【００３８】
（ＳＴ１１）
仮想スキャンチェーン生成部２２は、ＲＴＬデータ３２が表す複数のレジスタから、電源遮断情報３４に関連する対象レジスタ群を抽出し、事象関連レジスタ群を表すレジスタリスト４１を生成する。
【００３９】
（ＳＴ１３）
レジスタリスト４１の中に、スキャンチェーンに不要なレジスタが存在する場合（ＳＴ１２−Ｙｅｓ）、仮想スキャンチェーン生成部２２は、レジスタリスト４１が表す事象関連レジスタ群の中から、不要なレジスタ以外のレジスタ（スキャンチェーンに必要なレジスタ群）をスキャン対象レジスタ群として抽出し、スキャン対象レジスタ群を表すスキャン対象レジスタリスト４２を生成する。
【００４０】
（ＳＴ１４）
次に、仮想スキャンチェーン生成部２２は、ＲＴＬデータ３２とスキャン対象レジスタリスト４２と端子情報３５とを用いて仮想スキャンチェーン４３を生成する。
【００４１】
一方、レジスタリスト４１の中に、スキャンチェーンに不要なレジスタが存在しない場合（ＳＴ１２−Ｎｏ）、ＳＴ１４において、仮想スキャンチェーン生成部２２は、ＲＴＬデータ３２とレジスタリスト４１と端子情報３５とを用いて仮想スキャンチェーン４３を生成する。
【００４２】
図５は、図４のＳＴ１４を示すフローチャートである。
【００４３】
仮想スキャンチェーン生成部２２は、ＲＴＬデータ３２と、端子情報３５が表す端子とに基づいて、スキャン対象レジスタリスト４２が表すスキャン対象レジスタ群に入出力されるデータがクロックに応じて変化するレジスタ変化条件を抽出し、そのレジスタ変化条件を表すレジスタ変化条件リスト５１を生成する（ＳＴ２１）。
【００４４】
例えば、ＲＴＬデータ３２の一部が図６に示されるような内容である場合、レジスタ変化条件は、図７に示されるように、ｆｄａｔａ＝１、ｓｈｉｆｔ＿ｆｕｎｃ＝１、ｃｎｔ＿ｅｎａｂｌｅ＝１のいずれかのときにクロックがレジスタに入力されるとそのレジスタの状態が変化する。
【００４５】
図８Ａ、８Ｂは、図５のＳＴ２１を示すフローチャートである。
【００４６】
レジスタ変化条件の抽出は、モジュール毎に行うこととする。
【００４７】
ａｌｗａｙｓ文は、信号が変化した場合の動作を記述しており、レジスタのデータ変化はａｌｗａｙｓ文により記述されている。このため、まず、ＲＴＬの記述内容をモジュールの先頭から確認して、ａｌｗａｙｓ文を見つける（ＳＴ３１）。
【００４８】
ａｌｗａｙｓ文を見つけたら、次にａｌｗａｙｓ文の範囲内にスキャン対象のレジスタが含まれているか否かの確認を行い（ＳＴ３２）、スキャン対象のレジスタが含まれていた場合（ＳＴ３２−Ｙｅｓ）、続いて、そのレジスタに用いられるクロックの抽出を行う（ＳＴ３３）。
【００４９】
次に、ａｌｗａｙｓ文の実行要因を確認する（ＳＴ３４）。
【００５０】
ａｌｗａｙｓ文の実行要因にクロックが含まれていた場合（ＳＴ３５−Ｙｅｓ）、ａｌｗａｙｓ文中でスキャン対象レジスタ毎の変化条件の抽出を行う（ＳＴ３６−Ｙｅｓ、ＳＴ４１）（ＳＴ３６−Ｎｏ、ＳＴ３７〜ＳＴ４０）。
【００５１】
ＳＴ３６−Ｎｏ、ＳＴ３７〜ＳＴ４０において、ａｌｗａｙｓ文の実行要因にリセットなどクロック以外の条件が含まれており（ＳＴ３６−Ｎｏ）、かつｉｆ文にて、クロック以外のａｌｗａｙｓ文の実行要因で判定されていた場合（ＳＴ３７、ＳＴ３８−Ｙｅｓ）、クロックによる変化要因ではないため、レジスタ変化条件の抽出対象外となる。ａｌｗａｙｓ文の範囲内で順次判定文とその判定条件を確認することにより（ＳＴ３７、ＳＴ３８−Ｎｏ）、レジスタの変化条件の抽出を行うことができる（ＳＴ３９）。以降、モジュールの最後まで順次確認することで（ＳＴ４０−Ｎｏ）、モジュールに含まれるスキャン対象のレジスタ並びにレジスタのクロック入力による変化条件の抽出が完了する（ＳＴ３７〜ＳＴ４０）。
【００５２】
スキャン対象のモジュールが複数ある場合（ＳＴ３２−Ｎｏ、ＳＴ４２−Ｙｅｓ）（ＳＴ３５−Ｎｏ、ＳＴ４２−Ｙｅｓ）（ＳＴ４１、ＳＴ４２−Ｙｅｓ）（ＳＴ４０−Ｙｅｓ、ＳＴ４２−Ｙｅｓ）、スキャン対象のモジュールすべてについてスキャン対象のレジスタ並びにレジスタのクロック入力による変化条件の抽出を行う（ＳＴ３１〜ＳＴ４２−Ｎｏ）。
【００５３】
図５に戻り、仮想スキャンチェーン生成部２２は、次に示す処理を実行する。
【００５４】
（ＳＴ２２）
仮想スキャンチェーン生成部２２は、レジスタ変化条件リスト５１に従って、図９（図６に対して★を追加した部分）に示されるような判定文を、ＲＴＬデータ３２に追記する。この判定文は、モード信号ＭＤの論理値が第１の論理値“０”であるときにスキャン対象レジスタ群のデータを変化させ、モード信号ＭＤの論理値が第２の論理値“１”であるときにスキャン対象レジスタ群のデータを変化させないことを表している。また、仮想スキャンチェーン生成部２２は、モード信号ＭＤの論理値が第１の論理値“０”であるときにスキャン対象レジスタ群のデータを変化させ、モード信号ＭＤの論理値が第２の論理値“１”であるときにスキャン対象レジスタ群のデータを変化させないことを表すスキャンシフト時動作停止ネットリスト５２を生成する。
【００５５】
（ＳＴ２３）
次に、仮想スキャンチェーン生成部２２は、スキャンシフト時動作停止ネットリスト５２に従って、図１０に示されるようなシフト動作用レジスタ配列情報５３を生成する。シフト動作用レジスタ配列情報５３は、スキャン対象レジスタ群の配列を指定するための情報であり、スキャン対象レジスタ群をユニークな名前で指定することで、階層によらないレジスタ配列を生成することができる。
【００５６】
（ＳＴ２４）
次に、仮想スキャンチェーン生成部２２は、シフト動作用レジスタ配列情報５３に従って、図１１に示されるような仮想スキャンチェーン４３を生成する。仮想スキャンチェーン４３は、モード信号ＭＤの論理値が第２の論理値“１”であるときに、入力データＳＩを入力し、出力データＳＯを出力するためのシフト動作を指定するための情報である。
【００５７】
本発明の実施形態による半導体集積回路設計方法によれば、スキャンチェーンは、ＲＴＬ機能検証処理（ＳＴ３）の前に生成される。そのスキャンチェーンとして、仮想スキャンチェーン生成処理（ＳＴ２）において、上述の工程（ＳＴ１１〜ＳＴ１４、ＳＴ２１〜ＳＴ２４）を実行することにより、まず、仮想スキャンチェーン４３が生成される。このため、ＲＴＬ機能検証処理（ＳＴ３）でスキャンチェーンによる検証を行うことができる。その結果、ＲＴＬ機能検証処理（ＳＴ３）でスキャンチェーンによる検証を行ったときに、その検証結果に問題がある場合（ＳＴ４−ＮＧ）、即ち、半導体集積回路に不具合が発見された場合、ＲＴＬ設計処理（ＳＴ１）まで戻って機能修正を行うため、従来の半導体集積回路設計方法に比べて検証期間を短縮できる。
【００５８】
具体的には、従来の半導体集積回路設計方法では、スキャンチェーンはＤＦＴ合成処理（ＳＴ１０５）で生成されるため、ゲート検証処理（ＳＴ１０６）でスキャンチェーンによる検証を行ったときに、半導体集積回路に不具合が発見された場合（ＳＴ１０７−ＮＧ）、ＲＴＬ設計処理（ＳＴ１０１）まで戻って機能修正を行う必要がある。一方、本発明の実施形態による半導体集積回路設計方法によれば、スキャンチェーンは、まず、ＲＴＬ機能検証処理（ＳＴ３）の前に、仮想スキャンチェーン４３として仮想スキャンチェーン生成処理（ＳＴ２）で生成されるため、ＲＴＬ機能検証処理（ＳＴ３）でスキャンチェーンによる検証を行ったときに、半導体集積回路に不具合が発見された場合（ＳＴ４−ＮＧ）、ＲＴＬ設計処理（ＳＴ１０１）に戻って機能修正を行う。このため、従来の半導体集積回路設計方法に比べて検証期間を短縮できる。
【００５９】
また、本発明の実施形態による半導体集積回路設計方法によれば、最初に、ＲＴＬ機能検証処理（ＳＴ３）でスキャンチェーンによる検証を行うため、次に、ゲート検証処理（ＳＴ７）でスキャンチェーンによる検証を行ったときに、半導体集積回路に不具合が発見された場合（ＳＴ８−ＮＧ）、ＲＴＬ設計処理（ＳＴ１）まで戻らずに、論理合成処理（ＳＴ５）以降を実行すればよい。このため、従来の半導体集積回路設計方法に比べて検証期間を短縮できる。
【符号の説明】
【００６０】
１０    コンピュータ、
１１    制御部、
１２    記憶部、
１３    コンピュータプログラム、
２１    ＲＴＬデータ生成部、
２２    仮想スキャンチェーン生成部、
２３    シミュレーション実行部、
２４    ゲートレベルネットリスト生成部、
２５    スキャンチェーン生成部、
３１    設計仕様、
３２    ＲＴＬデータ、
３３    検証用のテストパターン、
３４    検証用のデータの事象、
３５    端子情報、
４１    レジスタリスト、
４２    スキャン対象レジスタリスト、
４３    仮想スキャンチェーン
５１    レジスタ変化条件リスト、
５２    スキャンシフト時動作停止ネットリスト、
５３    シフト動作用レジスタ配列情報
【図１】
2011198303.tif 000003
【図２】
2011198303.tif 000004
【図３】
2011198303.tif 000005
【図４】
2011198303.tif 000006
【図５】
2011198303.tif 000007
【図６】
2011198303.tif 000008
【図７】
2011198303.tif 000009
【図８Ａ】
2011198303.tif 000010
【図８Ｂ】
2011198303.tif 000011
【図９】
2011198303.tif 000012
【図１０】
2011198303.tif 000013
【図１１】
2011198303.tif 000014