(57)【要約】【課題】スキャンベースのテスト法においてテストデータが乱数であるときのテスト品質の向上を図り、また、シミュレータを使わずに静的にテスト品質を低下させる箇所を特定、抽出すること。【解決手段】レジスタトランスファレベルの機能記述データを入力する入力手段３０１と、機能記述データの構文解析し、パースツリーに展開する構文解析手段３０２と、構文解析手段で展開されたパースツリー３０６を走査、検索してロジックＢＩＳＴの擬似乱数発生器から印加される擬似乱数のテストデータにより故障検出が困難である多ビットの比較演算記述を検索する手段３０３とを有する。また、それらに加えて、検索すべき記述形式がルール形式で格納された知識ベースのライブラリを設置してもよい。【選択図】  図３
2005071001.tif 000002
【特許請求の範囲】
【請求項１】
レジスタトランスファレベルの機能記述データを入力する入力手段と、
該機能記述データの構文解析を行い、パースツリーに展開する構文解析手段と、
該構文解析手段で展開されたパースツリーを走査および検索して、ロジックＢＩＳＴの擬似乱数発生器から印加される擬似乱数のテストデータにより故障検出が困難な多ビットの比較演算記述を検索する手段とを具備したことを特徴とする設計支援装置。
【請求項２】
レジスタトランスファレベルの機能記述データを入力する入力手段と、
該機能記述データの構文解析を行い、パースツリーに展開する構文解析手段と、
該構文解析手段で展開されたパースツリーは走査、検索が可能であり、検索すべき記述形式がルール形式で格納された知識ベースライブラリと、
該知識ベースライブラリを参照して該当する記述形式を検索する検索手段とを具備したことを特徴とする設計支援装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、テストを容易にするための解析システムあるいは設計システムとして適用可能な設計支援装置に関し、具体的には、ロジック組込み自己試験機構により大規模集積回路のテストを実施する際に、アーキテクチャに依存しないハードウェアの機能記述中に、故障が検出され難い記述を確認することが可能な設計支援装置に関する。
【背景技術】
【０００２】
乱数をテストデータに使用したスキャンベースの組込み自己テスト法（以下、ロジックＢＩＳＴと呼ぶ）の技術については、例えば、特開平５−２４１８８２号公報、特許第２７１１４９２号公報に記載がある。また、レジスタトランスファレベルの機能記述の検証法については、例えば、特開平１１−８５８２８号公報、特開２０００−２１５２２５号公報あるいは特開平６−２５９４９６号公報に記載がある。
【０００３】
まず、特開平５−２４１８８２号公報には、アーキテクチャ内に組込み自己試験（ＢＩＳＴ（ｂｕｉｌｔ  ｉｎ  ｓｅｌｆ  ｔｅｓｔ）機能を持ったＢＩＳＴ回路設計の長所と短所が述べられている。長所としては、製造者が被試験回路の機能と動作のチェックを行うための専用の試験装置を組込むための時間と費用を負担する必要がないので、試験効率が良いことを述べている。また、短所としては、ＩＣ内に物理的な面積を割り当てる必要があるため、通常の機能部品のためのスペースが小さくなることを述べている。
公報記載の回路は、試験ベクトルを生成し、この試験ベクトルに応答して被試験回路から出力される信号を蓄積することにより、被試験回路の動作を試験する組込み自己試験回路（ＢＩＳＴ）を構成する。線形帰還型シフトレジスタには、被試験回路から出力された信号を受取るために結合された第１入力と、被試験回路に試験ベクトルを送信するための出力とが含まれている。
【０００４】
次に、特許第２７１１４９２号公報には、ＬＳＩ設計時の故障診断およびＬＳＩ製造時の良否判別試験で、そのチップの組込み自己試験（ＢＩＳＴ）を行う分散型の組込み自己試験回路、特に組込み自己試験のパターン圧縮装置について記述されている。すなわち、ＬＳＩに対する組込み自己試験は、その種々の機能ブロック毎にパターン圧縮器を置く構成を取らざるを得ない状況になっているが、組込み自己試験のハードを付加することで、チップ面積が増大すると、ＬＳＩの歩留りが低下してしまうという問題があった。従って、ハード量はできる限り少なくする必要がある。そのために、各機能ブロックに組込む空間的な圧縮器として、多入力線形帰還シフトレジスタを用いた圧縮器、排他的論理和を用いた圧縮器等の構成の異なる圧縮器を、ハード量が少ない順に組み合わせて構成している。
【０００５】
例えば、特開平１１−８５８２８号公報と特開平６−２５９４９６号公報に記載された技術は、ユーザ作成のテストベンチによるテスト品質の向上を目的とした支援装置であって、ユーザのテストベンチを使用したシミュレーション結果から順序回路の状態カバレッジや未活性の状態を警告する。
また、特開２０００−２１５２２５号公報では、ユーザ作成のテストベンチによるシミュレーション結果を基に、入力から出力までのデータ伝搬を調査してテスト容易化を検査している。
【０００６】
【特許文献１】特開平５−２４１８８２号公報
【特許文献２】特許第２７１１４９２号公報
【特許文献３】特開平１１−８５８２８号公報
【特許文献４】特開２０００−２１５２２５号公報
【特許文献５】特開平６−２５９４９６号公報
【特許文献６】特開２００１−２５１３５６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
ロジックＢＩＳＴでは、テストデータが擬似乱数であるために、十分な故障検出率が得られないケースがある。特に多ビットの比較演算器は、擬似乱数による故障検出がされ難い回路（ランダムレジスタント）である。エンコーダやネストした条件分岐処理を持つ回路に関しても、テストデータが擬似乱数では条件分岐先に偏りが発生し、その結果、テストされない回路が残ってしまう。
従来、このような問題に対して、ゲートレベルのネットリスト中の可制御性、可観測性の悪い箇所にテスト回路を挿入する技術がある（例えば、ＵＳ６，０７０，２６１）。
しかし、この手法では、挿入されたテスト回路のために、回路機能、特にスピードの劣化が発生してしまうという問題があった。さらに、大規模回路になった場合には、可制御性、可観測性の解析ツールに実行時間が長大になるという問題も発生している。
【０００８】
以上の問題を解決するためには、例えば、レジスタトランスファレベル（以下、ＲＴＬと呼ぶ）の段階でロジックＢＩＳＴによる故障検出が困難な記述箇所を抽出し、それに対してテスト回路記述を追記しておけば、論理合成により上記問題に対策が打たれたゲートレベルネットリストが得られる。
ただし、このようにする場合には、ＲＴＬのどこの記述がランダムレジスタントであるかを事前に分かっておく必要がある。
さらに、テスト以外でも、等価検証では３２ビットを越える乗算器は、等価検証ツールが扱えないという問題がある。論理合成に関しては、大規模の乗算器は実行時間が長大になってしまう。これらに対しては、分割して記述する等の対処が必要となる。ただし、このようにする場合には、ＲＴＬのどこが問題であるかを事前に分かっておく必要がある。
【０００９】
（目的）
そこで、本発明の目的は、スキャンベースのテスト法においてテストデータが乱数であるときのテスト品質の向上を図り、また、シミュレータを使わずに静的にテスト品質を低下させる箇所を特定、抽出することができる設計支援装置を提供することにある。
【課題を解決するための手段】
【００１０】
本発明の設計支援装置は、レジスタトランスファレベルの機能記述データを入力する入力手段と、前記機能記述データの構文解析し、パースツリーに展開する構文解析手段と、前記構文解析手段で展開されたパースツリーを走査、検索してロジックＢＩＳＴの擬似乱数発生器から印加される擬似乱数のテストデータにより故障検出が困難である多ビットの比較演算記述を検索する手段とを有することを特徴としている。
【００１１】
また、本発明の設計支援装置は、レジスタトランスファレベルの機能記述データを入力する入力手段と、前記機能記能データの構文解析しパースツリーに展開する構文解析手段と、前記構文解析手段で展開されたパースツリーは走査、検索が可能であり、検索すべき記述形式がルール形式で格納された知識ベースのライブラリと、前記検索手段は前記知識ベースを参照して該当する記述形式を検索する手段とを有することを特徴としている。
【発明の効果】
【００１２】
本発明の設計支援装置（請求項１）によれば、経験的にランダムレジスタントであると分かっているＲＴＬ記述スタイルがユーザ作成のＲＴＬ中で書かれていないか否かを検査し、もし書かれていれば、そのことを警告してロジックＢＩＳＴ向けのテスト容易化の設計作業を支援することができる。
また、前記警告により設計者は警告された部分の記述に関して改善を行うか、もしくは該当するブロックに対してのみＴＰＩ技術の施策やＴＰＩ後の論理圧縮によるタイミング改善を行えばよく、開発期間の増大化を抑えることができる。
テスト以外でも、等価検証や論理合成で問題になる大規模乗算器を事前に確認し、設計者に警告して修正を促すことが可能になる。
【００１３】
また、本発明の設計支援装置（請求項２）によれば、検索すべき記述形式を知識ベースとして設計者が追加、修正し、所望の記述形式が検出可能になった。その結果、テストや等価検証、論理合成などのツールで新たに問題となった記述形式を追加したリ、既に解決済みの記述形式に関してのルールは削除でき、テスト、等価検証、論理合成のいずれかに特化したチェックが可能になる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の実施の形態を、図面により詳細に説明する。
（第１の実施例）
図１は、本発明の第１の実施例（請求項１）に係る設計支援装置の構成図である。
図１において、１０１はメモリあるいはハードディスクであり、レジスタトランスファレベル（ＲＴＬ）の機能記述データや、本発明の各手段をプログラムの形式で格納する。１０２は、ＣＰＵであり、本発明の実行を司る。１０３は、キーボード・マウスなどの入力手段であり、アーキテクチャに依存しないハードウェア機能記述の入力・編集や、本発明の各手段を実現したプログラムの実行命令を対話的に入力する。
【００１５】
１０４は、ＣＲＴであり、アーキテクチャに依存しないハードウェア機能記述の表示や、本発明の各手段を実現したプログラムの実行経過や実行結果を表示する。１０５は、システムバスであり、１０１，１０２，１０３，１０４の各構成部とのインタフェース（Ｉ／Ｆ）を行う。
ＲＴＬの機能記述データは、ＣＰＵ１０２において構文解析された後、メモリもしくはハードディスク１０１上でパースツリーに展開されて格納される。
【００１６】
図２は、ＲＴＬの機能記述データの一例と、これから作成されるパースツリーのイメージ図である。
図２（ａ）がＲＴＬの機能記述データの一例であり、図２（ｂ）は当該ＲＴＬの記述から構文解析されてメモリもしくはハードディスク１０１上に展開されたパースツリーのイメージ図であり、図２（ｃ）はパースツリー上の各ノードに構造体形式で格納される情報を示す。
パースツリーのノードは、変数のオペランドとオペレータを格納する。当該オペランドは、レジスタやネットに該当する。当該オペレータは、加算、減算、乗算、比較などの演算の種類に該当する。図２（ｂ）中のＬのノードは、記述データ中の演算式の左辺に関するパースツリーのトップノードであり、Ｒは右辺に関するものである。
【００１７】
図２（ｃ）の構造体中、ファイル名は、例えばＣ言語のｃｈａｒ型のアレイであって、ＲＴＬの機能記述データであるファイル名を格納する。行番号は、ｉｎｔ型である。タイプには、オペレータのタイプ、もしくはレジスタ、ネット、ポートなどの識別子を格納する。
図１１表（１）は、オペレータのタイプに関する識別子の割り当て例を示す図である。
図１１の表（１）中のＳｕｂＯｐは、“−”、ＤｉｖＯｐは、“／”、ＡｄｄＯｐ、ＭｕｌｔＯｐは、それぞれ“＋”、“＊”のオペレーションを示している。ノードのタイプがレジスタ、ネット、ポートの場合には、図２（ｃ）の構造体においてビット幅の情報も格納する。
入力するＲＴＬの機能記述データ中に複数のオペレーション式や条件分岐処理がある場合には、それぞれのオペレーションに関してパースツリーが作成され、各パースツリーのトップノードはメモリ上のリストやハッシュテーブルの形式で格納される。この場合、走査して、閲覧または参照が可能である。
【００１８】
図３は、本発明の第１の実施例に係る設計支援装置の状態説明図である。
すなわち、請求項１の構成要素とＲＴＬの機能記述データおよび構文解析によりメモリもしくはハードディスク１０１上に展開されるパースツリー、および該パースツリーを走査、検索、閲覧可能なようにテーブルに格納する様子を示している。
３０１は入力するＲＴＬの機能記述データ、３０２は本発明の構文解析手段、３０３は検出手段、３０４は検出結果を表示するためのＣＲＴ、３０５は３０３の検出手段がパースツリーを走査、検索、閲覧可能なようにするために設けたテーブル、３０６はパースツリーであり、ＲＴＬの機能記述データ中のオペレーション式や条投分岐処理を構文解析してパースツリーに展開したもの、３０７はテーブル３０５からパースツリー３０６を参照可能にするためのポインタ参照、３０８は検出手段３０３からテーブル３０５を参照可能にするためのポインタ参照である。なお、テーブル３０５は、リスト構造で構成してもよい。
ＲＴＬの記能記述データ内の処理フロー記述も、パースツリーの形式で格納される。
当該処理フロー記述には、例えばＶｅｒｉｌｏｇ ＨＤＬのｃａｓｅ文や、ｉｆ ｅｌｓ形式の条件分岐記述が該当する。
【００１９】
図４は、処理フロー記述を展開したパースツリーのイメージ図である。
図４中のＣはコンディション式、つまり条件式に関するパースツリーの参照ポインタを格納するノードであり、当該条件式は同様にパースツリーを構成する。図４中ｙ，ｎは、それぞれ条件が真、偽のときに実行されるオペレーションに関するパースツリーの参照ポインタを格納するノードであり、当該実行されるべきオペレーションはパースツリーを構成している。これらのパースツリーは、メモリ上のリストやハッシュテーブルの形式で格納され、走査して閲覧、参照可能である。
【００２０】
本発明においては、以上のように構成することにより、メモリもしくはハードディスク１０１上に展開されたパースツリーの走査、閲覧、参照することで、ＲＴＬの機能記述データ内に記述された記述形式の確認、解析が可能である。過去の技術報告により多ビットの比較演算器は、擬似乱数による故障検出がされ難い回路（ランダムレジスタント）である。エンコーダやネストした条件分岐処理を持つ回路に関しても、テストデータが擬似乱買の場合には、条件分岐先に偏りが発生し、その結果、テストされない回路が残ってしまう。
パースツリーの走査、閲覧、参照により、例えば比較演算のノードを検索し、さらにオペランドであるレジスタもしくはネットのビット幅を参照し、例えば１２ビットを超えるような比較演算オペレータであれば、ＲＴＬの機能記述データのファイル名と行番号をＣＲＴに表示する。
【００２１】
図５は、前記検索処理の実施例として、１２ビット幅以上の比較演算記述を検索する時の一連の処理に関するフローチャートであり、図６はＣ言語のプログラム形式で記述した一例図である。
検索が開始されると、テーブルもしくはリストに格納されたノードを先頭からノードのポインタを走査し（５０１）、当該参照先のノードに関して１２ビット幅以上の比較演算のオペレータを検索して、該当するものがあれば、ＣＲＴにファイル名とライン番号を表示する（５０２）。ここで、テーブルもしくはリストの最後まで走査したならば（５０３）、検索処理を終了する。
図６の１〜７行目は、ノードツリー上の各ノードが保持している情報を格納する構造体を示している。ＦｉｌｅＮａｍｅとＬｉｎｅＮｕｍｂｅｒは、ＲＴＬの機能記述データのファイル名と行番号、Ｔｙｐｅはオペレーション、もしくはレジスタ、ポート、ネットなどのタイプを区別するための識別子、ＯｐｅＴｙｐｅはオペレータの識別子、ｎｅｘｔはテーブルもしくはリスト構造においてパースツリーを走査可能にするための次段のノードのポインタ、ｓｕｂはパースツリー上でサブツリー上でサブツリーのノードへの参照を行うためのポインタの集合を格納する。
【００２２】
図６の３２〜３４行目は、図５のステップ５０１，５０３で構成されるテーブルもしくはリスト上のパースツリーを走査するためのループ処理である。
図６の１０〜２６行目のｓｅａｒｃｈ関数は、図５のステップ５０２の処理を行うものである。引数ｐａｒｅｎｔにパースツリーのトップノードを受け、１５〜２５行目のｗｈｉｌｅ文によりパースツリーを探索する。１５行目のｇｅｔ ｎｏｄｅ関数は、サブツリーの集合からノードを一個だけとってくるものであり、１５行目のｗｈｉｌｅ処理によって全てのサブツリーが走査される。１７〜２０行目の処理はノードがオペレータであり、しかも比較演算であり、かつビット幅が１２ビット以上であれば、ファイル名と行番号を表示する処理である。１７行目のＥｑＯｐ、ＧｔＯｐ、ＬｔＯｐはそれぞれイコール、大なり、小なりの比較演算オペレータの識別子である。１８行目のｇｅｔ ｏｐｅｒａｎｄ ｂｉｔ ｗｉｄｔｈ関数は、オペランドのレジスタ、ポート、ネットのビット幅を返り値とするもので、ｖのノードのサブツリーを参照して行われるものである。また、ｓｈｐｗ関数は、該当したノードに該当する記述に関し、ファイル名と行番号をＣＲＴに表示する関数である。
以上の検索処理は２２行目で、ｓａｒｃｈ関数を再起的に呼び出すことで、パースツリーの先端のノードに至るまで実施される。
【００２３】
図１１の表（３）は、前記Ｔｙｐｅに格納するオペレーション、もしくはレジスタ、ポート、ネットなどのタイプを区別するための識別子を示す図である。
表（３）中のＯｐｅｒａｔｏｒはノードがオペレータであることを示し、Ｖａｒｉａｂｌｅはレジスタ、ポート、ネットのいずれかであることを示す。また、ｉｆＥｌｓｅはＩｆ−Ｅｌｓｅ型の、ＣａｓｅはＣａｓｅブランチ式の条件分岐のノードであることを示している。
【００２４】
図７は、前記ｎｅｘｔによるポインタ参照による走査可能なリスト構造のイメージ図である。
前記ｓｕｂの集合も別途リスト構造でサブツリーのノードをリスト構造で格納したものである。
【００２５】
（第１の実施例の変形）
第１の実施例では、乗算演算が１２ビットで行われたが、第２の実施例では、３２ビット以上の乗算演算を検索する場合である。この場合には、図６の１７行目のＯｐＴｙｐｅの比較先をＭｕｌｔＯｐ、１８行目のビット幅比較を３２にしたもので実施する。
【００２６】
図８は、Ｉｆ−Ｅｌｓｅの条件分岐先が３分岐以上の記述形式の検索を行う実施例をＣ言語の形式で示した図である。
前述のｓａｒｃｈ関数に代わり、ｓａｒｃｈ ｉｆ ｅｌｓｅ関数で行う。１０行目において、ノードがｉｆＥｌｓｅの条件分岐を行うノードがどうかを確認し、該当すれば１２〜２０行目のループ処理においてＩｆ Ｅｌｓｅのツリーを検索し、パースツリーの深さをｉにカウントする。その結果、ｉが３以上であれば、ファイル名と行番号をＣＲＴに表示する。
【００２７】
（第２の実施例）
図９は、本発明の第２の実施例に係る設計支援装置の構成図である。
図９では、入力されたＲＴＬの機能記述データと構文解析してメモリもしくはハードディスクに格納されたパースツリーのイメージを示したものである。図中、９０９は知識ベースライブラリであり、Ｉｆ Ｔｈｅｎのルールで構成されている。検索手段９０３は、知識ベースライブラリ９０９中のルールに従って検索処理を行う。
【００２８】
図１０は、図９における知識ベースライブラリの例として、１２ビット以上の比較演算器を探索するためのルールを示す図である。
１００１は検索すべきオペレータがＥｑＯｐであることを示し、１００２はビット幅が１２ビット以上であることを示している。これを参照した検索手段９０３は、１００１のＥｑＯｐを図５の１７行目のオペレータマッチングの条件とし、さらに１００２の１２ビット以上である条件を図５の１８ビット幅比較値として実施する。
図１０の１００３は、３２ビット以上の乗算演算をルール記述したものである。
【００２９】
このように、本発明においては、ＲＴＬをメモリもしくはハードディスク上にパースツリーとして展開し、オペレーションや条件記述が走査、検索可能となり、テストで障害となる大規模比較演算や等価検証、論理合成で障害となる大規模乗算回路のノードを検索して該当する記述箇所をファイル名、行番号で警告するようにした。この結果、テスト、等価検証、論理合成で障害となるＲＴＬの記述に関する修正をユーザに警告し、設計の早期に対処が可能となる。
また、検索すべき記述形式が知識ベースのライブラリとして保存されるため、ツールの成長に伴って既に解決済みの記述形式に関するルールを削除することができ、テスト、等価検証、論理合成のいずれかに特化したチェックが可能となる。
【図面の簡単な説明】
【００３０】
【図１】本発明の第１の実施例に係る設計支援装置の構成図である。
【図２】本発明で適用するパースツリーのイメージ図である。
【図３】本発明の第１の実施例に関する動作説明図である。
【図４】処理フロー記述を展開したパースツリーのイメージ図である。
【図５】検索処理の実施例を示す比較演算記述を検索する時の一連の処理フローチャートである。
【図６】図５におけるＣ言語のプログラム形式で示した図である。
【図７】ｎｅｘｔによるポインタ参照による走査可能なリスト構造のイメージ図である。
【図８】Ｉｆ Ｅｌｓｅの条件分岐先が３分岐以上の記述形式の検索を行う実施例をＣ言語の形式で示した図である。
【図９】本発明の第２の実施例に係る設計支援装置の構成図である。
【図１０】知識ベースライブラリの例として、１２ビット以上の比較演算器を検索するためのルールを示す図である。
【図１１】オペレータのタイプに関する識別子の割り当て例を示す図である。
【符号の説明】
【００３１】
１０１…メモリまたはハードディスク、１０２…ＣＰＵ、１０３…入力手段、
１０４…ＣＲＴ、１０５…システムバス、３０１…ＲＴＬの機能記述データ、
３０２…構文解析手段、３０３…検出手段、３０４…検索結果を表示するＣＲＴ、
３０５…パースツリーを走査、閲覧可能なテーブル、３０６…パースツリー、
３０８…ポインタ参照、９０１…ＲＴＬの機能記述データ、９０２…構文解析手段、
９０３…検索手段、９０４…検索結果を表示するＣＲＴ、９０５…テーブル、
９０６…パースツリー、９０８…ポインタ参照、９０９…知識ベースライブラリ、
１００１…検索すべきオペレータがＥｑＯｐであることを示す、
１００２…ビット幅が１２ビット以上であることを示す、
１００３…３２ビット以上の乗算演算をルール記述したもの。
【図１】
2005071001.tif 000003
【図２】
2005071001.tif 000004
【図３】
2005071001.tif 000005
【図４】
2005071001.tif 000006
【図５】
2005071001.tif 000007
【図６】
2005071001.tif 000008
【図７】
2005071001.tif 000009
【図８】
2005071001.tif 000010
【図９】
2005071001.tif 000011
【図１０】
2005071001.tif 000012
【図１１】
2005071001.tif 000013