JP5065113B2 - 等価性検証方法、等価性検証プログラム及び等価性検証プログラムの生成方法 - Google Patents

等価性検証方法、等価性検証プログラム及び等価性検証プログラムの生成方法 Download PDF

Info

Publication number
JP5065113B2
JP5065113B2 JP2008074859A JP2008074859A JP5065113B2 JP 5065113 B2 JP5065113 B2 JP 5065113B2 JP 2008074859 A JP2008074859 A JP 2008074859A JP 2008074859 A JP2008074859 A JP 2008074859A JP 5065113 B2 JP5065113 B2 JP 5065113B2
Authority
JP
Japan
Prior art keywords
model
output
fifo
input
test
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.)
Active
Application number
JP2008074859A
Other languages
English (en)
Other versions
JP2009230451A (ja
Inventor
匡亮 谷本
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.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics Corp
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 Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to JP2008074859A priority Critical patent/JP5065113B2/ja
Priority to US12/396,309 priority patent/US8122402B2/en
Publication of JP2009230451A publication Critical patent/JP2009230451A/ja
Application granted granted Critical
Publication of JP5065113B2 publication Critical patent/JP5065113B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3323Design verification, e.g. functional simulation or model checking using formal methods, e.g. equivalence checking or property checking

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Tests Of Electronic Circuits (AREA)

Description

本発明は、フロー(回路の機能や振る舞い)の等価性を維持して開発された新たな回路に対する検証環境を生成する技術に関し、例えばフロー等価性を維持して機能拡張された半導体集積回路のテスト環境の生成並びにそのテスト環境を用いたテストに適用して有効な技術に関する。
特許文献1には、システムレベル設計言語で記述された動作レベルの回路記述とHDL(Hardware Description Language)で記述されたRTL(Register Transfer Level)回路記述との等価性をシミュレーションにて判定する手法に関する発明が記載される。これは、夫々の回路記述に対して個別にシミュレーションを実行し、信号波形情報を取得後、信号値遷移の波形順序が維持されているかの判定を行う事で、等価性判定を行っている。従って、夫々の回路記述に対して個別にテストベンチ(回路記述をテストする為のテストパターンを発生させるプログラム)を構成する事となり、同一のテストベンチを用いた等価性判定は実現できない。
特許文献2には、動作合成での内部処理ステップに着目し、各内部処理での変更・操作が正しく行われているかをチェックする事を目的として成され、合成前後の等価性判定を行うようにした発明が記載される。これは、動作合成ツールが行う入力記述の各変形処理で記述変更が正しく行われている事を、動作合成ツールが各変形処理で生成する中間表現に直接アクセスする事で証明を実施している。変形処理前後での中間表現から夫々EFSM(Extended Finite State Machine)を抽出し、夫々のEFSMの次状態関数、出力関数をSymbolic Simulationで求め、得られた次状態関数と出力関数が夫々等しいかを検証する事で等価性検証を実施している。即ち、特許文献2に記載の技術は、テストベンチを用いたシミュレーションによる等価性検証手法ではない。
特許文献3には、動作合成への入力記述と出力結果RTLのシミュレーション結果波形を比較する事で、等価性検証を実施可能とする事を目的になされ、合成前後の等価性判定を行うようにした発明が記載される。この発明では、動作合成への入力記述と出力結果RTLを個別にシミュレーションし、入力記述に対する割り当てサイクル指定情報又は動作合成が挿入したサイクル情報を用いて、夫々の出力波形でのトランザクションの対応を識別し、トランザクション単位で出力波形比較を行う事で、入力記述と出力記述の等価性検証を実施している。従って、入力記述、出力結果RTLの夫々に対してテストベンチの記述が必要となる。
特開2005-316595号公報 特開2003-141202号公報 特開2004-145712号公報
本発明者は基本になる回路モデルに対して新たに開発する回路の等価性の検証に当該基本になる回路モデルのためのテスト環境を実現するためのテストベンチを流用することについて検討してきた。上記特許文献1乃至3については何れもそのような意味でテストベンチを流用するには不適当である。前述の通り特許文献1の技術ではシステムレベル設計言語で記述された動作レベルの回路記述とHDLで記述されたRTL回路記述との夫々の回路記述に対して同一のテストベンチを用いた等価性判定は実現できない。特許文献2の技術はそもそもテストベンチを用いたシミュレーションによる等価性検証手法ではない。特許文献3の技術では入力記述、出力結果RTLの夫々に対してテストベンチの記述が必要になる。
本発明者は、合成前後でのテストベンチの流用が単純には行えないという問題点は、動作合成でのスケジューリングにより、合成入力記述の入力及び出力アクセスタイミングサイクルと、合成結果の入力及び出力アクセスタイミングサイクルとが異なる事に起因する、という点に着目した。入力及び出力アクセスタイミングサイクルが合成前後で異なるため、合成入力記述で用いていたテストベンチをそのまま流用する事ができない。合成結果を解析した上で、接続可能なように人手で修正を行う場合にはその工数が大幅に増大することが予想される。
本発明の目的は、基本になる回路モデルに対して新たに開発する回路の等価性の検証に当該基本になる回路モデルのためのテストベンチを流用する検証方法を提供することにある。
本発明の別の目的は、動作合成ツールを用いて得られたRTL記述モデルやシミュレーションモデル等に対する等価性の検証を既存のテストベンチを流用して実施可能にするための検証環境を生成するプログラムを提供することにある。
本発明の更に別の目的は、動作合成ツールを用いて得られたRTL記述モデルやシミュレーションモデル等に対する等価性の検査を既存のテストベンチを流用して実施可能にするための検証環境を生成する方法を提供することにある。
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
すなわち、所定の言語で回路が記述された手本モデルと前記手本モデルのためのテストベクタ生成モデルとを用いて検証対象モデルの等価性を検証するために、サイクル精度で前記手本モデルが前記手本モデル用テストベクタ生成モデルとの間で信号の入出力を行いながら、前記手本モデルと同じタイミングで前記手本モデル用テストベクタ生成モデルからの出力を手本モデルの信号毎に入力FIFO群に書き込む処理と、前記検証対象モデルと同じ動作タイミングで前記入力FIFO群からデータを読み込んで前記検証対象モデルに出力する処理を行ない、前記手本モデルの出力と前記検証対象モデルの出力とを対応する信号名毎に出力FIFOペア群に書き込み、書き込まれた信号名毎のペア出力に対して一致判判定を行う。
これにより、前記手本モデルとそのテストベンチであるテストベクタ生成モデルとの間の入力及び出力アクセスタイミングサイクルと、前記検証対象モデルと前記テストベクタ生成モデルとの間の入力及び出力アクセスタイミングサイクルとの相違は、入力FIFO群と出力FIFOペア群によって吸収される。よって、検証対象モデルの等価性評価に手本モデルのテストベンチの流用が可能になる。
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
すなわち、基本になる回路モデルに対して新たに開発する回路の等価性の検証に当該基本になる回路モデルのためのテストベンチを流用することが可能になる。
1.実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
〔1〕本発明の一つの具体的な形態に係る等価性検証方法は、所定の言語で回路が記述された手本モデルと前記手本モデルのためのテストベクタ生成モデルとを用いて検証対象モデルの等価性を検証する方法であり、それぞれコンピュータ装置で実行する処理として第1処理乃至第5処理を含む。第1処理は、サイクル精度で前記手本モデルが前記手本モデル用テストベクタ生成モデルとの間で信号の入出力を行う処理である。第2処理は、前記手本モデルと同じタイミングで前記手本モデル用テストベクタ生成モデルからの出力を手本モデルの信号毎に入力FIFO群に書き込む制御を行う処理である。第3処理は、前記検証対象モデルと同じ動作タイミングで前記入力FIFO群からデータを読み込んで前記検証対象モデルに出力する処理である。第4処理は、前記手本モデルの出力と前記検証対象モデルの出力とを対応する信号名毎に出力FIFOペア群に書き込む処理である。第5処理は、前記出力FIFOペア群の信号名毎のペア出力に対して一致判判定を行う処理である。
これにより、前記手本モデルとそのテストベンチであるテストベクタ生成モデルとの間の入力及び出力アクセスタイミングサイクルと、前記検証対象モデルと前記テストベクタ生成モデルとの間の入力及び出力アクセスタイミングサイクルとの相違は、入力FIFO群と出力FIFOペア群を用いた第2乃至第4処理によって吸収される。よって、検証対象モデルの等価性評価に手本モデルのテストベンチの流用が可能になる。
〔2〕項1の等価性検証方法において、例えば前記第1処理及び第2処理は、前記入力FIFO群の全ての入力FIFOが第1の入力FIFO閾値(D(port)/2、D(port)×(N-1)/N、D(port)/N、任意指定正数から選ばれた値)で規定される数以上のデータを保持するようになったとき又は入力FIFOの一つでもフルになったとき実行停止され、それ以外の状態で実行される。前記全ての入力FIFOが第1の入力FIFO閾値で規定される数以上のデータを保持するようになったときに第1及び第2処理の実行を停止するから、個々の入力FIFOがランダムに且つ頻繁にフルになる状態を緩和することができ、検証処理効率の向上に資することができる。
〔3〕項1の等価性検証方法において、例えば前記第3処理及び第4処理は、前記入力FIFO群の全ての入力FIFOが所定の数以上のデータを保持するようになるのを待って実行開始される。処理の開始前に、前記手本モデルと前記検証対象モデルとの間の入力及び出力アクセスタイミングサイクルの相違を予め吸収して検証処理の効率化を図るためである。
〔4〕項3の等価性検証方法において、実行開始された前記第3処理及び第4処理は、前記入力FIFO群の全ての入力FIFOが第2の入力FIFO閾値(D(port)/2、D(port)×(N-1)/N、D(port)/N、任意指定正数から選ばれた値)で規定される数以下のデータを保持するようになったとき又は入力FIFOの一つでもエンプティーになったとき実行停止され、それ以外の状態で実行される。個々の入力FIFOがランダムに且つ頻繁にエンプティーになる状態を緩和することができ、検証処理効率の向上に資することができる。
〔5〕項1の等価性検証方法は、コンピュータ装置で実行する処理として、入力FIFOのデータ保持数が所定の数に達する毎にFIFO段数を増加させるサイズアップ処理を更に含む。頻繁に入出力が行われる信号に対応して入力FIFOの段数を動的に増加させることができるから、特定のFIFOがフルに成る可能性を低減することができ、検証処理効率の向上に資することができる。
〔6〕項5の等価性検証方法において前記入力FIFOのデータ保持数が所定の数に達するとは、例えば入力FIFOの書き込みポインタの値に対する読出しポインタの差が第3の入力FIFO閾値(D(port)/2、D(port)×(N-1)/N、D(port)/N、任意指定正数から選ばれた値)以上になることである。入力FIFOに対する書き込みと読出しの動作速度差に応じてサイズアップの可否を制御することができる。
〔7〕項6の等価性検証方法において、例えば前記第3の入力FIFO閾値は、前記サイズアップ処理毎に増加される変数(N)にしたがって増加される数である。一旦サイズアップされた次のサイズアップの可否も適正に制御することが容易になる。
〔8〕項1の等価性検証方法は、コンピュータ装置で実行する処理として、出力FIFOのデータ保持数が所定の数に達する毎にFIFO段数を増加させるサイズアップ処理を更に含む。頻繁に入出力が行われる信号に対応して出力FIFOの段数を動的に増加させることができるから、特定の出力FIFOがフルに成る可能性を低減することができ、検証処理効率の向上に資することができる。
〔9〕項8の等価性検証方法において、例えば前記出力FIFOのデータ保持数が所定の数に達するとは、出力FIFOの書き込みポインタの値に対する読出しポインタの差が出力FIFO閾値(D(port)/2、D(port)×(N-1)/N、D(port)/N、任意指定正数から選ばれた値)以上になることである。出力FIFOに対する書き込みと読出しの動作速度差に応じてサイズアップの可否を制御することができる。
〔10〕項9の等価性検証方法において前記出力FIFO閾値は、例えば前記サイズアップ処理毎に増加される変数(N)にしたがって増加される数である。一旦サイズアップされた次のサイズアップの可否も適正に制御することが容易になる。
〔11〕本発明の別の具体的な形態に係る等価性検証用プログラムは、所定の言語で回路が記述された手本モデルと前記手本モデルのためのテストベクタ生成モデルとを用いて検証対象モデルの等価性を検証する第1乃至第5処理をコンピュータ装置に実行させるプログラムである。前記第1処理は、サイクル精度で前記手本モデルが前記手本モデル用テストベクタ生成モデルとの間で信号の入出力を行う処理である。前記第2処理は、前記手本モデルと同じタイミングで前記手本モデル用テストベクタ生成モデルからの出力を手本モデルの信号毎に入力FIFO群に書き込む制御を行う処理である。前記第3処理は、前記検証対象モデルと同じ動作タイミングで前記入力FIFO群からデータを読み込んで前記検証対象モデルに出力する処理である。前記第4処理は、前記手本モデルの出力と前記検証対象モデルの出力とを対応する信号名毎に出力FIFOペア群に書き込む処理である。前記第5処理は、前記出力FIFOペア群の信号名毎のペア出力に対して一致判判定を行う処理である。
この等価性検証用プログラムをコンピュータ装置で実行することにより、手本モデルのテストベンチを流用して検証対象モデルの等価性評価を容易に行うことが可能になる。
〔12〕項11の等価性検証用プログラムにおいて、例えば前記第1処理及び第2処理は、前記入力FIFO群の全ての入力FIFOが第1の入力FIFO閾値で規定される数以上のデータを保持するようになったとき又は入力FIFOの一つでもフルになったとき実行停止され、それ以外の状態で実行される。
〔13〕項11の等価性検証用プログラムにおいて、例えば前記第3処理及び第4処理は、前記入力FIFO群の全ての入力FIFOが所定の数以上のデータを保持するようになるのを待って実行開始される。
〔14〕項13の等価性検証用プログラムにおいて、例えば実行開始された前記第3処理及び第4処理は、前記入力FIFO群の全ての入力FIFOが第2の入力FIFO閾値で規定される数以下のデータを保持するようになったとき又は入力FIFOの一つでもエンプティーになったとき実行停止され、それ以外の状態で実行される。
〔15〕項11の等価性検証用プログラムは、コンピュータ装置で実行する処理として、例えば入力FIFOのデータ保持数が所定の数に達する毎にFIFO段数を増加させるサイズアップ処理を更に含む。
〔16〕項15の等価性検証用プログラムにおいて、例えば前記入力FIFOのデータ保持数が所定の数に達するとは、入力FIFOの書き込みポインタの値に対する読出しポインタの差が第3の入力FIFO閾値以上になることである。
〔17〕項16の等価性検証用プログラムにおいて、前記第3の入力FIFO閾値は、例えば前記サイズアップ処理毎に増加される変数にしたがって増加される数である。
〔18〕項11の等価性検証用プログラムは、コンピュータ装置で実行する処理として、例えば出力FIFOのデータ保持数が所定の数に達する毎にFIFO段数を増加させるサイズアップ処理を更に含む。
〔19〕項18の等価性検証用プログラムにおいて、前記出力FIFOのデータ保持数が所定の数に達するとは、例えば出力FIFOの書き込みポインタの値に対する読出しポインタの差が出力FIFO閾値以上になることである。
〔20〕項19の等価性検証用プログラムにおいて、前記出力FIFO閾値は、例えば前記サイズアップ処理毎に増加される変数にしたがって増加される数である。
〔21〕本発明の更に別の具体的な形態に係る等価性検証用プログラムの生成方法は、所定の言語で回路が記述された手本モデルと前記手本モデルのためのテストベクタ生成モデルとを用いて検証対象モデルの等価性を検証するための等価性検証用プログラムを生成する方法であって、それぞれコンピュータ装置で実行する処理として、第1乃至第6処理を含む。第1処理は前記手本モデル、前記テストベクタ生成モデル、及びパラメータ設定ファイルをコンピュータ装置に読み込む処理である。第2処理はサイクル精度で前記手本モデルが前記手本モデル用テストベクタ生成モデルから入力するデータを入力FIFO群に書き込む操作を行うための手本モデルテスト入力フェッチモデルを生成する処理である。第3処理は前記検証対象モデルの動作タイミングに従って前記入力FIFO群からデータを読み出して前記検証対象モデルへ出力する操作を行うための検証対象モデルテスト入力出力モデルを生成する処理である。第4処理は前記手本モデルテスト入力フェッチモデル及び検証対象モデルテスト入力出力モデルに基づいて前記入力FIFO群のモデルを生成する処理である。第5処理は前記手本モデルの出力と前記検証対象モデルの出力を対応する信号名毎に入力して保持する出力FIFOペア群を生成する処理である。第6処理は前記出力FIFOペア群の信号名毎の出力ペアの一致判定を行う一致判定モデルを生成する処理である。
この方法を用いることにより、手本モデルのテストベンチを流用して検証対象モデルの等価性評価を行うための等価性検証用プログラムを容易に得ることができるようになる。
2.実施の形態の詳細
実施の形態について更に詳述する。以下、本発明を実施するための形態を図面に基づいて詳細に説明する。なお、発明を実施するための形態を説明するための全図において、同一の機能を有する要素には同一の符号を付して、その繰り返しの説明を省略する。
《既存テストベンチを流用したテスト環境の概要》
図1には本発明のテスト環境生成方法によって生成された仮想的なテスト環境の構成が例示される。同図に示されるテスト環境は、手本モデル1に対してポート間での対応取りが可能な検証対象モデル2を手本モデル用のテストベクタ生成モデル3を用いて機能検証可能とするものである。手本モデル1と検証対象モデル2は、相互に一対一対応されるポート名を有していて、時間若しくはタイミングを無視したとき入力信号系列に対して等価な出力信号系列を得ることができる関係(入出力の等価性)を有することが想定されている。例えば検証対象モデル2は手本モデル1に対して内部処理がパイプライン化されたり、内部動作に対して実行サイクルが付加された関係を有する。手本モデル用のテストベクタ生成モデル3は、手本モデルの機能を検証するためのテストベンチということになり、図1のテスト環境は手本モデルのテストベンチを流用して検証対象モデルを検証可能とする。
テストベンチはEWS(エンジニアリング・ワーク・ステーション)等のコンピュータ装置によって実行可能なプログラムとして構成されている。図1において、手本モデル1、検証対象モデル2、手本モデル用のテストベクタ生成モデル3、手本モデルテスト入力フェッチモデル4、入力FIFO群5、検証対象モデルテスト入力出力モデル6、出力FIFOペア群7、クロック停止制御部8、及び一致判定モデル9のそれぞれは機能的に分割されたプログラムモジュールとして位置付けられる。それぞれはコンピュータ装置によって実行される。
手本モデル1はサイクル精度で手本モデル用テストベクタ生成モデル3との間で信号入出力を行う。手本モデルテスト入力フェッチモデル4は、手本モデル1と同じタイミングで手本モデル用テスト生成ベクタ生成モデル3からの出力をフェッチして入力FIFO群5の対応する信号名(ポート名)のFIFOに書き込む(プッシュ)制御を行う。検証対象モデルテスト入力出力モデル6は検証対象モデル2と同じタイミングで入力FIFO群5から入力データを読み込んで(ポップ)フェッチし、フェッチしたデータを検証対象モデル3に出力する。出力FIFOペア群7は手本モデル1の出力と検証対象モデル2の出力を信号名毎に保持する。出力FIFOペア群7のFIFOは入力の値が変化したときにプッシュされる。クロック停止制御部8は入力FIFO群5がフル又はエンプティーにならないように、テスト環境の各コンポーネントを制御する。一致判定モデル9は出力FIFOペア群7の出力FIFOペアの双方が先頭にポップ可能なデータを持っているとき当該FIFOペアからデータをフェッチしてデータの一致比較を行う。これにより、手本モデル1に対して入出力の等価性を持つ検証対象モデル2を手本モデルのテストベンチを流用して機能検証することが可能になる。出力FIFOペア群7にサイクル情報も併せて格納させれば一致判定モデルにて出力データの不一致を検出した際にシミュレーション結果波形のどの部分を比較すれば良いかが判定可能となり、サイクルのズレを考慮した検証も可能になる。また、サイクル情報を確認する事で、期待したサイクルのズレが発生しているかの確認も可能となる。以下、上記テスト環境の生成方法等について詳述する。
《テスト環境生成処理の概要》
図2にはテスト環境生成処理の概要が示される。ポート間で対応取りが可能な抽象度が異なる2つのモデルである前記手本モデル1と前記検証対象モデル2、並びに前記手本モデル用テストベクタ生成モデル3をプログラム修正装置11に入力とする。例えば手本モデル1はシステムC(SystemC)などのシステムレベル言語で記述されており、検証対象モデル2は、システムレベル言語またはHDL(hardware description language)で記述されているものとする。特に、手本モデル1又は検証対象モデル2がHDLで記述されたモデルである場合、前記HDL記述とサイクルレベルで動作が一致するシステム記述言語で記述された手本モデル1または検証対象モデル2をも入力とする。ここで、検証対象モデル2の前記HDL記述は、手本モデル1に対してプログラムパス上への割り当てサイクルを指定したり、パイプライン化指定を行って動作合成ツールにて合成した結果得られるRTL(register transfer level)記述であっても良い。また、市販動作合成ツールは多くの場合、当該RTLとサイクルレベルで動作が一致するシステム記述言語で記述された検証対象モデルを生成する機能を有しているため、ここでは検証対象モデル2はそれを用いて生成されたものとする。
プログラム修正装置11は、システムレベル言語で記述された手本モデル1から、入力データをフェッチした直後に当該データを入力FIFO群5に書き込む手本モデルテスト入力フェッチモデル4を生成し、システムレベル言語又はHDLで記述された検証対象モデル2への入力データフェッチを前記入力FIFO群から行って当該入力データを検証対象モデル2へ出力する検証対象モデルテスト入力出力モデル6を生成する。
統合装置13は、前記手本モデル1、検証対象モデル2、手本モデル用テストベクタ生成モデル3、手本モデルテスト入力フェッチモデル4、及び検証対象モデルテスト入力出力モデル6、パラメータ設定ファイル12を入力し、それらに基づいて入力FIFO群5、出力FIFOペア群7、及び一致判定モデル9を生成すると共に生成した全てのモデルを統合して、図1で説明した評価環境生成プログラム15を生成する。評価環境生成プログラム15はコンパイルされて実行コードに変換される(16)。コンピュータ装置は実行コードを介して評価環境生成プログラム15を実行し(17)、評価対象モデル2の出力ポート毎にサイクル精度で手本モデル1の出力との一致又は不一致を得ることができる(18)。手本モデル1または検証対象モデル2がHDL記述の場合は、市販シミュレータのコシミュレーション機能を用いるのがよい。したがって、統合装置13における統合とは、コシミュレーション機能を用いて評価可能なように一部のモデルを統合することも意味する。
前記評価環境生成プログラム15が実行されることにより、手本モデルテスト入力フェッチモデル4により手本モデル1が手本モデル用テストベクタ生成モデル3からフェッチした入力データ系列を入力FIFO群5へ転送し、検証対象モデルテスト入力出力モデル6により前記入力FIFO群5から検証対象モデル2が入力データをフェッチするタイミングにてデータフェッチを行い、検証対象モデル2へのデータ入力を行う。手本モデル1及び検証対象モデル2の各出力ポートには出力FIFOペア7が設けられており、前記出力FIFOペア7は手本モデルの対応する出力ポートからの出力値が変化したときのみ値を格納する。出力FIFOペア7の両方のFIFOの先頭にデータが格納されている間、一致判定モデル9は値の比較を実施し、手本モデル1の出力と検証対象モデル2の出力との一致又は不一致、即ち等価性判定を行う。クロック停止制御部8は入力FIFO群5からフル情報、エンプティー情報を取得する事で、入力FIFOI群5でのフル又はエンプティーの状態が起こらないよう各モデルのクロックの制御、即ち、動作停止制御及び動作再開制御を行う。入力FIFO群5や出力FIFOペア7のFIFO初期段数の指定、FIFOの段数変更の態様等はパラメータ設定ファイル12で設定される。それらの指定が無い場合は統合装置13にてデフォルト値に設定されるものとする。
尚、ポートは、手本モデルと検証対象モデルとの間で対応取りが出来る限りにおいて、ピン精度であっても、TL(Transaction Level)ポートであってもよい。
《フロー等価性》
2つの回路や機能ブロック(プロセス)のフロー等価とは、時間を無視した場合に双方のプロセスの各入力ポートに対してに等価な入力データ系列を入力した場合に、時間を無視したとき双方のプロセスの各出力ポートから得られるデータ系列がプロセス間で一致対応することをいう。例えば、夫々のプロセスでの入力ポート群と出力ポート群の入力・出力の順番や実行順までもが時間を無視して2つのプロセスで同じ場合は、夫々に、入力データをフェッチした状態と出力データ値が変化した状態を実行順に基づいて結ぶ事で、状態遷移グラフを構築した場合、これら状態遷移グラフが互いにTime Abstracted Bisimilar(対応日本語訳を記入してください:時間抽象化を伴う双模倣等価)な関係となっている。本願において開示されるテスト環境の全体構成では、入力FIFO群5等のFIFOにおいてフル・エンプティーの制御を行っているが、この操作では各プロセスの出力値が同じタイミングで変化しなくなるだけであり、その値の変化に基づいて等価性判定を行っているため、等価性判定には影響を与えない。この等価性の概念についての詳細は、例えば、文献「Paul Le Guernic, Jean-Pierre Talpin, and Jean-Christophe Le Lann, "POLYCHRONY FOR SYSTEM DESIGN," Journal of Circuits, Systems, and Computers, 12(3), pp.261-304, 2003」に記載がある。
《手本モデルの記述》
手本モデル1の入力記述が例えばサイクル精度で記述されたシステムCによる動作記述であるとき、手本モデル用テストベクタ生成モデル3は当該システムCによる動作記述のテストベンチである。手本モデル1と手本モデル用テストベクタ生成モデル3の両者は接続されてシミュレーション可能である事が前提となる。
《検証対象モデルの記述》
例えば手本モデル1がサイクル精度でシステムCによる動作記述として作成されている場合、動作一致検証において比較対象となる検証対象モデル2は、内部ループをパイプライン化、全体処理をパイプライン化、プログラムのあるポイントからあるポイントまでのプログラムパスに対してサイクル割当て実施を任意に適用して得られる動作記述、又は前記3項目を任意に動作合成にて実施して得られるRTLである。前記検証対象モデル2の動作記述は、市販の動作合成ツールなどを用いる事で、合成結果のRTLのシミュレーションモデルとして出力されるシステムC記述として取得する事も可能である。
《パラメータ設定ファイル》
パラメータ設定ファイル12は入力FIFO群5のFIFO(単に入力FIFOとも称する)に対するパラメータと出力FIFOペア7のFIFO(単に出力FIFOとも称する)に対するパラメータを規定する。
入力FIFO群5のパラメータは、第1に、FIFO段数である。これは、各入力ポートに対応して配置されるFIFOの段数を設定するパラメータである。別途説明する入力FIFO段数決定処理でのFIFO段数計算での乗数としてこのパラメータを用いる。指定なき場合は、デフォルト値として例えば2を採用するものとする。尚、任意に指定可能としても良い。第2に、クロック停止制御部8への通知内容に関する設定である。クロック停止制御部8への通知内容としては、リセット解除後、FIFOの蓄積データ量(FIFOのデータ蓄積段数)がある量に到達するまでFIFOのポップ側の動作クロックを停止するために当該ある量まで到達した事の通知、FIFOの蓄積データ量がある一定量以上になった事の通知、及び、FIFOのデータ蓄積量がある一定量以下になった事の通知がある。設定パラメータをNとし、Nを用いて、後述する入力FIFO闘値設定手段にて上記通知に必要なパラメータを決定する。Nの指定がない場合は、デフォルト値として例えば4を採用するものとする。第3に、FIFOのサイズアップに関する設定である。これは各入力ポートに対応して配置されるFIFOの段数の動的増加に関するパラメータである。パラメータで設定可能な態様は、FIFOへの書き込みポインタの値が例えばFIFOサイズ又はその近傍の値に達した場合に、無条件で倍の段数へ増加、又は「書き込みポインタ−読み出しポインタ≧後述する入力FIFO闘値」の場合に倍の段数に増加の何れかである。特に、後述する入力FIFO闘値を指定しない場合は、前者が選択されるものとする。
出力FIFOペア7のパラメータは、第1に、FIFO段数である。これは、各出力ポートに対応して配置されるFIFOの段数を設定するパラメータである。このパラメータ値に基づいて、別途説明する出力FIFO段数決定処理にて個々のFIFO段数が決定される。指定なき場合は、デフォルト値として例えば8段を採用するものとする。尚、任意に指定可能としても良い。第2に、FIFOのサイズアップに関する設定である。これは、各入力ポートに対応して配置されるFIFOの段数増加に関する設定パラメータである。FIFOへの書き込みポインタの値がFIFOサイズ又はその近傍の値に達した場合に、無条件で倍の段数へ増加、又は「書き込みポインタ−読み出しポインタ≧後述する入力FIFO闘値」の場合に、倍の段数に増加の何れかである。特に、後述する入力FIFO闘値を指定しない場合は、前者が選択されるものとする。
《評価環境生成プログラムの生成フロー全体》
図3には評価環境生成プログラムの生成フローが全体的に例示される。その生成フローはモデル修正処理(S11)、FIFOパラメータ設定及びFIFO記述生成処理(S12)、クロック停止制御部生成処理(S13)、及び全体接続処理(S14)から成る。
モデル修正処理(S11)は、システム記述言語で記述された手本モデル1に基づいて入力データをフェッチした直後に当該データを入力FIFO群に書き込む手本モデルテスト入力フェッチモデル4を生成し、システム記述言語で記述された検証対象モデル2に基づいて入力データのフェッチを前記入力FIFO群5から行って得られた入力データを出力する検証対象モデルテスト入力出力モデル6を生成する処理である。
FIFOパラメータ設定及びFIFO記述生成処理(S12)は、入力FIFO群5及び出力FIFOペア7の、各FIFOのFIFO段数、クロック停止制御部8への信号通知を行うに必要となるFIFO残量の設定、段数増加形態などが設定された、入力FIFO群5および出力FIFOペア7の記述を生成する処理である。
クロック停止制御部生成処理(S13)は、入力FIFO群5からの信号通知を受けて、手本モデル1、手本モデル用テストベクタ生成モデル3、及び手本モデルテスト入力フェッチモデル4からなる前段モジュール群、そして、検証対象モデル2、検証対象モデルテスト入力出力モデル6からなる後段モジュール群へのクロック供給停止やクロック供給再開の制御を行うモジュールの記述を生成する処理である。
全体接続処理(S14)は、モデル修正処理にて得られたモデル、入力FIFO群5、出力FIFOペア7、クロック停止制御部8、手本モデル1、検証対象モデル2、及び一致判定モデル9を接続する処理である。
《モデル修正処理》
モデル修正処理(S11)について詳細を説明する。モデル修正処理(S11)は図4に例示されるように、モジュール名・ポート宣言記述部の修正処理(S111)、動作記述部の修正処理(S112)、及びモジュール名・ポート宣言記述部の後続修正処理(S113)から成る。
先ずモジュール名・ポート宣言記述部の修正処理(S111)について説明する。図5には手本モデル1に対するモジュール名・ポート宣言記述部の修正処理(S111)の詳細が例示される。この処理はヘッダ記述を修正する処理である。すなわち、この修正処理では、手本モデル記述のモジュール名・ポート宣言記述部を入力として、モジュール名、入力ポート宣言及び出力ポート宣言の識別を実施し、モジュール名を変更し、各入力ポート変数を元に各入力ポートに対応する入力FIFOの関数プロトタイプ宣言を定義し、前記新たに定義した入力FIFOの関数プロトタイプ宣言をポート宣言記述部に追加する。識別した出力ポート宣言はシグナル変数宣言へ変更する。識別した入力信号名、出力信号名は入力信号名テーブル、出力信号名テーブルへ夫々格納する。出力信号名テーブルには信号の型も図11の対応テーブルを参照して登録する。得られたモジュール名・ポート宣言記述部のファイル名を“_元のファイル名”とし、入力信号テーブルに格納する。
尚、入力FIFO関数のプロトタイプ宣言は、「void fifo_入力信号名(char rst, char rw_flg, 入力信号の型 wdata, 入力信号の型* rdata);」で与えられているものとする。従って、プロトタイプ宣言追加時には、識別した入力ポートの情報から入力信号名、入力信号の型の情報を取得し、適時置換されているものとする。前記入力FIFO関数の引数、char rst, char rw_flg,入力信号の型 wdata,入力信号の型* rdataの意義は、下記の通り、
char rst; // 0で初期化動作、1で通常動作、
char rw_flg; // 1でFIFOリード、0でFIFOライト、
入力信号の型 wdata; // rw_flgを1に設定するとwdataがFIFOへデータpushされる、
入力信号の型* rdata; // rw_flgを0に設定するとFIFOからデータがpopされrdataに値反映される、となる。
図6には検証対象モデル2に対するモジュール名・ポート宣言記述部の修正処理(S111)の詳細が例示される。この修正処理では、検証対象モデル記述のモジュール名・ポート宣言記述部を入力として、入力ポート宣言及び関数プロトタイプ宣言を識別し、関数プロトタイプ宣言を元に新たな関数を定義し、各入力ポート変数を元に新たな出力ポート変数を定義し、前記新たに定義した出力ポート変数宣言及び関数プロトタイプ宣言を修正済みの手本モデルのモジュール名ポート宣言記述部(“_元のファイル名”)に追加する。メンバローカル変数宣言がある場合は、それらを識別し、メンバローカル変数テーブルへ格納を行い、各ローカル変数の変数名を“_ローカル変数名”とした変数宣言の追加を行う。
図7には手本モデル1のモジュール名・ポート記述部を図5の手順で変換した結果が例示される。アンダーライン部分が変換によって追加された記述部分である。
図8には検証対象モデル2のモジュール名・ポート記述部と図6の手順で変換した結果が例示される。図8のアンダーライン部分が図7の変換結果に対して埋め込まれた記述部分である。
次に動作記述の修正処理(S112)について説明する。図9は動作記述を修正するための手本モデル及び機能検証モデルの双方に対する共通処理が概念的に示される。先ず、各々コントロールフローグラフ(CFG)へと展開し、図示のように、if(条件式)-else if(条件式)分岐構造をif(条件式)-else{if(条件式)}分岐構造へコード上での変換を実施する。
図10には図9に示す変換処理を含め、手本モデルから手本モデルテスト入力フェッチモデルの動作記述への変換を行なう処理のフローチャートが示される。入力信号名テーブルより入力信号変数名と型の情報を読み出し、各入力信号に対して、“tmp_入力信号名”なる同一型または次項の対応に基づいて定めた型のローカル変数宣言記述を動作記述部に挿入する。特に入力信号変数の変数型がsc_uint<T>やsc_int<T>のSystemCデータ型である場合、図11の対応テーブルを用いて、“tmp_入力変数名”として宣言する関数内ローカル変数の型を定めるものとする。この型決定操作は出力FIFOでも同様に行うものとする。
図12には手本モデル1に対する動作記述部の修正処理の具体例が示される。手本モデルの動作記述を読み込み、各入力ポートに対して生成したFIFO関数の初期化記述を、動作記述の初期化記述部に埋め込み、内部動作記述部では、入力ポートから読み込んだ値を、“tmp_入力信号名”の変数へ代入し、当該変数をFIFO関数の引数へ渡す事で、FIFOへの入力信号値のプッシュ動作を実現する記述の埋め込みを実施する。図14には手本モデルの動作記述部と図12の処理による変換結果が例示される。
図13には検証対象モデル2に対する動作記述部の修正処理の具体例が示される。検証対象モデルの動作記述を読み込み、読み込んだ内部動作記述部に対して、“tmp_入力信号名”の変数を引数として各入力ポートに対応して構築したFIFO関数コール記述を埋め込む事で、ポップ動作にてFIFOから読み込んだ値を“tmp_入力信号名”へ代入し、代入された“tmp_入力信号名”を“_入力信号名”へ代入する文を埋め込む事により、検証対象モデルへの入力信号出力を実現する。図15には検証対象モデルの動作記述部と図13の処理による変換結果が例示される。
次に、モジュール名・ポート宣言記述部の後続修正処理(S113)について説明する。この処理は停止制御用の修正処理である。図16にはモジュール名・ポート宣言記述部の後続修正処理(S113)の一例が示される。モジュール名・ポート宣言記述修正(S111)にて生成されたモジュール名・ポート宣言記述、入力信号テーブルを読み込み、各入力信号に対して、bool型の、入力信号名Empty、入力信号名EmptyAlart、入力信号名Full、入力信号名FullAlart、入力信号名Start、なる名称の出力ポート宣言記述を追加し、検証対象モデルテスト入力出力モデルのスレッド登録でのクロック極性記述を反転させる処理を行う。修正後の出力ファイル名は修正前の入力ファイル名と同一とする。図17には図16の修正処理による変換結果が例示される。
《FIFOパラメータ設定及びFIFO記述生成処理》
図18にはFIFOパラメータ設定及びFIFO記述生成処理S12の詳細が例示される。S12の処理は、手本モデルテスト入力フェッチモデル及び検証対象モデルテスト入力出力モデルにより関数コールされる各入力信号に対して構成される入力FIFOのサイズ決定処理(S121)、そのモデル生成処理(S122)、手本モデルや検証対象モデルの各出力信号に対して構成される出力FIFOのサイズ決定処理(S123)、そのモデル生成処理(S124)、及び、手本モデルと検証対象モデルで同一名の出力信号の夫々に接続された2つの出力FIFOからの出力信号フェッチ及び信号値比較を行なって一致不一致判定を行う信号出力一致判定モデル生成処理(S125)からなる。
《入力FIFO群に関するパラメータ設定及び記述生成》
入力FIFOモデルのFIFO段数については以下の基本的な考えを採用する。各入力ポートに対応して配置されるFIFOの段数設定パラメータをNとする。以下に記載する入力FIFO段数決定処理でのFIFO段数計算での乗数としてこのパラメータNを用いる。指定なき場合は、デフォルト値として例えば2を採用するものとする。尚、任意に指定可能としても良い。
FIFO段数決定では、手本モデル1での各入力ポートのアクセス間隔サイクルの最大値OrigInMax(port)と最小値OrigInMin(port)、並びに、検証対象モデルでの各入力ポートのアクセス間隔サイクルの最大値TgtInMas(port)と最小値TgtInMin(port)を取得し、各入力ポートに対応して配置されるFIFOの段数を決定するとき、OrigInMin(port)≧TgtInMin(port)ならば当該入力ポートへの接続するFIFO段数=ceil(OrigInMax(port)/TgtInMin(port))×Nとする。ただし、算出結果が8以下なら、Nの値を結果が8以上となるよう調整するものとする。また、OrigInMin(port)<TgtInMin(port)ならば、当該入力ポートへの接続するFIFO段数=ceil(TgtInMax(port)/OrigInMin(port))×Nとする。ただし、算出結果が8以下なら、Nの値を結果が8以上となるよう調整するものとする。
尚、アクセス間隔サイクルの最大値と最小値の取得では、文献「Yau-Tsun Steven Li and Sharad Malik, "Performance analysis of embedded software using implicit path enumeration," IEEE Trans. on CAD of Integrated Circuits and Systems 16(12), pp.1477-1487, 1997」でのILPによる手法を応用し、文献内でのベーシックブロックの処理時間を、モデルに記載されている実行サイクル数として、対象入力ポート間のプログラム実行サイクルの最大値と最小値を求めることができる。
図19には入力FIFO群を構成するFIFOの段数決定処理フローが例示される。例えば、入力ファイル形式を「FIFO_DEPTH_PARAM = N」とした場合、入力ファイルを読み込み最後の数値を取得し、入力信号名テーブル、手本モデル、及び検証対象モデルを読み込み、前項に記載した処理を実施し、各入力ポートに対応する入力FIFOの初期段数を入力FIFO初期段数テーブルに格納する。
クロック停止制御部8への通知内容に関する設定について説明する。クロック停止制御部への通知内容としては、(1)リセット解除後、FIFOの蓄積データ量がある量まで到達するまでFIFO後段部のクロックを停止するため、ある量まで到達した事の通知、(2)FIFOのデータ蓄積量がある一定量以上になった事の通知、(3)FIFOのデータ蓄積量がある一定量以下になった事の通知、がある。設定パラメータをNとし、Nを用いて、以下に記述する入力FIFO闘値設定処理にて(1)、(2)、(3)の通知を行うための値を決定する。Nの指定がない場合は、デフォルト値として例えば4を採用するものとする。またNとして4以上でかつ、出力ポートに対応するFIFOの中で最小の段数以下の整数のみ指定可能とする。違反した場合は、上記のデフォルト値を採用する。Nの値はFIFO段数が倍の値になる度に、同様に2倍に補正されていくものとする。上記(1)のパラメータは、各入力ポートに対応するFIFOの初期段数をDInit(port)とすると、DInit(port)/2とされる。上記(2)のパラメータは各入力ポートに対応するFIFOの動的な段数増加を考慮した段数をD(port)とすると、D(port)×(N-1)/Nとなる。上記(3)のパラメータはD(port)/Nになる。
尚、クロック停止制御部8への通知方法に関しては、以下の通りとする。リセット解除後に全ての入力FIFOが(1)のパラメータ値以上となったか否かを1bit信号“入力信号名Start”で通知する。各入力FIFOに対して(2)のパラメータ値以上となったか否かを1bit信号“入力信号名Full”で通知する。各入力FIFOに対して(3)のパラメータ値以下となったか否かを1bit信号“入力信号名Empty”で通知する。
入力FIFOの動的なサイズアップについて説明する。各入力ポートに対応して配置される入力FIFOの段数増加に関する設定パラメータは以下の如く設定可能にされる。入力FIFOへの書き込みポインタが当該入力FIFOのサイズもしくはその近傍に達した場合に、無条件で倍のFIFO段数へ増加、又は「書き込みポインタ−読み出しポインタ≧後述する入力FIFO闘値」の場合に、倍のFIFO段数に増加の何れかが指定される。特に、後述する入力FIFO闘値を指定しない場合は、前者が選択されるものとする。後者の入力FIFO闘値として、D(port)/2〔文字列“HALF”〕、D(port)×(N-1)/N〔文字列“FULL”〕、D(port)/N〔文字列“EMPTY” 〕、任意指定正数(ただし、初期FIFO段数以下)を指定可能とする。ここで、D(port)は入力FIFOの段数の動的な増加を考慮した段数を、NはFIFO段数増加毎に倍になる変数を表す。
入力FIFOのサイズアップ指定ファイル形式は、例えば、入力ファイル形式を「FIFO_SIZE_UP = 文字列」とし、文字列として、HALF、FULL、EMPTY、正数値、又は空を指定可能とする。当然であるが文字列FULL、EMPTYは入力FIFOの実際のフル、エンプティーには対応しない。これに対応するのは後述する入力信号名FullAlart、入力信号名EmptyAlartである。
《入力FIFO群に関する動作仕様》
ここで入力FIFOの動作仕様について整理して説明する。1)入力FIFOへのプッシュは手本モデルテスト入力フェッチモデル4で、第1引数char rstが1のFIFO関数コールが行われる度に行われる。2)入力FIFOからのポップ(pop)は検証対象モデルテスト入力出力モデル6で、FIFO関数コールが行われる度に行われる。3)入力FIFOのサイズアップは、入力FIFOに対して最初のポップが行われるまでの期間においては入力FIFOの書き込みポインタが入力FIFOの「段数−1」に到達すると、サイズを倍に増加させる。入力FIFOに対してポップ動作が一旦行われた以降の期間においては、闘値設定なしの場合には入力FIFOの書き込みポインタが入力FIFOの「段数−1」に到達すると、サイズを倍に増加させる、闘値設定ありの場合には「書き込みポインタ−読み出しポインタ≧闘値」の場合に倍の段数に増加させる。4)入力信号名Startは、入力FIFO内のデータ数が、初期設定段数を半分を超えて以降常にアサートされ、半分を超えるまではディアサートとされる。5)入力信号名Fulは、入力FIFO内のデータ蓄積段数が前記D(port)×(N-1)/Nで定めた段数に対応する値以上となったときアサートされ、それ以外はディアサートされる。6)入力信号名FullAlartは入力FIFOがフルとなったときアサートされ、それ以外はディアサートにされる。7)入力信号名Emptyは入力FIFO内のデータ蓄積段数が前記D(port) /Nで定めた段数に対応する値以下となったときアサートされ、それ以外はディアサートとされる。8)入力信号名EmptyAlartは入力FIFOがエンプティーとなったときアサートされ、それ以外はディアサートとされる。
《入力FIFO群に関するFIFO記述生成》
図20には入力FIFOの記述を生成する処理が例示される。入力FIFOの記述を生成するには、先ずFIFOサイズアップ指定ファイルを読み込み、サイズアップの闘値設定なしの場合の雛形記述か、サイズアップの闘値設定ありの場合の雛形記述を読み込み、入力信号テーブル、入力FIFO初期段数テーブルを読み込み、入力信号名毎に、雛形記述内のキーワードを適時置換し、入力信号名毎にファイル名“fifo_入力信号名.cpp”なるファイルを生成する。
例えばサイズアップの闘値設定なしの場合、FIFOサイズアップ指定ファイルが読み込まれ、=以降に何も記載されていないときは以下の処理が行なわれる。先ず、FIFO関数雛形記述、入力信号テーブル、入力FIFO初期段数テーブルが読み込まれ、入力信号名毎に、雛形記述で下記の置換が実施され、fifo_入力信号名.cppファイルが生成される。「_手本モデルのファイル名」は、入力信号テーブルに格納されたファイル名に置換され、「入力信号の型」は入力信号テーブル内の入力信号に対応付けられた型名に置換される。「FIFO段数決定手段で入力された値N」は入力FIFO段数指定ファイルに指定された正数をFIFO段数決定処理で更新した値に置換される。「FIFO段数決定処理で求めた正数値」は入力FIFO初期段数テーブル内の入力信号名に対応付けられた正数に置換される。「入力信号名」は現在対象としている入力信号名に置換される。図21及び図22にはサイズアップの闘値設定なしの場合に生成された入力FIFOの記述が例示される。
サイズアップの闘値設定ありの場合、FIFOサイズアップ指定ファイルが読み込まれ、=以降にHALF、EMPTY、FULL、正数の何れかが記載されているとき以下の処理が行なわれる。先ず、FIFO関数雛形記述、入力信号テーブル、入力FIFO初期段数テーブルが読み込まれ、入力信号名毎に、雛形記述で下記の置換が実施され、fifo_入力信号名.cppファイルが生成される。「_手本モデルのファイル名」は入力信号テーブルに格納されたファイル名に置換される。「入力信号の型」は入力信号テーブル内の入力信号に対応付けられた型名に置換される。「FIFO段数決定処理で入力された値N」は入力FIFO段数指定ファイルに指定された正数をFIFO段数決定処理で更新した値に置換される。「FIFO段数決定処理で求めた正数値」は入力FIFO初期段数テーブル内の入力信号名に対応付けられた正数に置換される。「FIFO段数増加で指定した闘値または闘値変数」は指定がHALFならhalf_thに置換され、指定がEMPTYならempty_thに置換され、指定がFULLならfull_thに置換され、指定が正数なら正数に置換される。「入力信号名」は現在対象としている入力信号名に置換される。図23乃至図25にはサイズアップの闘値設定ありの場合に生成された入力FIFOの記述が例示される。
《出力FIFOペアに関するパラメータ設定及び記述生成》
次に、出力FIFOペア7に関してパラメータ設定及びFIFO記述生成処理を説明する。出力FIFOペア7を構成する出力FIFO段数については以下の基本的な考え方を採用する。各出力ポートに対応して配置される出力FIFOの段数設定パラメータをNとする。このパラメータ値に基づいて、下記に記載する出力FIFO段数決定処理にて個々の出力FIFOの段数決定を実施する。指定なき場合は、デフォルト値として8段を採用するものとする。パラメータNは前記デフォルト値以上の整数値のみ指定可能とする。尚、任意に指定可能としても良い。
出力FIFO段数決定では、手本となるサイクル精度モデルでの各出力ポートのアクセス間隔サイクルの最大値OrigOutMax(port)と最小値OrigOutMin(port)、並ぶに比較対象となる動作モデルでの各出力ポートのアクセス間隔サイクルの最大値TgtOutMas(port)と最小値TgtOutMin(port)を取得し、OrigOutMin(port)≧TgtOutMin(port)のときには、手本モデルの当該出力ポートへの接続するFIFO段数をNとし、比較対象である検証対象モデルの当該出力ポートへの接続する出力FIFO段数をceil(OrigOutMax(port)/TgtOutMin(port))×Nとする。一方、OrigOutMin(port)<TgtOutMin(port)のときには、手本モデルの当該出力ポートへの接続する出力FIFOI段数をceil(TgtOutMax(port)/OrigOutMin(port))×Nとし、比較対象である検証対象モデルの当該出力ポートへ接続する出力FIFO段数をNとする。これによって各出力ポートに対応して配置される出力FIFOの段数が決定される。
尚、アクセス間隔サイクルの最大値と最小値の取得では、文献「Yau-Tsun Steven Li and Sharad Malik, "Performance analysis of embedded software using implicit path enumeration," IEEE Trans. on CAD of Integrated Circuits and Systems 16(12), pp.1477-1487, 1997」でのILPによる手法を応用し、文献内でのベーシックブロックの処理時間を、モデルに記載されている実行サイクル数として、対象出力ポート間のプログラム実行サイクルの最大値と最小値を求めることができる。
図26は出力FIFOペア7を構成する出力FIFO段数を決定する処理フローが示される。例えば、入力ファイル形式をFIFO_DEPTH_PARAM = Nとした場合、入力ファイルを読み込み最後の数値を取得し、出力信号名テーブル、手本モデル1、及び検証対象モデル2を読み込み、前項に記載した処理を実施し、各出力ポートに対応する出力FIFOの初期段数を出力FIFO初期段数テーブルに格納する。
出力FIFOペア7のサイズアップについて説明する。各出力ポートに対応して配置される出力FIFOの段数増加に関するパラメータは以下の如く設定可能にされる。出力FIFOへの書き込みポインタが当該FIFOのサイズ又はその近傍に達した場合に、無条件で倍の段数へ増加する設定、又は「書き込みポインタ−読み出しポインタ≧後述する出力FIFO闘値」の場合に倍の段数に増加する設定のいずれかが選択される。特に、後述する出力FIFO闘値を指定しない場合は、前者が選択されるものとする。
前記出力FIFO閾値として、D(port)/2〔文字列“HALF”〕、D(port)*(N-1)/N〔文字列“FULL”〕、D(port)/N〔文字列“EMPTY”〕、又は任意指定正数(ただし、初期FIFO段数以下)が指定可能にされる。ここで、D(port)は出力FIFOの段数の動的な増加を考慮した段数を、Nは、段数増加毎に倍になる変数を表す。
出力FIFOのサイズアップ指定ファイル形式は例えば、入力ファイル形式を「FIFO_SIZE_UP = 文字列」とし、文字列として、HALF、FULL、EMPTY、正数値、又は空が指定可能とされる。
《出力FIFOペアに関する動作仕様》
ここで出力FIFOペア7の動作仕様について説明する。手本モデル1の出力ポートに接続される出力FIFOペア7の一方の出力FIFO(手本モデル用出力FIFO)については、システムリセット解除後から動作を開始する。最初のサイクルでは接続された出力ポートからの信号を受け取り内部FIFOにデータのプッシュを行い、クロックカウントを内部のクロック値格納FIFOへプッシュする。それ以降は、毎サイクルクロックをカウントアップさせつつ、出力ポートの値が変化したときのみ信号を受け取り内部FIFOにデータのプッシュ(Push)を実施し、クロックカウントを内部のクロック値格納FIFOへプッシュする。内部FIFOがエンプティーの場合、出力信号“Orig出力信号名Empty”を1とし、空でない場合は0とする。外部からの入力信号“Orig出力信号名Read”が1のときのみ、内部FIFOからデータをポップし、出力信号である“Orig出力信号名”を介してデータ出力を行い、内部のクロック値格納FIFOからクロックカウント値をポップし、出力信号である“Orig出力信号名Clk”を介してデータ出力を行う。内部FIFOの書き込みポインタが「FIFO段数−1」に達したとき、設定に基づいて必要なら条件判定を実施した後、段数を倍増する。
検証対象モデルの出力ポートに接続される出力FIFOペア7のもう一方の出力FIFO(検証対象モデル用出力FIFO)については、信号“start”が0から1に変化した後、動作を開始する。最初のサイクルでは接続された出力ポートからの信号を受け取り内部FIFOにデータのプッシュ(Push)を行い、クロックカウントを内部のクロック値格納FIFOへプッシュする。それ以降は、毎サイクルクロックをカウントアップさせつつ、出力ポートの値が変化したときのみ信号を受け取り内部FIFOにデータのプッシュを実施し、クロックカウントを内部のクロック値格納FIFOへプッシュする。内部FIFOがエンプティーの場合、出力信号“Tgt出力信号名Empty”を1とし、空でない場合は0とする。外部からの入力信号“Tgt出力信号名Read”が1のときのみ、内部FIFOからデータをポップし、出力信号である“Tgt出力信号名”を介してデータ出力を行い、内部のクロック値格納FIFOからクロックカウント値をPopし、出力信号である“Tgt出力信号名Clk”を介してデータ出力を行う。内部FIFOの書き込みポインタが「FIFO段数−1」に達したとき、設定に基づいて必要なら条件判定を実施した後、段数を倍増する。
《出力FIFOペアに関するFIFO記述生成》
図27には手本モデル用出力FIFOのヘッダファイル生成処理が示される。この処理では、手本モデル用出力FIFOのヘッダファイル雛形記述と出力信号テーブルが読み込まれ、出力信号名毎に、雛形記述内のキーワードを適時置換し、入力信号名毎にファイル名“OrigFifo出力信号名.h”なるファイルが生成される。図28には手本モデル用出力FIFOのヘッダファイルの雛形記述が例示される。
図29には手本モデル用出力FIFOの動作記述ファイルを生成する処理フローが例示される。この処理では、FIFOサイズアップ指定ファイルが読み込まれ、サイズアップの闘値設定なしの場合又はサイズアップの闘値設定ありの場合の手本モデル用出力FIFOの雛形記述が読み込まれ、出力信号テーブル、出力FIFO初期段数テーブルが読み込まれ、入力信号名毎に、雛形記述内のキーワードが適時置換されて、入力信号名毎にファイル名“OrigFifo出力信号名.cpp”なるファイルが生成される。図30乃至図32には手本モデル用出力FIFOの無条件サイズアップを行う動作記述の雛形記述が例示される。図33乃至図35には手本モデル用出力FIFOの条件付きサイズアップを行う動作記述の雛形記述が例示される。
《検証対象用FIFOペア群に関するFIFO記述生成》
図36には検証対象モデル用出力FIFOのヘッダファイル生成処理が示される。この処理では、検証用モデル用出力FIFOのヘッダファイル雛形記述と出力信号テーブルが読み込まれ、出力信号名毎に、雛形記述内のキーワードが適時置換されて、入力信号名毎にファイル名“TgtFifo出力信号名.h”なるファイルが生成される。図37には検証対象モデル用出力FIFOのヘッダファイルの雛形記述が例示される。
図38には検証対象モデル用出力FIFOの動作記述ファイルを生成する処理フローが例示される。この処理では、FIFOサイズアップ指定ファイルが読み込まれ、サイズアップの闘値設定なしの場合又はサイズアップの闘値設定ありの場合の検証対象モデル用出力FIFOの雛形記述が読み込まれ、出力信号テーブル、出力FIFO初期段数テーブルが読み込まれ、入力信号名毎に、雛形記述内のキーワードが適時置換されて、入力信号名毎にファイル名“TgtFifo出力信号名.cpp”なるファイルが生成される。図39乃至図41には検証対象モデル用出力FIFOの無条件サイズアップを行う動作記述の雛形記述が例示される。図42乃至図44には検証対象モデル用出力FIFOの条件付きサイズアップを行う動作記述の雛形記述が例示される。
《一致判定モデルの生成処理》
出力FIFOペア7の出力信号値に対する一致判定モデル9の動作仕様について説明する。同一の出力信号名を持つ手本モデル用出力FIFOと検証対象モデル用出力FIFOから「Orig出力信号名Empty」と「Tgt出力信号名Empty」の信号を入力として受け、双方が0ならば、「出力信号Orig出力信号名Read」とTgt出力信号名Read」の信号を1にアサートし、そうでなければ、この2つの出力信号を0にディアサートする。また、「Orig出力信号名」と「Tgt出力信号名」の信号を入力として受け、双方の値が一致していたなら、出力信号「Compare出力信号名」を1にアサートし、そうでなければ、この出力信号を0にディアサートする。
図45には出力FIFOペア7の出力信号値の一致判定モデル9のヘッダファイルを生成する処理フローが例示される。この処理では、出力FIFOペア7の出力信号値の一致判定モデル9のヘッダファイル雛形記述と出力信号テーブルが読み込まれ、出力信号名毎に、雛形記述内のキーワードが適時置換されて、入力信号名毎にファイル名 “Comp出力信号名.h”なるファイルが生成される。図46には出力FIFOペア7の出力信号値の一致判定モデル9に関するヘッダファイルの雛形記述が例示される。
図47には出力FIFOペア7の出力信号値一致に係る判定モデル9の動作記述を生成する処理フローが例示される。この処理では、出力FIFOペア7の出力信号値一致に係る判定モデル9の動作モデル雛形記述と出力信号テーブルが読み込まれ、出力信号名毎に、雛形記述内のキーワードが適時置換されて、入力信号名毎にファイル名“Comp出力信号名.cpp”なるファイルが生成される。図48には出力FIFOペア7の出力信号値一致判定モデル9に係る動作記述の雛形記述が例示される。特に、出力ポートが構造体など特殊なデータ型である場合は、出力FIFOペアの出力信号値一致判定モデルのヘッダファイルの雛形記述に、OS(オペレーティング・システム)の適切なオーバーロディ−ング記述を追加し、出力FIFOペアの出力信号値一致判定モデルの動作記述の雛形記述を適時修正すれば、生成アルゴリズムを変更するなく対応可能である。
《クロック停止制御部の生成処理》
図49にはクロック停止制御部8の入力信号と出力信号が示される。クロック停止制御部8の動作仕様は以下の通りである。1)検証対象モデル出力FIFOへのstart信号出力機能を有する。全ての入力信号名Startの論理積の結果を内部Bool変数tmp_startへ代入し、tmp_startを出力信号startへ代入する。即ち、全ての入力FIFOが初期段数に対して闘値以上の回数ポップされた事をstart=1で示す。2)テストベンチ、手本モデル、手本モデルテスト入力フェッチモデルへのクロックPreClkの供給機能を持つ。全ての入力信号名FullAlartの論理和の結果を内部Bool変数full_alartへ代入し、全ての入力信号名Fullの否定の論理和の結果を内部Bool変数fullへ代入し、(ful&&~full_alart||~tmp_start)&&システムクロックをPreClkへ代入し、full&&~full_alart||~tmp_startをsc_out変数write_condへ代入する。即ち、全ての入力FIFOがある闘値以上データを保有しているか、ある入力FIFOがフルの場合クロック停止、それ以外はクロック供給を行う。3)検証対象モデルテスト入力出力モデルへのクロックPostClk供給機能を有する。全ての入力信号名EmptyAlartの論理和の結果を内部Bool変数empty_alartへ代入し、全ての入力信号名Emptyの否定の論理和の結果を内部Bool変数emptyへ代入し、empty&&~empty_alart&&tmp_startを内部Bool変数tmp_read_condへ代入し、tmp_read_cond&&システムクロックをPostClkへ代入する。即ち、全ての入力FIFOがある闘値以下のデータしか保有していないか、ある入力FIFOがエンプティーの場合クロック停止、それ以外はクロック供給を行う。4)検証対象モデルへのクロックPostClk2の供給を行う。tmp_read_condをbool型のsc_out変数read_condを介して1ビットFlip-Flopへ入力し、その出力であるbool型のsc_signal変数read_cond2を用いて、read_cond2&&システムクロックをPostClkへ代入する。即ち、PostClkより1クロック遅れてクロック停止・供給を実施する。
クロック停止制御部8のヘッダファイル生成は以下のようにして行われる。すなわち、出力信号テーブルが読み込まれ、システムクロック、システムリセット、及び各信号名の後ろに、Start、Empty、EmptyAlart、Full、FullAlartを付加したbool型の入力信号を定義し、モジュール名をControl、SC_METHODへ登録する動作スレッドをctrlとし、Flip-Flopを実現するためのSC_CTHREADへ登録する動作スレッドをFFとし、Bool型の出力信号宣言を記述したヘッダファイルControl.hを生成する。ここで、SC_METHODプロセスへのセンシティビティ・リストへは、全ての入力信号、及びシステムクロックが登録される。このように出力信号テーブルから定型的な処理でヘッダファイルの生成が可能であるため、自動生成ができる事は自明であり、その詳細な説明は省略する。クロック停止制御部の動作記述ファイルの生成についても、動作仕様から出力信号テーブルを読み込んで動作記述ファイルControl.cppを自動生成することは自明であるからその詳細な説明は省略する。図50にはクロック停止制御部のヘッダファイル記述が例示される。図51にはクロック停止制御部8の動作記述が例示される。
《全体接続処理》
コンピュータ装置を用いた上述の処理で生成されたモデルと入力モデルを整理すると以下のモジュールが得られることになる。1)手本モデル用テストベクタ生成モデル3としてのテストベンチのモジュール、2)手本モデル1のモジュール、3)検証対象モデル2のモジュール、4)手本モデルテスト入力フェッチモデル4、入力FIFO群5、検証対象モデルテスト入力出力モデル6からなるモジュール、5)出力FIFOペア7を構成する手本モデル出力FIFOのモジュール群、6)出力FIFOペア7を構成する検証対象モデル出力FIFOモジュール群、7)クロック停止制御部8のモジュール、8)出力一致判定モデル9のモジュールである。ここで、クロック停止制御部8のモジュールの接続関係に関しては、既にクロック停止処理の説明部で説明した。基本的には、入力信号名が対応するもの同士、出力信号名が対応するもの同士を接続すればよいが、手本モデル1と検証対象モデル2は同じ出力信号を有するため、そのままでは接続できない。従って、手本モデル1のモジュールと手本モデル出力FIFOのモジュール群と、検証対象モデル2のモジュールと検証対象モデル出力FIFOモジュール群とをそれぞれ別の階層として纏め、トップモジュールを構成し残りのモジュールとの接続を行えばよい。信号名、モジュール名全てが与えられているため、前記に導入した階層を表すモジュールを作成し、その中で信号宣言と含まれモジュールのインスタンス宣言記述を構成してポート接続を実施し、更にトップモジュール内で信号宣言を行い階層で作成したモジュールと残りの各モジュールのインスタンス化を実施し、ポート接続を行えばよい。システムC(SystemC)の書式に従って、信号名、モジュール名、接続関係、階層構造が全て与えられているため全体接続記述の自動生成が可能な事は自明であり、その詳細な説明は省略する。
以上説明した開発環境の生成方法によれば以下の作用効果を得ることができる。
従来の設計手法では、合成結果のRTLやモデルを解析した上で、テストベンチの修正箇所を同定し、テストベンチを人手で修正する事で、合成結果RTLの検証環境を構築していた。多くの候補RTLを生成した場合、それら全てに対して、人手でのテストベンチ修正やテストベンチ構築が必要となり実際には、多数の候補RTLを生成しての最適RTLの決定の実現は困難であった。本発明の上記手法では、テストベンチの流用が自動化されているため、多数の候補RTLを生成しての最適解の探索が可能となる。
動作合成を用いたIP(Intellectual Property)開発での検証環境構築の為の工数を削減することができる。また、動作合成を用いての同一モデルからの多種多様なRTL生成での生成RTLの検証自動化を行うことができる。また、SoC(System on Chip)やマイコンなど全製品での設計効率を向上させることができる。
上記開発環境の生成技術は前記特許文献1乃至3に対して以下の優位性がある。
特許文献1では、信号値遷移の波形順序が一致している場合のみ等価と判断しているため、例えばRTL実装にてデータ依存関係の無いポート信号の発生順を変更して実装した場合、仮にRTL実装がシステムレベル設計言語で記述された回路記述の機能を維持していたとしても不一致であると判断する。本発明ではそのような場合であっても等価と判断可能である。検証対象モデルに対しても同一のテストベンチを用いた等価性判定手法を実現しているからである。
特許文献2では、動作合成ツールの詳細な内部処理結果にアクセスできる事が前提であり、一般にそのような情報に、動作合成開発元以外がアクセスを行う事は極めて困難である。また、内部処理がどのような処理で構成されているかは動作合成ツールの実装に依存しており、特にパイプライン合成などの場合には、その開示技術のみを用いて直接等価性検証を実施できるとは言い難い。本発明の場合には、動作合成への入力記述の検証で用いたテストベンチを変更する事なく、パイプライン合成を含む任意の合成結果記述との等価性検証を、前記テストベンチを用いて行うことができる。
特許文献3では、入力記述、出力結果RTL夫々に対してテストベンチの記述が必要となる。本発明の場合には、動作合成の入力記述の検証を目的として記述したテストベンチを、動作合成結果の出力RTLを変更することなく流用することができる。
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
Portがsc_in/sc_outなどのピン(Pin)レベルではなく、sc_port/sc_exportなどのTLM Portである場合は、TLM Port同士の接続を実施する事とし、RTL記述とSystemC記述の接続を行う場合は、上記に加え、市販Simulatorが必要とするRTLとSystemCのコシミュレーションのための記述を別途準備するものとする。ここで、コシミュレーションのための記述は、市販のシミュレータにより自動生成が可能である。また、コシミュレーションのための記述は、ポート情報さえあれば、ポートに関連する記述以外が一定の書式で与えられるため、雛形記述を準備し、ポート情報を取得し両者を組み合わせる事で、自動生成が可能である。
また、本発明は、システムの一部を置き換えて検証を行う場合への適用が考えられる。例えば図52に例示されるように、置き換え対象モデルの前段に置き換え前のモデルのモデルスライス、入力FIFOペア、置き換え後のモデルの修正モデル、を配置し、後段に、入力FIFOペアと同じ構成のFIFO群、及び後段接続モデルの修正モデルを配置し、クロック停止制御モデルを配置した後、全体接続すれば良い。図では後段・前段モデルが完全に分離されている形式の図が示されているが、そのような制約は不要である。例えば前段モデルへの出力がある場合は、前段モデルへの入力に対して、入力FIFOペアと前段モデルのスライスモデルを接続し、前記入力FIFOペアへ置き換え後のモデルの出力を接続すれば良いからである。尚、クロック停止制御モデルには、必要に応じてユーザがライブラリ登録を行うものとする。図52の例の場合、2つの入力FIFOペアからの信号入力を受けて、夫々へのFIFO増加指示信号の出力と、PreEnable、PostEnable信号の出力を行うモデルとなる。
図1は本発明のテスト環境生成方法によって生成された仮想的なテスト環境の構成を例示する説明図である。 図2はテスト環境生成処理の概要を示すフローチャートである。 図3は評価環境生成プログラムの生成フローを全体的に例示するフローチャートである。 図4はモデル修正処理(S11)の詳細を示すフローチャートである。 図5は手本モデルに対するモジュール名・ポート宣言記述部の修正処理(S111)の詳細を例示するフローチャートである。 図6は検証対象モデルに対するモジュール名・ポート宣言記述部の修正処理(S111)の詳細を例示するフローチャートである。 図7は手本モデルのモジュール名・ポート記述部を図5の手順で変換した結果を例示する説明図である。 図8は検証対象モデルのモジュール名・ポート記述部と図6の手順で変換した結果を例示する説明図である。 図9は動作記述を修正するための手本モデル及び機能検証モデルの双方に対する共通処理を概念的に示す説明図である。 図10は図9に示す変換処理を含め、手本モデルから手本モデルテスト入力フェッチモデルの動作記述への変換を行なう処理を例示するフローチャートである。 関数内ローカル変数の型を定めるときに用いる対応テーブルを例示する説明図である。 図12は手本モデルに対する動作記述部の修正処理の具体例を示すフローチャートである。 図13は検証対象モデルに対する動作記述部の修正処理の具体例を示するフローチャートである。 図14は手本モデルの動作記述部と図12の処理による変換結果を例示する説明図である。 図15は検証対象モデルの動作記述部と図13の処理による変換結果がを例示する説明図である。 図16はモジュール名・ポート宣言記述部の後続修正処理(S113)の一例を示すフローチャートである。 図17は図16の修正処理による変換結果を例示する説明図である。 図18はFIFOパラメータ設定及びFIFO記述生成処理S12の詳細を例示するフローチャートである。 図19は入力FIFO群を構成するFIFOの段数決定処理を例示するフローチャートである。 図20には入力FIFOの記述を生成する処理を例示するフローチャートである。 図21はサイズアップの闘値設定なしの場合に生成された入力FIFOの記述の一部を例示する説明図である。 図22は図21に続く入力FIFOの記述を例示する説明図である。 図23はサイズアップの闘値設定ありの場合に生成された入力FIFOの記述の一部を例示する説明図である。 図24は図23に続く入力FIFOの記述を例示する説明図である。 図25は図24に続く入力FIFOの記述を例示する説明図である。 図26は出力FIFOペア群を構成する出力FIFO段数を決定する処理を例示するフローチャートである。 図27は手本モデル用出力FIFOのヘッダファイル生成処理を例示するフローチャートである。 図28は手本モデル用出力FIFOのヘッダファイルの雛形記述を例示する説明図である。 図29は手本モデル用出力FIFOの動作記述ファイルを生成する処理を例示するフローチャートである。 図30は手本モデル用出力FIFOの無条件サイズアップを行う動作記述の雛形記述が例示される説明図である。 図31は図30に続く雛形記述を例示する説明図である。 図32は図31に続く雛形記述を例示する説明図である。 図33は手本モデル用出力FIFOの条件付きサイズアップを行う動作記述の雛形記述が例示される説明図である。 図34は図33に続く雛形記述を例示する説明図である。 図35は図34に続く雛形記述を例示する説明図である。 図36は検証対象モデル用出力FIFOのヘッダファイル生成処理を例示するフローチャートである。 図37は検証対象モデル用出力FIFOのヘッダファイルの雛形記述を例示する説明図である。 図38は検証対象モデル用出力FIFOの動作記述ファイルを生成する処理が例示されるフローチャートである。 図39は検証対象モデル用出力FIFOの無条件サイズアップを行う動作記述の雛形記述が例示される説明図である。 図40は図39に続く雛形記述を例示する説明図である。 図41は図40に続く雛形記述を例示する説明図である。 図42乃至図44は検証対象モデル用出力FIFOの条件付きサイズアップを行う動作記述の雛形記述が例示される説明図である。 図43は図42に続く雛形記述を例示する説明図である。 図44は図43に続く雛形記述を例示する説明図である。 図45は出力FIFOペアの出力信号値の一致判定モデルのヘッダファイルを生成する処理が例示されるフローチャートである。 図46は出力FIFOペアの出力信号値の一致判定モデルに関するヘッダファイルの雛形記述が例示される説明図である。 図47は出力FIFOペアの出力信号値一致に係る判定モデルの動作記述を生成する処理が例示されるフローチャートである。 図48は出力FIFOペアの出力信号値一致判定モデルに係る動作記述の雛形記述が例示される説明図である。 図49はクロック停止制御部の入力信号と出力信号を示す説明図である。 図50はクロック停止制御部のヘッダファイル記述を例示する説明図である。 図51はクロック停止制御部の動作記述を例示する説明図である。 図52はシステムの一部を置き換えて検証を行う場合に本発明を適用した場合における仮想的なテスト環境の構成を例示する説明図である。
符号の説明
1 手本モデル
2 検証対象モデル
3 手本モデル用のテストベクタ生成モデル
4 手本モデルテスト入力フェッチモデル
5 入力FIFO群
6 検証対象モデルテスト入力出力モデル
7 出力FIFOペア群
8 クロック停止制御部
9 一致判定モデル
11 プログラム修正装置
12 パラメータ設定ファイル
13 全体統合装置
15 評価環境生成プログラム

Claims (21)

  1. 所定の言語で回路が記述された手本モデルと、前記手本モデルのためのテストベクタ生成モデルである手本モデル用テストベクタ生成モデルとを用いて、前記手本モデルを元に生成され且つ前記手本モデルとの間でポートの対応が可能にされた検証対象モデルの等価性を検証する方法であり、それぞれコンピュータ装置で実行する処理として、
    サイクル精度で前記手本モデルが前記手本モデル用テストベクタ生成モデルとの間で信号の入出力を行う第1処理と、
    前記手本モデルと同じタイミングで前記手本モデル用テストベクタ生成モデルからの出力を手本モデルの信号毎に入力FIFO群に書き込む制御を行う第2処理と、
    前記検証対象モデルと同じ動作タイミングで前記入力FIFO群からデータを読み込んで前記検証対象モデルに出力する第3処理と、
    前記手本モデルの出力と前記検証対象モデルの出力とを対応する信号名毎に出力FIFOペア群に書き込む第4処理と、
    前記出力FIFOペア群の信号名毎のペア出力に対して一致判定を行う第5処理と、を含み、
    前記第1処理及び第2処理は、前記入力FIFO群の全ての入力FIFOが第1の入力FIFO閾値で規定される数以上のデータを保持するようになったとき又は入力FIFOの一つでもフルになったとき実行停止され、それ以外の状態で実行される、等価性検証方法。
  2. 前記検証対象モデルは、前記手本モデルとの間で一対一対応されるポート名を有する、請求項1記載の等価性検証方法。
  3. 所定の言語で回路が記述された手本モデルと前記手本モデルのためのテストベクタ生成モデルである手本モデル用テストベクタ生成モデルとを用いて、前記手本モデルを元に生成され且つ前記手本モデルとの間でポートの対応が可能にされた検証対象モデルの等価性を検証する方法であり、それぞれコンピュータ装置で実行する処理として、
    サイクル精度で前記手本モデルが前記手本モデル用テストベクタ生成モデルとの間で信号の入出力を行う第1処理と、
    前記手本モデルと同じタイミングで前記手本モデル用テストベクタ生成モデルからの出力を手本モデルの信号毎に入力FIFO群に書き込む制御を行う第2処理と、
    前記検証対象モデルと同じ動作タイミングで前記入力FIFO群からデータを読み込んで前記検証対象モデルに出力する第3処理と、
    前記手本モデルの出力と前記検証対象モデルの出力とを対応する信号名毎に出力FIFOペア群に書き込む第4処理と、
    前記出力FIFOペア群の信号名毎のペア出力に対して一致判定を行う第5処理と、を含み、
    前記第3処理及び第4処理は、前記入力FIFO群の全ての入力FIFOが所定の数以上のデータを保持するようになるのを待って実行開始される、等価性検証方法。
  4. 実行開始された前記第3処理及び第4処理は、前記入力FIFO群の全ての入力FIFOが第2の入力FIFO閾値で規定される数以下のデータを保持するようになったとき又は入力FIFOの一つでもエンプティーになったとき実行停止され、それ以外の状態で実行される、請求項3記載の等価性検証方法。
  5. 所定の言語で回路が記述された手本モデルと、前記手本モデルのためのテストベクタ生成モデルである手本モデル用テストベクタ生成モデルとを用いて、前記手本モデルを元に生成され且つ前記手本モデルとの間でポートの対応が可能にされた検証対象モデルの等価性を検証する方法であり、それぞれコンピュータ装置で実行する処理として、
    サイクル精度で前記手本モデルが前記手本モデル用テストベクタ生成モデルとの間で信号の入出力を行う第1処理と、
    前記手本モデルと同じタイミングで前記手本モデル用テストベクタ生成モデルからの出力を手本モデルの信号毎に入力FIFO群に書き込む制御を行う第2処理と、
    前記検証対象モデルと同じ動作タイミングで前記入力FIFO群からデータを読み込んで前記検証対象モデルに出力する第3処理と、
    前記手本モデルの出力と前記検証対象モデルの出力とを対応する信号名毎に出力FIFOペア群に書き込む第4処理と、
    前記出力FIFOペア群の信号名毎のペア出力に対して一致判定を行う第5処理と、を含み、
    コンピュータ装置で実行する処理として、入力FIFOのデータ保持数が所定の数に達する毎にFIFO段数を増加させるサイズアップ処理を更に含む、等価性検証方法。
  6. 前記入力FIFOのデータ保持数が所定の数に達するとは、入力FIFOの書き込みポインタの値に対する読出しポインタの差が第3の入力FIFO閾値以上になることである、請求項5記載の等価性検証方法。
  7. 前記第3の入力FIFO閾値は、前記サイズアップ処理毎に増加される変数にしたがって増加される数である、請求項6記載の等価性検証方法。
  8. 所定の言語で回路が記述された手本モデルと、前記手本モデルのためのテストベクタ生成モデルである手本モデル用テストベクタ生成モデルとを用いて、前記手本モデルを元に生成され且つ前記手本モデルとの間でポートの対応が可能にされた検証対象モデルの等価性を検証する方法であり、それぞれコンピュータ装置で実行する処理として、
    サイクル精度で前記手本モデルが前記手本モデル用テストベクタ生成モデルとの間で信号の入出力を行う第1処理と、
    前記手本モデルと同じタイミングで前記手本モデル用テストベクタ生成モデルからの出力を手本モデルの信号毎に入力FIFO群に書き込む制御を行う第2処理と、
    前記検証対象モデルと同じ動作タイミングで前記入力FIFO群からデータを読み込んで前記検証対象モデルに出力する第3処理と、
    前記手本モデルの出力と前記検証対象モデルの出力とを対応する信号名毎に出力FIFOペア群に書き込む第4処理と、
    前記出力FIFOペア群の信号名毎のペア出力に対して一致判定を行う第5処理と、を含み、
    コンピュータ装置で実行する処理として、出力FIFOのデータ保持数が所定の数に達する毎にFIFO段数を増加させるサイズアップ処理を更に含む、等価性検証方法。
  9. 前記出力FIFOのデータ保持数が所定の数に達するとは、出力FIFOの書き込みポインタの値に対する読出しポインタの差が出力FIFO閾値以上になることである、請求項8記載の等価性検証方法。
  10. 前記出力FIFO閾値は、前記サイズアップ処理毎に増加される変数にしたがって増加される数である、請求項9記載の等価性検証方法。
  11. 所定の言語で回路が記述された手本モデルと、前記手本モデルのためのテストベクタ生成モデルである手本モデル用テストベクタ生成モデルとを用いて、前記手本モデルを元に生成され且つ前記手本モデルとの間でポートの対応が可能にされた検証対象モデルの等価性を検証する第1乃至第5処理をコンピュータ装置に実行させるプログラムであり、
    前記第1処理は、サイクル精度で前記手本モデルが前記手本モデル用テストベクタ生成モデルとの間で信号の入出力を行う処理であり、
    前記第2処理は、前記手本モデルと同じタイミングで前記手本モデル用テストベクタ生成モデルからの出力を手本モデルの信号毎に入力FIFO群に書き込む制御を行う処理であり、
    前記第3処理は、前記検証対象モデルと同じ動作タイミングで前記入力FIFO群からデータを読み込んで前記検証対象モデルに出力する処理であり、
    前記第4処理は、前記手本モデルの出力と前記検証対象モデルの出力とを対応する信号名毎に出力FIFOペア群に書き込む処理であり、
    前記第5処理は、前記出力FIFOペア群の信号名毎のペア出力に対して一致判定を行う処理であり、
    前記第1処理及び第2処理は、前記入力FIFO群の全ての入力FIFOが第1の入力FIFO閾値で規定される数以上のデータを保持するようになったとき又は入力FIFOの一つでもフルになったとき実行停止され、それ以外の状態で実行される、等価性検証用プログラム。
  12. 前記検証対象モデルは、前記手本モデルとの間で一対一対応されるポート名を有する、請求項11記載の等価性検証用プログラム。
  13. 所定の言語で回路が記述された手本モデルと、前記手本モデルのためのテストベクタ生成モデルである手本モデル用テストベクタ生成モデルとを用いて、前記手本モデルを元に生成され且つ前記手本モデルとの間でポートの対応が可能にされた検証対象モデルの等価性を検証する第1乃至第5処理をコンピュータ装置に実行させるプログラムであり、
    前記第1処理は、サイクル精度で前記手本モデルが前記手本モデル用テストベクタ生成モデルとの間で信号の入出力を行う処理であり、
    前記第2処理は、前記手本モデルと同じタイミングで前記手本モデル用テストベクタ生成モデルからの出力を手本モデルの信号毎に入力FIFO群に書き込む制御を行う処理であり、
    前記第3処理は、前記検証対象モデルと同じ動作タイミングで前記入力FIFO群からデータを読み込んで前記検証対象モデルに出力する処理であり、
    前記第4処理は、前記手本モデルの出力と前記検証対象モデルの出力とを対応する信号名毎に出力FIFOペア群に書き込む処理であり、
    前記第5処理は、前記出力FIFOペア群の信号名毎のペア出力に対して一致判定を行う処理であり、
    前記第3処理及び第4処理は、前記入力FIFO群の全ての入力FIFOが所定の数以上のデータを保持するようになるのを待って実行開始される、等価性検証用プログラム。
  14. 実行開始された前記第3処理及び第4処理は、前記入力FIFO群の全ての入力FIFOが第2の入力FIFO閾値で規定される数以下のデータを保持するようになったとき又は入力FIFOの一つでもエンプティーになったとき実行停止され、それ以外の状態で実行される、請求項13記載の等価性検証用プログラム。
  15. 所定の言語で回路が記述された手本モデルと、前記手本モデルのためのテストベクタ生成モデルである手本モデル用テストベクタ生成モデルとを用いて、前記手本モデルを元に生成され且つ前記手本モデルとの間でポートの対応が可能にされた検証対象モデルの等価性を検証する第1乃至第5処理をコンピュータ装置に実行させるプログラムであり、
    前記第1処理は、サイクル精度で前記手本モデルが前記手本モデル用テストベクタ生成モデルとの間で信号の入出力を行う処理であり、
    前記第2処理は、前記手本モデルと同じタイミングで前記手本モデル用テストベクタ生成モデルからの出力を手本モデルの信号毎に入力FIFO群に書き込む制御を行う処理であり、
    前記第3処理は、前記検証対象モデルと同じ動作タイミングで前記入力FIFO群からデータを読み込んで前記検証対象モデルに出力する処理であり、
    前記第4処理は、前記手本モデルの出力と前記検証対象モデルの出力とを対応する信号名毎に出力FIFOペア群に書き込む処理であり、
    前記第5処理は、前記出力FIFOペア群の信号名毎のペア出力に対して一致判定を行う処理であり、
    コンピュータ装置で実行する処理として、入力FIFOのデータ保持数が所定の数に達する毎にFIFO段数を増加させるサイズアップ処理を更に含む、等価性検証用プログラム。
  16. 前記入力FIFOのデータ保持数が所定の数に達するとは、入力FIFOの書き込みポインタの値に対する読出しポインタの差が第3の入力FIFO閾値以上になることである、請求項15記載の等価性検証用プログラム。
  17. 前記第3の入力FIFO閾値は、前記サイズアップ処理毎に増加される変数にしたがって増加される数である、請求項16記載の等価性検証用プログラム。
  18. 所定の言語で回路が記述された手本モデルと、前記手本モデルのためのテストベクタ生成モデルである手本モデル用テストベクタ生成モデルとを用いて、前記手本モデルを元に生成され且つ前記手本モデルとの間でポートの対応が可能にされた検証対象モデルの等価性を検証する第1乃至第5処理をコンピュータ装置に実行させるプログラムであり、
    前記第1処理は、サイクル精度で前記手本モデルが前記手本モデル用テストベクタ生成モデルとの間で信号の入出力を行う処理であり、
    前記第2処理は、前記手本モデルと同じタイミングで前記手本モデル用テストベクタ生成モデルからの出力を手本モデルの信号毎に入力FIFO群に書き込む制御を行う処理であり、
    前記第3処理は、前記検証対象モデルと同じ動作タイミングで前記入力FIFO群からデータを読み込んで前記検証対象モデルに出力する処理であり、
    前記第4処理は、前記手本モデルの出力と前記検証対象モデルの出力とを対応する信号名毎に出力FIFOペア群に書き込む処理であり、
    前記第5処理は、前記出力FIFOペア群の信号名毎のペア出力に対して一致判定を行う処理であり、
    コンピュータ装置で実行する処理として、出力FIFOのデータ保持数が所定の数に達する毎にFIFO段数を増加させるサイズアップ処理を更に含む、等価性検証用プログラム。
  19. 前記出力FIFOのデータ保持数が所定の数に達するとは、出力FIFOの書き込みポインタの値に対する読出しポインタの差が出力FIFO閾値以上になることである、請求項18記載の等価性検証用プログラム。
  20. 前記出力FIFO閾値は、前記サイズアップ処理毎に増加される変数にしたがって増加される数である、請求項19記載の等価性検証用プログラム。
  21. 所定の言語で回路が記述された手本モデルと、前記手本モデルのためのテストベクタ生成モデルである手本モデル用テストベクタ生成モデルとを用いて、前記手本モデルを元に生成され且つ前記手本モデルとの間でポートの対応が可能にされた検証対象モデルの等価性を検証するための等価性検証用プログラムを生成する方法であって、それぞれコンピュータ装置で実行する処理として、
    前記手本モデル、前記テストベクタ生成モデル、及びパラメータ設定ファイルをコンピュータ装置に読み込む処理と、
    サイクル精度で前記手本モデルが前記手本モデル用テストベクタ生成モデルから入力するデータを入力FIFO群に書き込む操作を行うための手本モデルテスト入力フェッチモデルを生成する処理と、
    前記検証対象モデルの動作タイミングに従って前記入力FIFO群からデータを読み出して前記検証対象モデルへ出力する操作を行うための検証対象モデルテスト入力出力モデルを生成する処理と、
    前記手本モデルテスト入力フェッチモデル及び検証対象モデルテスト入力出力モデルに基づいて前記入力FIFO群のモデルを生成する処理と、
    前記手本モデルの出力と前記検証対象モデルの出力を対応する信号名毎に入力して保持する出力FIFOペア群を生成する処理と、
    前記出力FIFOペア群の信号名毎の出力ペアの一致判定を行う一致判定モデルを生成する処理と、を含み、
    前記読み込む処理及び前記手本モデルテスト入力フェッチモデルを生成する処理は、前記入力FIFO群の全ての入力FIFOが第1の入力FIFO閾値で規定される数以上のデータを保持するようになったとき又は入力FIFOの一つでもフルになったとき実行停止され、それ以外の状態で実行される、等価性検証用プログラムの生成方法。
JP2008074859A 2008-03-24 2008-03-24 等価性検証方法、等価性検証プログラム及び等価性検証プログラムの生成方法 Active JP5065113B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008074859A JP5065113B2 (ja) 2008-03-24 2008-03-24 等価性検証方法、等価性検証プログラム及び等価性検証プログラムの生成方法
US12/396,309 US8122402B2 (en) 2008-03-24 2009-03-02 Equivalence checking method, equivalence checking program, and generating method for equivalence checking program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008074859A JP5065113B2 (ja) 2008-03-24 2008-03-24 等価性検証方法、等価性検証プログラム及び等価性検証プログラムの生成方法

Publications (2)

Publication Number Publication Date
JP2009230451A JP2009230451A (ja) 2009-10-08
JP5065113B2 true JP5065113B2 (ja) 2012-10-31

Family

ID=41090121

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008074859A Active JP5065113B2 (ja) 2008-03-24 2008-03-24 等価性検証方法、等価性検証プログラム及び等価性検証プログラムの生成方法

Country Status (2)

Country Link
US (1) US8122402B2 (ja)
JP (1) JP5065113B2 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8181134B2 (en) * 2009-10-16 2012-05-15 International Business Machines Corporation Techniques for performing conditional sequential equivalence checking of an integrated circuit logic design
US9531646B1 (en) * 2009-12-07 2016-12-27 Altera Corporation Multi-protocol configurable transceiver including configurable deskew in an integrated circuit
US8402403B2 (en) * 2009-12-17 2013-03-19 International Business Machines Corporation Verifying a register-transfer level design of an execution unit
US8543953B2 (en) * 2012-01-04 2013-09-24 Apple Inc. Automated stimulus steering during simulation of an integrated circuit design
US9069781B2 (en) * 2012-05-24 2015-06-30 Microsoft Technology Licensing, Llc Techniques to automatically manage file descriptors
US9047300B2 (en) 2012-05-24 2015-06-02 Microsoft Technology Licensing, Llc Techniques to manage universal file descriptor models for content files
US20140282390A1 (en) * 2013-03-15 2014-09-18 Nvidia Corporation System, method, and computer program product for creating a compute construct
US9323502B2 (en) 2013-03-15 2016-04-26 Nvidia Corporation System, method, and computer program product for altering a line of code
US10176283B2 (en) * 2015-09-18 2019-01-08 Synopsys, Inc. Equivalence checking of analog models
CN108319534B (zh) * 2018-01-25 2021-04-06 浪潮集团有限公司 一种测试向量生成方法及装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6484135B1 (en) * 1999-08-30 2002-11-19 Hewlett-Packard Company Method for adaptive test generation via feedback from dynamic emulation
JP2002024311A (ja) * 2000-06-30 2002-01-25 Ricoh Co Ltd 集積回路設計装置、集積回路設計システム、集積回路設計方法およびその方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体
JP4099974B2 (ja) 2001-10-30 2008-06-11 日本電気株式会社 動作レベル記述とレジスタ転送レベル記述間の等価性検証方法及び装置並びにプログラム
US7003742B2 (en) * 2002-01-10 2006-02-21 Pdf Solutions, Inc. Methodology for the optimization of testing and diagnosis of analog and mixed signal ICs and embedded cores
JP2004145712A (ja) 2002-10-25 2004-05-20 Matsushita Electric Ind Co Ltd 半導体設計における動作記述の等価性検証方法
JP4476053B2 (ja) * 2004-02-25 2010-06-09 株式会社リコー プログラム及び記憶媒体
JP2005316595A (ja) 2004-04-27 2005-11-10 Fujitsu Ltd 回路記述間の等価性検証方法および回路記述間の等価性検証プログラム
US7340700B2 (en) * 2005-05-27 2008-03-04 Lsi Logic Corporation Method for abstraction of manufacturing test access and control ports to support automated RTL manufacturing test insertion flow for reusable modules
KR101375171B1 (ko) * 2006-12-30 2014-03-18 삼성전자주식회사 시스템 온 칩 모델 검증 방법 및 장치

Also Published As

Publication number Publication date
US20090241074A1 (en) 2009-09-24
JP2009230451A (ja) 2009-10-08
US8122402B2 (en) 2012-02-21

Similar Documents

Publication Publication Date Title
JP5065113B2 (ja) 等価性検証方法、等価性検証プログラム及び等価性検証プログラムの生成方法
Clow et al. A pythonic approach for rapid hardware prototyping and instrumentation
Kaivola et al. Replacing testing with formal verification in intel coretm i7 processor execution engine validation
US20070277130A1 (en) System and method for architecture verification
US7865346B2 (en) Instruction encoding in a hardware simulation accelerator
US8156457B2 (en) Concurrent simulation of hardware designs with behavioral characteristics
TWI468936B (zh) 用於產生驗證程式之系統及方法
SE505783C3 (sv) Foerfarande foer att tillverka en digital signalprocessor
Herdt et al. Efficient cross-level testing for processor verification: A RISC-V case-study
Schmidt et al. A new formal verification approach for hardware-dependent embedded system software
Flake et al. Verilog HDL and its ancestors and descendants
US20040025127A1 (en) Logic verification and logic cone extraction technique
US20080172551A1 (en) Operation verification method for verifying operations of a processor
US7673288B1 (en) Bypassing execution of a software test using a file cache
US10331830B1 (en) Heterogeneous logic gate simulation using SIMD instructions
Kamkin et al. Extensible environment for test program generation for microprocessors
Sakib et al. Formal verification of NCL circuits
Bhagwati et al. Automatic verification of pipelined microprocessors
US11036906B1 (en) Method and apparatus to accelerate verification signoff by selective re-use of integrated coverage models
Janik et al. An overview of altera sdk for opencl: A user perspective
US7447621B1 (en) PLI-less co-simulation of ISS-based verification systems in hardware simulators
US20080300845A1 (en) Monitoring software simulations of hardware systems
JP5387521B2 (ja) 論理検証シナリオ生成装置、及び、論理検証シナリオ生成プログラム
JP6473023B2 (ja) 性能評価モジュール及びこれを組み込んだ半導体集積回路
US8042075B2 (en) Method, system and application for sequential cofactor-based analysis of netlists

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20100527

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110301

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120405

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120419

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120615

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120705

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120711

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120802

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120809

R150 Certificate of patent or registration of utility model

Ref document number: 5065113

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150817

Year of fee payment: 3

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350