説明

論理検証方法及び論理検証システム

【課題】コンピュータシステム上で、統一された形式の検証用モデルを用いて、複数のバスI/Fを含む論理回路の検証を実現できる技術を提供する。
【解決手段】コンピュータシステム10上で、複数のバスI/F信号群160を有する検証対象論理回路111についての統一された形式の検証用モデル110の情報が作成された状態において、論理シミュレーションにより検証対象論理回路111の動作の検証を行う。検証用モデル110は、複数のバスI/F信号群160に対応する複数のプロトコル処理部150と、それらを含む全体を制御する命令処理部120とを有する。プロトコル処理部選択命令を含むテスト命令列101が命令処理部120に入力され、その処理により、該当命令の処理を、選択したプロトコル処理部150に実行させ、比較結果104を得る。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータ(電子計算機)システム上における、論理回路または論理回路を含む論理装置についての検証用モデルを用いる論理シミュレーションによる論理検証/テストの技術に関する。特に、特定の命令語により論理動作を実現するCPU系のプロセッサを含む論理回路のプロセッサバスインターフェース(バスI/Fと略称する)信号を生成するための検証用モデルの作成(生成/構築)、及び、その検証用モデルを用いる論理シミュレーション手段による論理検証又はテストの処理方法に関する。
【背景技術】
【0002】
従来、論理回路についての検証用モデルを用いた論理シミュレーションでは、例えば以下のような手法を用いている。まず、プロセッサの動作を確認するための初期状態設定データや、プロセッサ特有の命令レベルで作成した入力テストデータ、及びその出力結果である論理回路の動作状況の信号変化を期待値として論理シミュレータが直接読み込めるテキストやバイナリなどの形式に変換する手段で、論理シミュレーションの入力となるテストベクトルを作成する。
【0003】
論理シミュレーションの実行段階では、上記テストベクトルに展開された命令レベルの入力データを、プロセッサ検証用モデルが読み込む。そして、プロセッサ検証用モデルは、テストベクトルに展開された初期状態設定とともに、バスI/F動作に準じたそれぞれの時刻に対応するテストベクトルのデータを、検証対象論理回路に与えて、対象論理を動作させる。その後、検証対象論理回路の出力値を、プロセッサ検証用モデルで読み込み、その出力値が予め準備した期待値と不一致となった場合に、論理動作エラーを報告する、という手法を用いている。
【0004】
検証用モデルを用いた論理シミュレーションの技術の事例は、特開平10−221410号公報(特許文献1)にも詳細が記載されている。
【0005】
従来の論理シミュレーションによる論理検証の方法及びシステムでは、検証対象論理回路が複数のプロセッサのバスI/Fを含む場合には、それら複数のプロセッサのバスI/Fのそれぞれに対応した、複数の検証用モデル(プロトコル処理部)に対して、入力パラメータなどによりパターン生成を行い、個々の検証用モデルでそのパターンを読み取り、検証対象論理回路に与える、といった手法を用いていた。
【特許文献1】特開平10−221410号公報
【発明の開示】
【発明が解決しようとする課題】
【0006】
一般的に、異なるプロセッサは、それぞれの命令形式(換言すればプロトコル)が異なり、またプロセッサバスの動作仕様(バスI/F)が異なる、という特徴を持つ。
【0007】
前記従来技術では、検証対象論理回路の同一論理構成上に異なるプロセッサバスを有する場合、それぞれのプロセッサバスの動作仕様(バスI/F)に合わせた検証用モデルを作成する必要があった。また、各プロセッサは命令形式が異なるために、一つの検証/テストケースを実現する検証/テストデータ(命令)を作成する場合も、プロセッサごとの命令列を準備して与える必要があった。それぞれのプロセッサの仕様に合った検証用モデル(プロトコル処理部)を作成する場合、この検証用モデルの作成や管理の工数が増大していた。プロトコル処理部は、換言すればCPU等のプロセッサを論理的にシミュレーションしたモジュールである。
【0008】
また複数のプロセッサバス間の競合などの検証/テストを行うためには、複数のプロセッサ間の動作を制御する必要がある。しかしながら、プロセッサ間の動作を制御する手法は、前述のようにプロセッサ及びバスI/Fごとに対応しなければならないため複雑であった。従って、論理シミュレーションにおける上記プロセッサバス間の競合などの検証/テストのための作成や管理の工数は多大となる。
【0009】
従来では、複数のプロセッサ及びバスI/Fに対応した統一された検証用モデルを扱う論理シミュレーション及び論理検証/テストの技術は存在しなかった。従来技術でも複数の対象プロセッサを一つの検証用モデルごとに並列に検証/テストすることは可能であったが、特に複数のプロセッサバス間の競合の検証/テストを実現することは困難であった。
【0010】
本発明は以上のような問題に鑑みてなされたものであり、その目的は、コンピュータシステム上において検証用モデルを用いて論理シミュレーション実行により対象の論理回路/論理装置の検証/テストを実現するものであって、一つの統一された形式の検証用モデル及び命令などを用いて、複数のバスI/Fを含む対象の回路/装置の論理検証/テストの処理動作を実現できる技術を提供することである。また特に、一つの命令列で検証用モデルを動作させて複数の対象の回路/装置の検証を可能とすることにより、検証モデルの作成や管理の工数の削減、及び、プロセッサ間のデータ作成、プロセッサバス間の競合の検証/テストの容易化により、効率の良いバスI/F信号の論理シミュレーションを行うことが可能な技術を提供することである。
【課題を解決するための手段】
【0011】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。前記目的を達成するために、本発明の技術は、コンピュータシステム(プロセッサ及びメモリを含むハードウェア)上において検証用モデルを用いた論理シミュレーション実行による対象の論理回路/論理装置の検証/テスト、及び前記検証用モデルの作成(生成/構築)を行うものであって、以下に示す技術的手段を備えることを特徴とする。なお、本論理検証方法は、コンピュータ(プロセッサ)が実行する後述の処理ステップを有するデータ/情報の処理方法である。また本論理検証システムは、本論理検証方法に従った処理を実行するコンピュータシステム/情報処理システムである。
【0012】
(1) 本発明の技術は、検証/テストの作業者が使用するコンピュータ上に、複数のプロセッサ(CPU等の処理装置)に対応した複数のバスI/Fが存在する検証対象の論理回路についての一つに統一された形式の検証用モデルが作成された環境/状態において、この検証用モデル及び対応する命令形式などを用いて、複数のバスI/Fを含む検証対象の論理回路の動作の検証/テストを、論理シミュレーション手法により行うものである。前記コンピュータ上でプロセッサ等によりメモリ上のプログラム等が処理される形態により、前記検証用モデルを動作させて論理シミュレーションを実行する。
【0013】
本論理検証方法及びシステムでは、検証用モデルは、プロセッサ依存のバスI/F信号(プロセッサバスに入出力する信号データ)を制御動作するプロトコル処理機能(換言すればバスI/F処理機能)を持つ複数のプロトコル処理部(第1〜第Nのプロトコル処理部)と、複数のプロトコル処理部を含む全体の制御を行い、検証/テストのための1つ以上の命令を含んで成る第1の命令列(テスト/検証用命令)の処理によって前記論理回路の動作の検証/テストの処理を行ってその処理の結果を出力する命令処理部と、に分割されて構成される。
【0014】
作業者は、命令処理部に対し、検証/テストのための第1の命令列(テキスト又はその変換によるバイナリ等の形式のデータ/情報)を入力する。命令処理部での第1の命令列の解読等の処理を通じて、プロトコル処理部に対し1つ以上の命令(バスI/F信号の制御動作のためのコマンド及びデータ等)を与えてその命令に対応するプロトコル処理を実行させる。即ちプロトコル処理部により検証対象論理回路へのバスI/F信号の入出力等の制御動作を実行させる。そして命令処理部では、そのプロトコル処理部の処理結果(検証対象の論理回路からの入力データ等)のデータ値を、期待値(Eとする)と比較して、その比較結果を情報として取得/出力する。
【0015】
本論理検証方法及びシステムでは、前記第1の命令列に、そのうちの該当命令が複数(第1〜第N)のうちのいずれのプロトコル処理部に対する命令であるかを選択、指定、判断などするための識別情報を付加する処理ステップ及び手段を備える。例えば、作業者が、第1の命令列内に、専用の命令(プロトコル処理部選択命令)として記述する。あるいは、プログラムによる命令列の変換により第1の命令列内に前記専用の命令に相当するコードを記述する。そして、命令処理部では、前記入力される第1の命令列の読み込み及び前記識別情報の参照・解読によって、その識別情報で識別される任意のプロトコル処理部を選択して、該当命令により該当プロトコル処理を実行させその結果を得る処理ステップ及び手段(プロトコル処理選択手段)を備える。
【0016】
(2) また本論理検証方法及びシステムは、上記(1)で更に、コンピュータシステム上に、前記検証対象の論理回路に接続される前記複数のプロトコル処理部を含む前記検証用モデル(又はその一部のモジュール/情報)を作成する処理ステップ及び手段(プロトコル設定手段)を備える。この作成は、パラメータデータの入力によるプロトコル処理部のプロトコル処理機能の設定などにより行う。そして、前記作成時(初期設定時)以後で論理シミュレーション実行中において、検証対象の論理回路に接続されている前記複数のうちの任意のプロトコル処理部のバスI/F動作の時刻/タイミングを、命令処理部への命令の入力、もしくは前記プロトコル処理機能の再設定などにより、任意に変動(乃至設定変更)させる処理ステップ及び手段(動作タイミング設定手段)を有する。
【0017】
(3) また本論理検証方法及びシステムは、上記(1)で更に、コンピュータシステム上に、前記検証対象の論理回路に接続される、プロトコル及びバスI/Fが同一で動作速度の異なる複数のプロトコル処理部を含む前記検証用モデル(又はその一部のモジュール/情報を含む)を作成する処理ステップ及び手段(プロトコル設定手段)を有する。そして、前記作成時以後で論理シミュレーション実行中において、前記動作速度などの異なる複数のプロトコル処理部のうちの任意のプロトコル処理部のプロトコル処理機能を、命令処理部への命令の入力、もしくは前記プロトコル処理機能の再設定などにより、任意に設定変更する処理ステップ及び手段を備える。
【発明の効果】
【0018】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下のとおりである。本発明によれば、一つの統一された形式の検証用モデル及び命令などを用いて、複数のバスI/Fを含む対象の回路/装置の論理検証/テストの処理動作を実現できる。また特に、一つの命令列で検証用モデルを動作させて複数の対象の回路/装置の検証を可能とすることにより、検証モデルの作成や管理の工数の削減、及び、プロセッサ間のデータ作成、プロセッサバス間の競合の検証/テストの容易化により、効率の良いバスI/F信号の論理シミュレーションを行うことが可能となる。
【発明を実施するための最良の形態】
【0019】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一部には原則として同一符号を付し、その繰り返しの説明は省略する。図1〜図11は、本実施の形態を示すためのものであり、図12は、従来技術を示すためのものである。
【0020】
本実施の形態では、特徴として、検証用モデルにおけるプロトコル自動選択機能を設けている。即ち、テスト命令列中に専用の命令(プロトコル処理部選択命令)を記述し、検証用モデルの命令処理部でその命令を解読し、テスト命令列中の該当命令を処理動作させるプロトコル処理部及びバスI/Fを選択して処理動作させるものである。
【0021】
図1は、本発明の実施の形態における論理検証システム及び方法に対応した、処理実行環境となるコンピュータシステム10の構成例及び処理イメージを示す。図2は、図1に対応した、本論理検証システムの概念的な構成(特徴的機能を含む概要構成)を示す。図3は、図2の本論理検証システムに含まれる論理シミュレータ100の具体的な構成を示す。
【0022】
図1及び図2において、本論理検証システムは、本発明の実施の形態の論理検証方法に従って、対象となる論理回路(又は論理装置)の論理検証/テストに係わる処理を実行するシステムである。本論理検証システムにおいて、本論理検証/テストに係わる処理は、論理シミュレータ100による論理シミュレーションにより実現される。本コンピュータシステム10上には、論理シミュレータ100のソフトウェアを有する。本ソフトウェアは、論理検証処理を行わせるプログラム(各処理部)や関連する情報を含んだものである。本コンピュータシステム10上で論理検証/テスト作業を行う作業者は、本ソフトウェアを実行し、必要に応じて情報の入出力の操作を行いながら、検証用モデル110を生成/構築し、検証用モデル110を用いて検証対象論理回路111の論理シミュレーションによる論理検証/テストを行う。
【0023】
図1において、コンピュータシステム10では、PCやワークステーションなどのコンピュータ上に、図2に示す論理シミュレータ100のソフトウェアを含んだ論理検証システムが構築されている。コンピュータシステム10上で、作業者により、テストデータ11、検証対象論理回路(論理回路記述情報)13といったデータ/情報が入力/作成される。入力/作成した情報をもとに論理シミュレーションによる論理検証/テストの処理が実行され、その結果ファイル12が作成/出力される。
【0024】
本コンピュータシステム10における検証対象論理回路13を対象とした論理シミュレーションによる動作検証では、検証対象論理回路13として、回路記述言語(ハードウェア記述言語)によるもの等、テキストレベル(作業者が判読可能なレベル)でその機能が記述されたファイル(データ/情報)を用いる。また、検証対象論理回路13への信号値印加を行うために、検証対象論理回路13上の個々の信号線に対して、実行時刻ごとに与える信号値を順次記述して、その動作結果を観測する信号線名称を指示するテストデータ11を作成する。本論理シミュレーションでは、この検証対象論理回路13とテストデータ11を読み込み、予め指定された時刻までの論理信号の変化状態を逐次計算して、その結果を結果ファイル12に出力する。例えば図1中の論理シミュレーション実行では、入力信号値(SIG1,SIG2)を回路(AND回路)の端子に与えてその回路の出力値(SIGO)を算出し、その結果を出力している。信号値は、例えば「L20 H20 L20」といったように信号レベルのH/Lとその持続時間などによって記述されている。
【0025】
図2において、コンピュータシステム10では、CPU21、メモリ22、キーボード等の入力装置23、ディスプレイ等の出力装置24等を有する。CPU21は、論理シミュレータ100のソフトウェアを実行する。また、メモリ22上に、テスト命令列101、比較結果102、パラメータデータ105等の関連データを格納する。
【0026】
論理シミュレータ100は、論理シミュレーションによる論理検証/テスト(以下単に検証またはテストとも称する)のために、検証対象論理回路111とそれに対応した検証用モデル110とを生成/構築している。検証対象論理回路111(13に対応する)及びバスI/F信号群(バスI/F信号線)160は、前記回路記述言語などにより所定の情報の形式で記述され、コンピュータシステム10上で生成/構築処理される。検証対象論理回路111は、後述する図11で例示するように、複数のプロセッサ(複数のプロトコル処理部150と一対一で対応する)のバスI/Fの動作が競合する場合の動作を制御処理する回路を含むものである。検証用モデル110は、検証対象論理回路111に類似する情報(シミュレーションモジュール)、プログラム言語で実現している擬似プログラム等とも言い換えられる。検証用モデル110は、複数のプロトコル処理部150と、検証用モデル110の制御の中心となり複数のプロトコル処理部150を含む全体を制御する命令処理部120とを含んで構成される。複数(N個)のプロトコル処理部150{150A,150B,……,150N}は、検証対象論理回路111に対する複数のバスI/F信号線160{160A,160B,……,160N}に対応して接続される。例えば第1(A)のプロトコル処理部150Aは、第1(A)のバスI/F信号群160Aを制御する処理機能を持つ。
【0027】
命令処理部120は、テスト命令列101を入力してプロトコル処理部150に対する命令処理を行って期待値(E)との比較結果104を出力する基本的な機能の他、特徴として、プロトコル処理選択、動作タイミング設定、プロトコル設定などの諸機能に対応している。プロトコル処理選択は、専用の命令(プロトコル処理部選択命令)により複数のうちから任意のプロトコル処理部150を選択して命令処理させるものである。動作タイミング設定は、任意のプロトコル処理部150に実行させる命令の動作タイミング/時刻を随時に変動させるものである。プロトコル設定は、任意のプロトコル処理部150のプロトコル設定(定義)を、検証用モデル110生成時(初期設定時)以後にも随時に設定変更可能とするものである。
【0028】
なお、従来技術の論理検証システムでは、1つのバスI/Fに対応した1つのプロトコル処理部しか有さない。そのため、複数のプロセッサ及びバスI/Fの競合の動作を検証/テストすることは困難であった。
【0029】
図3において、論理シミュレータ100内部は、検証対象論理回路111に対しての検証用モデル110の構成として、入力パラメータ処理部140、命令処理部120、データバス制御部130、及びプロトコル処理部150{プロトコル処理部(A)150A,プロトコル処理部(B)150B}の主に4つの機能ブロックに分類される。本例では、プロトコル処理部150として2個(A,B)装備されている例を用いて説明する。そのため、図3ではプロトコル処理部(A)150Aおよびプロトコル処理部(B)150Bとして示している。
【0030】
テスト命令列101は、論理検証のために作業者が入力・作成して論理シミュレータ100に対し与える、固有のアセンブラ命令形式のテキスト記述データであり、検証用命令など言い換えてもよい。図4や図9に、テスト命令列101の具体例が示される。テスト命令列101を構成する1つ以上の命令のうち単独のプロトコル処理部150に実行させる命令は、従来技術の形式(図12)と同様に示している。図5に、本実施の形態のシステムでテスト命令列101の形式に新たに追加された命令の例が示される。
【0031】
バスI/F信号群(バスI/F信号線)160は、コマンド、アドレス、及びデータ等の信号群及びそれに対応する信号線である。例えば命令処理部120から読み出し(RD)コマンドがプロトコル処理部150Aに出力された場合、そのプロトコル処理部150Aから対応するバスI/F信号群160Aを通じて検証対象論理回路111へ該当信号を送出し、その応答の読み出しデータ等を受け取り、命令処理部120へ入力する。なお、バスI/F信号群160において、プロトコル処理部150から検証対象論理回路111への方向を出力方向としその逆を入力方向として説明している。
【0032】
命令変換プログラム(P)部102は、テスト命令列101を、検証用モデル110が読める形式にコード変換するプログラム部である。この命令変換プログラム部102では、テストデータ11として記述したアセンブラ命令記述を読み込み、バイナリ形式に変換して、検証用モデル110の入力データとなるバイナリデータ103を作成する。命令処理部120は、バイナリデータ103を入力し、処理して、比較結果104を出力する。命令変換プログラム部102もコンピュータシステム10上に有する。
【0033】
入力パラメータ処理部140は、複数のプロトコル処理部150の機能を定義したパラメータデータ(プロトコル設定情報)105をパラメータ入力部141により読み込み、各プロトコル処理部(150A,150B)対応のパラメータデータに従って、プロトコル設定部142により、各プロトコル処理部(150A,150B)のプロトコル及びバスI/F処理機能の設定を行う。即ち、各プロトコル処理部150のバスI/F信号群160の送出順序や送出タイミング、データ幅などの機能設定を行う。
【0034】
命令処理部120は、テスト命令列101に対応するバイナリデータ103をデータ読み込み部121で読み込み、内蔵メモリ部122へ格納する。内蔵メモリ部122は、検証用のデータ(命令)及び期待値(E)等を記憶する。
【0035】
命令解読処理部123は、内蔵メモリ部122から、順次、命令(即ちバイナリデータ103に含まれているコード)を読み出して、その命令内容を解読すると共に、データ処理部124、期待値チェック部125、及びデータバス制御部130(トランザクション監視機構部131及びプロトコル選択データ入出力部132)に対し、その命令に従う動作指示を行う。命令処理部120及び命令解読処理部123は、特徴部分でもあり、専用の命令、特にプロトコル処理部選択命令であるReq設定コマンド311、を解読する機能を備えている。
【0036】
データ処理部124は、出力データバッファ127を制御するものであり、命令解読処理部123の指示に従い、内蔵メモリ部122から、順次、データ(命令)を読み込み、出力データバッファ127に送出する。出力データバッファ127は、プロトコル処理部150とのデータバスにデータ(命令)を出力する。また、入力データバッファ126は、プロトコル処理部150とのデータバスからデータ(命令)を入力する。
【0037】
期待値チェック部125は、命令解読処理部123の指示により、検証対象論理回路111からプロトコル処理部150を通じて読み出された入力データが保存される入力データバッファ126の内容と、期待値(E)とを比較し、その比較結果104を出力する。
【0038】
データバス制御部130は、トランザクション監視機構部131、プロトコル選択・データ入出力部132を有する。データバス制御部130は、命令処理部120と複数のプロトコル処理部150との間のデータバスにおけるトランザクションを制御する。トランザクション監視機構部131は、命令処理部120、入力パラメータ処理部140、及びプロトコル処理部150の間のデータ送受信の制御を行う。プロトコル選択・データ入出力部132は、プロトコル処理部150の選択、およびデータ、アドレスの入出力制御を行う。
【0039】
プロトコル処理部150は、命令解読部151、トランザクション処理部152、タイミング制御部153、アドレス・データ入出力バッファ154、データ入出力部155等を有する。トランザクション処理部152は、入出力制御、バスI/F信号制御などの機能を備える。
【0040】
プロトコル処理部150では、入力パラメータ処理部140のプロトコル設定部142からの指定(パラメータデータ入力)により、命令解読部151において、自身が処理すべきプロトコルに対する検証対象論理回路111のバスI/F信号群160の出力順と出力タイミングを設定する。また、命令処理部120から送出されるデータを命令解読部151に読み込み、そのデータに含まれる個別の命令に従った動作を、トランザクション処理部152に指示する。トランザクション処理部152は、指定された命令で実行すべきバスI/F信号群160の動作をデータ入出力部155に送出する。そしてデータ入出力部155から検証対象論理回路111のバスI/F信号線(160)に対して、コマンドやアドレスやデータの送出を行う。アドレス・データ入出力バッファ154には、バスI/F信号線(160)との間で入出力されるアドレスやデータ等が格納される。タイミング制御部153は、命令解読部151からの制御に従い、アドレス・データ入出力バッファ154の入出力タイミングを制御する。
【0041】
上記コマンドが検証対象論理回路111からのデータを受け取るREAD命令系のときには、バスI/F信号線160の信号値を所定の時刻にデータ入出力部155で読み込み、アドレス・データ入出力バッファ154にその内容を格納すると共に、データバス制御部130に対して読み込みデータの取り込みを終えたことを報告する。データバス制御部130は、アドレス・データ入出力バッファ154の格納データを、データバスを通じて入力データバッファ126へ入力させる。
【0042】
上記構成により、プロトコル処理部150は、パラメータデータ105の指定に応じて、一種の検証用モデル110によって、複数種のプロトコル動作(プロトコル処理部150)を実現することができる機能を有している。
【0043】
図12(a)は、本実施の形態との比較のために、従来技術の形式における、一例のテスト命令列200を示す。また図12(b)は、そのテスト命令列200における、命令コード分類210を示す。また図12(c)は、そのテスト命令列200に対応したバイナリデータ220のフォーマット例を示す。
【0044】
テスト命令列200は、命令コード分類210に示すように、命令コードとして、命令を示すコマンド201、そのデータを示すオペランド202に分けられる。下線で示す本例では、「MVL」というコマンド201において、その第1オペランドが「R0」、第2オペランドが「R1」、及び第3オペランドが「0x0200」となるデータを用いた動作を行わせることを示している。テスト命令列200は、具体的には、「R1」の示すアドレスに存在するデータ内容から「R0」が示すアドレスに512バイト連続して転送させる命令列である。例えば上記命令コード(コマンド201及びオペランド202)をバイナリ形式に変換すると、バイナリデータ220で示す4バイトの2進数機械語データが生成される。このバイナリデータ220において、コマンド201の「MVL」221は、最初の1バイト’11100101’(0xE5)で示され、次の1バイト’00000001’で第1オペランド及び第2オペランドの内容を示し、最後の2バイト’00000010 00000000’で第3オペランドのデータを示す。
【0045】
一方、図4は、本実施の形態で適用されるテスト命令列300(101に対応する)の一例を示し、図5は、新たに追加した命令コード分類310としてプロトコル処理部選択命令であるReq(リクエスト)設定コマンド311について示す。
【0046】
前記従来のテスト命令列200を用いるシステムでは、検証用モデルにおいて一つの命令コードで複数のうちの任意のプロトコル処理を行わせることは不可能である。そこで、本実施の形態では、一つの命令コードで複数のうちの任意のプロトコル処理部150の処理を選択する手段(プロトコル処理選択の機能)として、命令を処理すべきプロトコル処理部150の選択のための命令コード(301,302)を追加している。“@RQSET”301は、Req設定コマンド311であり、“@RQSETE”302は、Req設定コマンド311に対応した終端コマンドである。
【0047】
この新形式のテスト命令列300においては、複数のプロトコル処理部150から任意に選択してバスI/F信号線160に対する命令を処理動作させたい場合に、プロトコル処理部選択命令である“@RQSET”301を、対象のテスト命令列300(101)中の最初などに記述し、“@RQSET”301に対応する“@RQSETE”302を最後などに記述する。“@RQSET”301には、プロトコル処理部150を識別する情報を付加する。「V0」「V1」等は、後述の装置番号501に対応し、プロトコル処理部150を識別するための情報である。そして“@RQSET”301と“@RQSETE”302の間の範囲内に、指定のプロトコル処理部150に実行させたい1つ以上の命令を記述する。これにより、その範囲内の該当命令を実行するプロトコル処理部150を選択して実行させる。
【0048】
図5において、Req設定コマンド311に対応する“@RQSET”301は、第1オペランドにReq送出先312(装置番号501に対応)を、第2オペランドにReq送出時刻313を、第3オペランドにReq送出頻度314を記述する形式である。本例では、“@RQSET”301で、第1オペランドにおいてReq送出先312に「V0」を設定し、Req送出時刻313として「T030」即ち「48サイクル後」を、またReq送出頻度314には「AC02」即ち「2サイクルごとの送出」を、それぞれ設定、記述している。従って、“@RQSET”301から“@RQSETE”302までの範囲の命令列は、「V0」で識別されるプロトコル処理部150Aで実行され、またその最初の命令開始時刻は、命令検出の48サイクル後から開始され、またそのプロトコル処理部150Aからの送出データは2サイクルおきに連続する、ということを定義している。
【0049】
なお図4中、“V0 EQU 0x0001”等では、Req送出先312となる「V0」等についての定義を示している。“T010 EQU 0x0010”等では、Req送出時刻313となる「16サイクル後に実行」などについての定義を示している。“AC01 EQU 0x0030”等では、Req送出頻度314となる「1サイクル毎に実行」などについての定義を示している。なお図4及び図5の命令列の形式は一例であって、例えばReq送出頻度314の設定をオプションとしてもよい。
【0050】
このように、作業者は、プロトコル処理部150の選択に応じたテスト命令列300を準備してそのバイナリデータ103を作成し、論理シミュレータ100の検証用モデル110に読み込ませる。これによって、命令処理部120で自動的に解読処理させ、複数のうち選択したプロトコル処理部150に処理動作させて、比較結果104を得ることができる。即ち、任意のプロトコル処理部150の検証、特に複数のプロトコル処理部150が関連して動作する場合の検証を実現できる。
【0051】
次に、図6は、命令処理部120における出力データバッファ127からのデータ(命令)送出タイミング(Req送出時刻313)及びそのデータ(命令)を実行するプロトコル処理部150の対応付け及びその管理方法を示したものである。論理シミュレータ100において、タイムホイール400、実行管理テーブル410、及び出力データバッファ420(127に対応する)を対応付けて管理する。タイムホイール400は、現在シミュレーション時刻(t)401からの相対時刻を示す。実行管理テーブル410は、アドレス(リンクポインタ)411、装置番号(Req送出先)412、ReqData(リクエストデータ)413、出力データ部リンク414等によるレコードを有する。出力データバッファ420は、複数の出力データ部(データレコード)421を保持可能とする。出力データ部421は、プロトコル処理部150に対し出力する、実行すべきコマンド及びデータを格納している。
【0052】
タイムホイール400では、次の時刻(t+1)に実行すべき実行管理テーブル410のアドレス402を格納している。実行管理テーブル410には、Req送出先となる装置番号412、Req設定コマンド311で定義したデータを持つReqData413、その時刻(t+1)に実行すべきコマンド及びデータを格納した出力データバッファ420のアドレス(出力データ部リンク414)等を持つレコードを有する。これらにより、時刻ごとに実行すべきコマンド及びデータの時間制御を行う。
【0053】
検証用モデル110において、バイナリデータ103中のReq設定コマンド311が、命令解読処理部123で読み込まれると、出力データバッファ420の出力データ部421に、“@RQSET”301から“@RQSETE”302までの間のバイナリデータ(命令列相当コード)を書き込む。また“@RQSET”301で定義したReq送出先312を実行管理テーブル410のレコードの装置番号412に設定する。またその他の制御データであるReq送出頻度314等を同レコードのReqData413に設定する。そして、該当レコードの実行時間であるReq送出時刻313に対応するタイムホイール400の該当相対時刻のアドレス402に、該当レコードのアドレス411を登録する。
【0054】
例えば、図6に示すテーブル構造は、時刻(t+1)に「V0」で識別されるプロトコル処理部150Aへのアクセスを行う命令列があった場合である。論理シミュレーション実行時に、該当する時刻が(t+1)になると、アドレス402で示される実行管理テーブル410の該当レコード及び出力データバッファ420の該当出力データ部421を読み込み、Req送出先となる装置番号412で示されるプロトコル処理部150Aへ、コマンド及びデータを含む出力データ部421を送出する。このとき、アドレス411がゼロ以外の場合は、まだ処理すべきデータがレコードとして残っており、アドレス411で示される相対レコードの内容(本例では「V1」で識別されるプロトコル処理部150Bへのアクセス)を同様に処理する。
【0055】
図7は、プロトコル処理部150の初期設定及び随時設定等のプロトコル設定(定義)を行うためのパラメータデータ105の内容例を示す。パラメータデータ105は、装置番号501、プロトコル種別502、Data発行サイクル503、Dataパルス幅504、連続アクセスWait505等の要素を有する。
【0056】
装置番号501は、複数の装置即ちプロトコル処理部150の識別を行うためのコードを定義しており、プロトコル処理部ID等と言い換えてもよい。プロトコル種別502は、該当プロトコル処理部150のバスI/F信号群160の動作(プロトコル)の種類を定義している。また、該当バスI/F信号群160における動作を、Data発行サイクル503、Dataパルス幅(サイズ)504、及び連続アクセスWait505などによって、細かく定義している。Dataはコマンド及びデータ単位である。例えば、装置番号501が「V0」でプロトコル種別502が「CPU1」のプロトコル処理部150Aについて、Data発行サイクル503が「2」(2サイクル単位)、Dataパルス幅504が「1」(1サイクル単位)、及び連続アクセスWait505が「1」(1サイクル単位)である。また例えば同じプロトコル種別502のプロトコル処理部150である「CPU1」を有する場合でも、503〜505等による動作時刻/タイミングの設定を異なるものにしてアクセス時間を変えた複数のプロトコル処理部150を定義して検証することができる。図10にも、上記命令の動作タイミングを示している。
【0057】
特に、前記図4のReq送出頻度314は、前記図2の動作タイミング設定の機能に係わり、図7のパラメータデータ105における連続アクセスWait505による設定とも対応している。
【0058】
次に、図8は、本実施の形態におけるプロトコル自動選択機能を利用した論理検証処理の実行フローを示す。コンピュータシステム10の論理シミュレータ100における論理シミュレーション実行開始に先立ち、論理シミュレータ100における検証対象論理回路111の生成/構築が完了している状態とする。即ち、必要な情報の読み込みや作成、各バスI/F信号線160及びレジスタなどの初期設定について行っておく。
【0059】
作業者は、論理シミュレーション実行前に、必要となるプロトコル処理部150の初期設定データとなるパラメータデータ105を作成しておく。また検証用の命令列及びプロトコル処理部150の選択用の命令(301,302)を追加記述したテスト命令列101を用いて変換したバイナリデータ103を準備しておく。論理シミュレータ100における論理シミュレーション実行時は、図8に従って処理を進めることにより、目的のプロトコル制御を実現する。
【0060】
まず、S600(以下、Sは処理ステップを表す)で、論理シミュレーション開始時には、入力パラメータ処理部140のパラメータ入力部141でパラメータデータ105の内容を読み込み、プロトコル処理部150を一つ選択し、そのパラメータデータ105に従って選択したプロトコル処理部150の設定を行う。
【0061】
また、S601では、論理シミュレーション開始時点で、命令処理部120のデータ読み込み部121で、テスト命令列101のバイナリデータ103を読み込み、内蔵メモリ部122へその内容を書き込む。書き込んだバイナリデータ103のコードに従って論理シミュレーションが開始される。
【0062】
次に、S602では、命令解読処理部123で、内蔵メモリ部122の内容を一命令ずつ順次読み出して解読処理する。これにより、指定されたデータをデータ処理部124で読み込んで出力データバッファ127に格納する。命令解読処理部123では、読み出した命令において、Req設定コマンド311(“@RQSET”301)が出現すると、データ処理部124において、前記図6のタイムホイール400、実行管理テーブル410、出力データバッファ420の各レコードを作成及び設定する。
【0063】
また、命令解読処理部123では、読み出した命令において、結果比較命令(期待値比較命令)、即ち命令列中の複数の命令処理における期待値(E)による比較ポイントを決める命令が出現すると、その命令処理出力結果の期待値(E)を、内蔵メモリ部122から期待値チェック部125に送出し、所定のバッファに記憶する。
【0064】
次に、S603では、タイムホイール400で示される論理シミュレーション時刻に、実行管理テーブル410のアドレス411が登録されている場合は、その時に実行するコマンド及びデータが存在することを示しており、データバス制御部130は、出力データバッファ420の該当データレコードから、順次、装置番号412で示されるプロトコル処理部150に対し、データバスを介してコマンド及びデータ(出力データ部421)を送出する。
【0065】
次に、S604において、対象プロトコル処理部150は、データバス制御部130から送出されたコマンド及びデータ(出力データ部421)を読み込み、また論理シミュレーション開始時にパラメータデータ105で設定されているプロトコル及びバスI/Fの処理機能に従って、検証対象論理回路111のバスI/F信号線160へコマンド及びデータの送出を行う。また対象プロトコル処理部150は、検証対象論理回路111のバスI/F信号線160からの入力データを読み取り、自身の装置番号501を付与してデータバス制御部130へ入力データとして送出する。
【0066】
対象プロトコル処理部150が処理動作している間、命令解読処理部123及びデータバス制御部130は、期待値(E)や入力データの有無を確認して待機している。
【0067】
次に、S605では、データバス制御部130は、プロトコル処理部150から送出された入力データを、装置番号501単位に入力データバッファ126へ書き込み、期待値チェック部125へその入力データの設定完了を報告する。
【0068】
次に、S606では、期待値チェック部125は、内蔵メモリ部122に格納した命令に前記結果比較命令がある場合は、命令解読処理部123からの指示に従い、内蔵メモリ部122からの期待値(E)のデータと、入力データバッファ126の入力データとを比較チェックし、その結果を比較結果104として出力する。
【0069】
次に、S607では、命令処理部120は、テスト命令列101のバイナリデータ103における各命令のすべての命令処理が完了したか確認し、すべて完了するまでは(S607−N)、S602からS606までの処理を繰り返して、読み込んだ命令列をすべて実行して全処理が完了した時は(S607−Y)、論理シミュレーションを終了する。比較結果104の情報は、論理シミュレーションによる検証/テストの結果を示す。別の検証/テストを行う場合は、別のテスト命令列101によって同様の処理を実行する。
【0070】
以上の手順により、一つの統一された形式の検証用モデル110及びテスト命令列101等を用いて複数のバスI/F(160)接続部分であるプロトコル処理部150の検証の環境を構築でき、任意のプロトコル処理部150を選択して各種の検証/テストを効率良く実現できる。更に、各プロトコル処理部150のバスI/F(160)の動作タイミングをテスト命令列101やパラメータデータ105で制御できる。また、パラメータデータ105によるプロトコル処理部150の拡張(プロトコル設定)により、任意かつ随時にプロトコル処理部150のバスI/F(160)の構成を変更して検証/テストが可能となる。そのため、各プロトコル処理部150のバスI/F(160)間の競合の検証/テストも容易に実現できる。
【0071】
図9は、複数のバスI/F(160)間の競合の検証/テストを実行する場合に対応した、一例のテスト命令列900(101に対応する)を示す。この場合、テスト命令列900において、前記図4のテスト命令列300における“@RQSET”301〜“@RQSETE”302と同様の形式の命令列(901,902)の繰り返しによって、複数のうちから任意のプロトコル処理部150を順に選択して処理動作させる。本例で、命令列901はプロトコル処理部150Aの選択動作、命令列902はプロトコル処理部150Bの選択動作を行わせるものである。
【0072】
図10は、図9のテスト命令列900に対応した、各命令列の動作タイミングを示す。各“@RQSET”301(Req設定コマンド311)単位の命令列(901,902)は、実行時刻の指示(313,314)に従って実行される。命令列(901,902)の解読、実行により、「T010」で示す10サイクル後に「V0」のプロトコル処理部150Aが起動され該当命令列{SET,SET,SET,RD,WR}が順に処理され、また「T020」で示す14サイクル後に「V1」のプロトコル処理部150Bが起動され該当命令列{RD,WR,RD,WR}が順に処理される。「RE」は“@RQSETE”302に相当する。全RQSET単位の命令列(901,902)の処理の終了を待ち、その終了時点で、次のRQSET単位の命令列を発行、実行する。
【0073】
図11は、前記バスI/F(160)間の競合の検証/テストを実行する場合に対応した、検証対象論理回路111に相当する論理回路112の構成例である。論理回路112における、DEV(入出力デバイス)からのData Read(データ読み出し)の制御(6つのステップで示す)を例示している。プロセッサであるCPU#1,CPU#2は、それぞれプロトコル処理部150A,プロトコル処理部150Bに対応付けられる。論理回路112は、CPU#1,#2とバスI/F#1,#2で接続され、CPU#1,#2のバスI/F#1,#2の動作を調停するデータ転送制御部113などを含んだ回路である。
【0074】
バスI/F#1,#2間の競合の動作は、例えばCPU#1がI/O制御の役割を担いCPU#2からのDEVのデータ読み出しの場合において、以下である。まず第1に、CPU#2からのデータリード要求(命令)を、データ転送制御部113が受ける。第2に、データ転送制御部113が、CPU#1へそのことを伝える。第3に、CPU#1からIOC(I/O制御部)を介してDEVへデータを読み出しする。第4に、DEVからデータ転送制御部113へデータが読み出しされ、メモリ制御部を介してメモリに格納される。第5に、データ転送制御部113がCPU#2へ、メモリにデータが読み出しされたことを伝える。第6に、CPU#2が、メモリからデータを読み出しする。上記例のような競合の動作を、論理シミュレータ100での前述の論理シミュレーションの処理により実行でき、効率良く検証することができる。
【0075】
以上、本実施の形態によれば、複数のプロセッサ及びバスI/Fを含む論理回路についての効率の良い論理シミュレーションによる論理検証/テストが実現でき、検証用モデル110及び論理シミュレータ100の開発、作成、変更、管理などの工数の削減が可能となる。特に、プロトコル処理選択、動作タイミング設定、プロトコル設定の機能により、バスI/F(160)間の競合の検証/テストも容易に実現でき、そのテストデータ作成も容易となる。
【0076】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることは言うまでもない。
【産業上の利用可能性】
【0077】
本発明は、論理回路/論理装置の論理検証/テストを行うシステム、特に複数のプロセッサバスを持つシステムLSIチップ及びそのチップを用いる周辺回路についての論理検証のための技術などに利用可能である。
【図面の簡単な説明】
【0078】
【図1】本発明の一実施の形態である論理検証システムに対応した、処理実行環境となるコンピュータシステムの構成例及び処理イメージを示す図である。
【図2】本発明の一実施の形態である論理検証システムの概念的な構成を示す図である。
【図3】本発明の一実施の形態である論理検証システムのより具体的な構成として、論理シミュレータの構成を示す図である。
【図4】本発明の一実施の形態である論理検証システムで適用されるテスト命令列の一例を示す図である。
【図5】本発明の一実施の形態である論理検証システムで適用されるテスト命令列における命令コード分類として、プロトコル処理部選択命令であるReq(リクエスト)設定コマンドについて示す図である。
【図6】本発明の一実施の形態である論理検証システムにおける、命令処理部における出力データバッファからのデータ(命令)送出タイミング及びそのデータ(命令)を実行するプロトコル処理部の対応付け及びその管理方法を示した図である。
【図7】本発明の一実施の形態である論理検証システムにおける、プロトコル処理部の初期設定及び随時設定等のプロトコル設定(定義)を行うためのパラメータデータの内容例を示す図である。
【図8】本発明の一実施の形態である論理検証システム及び方法における、プロトコル自動選択機能を利用した論理検証処理の実行フローを示す図である。
【図9】本発明の一実施の形態である論理検証システムにおける、複数のバスI/F間の競合の検証/テストを実行する場合に対応した、一例のテスト命令列を示す図である。
【図10】本発明の一実施の形態である論理検証システムにおける、図9のテスト命令列に対応した、各命令列の動作タイミングを示す図である。
【図11】本発明の一実施の形態である論理検証システムにおける、バスI/F間の競合の検証/テストを実行する場合に対応した、検証対象論理回路に相当する論理回路の構成例を示す図である。
【図12】本実施の形態との比較のために、従来技術における、(a)一例のテスト命令列と、(b)そのテスト命令列における命令コード分類と、(c)そのテスト命令列に対応したバイナリデータのフォーマット例とを示す図である。
【符号の説明】
【0079】
10…コンピュータシステム、11…テストデータ、12…結果ファイル、13…検証対象論理回路(論理回路記述情報)、21…CPU、22…メモリ、23…入力装置、24…出力装置、100…論理シミュレータ、101…テスト命令列、102…命令変換プログラム部、103…バイナリデータ、104…比較結果、105…パラメータデータ、110…検証用モデル、111…検証対象論理回路、112…論理回路、113…データ転送制御部、120…命令処理部、121…データ読み込み部、122…内蔵メモリ部、123…命令解読処理部、124…データ処理部、125…期待値チェック部、126…入力データバッファ、127…出力データバッファ、130…データバス制御部、131…トランザクション監視機構部、132…プロトコル選択データ入出力部、140…入力パラメータ処理部、141…パラメータ入力部、142…プロトコル設定部、150,150A,150B…プロトコル処理部、151…命令解読部、152…トランザクション処理部、153…タイミング制御部、154…アドレス・データ入出力バッファ、155…データ入出力部、160,160A,160B…バスI/F信号群(バスI/F信号線)、200,300,900…テスト命令列、201…コマンド、202…オペランド、210,310…命令コード分類、220…バイナリデータ、301…“@RQSET”、302…“@RQSETE”、311…Req(リクエスト)設定コマンド、312…Req送出先、313…Req送出時刻、314…Req送出頻度、400…タイムホイール、410…実行管理テーブル、420…出力データバッファ、421…出力データ部、901,902…命令列。

【特許請求の範囲】
【請求項1】
コンピュータシステム上において検証用モデルを用いた論理シミュレーションにより検証対象の論理回路の動作の検証を行う論理検証方法であって、
作業者の使用するコンピュータ上に、複数のプロセッサバスインターフェースを有する検証対象の論理回路についての統一された形式の検証用モデルが作成された状態において、前記検証用モデル及び命令を用いた論理シミュレーションにより前記検証対象の論理回路の動作の検証を行うものであり、
前記検証用モデルは、各々前記プロセッサバスインターフェースの信号を制御動作するプロトコル処理機能を持つ複数のプロトコル処理部と、前記複数のプロトコル処理部を含む全体を制御し、前記検証のための前記プロセッサバスインターフェースの信号の制御動作に係わる1つ以上の命令を含んで成る第1の命令列の処理によって前記論理回路の動作の検証の処理を行ってその結果を出力する命令処理部とを有し、
前記作業者の操作に基づき前記第1の命令列のうちの該当命令の実行対象となる前記プロトコル処理部の識別情報が付加された前記第1の命令列が前記命令処理部に対し入力される処理ステップと、
前記命令処理部が、前記第1の命令列における前記識別情報の処理により、前記第1の命令列のうちの該当命令の処理を、前記複数のうちの前記実行対象となる前記プロトコル処理部により実行させ、その結果のデータを得る処理ステップとを有することを特徴とする、検証用モデルを用いる論理検証方法。
【請求項2】
請求項1記載の検証用モデルを用いる論理検証方法において、
前記コンピュータシステム上において、前記検証対象の論理回路に接続される前記プロトコル処理部を含む前記検証用モデルを、パラメータデータの入力による前記プロトコル処理部の前記プロトコル処理機能の設定により作成する処理ステップと、
前記検証用モデルの作成以後で前記論理シミュレーションの実行中に、前記命令処理部への命令の入力により、もしくは前記パラメータデータの入力による前記プロトコル処理機能の設定により、前記プロトコル処理部の前記プロセッサバスインターフェースの信号の制御動作のタイミングを任意に変動させる処理ステップとを有することを特徴とする、検証用モデルを用いる論理検証方法。
【請求項3】
請求項1記載の検証用モデルを用いる論理検証方法において、
前記コンピュータシステム上において、前記検証対象の論理回路に接続される、前記プロセッサバスインターフェースが同一で動作速度の異なる複数の前記プロトコル処理部を含む前記検証用モデルを作成する処理ステップと、
前記検証用モデルの作成以後で前記論理シミュレーションの実行中に、前記命令処理部への命令の入力により、もしくは前記パラメータデータの入力による前記プロトコル処理機能の設定により、前記動作速度の異なる複数のプロトコル処理部の任意の前記プロトコル処理機能を設定する処理ステップを有することを特徴とする、検証用モデルを用いる論理検証方法。
【請求項4】
コンピュータシステム上において検証用モデルを用いた論理シミュレーションにより検証対象の論理回路の動作の検証を行う論理検証システムであって、
作業者の使用するコンピュータ上に、複数のプロセッサバスインターフェースを有する検証対象の論理回路についての統一された形式の検証用モデルが作成された状態において、前記検証用モデル及び命令を用いた論理シミュレーションにより前記検証対象の論理回路の動作の検証を行うものであり、
前記検証用モデルは、各々前記プロセッサバスインターフェースの信号を制御動作するプロトコル処理機能を持つ複数のプロトコル処理部と、前記複数のプロトコル処理部を含む全体を制御し、前記検証のための前記プロセッサバスインターフェースの信号の制御動作に係わる1つ以上の命令を含んで成る第1の命令列の処理によって前記論理回路の動作の検証の処理を行ってその結果を出力する命令処理部とを有し、
前記作業者の操作に基づき前記第1の命令列のうちの該当命令の実行対象となる前記プロトコル処理部の識別情報が付加された前記第1の命令列が前記命令処理部に対し入力され、
前記命令処理部が、前記第1の命令列における前記識別情報の処理により、前記第1の命令列のうちの該当命令の処理を、前記複数のうちの前記実行対象となる前記プロトコル処理部により実行させ、その結果のデータを得る処理を行うことを特徴とする、検証用モデルを用いる論理検証システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate


【公開番号】特開2007−156728(P2007−156728A)
【公開日】平成19年6月21日(2007.6.21)
【国際特許分類】
【出願番号】特願2005−349620(P2005−349620)
【出願日】平成17年12月2日(2005.12.2)
【出願人】(000233295)日立情報通信エンジニアリング株式会社 (195)
【Fターム(参考)】