JP2019121265A - 検証手順生成プログラム、検証手順生成方法、及び検証手順生成装置 - Google Patents

検証手順生成プログラム、検証手順生成方法、及び検証手順生成装置 Download PDF

Info

Publication number
JP2019121265A
JP2019121265A JP2018001833A JP2018001833A JP2019121265A JP 2019121265 A JP2019121265 A JP 2019121265A JP 2018001833 A JP2018001833 A JP 2018001833A JP 2018001833 A JP2018001833 A JP 2018001833A JP 2019121265 A JP2019121265 A JP 2019121265A
Authority
JP
Japan
Prior art keywords
verification
parameter
combination
value
combinations
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2018001833A
Other languages
English (en)
Inventor
正高 峯
Masataka Mine
正高 峯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2018001833A priority Critical patent/JP2019121265A/ja
Publication of JP2019121265A publication Critical patent/JP2019121265A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

【課題】本発明の課題は、検証項目及びテストシナリオを自動生成することを目的とする。【解決手段】上記課題は、記憶部に記憶された制御データによって定義される検証対象の動作情報をパラメータとして定義し、定義した該パラメータにおいて、関係する複数のパラメータ毎に、取り得る値の組合せ数を特定し、特定した組み合わせ数に基づいて各パラメータの値を設定し、論理検証の動作手順の単位で複数のパラメータの値が組み合わされた検証項目を示す組合せ検証項目表を作成し、前記組合せ検証項目表を参照して、前記検証項目ごとに、前記動作手順ごとのパラメータの値の組合せを用いて前記検証対象をテストするテストシナリオを生成する、処理をコンピュータに実行させる検証手順生成プログラムにより達成される。【選択図】図6

Description

本発明は、検証手順生成プログラム、検証手順生成方法、及び検証手順生成装置に関する。
近年、LSI(Large Scale Integration)/FPGA(Field-Programmable Gate Array)の開発は、その大規模化によって論理検証の工数が膨大となり問題になっている。そのため、LSIの論理検証に必要な検証項目やテストシナリオ等の検証環境を作成するオペレータの負担を軽減する様々な技術が提案されている。
初期設定情報が記述されたシナリオテンプレートと検証項目とに基づいて、テストシナリオを生成する技術、ユーザにより選択された検証項目の組み合わせと、検証対象の論理検証に関する概略シナリオデータとを用いて、検証シナリオデータを生成する技術等が知られている。
特開2008−210004号公報 特開2007−317096号公報
大規模化したLSI/FPGAの論理検証では、検証項目、テストシナリオ等の作成にかかる工数に加えて、シミュレーションに係る時間も大きな課題の一つである。シミュレータは数十Mgate規模の場合、数十Hz程度しかでないため、シミュレーションで、通常、例えば、1GHz性能のLSIの1秒のシミュレーションを実行しようとすると、シミュレータが100Hzの性能を出せたとして10M秒(凡そ4ヶ月程度)かかることになる。
論理検証の期間内において、如何に、効果のある検証パターンで論理検証を行うかが重要となってきている。
しかしながら、従来より、開発者によって検証項目に基づいてテストシナリオが作成されるため、同一の内容(重複)の異なる検証項目が存在した場合、トランザクションと更に組み合わせてテストベンチを生成する過程で、検証項目の重複の判別は困難となる。結果として、不要なテストシナリオを含んだままシミュレーションが行われてしまう。上述した従来技術では、この課題を解決することができない。
したがって、1つの側面では、論理検証のシミュレーションにかかる時間を削減する、検証項目及びテストシナリオを自動生成することを目的とする。
一態様によれば、記憶部に記憶された制御データによって定義される検証対象の動作情報をパラメータとして定義し、定義した該パラメータにおいて、関係する複数のパラメータ毎に、取り得る値の組合せ数を特定し、特定した組み合わせ数に基づいて各パラメータの値を設定し、論理検証の動作手順の単位で複数のパラメータの値が組み合わされた検証項目を示す組合せ検証項目表を作成し、前記組合せ検証項目表を参照して、前記検証項目ごとに、前記動作手順ごとのパラメータの値の組合せを用いて前記検証対象をテストするテストシナリオを生成する、処理をコンピュータに実行させる検証手順生成プログラムが提供される。
また、上記課題を解決するための手段として、検証手順生成方法、及び、検証手順生成装置とすることもできる。
論理検証のシミュレーションにかかる時間を削減する、検証項目及びテストシナリオを自動生成することができる。
一般的なテストベンチ構成を示す図である。 論理検証の工程を説明するためのフローチャート図である。 一般的なテストシナリオで記述される動作例を説明するためのフローチャート図である。 入力制御データとトランザクションの関連を説明するための図である。 本実施例における用語の概念を説明するための図である。 本実施例の検証手順生成部とテストベンチとの関係を説明するための図である。 本実施例における論理検証処理の全体フローを示す図である。 検証手順生成装置のハードウェア構成を示す図である。 検証手順生成部における入出力を説明するための図である。 パラメータ定義表のデータ構成例を示す図である。 メモリ定義表のデータ構成例を示す図である。 レジスタ以外の構造定義表のデータ構成例を示す図である。 レジスタに関する構造定義表のデータ構成例(その1)を示す図である。 レジスタに関する構造定義表のデータ構成例(その2)を示す図である。 組合せ検証項目表について説明するための図である。 検証構成表の例を示す図である。 組合せ詳細表の例を示す図である。 検証項目番号からテナント番号への変換例を説明するための図である。 階層単位の組合せ回避処理の例を説明するためのフローチャート図である。 階層間の組合せ回避処理の例を説明するためのフローチャート図である。 検証手順生成処理の全体の流れを説明するためのフローチャート図である。 論理積テーブル作成処理を説明するためのフローチャート図である。 検証項目テーブル作成処理を説明するためのフローチャート図である。 テストシナリオ生成処理の実行例を説明するためのフローチャート図である。 生成されたテストベンチの構造とデータの流れを説明するための図である。 図25のステップS51でのオーナー毎の処理を説明するためのフローチャート図である。 図25のステップS52でのトランザクションの生成処理を説明するためのフローチャート図である。 図25のステップS53でのトランザクションの送信処理を説明するためのフローチャート図である。
以下、本発明の実施の形態を図面に基づいて説明する。まず、集積回路の論理検証を行うための、一般的なテストベンチ構成について説明する。
図1は、一般的なテストベンチ構成を示す図である。図1において、通常、検証を行う際には、機能単位、もしくはユースケース単位に検証項目表1を作成し、DUT(Device Under Test)50の振る舞い(出力結果)が正しいか否かを確認する。検証項目表1において、1項目は基本的に1テストシナリオが対応し、流用は可能である。検証の環境は、図1に示すようなテストベンチ90を記述する。テストベンチ90は、テストプログラムである。
テストベンチ90は、厳密な時間の概念がないトランザクションレベル(TLM:transaction level modeling)で記述され、時間概念のある(即ち、クロックで動作する)ハード部(即ち、DUT50)をうまく結合するための仕組みを持つ構造が一般的である。テストベンチ90は、テストシナリオ2と、シナリオ切り替え4と、ドライバー5と、モニタ6と、疑似モデル7と、期待値比較部8とを有する。
テストシナリオ2には、検証項目表1の各項目に対応し、検証の手順が記述されている。シナリオ切り替え4が、検証目的に応じてテストシナリオ2を切り替えることで、トランザクションTRがテストシナリオ2から出力される。出力されたトランザクションTRは、ドライバー5と、疑似モデル7とに提供される。
ドライバー5は、入力されたトランザクションTRを複数の信号線、時系列に分割して、DUT50に送信する。DUT50は、Verilog等のハードウェア記述言語により表される所定の処理を受信した信号に対して行い、その結果として信号を出力する。DUT50から出力された信号は、テストベンチ90のモニタ6により受信される。
モニタ6は、受信した信号をトランザクションTRに再構築し、所定のダンプ用の記憶領域に受信した出力信号をダンプデータとして記録し、また、疑似モデル7と期待値比較部8とに提供する。トランザクションTRは、転送処理の単位データで転送され、人が理解し易い形式のデータである。
疑似モデル7は、モニタ6から受信したトランザクションTRを用いて、検証対象のハード部の後段の処理を疑似的に行うソフトウェアによるモデルである。期待値比較部8は、モニタ6から受信したトランザクションTRと、疑似モデル7によって処理された結果とを比較し、比較結果を出力する。
上述したテストベンチ90による論理検証は、論理設計工数の70%を占め、開発の長期化の要因の一つである。論理検証の主な工程について図2で説明する。
図2は、論理検証の工程を説明するためのフローチャート図である。図2において、論理検証は、
・仕様分析の工程a
・検証項目抽出の工程b
・テストベンチの開発(検証環境構築)の工程c
・テストシナリオ作成(テストデータ作成)の工程d
・シミュレーション(及びバグ解析)の工程e
を有する。
仕様分析の工程aでは、機能仕様書32を読み込んで、
・機能
・入出力信号(プロトコル)
・データフォーマット
・レジスタ
などの分析が行われる。機能仕様書32は、検証対象のハード部の機能を定めた仕様を記憶したデータファイル等である。
検証項目抽出の工程bでは、
・ユースケース分析/機能分析
等が行われる。この工程bにより検証項目表1が作成される。
テストベンチの開発の工程cでは、高いスキルを持つ開発者によって行われる工程であり、
・全体フレームワーク
・トランザクション生成
・シナリオIF
・ドライバー
・モニタ
・期待値モデル(擬似モデル)
・エラー挿入処理
等が行われる。
テストシナリオ作成の工程dでは、検証項目表1を使用して、テストシナリオ2を作成する工程である。検証項目表1の複数の項目のそれぞれに対応するテストシナリオ2が作成される。
シミュレーションの工程eでは、テストベンチ90上でテストシナリオ2を選択し、選択したテストシナリオ2に従ってシミュレーションが行われる。
品質を高めるためには、限られた時間(又は期間)内で、有効な検証データを大量にDUT50に送信可能とすることが望まれている。つまり、検証の割合を上げ、それ以外の工程は極力小さくすることである。
大規模LSI/FPGAでは、機能の複雑化により、テストベンチ90の開発規模や難易度が上がると共に、検証項目数は、数千項目におよび、テストシナリオ2を作成するだけでも、多大な工数を必要とする。特に、テストシナリオ2の作成は、検証項目に合わせフローを大量に記述しなければならない。共通化は可能だが、多人数で好き勝手に共通化されると、検証項目と一致するのかさえアヤフヤになるなどの問題点も多い。加えて、検証項目は、機能単位、ユースケース単位に作成するため、重複したデータが多量に存在し、無駄が多くなる。
上述した課題を解決するために、本実施例では、検証手法(各工程)の見直しと、定型化(ルール化)を行う。後述される定型化により、自動生成が可能となり無駄なテストパターンの排除とテストシナリオ開発工数の削減が可能となる。
<検証手法(各工程)の見直し>
無駄なテストパターンが多く発生するのは、検証項目抽出工程に起因するため、人手による検証項目策定をやめ、DUT50を動作させるためのパラメータから検証項目を生成することを考える。
検証項目抽出は、「機能仕様書を整理したものに過ぎない」との考えの基、逆に入力データ仕様から生成された検証項目書と、機能仕様書のリンクを明確化することで、機能漏れや記載漏れなどの上流バグの流失を早期に検出でき、品質向上が見込まれると考えられる。
仕様分析工程は、必ず、動作条件を明確化するため、従来のやり方とは大きく乖離しない。本実施例の特徴は、現状の検証項目抽出工程で、すべての入力データ、手順、タイミングをパラメータ化することである。
<定型化(ルール化)>
通常、DUT50の入出力はまちまちで、機能も動作手順も定型化は、規格化されているIPを除き、困難である。DUT50を動作させるため検証処理は、以下の動作が必要である。
(1)動作モード
リセット信号、動作イネーブル信号、変化タイミング(時間)などである。
(2)レジスタ設定
閾値や、機能切り替え、様々な演算のための定数などである。
(3)通信からの機能情報
例えば画像や、通信パケット等の入力データや、通信するための信号やり取り(プロトコル)の範囲、信号やパケットの投入タイミング(時間)などである。
(4)テストベンチの振る舞い
対向のシュード(動作モデル:DUT50の出力結果により動的に振る舞いを変える)や、エラー挿入などの仕組みなどである。
DUT50の実行には必ず、動作手順(大きくは、初期化と実行の2フェーズ)が存在する。初期化においては、レジスタ設定順番も規定されている。検証項目に合わせ、手順のコード化(テストシナリオ)が必要になる。(図3参照)。
これは、LSI/FPGAを制御するためのファームウエアの処理と同等となる。つまり、ファームウェアは、(2)レジスタ設定のみ、正常データのみとなる。(3)(4)もマッピングされている別ハードウェアのレジスタをアクセスすることになる。
現状のテストシナリオは複雑化し、定型化が困難(どんなLSI/FPGAでも同じルールで使用できるようにするのは難しい)な理由は、制御とデータ生成が混在しているためである。まず、制御も含めてデータ生成を完全に分離する。テストシナリオ2は、制御だけになり、シンプルになる。次に、制御の要素もデータとして扱うと、テストシナリオ2は定型化できる。
即ち、上記(1)〜(4)の動作を全て、DUT50を動作させるためのパラメータとして定義する。つまり、疑似モデル7のようなシュードの動作もコマンドとしてパラメータ化する。その際、動作異常やエラー挿入などもパラメータとする。
上述したように、発明者は、DUT50の動作を外部からのパラメータだけで制御可能とすることで、どんなLSI/FPGAであろうが、テストシナリオ2の作成方法を定型化することができることに着目した。
図3は、一般的なテストシナリオで記述される動作例を説明するためのフローチャート図である。図3において、テストシナリオ2がシナリオ切り替え4で選択されると、選択されたテストシナリオ2からトランザクションがドライバー5に提供され、ドライバー5は、トランザクションを分割して、複数の信号をDUT50へと送信を開始する。
トランザクションによって行われる動作を説明する。まず、ハード部(DUT50)をリセットする(ステップS21)。トランザクションにより、各種動作モード信号が設定され(ステップS22)、ドライバー5によって、必要なレジスタへ初期値の書き込みが行われる(ステップS23)。このステップS22及びS23は、検証項目によってフローが異なる。
トランザクションは、更に、動作を開始するためのレジスタへの書き込みをドライバー5に行わせ(ステップS24)、所定時間後、開始可能レジスタを読み込ませて(ステップS25)、開始可能か否かを判定させる(ステップS26)。開始可能でない場合(ステップS26のNo)、所定時間毎に、ステップS25が繰り返される。一方、開始可能の場合(ステップS26のYes)、時間調整後、ドライバー5により、DUT50に対して、様々なパケット送信や、レジスタ値の変更が行われる(ステップS27)。時間調整及びステップS27は、検証項目によってフローが異なる。
ドライバー5は、全てのトランザクションを終了したか否かを判断する(ステップS28)。終了していない場合(ステップS28のNo)、時間調整とステップS27とが繰り返される。一方、終了している場合(ステップS28のYes)、選択されたテストシナリオ2による論理検証を終了する。上述したステップS21〜S29は、論理検証全体を終了するまで繰り返し行われる。
従来では、開発者が上述した動作をプログラミングしていた。以下に、検証項目1の自動作成に加え、複数のテストシナリオ2を自動的に生成する本実施例について説明する。まず、発明者により着目され見出された手法について説明する。まず、概念とその定義を以下に示す。
<概念とその定義>
上述した定型化をうまく活用できるように、テストベンチ90は、TLMを前提に、全ての信号生成を可能とするトランザクションデータを定義する。本実施例において、トランザクションデータの項目の設定値を外側から定義することを「検証項目」とする。ここでは、トランザクションデータの項目をパラメータ、外側から定義する、実行できる検証項目を「テストシナリオ」と定義する。トランザクション生成の情報として、パラメータ定義、構造定義、メモリ定義を検証者が作成する。
図4は、入力制御データとトランザクションの関連を説明するための図である。図4において、入力制御データ111は、パラメータ定義表112と、メモリ定義表113と、構造定義表114とを有し、検証者によって作成される。
構造定義表114には、領域データと形式データとがあり、領域データがトランザクションの領域で、形式データはその領域を定めた形式で使用することを定義する。DUT50を様々な検証のために動作させるパラメータが、トランザクションの領域に全て用意されている必要がある.
パラメータ定義表112のみで定義される構造定義表114と、メモリ定義表113とパラメータ定義表112とで定義される構造定義表114とがある。
この例では、領域データ0−0及び形式データ0−0−0〜形式データ0−0−mと、領域データ0−n及び形式データ0−n−0〜形式データ0−n−mとが1つの構造定義表114に相当する。
この構造定義表114は、領域データ0−0〜0−nにより定義したトランザクション0−0から0−nで構成される。領域データ0−0及び形式データ0−0−0〜形式データ0−0−mとがトランザクション0−0に相当し、領域データ0−n及び形式データ0−n−0〜形式データ0−n−mとがトランザクション0−nに相当する。領域データ1−0〜1−nにより定義したトランザクション1−0から1−nで構成される構造定義表114も同様である。
また、パラメータ定義表112とメモリ定義表113とで定義される構造定義表114は、レジスタの制御に係る定義に相当し、領域データp−0〜p−nにより定義したトランザクション0−0から0−nで構成される。領域データp−0及び形式データp−0−0〜形式データp−0−mとがトランザクションp−0に相当し、領域データp−n及び形式データp−n−0〜形式データp−n−mとがトランザクション0−nに相当する。
ドライバー5及びモニタ6は、インタフェースIF0〜IFpを有する。DUT50との信号の送受信は、IF0〜IFpで行われる。IF0では、トランザクション0−0〜0−nに従った信号の送受信が行われる。他のIF1〜IFpにおいても対応するトランザクション1−0〜1−n、・・・、トランザクションp−0〜p−nに従った信号の送受信が行われる。
本実施例において、以降、上述した領域データを「オーナー」、形式データを「テナント」と呼ぶものとする。図5は、本実施例における用語の概念を説明するための図である。図5において、トランザクション−0〜トランザクション−kのそれぞれは、複数のオーナーで構成される。
トランザクション−0は、オーナー0−0〜オーナー0−nの領域データによって構成される。また、トランザクション−kは、オーk−0〜オーナーk−nの領域データによって構成される。他のトランザクションにおいても同様である。
更に、オーナー0−0に関連付けられる形式データは、テナント0−0−0〜0−0−mであり、オーナー0−nに関連付けられる形式データは、テナント0−n−0〜0−n−mであり、他オーナーについても同様に形式データが関連付けられる。各オーナーには操作するアドレスが設定され、テナントにはパラメータが設定される。
図5に示した概念において、発明者は、
(1)パラメータの組合せの数は膨大にならないか
(2)意味不明な検証項目にならないか
について考察した。
(1)パラメータの組合せの数は膨大にならないか
パラメータの値は、大きさ(Bit数)で範囲が決まる。通常検証を行う際には、Min/Max/典型値を使用する。ほとんどのパラメータは、Min/Max値のみで十分だが、DUT50の実装依存によっては、いくつかの典型値を必要とするケースもある。また一つのパラメータが決まると連動して決定されるパラメータ等も存在する。
タイミングに関しては、Min/Max値以外は、制約付ランダムを使用するのが望ましい(人が予想しない衝突などの可能性がある)。完全な検証を行う場合は、全てのパラメータの組合せはアンド論理で行う必要があり、Min/Max値だけだとしても2のn乗となり間違いなくパラメータの組合せは、爆発的に膨大になる。従って、制約が必要となり、グループ単位に行うことで、明確化すると共に、組合せ数を削減する。
(ア)パラメータ間の関係強度の設定
パラメータには、パラメータ間で影響しあうもの、影響しない(直交する)ものが存在する。ただし、直交するかどうかは、DUT50の実装依存である。直交するパラメータはオア論理で組み合わせると大幅なパラメータ削減が可能となる。関係強度は、アンド論理が必要なものをグループ分けする。また、組合せ数を抑制する目的で、強度を優先順位として扱う。閾値を越えた場合は、優先度が低い順にアンドをオアに変更し、調整する。
(イ)アンド組合せをトランザクション内に限定する
トランザクションの中身に着目すると、動作モードやデータ内容によっては、使用するパラメータが限定できる。即ちトランザクションの中身の設定を排他定義できるようにする。トランザクション領域毎に複数の構造定義表(テナント定義)を行うことで排他的に定義する。本実施例では、このデータの塊で組合せを管理する。
(2)意味不明な検証項目にならないか
(1)の(イ)のトランザクションをうまく使用すると、データの組合せの検証項目表1になる。図5に示すように、トランザクションは1又は複数のオーナーで構成され、オーナーは1又は複数のテナントで定義される。つまり、トランザクションはテナントの組合せで表現できる。テナント名を意味のある名前にすると、十分に検証項目として活用できる。
テストシナリオは、階層毎に、1以上のトランザクションを有し、複数のパラメータでトランザクションの形式データを定義する1以上のテナントが対応付けられ、トランザクションは、複数のテナントによって領域データを表すオーナーを1つ以上含むように構成する。本実施例では、このテナント(形式データ)の組合せの検証項目表1を自動生成することで、無駄なテストパターンの排除を行う。定型化と、パラメータ定義、構造定義、及びメモリ定義を行うことで、テストシナリオ2のソースコード及びテストベンチ90の自動生成を行う本実施例における検証手順生成部80(図6)について詳述する。
本実施例の実現方法は2つのフェーズに分けられる。
(1)制御データを読み込み、検証項目表1を作成し、テストベンチ90のソースコードを生成する。
(2)シミュレータで、テストデータを生成し、信号発生する。
アルゴリズムを(1)及び(2)で分担するいくつかの方法が考えられる。ここでは、シミュレーションの性能面や、テストベンチ90の使いやすさや、汎用面を考慮した以下の方法での実現方法を記載する。
上記(1)では、機能仕様書に含まれるテーブルを静的に展開したソースコードを生成する。上記(2)では、ループ変数から動的に、トランザクションを生成する。
図6は、本実施例の検証手順生成部とテストベンチとの関係を説明するための図である。図6において、検証手順生成部80は、検証項目表1と、テストシナリオ2と、シナリオ切り替え4と、トランザクションTRとを自動的に生成する。
既存の手法では、テストシナリオ2を自動生成できないが、本実施例では、検証項目表1に加えて、テストシナリオ2を自動的に生成する。
図7は、本実施例における論理検証処理の全体フローを示す図である。図7において、論理検証は、
・仕様分析の工程I
・パラメータ定義表の作成の工程II
・構造体定義表の作成の工程III
・テストベンチの開発の工程IV
・検証手順の生成(検証項目、テストシナリオの生成)の工程V
・シミュレーション(及びバグ解析)の工程VI
を有する。
仕様分析の工程Iでは、機能仕様書32を読み込んで、
・機能
・入出力信号(プロトコル)
・データフォーマット
・レジスタ
などの分析が行われる。機能仕様書32は、検証対象のハード部の機能を定めた仕様を記憶したデータファイル等である。
パラメータ定義表の作成の工程IIでは、
・全ての変数(レジスタ、データ)に固有名(パラメータ名)を付ける
・タイミング(時間)をパラメータ化
・制御をパラメータ化
・パラメータ値の試験値、デフォルト値(固定値)を明確化する
等が行われる。パラメータ定義表112が作成される。
構造体定義表の作成の工程IIIでは、
・領域を定義(オーナー構造)
レジスタの場合はアドレス範囲も定義
・領域の仕切り(パラメータ名使用)を定義(テナント構造)
・機能単位に分ける
等が行われる。メモリ定義表113及び構造定義表114が作成される。
テストベンチの開発の工程IVでは、
・ドライバー
・モニタ
・期待値モデル(擬似モデル)
・エラー挿入処理
等が行われる。検証者(又は開発者)は、全体のフレームワークを考えなくてよいため、スキル依存度を低減できる。それによって、本実施例により、検証者(又は開発者)の作業量を大きく削減でき、テストベンチ90の個別動作部分(テストベンチ個別動作部90−1)だけを記述すればよいことになる。テストベンチ個別動作部90−1は、システム記述言語により記述されたプログラムであり、図6において、ドライバー5と、モニタ6と、疑似モデル7と、期待値比較部8とを実現する。
検証手順の生成の(検証項目、テストシナリオの生成)の工程Vでは、
・組合せ検証項目表116
等が作成される。検証手順の生成の工程Vでは、主に、検証項目を作成し、検証項目に対応するテストシナリオ2を自動生成する。工程Vにより、組合せ検証項目表116と、テストベンチ部品117とが作成される。
組合せ検証項目表116では、構造定義表114毎に、1又は複数の検証項目が示される。テストベンチ部品117には、
・テストベンチのフレームワーク
・メイン(テスト)タスク部
・シナリオタスク部
・トランザクションIF用の関数部
が含まれる。メインタスク部は、組合せ検証項目表116の検証項目に対応する。
シミュレーションの工程VIでは、テストベンチ90上でテストシナリオ2を選択し、選択したテストシナリオ2に従ってシミュレーションが行われる。
上述した、本実施例における論理検証の工程I〜III、V、及びVIは、図8に示すようなハードウェア構成を有する検証手順生成装置100により実現される。図8は、検証手順生成装置のハードウェア構成を示す図である。
図8において、検証手順生成装置100は、コンピュータによって制御される情報処理装置であって、CPU(Central Processing Unit)11と、主記憶装置12と、補助記憶装置13と、入力装置14と、表示装置15と、通信I/F(インターフェース)17と、ドライブ装置18とを有し、バスB1に接続される。
CPU11は、主記憶装置12に格納されたプログラムに従って検証手順生成装置100を制御するプロセッサに相当する。主記憶装置12には、RAM(Random Access Memory)、ROM(Read Only Memory)等が用いられ、CPU11にて実行されるプログラム、CPU11での処理に必要なデータ、CPU11での処理にて得られたデータ等を記憶又は一時保存する。
補助記憶装置13には、HDD(Hard Disk Drive)等が用いられ、各種処理を実行するためのプログラム等のデータを格納する。補助記憶装置13に格納されているプログラムの一部が主記憶装置12にロードされ、CPU11に実行されることによって、各種処理が実現される。
入力装置14は、マウス、キーボード等を有し、ユーザである検証者(又は開発者)が検証手順生成装置100による処理に必要な各種情報を入力するために用いられる。表示装置15は、CPU11の制御のもとに必要な各種情報を表示する。入力装置14と表示装置15とは、一体化したタッチパネル等によるユーザインタフェースであってもよい
。通信I/F17は、有線又は無線などのネットワークを通じて通信を行う。通信I/F17による通信は無線又は有線に限定されるものではない。
検証手順生成装置100によって行われる処理を実現するプログラムは、例えば、CD−ROM(Compact Disc Read-Only Memory)等の記憶媒体19によって検証手順生成装置100に提供される。
ドライブ装置18は、ドライブ装置18にセットされた記憶媒体19(例えば、CD−ROM等)と検証手順生成装置100とのインターフェースを行う。
また、記憶媒体19に、後述される本実施の形態に係る種々の処理を実現するプログラムを格納し、この記憶媒体19に格納されたプログラムは、ドライブ装置18を介して検証手順生成装置100にインストールされる。インストールされたプログラムは、検証手順生成装置100により実行可能となる。
尚、プログラムを格納する記憶媒体19はCD−ROMに限定されず、コンピュータが読み取り可能な、データ構造(structure)を有する1つ以上の非一時的(non-transitory)な、有形(tangible)な媒体であればよい。コンピュータ読取可能な記憶媒体として、CD−ROMの他に、DVD(Digital Versatile Disk)ディスク、USBメモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリであっても良い。
主記憶装置12、補助記憶装置13、種々の外部記憶装置を含めて、記憶部130と呼ぶものとする。記憶部130には、図6の検証手順生成部80と、テストベンチ個別動作部90−1と、ドライバー5と、モニタ6と、DUT50のそれぞれのプログラムが記憶され、CPU11がそれらを実行することにより、対応する機能が実現される。
先ず、本実施例における入出力について説明する。図9は、検証手順生成部における入出力を説明するための図である。図9において、検証手順生成部80に対して、制御データ81と、パターン数制限83とが入力される。
制御データ81は、パラメータ定義表112、メモリ定義表113、及び構造定義表114を含む。
(1)パラメータ定義表112
データの最小単位で、DUT50を実行する機能を確定するモード(レジスタ値)や、データの中身(例えばパケットフォーマットの項目)、信号値、信号動作タイミング変数などを指定する。テストベンチ制御(具体的には、擬似モデル7の制御)のための変数なども含まれる。即ち、検証において、1機能を確認する際に固定される変数が指定される。
(2)メモリ定義表113
レジスタ設定に必要な情報が定義されている。開始アドレス、領域の大きさなどを含む。レジスタ設定用のトランザクションの構造定義表114にリンクされる。
(3)構造定義表114
パラメータのトランザクション単位の集合を表す。DUT50のインターフェースの機能信号単位や、データやり取り単位、テストベンチ90の制御単位など、制御の集合や、データの塊の集合が定義される。テストシナリオ2とドライバー5及びモニタ6とのインターフェースフォーマットの定義となる(図6参照)。
パターン数制限83は、本実施例において生成されるパターン振り回数の上限を示すデータである。パターン振り回数が上限(閾値)を超えた場合、組合せを緩和(&を|に変更)し、再度実行し、上限内に収まるまで繰り返えされる。
組合せ検証項目表116は、オーナー毎に関連付けられたテナントを1レコードとして示したテーブルである。詳細は後述される。テストベンチ部品117は、テストベンチ個別動作部90−1に組み込まれる。
次に、制御データ81に含まれる各定義表112〜114のデータ構成例について説明する。図10は、パラメータ定義表のデータ構成例を示す図である。図10において、パラメータ定義表112は、パラメータ毎に定義される情報を示したテーブルであり、パラメータ名、ビット数、試験値、関係強度、連動関数、生成関数、回数、定数0〜定数n等の項目を有する。
パラメータ名は、パラメータの識別名を示す。パラメータ名は固有名である。ビット数は、パラメータの領域サイズを示す。試験値は、試験する値を指定する。試験する値を特定しない場合、試験値は空欄(null)となる。
関係強度は、関係のあるパラメータ同士を同一番号で示す。番号の大小に意味は無い。パラメータ設定はANDとなるが、パターン数が上限の閾値を超えた場合にはORに切り替えられる。連動関数は、他パラメータによって値が決定するものの論理を記述した関数を指定する。連動するパラメータ名が指定される。
生成関数は、制約付きランダム発生などの論理を記述した関数を指定する。回数は、生成関数の呼出し回数を指定する。定数0〜定数nは、パラメータ値を固定値で使用したい場合の値を指定する。テナント構造で指定される。
図11は、メモリ定義表のデータ構成例を示す図である。図11(A)において、メモリ定義表113は、メモリ毎に図11(B)に示すような領域に関する情報を定義し、メモリ名、ワード数、ビット幅、絶対アドレス、開始アドレス等の項目を有する。
メモリ名は、メモリ領域単位に与えられた識別名を示し、メモリ定義表113において固有である。具体的には、レジスタを特定する値である。ワード数は、図11(B)に示すように領域内のワード数nを示す。ビット幅は、図11(B)に示すように領域内のビット幅を示す。
絶対アドレスは、記憶部130内の基点となるアドレスを示す。開始アドレスは、絶対アドレスからの相対アドレスを示し、絶対アドレスに示された相対アドレスを加算することで、メモリ名で特定される領域の開始アドレスとなる。
図12は、レジスタ以外の構造定義表のデータ構成例を示す図である。図12において、構造定義表114は、図11で説明したメモリ定義表113で定義されるメモリ(即ち、レジスタ)以外について定義したテーブルであり、オーナー毎に定義したオーナー定義表114aと、テナント毎に定義したテナント定義表114bとを有する。レジスタに関する構造定義表114は、図13で説明する。
オーナー定義表114aは、オーナー(領域データ)毎の定義情報を示し、オーナー構造名、処理階層、トランザクション、項目名、ビット数等の項目を有する。オーナー構造名は、オーナーを特定する識別名を示し、オーナー定義表114a全体において固有である。
処理階層は、定義情報(トランザクション)の実行階層を指定する。実行階層間の組合せはANDになる。トランザクションは、トランザクションを特定する識別名を示す。同一トランザクションで複数のオーナーを使用する場合には、同じ識別名が指定される。同一識別名の複数のオーナーが一つのトランザクションにマッピングされる。項目名は、領域の名前を指定する。ビット数は、大きさを指定する。
テナント定義表114bは、テナント(形式データ)毎の定義情報を示し、テナント構造名、オーナー名、項目名、振る舞い、ビット数等の項目を有する。テナント定義表114bでは、1つのテナント構造に対して複数の項目名が対応付けられる。
テナント構造名は、テナントを特定する識別名を示す。オーナー名は、属するオーナーを特定する識別名を指定する。項目は、対応パラメータ名を指定する。対応パラメータが無い場合、当該テナント構造内で固有な識別名を指定する。この場合、生成関数、ビット数が指定される。
振る舞いは、項目名がパラメータの場合、省略(“試験値”を選択とみなす)か、“連動関数”、“生成関数”(値はパラメータ表に指定した関数値で生成、組合せは“回数”)等が指定される。定数0〜定数nが指定(値が固定され、組合せの対象から外れる)される。また、パラメータで無い場合、振る舞いには、値を生成する関数が指定される。
ビット数は、項目名がパラメータの場合は、空欄か、或いは同じ値を示す。パラメータではない場合、ビット数には領域のサイズが指定される。ビット数の合計は、オーナーと同じにしなければならない。
オーナー定義表114aのオーナー構造名とテナント定義表114bのオーナー名とにより互いに関連付けされる。
次に、レジスタに関する構造定義表114について図13及び図14で説明する。図13は、レジスタに関する構造定義表のデータ構成例(その1)を示す図である。図13では、レジスタに関する構造定義表114のうち、オーナー定義表114gを示し、オーナー構造名、処理階層、トランザクション、メモリ名、開始ワード、項目名、ビット数、読み書き種別、初期値、優先度、リセット1〜リセットn等の項目を有する。オーナー定義表114gでは、1つのオーナー構造に対して複数の項目名が対応付けられる。
オーナー構造名は、オーナーを特定する識別名を示し、オーナー定義表114g全体において固有である。処理階層は、当該構造定義(トランザクション)の実行階層を指定する。実行階層間の組合せはANDになる。トランザクションは、同一トランザクションで複数のオーナーを使用する場合のみ、同じ識別名を示す。同一識別名の複数のオーナーが一つのトランザクションにマッピングされる。
メモリ名は、当該構造定義の領域が対応するメモリの識別名を指定する。開始ワードは、対応するメモリの開始ワード位置を指定する。項目名は、領域の識別名を指定し、該当構造定義内では固有である。ビット数は、項目のビット数を指定し、メモリ定義表113のビット数と一致するか、整数倍である。
読み書き種別は、アクセス制限を示す。一例として、ビット単位に制限を示してもよい。制限は、u:無効、r:Readのみ、w:Writeのみ、b:Read/Write両方等で示される。初期値は、論理検証時の初期値を示す。優先度は、レジスタ書込み順番の優先度を指定する。数字の小さい順にWriteする。最大値は1つだけで最後に書く(スタートレジスタになる)。リセット1〜リセットnのそれぞれでは、リセットを指定する。1を示す項目がリセットされる。また、t(X)を示す場合、t(X)を指定した項目の値がXになったときに実行することを示す。t(X)のtはtriggerである。
図14は、レジスタに関する構造定義表のデータ構成例(その2)を示す図である。図14では、レジスタに関する構造定義表114のうち、テナント定義表114hを示し、テナント構造名、オーナー名、項目名、振る舞い、ビット数等の項目を有する。テナント定義表114hでは、1つのテナント構造に対して複数の項目名が対応付けられる。
テナント構造名は、テナントを特定する識別名を示し、テナント定義表114h全体で固有である。オーナー名は、属するオーナーを特定する識別名を指定する。項目名は、対応パラメータ名を指定する。対応するパラメータが無い場合は、当該テナント構造内で固有な識別名を指定する。この場合、生成関数、ビット数が指定される。
振る舞いは、項目名がパラメータの場合、省略(“試験値”を選択とみなす)か、“連動関数”、“生成関数”(値はパラメータ表に指定した関数値で生成、組合せは“回数”)等が指定される。定数0〜定数nが指定(値が固定され、組合せの対象から外れる)される。また、パラメータで無い場合、振る舞いには、値を生成する関数が指定される。
ビット数は、項目名がパラメータの場合は、空欄か、或いは同じ値を示す。パラメータではない場合、ビット数には領域のサイズが指定される。ビット数の合計は、オーナーと同じにしなければならない。
オーナー定義表114gのオーナー構造名とテナント定義表114hのオーナー名とにより互いに関連付けされる。
次に、出力について説明する。まず、組合せ検証項目表116について説明する。図15は、組合せ検証項目表について説明するための図である。図15では、3つのトランザクションがあった場合のオーナーとテナントの対応関係を定義した対応付けリスト115aを示している。
この例では、トランザクション0に対して、1つのオーナー0が対応付けられ、更に、2つのテナント1−0と1−1とが対応付けられている。同様に、トランザクション1に対しては、1つのオーナー1、3つのテナント2−0、2−1、及び2−3が対応付けられている。また、トランザクション2に対しては、2つのオーナー2及び3が対応付けられ、オーナー2に対して2つのテナント3−0及び3−1が対応付けられ、オーナー3に対してオーナー3に対して1つのテナント4−0が対応付けられている。
組合せリスト115bは、この対応付けリスト115aから得られる。組合せリスト115bは、組合せ検証項目表116で示される全ての検証項目の構成の概要を示している。組合せリスト115bは、トランザクション0、1、及び3のテナントを組み合わせることで作成される。
対応付けリスト115aを参照して、トランザクション毎に、オーナーのうちテナント数が最大の値を採用することで、組合せの検証項目を全て抽出することができる。上述の対応付けリスト115aのデータ例では、トランザクション0では、オーナー数は「1」及びテナント数は「2」である。トランザクション1では、オーナー数は「1」及びテナント数は「3」である。トランザクション2では、オーナー数は「2」であるため、いずれかテナント数が最大となる数を採用する。この例では「2」又は「1」であるため、「2」を採用する。従って、組合せの検証項目の総数は、
2×3×max(2,1)=12
を得る。
組合せリスト115bに示すように、検証項目0〜11までの12個が作成される。検証項目0〜11では、トランザクション0〜2のそれぞれに対応付けられるテナントが組み合わされている。
上述したように検証項目を作成した場合の組合せ検証項目表116のデータ構成例について以下に示す。図16は、検証構成表の例を示す図である。図16において、検証構成表116−1は、検証項目毎に検証構成を示すテーブルであり、検証項目名、パターン数、階層1、階層2、階層3等の項目を有する。
検証項目名は、検証項目を特定する識別名を示す。パターン数は、階層1〜nのパターン数の総積を示す。階層1〜階層3は、フェーズを表し、フェーズ内のパターン数を示す。フェーズとして、初期化、実行等がある。
階層1〜3それぞれは、テナントの総数と、利用されるテナントの識別名とを示す。テナントの総数は、各階層のパターン数を示す。テナントの識別名は、この例では、tenantN_nの場合、Nはオーナー番号を特定し、nは特定されたオーナーにおけるテナントを特定する。
図16に示す検証構成表116−1の最後の検証項目「TEST_nnnnn」では、パターン数は、各階層のパターン数を用いて、6×32×81により15552が示されている。また、テナント識別名の最後の文字x,y,z,o,及びpはテナントの最大数を示すことになる。
図17は、組合せ詳細表の例を示す図である。図17において、組合せ詳細表116−2は、検証項目毎に各テナントによって与えられるパラメータ情報を示すテーブルである。組合せ詳細表116−2は、検証項目名、構造定義、パターン、論理、パラメータ、値1〜値12等の項目を有する。
検証項目名は、検証項目を特定する識別名を示す。構造定義は、テナントを特定する識別名を示す。パターンは、関連するパラメータの個数の最大数(max)と、利用数(use)とを示す。論理は、AND又はOR(以下記号で表される場合がある)を示す。パラメータは、パラメータを特定する識別名を示す。値1〜値12は、パラメータの値を示す。連動関数や、生成関数の場合、値「*」が示される。連動関数の場合、連動するパラメータと同じ値であることを意味する。
図9に示すテストベンチ部品117は、テストベンチ個別動作部90−1に組み込まれる分であり、System Verilog, SystemC等のシステム記述言語で記述される。テストベンチ部品117には、テストベンチ固有部から呼び出す(コールする)サービス関数(関数部)が含まれている。この関数部のアルゴリズムについて以下に詳述する。
関数部は、主に以下の動作を行う。
(1)制御データ81を読み込み、組合せ検証項目表116を作成し、テストベンチ90のソースコードを生成する。
(2)シミュレータで、テストデータを生成し、信号を発生する。
上述(1)及び(2)の内容は、アルゴリズム(C又はC++等のソフトウェア)と、出力結果として生成されたテスト部品の処理アルゴリズム(SystemVerilog又はSystemCなどのシステム記述言語)とにより表現される。
本実施例における基本方式は、全体の処理を全て組合せで管理し、1処理の番号から個々の処理を確定する。ここでは、シナリオ番号からテナントを決定するループ番号からパラメータの値を決定する(関連強度が高い場合&とみなす)、方法に使用している。以下に処理番号から、設定値のインデックス番号を確定する計算式を示す。
組合せを作りたいA,B,Cをそれぞれ、
A[n]={A0,A1,A2,..,An} n=0,1,2,3..
B[m]={B0,B1,B2,..,Bm} m=0,1,2,3..
C[k]={C0,C1,C2,..,Bk} k=0,1,2,3..
とする。A−B−Cの順で組み合わせると、
Aインデクス番号 = (n-1) - (処理番号 % (n*m*k)) / (m*k) ;
Bインデクス番号 = (m-1) - (処理番号 % (m*k)) / k ;
Cインデクス番号 = (n-1) - (処理番号 % k) ;
となる。ただし、処理番号は逆順となる。ここで、検証項目番号からテナント番号への変換例について図18に示す。図18は、検証項目番号からテナント番号への変換例を説明するための図である。
図18(A)では、オーナーとテナントとの対応関係の例を示している。オーナー「Owner0」には4つのテナントが対応付けられ、オーナー「Owner1」には3つのテナントが対応付けられ、オーナー「Owner2」には2つのテナントが対応付けられている。これらの対応付けを配列use[]で表すと、
Owner0のテナント数はuse[0]=4で表され、
Owner1のテナント数はuse[1]=3で表され、
Owner2のテナント数はuse[2]=2で表される。
更に、Owner0、Owner1、そしてOwner2の順番で、テナントのインデックスを並べて数字を作成し、Owner0,1,2を桁として配列max[]で表現すると、
Owner0の組合せ桁数はmax[0]=24で表され、
Owner1の組合せ桁数はmax[1]=6で表され、
Owner2の組合せ桁数はmax[2]=2で表され、
max[3]=1で表される。
そして、オーナーのテナント取得計算式は、
Owner0のテナント取得計算式=use[0]-1-(r_no%max[0])/max[1]で表され、
Owner1のテナント取得計算式=use[1]-1-(r_no%max[1])/max[2]で表され、
Owner2のテナント取得計算式=use[2]-1-(r_no%max[2])/max[3]で表される。
図18(B)では、上述したテナント取得計算式により得られるテナント名を一覧表で示している。図18(B)に示す一覧表は、図18(A)のオーナーとテナントとの対応関係に基づいて、所定の組合せ規則に従って組合せた場合の表に相当し、no、オーナーの識別名毎のテナント[配列番号]=テナント名、r_no等の項目を示している。
noは、組合せが作成された順に与えられ、組合せを特定する番号(組合せ番号)である。テナント[配列番号]=テナント名は、組合せ番号で特定されるテナントの組合せを示している。r_noは、上述した本実施例のテナント取得計算式を単純化するためのnoの逆順を示す。
本実施例では、パラメータの組合せが膨大にならないように制約を与える。制約には、大きく以下の(A)及び(B)の2種類を設定する。
(A)パラメータの組合せの制約
完全な、ブラックボックス検証を行うためには、パラメータの値は、取りうる全ての値を使用し、パラメタを全て組み合わせて(AND)シミュレーションしなければならないので有限時間内には終わらない。大規模LSIでは、パラメータ数が、数百となるため、検証の値、組合せに制約を持たせる必要がある。
入力となる制御データ(パラメータ)は、テストシナリオ2を自動生成するにあたり以下の制約を定義する。
(ア)パラメータの試験値
検証に必要な値(最小値、最大値、典型値など)を任意に設定する。
(イ)関係強度
パラメータ同士の関係が深いものを定義する。関係が深いパラメータ群はANDで値を組合せる。関係が浅いパラメータはORとなる。ANDの組合せ数は、総積となり、ORは、相手との組合せは何でも良いため、足し算ではなく最大値でよい。テナント内のみでの組合せとなる。
一例として、カッコ内は、試験値の数
A(3)&B(6)|C(2)&D(3)|E(6)
は、A(3)&B(6)が最大組合せ数「18」なので、組合せ数は18となる。
(ウ)連動関数
他のパラメータに連動するパラメータを規定する。連動元のパラメータによって設置される関数を指定することで、複数のパラメータは1つに集約できる。
(B)シナリオ生成のための制約
トランザクションを定義する際、それを構成する項目は、同じレベルでの実行単位でなくてはならない。実行単位は、大きく、初期化フェーズと、通常動作に分類できる。さらに初期化フェーズなどは、手順が存在し、その順番に合わせて実行しなければならない。
つまり、シナリオを生成するためには、階層を意識する必要がある。また、これは、初期化フェーズ完了後(初期化時のパラメータを固定化し)、通常動作時のパラメタを与えることになるため、初期化トランザクションの変数と、通常動作時のトランザクションの変数は必然的に&になる。これは、組合せの爆発を誘発する可能性がある。
(ア)処理階層の指定
トランザクションの実行単位の階層を指定する。例えば、初期化フェーズで実行するトランザクションの処理階層を最上位0とし、動作フェーズで実行するトランザクションを1にする。動作フェーズで実行するトランザクション内でさらに実行順番を規定する場合は、2にする。以下同様である。このようにして、処理階層条件を付与する。通常2階層、多くても3階層である。例えば、通信系であれば、初期化(信号設定や、レジスタ設定)が1、パケット種別設定や動的レジスタ設定が2、パケット生成が3になる(2と3は分けなくても良い)。
(イ)レジスタの実行優先度
レジスタは、初期化設定、実行開始設定、及び動的設定に分類できる。これらを設定優先フラグで規定する。
以下に、検証手順生成部80によって行われる関係強度による組合せの回避処理の例を説明する。階層単位で計算した後、階層間で実施する。まず、階層単位の組合せ回避処理について説明する。
図19は、階層単位の組合せ回避処理の例を説明するためのフローチャート図である。図19では、処理例も合わせて示している。階層単位の組合せ回避処理は、全ての階層に対して組合せ数を決定するまで、階層毎に行われる。
図19において、階層単位の組合せ回避処理が開始されると、階層単位の最大組合せ数を入力する(ステップS11)。検証構成表116−1及びテナント定義表114hを参照して、パラメータ定義表112を用いて、階層内のテナントにあるパラメータのうち、関係強度の番号が同じパラメータを集めて、組合せ数(総積)を求める(ステップS12)。そして、組合せ数が、予め定めた最大組合せ数を超えたか否かを判断する(ステップS13)。
組合せ数が最大組合せ数を超えていない場合(ステップS13のNo)、処理対象の階層の組合せ数として決定し(ステップS15)、この階層単位の組合せ回避処理を終了する。
一方、組合せ数が最大組合せ数を超えている場合(ステップS13のYes)、最大組合せ数をこえている関係高度の番号のパラメータの組合せ数をORにし(ステップS14)、ORにした組合せ数を処理対象の階層の組合せ数として決定し(ステップS15)、この階層単位の組合せ回避処理を終了する。
処理例では、最大組合せ数を3000として、上記階層単位の組合せ回避処理を説明する。関係強度1にはaaa、bbb、ccc、及びdddのパラメータが存在し、それぞれ取りえる値が4値、7値、6値、及び21値であるとする。関係強度1に関して、&でパターン数を算出する(ステップS12)。
aaa&bbb&ccc&ddd
より、3528パターンであることが分かる。
関係強度2にはeee、fff、及びgggのパラメータが存在し、それぞれ取りえる値が3値、10値、及び5値であるとする。関係強度2に関して、&でパターン数を算出する(ステップS12)。
eee&fff&ggg
より、150パターンであることが分かる。
関係強度3にはhhh、iii、及びjjjのパラメータが存在し、それぞれ取りえる値が5値、3値、及び2値であるとする。関係強度3に関して、&でパターン数を算出する(ステップS12)。
hhh&iii&jjj
より、30パターンであることが分かる。
更に、パターン数のうち最大数を取得する(ステップS12)。
aaa&bbb&ccc&ddd | eee&fff&ggg | hhh&iii&jjj
より、3528パターンを得る。即ち、最大数を示すaaa&bbb&ccc&dddのパターン数が採用される。
この場合、取得した3528パターンが最大組合せ数「3000」を超えているため(ステップS13のNo)、関係強度1が最大組合せ数を超えているためORにする(ステップS14)。つまり、
aaa|bbb|ccc|ddd
とし、21パターンを得る。取りえる値が最も大きいパラメータはdddであり、その値の数は21である。
よって、処理対象の階層の組合せ数は、関係強度1に対してORとした、
aaa|bbb|ccc|ddd | eee&fff&ggg | hhh&iii&jjj
により求められ、つまり、最大値をとるeee&fff&gggが150パターンであるから、150パターンが組合せ数として決定される。
図20は、階層間の組合せ回避処理の例を説明するためのフローチャート図である。図20の階層間の組合せ回避処理では、全階層に対する最大組合せ数を入力し(ステップS31)、階層[i]の変数iを初期値「0」に設定する(ステップS32)。
階層[i]までの階層[i]までの最大値の総積を求めて、組合せ数を得る(ステップS33)。組合せ数は、
Figure 2019121265
により得られる。
組合せ数を得た後、取得した組合せ数は、最大組合せ数を超えたか否かを判定する(ステップS34)。最大組合せ数を超えていない場合(ステップS34のNo)、ステップS36へと進む。一方、最大組合せ数を超えた場合(ステップS34のYes)、階層[i]に属するテナントの組合せを全てORにし、テナント内の組合せを1つにする(ステップS35)。
そして、全階層を終了したか否かを判定する(ステップS36)。未処理の階層がある場合(ステップS36のNo)、変数iを1インクリメントし(ステップS37)、ステップS33へ戻り上述した同様の処理を繰り返す。一方、全階層を終了した場合(ステップS36のYes)、この階層間の組合せ回避処理は終了する。
次に、検証手順生成部80による検証手順生成処理の全体の流れについて説明する。図21は、検証手順生成処理の全体の流れを説明するためのフローチャート図である。図21において、検証手順生成部80は、パターン数の最大値を閾値として読み込み(ステップS201)、制御データ81を読み込む(ステップS202)。
次に、検証手順生成部80は、パラメータ定義表112からパラメータテーブル712を作成する(ステップS203)。パラメータテーブル712は、パラメータ名、ビット数、試験値例スト[n]、連動関数名、生成関数名及び回数、関係強度、Const_リスト[n]等の項目を有する。各項目は、パラメータ定義表112の項目に対応する。
検証手順生成部80は、構造定義表114からオーナー構造テーブル714a、714g及びテナント構造テーブル714b、714hを作成する(ステップS204)。
オーナー構造テーブル714a、714gは、構造名(オーナー名)、処理階層、トランザクション名、項目[n]等を有し、項目[n]は、項目名、ビット数、レジスタ読書き種別、レジスタ初期値、レジスタ優先度等の要素を有する。更に、レジスタのみの場合、オーナー構造テーブル714gは、更に、メモリ名、メモリ開始位置等の項目を有する。
テナント構造テーブル714b、714hは、構造名(テナント名)、項目リスト[n]、オーナー名、組合せ数、論理積等の項目を有し、項目リスト[n]は、項目名、ビット数、パラメータフラグ(ON:項目=パラメータ)、振る舞い等の要素を有する。
オーナー構造テーブル714a、714g及びテナント構造テーブル714b、714hは、図12〜図14に示されるテーブルを、テストベンチ90で動作可能な形式で記述したテーブルである。項目名、項目数は適宜変更可能である。
また、検証手順生成部80は、メモリ定義表113からメモリテーブル713aを作成する(ステップS205)。メモリテーブル713aは、メモリ名、開始アドレス、終了アドレス等の項目を有する。
次に、検証手順生成部80は、論理積作成処理(図22)を行う(ステップS206)。論理積作成処理により論理積テーブル715が出力される。論理積テーブル715は、関係強度、組合せ数、項目リスト[n]等の項目を有し、項目リスト[n]は、パラメータ名、変化数等の要素を有する。
更に、検証手順生成部80は、検証項目テーブル作成処理(図23)を行う(ステップS207)。検証項目テーブル作成処理により検証項目テーブル716aが出力される。検証項目テーブル716aは、検証項目名、パターン数、階層[n]等の項目を有し、階層[n]は、パターン数、テナント名[m]等の要素を有する。検証項目テーブル716aは、検証構成表116−1(図16)と、組合せ詳細表116−2(図17)の内容を含む。
検証手順生成部80は、検証項目テーブル716aを用いて、検証項目の数だけ繰り返し処理することにより組合せ検証項目表116を出力する(ステップS208)、
組合せ検証項目表116が出力されると、検証手順生成部80は、テストシナリオ生成処理を行う(ステップS209)。テストシナリオ2が記憶部130に出力され、この検証手順生成を終了する。その後、テストベンチ90によって、自動生成されたテストシナリオ2が読み込まれ、トランザクションTRが出力されることで、DUT50の論理検証を行われる。
図21のフローチャートにおいて、ステップS201及びS202の処理はデータ読み込み部に相当し、ステップS203の処理はパラメータ作成部に相当し、ステップS204の処理は定義表作成部に相当する。また、ステップS205の処理は、メモリテーブル作成部による処理に相当する。
上述したフローチャートにおいて、ステップS206の論理積テーブル作成処理は、論理積テーブル作成部の一例であり、ステップS207の検証項目テーブル作成処理は、検証項目テーブル作成部の一例である。また、論理積テーブル作成部及び検証項目テーブル作成部は、組合せ検証項目作成部の一例である。ステップS209のテストシナリオ生成処理は、テストシナリオ生成部の一例である。
図22は、図21のステップS206での論理積テーブル作成処理を説明するためのフローチャート図である。図22において、論理積テーブル作成処理は、オーナー構造テーブル714a(又は714g)からオーナーを1つ選択し、選択したオーナーのテナント構造テーブル714b(又は714h)を決定する(ステップS251)。
決定したテナント構造テーブル714b(又は714h)から項目を1つ取得し(ステップS252)、取得した項目がパラメータか否かを判断する(ステップS253)。パラメータでない場合(ステップS253のNo)、次の項目をステップS252へと戻り次の項目を取得し(ステップS252)、パラメータか否かを判断する(ステップS253)処理を繰り返す。一方、パラメータの場合(ステップS253のYes)、パラメータテーブル712からパラメータの情報を取得する(ステップS254)。
取得したレコードで示される振る舞いは試験値か否かを判断する(ステップS255)。振る舞いが試験値の場合(ステップS255のYes)、変化数に試験値数を設定し(ステップS256)、ステップS260へと進む。一方、振る舞いが試験値でない場合(ステップS255のNo)、更に、振る舞いは生成関数か否かを判断する(ステップS257)。生成関数の場合(ステップS257のYes)、変化数に呼出回数を設定し、ステップS260へと進む。一方、生成関数でない場合(ステップS257のNo)、変化数に1を設定し(ステップS259)、関数強度をキーとした論理積テーブル715を作成する(ステップS260)。
論理積テーブル715は、関係強度毎に、組合せ数、項目リスト[m]等の項目を有し、項目リスト[m]は、パラメータ名、変化数等の要素を有する。
作成された論理積テーブル715を参照して、関係強度毎の組合せ数を求める(ステップS261)。関係強度nの組合せ数は、
Figure 2019121265
で表されるように、総積により求められる。
組合せパターン数が求まると、組合せ数が最大組合せ数を超えたか否かを判断する(ステップS262)。最大組合せ数を超えた場合(ステップS262のYes)、組合せ数を1つにする(ステップS263)。即ち、ORに切り替えて、最大値をとる関係強度を選択する。
一方、最大組合せ数を超えない場合(ステップS262のNo)、関係強度毎の組合せ数が最大値のテナントの組合せを採用する(ステップS264)。具体的には、ステップS251で決定したテナント構造テーブル714b(又は714h)の組合せ数に最大値を代入し、論理積に論理積テーブル715をリンクする。
上述したステップS251〜264の処理は、オーナー構造テーブル714a(又は714h)を参照して、全てのオーナーに対して繰り返される。上述したステップS251〜S264の処理は、オーナー毎に、関連付けられる全てのテナントに対して繰り返される。上述したステップS252〜S260の処理は、テナント毎に、全ての項目に対して繰り返される。上述したステップS261の処理は、全ての関係強度に対して繰り返される。
図23は、図21のステップS207での検証項目テーブル作成処理を説明するためのフローチャート図である。図23において、上述した関数部のアルゴリズムに従い、使用するテナントを決定するために作業用変数を作成する初期化を行う(ステップS271)。
具体的には、use[オーナー数]及びmax[オーナー数+1]の変数を作成する。変数の作成は、例えば、以下のようなプログラミングにより行える。
//オーナー毎のテナント数
int use[オーナー数];
for(ix=0:ix<オーナー数;ix++){→ix:オーナー番号
use[ix]=従属テナント数 ;
}
//最大桁数を生成
int max[オーナー数+1] ;
max[オーナー数]=1 ;
for(ix=オーナー数-1:ix>=0;ix--) {→ix:オーナー番号
max[ix] = use[ix] * max[ix+1] ;
}
トータル検証項目数は、max[0]となる。
次に、図18で説明したように、検証項目番号(項目番号)からテナント番号を決定する(ステップS272)。具体的には、
//テナント番号の決定
int no = トータル検証項目数-項目番号 -1 ;
int テナント番号配列[オーナー数] ;//←オーナー毎のテナント番号
for(kx=0:kx<オーナー数;kx++) {//kx: オーナー番号
テナント番号配列[kx] = (use[kx]-1)-(no %max[kx]) /max[kx+1] ;
}
このようなプログラミングによりテナント番号を取得することができる。
次に、テスト名を作成する(ステップS273)。ここでは、TEST_項目番号の所定の形式でテスト名を生成し、検証項目テーブル716aの検証項目名に設定する。検証項目毎に、オーナーを決定し、オーナー毎にテナントを決定する。決定した情報は、検証項目テーブル716aに設定される。
まず、階層の一致に基づき、オーナーを特定し、オーナー番号を決定する(ステップS274)。そして、階層n構造名を出力し、オーナー番号からテナント番号を取得する(ステップS275)。対応付けリスト115a(図15)を参照することで、オーナー番号からテナント番号を取得できる。
次に、取得したテナント番号に対応するテナント構造テーブル714b(又は714h)からテナント名を取得し、検証項目テーブル716aに設定する(ステップS276)。更に、テナント構造テーブル714b(又は714h)を参照して、組合せ数の最大値を取得する(ステップS277)。組合せ数の最大値は、ループにより更新され、全てのオーナーにおいて最大値tなる組合せ数が特定される。
その後、階層毎の組合せの最大値(MAX)を、検証項目テーブル716aの該当する階層のパターン数に設定する(ステップS278)。全ての階層に対して、最大値が設定されると、階層毎のパターン数の最大値を総積することで、検証項目の総数を得る(ステップS279)。検証項目の総数は、
Figure 2019121265
により得られる。そして、検証項目テーブル作成処理が終了する。設定値が与えられた検証項目テーブル716aと、検証項目総数とに基づいて、組合せ検証項目表116が作成される。
従来では、図3で説明した内容を開発者による人手の作業によって行われていたのに対して、上述したように、本実施例では、起動待ち、時間調整等も含めてパラメータ化することで、テストシナリオ2を定型化でき、組合せ検証項目表116の自動生成を可能とする。以下に、3階層を例として、テストシナリオを自動生成する処理例について説明する。
図24は、図21のステップS209でのテストシナリオ生成処理の実行例を説明するためのフローチャート図である。図24において、パターン数の最大値、制御データ81の読み込み等の初期化後(ステップS310)、階層0の最大組合せループ(ix)が実行される。
このループ(ix)内では、fork〜joinによって、トランザクション生成タスク1−0(ix、テナント種別)からトランザクション生成タスク1−n(ix、テナント種別)までをマルチタスク動作で行う(ステップS320)。
そして、ループ(ix)内において、階層1の最大組合せ数のループ(jx)が実行され、このループ(jx)内において、fork〜joinによって、トランザクション生成タスク2−0(jx、テナント種別)からトランザクション生成タスク2−n(jx、テナント種別)までをマルチタスク動作で行う(ステップS330)。
ループ(jx)内において、階層2の最大組合せ数のループ(kx)が実行され、このループ(kx)内において、fork〜joinによって、トランザクション生成タスク3−0(kx、テナント種別)からトランザクション生成タスク3−n(kx、テナント種別)までをマルチタスク動作で行う(ステップS340)。
よって、ループ(ix)の終了により、3階層による組合せ検証項目表116が出力される。
次に、本実施例において生成されたテストベンチ90の構造とデータの流れについて説明する。図25は、生成されたテストベンチの構造とデータの流れを説明するための図である。図25において、テストベンチ90の全体をテストnテーブル40で表している。テストnテーブル40は、必要なデータと、動作を定義したクラスに相当し、パラメータテーブル411と、シナリオメソッド43と、その他サービス関数・タスク45とを定義している。
パラメータテーブル411は、全パラメータの値を表で管理し、指定の値を取得するパラメータ値取得関数(配列番号、取得種別)を有している。また、パラメータテーブル411では、オーナー毎にテーブルを有する。一例として、オーナーNテーブル412は、共用体インスタンスに相当し、オーナー毎のオーナー構造体を有し、各オーナーに属するテナントはそれぞれのテナント構造体により表される。テナント構造体では、テナントが使用するパラメータの値が、パラメータテーブル411に基づいて設定されている。レジスタの場合は、レジスタの初期値、書き込み種別、優先度、リセット情報等が設定されている。
また、オーナーNテーブル412は、論理積テーブル413へのリンクと、指定されたテナントの項目値を取得するテナント項目値取得関数()とを有している。
論理積テーブル413は、テナント内のパラメータの組み合わせを求める計算部分を含んでいる。シナリオメソッド43から与えられるループ番号から配列番号へと変換する変換関数が含まれる。
シナリオメソッド43は、forkからjoinまでを階層0の最大数まで繰り返す。forkからjoinでは、並列動作タスクにより、トランザクション毎の処理が行われる。トランザクションnを一例とした場合、階層xの最大数まで、以下の処理が繰り返される。オーナー毎の処理(ステップS51)が行われるが、一例として、オーナーmの処理で説明する。
オーナーmに対して、パラメータ値の取り出しが行われる(ステップS51a)。論理積テーブル413に、ループ番号(繰り返し回数)で問い合わせることで配列番号へと変換し、得られた配列番号を用いて、パラメータテーブル411に問い合わせることで、パラメータ値を取得できる。
次に、シナリオメソッド43は、テナントの項目を代入する(ステップS51b)。オーナーを指定してテナント項目値取得関数を呼び出すことで、共用体インスタンスの各テナントに各項目の値が設定される。他のオーナーm+1についても同様の処理を行う。
全てのオーナーについてステップS51と同様の処理が完了すると、シナリオメソッド43は、トランザクションTRを生成する(ステップS52)。レジスタ以外では、直接送信可能なトランザクションTRとして作成され、レジスタの場合、レジスタ領域テーブル550にトランザクションTRが記録されたのち、送信可能なトランザクションTRとなる。
レジスタ領域テーブル550は、記憶部130の共通領域に展開されるテーブルであり、レジスタ情報クローンを記憶する。DUT50内のレジスタ値のクローンを記憶部130の共通領域に保持することで、テストベンチ90内からいつでもレジスタ値の参照が可能となる。
レジスタ領域テーブル550は、レジスタ書き込みリスト生成関数、レジスタ値取得関数、レジスタ値登録関数、その他サービス関数等を有する。レジスタ書き込みリスト生成関数は、レジスタに対応する変数に変化があった場合に書き込み対象とし、また、変数の順番もランダム化することでバリエーションを増やす。レジスタ値取得関数は、テストベンチ個別動作部90−1からの呼び出し(CALL)に応じて、テストベンチ個別動作部90−1へレジスタ値を渡す。
レジスタ値登録関数は、テストベンチ個別動作部90−1からの呼び出し(CALL)に応じて、レジスタ値を登録する。テストベンチ個別動作部90−1は、レジスタ領域テーブル550がレジスタ値のクローンを保持することから、値を読み出した場合には、必ずレジスタ値登録関数を呼び出して同期をとる。
再実行抑止テーブル560は、記憶部130の共通領域に展開され、同一のトランザクションTRが再実行されないように制御する。再実行抑止テーブル560は、実行変数登録・実行可否判断関数により、トランザクションTRが記録され、既に実行済みのトランザクションTRを送信しない制御が可能となる。
送信可能なトランザクションTRは、再実行抑止テーブル560に記録されたのち、ドライバー5に送信される(ステップS53)。具体的には、トランザクション毎通信領域570にトランザクションTRが格納されたのち、トライバー5によって受信される。
トランザクション毎通信領域570は、トランザクション構造テーブル571と、レジスタテーブル572とを有する。トランザクション構造テーブル571は、各項目を宣言した共用体であるとともに、サービス関数を有する。レジスタテーブル572は、アドレス及びデータ領域[]を有するとともに、サービス関数を有する。レジスタテーブル572は、レジスタの場合、アドレスとデータのリストのテーブルになる。
ステップS51〜S53の処理は、階層xの最大数まで繰り返される。他のトランザクションにおいても同様の処理が行われる。
図26は、図25のステップS51でのオーナー毎の処理を説明するためのフローチャート図である。図26において、オーナー毎の処理では、検証番号によって使用するテナントを決定し、決定したテナントのパラメータを取得する(ステップS511)。
取得したパラメータは試験値か否かを判定する(ステップS512)。パラメータが試験値の場合(ステップS512のYes)、上述したアルゴリズムに従って、ループ番号により選択されたパラメータの配列番号を決定し(ステップS513)、パラメータテーブル411からパラメータ値を取得する(ステップS514)。そして、テナント構造体に値を代入し(ステップS518)、このオーナー毎の処理を終了する。
一方、パラメータが試験値でない場合(ステップS512のNo)、ユーザ関数を含む生成関数か否かを判断する(ステップS515)。生成関数の場合(ステップS515のYes)、当該関数を実行し(ステップS516)、テナント構造体に値を代入し(ステップS518)、このオーナー毎の処理を終了する。生成関数でない場合(ステップS515のNo)、典型値を設定し(ステップS517)、テナント構造体に値を代入し(ステップS518)、このオーナー毎の処理を終了する。
図27は、図25のステップS52でのトランザクションの生成処理を説明するためのフローチャート図である。図26において、トランザクションTRの生成処理では、オーナーの領域を記憶部130に確保し(ステップS521)、対象のテナントに取得値を設定する(ステップS522)。
そして、オーナーはレジスタか否かを判定する(ステップS523)。レジスタでない場合(ステップS523のNo)、オーナーの領域をトランザクションTRにし(ステップS524)、このトランザクションの生成処理は終了する。
一方、レジスタの場合(ステップS523のYes)、クローン[アドレス]値とオーナー[アドレス]値とは同じ値か否かを判断する(ステップS525)。同じ値の場合、全てのオーナーのアドレスについて比較終了したか否かを判定する(ステップS525−2)。比較終了していないアドレスがある場合(ステップS525−2のNo)、そのアドレスを選択して、ステップS252を繰り返す。一方、全て終了している場合(ステップS525−2のYes)、ステップS527へと進む。
クローン[アドレス]値とオーナー[アドレス]値とが同じ値でない場合(ステップS525のNo)、レジスタ領域テーブル550のレジスタ書き込みリスト生成関数を呼び出して、書込みリストにアドレスと値とを追加する(ステップS526)。
その後、オーナー構造テーブル714gを参照して、書込みリスト内のレジスタを優先度順に並び替える(ステップS527)。同一優先度のレジスタはランダムに並び替える(ステップS528)。そして、書込みリストをトランザクションTRにして(ステップS529)、このトランザクションの生成処理は終了する。
図28は、図25のステップS53でのトランザクションの送信処理を説明するためのフローチャート図である。図28において、トランザクションTRの送信処理では、再実行抑止領域の初期化処理を行い(ステップS540)、トランザクションTRの重複制御による送信処理を行い(ステップS550)、送信終了処理を行って(ステップS560)、このトランザクションTRの送信処理は終了する。
ステップS540の初期化処理では、再実行抑止領域を記憶部130に作成し、初期化する。パラメータの値の数の論理積(&)の最大ビット数を取得し、管理する変数分の再実行抑止領域を作成する。最大ビット数は、
(A&B)|(C&D)|(E&F&G)
等のように、関係強度が同じパラメータの値の種類の数をandし、関係強度が異なるパラメータ間ではorをとる論理式により得られる。よって、論理和(|)の数だけ変数が作成される。
ビット位置が対応する変数の値の実行ビットとなる。一例として、
PARA1の値が3種(値11、値12、値13)
PARA2の値が2種(値21、値22)
PARA3の値が2種(値31、値32)
であるならば、3×2×2=12ビットで表現することになる。
再実行抑止領域を読み込み、論理式が同じテストのものが存在したら、フラグを設定する。最大ビット数領域(PARA1&PARA2&PARA3)に対応付けて、複数のパラメータの複数の値の組み合わせが表現される。一例として、
PARA1の値11には[0]を割り当て、値12には[1]を割り当て、値13には[2]を割り当て、
PARA2の値21には[0]を割り当て、値22には[1]を割り当て、
PARA3の値31には[0]を割り当て、値32には[1]を割り当てる。
そして、「00」ビット位置から「11」ビット位置の最大ビット数領域(PARA1&PARA2&PARA3)に対して、
PARA1:000011112222
PARA2:001100110011
PARA3:010101010101
のように割り当てられた値を対応付ける。同一ビット位置の値で組合せるパラメータ値を示す。組合せるパラメータ値を示す領域を組合せ領域602という。また、上述したパラメータPARA1、PARA2、及びPARA3に対する最大ビット数領域(PARA1&PARA2&PARA3)の実行ビット領域601が設けられる。したがって、再実行抑止領域600には、実行ビット領域601と、組合せ領域602とが含まれる。そして、ステップS540の初期化処理は終了する。
ステップS550の送信処理では、トランザクションTRの値を登録し(ステップS551)、設定された値からビット位置を特定する(ステップS552)。つまり、例えば、
PARA1の設定値が値12ならば[1]
PARA2の設定値が値22ならば[1]
PARA3の設定値が値31ならば[0]
従って、最大ビット数領域において、(PARA1、PARA2、PARA3)が(1、1、0)を示すビット位置を特定すればよい。
そして、設定値の組合せがあったか否かを判断する(ステップS553)。即ち、ビット位置が特定できたか否かを判断するればよい。設定値の組合せが存在しない場合は、関数生成値やランダム値が、パラメータのいずれの値(図17)とも一致しないことを示すため、フラグ設定の対象外とする制御を行う。
設定値の組合せが無かった場合(ステップS553のNo)、トランザクションTRの送信を行わずに、この送信処理を終了する。一方、設定値の組合せが有った場合(ステップS553のYes)、実行ビット領域601を参照して、組合せの実行ビットはONか否かを判断する(ステップS554)。即ち、実行可否判断関数を呼び出すことで、再実行抑止領域600の実行ビット領域601における、設定値の組合せに対応する実行ビットの状態を取得すればよい。組合せの実行ビットがONの場合(ステップS554のYes)、既にトランザクションTRは実行済みであるため送信せずに、この送信処理を終了する。
一方、組合せの実行ビットがONでない場合(ステップS554のNo)、組合せの実行ビットをONにして(ステップS555)、トランザクションTRを送信し(ステップS556)、この送信処理を終了する。
ステップS560の送信終了処理では、全てのトランザクションTRの生成に係る論理式と、再実行抑止領域600とを記憶部130に格納する。検証項目単位で記憶される。
上述したフローチャートにおいて、ステップS540の初期化処理は、初期化処理部の一例であり、ステップS550の送信処理は、送信処理部の一例であり、ステップS560の送信終了処理は、送信終了処理部の一例である。
上述したように、本実施例では、DUT50の検証時の実行手順(フェーズ)を階層化し、各フェーズの動作内容をパラメータ化することで、検証項目の作成を含めて、テストシナリオ2を全て自動生成可能とする。検証項目は重複無く作成されるため、無駄なテストシナリオ2が生成されない効果がある。
また、パラメータの値の種類の数と、組み合わせるパラメータ数とに基づいて、トランザクションの各パラメータとそのパラメータ値(試験値)の組合せ方を選択するため、組合せ数の膨大化を制御できる。
論理積テーブル作成処理を行う論理積テーブル作成部は設定部に相当し、検証項目テーブル作成処理を行う検証項目テーブル作成部は作成部に相当する。
本発明は、具体的に開示された実施例に限定されるものではなく、特許請求の範囲から逸脱することなく、主々の変形や変更が可能である。
以上の実施例を含む実施形態に関し、更に以下の付記を開示する。
(付記1)
記憶部に記憶された制御データによって定義される検証対象の動作情報をパラメータとして定義し、定義した該パラメータにおいて、関係する複数のパラメータ毎に、取り得る値の組合せ数を特定し、
特定した組み合わせ数に基づいて各パラメータの値を設定し、
論理検証の動作手順の単位で複数のパラメータの値が組み合わされた検証項目を示す組合せ検証項目表を作成し、
前記組合せ検証項目表を参照して、前記検証項目ごとに、前記動作手順ごとのパラメータの値の組合せを用いて前記検証対象をテストするテストシナリオを生成する、
処理をコンピュータに実行させる検証手順生成プログラム。
(付記2)
前記論理検証の前記動作手順を階層化し、前記テストシナリオは、階層毎に、1以上のトランザクションを有し、複数のパラメータで該トランザクションの形式データを定義する1以上のテナントが対応付けられ、該テナント毎に、関係のあるパラメータ同士を分類し、分類に基づいて値の組合せ数を取得し、
各分類の前記組合せ数の総積又は複数の該分類の中の最大の組合せ数のいずれかを採用することで、各テナントにおける組合せ数を制限して前記パラメータの値を決定する
ことを特徴とする付記1又は2記載の検証手順生成プログラム。
(付記3)
前記階層毎に組合せ数の最大値を取得し、全階層を対象として取得した前記最大値に基づいて前記検証項目の総数を決定し、
前記階層化に従って、前記トランザクション毎に、前記組合せ数の最大値の制限により決定される各テナントの前記パラメータの値の組合せを用いて、前記総数の前記検証項目を作成する
ことを特徴とする付記2記載の検証手順生成プログラム。
(付記4)
前記トランザクションは、複数の前記テナントによって領域データを表すオーナーを1つ以上含むことを特徴とする付記3記載の検証手順生成プログラム。
(付記5)
前記複数のパラメータは、起動待ちと時間調整の1つ以上のパラメータを含むことを特徴とする付記1乃至4のいずれか一項記載の検証手順生成プログラム。
(付記6)
前記制御データから、パラメータの定義情報を示すパラメータテーブルと、前記オーナーの定義情報を示すオーナー構造テーブルと、メモリの定義情報を示すメモリ定義表とを生成する
処理を前記コンピュータに行わせる付記1乃至5のいずれか一項記載の検証手順生成プログラム。
(付記7)
付記1乃至5のいずれか一項記載の前記階層毎に決定した前記パラメータの値の組合せを用いて、前記トランザクションを生成し、
前記パラメータの値の組合せに対応付けられた送信状態を示すピット値が未送信を示す場合に前記トランザクションを送信し、送信済みを示す場合は該トランザクションの送信を抑止する
処理をコンピュータに実行させるテストベンチプログラム。
(付記8)
記憶部に記憶された制御データによって定義される検証対象の動作情報をパラメータとして定義し、定義した該パラメータにおいて、関係する複数のパラメータ毎に、取り得る値の組合せ数を特定し、
特定した組み合わせ数に基づいて各パラメータの値を設定し、
論理検証の動作手順の単位で複数のパラメータの値が組み合わされた検証項目を示す組合せ検証項目表を作成し、
前記組合せ検証項目表を参照して、前記検証項目ごとに、前記動作手順ごとのパラメータの値の組合せを用いて前記検証対象をテストするテストシナリオを生成する、
処理をコンピュータが実行する検証手順生成方法。
(付記9)
記憶部に記憶された制御データによって定義される検証対象の動作情報をパラメータとして定義し、定義した該パラメータにおいて、関係する複数のパラメータ毎に、取り得る値の組合せ数を特定し、特定した組み合わせ数に基づいて各パラメータの値を設定する設定部と、
論理検証の動作手順の単位で複数のパラメータの値が組み合わされた検証項目を示す組合せ検証項目表を作成する作成部と、
前記組合せ検証項目表を参照して、前記検証項目ごとに、前記動作手順ごとのパラメータの値の組合せを用いて前記検証対象をテストするテストシナリオを生成するテストシナリオ生成部と、
を有する検証手順生成装置。
1 検証項目表
2 テストシナリオ
5 ドライバー
6 モニタ
7 疑似モデル
8 期待値比較部
9 ダンプデータ
32 機能仕様書
80 検証手順生成部
81 制御データ
90−1 テストベンチ個別動作部
90 テストベンチ
100 検証手順生成装置
112 パラメータ定義書
113 メモリ定義書
114 構造定義
116 組合せ検証項目表
117 テストベンチ部品
TR トランザクション

Claims (6)

  1. 記憶部に記憶された制御データによって定義される検証対象の動作情報をパラメータとして定義し、定義した該パラメータにおいて、関係する複数のパラメータ毎に、取り得る値の組合せ数を特定し、
    特定した組み合わせ数に基づいて各パラメータの値を設定し、
    論理検証の動作手順の単位で複数のパラメータの値が組み合わされた検証項目を示す組合せ検証項目表を作成し、
    前記組合せ検証項目表を参照して、前記検証項目ごとに、前記動作手順ごとのパラメータの値の組合せを用いて前記検証対象をテストするテストシナリオを生成する、
    処理をコンピュータに実行させる検証手順生成プログラム。
  2. 前記論理検証の前記動作手順を階層化し、前記テストシナリオは、階層毎に、1以上のトランザクションを有し、複数のパラメータで該トランザクションの形式データを定義する1以上のテナントが対応付けられ、該テナント毎に、関係のあるパラメータ同士を分類し、分類に基づいて値の組合せ数を取得し、
    各分類の前記組合せ数の総積又は複数の該分類の中の最大の組合せ数のいずれかを採用することで、各テナントにおける組合せ数を制限して前記パラメータの値を決定する
    ことを特徴とする請求項1記載の検証手順生成プログラム。
  3. 前記階層毎に組合せ数の最大値を取得し、全階層を対象として取得した前記最大値に基づいて前記検証項目の総数を決定し、
    前記階層化に従って、前記トランザクション毎に、前記組合せ数の最大値の制限により決定される各テナントの前記パラメータの値の組合せを用いて、前記総数の前記検証項目を作成する
    ことを特徴とする請求項2記載の検証手順生成プログラム。
  4. 前記トランザクションは、複数の前記テナントによって領域データを表すオーナーを1つ以上含むことを特徴とする請求項3記載の検証手順生成プログラム。
  5. 記憶部に記憶された制御データによって定義される検証対象の動作情報をパラメータとして定義し、定義した該パラメータにおいて、関係する複数のパラメータ毎に、取り得る値の組合せ数を特定し、
    特定した組み合わせ数に基づいて各パラメータの値を設定し、
    論理検証の動作手順の単位で複数のパラメータの値が組み合わされた検証項目を示す組合せ検証項目表を作成し、
    前記組合せ検証項目表を参照して、前記検証項目ごとに、前記動作手順ごとのパラメータの値の組合せを用いて前記検証対象をテストするテストシナリオを生成する、
    処理をコンピュータが実行する検証手順生成方法。
  6. 記憶部に記憶された制御データによって定義される検証対象の動作情報をパラメータとして定義し、定義した該パラメータにおいて、関係する複数のパラメータ毎に、取り得る値の組合せ数を特定し、特定した組み合わせ数に基づいて各パラメータの値を設定する設定部と、
    論理検証の動作手順の単位で複数のパラメータの値が組み合わされた検証項目を示す組合せ検証項目表を作成する作成部と、
    前記組合せ検証項目表を参照して、前記検証項目ごとに、前記動作手順ごとのパラメータの値の組合せを用いて前記検証対象をテストするテストシナリオを生成するテストシナリオ生成部と、
    を有する検証手順生成装置。
JP2018001833A 2018-01-10 2018-01-10 検証手順生成プログラム、検証手順生成方法、及び検証手順生成装置 Pending JP2019121265A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2018001833A JP2019121265A (ja) 2018-01-10 2018-01-10 検証手順生成プログラム、検証手順生成方法、及び検証手順生成装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018001833A JP2019121265A (ja) 2018-01-10 2018-01-10 検証手順生成プログラム、検証手順生成方法、及び検証手順生成装置

Publications (1)

Publication Number Publication Date
JP2019121265A true JP2019121265A (ja) 2019-07-22

Family

ID=67306370

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018001833A Pending JP2019121265A (ja) 2018-01-10 2018-01-10 検証手順生成プログラム、検証手順生成方法、及び検証手順生成装置

Country Status (1)

Country Link
JP (1) JP2019121265A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021107782A (ja) * 2019-12-27 2021-07-29 日産自動車株式会社 設計支援方法及び設計支援装置
CN115567340A (zh) * 2022-09-22 2023-01-03 重庆长安汽车股份有限公司 Can总线的测试工程生成方法、装置、设备及介质

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021107782A (ja) * 2019-12-27 2021-07-29 日産自動車株式会社 設計支援方法及び設計支援装置
JP7395346B2 (ja) 2019-12-27 2023-12-11 日産自動車株式会社 設計支援方法及び設計支援装置
CN115567340A (zh) * 2022-09-22 2023-01-03 重庆长安汽车股份有限公司 Can总线的测试工程生成方法、装置、设备及介质
CN115567340B (zh) * 2022-09-22 2024-04-26 重庆长安汽车股份有限公司 Can总线的测试工程生成方法、装置、设备及介质

Similar Documents

Publication Publication Date Title
WO2018180970A1 (ja) 情報処理システム、特徴量説明方法および特徴量説明プログラム
US8417504B2 (en) Conversion of circuit description to a transaction model
CN100504888C (zh) 使用可达性过度逼近进行验证的方法和系统
US8639481B2 (en) Automated interactive multi-objective optimization-based system design tool
CN104156314B (zh) 一种应用于测试系统的代码重用方法
US20100235814A1 (en) Apparatus and a method for generating a test case
JP6861844B2 (ja) ソースコードを生成するための方法
WO2017090475A1 (ja) 情報処理システム、関数作成方法および関数作成プログラム
US6484292B1 (en) Incremental logic synthesis system for revisions of logic circuit designs
US11409928B2 (en) Configurable digital twin
US8381190B2 (en) Leveraging the relationship between object IDs and functions in diagnosing software defects during the post-deployment phase
JP2019121265A (ja) 検証手順生成プログラム、検証手順生成方法、及び検証手順生成装置
JP6568017B2 (ja) テスト支援装置、および、テスト支援方法
JP2010067160A (ja) 回路検証装置及び回路検証方法
CN105446952A (zh) 用于处理语义片段的方法和系统
CN104969083A (zh) 用于动态扫描调度的系统和方法
CN117150995B (zh) 驱动源码追踪方法、电子设备和介质
WO2018180971A1 (ja) 情報処理システム、特徴量説明方法および特徴量説明プログラム
JP5718166B2 (ja) 設計検証方法及びプログラム
Abid et al. A Real-Time Specification Patterns Language
WO2013058252A1 (ja) モデル検査支援方法、モデル検査支援プログラム、およびモデル検査支援装置
GB2499531B (en) Method and system for propagation of amendment made to a master to copies
KR20210061156A (ko) 3차원 모델과 해석 모델이 연동된 시빌모델 제공 시스템 및 방법
JP2007018313A (ja) 回路設計プログラム、回路設計装置、回路設計方法
Kulagin et al. Software for modeling distributed systems using the Petri net apparatus