情報処理装置試験プログラム及び方法
【課題】被試験装置の競合試験等の試験の網羅性を高めることができる技術を提供する。
【解決手段】本試験方法では、乱数を用いて試験データを生成する処理(S20)、試験結果の期待値を生成する処理(S21)、試験の監視のためのアサーションチェッカーを起動する処理(S22)、被試験装置に対し試験を実行する処理(S23)、アサーションチェッカーによる監視情報を蓄積する処理(S25)、試験結果を出力する処理(S27)、監視情報を採取して解析し、カバレッジ情報を更新する処理(S26,S32,S33)、カバレッジ情報に基づき、試験データによる試験の内容を調整する処理(S34)等を有する。
【解決手段】本試験方法では、乱数を用いて試験データを生成する処理(S20)、試験結果の期待値を生成する処理(S21)、試験の監視のためのアサーションチェッカーを起動する処理(S22)、被試験装置に対し試験を実行する処理(S23)、アサーションチェッカーによる監視情報を蓄積する処理(S25)、試験結果を出力する処理(S27)、監視情報を採取して解析し、カバレッジ情報を更新する処理(S26,S32,S33)、カバレッジ情報に基づき、試験データによる試験の内容を調整する処理(S34)等を有する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、半導体集積回路(IC)等の情報処理装置における論理回路等の機能(論理)等を対象とした試験(テスト)の方法に関し、特に、乱数を用いてランダムな試験を行う方法を用いて、被試験装置の複数の要素(プロセッサ等)を試験する方法に関する。
【背景技術】
【0002】
従来技術における情報処理装置の試験方法は以下である。情報処理装置(以下、被試験装置と称する)の論理的制御部を構成する論理回路等を対象とした試験を行う。この試験の被試験装置は、プロセッサ(CPU)、記憶装置(メモリ)、及び入出力装置等の周辺装置、等を有する構成である。またそれらの要素を接続して通信可能とするバス(システムバス)などの装置(システム)を有する。
【0003】
上記試験では、試験者により試験項目が抽出される(例えばハードウェアマニュアルをもとに考慮及び決定される)。この試験項目がすべての論理回路動作を網羅することができれば、試験の精度が完全に確保されていることになる。
【0004】
しかしながら、現在の情報処理装置は論理構成が複雑であるため、すべての試験項目を抽出して試験を行うことは困難であり、試験項目の抽出洩れや実行洩れ等の可能性がある。よって、すべての試験ではなくとも、次善として、試験の精度を高めることが求められる。
【0005】
そのため、従来、乱数を用いてランダムな試験を行う試験方法(乱数試験方法)が用いられている。即ち、複数の要素や複数の試験命令及びパラメータなどに関して、乱数データを用いてランダムに試験内容(試験データ)を多数生成して試験に適用する方法である。これにより、試験項目の抽出洩れや実行洩れ等を補っている。
【0006】
上記乱数試験方法などに関して、以下に示すような従来技術例がある。
【0007】
(1)特開平7−253901号公報(特許文献1)には、乱数データを入力として試験命令列を繰り返し生成し当該命令列を被試験情報処理装置に実行させて当該装置を試験する技術が記載されている。この技術において、乱数データを入力として次の試験命令列を生成するときに、繰り返し生成された試験命令列の中で、発生頻度の少ない試験命令を、無作為に、乱数データを入力として生成中の試験命令列に挿入する旨が記載されている。
【0008】
(2)また、特開2005−108007号公報(特許文献2)には、LSI設計検証装置及び方法において、RTL(レジスタ転送レベル)シミュレーションの途中段階、又は検証対象となるLSIの回路内部において、動作シミュレーションにおける動作履歴を抽出することで、整合しているかどうかを検証するアサーションチェック手段を用いる旨が記載されている。この技術は、論理の矛盾を検出するために論理内部に検証用の仕掛け(アサーションチェック手段)を組み込む方式(アサーションを用いた試験方法)である。
【0009】
(3)また、特開2002−149440号公報(特許文献3)には、論理回路検証方法及び装置において、乱数検証(乱数試験方法)における論理シミュレーションの検証効率の低下を抑えることを目的とした検証を実行するか否かを判定する旨が記載されている。この技術は、検証済みパターン履歴情報を蓄積、更新して、試験実行判断や障害解析に役立てるものである。
【特許文献1】特開平7−253901号公報
【特許文献2】特開2005−108007号公報
【特許文献3】特開2002−149440号公報
【発明の開示】
【発明が解決しようとする課題】
【0010】
前述の従来技術において、試験の精度を高めるために、特に、被試験装置における複数の各要素(CPU、周辺装置、記憶装置など)及びシステムバスを含めた構成において、それぞれの処理機能及びそれらの並列(同時並行)動作を、網羅的に試験することが望まれる。
【0011】
そのためには、CPU向け試験、周辺装置向け試験、及び記憶装置へのデータ転送試験、といった各要素向けの試験(個別試験)を、並列で実行する試験、即ち競合試験、を強化することが求められる。
【0012】
そこで、上記各要素の個別試験の命令実行を組み合わせ、その命令発行タイミングや、システムバスを経由する周辺装置の起動タイミングなどのタイミング条件を意識した複雑な組み合わせによって、各要素に高負荷を与えた条件下での試験(競合試験)、が重要となる。
【0013】
前述の従来技術例では、例えば乱数試験方法においては、乱数の特徴を活かして多種多様な組み合わせのアルゴリズムでの試験を実現している。
【0014】
被試験装置の要素の試験、特にCPUや周辺装置などの多数の要素の動作を意識しなければならない複雑な試験では、それら各要素向けの個別試験を生成してそれらを単純に実行する方式が採用されていた。また、複数の要素に関する競合動作の試験についても、要素の組み合わせによる試験を並列で実行することによって、ある程度までは行われていた。
【0015】
しかし、それら各要素の個別試験の生成は独立しており、当該試験同士には相互関係が無い。よって、特に複数の要素の競合動作(並列動作)の試験に関する網羅性(言い換えるとカバレッジ)に欠けており、試験洩れ等が発生する可能性がある。また、乱数性に偏りが発生する可能性もある。また、網羅性の度合いが不明確であり、試験が実際にどこまで達成できたのか、あるいはその有効性や十分性など、が不明確である。
【0016】
従来、要素の組み合わせによる競合動作を網羅的に試験することは困難であり、偶然性や時間に期待してしまうことは否定できない。
【0017】
なお、前記特許文献1の技術は、乱数試験方法に関するが、アサーション(アサーションチェック方法)や、タイミング(タイミング試験方法)や、カバレッジを用いた方法に関するものではない。前記特許文献2の技術は、アサーション(アサーションチェック方法)に関するが、乱数試験方法などに関するものではない。前記特許文献3の技術は、乱数試験方法に関するが、試験内容を調整する方法(カバレッジを用いた方法)ではない。
【0018】
本発明は以上のような問題に鑑みてなされたものであり、その目的は、情報処理装置(被試験装置)の競合試験等の試験の網羅性を高めることができる技術を提供することである。
【課題を解決するための手段】
【0019】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。前記目的を達成するために、本発明は、論理シミュレーションやFPGA(Field Programmable Gate Array)等により、情報処理装置(IC等)の論理回路等(被試験装置)の試験などを行う方法(情報処理装置試験方法)、その処理作業を行うためのコンピュータ、及びプログラム(情報処理装置試験プログラム)に係わり、乱数試験方法、アサーションチェック方法などを用いるものであり、以下に示す構成を有することを特徴とする。
【0020】
本試験方法では、試験の網羅性や不良を判断するための根拠となる数量的な指標及び手段を導入する。本試験方法では、被試験装置の複数の要素(論理的なデバイス)の競合動作状態などの試験を監視(アサーションチェック)するだけでなく、その監視情報に基づき、試験の網羅性を管理するためのカバレッジ情報を更新し、これに基づくフィードバック(反映)により、試験内容(試験データ)の調整を駆動する仕組みを備えるものである。カバレッジ情報は、具体的には、所定の信号条件の発生を管理する情報(イベント情報)や、要素の動作のタイミングを管理する情報(タイミング情報)などである。これにより、複数回の試験における各試験での競合動作を自動生成したり、試験洩れを防ぐことで、試験の網羅性を高めることが実現される。
【0021】
(1)本方法及び対応プログラムでは、具体的に以下のような処理ステップを有する。
【0022】
(A)試験プログラムにより乱数を用いて試験内容に対応する試験データ(試験命令列(群)及びそのパラメータ)を生成する処理ステップ。
【0023】
(B)前記試験データを論理シミュレータ上で実行することによって試験結果の期待値を生成する処理ステップ。
【0024】
(C)前記試験の監視(アサーションチェック)のために用意したアサーションプログラムであるアサーションチェッカーを試験開始の直前に起動する処理ステップ。
【0025】
(D)被試験装置におけるプロセッサ、周辺装置、及び記憶装置などの複数の要素に対し一斉に前記試験データによる試験を実行する処理ステップ。
【0026】
(E)前記試験の実行時に前記アサーションチェッカーによる監視の処理を行い、それによる監視情報を蓄積する処理ステップ。アサーションチェック(監視)では、各要素の起動などの動作の履歴の抽出(トレース)を含む。
【0027】
(F)前記試験の実行結果と前記期待値とを比較して結果を出力する処理ステップ。
【0028】
(G)前記監視情報を採取し、採取した監視情報を解析し、解析結果を用いて、試験の網羅性などを管理するための情報であるカバレッジ情報を更新する処理ステップ。
【0029】
(H)前記解析結果または前記更新されたカバレッジ情報に基づき、判断に応じて、前記試験データ(次回の試験内容)を調整(試験命令列またはパラメータの少なくとも一方の調整)する処理ステップ。また、必要が無ければ、試験内容の変更はせずに、新規に試験が生成されるようにする。
【0030】
(I)前記調整による新しい試験(次回の試験)を実行する処理ステップ。
【0031】
上記(H),(I)の処理ステップでは、前回の試験で生成済みの試験データに対し、試験実行結果(カバレッジ情報の内容)をフィードバックにより反映させる。これにより、例えば、同じ試験命令を再利用しそのパラメータのみを調整した試験を生成する。
【0032】
前記監視情報には、監視対象の要素の動作の時間や回数などの情報が含まれる。また、前記カバレッジ情報には、アサーションでの所定の信号条件の発生に関するイベント情報などが含まれる。イベント情報は、信号条件の成立の発生回数や頻度、並びに、試験の調整の回数などが含まれる。
【0033】
(2)また、上記(1)で更に、上記(G)のカバレッジ情報を更新する処理ステップにおいては、更新の際、過去(蓄積済み)のカバレッジ情報に対し、前記(A),(H)により生成された試験データの内容(履歴)と、複数の要素の同時並行動作(競合動作)に関するタイミング情報とを加え合わせる。タイミング情報は、要素の動作タイミング(起動時刻、終了時刻、実行時間)の情報や、競合時間や競合回数、同時期に動作した周辺装置の競合率などの情報が含まれる。特に、タイミング情報を用いて、複数の要素における競合性の低い部位を、調整の対象として選択する。
【0034】
(3)また、上記(1)または(2)で更に、上記(H)の試験内容の調整の処理ステップにおいては、カバレッジ情報と更なる乱数とを組み合わせて用いて、調整対象となる要素(その試験命令やパラメータ等)を選定して、調整を行う。このための判断では、未試験の部位や競合性の低い部位などを優先的に選定し、その試験を実行するための試験データを生成する。
【発明の効果】
【0035】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下のとおりである。本発明によれば、被試験装置の競合試験等の試験の網羅性を高めることができる。
【発明を実施するための最良の形態】
【0036】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一部には原則として同一符号を付し、その繰り返しの説明は省略する。
【0037】
<概要>
本実施の形態では、図1〜図11、特に図4等に示すように、試験のアサーションチェックによる監視情報、及び監視情報をもとに更新されるカバレッジ情報を用いて、競合試験等の試験の網羅性を高める方針で、フィードバックにより試験内容を変更(例えばパラメータ調整)するものである。
【0038】
<1:情報処理システム>
図1において、本実施の形態の試験方法及びプログラムを適用するコンピュータである情報処理装置(EWS)を含んで成る情報処理システム(論理シミュレーション環境)の基本的な構成例を示している。本システムは、EWS(エンジニアリングワークステーション)100のような汎用の情報処理装置、及びそれに接続されるコンソール端末200を有する。試験者(U)は、入出力処理に用いる情報処理端末装置であるコンソール端末200を操作し、操作に従い、EWS100での情報処理が行われる。
【0039】
EWS100は、制御部101(CPU等)、記憶部102(RAM等のメモリ)、通信部103(ネットワークインタフェース等)、補助記憶部104(HDD等)、入力部105、表示部106等のハードウェアを備える。EWS100において、制御部101等により実現される論理シミュレータ10を有する。論理シミュレータ10上では、試験プログラム30(乱数試験プログラム)等のプログラムが実行される。試験プログラム30は、本実施の形態のプログラムに相当する。
【0040】
論理シミュレータ10は、プロセッサやメモリなどの要素をすべて接続したモデルで対象システム(被試験装置20)の論理シミュレーションを行うことができる総合的な環境である。論理シミュレータ10は、論理シミュレーションの処理により、対象システムのハードウェアの動作を擬似的に動作させることができる。論理シミュレータ10による論理シミュレーション内において、被試験装置20が論理的に構成される。論理シミュレータ10上の論理シミュレーションの処理において、試験プログラム30を用いた試験(乱数試験)の処理により、被試験装置20を対象として、その処理機能や競合動作などに関する試験が行われる。
【0041】
制御部101は、補助記憶部104から記憶部102上に読み出されたデータに対して処理を行うことで、論理シミュレーション等の処理を実現する。通信部103、入力部105、表示部106等は、コンソール端末200とのインタフェースを有し、コンソール端末200のキーボードやマウスからの入力情報を受け付けて入力処理することや、出力情報をコンソール端末200のディスプレイ画面やプリンタへ出力処理すること等が行われる。
【0042】
論理シミュレータ10は、試験プログラム30の他、OSやその他のプログラムを含む。論理シミュレータ10において、OS上で、試験プログラム30を被試験装置20に対して実行させ、試験リソースを供給する。試験リソースは、レジスタ値などである。
【0043】
被試験装置20は、VHDL等のハードウェア記述言語(HDL)により論理ファイルとして記述されている。当該論理ファイルは、設計者等により作成される。試験者(U)は、コンソール端末200からEWS100の論理シミュレータ10を実行させて、論理シミュレータ10に被試験装置20の論理ファイルを入力する。被試験装置20は、試験の対象となる、後述のプロセッサ等の各要素などを構成する論理である。
【0044】
試験プログラム30は、各回の試験毎の試験データ50を生成するものであり、乱数を用いてランダムな試験内容を生成するプログラムを含む。試験データ50を用いて被試験装置20が試験される。被試験装置20に対する試験は、必要に応じて多数回の試験が繰り返し行われる。
【0045】
また、試験プログラム30(試験データ50)と関連して、アサーションチェック(監視)のためのアサーションチェッカー6が、HDLにより被試験装置20の内部に記述される。アサーションチェッカー6は、後述のアサーションチェッカー制御プログラム60により記述、制御される。アサーションチェッカー6は、試験に関する特定の信号、信号条件を監視、検出して、それを表す情報(後述するアサーション監視情報31)を出力することができる論理である。
【0046】
論理シミュレーター10は、上記アサーション監視情報31や、アサーション監視情報31をもとに作成・更新される、試験の網羅性(範囲)の管理のための情報(後述するカバレッジ情報32)などを蓄積する機能、及びそれらの情報を用いて試験内容を変更する機能などを持つ。
【0047】
これにより、本システムでは、試験内容の変更の方針を導き、試験結果(カバレッジ情報32)を、既に生成・実行済みの試験内容に対してフィードバック(反映)することで、次回以降の試験内容を生成して実行することができる。試験者は、本システムの機能を用いることで、試験内容の変更の方針(大きくは網羅性を高めること)を導きやすい。また所定の方針に従って、フィードバックにより自動的に試験内容を変更することができる。本システムでは、システムバス5上の特に競合があまり発生していない部位を対象として試験を優先的に実行することができる。これにより、複数回の試験における各試験での競合動作を自動生成し、試験洩れ等を防止することができる。
【0048】
<2:被試験装置>
図2において、論理シミュレータ10上での被試験装置20の構成例、及びそれに関連して、試験実行時の試験プログラム30(試験データ50)の状態などを示している。なお、図2では、説明のため、図1の物理的構成(記憶部102)と、論理的構成である被試験装置20とを繋いで示している。被試験装置20は、プロセッサ(CPU)1、周辺装置2(入出力装置(IO)など)、記憶装置(メモリ)3等の要素、及びこれらを接続するシステムバス5等を有する構成である。
【0049】
プロセッサ1は、命令を処理するCPU、マイクロプロセッサ等の論理である。記憶装置3は、命令やデータを格納するメモリ(メインメモリ、2次メモリ、ストレージ等)の論理である。プロセッサ1は、記憶装置3から命令(試験命令)を読み出して実行し結果を記憶装置3に格納する。周辺装置2は、入出力装置(IO)などの論理であり、プロセッサ1や記憶装置3との間で通信が行われる。システムバス5は、プロセッサ1や周辺装置2や記憶装置3などの要素間におけるデータや信号の流れを制御する。なお、プロセッサ1等の各要素は、図2中では1つのみ示しているが、それぞれ複数存在する構成も可能である(例えばマルチプロセッサシステム)。
【0050】
一方、物理的な記憶部102には、試験プログラム30、アサーション監視情報31、カバレッジ情報32等のデータが格納されている。試験プログラム30は、各回の試験の実行の際、試験データ50を自動生成し、その試験データ50を記憶装置3の任意番地に配置する。記憶装置3上に配置された試験データ50は、プロセッサ1により順次フェッチされて実行され、これにより試験が実行される。試験データ50は、試験命令列51(コード)とそのパラメータ52(変数データ等)とを含んでいる。試験命令列51は、試験命令群からなる。パラメータ52は、試験命令列51に代入される。試験命令は、データのリード、ライト等の一般的な命令を有する。
【0051】
また、これら試験対象の各要素(1,2,3)と接続するアサーションチェッカー6(6−1,6−2,6−3)を有する。アサーション(アサーションチェッカー6)は、機能の仕様や設計の意図、前提などが記述されたものであり、対象要素の論理記述が当該仕様等の通りかどうかを監視する。各アサーションチェッカー6(6−1,6−2,6−3)は、論理的構成としては、図2のように対象の要素とシステムバス5との間の信号線に介在する形で接続されている(対象要素の論理内に埋め込み又は関連付けの形)。アサーションチェッカー6によりシステムバス5のバスプロトコルでの制御信号を監視する。各アサーションチェッカー6は、対応する要素(その信号)を監視し、動作履歴を抽出(トレース)する機能を持つ。試験の際に試験プログラム30により起動されたアサーションチェッカー6は、各要素間、すなわちプロセッサ1とシステムバス5との間、システムバス5と周辺装置2との間、及び記憶装置3とシステムバス5との間に発行される各信号を同時並行的に監視する。アサーションチェッカー6は、監視により抽出した情報であるアサーション監視情報31(監視情報)を出力し、記憶部102(または記憶装置3)内に用意された任意番地に格納(蓄積)する。
【0052】
<3:論理シミュレータ、試験プログラム>
図3において、論理シミュレータ10と試験プログラム30を中心として、本実施の形態の特徴的な試験制御部における各処理部などの相関関係を含む構成を示している。論理シミュレータ10上では、図2のような被試験装置20の試験に対し、アサーションチェッカー6により監視し、アサーション監視情報31、及びカバレッジ情報32を記憶部102に蓄積する。
【0053】
試験プログラム30は、試験生成処理部11、期待値生成処理部12、試験実行処理部13、試験結果比較・出力処理部14 、アサーション起動処理部15、監視情報採取・解析処理部16、カバレッジ情報更新処理部17、試験データ調整処理部18、等の処理部を有する。各処理部は線で示すように相互に情報データを授受する。
【0054】
11〜14の処理部は、従来の方式でも存在し、本実施の形態でも前提的に存在する機能である。これらの処理部は、各回の試験における試験生成・実行サイクルに係わる処理を行うものであり、試験内容(試験データ50)の生成、当該試験の期待値の生成、当該試験の実行、及び当該試験結果の出力、といった基本的な処理を行うものである。また、15〜18等の処理部は、本特徴を実現するために必要な処理部であり、アサーションやカバレッジ、フィードバックに係わる処理を行うものである。
【0055】
試験生成処理部11は、各回の試験を最初から作成する。試験生成処理部11は、試験データ50(試験命令列51、パラメータ52)を生成する。
【0056】
期待値生成処理部12は、試験データ50をもとに、その試験の結果の期待値を生成する。
【0057】
試験実行処理部13は、アサーションチェカー6の監視下で、プロセッサ1、周辺装置2、記憶装置3、システムバス5等の被試験装置20に対する試験を実行する。試験実行処理部13は、試験生成処理部11によって生成された試験データ50を記憶装置3へ配置し、プロセッサ1に試験データ50による試験を実行させる。
【0058】
試験結果比較・出力処理部14は、試験データ50による試験結果と、期待値生成処理部12による期待値とを比較して、結果を出力する処理を行う。
【0059】
アサーション起動処理部15は、試験開始の際にアサーションチェカー6を起動する処理を行う。アサーション起動処理部15は、試験開始時に、記憶装置3の特定番地に書き込みを実施することで、アサーションチェッカー6(6−1,6−2,6−3)を起動する。
【0060】
監視情報採取・解析処理部16は、試験データ50による試験(今回の試験)の終了時に、アサーションチェカー6の出力による記憶部102内の当該試験に関するアサーション監視情報31を採取し、採取した情報を、カバレッジ情報32の更新のために解析する処理を行う。
【0061】
カバレッジ情報更新処理部17は、カバレッジ情報32を管理し、前記アサーション監視情報31の解析結果に基づき、次回以降の試験内容(試験データ50)を生成(変更)するために用いる情報として、カバレッジ情報32を更新する処理を行う。この更新では、追加情報(解析結果データ)が、記憶部102内の過去(蓄積済み)のカバレッジ情報32にマージされる。
【0062】
試験データ調整処理部18は、試験データ生成処理部11に対する調整の役割である。試験データ調整処理部18は、カバレッジ情報32に基づき、次回以降の試験内容を生成するために、生成済みの試験(前回の試験内容)の試験データ50(試験命令列51または特にパラメータ52)を調整する処理を行う。例えば、試験データ調整処理部18は、生成済みの試験データ50の試験命令列51を再利用し、その試験命令列51に対してそのパラメータ52のみを調整のために作成(再生成)する。
【0063】
試験データ調整処理部18は、調整の制御の仕方としては、例えば、複数の要素の競合性を高める方針に従って、カバレッジ情報32に基づき未試験の部位や競合性が低い部位などを次回の試験の候補にするように、試験データ50を調整する。例えば特に、競合動作状態となるように各要素の実行タイミングが調整される。なお、試験命令列51を変更する場合、パラメータ52を変更する場合、その両方を変更する場合などがある。
【0064】
<4:試験プログラム、アサーションチェッカー>
図4において、試験プログラム30及びアサーションチェッカー6の概略処理フローを示している(Sは処理ステップを表す)。本フローでは、1回の試験の処理サイクルを示している。前述の図3の試験実行処理部13等により、各回の試験を実行する。
【0065】
試験者(U)による情報入力操作としては、設定情報の入力や、試験開始のための起動指示(実行コマンド)の挿入などがあるが、それ以外は基本的にコンピュータによる自動処理で実現される。
【0066】
まず、試験データ生成処理S20において、試験生成処理部11により、被試験装置20(各々の要素)に対し、乱数により試験データ50を生成する。試験データ50は、試験命令列51(試験命令群)とそれに付属させるパラメータ52を含む。乱数により、例えば、試験対象の要素、命令、パラメータ等が選択される。
【0067】
プロセッサ1(CPU)向けの試験に関しては、試験対象リソースとして、汎用レジスタ、制御レジスタ、割り込みレジスタ、浮動小数点レジスタ、TLB(Translation Look-aside Buffer)、キャッシュ等のCPU毎に存在するリソースや、記憶装置3上のCPU共通領域や個別領域のデータなどがある。
【0068】
プロセッサ1向けの試験命令列51に関しては、乱数で生成され、1つの命令ごとにシミュレートしながら作成される。これは、効率的で効果的な命令列を作成させる目的があり、プログラムカウンタや各レジスタの変化を把握しながら命令列が作成される。
【0069】
レジスタ類の数は限られており、試験命令列51に関する試験命令数が多いほど、多くのレジスタが使用される。乱数で単純にレジスタを使用した場合、偏ったレジスタの使い方によって同一レジスタへの上書きが頻繁に発生し得る。その場合、レジスタ上で引き継がれる値が上書きにより消えてしまうことが有り得る。これにより、それまでの試験が無駄になってしまう可能性がある。これを避けるため、一旦、命令(試験命令)によって値が変化したレジスタ(例えばレジスタA)については、ソースレジスタとして使用し、当該値を別のレジスタ(例えばレジスタB)に引き継ぐようにする。これによって、値が変化しても、その後、例えばレジスタAを上書きしても、命令列(試験命令列51)が漏れなく順序良く実行された証拠になる。
【0070】
IO(周辺装置2)向けの試験に関しては、試験対象リソースとして、試験対象のチャネル/デバイスの選定、チャネル毎/デバイス毎に存在するレジスタ、転送元・転送先アドレス及びデータ、割り込みレジスタなどがある。これらに関して、乱数を使用して試験データ50が作成される。
【0071】
試験データ50の生成に関し、すべて基本的には乱数で生成され変動値となるようにするが、被試験装置20の仕様上、制約や限界がある場合などには、固定値として候補を用意する。例えば、本システムでは試験者によりこの固定値を選択的に設定することができる。また、試験の内容によっては、乱数による生成に関して、均等ではなく重み(偏り)を付けた割り当てをする場合がある。本システムでは試験者によりこの乱数の重み付けを選択的に設定することができる。本システムでの各種設定については、コンソール端末200等から試験者が画面を見ながら情報入力操作により行うことができる。
【0072】
周辺装置2向けの試験命令列51に関しては、周辺装置2を動かすトリガとなる起動専用命令列や、終了判定専用命令列など、使用目的に合わせた命令列が、任意の場所へ配置される。
【0073】
次に、期待値生成処理S21において、期待値生成処理部12により、試験データ50による試験内容に対応する期待値を生成する。これは、試験プログラム30に内蔵するソフトウエアシミュレータにより、被試験装置20ごとに、試験内容に対応する期待値が作成される。
【0074】
プロセッサ1に関する期待値生成方法としては、CPUアーキテクチャやIEEE規格等に準じて作成するものであり、プロセッサ1に関する全命令機能が本システムで対応可能(期待値生成可能)になっているものとする。
【0075】
周辺装置2に関する期待値生成方法に関しても、各々専用のハードウェアマニュアルが、期待値生成処理S21としてインプリメントされる。
【0076】
次に、試験を起動(実行)する前に、アサーション起動処理S22において、アサーション起動処理部15により、アサーションチェッカー6を起動する。起動方法は、ある決められた記憶装置3のアドレスに対して、所定bitを書き込むことである。この起動により、アサーションチェッカー6は、試験プログラム30とは完全に独立したハードウェア的な監視動作状態となる。
【0077】
続いて、試験実行処理S23において、試験実行処理部13により、試験データ50による試験を開始させる。試験が開始されると、被試験装置20の各要素により、様々な信号の動作が開始される。
【0078】
一方、アサーションチェッカー6は、対象試験動作監視処理S24において、試験動作の流れをバス(システムバス5)上で継続的に監視する。その監視の最中、アサーションチェッカー6は、バス(システムバス5)上のリクエスト信号やアドレス信号などの対象信号の監視において、監視している信号条件(例えば特に競合条件)と、試験中の信号の状態とが一致するかどうか判定する。一致した場合、アサーション監視情報抽出処理S25において、アサーションチェッカー6は、その一致の発生(イベント及びタイミング)に関するアサーション監視情報31を抽出(作成)し、記憶部102へ蓄積する。
【0079】
アサーション監視情報31は、監視対象の要素(周辺装置2等)毎の動作時間や回数、複数の要素の同時並行動作(競合動作)の時間や回数、監視対象の信号条件の成立(一致)の時間や回数などがある。
【0080】
S23のすべての被試験装置20の試験を終了した後、監視情報採取処理S26において、監視情報採取・解析処理部16により、記憶装置3に蓄積されているアサーション監視情報31を採取し、カバレッジ情報更新処理S33への入力値のための情報として用意する。
【0081】
S23の試験の最後に、試験結果比較・出力処理S27において、試験結果比較・出力処理部14により、試験結果と期待値を比較する処理を行う。この処理では、試験命令列51や、試験終了時点(要素の動作が終了した時点)での結果リソースをすべて採取して、これらを、期待値生成処理S21で生成された期待値のデータと比較する。
【0082】
そして、比較結果に基づき、S30で、すべての被試験装置20の試験の正常性をチェックする。比較結果で1つでもエラーを検出した場合は、S31でエラーメッセージを出力する。例えば当該エラーメッセージ等の情報をコンソール端末200の画面に表示し、ファイルに格納する。試験の正常性がOKであれば次へ進む。
【0083】
次の解析処理S32において、監視情報採取・解析処理部16により、前記監視情報採取処理S26で得られたアサーション監視情報31を解析し、カバレッジ情報32への入力値とするための解析結果データを纏める。なお、この解析処理S32は、S26やS33等に含めて行うものとしてもよい。
【0084】
上記解析結果データを用いて、カバレッジ情報更新処理S33において、カバレッジ情報更新処理部17により、カバレッジ情報32のデータを更新する。この更新処理では、アサーションチェッカー6から得るべき必要条件、アサーション監視情報31から照合や計算で得られる情報を、カバレッジ情報32にマージする。この更新処理では、例えば、アサーション監視情報31をもとに、被試験装置20の各要素の動作時間のすべてが集計され、同時並行動作(競合動作)した要素及びその時間や回数などの情報が、カバレッジ情報32に蓄積される。
【0085】
次に、試験データ調整処理S34において、試験データ調整処理部18により、今回の試験及び監視の結果(即ちそれを表すアサーション監視情報31とカバレッジ情報32)に基づき、次回以降の試験内容についての調整(変更)の判断及び調整処理を行う。即ち、次回以降の試験に関して、試験内容を新規一転として最初から乱数で作成して行うのか、それとも、先ほど(今回)実行した試験内容(既に生成済みの試験データ50)を引き継ぎ再利用してその調整程度の変更によって行うのか、等を判断により見極める。この判断は、特に、カバレッジ情報32内に含まれている信号条件や競合条件の発生実績に関する情報や試験調整の実績に関する情報など(後述のイベント情報32aやタイミング情報32b)の参照によって行われる。
【0086】
この試験データ調整処理S34では、カバレッジ情報32の参照により、その時点で未試験の部位や、試験発生回数が少ない部位や、競合動作の実績が少ない部位などが見出される。調整の方針に従うそのような部位が見出された場合(調整実行条件を満たす場合)、試験内容の調整を実行することに決定する。そして、試験データ調整処理S34では、当該部位(調整対象要素)に対する試験内容について、方針に従って、試験データ50の例えば特にパラメータ52が調整される。この場合、パラメータ52の調整とは、被試験装置20に対する大きな試験内容は変えずに、例えば周辺装置2への起動タイミングや転送先アドレス、転送データ長などを調整することで試験の競合性や負荷を調整するものである。
【0087】
最後に、終了判定S35では、終了条件である、オペレータ(試験者)の要求した分の試験(例えば複数回の試験によるルーチン)を実行完了したかどうかを判定する。要求が満たされている場合は終了し、満たされていない場合、再度試験(次回の試験)を実行する場合は、前記試験データ生成処理S20へ戻り、再度、前述同様に、S20以降の処理を行う。次回以降の試験では、前回(今回)の試験内容がフィードバック(反映)された内容により、同様に実行される。
【0088】
このように、試験内容の調整のためのフィードバック(S34からS20へ)を行いながら、一連の処理サイクル(S20〜S34)による試験を複数回繰り返し実行することができる。以下、更に具体的に説明する。
【0089】
<5:アサーション及びカバレッジ情報更新処理>
図5において、試験プログラム30の処理において、アサーションチェッカー6によるアサーション監視情報31をもとにカバレッジ情報32を更新する処理(前記S32,S33等に相当)に関する概略的フローを示している。
【0090】
アサーション起動及び試験起動処理S51において(前記S22,S23相当)、アサーションチェッカー6は、アサーションの起動により試験プログラム30とは完全に独立したハードウェア的な監視動作状態となる。そして、被試験装置20では、試験の開始によって各々の要素が個別に動き出し、プロセッサ1、周辺装置2、記憶装置3等の要素を経てシステムバス5上に様々なデータや信号が流れる状況になる。
【0091】
アサーションチェッカー6を制御するプログラム構造例として右側にアサーションチェッカー制御プログラム60を示している。これは、HDLにおいてソフトウエアによってハードウェアの動作をコーディングしたものである。頭に宣言文(アサーションモジュール宣言、……、定数宣言など)があり、その後の条件文(if/then文など)において信号条件(アサーションチェック条件、リクエスト競合条件など)が記述され、その後に動作(特定アドレス採取、更新データ採取、更新時間採取、更新回数採取など)が記述されている。
【0092】
このアサーションチェッカー制御プログラム60が監視対象の制御信号を検出した場合、その検出した時間や回数などを、下側に示すアサーション監視情報31のようなフォーマットで抽出、記録する。図5のアサーション監視情報31の例に関して、「監視対象」は、監視対象の識別項目を示し、これに対応して、例えば「時間」と「回数」を格納する項目がある。「監視対象」項目としては例えば、周辺装置2である入出力装置(IO)に関する起動レジスタや完了フラグレジスタ、特定の信号の成立、転送IOの競合、信号条件のパターンなどがある。これらの分類としては、(1)各IOの送受信時間、各要求信号の時間、及び回数、(2)送受信の競合時間、及び競合回数、(3)要求信号の条件の組み合わせ(パターン)による競合時間、及び競合回数、等がある。なお「時間(時刻)」は、例えばクロックサイクル値で表される。
【0093】
試験中にアサーションチェッカー6が監視対象を検出すると、アサーション監視情報31内の「時間」や「回数」の項目へ値が書き込まれる。例えば、監視対象が周辺装置2であるIO−1の起動レジスタである場合、このIO−1の起動レジスタのアドレスに対して決められた値が格納されることで、当該IO−1によるデータ転送の開始になり、このデータ転送の完了後、ハードウェアが当該IO−1の完了フラグレジスタにフラグを設定する。このようなハードウェア仕様に対し、当該アドレスをアサーションにより監視することで、ハードウェア(デバイス)の動作時間(起動開始から動作終了までの時間)を計測することができる。
【0094】
アサーションチェッカー6は、試験データ50による試験動作から、IO−1起動レジスタへの書き込みを検出し、その時間(起動時刻)を書き込む。その後、ハードウェアのIO−1完了フラグレジスタへの書き込みを検出し、その時間(終了時刻)を書き込む。これらIO−1起動レジスタとIO−1完了フラグレジスタによって、周辺装置2(IO−1)の動作時間(起動時刻から終了時刻までの時間)を求めることができる。またこれと同様に、被試験装置20の全体(複数の要素)に関する動作時間等の情報を得る。これにより、試験中に各要素がどれだけ同時並行動作(競合動作)したのかを知ることができる。
【0095】
<6:アサーションチェック>
図6において、アサーションチェックにおける試験対象信号の信号条件(競合条件)の例について示している。図5のアサーション監視情報31内における例えばパターン1からパターン40までの複数の要因(信号条件)による競合条件の監視の場合における、2つの例(信号条件1(パターン1)、信号条件2(パターン2))である。
【0096】
本例において、図6(a)で、Signal(信号)下の項目(SCLK等)は、アサーションチェッカー6で記述された信号(監視対象信号)であり、これらは前記アサーション起動及び試験起動処理S51の後では常に監視状態にある。また、図6(b)では、各信号条件の記述例を示している。信号条件は、例えば複数の信号の値の論理演算により表される。
【0097】
信号条件1(例えばスヌープ処理)を満足したときには、競合(競合状態の発生)とみなし、この時点での時間や発生回数が、アサーション監視情報31内の「時間」、「回数」項目に格納される。同様に、信号条件2(例えばバスリクエスト処理)を満足したときに、競合とみなし、アサーション監視情報31に情報が格納される。
【0098】
S51の次のアサーション監視情報読み出し処理S52において、監視情報採取・解析処理部16により採取済みのアサーション監視情報31を読み出す。
【0099】
そして、次のアサーション監視情報データ変換処理S53において、アサーション監視情報31を入力として、当該情報の照合、計算、分析などにより、データ変換処理を行う(前記解析処理S32相当)。
【0100】
これにより得られたデータ(解析結果データ)を用いて、次のカバレッジ情報記録更新処理S54において、カバレッジ情報更新処理部17により、カバレッジ情報32を更新する。更新の際には、過去(蓄積済み)のカバレッジ情報32に対し、前記生成済みの試験データ50の内容(試験命令列51、パラメータ52)と、要素の動作時間(起動時刻、終了時刻)、競合率(競合時間、競合回数)などのタイミング情報とを加え合わせる。
【0101】
<7:カバレッジ情報>
図7において、カバレッジ情報更新処理(S33)に関し、カバレッジ情報32の構成例を示している。図7のカバレッジ情報32のうち、大きくは、(a)イベント情報32a、(b)タイミング情報32b、に分かれる。
【0102】
(a)イベント情報32aにおいて、項目として、信号条件(パターン)、発生回数、調整フラグ(調整回数)、発生頻度(%)、累積発生回数を有する。イベント情報32aは、監視対象の複数の信号条件(パターン)に関して、その成立の発生回数や頻度、並びに試験内容調整の発生のフラグ(回数)などを表すものである。
【0103】
信号条件(パターン)は前述の通りである。監視対象の制御信号に関する所定の信号条件(パターン)1〜40までが存在する。発生回数は、複数回の繰り返しの試験(ルーチン)における発生回数である。累積発生回数は、例えばそのルーチンの複数回の繰り返し等による過去の多数の試験の実績における発生回数の累積合計値として更新される。発生回数などの値は、すべて、累積加算により更新される。発生頻度については、当該パターンの発生頻度が全体のうちの何%であるかを、試験数や発生回数などをもとに計算することで更新される。
【0104】
調整フラグ(調整回数)については、生成済みの試験データ50(試験命令列51やパラメータ52)を調整により更新したこと、ないしその回数を表す。当該項目は、最初の時点では更新されず0であり、例えばパターン3に関する調製が発生すると1になる。
【0105】
(b)タイミング情報32bにおいて、項目として、被試験装置20ごとに、競合時間、競合回数などを有する。本例では周辺装置2(IO)の転送動作の競合に関する場合である。タイミング情報32bでは、周辺装置2毎に、起動時刻や終了時刻を読み出した値が集計され、転送に関する競合時間が求められる。周辺装置2として、例えばIO−1〜IO−3の3つのIOを有する場合において、それぞれの組み合わせの項目を有する。例えばIO−1とIO−2などの2つの競合に着目した組み合わせ(「1⇔2」,「2⇔3」,「3⇔1」)や、3つのIOの競合に関する項目(「1,2,3」)を有し、各々の同時期に動作した時間(競合時間)を保持する。
【0106】
競合率は、[競合時間]/[動作している周辺装置の時間]から計算により得られる。競合時間と競合回数が大きい場合は競合率が高くなる。競合率が高い部位については、試験内容調整の判断で優先的に候補として選択されることになる。選択されてタイミングが調整されると、タイミング情報32bの調整回数の項目に回数が加えられて更新される。
【0107】
<8:競合タイミング>
図8において、タイミング情報32bに係わり、複数の要素に関する競合タイミング(動作タイミング)の例を示している。時間はクロックサイクル値であり、矩形部は当該要素(IO−1,IO−2,IO−3)の起動状態(動作時間)を示す。前記採取されたアサーション監視情報31のデータをもとに、IO等の要素の起動(動作)における開始時刻と終了時刻、及びそれらの差分である動作時間が得られる。例として、IO−1の開始時刻:100、終了時刻:160、IO−2の開始時刻:120、終了時刻:170、IO−3の開始時刻:50、終了時刻:150とした場合である。
【0108】
次のように計算によって変換することで、競合情報(タイミング情報32b)とする。まず、IO−1,IO−2,IO−3の各々の動作時間は、開始時刻と終了時刻の差分から、60,50,100である。IO−1とIO−2の競合情報として、それらが同時並行動作している時間(期間)である競合時間T(1⇔2)は、120から160の間であり、長さは40となる。同様に、IO−2とIO−3についてのT(2⇔3)は、120から150の間で、長さは30となる。IO−3とIO−1についてのT(3⇔1)は、100から150の間で、長さは50となる。更にIO−1とIO−2とIO−3との3つの要素間については、競合時間T(1,2,3)は、120から150の間であり、長さは30となる。このような変換に従い、タイミング情報32bにおける競合時間の各項目(「1⇔2」等)に値が格納される。競合時間の第1行目は上記例のTの値(40,30,50,30)である。
【0109】
また、競合時間の値に対応して、要素間の競合が発生している場合には、タイミング情報32bにおける競合回数が加算される。本例では、対象とするすべての周辺装置2(IO)の競合が発生しているので、第1行目の1のように、それぞれの競合回数が加算される。
【0110】
このように、すべて大小比較による差分で求められる競合時間のデータ、並びに競合回数のデータが、タイミング情報32b内に記録、蓄積される。カバレッジ情報記録更新処理S54において、上記例に関するカバレッジ情報32の内容の更新を行う。
【0111】
更には、これらのタイミング情報32bのデータに基づき、図示していないが、競合時間の最大値、最小値、平均時間値、競合率の値なども、簡単な計算によって求めて、併せてカバレッジ情報32内に記録するようにし、試験内容調整の判断に用いる。なお競合時間に関する最大、最小、及び平均時間、並びに競合回数に関しては、データ更新により管理される。
【0112】
<9:試験データ調整処理>
図9において、試験データ調整処理(S34相当)に関する概略的処理フローを示している。前記蓄積されたカバレッジ情報32に基づき、試験プログラム30の処理内(試験データ調整処理部18、試験生成処理部11等)において、生成済み試験データ50(試験命令列51等)を利用してどのように試験リソースを作成するかについて例を説明する。
【0113】
判定処理(試験データ調整判定・候補決定処理)S81において、試験データ調整処理部18により、カバレッジ情報32に基づき、試験データ50を調整するか否か(前述の新規生成の場合)を判定する。調整の例として、前述のように、試験命令列51を再利用してパラメータ52のみを再生成する。
【0114】
この判定では、カバレッジ情報32におけるイベント情報32a内の発生回数、調整フラグ(調整回数)、発生頻度、並びにタイミング情報32b内の競合回数などの情報を用いる。この判定では、状況に合わせて臨機応変に、AND(論理積)条件やOR(論理和)条件によって決定してもよい。この条件は、例えば各回の試験毎の条件による判定としてもよいし、システム設定などによって予め決定されていてもよい。
【0115】
この判定では、カバレッジ情報32をもとに、以下のようなケース(部位)を認識する。即ち、未試験のケース(未だ試験対象として実現されていないケース、例えば発生回数が0の部位)や、試験が不十分なケース(例えば発生回数が少ない部位)や、システムバス5上での競合動作が未だ発生していない又は少ないケース(例えば競合回数が少ない部位)や、それらの試験対象の信号の組み合わせのケースなどである。
【0116】
上記ケース(部位)の認識により、調整か新規生成かを判断し、調整を行う場合は、試験内容調整の優先的な対象となる部位(要素など)を、複数の候補として決定する。S81によって新規生成が選択された場合は、S82,S83等の処理を行わずに終わり、前記試験データ生成処理S20等へ直接進むことになる。S81によって調整が選択された場合は、乱数を用いた調整対象選定処理S82へ進む。
【0117】
新規生成の場合の一例としては、例えば、イベント情報32aでの発生回数が1000回、調整フラグが10000回、発生頻度が90%等の場合には、全体的に考えて試験に偏りがあると判断する。そして、それまでの調整処理(生成済みの試験命令列51の再利用)は止めて、次回の試験内容を新規の試験データ50の生成によるものとし(リセット)、例えば次の異なる信号条件(パターン)での試験を実行開始するに至る。
【0118】
また、新規生成の場合の別の一例としては、試験内容をある条件の一点に絞り、その一点に対して、しらみつぶし的に試験を行う場合において、満了の条件とする発生回数と調整フラグ(調整回数)などを設け、その満了の条件を満足した場合には、次回の試験を新規生成とする。
【0119】
調整対象選定処理S82では、生成済みの試験命令列51をもとに、S81で得られた調整対象となる被試験装置20の複数の候補の中から、更に乱数を用いて、ランダムに調整対象を選定する。調整可能な組み合わせが多いため、乱数を用いて選定する。
【0120】
試験データ調整(パラメータ再生成)処理S83においては、S82で選定された調整対象を、前記生成済みの試験命令列51を再利用して、次回の試験内容となるパラメータ52を再生成する処理を行う。これにより、次回の試験のための調整された試験データ50が得られる。
【0121】
これらの処理の後、前記試験データ生成処理S20では、再び、試験生成処理部11により、調整された試験データ50による試験、あるいは新規生成による試験が生成される。なお、S20の一部ないし変形としてS83を行う形態と考えても同様である。
【0122】
<10:競合タイミング調整例>
図10において、図9の試験データ調整処理(S34)に関して、(a)調整前と(b)調整後の例をタイムチャートとして示している。本例は特に競合試験のために要素の実行タイミングを調整して競合動作を自動調整する場合である。矩形は各要素の起動状態(動作時間)を示し、試験命令列51とパラメータ52により決められている。
【0123】
本例での試験対象の要素は、プロセッサ1に関するCPU−0〜CPU−3の4つ、及び周辺装置2に関するIO−0〜IO−3の4つを有する。生成済みの試験命令列51は、上記4つのプロセッサ1に対する各試験の実行タイミング、及び上記4つのIO(周辺装置2)に対する各試験の実行タイミングである。
【0124】
対象の各要素の実行タイミングは図示の通りである。例えば、IO−1が最初に実行され、その後、IO−3、IO−2の実行終了直後、殆ど並行して、IO−0、CPU−2、CPU−3と続き、少々遅れてCPU−1、CPU−0が実行されるといったものである。これら一連の実行タイミングの情報は、図示しないが前記カバレッジ情報32(タイミング情報32b)に含まれている。例えば、(a)調整前の情報は、前回(今回)実行した試験の結果を示しており、タイミング情報32bの内容として既に格納されているものとする。
【0125】
図9の試験データ調整処理において、目的として、これらの対象の要素の中から、調整(パラメータ52の再生成)に有効なものが選択され、実行タイミングの調整が行われる。調整に有効な対象を選択するために、タイミング情報32bが入力として参照される。具体例として、図7のタイミング情報32bに、周辺装置2の競合時間と競合回数の結果の数値が格納されている。この競合時間と競合回数(ないし競合率)が少ないものが、優先的に候補として決定される(S81)。候補の中からランダムに調整対象が選定される(S82)。そして、当該調整対象について、試験データ調整(パラメータ再生成)処理S83により、試験データ50の試験命令列51を再利用してパラメータ52が再生成(調整)される。
【0126】
調整の仕方として、例えば、各々の対象の要素の起動時刻を調整する方法(起動スケジュールを調整する方法)と、動作時間(試験期間)の増減(長さ)を調整する方法とがある。また、それらのいずれか一方、あるいは両方を採用する場合がある。
【0127】
更に、起動時刻を調整する方法では、大きく分けて、分散(直列)型と、競合(並列)型とがある。分散(直列)型では、試験の開始から終了までの間、できるだけ直列に別の時期に、要素の起動時刻(動作時間)を割り当てる。これに対して、競合(並列)型では、できるだけ並列実行を意識して同時期に動作させるように要素の起動時刻(動作時間)を割り当てる。また、それら両方の型を乱数を用いて混在させるように取り入れる、分散競合混在型も可能である。
【0128】
動作時間(試験期間)の増減を調整する方法において、プロセッサ1の試験については、乱数で生成される試験命令列51やデータ(パラメータ52)の種類、配置場所などが調整される。具体的には、命令数の増減、命令の入れ替え、命令実行の繰り返し、命令の配置環境、データの配置環境、データの種類などが調整される。また、それ以外に割り込みやスヌープの外乱を付加する場合がある。
【0129】
入出力装置などの周辺装置2の試験については、転送長の増減、転送元・転送先の配置環境、起動用命令の配置環境、起動用命令による送受信の繰り返し、各プロトコルのモード切り替え、外部割り込み等の外乱、等がある。
【0130】
上記のような調整後、図7のカバレッジ情報32のイベント情報32aの調整フラグ(調整回数)をインクリメントして更新する。これにより、何回、既存の試験データ50を再利用して試験したのか、即ち調整の実績が、データとして残される。当該データは前述の判定(図9)の際に用いられる。
【0131】
図10の例は、生成済みの試験命令列51の再利用による調整及び試験において、被試験装置20の複数の要素の試験命令列51の競合の度合いを向上させるために、起動時刻(起動スケジュール)を調整する方法の1つである前記競合型の一例である。
【0132】
図9の試験データ調整処理において、図7のタイミング情報32bの競合回数が少ないと判断された場合、それに該当する周辺装置2等の対象の実行タイミングが同時期になるように動かすために、複数の候補の中からランダムに選択して調整される(S82,S83)。
【0133】
例えば、(a)調整前の状態から、破線で示すCPU−2、IO−0、CPU−3、並びにCPU−1、CPU−0の起動タイミングを時間的に前倒しさせるように矢印の方向へ調整する(対応パラメータ52の調整)。これにより、(b)調整後の状態となる。各調整の要素の動作時間の長さはそのままに、起動タイミングが前へずれた形である。(a)調整前に比べて、(b)調整後では、競合の度合いが向上していることがわかる。例えば、CPU−2,IO−0等の要素とIO−3等の要素とが同時並行動作する競合試験が行われる形となる。
【0134】
なお、本システムでは、図8や図10のようなタイムチャートを、コンソール端末200等の画面に表示する処理を行うことで、試験者は競合性などの状態を把握しやすい。図11に、そのような競合性を表すタイムチャートの表示例を示す。
【0135】
このように、本実施の形態のシステムでは、実行済みの試験の試験データ50を再利用して次回の試験内容を調整する。本システムでは、アサーション及びカバレッジを用いて、方針に従って、前回までの試験結果を次回以降の試験へフィードバック(反映)することによって、試験内容を自動的に調整する。このような試験を繰り返すことによって、被試験装置20に関する機能及びタイミング等の試験に関して、網羅性を高めることが実現できる。特に、無意味な試験(例えば重複するような試験)の実行を回避、削減でき、競合率を高めた競合試験等の有効な試験を効率良く実行できる。従って、試験の期間の短縮を図ることができ、製品の品質を高めることができる。
【0136】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることは言うまでもない。
【産業上の利用可能性】
【0137】
本発明は、IC設計及び試験などのための情報処理システムに利用可能である。
【図面の簡単な説明】
【0138】
【図1】本発明の一実施の形態の情報処理装置試験方法及びプログラムを適用する情報処理装置(EWS)を含んで成る情報処理システム(論理シミュレーション環境)の基本的な構成例を示す図である。
【図2】本試験方法及びプログラムにおける論理シミュレータ上での被試験装置の構成例、及びそれに関連する、試験実行時の試験プログラム(試験データ)の状態を示す説明図である。
【図3】論理シミュレータと試験プログラムを中心とした特徴的な制御部における各処理部などの相関関係を含む構成を示す図である。
【図4】試験プログラム及びアサーションチェッカーの概略処理フローを示す図である。
【図5】アサーション監視情報によるカバレッジ情報更新処理に関する概略的フロー、アサーションチェッカー制御プログラム及びアサーション監視情報の例を示す図である。
【図6】アサーションチェックにおける試験対象信号の信号条件(競合条件)の例を示す図であり、(a)は信号条件の例、(b)は信号条件の記述例である。
【図7】カバレッジ情報の構成例を示す図であり、そのうち、(a)はイベント情報、(b)はタイミング情報を示す。
【図8】被試験装置の複数の要素における競合動作のタイミングの例を示す図である。
【図9】試験データ調整処理(S34)に関する概略処理フローを示す図である。
【図10】試験データ調整処理(S83)に関して、(a)調整前と(b)調整後の例をタイムチャートとして示す図である。
【図11】競合性を表すタイムチャートを、コンピュータの画面に表示する処理に関して、イメージを示す図である。
【符号の説明】
【0139】
1…プロセッサ(CPU)、2…周辺装置(IOなど)、3…記憶装置(メモリ)、5…システムバス、6(6−1,6−2,6−3)…アサーションチェッカー、10…論理シミュレータ、11…試験生成処理部、12…期待値生成処理部、13…試験実行処理部、14…試験結果比較・出力処理部、15…アサーション起動処理部、16…監視情報採取・解析処理部、17…カバレッジ情報更新処理部、18…試験データ調整処理部、20…被試験装置(論理ファイル)、30…試験プログラム(乱数試験プログラム)、31…アサーション監視情報、32…カバレッジ情報、32a…イベント情報、32b…タイミング情報、50…試験データ、51…試験命令列、52…パラメータ、60…アサーションチェッカー制御プログラム、100…EWS(エンジニアリングワークステーション)、101…制御部、102…記憶部、103…通信部、104…補助記憶部、105…入力部、106…表示部、200…コンソール端末。
【技術分野】
【0001】
本発明は、半導体集積回路(IC)等の情報処理装置における論理回路等の機能(論理)等を対象とした試験(テスト)の方法に関し、特に、乱数を用いてランダムな試験を行う方法を用いて、被試験装置の複数の要素(プロセッサ等)を試験する方法に関する。
【背景技術】
【0002】
従来技術における情報処理装置の試験方法は以下である。情報処理装置(以下、被試験装置と称する)の論理的制御部を構成する論理回路等を対象とした試験を行う。この試験の被試験装置は、プロセッサ(CPU)、記憶装置(メモリ)、及び入出力装置等の周辺装置、等を有する構成である。またそれらの要素を接続して通信可能とするバス(システムバス)などの装置(システム)を有する。
【0003】
上記試験では、試験者により試験項目が抽出される(例えばハードウェアマニュアルをもとに考慮及び決定される)。この試験項目がすべての論理回路動作を網羅することができれば、試験の精度が完全に確保されていることになる。
【0004】
しかしながら、現在の情報処理装置は論理構成が複雑であるため、すべての試験項目を抽出して試験を行うことは困難であり、試験項目の抽出洩れや実行洩れ等の可能性がある。よって、すべての試験ではなくとも、次善として、試験の精度を高めることが求められる。
【0005】
そのため、従来、乱数を用いてランダムな試験を行う試験方法(乱数試験方法)が用いられている。即ち、複数の要素や複数の試験命令及びパラメータなどに関して、乱数データを用いてランダムに試験内容(試験データ)を多数生成して試験に適用する方法である。これにより、試験項目の抽出洩れや実行洩れ等を補っている。
【0006】
上記乱数試験方法などに関して、以下に示すような従来技術例がある。
【0007】
(1)特開平7−253901号公報(特許文献1)には、乱数データを入力として試験命令列を繰り返し生成し当該命令列を被試験情報処理装置に実行させて当該装置を試験する技術が記載されている。この技術において、乱数データを入力として次の試験命令列を生成するときに、繰り返し生成された試験命令列の中で、発生頻度の少ない試験命令を、無作為に、乱数データを入力として生成中の試験命令列に挿入する旨が記載されている。
【0008】
(2)また、特開2005−108007号公報(特許文献2)には、LSI設計検証装置及び方法において、RTL(レジスタ転送レベル)シミュレーションの途中段階、又は検証対象となるLSIの回路内部において、動作シミュレーションにおける動作履歴を抽出することで、整合しているかどうかを検証するアサーションチェック手段を用いる旨が記載されている。この技術は、論理の矛盾を検出するために論理内部に検証用の仕掛け(アサーションチェック手段)を組み込む方式(アサーションを用いた試験方法)である。
【0009】
(3)また、特開2002−149440号公報(特許文献3)には、論理回路検証方法及び装置において、乱数検証(乱数試験方法)における論理シミュレーションの検証効率の低下を抑えることを目的とした検証を実行するか否かを判定する旨が記載されている。この技術は、検証済みパターン履歴情報を蓄積、更新して、試験実行判断や障害解析に役立てるものである。
【特許文献1】特開平7−253901号公報
【特許文献2】特開2005−108007号公報
【特許文献3】特開2002−149440号公報
【発明の開示】
【発明が解決しようとする課題】
【0010】
前述の従来技術において、試験の精度を高めるために、特に、被試験装置における複数の各要素(CPU、周辺装置、記憶装置など)及びシステムバスを含めた構成において、それぞれの処理機能及びそれらの並列(同時並行)動作を、網羅的に試験することが望まれる。
【0011】
そのためには、CPU向け試験、周辺装置向け試験、及び記憶装置へのデータ転送試験、といった各要素向けの試験(個別試験)を、並列で実行する試験、即ち競合試験、を強化することが求められる。
【0012】
そこで、上記各要素の個別試験の命令実行を組み合わせ、その命令発行タイミングや、システムバスを経由する周辺装置の起動タイミングなどのタイミング条件を意識した複雑な組み合わせによって、各要素に高負荷を与えた条件下での試験(競合試験)、が重要となる。
【0013】
前述の従来技術例では、例えば乱数試験方法においては、乱数の特徴を活かして多種多様な組み合わせのアルゴリズムでの試験を実現している。
【0014】
被試験装置の要素の試験、特にCPUや周辺装置などの多数の要素の動作を意識しなければならない複雑な試験では、それら各要素向けの個別試験を生成してそれらを単純に実行する方式が採用されていた。また、複数の要素に関する競合動作の試験についても、要素の組み合わせによる試験を並列で実行することによって、ある程度までは行われていた。
【0015】
しかし、それら各要素の個別試験の生成は独立しており、当該試験同士には相互関係が無い。よって、特に複数の要素の競合動作(並列動作)の試験に関する網羅性(言い換えるとカバレッジ)に欠けており、試験洩れ等が発生する可能性がある。また、乱数性に偏りが発生する可能性もある。また、網羅性の度合いが不明確であり、試験が実際にどこまで達成できたのか、あるいはその有効性や十分性など、が不明確である。
【0016】
従来、要素の組み合わせによる競合動作を網羅的に試験することは困難であり、偶然性や時間に期待してしまうことは否定できない。
【0017】
なお、前記特許文献1の技術は、乱数試験方法に関するが、アサーション(アサーションチェック方法)や、タイミング(タイミング試験方法)や、カバレッジを用いた方法に関するものではない。前記特許文献2の技術は、アサーション(アサーションチェック方法)に関するが、乱数試験方法などに関するものではない。前記特許文献3の技術は、乱数試験方法に関するが、試験内容を調整する方法(カバレッジを用いた方法)ではない。
【0018】
本発明は以上のような問題に鑑みてなされたものであり、その目的は、情報処理装置(被試験装置)の競合試験等の試験の網羅性を高めることができる技術を提供することである。
【課題を解決するための手段】
【0019】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。前記目的を達成するために、本発明は、論理シミュレーションやFPGA(Field Programmable Gate Array)等により、情報処理装置(IC等)の論理回路等(被試験装置)の試験などを行う方法(情報処理装置試験方法)、その処理作業を行うためのコンピュータ、及びプログラム(情報処理装置試験プログラム)に係わり、乱数試験方法、アサーションチェック方法などを用いるものであり、以下に示す構成を有することを特徴とする。
【0020】
本試験方法では、試験の網羅性や不良を判断するための根拠となる数量的な指標及び手段を導入する。本試験方法では、被試験装置の複数の要素(論理的なデバイス)の競合動作状態などの試験を監視(アサーションチェック)するだけでなく、その監視情報に基づき、試験の網羅性を管理するためのカバレッジ情報を更新し、これに基づくフィードバック(反映)により、試験内容(試験データ)の調整を駆動する仕組みを備えるものである。カバレッジ情報は、具体的には、所定の信号条件の発生を管理する情報(イベント情報)や、要素の動作のタイミングを管理する情報(タイミング情報)などである。これにより、複数回の試験における各試験での競合動作を自動生成したり、試験洩れを防ぐことで、試験の網羅性を高めることが実現される。
【0021】
(1)本方法及び対応プログラムでは、具体的に以下のような処理ステップを有する。
【0022】
(A)試験プログラムにより乱数を用いて試験内容に対応する試験データ(試験命令列(群)及びそのパラメータ)を生成する処理ステップ。
【0023】
(B)前記試験データを論理シミュレータ上で実行することによって試験結果の期待値を生成する処理ステップ。
【0024】
(C)前記試験の監視(アサーションチェック)のために用意したアサーションプログラムであるアサーションチェッカーを試験開始の直前に起動する処理ステップ。
【0025】
(D)被試験装置におけるプロセッサ、周辺装置、及び記憶装置などの複数の要素に対し一斉に前記試験データによる試験を実行する処理ステップ。
【0026】
(E)前記試験の実行時に前記アサーションチェッカーによる監視の処理を行い、それによる監視情報を蓄積する処理ステップ。アサーションチェック(監視)では、各要素の起動などの動作の履歴の抽出(トレース)を含む。
【0027】
(F)前記試験の実行結果と前記期待値とを比較して結果を出力する処理ステップ。
【0028】
(G)前記監視情報を採取し、採取した監視情報を解析し、解析結果を用いて、試験の網羅性などを管理するための情報であるカバレッジ情報を更新する処理ステップ。
【0029】
(H)前記解析結果または前記更新されたカバレッジ情報に基づき、判断に応じて、前記試験データ(次回の試験内容)を調整(試験命令列またはパラメータの少なくとも一方の調整)する処理ステップ。また、必要が無ければ、試験内容の変更はせずに、新規に試験が生成されるようにする。
【0030】
(I)前記調整による新しい試験(次回の試験)を実行する処理ステップ。
【0031】
上記(H),(I)の処理ステップでは、前回の試験で生成済みの試験データに対し、試験実行結果(カバレッジ情報の内容)をフィードバックにより反映させる。これにより、例えば、同じ試験命令を再利用しそのパラメータのみを調整した試験を生成する。
【0032】
前記監視情報には、監視対象の要素の動作の時間や回数などの情報が含まれる。また、前記カバレッジ情報には、アサーションでの所定の信号条件の発生に関するイベント情報などが含まれる。イベント情報は、信号条件の成立の発生回数や頻度、並びに、試験の調整の回数などが含まれる。
【0033】
(2)また、上記(1)で更に、上記(G)のカバレッジ情報を更新する処理ステップにおいては、更新の際、過去(蓄積済み)のカバレッジ情報に対し、前記(A),(H)により生成された試験データの内容(履歴)と、複数の要素の同時並行動作(競合動作)に関するタイミング情報とを加え合わせる。タイミング情報は、要素の動作タイミング(起動時刻、終了時刻、実行時間)の情報や、競合時間や競合回数、同時期に動作した周辺装置の競合率などの情報が含まれる。特に、タイミング情報を用いて、複数の要素における競合性の低い部位を、調整の対象として選択する。
【0034】
(3)また、上記(1)または(2)で更に、上記(H)の試験内容の調整の処理ステップにおいては、カバレッジ情報と更なる乱数とを組み合わせて用いて、調整対象となる要素(その試験命令やパラメータ等)を選定して、調整を行う。このための判断では、未試験の部位や競合性の低い部位などを優先的に選定し、その試験を実行するための試験データを生成する。
【発明の効果】
【0035】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下のとおりである。本発明によれば、被試験装置の競合試験等の試験の網羅性を高めることができる。
【発明を実施するための最良の形態】
【0036】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一部には原則として同一符号を付し、その繰り返しの説明は省略する。
【0037】
<概要>
本実施の形態では、図1〜図11、特に図4等に示すように、試験のアサーションチェックによる監視情報、及び監視情報をもとに更新されるカバレッジ情報を用いて、競合試験等の試験の網羅性を高める方針で、フィードバックにより試験内容を変更(例えばパラメータ調整)するものである。
【0038】
<1:情報処理システム>
図1において、本実施の形態の試験方法及びプログラムを適用するコンピュータである情報処理装置(EWS)を含んで成る情報処理システム(論理シミュレーション環境)の基本的な構成例を示している。本システムは、EWS(エンジニアリングワークステーション)100のような汎用の情報処理装置、及びそれに接続されるコンソール端末200を有する。試験者(U)は、入出力処理に用いる情報処理端末装置であるコンソール端末200を操作し、操作に従い、EWS100での情報処理が行われる。
【0039】
EWS100は、制御部101(CPU等)、記憶部102(RAM等のメモリ)、通信部103(ネットワークインタフェース等)、補助記憶部104(HDD等)、入力部105、表示部106等のハードウェアを備える。EWS100において、制御部101等により実現される論理シミュレータ10を有する。論理シミュレータ10上では、試験プログラム30(乱数試験プログラム)等のプログラムが実行される。試験プログラム30は、本実施の形態のプログラムに相当する。
【0040】
論理シミュレータ10は、プロセッサやメモリなどの要素をすべて接続したモデルで対象システム(被試験装置20)の論理シミュレーションを行うことができる総合的な環境である。論理シミュレータ10は、論理シミュレーションの処理により、対象システムのハードウェアの動作を擬似的に動作させることができる。論理シミュレータ10による論理シミュレーション内において、被試験装置20が論理的に構成される。論理シミュレータ10上の論理シミュレーションの処理において、試験プログラム30を用いた試験(乱数試験)の処理により、被試験装置20を対象として、その処理機能や競合動作などに関する試験が行われる。
【0041】
制御部101は、補助記憶部104から記憶部102上に読み出されたデータに対して処理を行うことで、論理シミュレーション等の処理を実現する。通信部103、入力部105、表示部106等は、コンソール端末200とのインタフェースを有し、コンソール端末200のキーボードやマウスからの入力情報を受け付けて入力処理することや、出力情報をコンソール端末200のディスプレイ画面やプリンタへ出力処理すること等が行われる。
【0042】
論理シミュレータ10は、試験プログラム30の他、OSやその他のプログラムを含む。論理シミュレータ10において、OS上で、試験プログラム30を被試験装置20に対して実行させ、試験リソースを供給する。試験リソースは、レジスタ値などである。
【0043】
被試験装置20は、VHDL等のハードウェア記述言語(HDL)により論理ファイルとして記述されている。当該論理ファイルは、設計者等により作成される。試験者(U)は、コンソール端末200からEWS100の論理シミュレータ10を実行させて、論理シミュレータ10に被試験装置20の論理ファイルを入力する。被試験装置20は、試験の対象となる、後述のプロセッサ等の各要素などを構成する論理である。
【0044】
試験プログラム30は、各回の試験毎の試験データ50を生成するものであり、乱数を用いてランダムな試験内容を生成するプログラムを含む。試験データ50を用いて被試験装置20が試験される。被試験装置20に対する試験は、必要に応じて多数回の試験が繰り返し行われる。
【0045】
また、試験プログラム30(試験データ50)と関連して、アサーションチェック(監視)のためのアサーションチェッカー6が、HDLにより被試験装置20の内部に記述される。アサーションチェッカー6は、後述のアサーションチェッカー制御プログラム60により記述、制御される。アサーションチェッカー6は、試験に関する特定の信号、信号条件を監視、検出して、それを表す情報(後述するアサーション監視情報31)を出力することができる論理である。
【0046】
論理シミュレーター10は、上記アサーション監視情報31や、アサーション監視情報31をもとに作成・更新される、試験の網羅性(範囲)の管理のための情報(後述するカバレッジ情報32)などを蓄積する機能、及びそれらの情報を用いて試験内容を変更する機能などを持つ。
【0047】
これにより、本システムでは、試験内容の変更の方針を導き、試験結果(カバレッジ情報32)を、既に生成・実行済みの試験内容に対してフィードバック(反映)することで、次回以降の試験内容を生成して実行することができる。試験者は、本システムの機能を用いることで、試験内容の変更の方針(大きくは網羅性を高めること)を導きやすい。また所定の方針に従って、フィードバックにより自動的に試験内容を変更することができる。本システムでは、システムバス5上の特に競合があまり発生していない部位を対象として試験を優先的に実行することができる。これにより、複数回の試験における各試験での競合動作を自動生成し、試験洩れ等を防止することができる。
【0048】
<2:被試験装置>
図2において、論理シミュレータ10上での被試験装置20の構成例、及びそれに関連して、試験実行時の試験プログラム30(試験データ50)の状態などを示している。なお、図2では、説明のため、図1の物理的構成(記憶部102)と、論理的構成である被試験装置20とを繋いで示している。被試験装置20は、プロセッサ(CPU)1、周辺装置2(入出力装置(IO)など)、記憶装置(メモリ)3等の要素、及びこれらを接続するシステムバス5等を有する構成である。
【0049】
プロセッサ1は、命令を処理するCPU、マイクロプロセッサ等の論理である。記憶装置3は、命令やデータを格納するメモリ(メインメモリ、2次メモリ、ストレージ等)の論理である。プロセッサ1は、記憶装置3から命令(試験命令)を読み出して実行し結果を記憶装置3に格納する。周辺装置2は、入出力装置(IO)などの論理であり、プロセッサ1や記憶装置3との間で通信が行われる。システムバス5は、プロセッサ1や周辺装置2や記憶装置3などの要素間におけるデータや信号の流れを制御する。なお、プロセッサ1等の各要素は、図2中では1つのみ示しているが、それぞれ複数存在する構成も可能である(例えばマルチプロセッサシステム)。
【0050】
一方、物理的な記憶部102には、試験プログラム30、アサーション監視情報31、カバレッジ情報32等のデータが格納されている。試験プログラム30は、各回の試験の実行の際、試験データ50を自動生成し、その試験データ50を記憶装置3の任意番地に配置する。記憶装置3上に配置された試験データ50は、プロセッサ1により順次フェッチされて実行され、これにより試験が実行される。試験データ50は、試験命令列51(コード)とそのパラメータ52(変数データ等)とを含んでいる。試験命令列51は、試験命令群からなる。パラメータ52は、試験命令列51に代入される。試験命令は、データのリード、ライト等の一般的な命令を有する。
【0051】
また、これら試験対象の各要素(1,2,3)と接続するアサーションチェッカー6(6−1,6−2,6−3)を有する。アサーション(アサーションチェッカー6)は、機能の仕様や設計の意図、前提などが記述されたものであり、対象要素の論理記述が当該仕様等の通りかどうかを監視する。各アサーションチェッカー6(6−1,6−2,6−3)は、論理的構成としては、図2のように対象の要素とシステムバス5との間の信号線に介在する形で接続されている(対象要素の論理内に埋め込み又は関連付けの形)。アサーションチェッカー6によりシステムバス5のバスプロトコルでの制御信号を監視する。各アサーションチェッカー6は、対応する要素(その信号)を監視し、動作履歴を抽出(トレース)する機能を持つ。試験の際に試験プログラム30により起動されたアサーションチェッカー6は、各要素間、すなわちプロセッサ1とシステムバス5との間、システムバス5と周辺装置2との間、及び記憶装置3とシステムバス5との間に発行される各信号を同時並行的に監視する。アサーションチェッカー6は、監視により抽出した情報であるアサーション監視情報31(監視情報)を出力し、記憶部102(または記憶装置3)内に用意された任意番地に格納(蓄積)する。
【0052】
<3:論理シミュレータ、試験プログラム>
図3において、論理シミュレータ10と試験プログラム30を中心として、本実施の形態の特徴的な試験制御部における各処理部などの相関関係を含む構成を示している。論理シミュレータ10上では、図2のような被試験装置20の試験に対し、アサーションチェッカー6により監視し、アサーション監視情報31、及びカバレッジ情報32を記憶部102に蓄積する。
【0053】
試験プログラム30は、試験生成処理部11、期待値生成処理部12、試験実行処理部13、試験結果比較・出力処理部14 、アサーション起動処理部15、監視情報採取・解析処理部16、カバレッジ情報更新処理部17、試験データ調整処理部18、等の処理部を有する。各処理部は線で示すように相互に情報データを授受する。
【0054】
11〜14の処理部は、従来の方式でも存在し、本実施の形態でも前提的に存在する機能である。これらの処理部は、各回の試験における試験生成・実行サイクルに係わる処理を行うものであり、試験内容(試験データ50)の生成、当該試験の期待値の生成、当該試験の実行、及び当該試験結果の出力、といった基本的な処理を行うものである。また、15〜18等の処理部は、本特徴を実現するために必要な処理部であり、アサーションやカバレッジ、フィードバックに係わる処理を行うものである。
【0055】
試験生成処理部11は、各回の試験を最初から作成する。試験生成処理部11は、試験データ50(試験命令列51、パラメータ52)を生成する。
【0056】
期待値生成処理部12は、試験データ50をもとに、その試験の結果の期待値を生成する。
【0057】
試験実行処理部13は、アサーションチェカー6の監視下で、プロセッサ1、周辺装置2、記憶装置3、システムバス5等の被試験装置20に対する試験を実行する。試験実行処理部13は、試験生成処理部11によって生成された試験データ50を記憶装置3へ配置し、プロセッサ1に試験データ50による試験を実行させる。
【0058】
試験結果比較・出力処理部14は、試験データ50による試験結果と、期待値生成処理部12による期待値とを比較して、結果を出力する処理を行う。
【0059】
アサーション起動処理部15は、試験開始の際にアサーションチェカー6を起動する処理を行う。アサーション起動処理部15は、試験開始時に、記憶装置3の特定番地に書き込みを実施することで、アサーションチェッカー6(6−1,6−2,6−3)を起動する。
【0060】
監視情報採取・解析処理部16は、試験データ50による試験(今回の試験)の終了時に、アサーションチェカー6の出力による記憶部102内の当該試験に関するアサーション監視情報31を採取し、採取した情報を、カバレッジ情報32の更新のために解析する処理を行う。
【0061】
カバレッジ情報更新処理部17は、カバレッジ情報32を管理し、前記アサーション監視情報31の解析結果に基づき、次回以降の試験内容(試験データ50)を生成(変更)するために用いる情報として、カバレッジ情報32を更新する処理を行う。この更新では、追加情報(解析結果データ)が、記憶部102内の過去(蓄積済み)のカバレッジ情報32にマージされる。
【0062】
試験データ調整処理部18は、試験データ生成処理部11に対する調整の役割である。試験データ調整処理部18は、カバレッジ情報32に基づき、次回以降の試験内容を生成するために、生成済みの試験(前回の試験内容)の試験データ50(試験命令列51または特にパラメータ52)を調整する処理を行う。例えば、試験データ調整処理部18は、生成済みの試験データ50の試験命令列51を再利用し、その試験命令列51に対してそのパラメータ52のみを調整のために作成(再生成)する。
【0063】
試験データ調整処理部18は、調整の制御の仕方としては、例えば、複数の要素の競合性を高める方針に従って、カバレッジ情報32に基づき未試験の部位や競合性が低い部位などを次回の試験の候補にするように、試験データ50を調整する。例えば特に、競合動作状態となるように各要素の実行タイミングが調整される。なお、試験命令列51を変更する場合、パラメータ52を変更する場合、その両方を変更する場合などがある。
【0064】
<4:試験プログラム、アサーションチェッカー>
図4において、試験プログラム30及びアサーションチェッカー6の概略処理フローを示している(Sは処理ステップを表す)。本フローでは、1回の試験の処理サイクルを示している。前述の図3の試験実行処理部13等により、各回の試験を実行する。
【0065】
試験者(U)による情報入力操作としては、設定情報の入力や、試験開始のための起動指示(実行コマンド)の挿入などがあるが、それ以外は基本的にコンピュータによる自動処理で実現される。
【0066】
まず、試験データ生成処理S20において、試験生成処理部11により、被試験装置20(各々の要素)に対し、乱数により試験データ50を生成する。試験データ50は、試験命令列51(試験命令群)とそれに付属させるパラメータ52を含む。乱数により、例えば、試験対象の要素、命令、パラメータ等が選択される。
【0067】
プロセッサ1(CPU)向けの試験に関しては、試験対象リソースとして、汎用レジスタ、制御レジスタ、割り込みレジスタ、浮動小数点レジスタ、TLB(Translation Look-aside Buffer)、キャッシュ等のCPU毎に存在するリソースや、記憶装置3上のCPU共通領域や個別領域のデータなどがある。
【0068】
プロセッサ1向けの試験命令列51に関しては、乱数で生成され、1つの命令ごとにシミュレートしながら作成される。これは、効率的で効果的な命令列を作成させる目的があり、プログラムカウンタや各レジスタの変化を把握しながら命令列が作成される。
【0069】
レジスタ類の数は限られており、試験命令列51に関する試験命令数が多いほど、多くのレジスタが使用される。乱数で単純にレジスタを使用した場合、偏ったレジスタの使い方によって同一レジスタへの上書きが頻繁に発生し得る。その場合、レジスタ上で引き継がれる値が上書きにより消えてしまうことが有り得る。これにより、それまでの試験が無駄になってしまう可能性がある。これを避けるため、一旦、命令(試験命令)によって値が変化したレジスタ(例えばレジスタA)については、ソースレジスタとして使用し、当該値を別のレジスタ(例えばレジスタB)に引き継ぐようにする。これによって、値が変化しても、その後、例えばレジスタAを上書きしても、命令列(試験命令列51)が漏れなく順序良く実行された証拠になる。
【0070】
IO(周辺装置2)向けの試験に関しては、試験対象リソースとして、試験対象のチャネル/デバイスの選定、チャネル毎/デバイス毎に存在するレジスタ、転送元・転送先アドレス及びデータ、割り込みレジスタなどがある。これらに関して、乱数を使用して試験データ50が作成される。
【0071】
試験データ50の生成に関し、すべて基本的には乱数で生成され変動値となるようにするが、被試験装置20の仕様上、制約や限界がある場合などには、固定値として候補を用意する。例えば、本システムでは試験者によりこの固定値を選択的に設定することができる。また、試験の内容によっては、乱数による生成に関して、均等ではなく重み(偏り)を付けた割り当てをする場合がある。本システムでは試験者によりこの乱数の重み付けを選択的に設定することができる。本システムでの各種設定については、コンソール端末200等から試験者が画面を見ながら情報入力操作により行うことができる。
【0072】
周辺装置2向けの試験命令列51に関しては、周辺装置2を動かすトリガとなる起動専用命令列や、終了判定専用命令列など、使用目的に合わせた命令列が、任意の場所へ配置される。
【0073】
次に、期待値生成処理S21において、期待値生成処理部12により、試験データ50による試験内容に対応する期待値を生成する。これは、試験プログラム30に内蔵するソフトウエアシミュレータにより、被試験装置20ごとに、試験内容に対応する期待値が作成される。
【0074】
プロセッサ1に関する期待値生成方法としては、CPUアーキテクチャやIEEE規格等に準じて作成するものであり、プロセッサ1に関する全命令機能が本システムで対応可能(期待値生成可能)になっているものとする。
【0075】
周辺装置2に関する期待値生成方法に関しても、各々専用のハードウェアマニュアルが、期待値生成処理S21としてインプリメントされる。
【0076】
次に、試験を起動(実行)する前に、アサーション起動処理S22において、アサーション起動処理部15により、アサーションチェッカー6を起動する。起動方法は、ある決められた記憶装置3のアドレスに対して、所定bitを書き込むことである。この起動により、アサーションチェッカー6は、試験プログラム30とは完全に独立したハードウェア的な監視動作状態となる。
【0077】
続いて、試験実行処理S23において、試験実行処理部13により、試験データ50による試験を開始させる。試験が開始されると、被試験装置20の各要素により、様々な信号の動作が開始される。
【0078】
一方、アサーションチェッカー6は、対象試験動作監視処理S24において、試験動作の流れをバス(システムバス5)上で継続的に監視する。その監視の最中、アサーションチェッカー6は、バス(システムバス5)上のリクエスト信号やアドレス信号などの対象信号の監視において、監視している信号条件(例えば特に競合条件)と、試験中の信号の状態とが一致するかどうか判定する。一致した場合、アサーション監視情報抽出処理S25において、アサーションチェッカー6は、その一致の発生(イベント及びタイミング)に関するアサーション監視情報31を抽出(作成)し、記憶部102へ蓄積する。
【0079】
アサーション監視情報31は、監視対象の要素(周辺装置2等)毎の動作時間や回数、複数の要素の同時並行動作(競合動作)の時間や回数、監視対象の信号条件の成立(一致)の時間や回数などがある。
【0080】
S23のすべての被試験装置20の試験を終了した後、監視情報採取処理S26において、監視情報採取・解析処理部16により、記憶装置3に蓄積されているアサーション監視情報31を採取し、カバレッジ情報更新処理S33への入力値のための情報として用意する。
【0081】
S23の試験の最後に、試験結果比較・出力処理S27において、試験結果比較・出力処理部14により、試験結果と期待値を比較する処理を行う。この処理では、試験命令列51や、試験終了時点(要素の動作が終了した時点)での結果リソースをすべて採取して、これらを、期待値生成処理S21で生成された期待値のデータと比較する。
【0082】
そして、比較結果に基づき、S30で、すべての被試験装置20の試験の正常性をチェックする。比較結果で1つでもエラーを検出した場合は、S31でエラーメッセージを出力する。例えば当該エラーメッセージ等の情報をコンソール端末200の画面に表示し、ファイルに格納する。試験の正常性がOKであれば次へ進む。
【0083】
次の解析処理S32において、監視情報採取・解析処理部16により、前記監視情報採取処理S26で得られたアサーション監視情報31を解析し、カバレッジ情報32への入力値とするための解析結果データを纏める。なお、この解析処理S32は、S26やS33等に含めて行うものとしてもよい。
【0084】
上記解析結果データを用いて、カバレッジ情報更新処理S33において、カバレッジ情報更新処理部17により、カバレッジ情報32のデータを更新する。この更新処理では、アサーションチェッカー6から得るべき必要条件、アサーション監視情報31から照合や計算で得られる情報を、カバレッジ情報32にマージする。この更新処理では、例えば、アサーション監視情報31をもとに、被試験装置20の各要素の動作時間のすべてが集計され、同時並行動作(競合動作)した要素及びその時間や回数などの情報が、カバレッジ情報32に蓄積される。
【0085】
次に、試験データ調整処理S34において、試験データ調整処理部18により、今回の試験及び監視の結果(即ちそれを表すアサーション監視情報31とカバレッジ情報32)に基づき、次回以降の試験内容についての調整(変更)の判断及び調整処理を行う。即ち、次回以降の試験に関して、試験内容を新規一転として最初から乱数で作成して行うのか、それとも、先ほど(今回)実行した試験内容(既に生成済みの試験データ50)を引き継ぎ再利用してその調整程度の変更によって行うのか、等を判断により見極める。この判断は、特に、カバレッジ情報32内に含まれている信号条件や競合条件の発生実績に関する情報や試験調整の実績に関する情報など(後述のイベント情報32aやタイミング情報32b)の参照によって行われる。
【0086】
この試験データ調整処理S34では、カバレッジ情報32の参照により、その時点で未試験の部位や、試験発生回数が少ない部位や、競合動作の実績が少ない部位などが見出される。調整の方針に従うそのような部位が見出された場合(調整実行条件を満たす場合)、試験内容の調整を実行することに決定する。そして、試験データ調整処理S34では、当該部位(調整対象要素)に対する試験内容について、方針に従って、試験データ50の例えば特にパラメータ52が調整される。この場合、パラメータ52の調整とは、被試験装置20に対する大きな試験内容は変えずに、例えば周辺装置2への起動タイミングや転送先アドレス、転送データ長などを調整することで試験の競合性や負荷を調整するものである。
【0087】
最後に、終了判定S35では、終了条件である、オペレータ(試験者)の要求した分の試験(例えば複数回の試験によるルーチン)を実行完了したかどうかを判定する。要求が満たされている場合は終了し、満たされていない場合、再度試験(次回の試験)を実行する場合は、前記試験データ生成処理S20へ戻り、再度、前述同様に、S20以降の処理を行う。次回以降の試験では、前回(今回)の試験内容がフィードバック(反映)された内容により、同様に実行される。
【0088】
このように、試験内容の調整のためのフィードバック(S34からS20へ)を行いながら、一連の処理サイクル(S20〜S34)による試験を複数回繰り返し実行することができる。以下、更に具体的に説明する。
【0089】
<5:アサーション及びカバレッジ情報更新処理>
図5において、試験プログラム30の処理において、アサーションチェッカー6によるアサーション監視情報31をもとにカバレッジ情報32を更新する処理(前記S32,S33等に相当)に関する概略的フローを示している。
【0090】
アサーション起動及び試験起動処理S51において(前記S22,S23相当)、アサーションチェッカー6は、アサーションの起動により試験プログラム30とは完全に独立したハードウェア的な監視動作状態となる。そして、被試験装置20では、試験の開始によって各々の要素が個別に動き出し、プロセッサ1、周辺装置2、記憶装置3等の要素を経てシステムバス5上に様々なデータや信号が流れる状況になる。
【0091】
アサーションチェッカー6を制御するプログラム構造例として右側にアサーションチェッカー制御プログラム60を示している。これは、HDLにおいてソフトウエアによってハードウェアの動作をコーディングしたものである。頭に宣言文(アサーションモジュール宣言、……、定数宣言など)があり、その後の条件文(if/then文など)において信号条件(アサーションチェック条件、リクエスト競合条件など)が記述され、その後に動作(特定アドレス採取、更新データ採取、更新時間採取、更新回数採取など)が記述されている。
【0092】
このアサーションチェッカー制御プログラム60が監視対象の制御信号を検出した場合、その検出した時間や回数などを、下側に示すアサーション監視情報31のようなフォーマットで抽出、記録する。図5のアサーション監視情報31の例に関して、「監視対象」は、監視対象の識別項目を示し、これに対応して、例えば「時間」と「回数」を格納する項目がある。「監視対象」項目としては例えば、周辺装置2である入出力装置(IO)に関する起動レジスタや完了フラグレジスタ、特定の信号の成立、転送IOの競合、信号条件のパターンなどがある。これらの分類としては、(1)各IOの送受信時間、各要求信号の時間、及び回数、(2)送受信の競合時間、及び競合回数、(3)要求信号の条件の組み合わせ(パターン)による競合時間、及び競合回数、等がある。なお「時間(時刻)」は、例えばクロックサイクル値で表される。
【0093】
試験中にアサーションチェッカー6が監視対象を検出すると、アサーション監視情報31内の「時間」や「回数」の項目へ値が書き込まれる。例えば、監視対象が周辺装置2であるIO−1の起動レジスタである場合、このIO−1の起動レジスタのアドレスに対して決められた値が格納されることで、当該IO−1によるデータ転送の開始になり、このデータ転送の完了後、ハードウェアが当該IO−1の完了フラグレジスタにフラグを設定する。このようなハードウェア仕様に対し、当該アドレスをアサーションにより監視することで、ハードウェア(デバイス)の動作時間(起動開始から動作終了までの時間)を計測することができる。
【0094】
アサーションチェッカー6は、試験データ50による試験動作から、IO−1起動レジスタへの書き込みを検出し、その時間(起動時刻)を書き込む。その後、ハードウェアのIO−1完了フラグレジスタへの書き込みを検出し、その時間(終了時刻)を書き込む。これらIO−1起動レジスタとIO−1完了フラグレジスタによって、周辺装置2(IO−1)の動作時間(起動時刻から終了時刻までの時間)を求めることができる。またこれと同様に、被試験装置20の全体(複数の要素)に関する動作時間等の情報を得る。これにより、試験中に各要素がどれだけ同時並行動作(競合動作)したのかを知ることができる。
【0095】
<6:アサーションチェック>
図6において、アサーションチェックにおける試験対象信号の信号条件(競合条件)の例について示している。図5のアサーション監視情報31内における例えばパターン1からパターン40までの複数の要因(信号条件)による競合条件の監視の場合における、2つの例(信号条件1(パターン1)、信号条件2(パターン2))である。
【0096】
本例において、図6(a)で、Signal(信号)下の項目(SCLK等)は、アサーションチェッカー6で記述された信号(監視対象信号)であり、これらは前記アサーション起動及び試験起動処理S51の後では常に監視状態にある。また、図6(b)では、各信号条件の記述例を示している。信号条件は、例えば複数の信号の値の論理演算により表される。
【0097】
信号条件1(例えばスヌープ処理)を満足したときには、競合(競合状態の発生)とみなし、この時点での時間や発生回数が、アサーション監視情報31内の「時間」、「回数」項目に格納される。同様に、信号条件2(例えばバスリクエスト処理)を満足したときに、競合とみなし、アサーション監視情報31に情報が格納される。
【0098】
S51の次のアサーション監視情報読み出し処理S52において、監視情報採取・解析処理部16により採取済みのアサーション監視情報31を読み出す。
【0099】
そして、次のアサーション監視情報データ変換処理S53において、アサーション監視情報31を入力として、当該情報の照合、計算、分析などにより、データ変換処理を行う(前記解析処理S32相当)。
【0100】
これにより得られたデータ(解析結果データ)を用いて、次のカバレッジ情報記録更新処理S54において、カバレッジ情報更新処理部17により、カバレッジ情報32を更新する。更新の際には、過去(蓄積済み)のカバレッジ情報32に対し、前記生成済みの試験データ50の内容(試験命令列51、パラメータ52)と、要素の動作時間(起動時刻、終了時刻)、競合率(競合時間、競合回数)などのタイミング情報とを加え合わせる。
【0101】
<7:カバレッジ情報>
図7において、カバレッジ情報更新処理(S33)に関し、カバレッジ情報32の構成例を示している。図7のカバレッジ情報32のうち、大きくは、(a)イベント情報32a、(b)タイミング情報32b、に分かれる。
【0102】
(a)イベント情報32aにおいて、項目として、信号条件(パターン)、発生回数、調整フラグ(調整回数)、発生頻度(%)、累積発生回数を有する。イベント情報32aは、監視対象の複数の信号条件(パターン)に関して、その成立の発生回数や頻度、並びに試験内容調整の発生のフラグ(回数)などを表すものである。
【0103】
信号条件(パターン)は前述の通りである。監視対象の制御信号に関する所定の信号条件(パターン)1〜40までが存在する。発生回数は、複数回の繰り返しの試験(ルーチン)における発生回数である。累積発生回数は、例えばそのルーチンの複数回の繰り返し等による過去の多数の試験の実績における発生回数の累積合計値として更新される。発生回数などの値は、すべて、累積加算により更新される。発生頻度については、当該パターンの発生頻度が全体のうちの何%であるかを、試験数や発生回数などをもとに計算することで更新される。
【0104】
調整フラグ(調整回数)については、生成済みの試験データ50(試験命令列51やパラメータ52)を調整により更新したこと、ないしその回数を表す。当該項目は、最初の時点では更新されず0であり、例えばパターン3に関する調製が発生すると1になる。
【0105】
(b)タイミング情報32bにおいて、項目として、被試験装置20ごとに、競合時間、競合回数などを有する。本例では周辺装置2(IO)の転送動作の競合に関する場合である。タイミング情報32bでは、周辺装置2毎に、起動時刻や終了時刻を読み出した値が集計され、転送に関する競合時間が求められる。周辺装置2として、例えばIO−1〜IO−3の3つのIOを有する場合において、それぞれの組み合わせの項目を有する。例えばIO−1とIO−2などの2つの競合に着目した組み合わせ(「1⇔2」,「2⇔3」,「3⇔1」)や、3つのIOの競合に関する項目(「1,2,3」)を有し、各々の同時期に動作した時間(競合時間)を保持する。
【0106】
競合率は、[競合時間]/[動作している周辺装置の時間]から計算により得られる。競合時間と競合回数が大きい場合は競合率が高くなる。競合率が高い部位については、試験内容調整の判断で優先的に候補として選択されることになる。選択されてタイミングが調整されると、タイミング情報32bの調整回数の項目に回数が加えられて更新される。
【0107】
<8:競合タイミング>
図8において、タイミング情報32bに係わり、複数の要素に関する競合タイミング(動作タイミング)の例を示している。時間はクロックサイクル値であり、矩形部は当該要素(IO−1,IO−2,IO−3)の起動状態(動作時間)を示す。前記採取されたアサーション監視情報31のデータをもとに、IO等の要素の起動(動作)における開始時刻と終了時刻、及びそれらの差分である動作時間が得られる。例として、IO−1の開始時刻:100、終了時刻:160、IO−2の開始時刻:120、終了時刻:170、IO−3の開始時刻:50、終了時刻:150とした場合である。
【0108】
次のように計算によって変換することで、競合情報(タイミング情報32b)とする。まず、IO−1,IO−2,IO−3の各々の動作時間は、開始時刻と終了時刻の差分から、60,50,100である。IO−1とIO−2の競合情報として、それらが同時並行動作している時間(期間)である競合時間T(1⇔2)は、120から160の間であり、長さは40となる。同様に、IO−2とIO−3についてのT(2⇔3)は、120から150の間で、長さは30となる。IO−3とIO−1についてのT(3⇔1)は、100から150の間で、長さは50となる。更にIO−1とIO−2とIO−3との3つの要素間については、競合時間T(1,2,3)は、120から150の間であり、長さは30となる。このような変換に従い、タイミング情報32bにおける競合時間の各項目(「1⇔2」等)に値が格納される。競合時間の第1行目は上記例のTの値(40,30,50,30)である。
【0109】
また、競合時間の値に対応して、要素間の競合が発生している場合には、タイミング情報32bにおける競合回数が加算される。本例では、対象とするすべての周辺装置2(IO)の競合が発生しているので、第1行目の1のように、それぞれの競合回数が加算される。
【0110】
このように、すべて大小比較による差分で求められる競合時間のデータ、並びに競合回数のデータが、タイミング情報32b内に記録、蓄積される。カバレッジ情報記録更新処理S54において、上記例に関するカバレッジ情報32の内容の更新を行う。
【0111】
更には、これらのタイミング情報32bのデータに基づき、図示していないが、競合時間の最大値、最小値、平均時間値、競合率の値なども、簡単な計算によって求めて、併せてカバレッジ情報32内に記録するようにし、試験内容調整の判断に用いる。なお競合時間に関する最大、最小、及び平均時間、並びに競合回数に関しては、データ更新により管理される。
【0112】
<9:試験データ調整処理>
図9において、試験データ調整処理(S34相当)に関する概略的処理フローを示している。前記蓄積されたカバレッジ情報32に基づき、試験プログラム30の処理内(試験データ調整処理部18、試験生成処理部11等)において、生成済み試験データ50(試験命令列51等)を利用してどのように試験リソースを作成するかについて例を説明する。
【0113】
判定処理(試験データ調整判定・候補決定処理)S81において、試験データ調整処理部18により、カバレッジ情報32に基づき、試験データ50を調整するか否か(前述の新規生成の場合)を判定する。調整の例として、前述のように、試験命令列51を再利用してパラメータ52のみを再生成する。
【0114】
この判定では、カバレッジ情報32におけるイベント情報32a内の発生回数、調整フラグ(調整回数)、発生頻度、並びにタイミング情報32b内の競合回数などの情報を用いる。この判定では、状況に合わせて臨機応変に、AND(論理積)条件やOR(論理和)条件によって決定してもよい。この条件は、例えば各回の試験毎の条件による判定としてもよいし、システム設定などによって予め決定されていてもよい。
【0115】
この判定では、カバレッジ情報32をもとに、以下のようなケース(部位)を認識する。即ち、未試験のケース(未だ試験対象として実現されていないケース、例えば発生回数が0の部位)や、試験が不十分なケース(例えば発生回数が少ない部位)や、システムバス5上での競合動作が未だ発生していない又は少ないケース(例えば競合回数が少ない部位)や、それらの試験対象の信号の組み合わせのケースなどである。
【0116】
上記ケース(部位)の認識により、調整か新規生成かを判断し、調整を行う場合は、試験内容調整の優先的な対象となる部位(要素など)を、複数の候補として決定する。S81によって新規生成が選択された場合は、S82,S83等の処理を行わずに終わり、前記試験データ生成処理S20等へ直接進むことになる。S81によって調整が選択された場合は、乱数を用いた調整対象選定処理S82へ進む。
【0117】
新規生成の場合の一例としては、例えば、イベント情報32aでの発生回数が1000回、調整フラグが10000回、発生頻度が90%等の場合には、全体的に考えて試験に偏りがあると判断する。そして、それまでの調整処理(生成済みの試験命令列51の再利用)は止めて、次回の試験内容を新規の試験データ50の生成によるものとし(リセット)、例えば次の異なる信号条件(パターン)での試験を実行開始するに至る。
【0118】
また、新規生成の場合の別の一例としては、試験内容をある条件の一点に絞り、その一点に対して、しらみつぶし的に試験を行う場合において、満了の条件とする発生回数と調整フラグ(調整回数)などを設け、その満了の条件を満足した場合には、次回の試験を新規生成とする。
【0119】
調整対象選定処理S82では、生成済みの試験命令列51をもとに、S81で得られた調整対象となる被試験装置20の複数の候補の中から、更に乱数を用いて、ランダムに調整対象を選定する。調整可能な組み合わせが多いため、乱数を用いて選定する。
【0120】
試験データ調整(パラメータ再生成)処理S83においては、S82で選定された調整対象を、前記生成済みの試験命令列51を再利用して、次回の試験内容となるパラメータ52を再生成する処理を行う。これにより、次回の試験のための調整された試験データ50が得られる。
【0121】
これらの処理の後、前記試験データ生成処理S20では、再び、試験生成処理部11により、調整された試験データ50による試験、あるいは新規生成による試験が生成される。なお、S20の一部ないし変形としてS83を行う形態と考えても同様である。
【0122】
<10:競合タイミング調整例>
図10において、図9の試験データ調整処理(S34)に関して、(a)調整前と(b)調整後の例をタイムチャートとして示している。本例は特に競合試験のために要素の実行タイミングを調整して競合動作を自動調整する場合である。矩形は各要素の起動状態(動作時間)を示し、試験命令列51とパラメータ52により決められている。
【0123】
本例での試験対象の要素は、プロセッサ1に関するCPU−0〜CPU−3の4つ、及び周辺装置2に関するIO−0〜IO−3の4つを有する。生成済みの試験命令列51は、上記4つのプロセッサ1に対する各試験の実行タイミング、及び上記4つのIO(周辺装置2)に対する各試験の実行タイミングである。
【0124】
対象の各要素の実行タイミングは図示の通りである。例えば、IO−1が最初に実行され、その後、IO−3、IO−2の実行終了直後、殆ど並行して、IO−0、CPU−2、CPU−3と続き、少々遅れてCPU−1、CPU−0が実行されるといったものである。これら一連の実行タイミングの情報は、図示しないが前記カバレッジ情報32(タイミング情報32b)に含まれている。例えば、(a)調整前の情報は、前回(今回)実行した試験の結果を示しており、タイミング情報32bの内容として既に格納されているものとする。
【0125】
図9の試験データ調整処理において、目的として、これらの対象の要素の中から、調整(パラメータ52の再生成)に有効なものが選択され、実行タイミングの調整が行われる。調整に有効な対象を選択するために、タイミング情報32bが入力として参照される。具体例として、図7のタイミング情報32bに、周辺装置2の競合時間と競合回数の結果の数値が格納されている。この競合時間と競合回数(ないし競合率)が少ないものが、優先的に候補として決定される(S81)。候補の中からランダムに調整対象が選定される(S82)。そして、当該調整対象について、試験データ調整(パラメータ再生成)処理S83により、試験データ50の試験命令列51を再利用してパラメータ52が再生成(調整)される。
【0126】
調整の仕方として、例えば、各々の対象の要素の起動時刻を調整する方法(起動スケジュールを調整する方法)と、動作時間(試験期間)の増減(長さ)を調整する方法とがある。また、それらのいずれか一方、あるいは両方を採用する場合がある。
【0127】
更に、起動時刻を調整する方法では、大きく分けて、分散(直列)型と、競合(並列)型とがある。分散(直列)型では、試験の開始から終了までの間、できるだけ直列に別の時期に、要素の起動時刻(動作時間)を割り当てる。これに対して、競合(並列)型では、できるだけ並列実行を意識して同時期に動作させるように要素の起動時刻(動作時間)を割り当てる。また、それら両方の型を乱数を用いて混在させるように取り入れる、分散競合混在型も可能である。
【0128】
動作時間(試験期間)の増減を調整する方法において、プロセッサ1の試験については、乱数で生成される試験命令列51やデータ(パラメータ52)の種類、配置場所などが調整される。具体的には、命令数の増減、命令の入れ替え、命令実行の繰り返し、命令の配置環境、データの配置環境、データの種類などが調整される。また、それ以外に割り込みやスヌープの外乱を付加する場合がある。
【0129】
入出力装置などの周辺装置2の試験については、転送長の増減、転送元・転送先の配置環境、起動用命令の配置環境、起動用命令による送受信の繰り返し、各プロトコルのモード切り替え、外部割り込み等の外乱、等がある。
【0130】
上記のような調整後、図7のカバレッジ情報32のイベント情報32aの調整フラグ(調整回数)をインクリメントして更新する。これにより、何回、既存の試験データ50を再利用して試験したのか、即ち調整の実績が、データとして残される。当該データは前述の判定(図9)の際に用いられる。
【0131】
図10の例は、生成済みの試験命令列51の再利用による調整及び試験において、被試験装置20の複数の要素の試験命令列51の競合の度合いを向上させるために、起動時刻(起動スケジュール)を調整する方法の1つである前記競合型の一例である。
【0132】
図9の試験データ調整処理において、図7のタイミング情報32bの競合回数が少ないと判断された場合、それに該当する周辺装置2等の対象の実行タイミングが同時期になるように動かすために、複数の候補の中からランダムに選択して調整される(S82,S83)。
【0133】
例えば、(a)調整前の状態から、破線で示すCPU−2、IO−0、CPU−3、並びにCPU−1、CPU−0の起動タイミングを時間的に前倒しさせるように矢印の方向へ調整する(対応パラメータ52の調整)。これにより、(b)調整後の状態となる。各調整の要素の動作時間の長さはそのままに、起動タイミングが前へずれた形である。(a)調整前に比べて、(b)調整後では、競合の度合いが向上していることがわかる。例えば、CPU−2,IO−0等の要素とIO−3等の要素とが同時並行動作する競合試験が行われる形となる。
【0134】
なお、本システムでは、図8や図10のようなタイムチャートを、コンソール端末200等の画面に表示する処理を行うことで、試験者は競合性などの状態を把握しやすい。図11に、そのような競合性を表すタイムチャートの表示例を示す。
【0135】
このように、本実施の形態のシステムでは、実行済みの試験の試験データ50を再利用して次回の試験内容を調整する。本システムでは、アサーション及びカバレッジを用いて、方針に従って、前回までの試験結果を次回以降の試験へフィードバック(反映)することによって、試験内容を自動的に調整する。このような試験を繰り返すことによって、被試験装置20に関する機能及びタイミング等の試験に関して、網羅性を高めることが実現できる。特に、無意味な試験(例えば重複するような試験)の実行を回避、削減でき、競合率を高めた競合試験等の有効な試験を効率良く実行できる。従って、試験の期間の短縮を図ることができ、製品の品質を高めることができる。
【0136】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることは言うまでもない。
【産業上の利用可能性】
【0137】
本発明は、IC設計及び試験などのための情報処理システムに利用可能である。
【図面の簡単な説明】
【0138】
【図1】本発明の一実施の形態の情報処理装置試験方法及びプログラムを適用する情報処理装置(EWS)を含んで成る情報処理システム(論理シミュレーション環境)の基本的な構成例を示す図である。
【図2】本試験方法及びプログラムにおける論理シミュレータ上での被試験装置の構成例、及びそれに関連する、試験実行時の試験プログラム(試験データ)の状態を示す説明図である。
【図3】論理シミュレータと試験プログラムを中心とした特徴的な制御部における各処理部などの相関関係を含む構成を示す図である。
【図4】試験プログラム及びアサーションチェッカーの概略処理フローを示す図である。
【図5】アサーション監視情報によるカバレッジ情報更新処理に関する概略的フロー、アサーションチェッカー制御プログラム及びアサーション監視情報の例を示す図である。
【図6】アサーションチェックにおける試験対象信号の信号条件(競合条件)の例を示す図であり、(a)は信号条件の例、(b)は信号条件の記述例である。
【図7】カバレッジ情報の構成例を示す図であり、そのうち、(a)はイベント情報、(b)はタイミング情報を示す。
【図8】被試験装置の複数の要素における競合動作のタイミングの例を示す図である。
【図9】試験データ調整処理(S34)に関する概略処理フローを示す図である。
【図10】試験データ調整処理(S83)に関して、(a)調整前と(b)調整後の例をタイムチャートとして示す図である。
【図11】競合性を表すタイムチャートを、コンピュータの画面に表示する処理に関して、イメージを示す図である。
【符号の説明】
【0139】
1…プロセッサ(CPU)、2…周辺装置(IOなど)、3…記憶装置(メモリ)、5…システムバス、6(6−1,6−2,6−3)…アサーションチェッカー、10…論理シミュレータ、11…試験生成処理部、12…期待値生成処理部、13…試験実行処理部、14…試験結果比較・出力処理部、15…アサーション起動処理部、16…監視情報採取・解析処理部、17…カバレッジ情報更新処理部、18…試験データ調整処理部、20…被試験装置(論理ファイル)、30…試験プログラム(乱数試験プログラム)、31…アサーション監視情報、32…カバレッジ情報、32a…イベント情報、32b…タイミング情報、50…試験データ、51…試験命令列、52…パラメータ、60…アサーションチェッカー制御プログラム、100…EWS(エンジニアリングワークステーション)、101…制御部、102…記憶部、103…通信部、104…補助記憶部、105…入力部、106…表示部、200…コンソール端末。
【特許請求の範囲】
【請求項1】
試験者の操作に応じて論理シミュレータ上で情報処理装置の被試験装置の試験を行う処理をコンピュータに実行させる情報処理装置試験プログラムであって、
(A)試験プログラムにより乱数を用いて前記被試験装置の試験のための試験データを生成する処理と、
(B)前記試験データによる試験の結果の期待値を生成する処理と、
(C)前記試験データによる試験を対象とした監視のためのプログラムであるアサーションチェッカーを前記試験の開始に伴い起動する処理と、
(D)前記情報処理装置の被試験装置におけるプロセッサ、周辺装置、及び記憶装置を含む複数の要素に対し一斉に前記試験データによる試験を実行する処理と、
(E)前記試験の実行時に前記アサーションチェッカーによる前記要素の監視を行って、当該監視により抽出した監視情報を蓄積する処理と、
(F)前記試験の実行結果と前記期待値とを比較して結果を出力する処理と、
(G)前記監視情報を採取し、当該採取した監視情報を解析し、当該解析結果を用いて、前記試験の網羅性を管理するためのカバレッジ情報を更新する処理と、
(H)前記更新されたカバレッジ情報に基づき、前記試験の内容を調整するか否かを判断し、調整する場合、当該調整する対象を選定し、当該調整する対象に関する前記試験データによる試験の内容を調整する処理と、
(I)前記調整された前記試験データによる試験を実行する処理と、を前記コンピュータに実行させること、を特徴とする情報処理装置試験プログラム。
【請求項2】
請求項1記載の情報処理装置試験プログラムにおいて、
前記(G)の処理ステップでは、前記更新の際、蓄積済みの前記カバレッジ情報に対し、前記(A)により生成された前記試験データの内容と、前記複数の要素の同時並行動作に関するタイミング情報とを加え合わせ、
前記タイミング情報は、前記要素の動作タイミングの情報、前記同時並行動作に関する競合時間及び競合回数の情報が含まれ、
前記(H)の処理ステップでは、前記タイミング情報を用いて、前記複数の要素の同時並行動作に関する競合性の低い部位を、前記調整の対象として選択すること、を特徴とする情報処理装置試験プログラム。
【請求項3】
請求項1または2に記載の情報処理装置試験プログラムにおいて、
前記(H)の処理ステップでは、前記カバレッジ情報と、乱数とを組み合わせて用いて、前記調整する対象となる要素を選定するものであり、
当該選定では、前記複数の要素のうち同時並行動作に関する競合性の低い部位を優先的に候補として決定し、当該候補の中から前記乱数により前記調整する対象を選定すること、を特徴とする情報処理装置試験プログラム。
【請求項4】
請求項1〜3のいずれか一項に記載の情報処理装置試験プログラムにおいて、
前記(H)の処理ステップでは、前記調整する対象に関し、前記(A)の処理ステップで生成済みの前記試験データのうちの試験命令列を再利用してそのパラメータを再生成することで前記試験の内容を調整すること、を特徴とする情報処理装置試験プログラム。
【請求項5】
請求項1記載の情報処理装置試験プログラムにおいて、
前記試験における前記被試験装置における前記複数の要素に関して、実行タイミング及び同時並行動作に関する競合性を表すタイムチャートを、コンピュータの画面に表示する処理を行うこと、を特徴とする情報処理装置試験プログラム。
【請求項6】
試験者の操作に応じて論理シミュレータ上で情報処理装置の被試験装置の試験を行う情報処理装置試験方法であって、
(A)試験プログラムにより乱数を用いて前記被試験装置の試験のための試験データを生成する処理ステップと、
(B)前記試験データによる試験の結果の期待値を生成する処理ステップと、
(C)前記試験データによる試験を対象とした監視のためのプログラムであるアサーションチェッカーを前記試験の開始に伴い起動する処理ステップと、
(D)前記情報処理装置の被試験装置におけるプロセッサ、周辺装置、及び記憶装置を含む複数の要素に対し一斉に前記試験データによる試験を実行する処理ステップと、
(E)前記試験の実行時に前記アサーションチェッカーによる前記要素の監視を行って、当該監視により抽出した監視情報を蓄積する処理ステップと、
(F)前記試験の実行結果と前記期待値とを比較して結果を出力する処理ステップと、
(G)前記監視情報を採取し、当該採取した監視情報を解析し、当該解析結果を用いて、前記試験の網羅性を管理するためのカバレッジ情報を更新する処理ステップと、
(H)前記更新されたカバレッジ情報に基づき、前記試験の内容を調整するか否かを判断し、調整する場合、当該調整する対象を選定し、当該調整する対象に関する前記試験データによる試験の内容を調整する処理ステップと、
(I)前記調整された前記試験データによる試験を実行する処理ステップと、を有すること、を特徴とする情報処理装置試験方法。
【請求項1】
試験者の操作に応じて論理シミュレータ上で情報処理装置の被試験装置の試験を行う処理をコンピュータに実行させる情報処理装置試験プログラムであって、
(A)試験プログラムにより乱数を用いて前記被試験装置の試験のための試験データを生成する処理と、
(B)前記試験データによる試験の結果の期待値を生成する処理と、
(C)前記試験データによる試験を対象とした監視のためのプログラムであるアサーションチェッカーを前記試験の開始に伴い起動する処理と、
(D)前記情報処理装置の被試験装置におけるプロセッサ、周辺装置、及び記憶装置を含む複数の要素に対し一斉に前記試験データによる試験を実行する処理と、
(E)前記試験の実行時に前記アサーションチェッカーによる前記要素の監視を行って、当該監視により抽出した監視情報を蓄積する処理と、
(F)前記試験の実行結果と前記期待値とを比較して結果を出力する処理と、
(G)前記監視情報を採取し、当該採取した監視情報を解析し、当該解析結果を用いて、前記試験の網羅性を管理するためのカバレッジ情報を更新する処理と、
(H)前記更新されたカバレッジ情報に基づき、前記試験の内容を調整するか否かを判断し、調整する場合、当該調整する対象を選定し、当該調整する対象に関する前記試験データによる試験の内容を調整する処理と、
(I)前記調整された前記試験データによる試験を実行する処理と、を前記コンピュータに実行させること、を特徴とする情報処理装置試験プログラム。
【請求項2】
請求項1記載の情報処理装置試験プログラムにおいて、
前記(G)の処理ステップでは、前記更新の際、蓄積済みの前記カバレッジ情報に対し、前記(A)により生成された前記試験データの内容と、前記複数の要素の同時並行動作に関するタイミング情報とを加え合わせ、
前記タイミング情報は、前記要素の動作タイミングの情報、前記同時並行動作に関する競合時間及び競合回数の情報が含まれ、
前記(H)の処理ステップでは、前記タイミング情報を用いて、前記複数の要素の同時並行動作に関する競合性の低い部位を、前記調整の対象として選択すること、を特徴とする情報処理装置試験プログラム。
【請求項3】
請求項1または2に記載の情報処理装置試験プログラムにおいて、
前記(H)の処理ステップでは、前記カバレッジ情報と、乱数とを組み合わせて用いて、前記調整する対象となる要素を選定するものであり、
当該選定では、前記複数の要素のうち同時並行動作に関する競合性の低い部位を優先的に候補として決定し、当該候補の中から前記乱数により前記調整する対象を選定すること、を特徴とする情報処理装置試験プログラム。
【請求項4】
請求項1〜3のいずれか一項に記載の情報処理装置試験プログラムにおいて、
前記(H)の処理ステップでは、前記調整する対象に関し、前記(A)の処理ステップで生成済みの前記試験データのうちの試験命令列を再利用してそのパラメータを再生成することで前記試験の内容を調整すること、を特徴とする情報処理装置試験プログラム。
【請求項5】
請求項1記載の情報処理装置試験プログラムにおいて、
前記試験における前記被試験装置における前記複数の要素に関して、実行タイミング及び同時並行動作に関する競合性を表すタイムチャートを、コンピュータの画面に表示する処理を行うこと、を特徴とする情報処理装置試験プログラム。
【請求項6】
試験者の操作に応じて論理シミュレータ上で情報処理装置の被試験装置の試験を行う情報処理装置試験方法であって、
(A)試験プログラムにより乱数を用いて前記被試験装置の試験のための試験データを生成する処理ステップと、
(B)前記試験データによる試験の結果の期待値を生成する処理ステップと、
(C)前記試験データによる試験を対象とした監視のためのプログラムであるアサーションチェッカーを前記試験の開始に伴い起動する処理ステップと、
(D)前記情報処理装置の被試験装置におけるプロセッサ、周辺装置、及び記憶装置を含む複数の要素に対し一斉に前記試験データによる試験を実行する処理ステップと、
(E)前記試験の実行時に前記アサーションチェッカーによる前記要素の監視を行って、当該監視により抽出した監視情報を蓄積する処理ステップと、
(F)前記試験の実行結果と前記期待値とを比較して結果を出力する処理ステップと、
(G)前記監視情報を採取し、当該採取した監視情報を解析し、当該解析結果を用いて、前記試験の網羅性を管理するためのカバレッジ情報を更新する処理ステップと、
(H)前記更新されたカバレッジ情報に基づき、前記試験の内容を調整するか否かを判断し、調整する場合、当該調整する対象を選定し、当該調整する対象に関する前記試験データによる試験の内容を調整する処理ステップと、
(I)前記調整された前記試験データによる試験を実行する処理ステップと、を有すること、を特徴とする情報処理装置試験方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【公開番号】特開2010−44622(P2010−44622A)
【公開日】平成22年2月25日(2010.2.25)
【国際特許分類】
【出願番号】特願2008−208676(P2008−208676)
【出願日】平成20年8月13日(2008.8.13)
【出願人】(000233295)日立情報通信エンジニアリング株式会社 (195)
【Fターム(参考)】
【公開日】平成22年2月25日(2010.2.25)
【国際特許分類】
【出願日】平成20年8月13日(2008.8.13)
【出願人】(000233295)日立情報通信エンジニアリング株式会社 (195)
【Fターム(参考)】
[ Back to top ]