(57)【要約】【課題】ロジックＢＩＳＴの擬似乱数発生器から印加される擬似乱数のテストデータによって故障検出がされにくいＲＴＬ中の回路記述を検出して、設計者に警告し、ロジックＢＩＳＴ向けのＲＴＬ改善を支援し、スキャンベースのテスト法においてテストデータが乱数であるときのテスト品質を向上させること。【解決手段】レジスタトランスファレベルのハードウェア記述データを入力する手段と、前記機能記述データ中の記憶素子が推量され得るレジスタ変数を認識するレジスタ変数認識手段４０２と、前記レジスタ変数認識手段によって認識されたレジスタ変数へ乱数を印加する乱数発生手段４０３と、この乱数の印加によって引き起こされるイベントをシミュレーションするシミュレータ４０５とを設け、前記シミュレーションの結果によるハードウェア記述データのソースコードカバレッジ解析を行うコードカバレッジ解析手段４０６とを有することを特徴とする。【選択図】      図４
2004220222.tif 000002
【特許請求の範囲】
【請求項１】
レジスタトランスファレベルのハードウェア記述データを入力する手段と、前記機能記述データ中の変数に関して、論理合成システムによって記憶素子が推量され得るレジスタ変数を認識するレジスタ変数認識手段と、前記レジスタ変数認識手段によって認識されたレジスタ変数へ乱数を印加する乱数発生手段と、この乱数の印加によって引き起こされるイベントをシミュレーションするシミュレータと、前記シミュレーションの結果によるハードウェア記述データのソースコードカバレッジ解析を行うコードカバレッジ解析手段とを有することを特徴とする設計支援装置。
【請求項２】
コンピュータを、請求項１に記載の前記ハードウェア記述データ入力手段、前記レジスタ変数認識手段、前記乱数発生手段、前記コードカバレッジ解析手段として機能させるためのプログラム。
【請求項３】
請求項２に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項４】
請求項１に記載の設計支援装置において、前記コードカバレッジ解析手段は、ハードウェア記述データ内に記述された条件分岐記述に関する分岐処理の活性化率に関して活性化頻度の偏りを解析することを特徴とする設計支援装置。
【請求項５】
請求項１に記載の設計支援装置において、前記コードカバレッジ解析手段は、レジスタ、またはネットの変数に関してシミュレーション結果による変化を統計処理して、取り得た値の発生頻度を解析することを特徴とする設計支援装置。
【請求項６】
レジスタトランスファレベルのハードウェア記述データをシミュレーションして、ソースコードカバレッジ解析を行うコードカバレッジ方法において、機能記述データ中の変数に関して、論理合成システムによって記憶素子が推量され得るレジスタ変数を認識し、レジスタ変数認識手段によって認識されたレジスタ変数へ乱数を印加し、この乱数の印加によって引き起こされるイベントをシミュレーションすることを特徴とするソースコードカバレッジ解析を行うソースコードカバレッジ方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、テスト容易性解析および容易性解析、並びにテスト容易化設計およびテスト容易化設計装置に関し、具体的には、ロジックの組込み自己試験機構によって大規模集積回路のテストを実施する際、アーキテクチャに依存しないハードウェアの機能記述中、故障検出されにくい記述を確認する設計支援装置、およびソースコードカバレッジ方法、並びにそのプログラムに関する。
【０００２】
【従来の技術】
擬似乱数をテストデータに使用したスキャンベースの組込み自己テスト法（以降、ロジックＢＩＳＴ（Ｂｕｉｌｔ−ｉｎ―ｓｅｌｆ−Ｔｅｓｔ）と呼ぶ。）の技術の詳細は特開平５−２４１８８２号公報（特許文献１）、特許第２７１１４９２号公報（特許文献２）を参照する。レジスタトランスファレベルの機能記述の検証法には、特開平１１−８５８２８号公報（特許文献３）、特開２０００−２１５２２５号公報（特許文献４）、特開平６−２５９４９６号公報（特許文献５）がある。
【０００３】
上記特許文献３と５は、ユーザ作成のテストベンチによるテスト品質の向上を目的とした支援装置であって、ユーザのテストベンチを使ったシミュレーション結果から、順序回路の状態カバレッジや未活性の状態を警告する。
【０００４】
上記特許文献４は、ユーザ作成のテストベンチによるシミュレーション結果を元に、入力から出力までのデータ伝播を調査してテスト容易化を検査する。
【０００５】
上記ロジックＢＩＳＴでは、テストデータが擬似乱数であるために十分な故障検出率が得られないケースがある。特に、多ビットの比較演算器は擬似乱数によるテストの結果、故障検出がされにくい回路（以降、ランダムレジスタントと呼ぶ）である。エンコーダやネストした条件分岐処理を持つ回路に関しても、テストデータが擬似乱数では条件分岐先に偏りが発生し、その結果、テストされない回路が残ってしまう。
【０００６】
従来、このような問題に対して、ゲートレベルのネットリスト中の可制御性、可観測性の悪い箇所にテスト回路を挿入する技術がある。これはＵＳＰ  ６，０７０，２６１（特許文献６）を参照する。しかし、この手法では挿入されたテスト回路のために回路機能、特にスピードの劣化が発生してしまうという問題があった。大規模回路になった場合は可制御性、可観測性の解析ツールに実行時間が長大になるという問題も発生している。
【０００７】
以上の問題を解決するためには、例えばレジスタトランスファレベル（以降、ＲＴＬと呼ぶ。）の段階でロジックＢＩＳＴによる故障検出が困難な記述箇所を抽出し、それに対してテスト回路記述を追加しておけば、論理合成によって上記問題に対策が打たれたゲートレベルネットリストが得られる。
【０００８】
【特許文献１】
特開平５−２４１８８２号公報
【特許文献２】
特許第２７１１４９２号公報
【特許文献３】
特開平１１−８５８２８号公報
【特許文献４】
特開２０００−２１５２２５号公報
【特許文献５】
特開平６−２５９４９６号公報
【特許文献６】
米国特許第６，０７０，２６１号明細書
【０００９】
【発明が解決しようとする課題】
しかし、上記解決手段によるためには、レジスタトランスファレベル（以降、ＲＴＬと呼ぶ）のどこの記述がランダムレジスタントであるかを事前に分かっておく必要がある。
【００１０】
そこで、本発明の目的は、ＲＴＬ中のランダムレジスタントな記述を検出して、設計者に警告し、ロジックＢＩＳＴ向けのＲＴＬ改善を支援する設計支援装置を提供することにある。
【００１１】
【課題を解決するための手段】
上記目的を達成するため、本発明に係る設計支援装置は、レジスタトランスファレベルのハードウェア記述データを入力する手段と、前記機能記述データ中の変数に関して、論理合成システムによって記憶素子が推量され得るレジスタ変数を認識するレジスタ変数認識手段と、前記レジスタ変数認識手段によって認識されたレジスタ変数へ乱数を印加する乱数発生手段と、この乱数の印加によって引き起こされるイベントをシミュレーションするシミュレータと、前記シミュレーションの結果によるハードウェア記述データのソースコードカバレッジ解析を行うコードカバレッジ解析手段とを有することを特徴とする。
【００１２】
また、上記設計支援装置を実現するために、コンピュータを、請求項１に記載の前記ハードウェア記述データ入力手段、前記レジスタ変数認識手段、前記乱数発生手段、前記コードカバレッジ解析手段として機能させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体を特徴としている。
【００１３】
また、前記コードカバレッジ解析手段は、ハードウェア記述データ内に記述された条件分岐記述に関する分岐処理の活性化率に関して活性化頻度の偏りを解析することを特徴とする。
【００１４】
また、前記コードカバレッジ解析手段は、レジスタやネットの変数に関してシミュレーション結果による変化を統計処理して、取り得た値の発生頻度を解析することを特徴とする。
【００１５】
また、レジスタトランスファレベルのハードウェア記述データをシミュレーションして、ソースコードカバレッジ解析を行うコードカバレッジ方法は、機能記述データ中の変数に関して、論理合成システムによって記憶素子が推量され得るレジスタ変数を認識し、レジスタ変数認識手段によって認識されたレジスタ変数へ乱数を印加し、この乱数の印加によって引き起こされるイベントをシミュレーションすることを特徴とする。
【００１６】
また、上記特許文献３、４、５と比較した本発明の進歩性は、本発明が、スキャンベースのテスト法において、テストデータが擬似乱数であるときのテスト品質の向上を目的としていることである。
【００１７】
【発明の実施の形態】
図１に、請求項１に記載の、本発明の設計支援装置の第１の構成図を示す。
１０１はメモリもしくはハードディスクであって、レジスタトランスファレベル（以降、ＲＴＬと呼ぶ。）の機能記述データや本発明の各手段をプログラムの形式で格納する。１０２はＣＰＵ（Ｃｅｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）であって、本発明の実行をつかさどる。１０３はキーボード・マウスなどの入力手段であって、アーキテクチャに依存しないハードウェア機能記述の入力・編集や本発明の各手段を実現したプログラムの実行命令を対話的に入力する。１０４は、ＣＲＴであって、アーキテクチャに依存しないハードウェア機能記述の表示や本発明の各手段を実現したプログラム実行経過や実行結果を表示する。１０５はシステムバスであって１０１、１０２、１０３、１０４の各構成部のＩ／Ｆを行う。
【００１８】
入力するＲＴＬの機能記述データ中に複数のオペレーション式や条件分岐処理がある場合は、それぞれのオペレーションに関してパースツリーが作成され、各パースツリーのトップノードはメモリ上のリストやハッシュテーブルの形式で格納され、走査して閲覧、参照可能である。ここで言うＲＴＬは例えばＶＨＤＬ（ＶＨＳＩＣ（Ｖｅｒｙ  Ｈｉｇｈ  Ｓｐｅｅｄ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）  Ｈａｒｄｗａｒｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）やＶｅｒｉｌｏｇＨＤＬ（Ｖｅｒｉｌｏｇ  Ｈａｒｄｗａｒｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）の形式で記述されたものでよい。
【００１９】
図２に、レジスタトランスファレベルの機能記述データの一例とこれから作成されるパースツリーのイメージ図を示す。
図２（ａ）がレジスタトランスファレベルの機能記述データの一例、（ｂ）が当該レジスタトランスファレベルの記述から構文解析されて、メモリもしくはハードディスク上に展開されたパースツリーのイメージ図、（ｃ）はパースツリー上の各ノードに構造体形式で格納される情報を示している。
【００２０】
前記パースツリーのノードは、変数のオペランドとオペレータを格納する。当該オペランドは、レジスタやネットに該当する。当該オペレータは、加算、減算、乗算、比較などの演算の種類に該当する。図２（ｂ）中のＬのノードは、記述データ中の演算式の左辺に関するパースツリーのトップノードであり、Ｒは右辺に関するものである。
【００２１】
図２（ｃ）の構造体中、ファイル名は例えばＣ言語のｃｈａｒ型のアレイであって、レジスタトランスファレベルの機能記述データであるファイル名を格納する。行番号はｉｎｔ型である。タイプにはオペレータのタイプ、もしくはレジスタ、ネット、ポートなどの識別子を格納する。図１２（ａ）にオペレータのタイプに関する識別子の割り当て例を示す。表中のＳｕｂＯｐは“−”、ＤｉｖＯｐは“／”、ＡｄｄＯｐ、ＭｕｌｔＯｐはそれぞれ、“＋”、“＊”のオペレーションを示している。図１２（ｂ）はレジスタ、ネット、ポートの識別に関する識別子の割り当て例を示す。ノードのタイプがレジスタ、ネット、ポートの場合は、図２（ｃ）の構造体においてビット幅の情報も格納する。
【００２２】
ＲＴＬの機能記述データ内の処理フロー記述も、パースツリーの形式で格納される。当該処理フロー記述には例えば、Ｖｅｒｉｌｏｇ＿ＨＤＬのｃａｓｅ文やｉｆ−ｅｌｓｅ形式の条件分岐記述が該当する。
図３に、処理フロー記述を展開したパースツリーのイメージ図を示す。図中のＣはコンディション式、つまり条件式に関するパースツリーの参照ポインタを格納するノードであって、当該条件式は同様にパースツリーを構成する。図中のｙ、ｎはそれぞれ条件が真、偽のときに実行されるオペレーションに関するパースツリーの参照ポインタを格納するノードであって、当該実行されるべきオペレーションはパースツリーを構成している。これらのパースツリーは、メモリ上のリストやハッシュテーブルの形式で格納され、走査して閲覧、参照可能である。
【００２３】
図４に、請求項１に記載の、本発明に係る設計支援装置の第２の構成図を示す。
４０１は、構文解析手段であって入力されたＲＴＬの機能記述データを構文解析してパースツリーに展開する。展開されたパースツリーは４０８のシステムメモリに格納され、４０９のシステムバスを介して各構成要素から参照可能となっている。
【００２４】
４０２は、レジスタ変数認識手段であって、４０８内のパースツリーを参照してＲＴＬ内のレジスタ変数のうち記憶素子が推量され得る、すなわち論理合成手段によってＦＦなど記憶素子が割り当てられるべきレジスタ変数を認識する。４０３は乱数発生手段であって、４０２で認識したレジスタ変数への乱数の印加を行う。４０４はクロック生成手段であって、クロックパルスの印加を司る。４０５はシミュレータであって、４０３、４０４の乱数およびクロックパルスの印加によるイベントの変化をシミュレートする。当該シミュレーションによって引き起こされた内部イベントによるＲＴＬ中の変数の変化は、４０８上のパースツリーのノード上に逐次格納されるようになっている。
【００２５】
４０６は、コードカバレッジ解析手段であって、４０８上のパースツリーに格納された前記シミュレーション結果を参照して入力されたＲＴＬの記述データ中のレジスタ変数や、ネットおよびポートの変数のカバレッジを解析してログ出力おもしくはＣＲＴへ結果表示を行う。４０６のコードカバレッジ解析手段はＲＴＬの記述データ中の条件分岐記述において、前記シミュレーションによって活性化された分岐先に関してもカバレッジ解析を行い、統計処理を行って、条件分岐処理の分岐先の活性化頻度に偏りが出ているかどうかを解析し、解析の結果をログ出力もしくはＣＲＴ出力する。４０７はコントローラであって、各構成手段の処理手順の取り決めや処理命令の送信などシステム全体の制御を司る。
【００２６】
前記４０５のシミュレーション手段は市販のＲＴＬシミュレータを用いても良い。ＣＡＤＥＮＣＥ社（ｈｔｔｐ：／／ｗｗｗ．ｃａｄｅｎｃｅ．ｃｏｍ／［平成１４年１２月２４日検索］）では、ＶｅｒｉｌｏｇＨＤＬ用ＲＴＬシミュレータであるＶｅｒｉｌｏｇ＿ＸＬ及びＮＣ−Ｖｅｒｉｌｏｇが供給されている。これらのシミュレータはＲＴＬの記述データを構文解析してシステムメモリ上にパースツリーを展開する。また、テストベンチにしたがってシミュレーションを実行する。
【００２７】
ＣＡＤＥＮＣＥ社ではＰｒｏｇｒａｍｍｉｎｇ  ｌａｎｇｕａｇｅ  ｉｎｔｅｒｆａｃｅ  （ＰＬＩ）  Ｉｎｔｅｇｒａｔｉｎ  機構が設けられており、Ｖｅｒｉｌｏｇ  ｐｒｏｃｅｄｕｒａｌ  ｉｎｔｅｒｆａｃｅ  （ＶＰＩ）と呼ばれるアクセスルーチンが提供されている。これによれば前記パースツリーへの参照が可能である。また、アクセスルーチンにはテストベンチに代わって、内部変数へ値を印加したシミュレーションの実行指示、シミュレーション時刻を進める、シミュレーションの結果の参照を行う関数も用意されている。
【００２８】
図５に、ＣＡＤＥＮＣＥ社のＶｅｒｉｌｏｇ＿ＸＬもしくはＮＣ−Ｖｅｒｉｌｏｇをシミュレーション手段として用い、Ｐｒｏｇｒａｍｍｉｎｇ  ｌａｎｇｕａｇｅ  ｉｎｔｅｒｆａｃｅ  （ＰＬＩ）  Ｉｎｔｅｇｒａｔｉｏｎ  機構のＶｅｒｉｌｏｇ  ｐｒｏｃｅｄｕｒａｌ  ｉｎｔｅｒｆａｃｅ  （ＶＰＩ）のアクセスルーチンを用いてレジスタ認識手段、乱数印加手段、カバレッジ解析手段を実現したときの請求項１に記載の、本発明に係る設計支援装置の第３の構成図を示す。
【００２９】
５１３は、ＰＬＩ機構、５０１は、ＰＬＩ機構に含まれる構文解析手段であって、入力されたＲＴＬの記述データからパースツリーへ展開し、５０８のシステムメモリへ登録する。５０６はＰＬＩ機構に含まれるシミュレータであって、５０８上のパースツリーの読み出し、書き込みが可能である。
【００３０】
５１０は、パースツリー、５１２は、５１０のパースツリーを走査可能にするためのテーブルもしくはリスト、５１１はテーブルもしくはリストからパースツリーへのポインタ参照である。
５１４は、ＶＰＩのアクセスルーチンによってパースツリーの参照及びシミュレーション制御を行うＶＰＩ  Ｉ／Ｆである。ＶＰＩ  Ｉ／Ｆを介してパースツリーへの参照及びシミュレーション制御を実施可能とする、レジスタ変数認識手段５０２、乱数発生手段５０３、クロック生成手段５０４、コードカバレッジ解析手段５０５のそれぞれは、ＶＰＩ  Ｉ／Ｆを介してパースツリーへの参照及びシミュレーション制御を実施可能となっている。
なお、５０９は入力するＲＴＬの記述データ、５１５はコードカバレッジ解析結果のログ、もしくはＣＲＴへ出力されるべきメッセージである。
【００３１】
図６に、第１、第２、第３の構成図におけるコントローラによる主制御フローを示す。
まず、パースツリーの走査によって記憶素子が推量され得るレジスタ変数の認識を行い（６０１）、当該レジスタ変数へ乱数印加を行い（６０２）、乱数印加によるイベントをシミュレーションする（６０３）。当該シミュレーション結果による内部変数（レジスタやネット、ポート）や条件分岐の活性化状況をシステムメモリへ格納する（６０４）。続いてクロックを印加（６０５）し、クロック印加によるイベントをシミュレーションし、シミュレーション時刻を進める（６０６）。当該シミュレーション結果による内部変数の値をシステムメモリへ格納する（６０７）。前記、６０２〜６０７は複数回実行される。例えばロジックＢＩＳＴで行われるテストの回数と同等の回数を繰り返す。なお、（）内に示した番号は図６に示した各工程に付加された符号を示している。
【００３２】
図１１に、乱数印加、前記印加によるイベントをシミュレートした結果と、内部変数や条件分岐活性化状況のとり込みと、クロックの立ち上がりパルスの印加と、前記クロックの印加によるイベントをシミュレートした結果による内部変数の状況のとり込みとを実施するタイミングをシミュレーション時刻の経過を横軸にとって示した。図中の▲１▼は乱数印加、▲２▼はそれによるシミュレーション結果のとり込み、▲３▼はクロックの印加、▲４▼はその結果によるシミュレーション結果のとり込みのタイミングである。
【００３３】
以下に請求項１に記載されたレジスタ認識手段に関する実施例を示す。
論理合成システムによって、記憶素子を推量させるための記述形式が定められている。当該レジスタ認識手段も、論理合成システムと同様な記憶素子推量の記述形式箇所を前記パースツリーの走査により抽出し、当該記述形式に関わるところの代入式中、左辺のレジスタ変数を認識結果として次工程の乱数印加手段に渡す。ＶｅｒｉｌｏｇＨＤＬにおける当該記憶素子推量のための記述形式の例を図７に示す。
ｒｅｇ変数宣言した変数に対して同期されるクロックによるａｌｗａｙｓ文のｐｏｓｅｄｇｅ記述によるセンシティビティがあれば、図８に示すフリップフロップが推量される。
【００３４】
請求項１に記載された乱数発生手段、クロック発生手段における乱数およびクロックの印加に関しては、例えばＶｅｒｉｌｏｇＨＤＬであれば値の強制印加コマンドとして、“ｆｏｒｃｅ”コマンドがある。これによれば、ＲＴＬ内の任意のレジスタやネット、ポートに任意の論理値を印加可能である。乱数は、例えばＶｅｒｉｌｏｇＸＬ、ＮＣ−Ｖｅｒｉｌｏｇのシミュレータであれば、＄ｒａｎｄｏｍ（）コマンドで得られる。あるいは、例えばＣ言語によるプログラミングによって実現する場合は、ｒａｎｄ関数で得られる。乱数発生手段、クロック発生手段はｆｏｒｃｅ、＄ｒａｎｄｏｍのコマンドを用いたテストベンチの形式で構成しても良い。
【００３５】
第３の構成図による実施例においては、ＶＰＩアクセス関数のｖｐｉ＿ｐｕｔ＿ｖａｌｕｅ（  ）によって所望のレジスタやネットに論理値を設定可能である。例えばレジスタ“Ａ”に乱数を印加する場合は、ＶＰＩアクセス関数のｖｐｉ＿ｐｕｔ＿ｖａｌｕｅ（  ）を使ったＣプログラミングにおいて、ｖｐｉ＿ｐｕｔ＿ｖａｌｕｅ（レジスタ“Ａ”に相当するパースツリー上のノード、ｒａｎｄ（）、シミュレーション時刻）；と記述出来る。
【００３６】
また、クロックポート“ＣＫ”にパルスを印加する場合は、
ｖｐｉ＿ｐｕｔ＿ｖａｌｕｅ（ポート“ＣＫ”に相当するパースツリー上のノード、１、シミュレーション時刻１）；
ｖｐｉ＿ｐｕｔ＿ｖａｌｕｅ（ポート“ＣＫ”に相当するパースツリー上のノード、０、シミュレーション時刻２）；
と記述出来る。この場合、シミュレーション時刻１で、ＣＫに立ち上がりイベントが発生され、シミュレーション時刻２で、ＣＫに立り下がりイベントが発生される。なお、６０３、６０５のシミュレーション実行は、ｖｐｉ＿ｐｕｔ＿ｖａｌｕｅ（  ）関数の第３の引数に与えるシミュレーション時刻を進める事で実現される。
【００３７】
請求項１、２、３、４、５に記載されたコードカバレッジ解析手段は、シミュレーション結果のダンプファイルを解析して実現可能であるが、第３の構成における所望のレジスタやネットの値、及び分岐条件式の条件式の真偽が参照可能である。よって、６０４、６０７でのシミュレーション結果による内部変数や条件分岐処理の活性化状況の取り出しはパースツリーを走査してレジスタやネット、条件分岐のノードごとにＶＰＩアクセス関数のｖｐｉ＿ｇｅｔ＿ｖａｌｕｅ（  ）によって内部状態、及び分岐条件式の条件式の真偽を参照し、システムメモリへ格納するようにしている。なお、パースツリー内のノードにはＲＴＬソースのファイル名と行番号が格納されているので、例えば条件分岐処理記述で一度も活性化されなかった分岐先はカバレッジが０の結果としてファイル名、行番号と合わせてログ出力もしくはＣＲＴへメッセージ出力を行う。
【００３８】
請求項５に記載されたコードカバレッジ解析手段は、例えば、レジスタがＸ値をラッチしていた場合はＸ値伝播違反が発生しているとしてログもしくはＣＲＴに警告を出す。
請求項５に記載されたコードカバレッジ解析手段は、例えば、レジスタが常に０（初期値）のみをとる場合は、リセットが掛かりっぱなしの可能性がその要因に考えれるので、その旨をログもしくはＣＲＴに警告を出す。
請求項４に記載されたコードカバレッジ解析手段は、例えば、条件分岐の条件式の変数がトグルしない場合は、条件分岐先の活性化率が低い事の要因であるとしてその旨をログもしくはＣＲＴに警告を出す。
【００３９】
請求項４におけるコードカバレッジ解析手段は、ＲＴＬ中の条件分岐処理記述に関し、活性化される分岐先の活性化頻度に偏りが無いかどうかを解析する。
図９にＶｅｒｉｌｏｇＨＤＬによる２５回の乱数印加の結果、分岐先の活性化頻度に偏りが発生したＲＴＬの例を示す。９０１は、活性化された回数を示している。
【００４０】
偏りを数値化して表すためには、例えば、平均偏差で示す手段がある。平均偏差は測定値と平均値のずれの程度を表すものであって、「算術平均値との差の絶対値」の和の平均値である。有効ケース数を、ｎ、各ケースの測定値をＸｉ（ｉ＝１、２、…、ｎ）、算術平均値をＸバーとすると、以下の数１で定義される。
【数１】
2004220222.tif 000003
【００４１】
図９の例では、分岐先が５個、各分岐先が活性化された回数はそれぞれ１、０、０、０、２４、仮に偏りなく理想的にまんべんに各分岐先が活性化されたとすると各分岐先は５回ずつ活性化される。よって平均偏差は、（｜１−５｜＋｜０−５｜＋｜０−５｜＋｜０−５｜＋｜２４−５｜）／５＝（４＋５＋５＋５＋１９）／５＝７．６である。仮に分岐の活性化回数が２５回の乱数印加の結果、４、５、５、５、６だとすると、（｜４−５｜＋｜５−５｜＋｜５−５｜＋｜５−５｜＋｜６−５｜）／５＝（１＋０＋０＋０＋１）／５＝０．４となる。なお、この平均偏差値は値が小さくなればなるほど、偏りが無く、大きければ偏りがある、と認識できる。
【００４２】
上記コードカバレッジの処理は、シミュレーション中の分岐条件式の条件式の真偽の結果を逐一システムメモリに格納し、最終的に前記平均偏差の統計処理計算を行う、例えばＣ言語によるプログラミングで実現する。
【００４３】
請求項５のコードカバレッジ解析手段は、１ビットもしくはビット幅を有するバス形式のレジスタやネット、ポートに関し前記平均偏差を算出し、偏りを解析する。図１０に、３ビットのレジスタに１２８回の乱数を印加して、結果取り得た値のリストを示す。仮に偏りなく、理想的にレジスタ値をまんべんに網羅したとすると、０００，００１，０１０，０１１，１００，１０１，１１０，１１１の値をそれぞれ１６回ずつとることが可能である。よって、平均偏差は、（｜１２０−１６｜＋｜２−１６｜＋｜０−１６｜＋｜０−１６｜＋｜６−１６｜＋｜０−１６｜＋｜０−１６｜＋｜０−１６｜）／８＝（１０４＋１４＋１６＋１６＋１０＋１６＋１６＋１６）／８＝２６である。
【００４４】
上記コードカバレッジの処理はシミュレーション中のレジスタやネットなどの内部変数の値を逐一システムメモリに格納し、最終的に前記平均偏差の統計処理計算を行う、例えばＣ言語によるプログラミングで実現する。
【００４５】
請求項６に記載されたソースコードカバレッジ方法に対応する実施例として、図６のフロー図を示した。詳細な説明は前記に記した通りであるため、ここでは割愛する。
【００４６】
上述の実施形態において、コンピュータを、請求項１に記載の前記ハードウェア記述データ入力手段、前記レジスタ変数認識手段、前記乱数発生手段、前記コードカバレッジ解析手段として機能させるためのプログラムをアプリケーションソフトとして、ＣＤ−ＲＯＭ等の記録媒体に格納しておいてもよい。このようにすれば、ＣＤ−ＲＯＭ等の、該プログラムを記録するためのコンピュータ読み取り可能な可搬型記録媒体に該プログラム等を格納して売買したり、携帯することができるようになる。
【００４７】
【発明の効果】
以上、詳細に説明したように、本発明に係る請求項１、２、３記載の設計支援装置、及び請求項６記載のソースコードカバレッジ方法によれば、ロジックＢＩＳＴで実施される擬似乱数によるテストのシミュレーションがＲＴＬで実施可能となるので、ロジックＢＩＳＴにおける諸問題をＲＴＬの段階で確認可能となる。
また、乱数によって内部状態が常に０（初期値）であったり、条件分岐の分岐カバレッジが低い場合は、ロジックＢＩＳＴのテストで可制御性・可観測性の低下の原因であるため、従来故障シミュレーションを実行するまで判明しなかった可制御性・可観測性及びそれらの低下の要因がＲＴＬの段階で調査、判別可能である。
【００４８】
また、同様に条件分岐の分岐カバレッジが低い場合は、ＡＴＰＧ（Ａｕｔｏ  Ｔｅｓｔ  Ｐａｔｔｅｒｎ  Ｇｅｎｅｒａｔｏｒ）におけるスキャンテスト量の増加を引き起こすので、ＲＴＬの段階でスキャンテスト量増加の要因を調査、判別可能である。
【００４９】
また、請求項４記載の、コードカバレッジ解析手段によれば、特に条件分岐の分岐先の活性化頻度における偏りの度合いを解析するようにしたので可制御性・可観測性の低下の要因を容易に特定可能となる。たとえば、ｃａｓｅ文のｄｅｆａｕｌｔ、ｉｆ−ｅｌｓｅのｅｌｓｅの分岐先ばかりが活性化され、その他はほとんど活性化されない場合は、活性化されなかった信号ライン又は演算式の記述は制御不能であり、ＲＴＬの改善、修正が必要である。従来によるロジックＢＩＳＴでは、テストデータが擬似乱数であるために十分な故障検出率が得られないケースが多く、ゲートレベルのネットリスト中の可制御性、可観測性の悪い箇所にテスト回路を挿入する等による故障シミュレーションを実行するまで、ロジックＢＩＳＴで故障検出率の低下の要因であるＲＴＬ記述箇所が判明しなかったが、将来、上記のように請求項４に記載されたコートカバレッジ解析手段によることで、ＲＴＬの段階で調査、判別可能である。
【００５０】
また、請求項５記載の、コードカバレッジ解析手段によれば、バス形式のレジスタ、ネット、ポートに関して乱数をテストデータにしたときのシミュレーション結果による変数のカバレッジが確認でき、さらに取り得た値の発生頻度が確認可能である。例えば、レジスタ値が常にオール０である場合は、当該レジスタに関わる演算式は、十分な可制御性、可観測性が得られない。従来によるロジックＢＩＳＴでは、テストデータが擬似乱数であるために十分な故障検出率が得られないケースが多く、故障シミュレーションを実行するまで、ロジックＢＩＳＴで故障検出率の低下の要因であるＲＴＬ記述箇所が判明しなかったが、将来、上記のように請求項５に記載されたコートカバレッジ解析手段によることで、ＲＴＬの段階で調査、判別可能である。
例えば、乱数を印可した結果、レジスタがＸ値をとるようであればＸ伝播の問題が発生していることを示し、従来ゲートレベルのネットリストにおいてのみ実施されていたＸ値伝播違反の確認がＲＴＬの段階で実施可能で、回路設計の早期に確認、対策、修正が可能となる。
【図面の簡単な説明】
【図１】本発明に係る設計支援装置の第１の構成図である。
【図２】レジスタトランスファレベルの機能記述データの一例とこれから作成されるパースツリーのイメージ図である。
【図３】処理フロー記述を展開したパースツリーのイメージ図である。
【図４】本発明に係る設計支援装置の第２の構成図である。
【図５】本発明に係る設計支援装置の第３の構成図である。
【図６】第１（図１）、第２（図４）、第３（図５）の構成図におけるコントローラによる主制御フロー図である。
【図７】記憶素子推量のための記述形式の例図である。
【図８】ｒｅｇ変数宣言した変数に対して同期されるクロックによるａｌｗａｙｓ文のｐｏｓｅｄｇｅ記述によるセンシティビティがある場合に、推量されるフリップフロップ図である。
【図９】ＶｅｒｉｌｏｇＨＤＬによる２５回の乱数印加の結果、分岐先の活性化頻度にに偏りが発生したＲＴＬの例図である。
【図１０】３ビットのレジスタに１２８回の乱数を印加して、結果取り得た値のリストである。
【図１１】乱数印加、クロック印加によるイベントをシミュレートした結果、内部変数や条件分岐活性化状況のとり込み、クロックの立ち上がりパルスの印加、前記クロックの印加によるイベントをシミュレートした結果による内部変数の状況のとり込み、以上を実施するタイミングをシミュレーション時刻の経過を横軸にとって示した図である。
【図１２】オペレータのタイプに関する識別子の割り当て例、レジスタ、ネット、ポートの識別に関する識別子の割り当て例、および識別子の割り当て例の図である。
【符号の説明】
１０１  メモリもしくはハードディスク
１０２  ＣＰＵ
１０３  キーボード・マウスなどの入力手段
１０４  ＣＲＴ
１０５  システムバス
４０１  構文解析手段
４０２  レジスタ変数認識手段
４０３  乱数発生手段
４０４  クロック生成手段
４０５  シミュレータ
４０６  コードカバレッジ解析手段
４０７  コントローラ
４０８  システムメモリ
４０９  システムバス
５０１  ＰＬＩ機構に含まれる構文解析手段
５０２  レジスタ変数認識手段
５０３  乱数発生手段
５０４  クロック生成手段
５０５  コードカバレッジ解析手段
５０６  ＰＬＩ機構に含まれるシミュレータ
５０７  コントローラ
５０８  システムメモリ
５０９  入力するＲＴＬの記述データ
５１０  パースツリー
５１１  テーブルもしくはリストからパースツリーへのポインタ参照
５１２  パースツリーを走査可能にするためのテーブルもしくはリスト
５１３  ＰＬＩ機構
５１４  ＶＰＩ  Ｉ／Ｆ
５１５  コードカバレッジ解析結果のログ、もしくはＣＲＴへ出力されるべきメッセージ
【図１】
2004220222.tif 000004
【図２】
2004220222.tif 000005
【図３】
2004220222.tif 000006
【図４】
2004220222.tif 000007
【図５】
2004220222.tif 000008
【図６】
2004220222.tif 000009
【図７】
2004220222.tif 000010
【図８】
2004220222.tif 000011
【図９】
2004220222.tif 000012
【図１０】
2004220222.tif 000013
【図１１】
2004220222.tif 000014
【図１２】
2004220222.tif 000015