JP5001190B2 - Lsi設計検証システム、lsi設計検証方法およびそのプログラム - Google Patents

Lsi設計検証システム、lsi設計検証方法およびそのプログラム Download PDF

Info

Publication number
JP5001190B2
JP5001190B2 JP2008033178A JP2008033178A JP5001190B2 JP 5001190 B2 JP5001190 B2 JP 5001190B2 JP 2008033178 A JP2008033178 A JP 2008033178A JP 2008033178 A JP2008033178 A JP 2008033178A JP 5001190 B2 JP5001190 B2 JP 5001190B2
Authority
JP
Japan
Prior art keywords
input
path
function
lsi design
design verification
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.)
Expired - Fee Related
Application number
JP2008033178A
Other languages
English (en)
Other versions
JP2009193318A (ja
JP2009193318A5 (ja
Inventor
昌宏 藤田
義英 杉浦
Original Assignee
パシフィック・デザイン株式会社
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 パシフィック・デザイン株式会社 filed Critical パシフィック・デザイン株式会社
Priority to JP2008033178A priority Critical patent/JP5001190B2/ja
Priority to PCT/JP2009/052221 priority patent/WO2009101934A1/ja
Publication of JP2009193318A publication Critical patent/JP2009193318A/ja
Publication of JP2009193318A5 publication Critical patent/JP2009193318A5/ja
Application granted granted Critical
Publication of JP5001190B2 publication Critical patent/JP5001190B2/ja
Expired - Fee Related 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

Description

本発明は、LSI(Large Scale Integrated Circuit)設計検証システム、LSIの設計検証方法およびそのプログラムに関し、特にRTL(Resistor Transfer Level:レジスタ・トランスファ・レベル)言語ソースコードデバッグを主眼としたLSI設計検証システム、LSIの設計検証方法およびそのプログラムに関する。
従来、LSIのハードウエア部分を設計する際には、設計すべき仕様を決定し、もってこれをハードウエア化している。例えば、画像の圧縮伸張処理であるJPEGやMPEGやH.264においては、仕様を管理する団体からアルゴリズムが提供されている。管理団体から提供されるアルゴリズムは、通常Cプログラムにて記述されたソフトウエアである。即ち、仕様はソフトウエアにて記述され規定されている。これはリファレンスのCプログラムと称されることが多く、仕様を規定している所からゴールデンCなどと称されることもある。
ここで設計者は、リファレンスのCアルゴリズムを管理団体から入手し、通常はCアルゴリズムを充分理解した上で、これらCアルゴリズムをハードウエア記述言語であるRTL言語(例えば、VerilogあるいはVHDL)にて別途記述してハードウエア設計を行っている。ここでCアルゴリズムは逐次順序処理されるソフトウエア記述であり、RTL言語は並列処理されるハードウエア記述である。従って、両者は同じ機能を述べているのにしても記述される内容は異なる。従って、両者の一致検証が大きな課題となる。
それには、まずレファレンスCプログラムにアプリケーションデータを入力させて出力データを作成する。この入力データをRTL言語記述された設計に入力し、RTL言語シミュレーションを行い出力データを作成してリファレンスのCが作成した出力データと一致するか検証を行っている。このような作業は、リファレンスのCによるテストベンチの作成作業と、作成されたテストベンチによるRTL言語の検証作業と称される。この手法は、RTL言語が正しくコーディングされているかどうかを確認する意味で非常に重要な手法である。しかしながら、Cから作成したテストベンチだけでは、RTL言語シミュレーションによってRTL言語ソースコードの活性化を最大限には図れない課題がある。
即ち、RTL言語上には励起されていない未活性なソースコード領域が残ってしまう為である。これは主として、RTL言語ではCには存在しない並列動作に関する記述が加えられる為に生ずる領域である。現状では、このような未活性なソースコードに対して設計者が自分でRTL言語を活性化する入力パターンを考えるか、乱数発生を利用してRTL言語シミュレーションを行い確立的に活性化させる手法が採られているが、膨大な時間がかかり設計検証期間の増加原因となっている。
従来の方法を改善する手法として、特許文献1では、乱数発生を改良し重み付き乱数発生を設計者が制御しながら適用する方法を述べている。大規模LSIの検証性を高める上で汎用性のある優れた手法を提案しているが、あくまでも乱数発生の範囲内であり、大幅に活性化効率またはソースコードデバッグ効率を改善させるものではない。
非特許文献1は、本発明の発明者の一人が共同出筆した論文であるが、RTL言語のテストデータを生成するという観点から、等価回路としてセレクタ形式の等価回路モデルADD(Assignment Decision Diagram:アサインメント・ディシジョン・ダイアグラム)を使用する手法を述べている。
この手法は、従来の論理合成を考慮したデータ構造を採用しており、RTL言語と論理合成した結果であるネットリストとの比較を採る上では優れた等価回路モデルであるが、内部等価回路に相当するモデルは設計者が分かるものではなく、設計者との会話型を必要とするようなシステムには不十分なデータ構造であると言える。設計者がコーディングしたRTL言語の特定な文を活性化させる為には、会話型の要素が必要となり、設計者がコーディングしたRTL言語ソースコード上でのやり取りを前提としたシステムの構築が望まれる。
米国特許出願公開第2005/0060132号明細書 "Automatic test pattern generation for functional RTL circuits using assignment decision diagrams" Proceedings of the 37th conference on Design Automation, June 2000
本発明が解決しようとする課題は、(1)リファレンスのCを用いて作成したテストベンチを用いてRTL言語シミュレーションを行ったあとに残るRTL言語の未活性ソースコード領域について、乱数発生による従来手法ではなく、RTL言語そのもののプログラム論理構造を理解して自動的に活性化する入力パターンを生成する自動設計検証システムを構築する事である。この際、RTL言語ソースコードに関しては設計者と会話型でインターフェイスを採る事が可能なシステムとしておく事が必要となる。
この目的に沿って、RTL言語上の各文を文節(ノードとも称される)に分解し木構造にて表現する抽象構文木(Abstract Syntax Tree:AST)を導入する。ASTは、RTL言語の動作内容そのものを表現するものではなく、文を分解して表現するものである。RTL言語の動作内容表現には、「等価回路接続グラフ」や「制御データフローグラフ(Control Data Flow Graph:以下CDFG)」や「システム依存グラフ(System Dependence Graph:以下SDG)」が表現形式として用いられる。これら内容表現をASTを介してRTL言語ソースコードに変換表現して設計者と会話するものである。
本発明の主旨はソースコードデバッグであり、従って設計者がコーディングしたソースコードの形式にて会話処理を進めることが重要となってくる。この結果、設計者とのインターフェイスを保ったまま、本発明が解決を図る課題である指定されたソースコードの活性化という探索機能が実現する。
ここでSDGの場合にはC/C++といった逐次処理言語の内部表現形式として発達してきた経緯があり、逐次処理言語であるC/C++と並列記述言語であるRTL言語とでは本質的な違いがある。それはクロックの概念であり、これは並列動作であるRTL言語には存在するが逐次処理のみが保証されるC/C++には存在しない。
その為に、入力または入力変数としてクロックを指定し、この結果クロックが影響を及ぼす文についてレジスタ間の並列動作であることが認識できるので、SDG上においてクロック系の文またはノードについて専用の処理を可能とする。一方、等価回路接続グラフはハードウエアのモデル表現形式として発展してきたのでRTL言語の内容を表現する上で特に問題はない。またCDFGも組合回路部分に適用され、レジスタ回路部分は等価回路として独立に認識される構造を採用するのが一般的であるからハードウエアのモデル表現形式として特に問題はない。広義に言えば、CDFGは等価回路接続グラフの一形式であるとも言える。
(2)このようにして設計者との会話を前提とした活性化のためのデータ形式が確定した上で第2の課題は、対象とする回路規模の削減である。これは活性化したいソースコード部分のみを含む部分回路を抽出し、その部分回路のみを対象とすることにより処理規模の削減を図る処理を施す事である。
この課題を解決するためにパスの概念を導入する。パスとは、入力変数から中間に存在する実行文を経てターゲットとする活性化させたい文に至るRTL言語記述全体の部分集合で、LSIとしての部分回路に相当する。このようなパスは自動抽出する事も可能であるが、設計者が介在してパスを確定させる手法も有効である。設計者が介在する際には前述したASTが効果を発揮する。
(3)パスを確定させた上でターゲットとなる文またはノードを活性化させる入力パターンを生成させる第3の課題には、記号シミュレーションにて対応する。記号シミュレーションは以前から存在する手法であるが、広く実用化された事はない。それは、0/1にて値を確定させた通常のシミュレーションで実用上は充分であるからである。
しかしながら、本課題であるパスの活性化を図る入力パターン生成は、レジスタを介した順序回路におけるパターン探索であり、入力変数を記号化させて保有しシミュレーションを実施する手法が課題を解決する。別の言い方をすれば、順序回路における探索を必要とする状況が今まで強く求められていなかった、と言うことも出来る。
以上、まとめれば、文をノードに分解して保有するAST形式を介した、即ち設計者と対話しやすい、データベース構造を実現し、パスの抽出により対象とする回路削減を実現し、記号シミュレーションにより活性化させたいターゲット文の入力パターン生成を実現することにより課題の解決を図るものである。この結果、活性化させたい文を活性化させるシミュレーション入力パターンが短時間で生成されるので、ソースコードデバッグの大幅な期間短縮を図れる効果がある。即ち、新規なソースコードデバッグ手法の提案により課題の解決を図るものである。
尚、活性化とは、「ある文または文節において、その文または文節における入力変数が変化することにより、文または文節の信号値が初期状態から脱却すること」である。また、「一旦初期状態から脱却した文または文節において、再度その文または文節の入力変数が変化することにより、異なる状態へ遷移すること」も活性化と称する。
上記課題を解決するため、本発明のLSI設計検証システムは、記憶手段と、入出力手段とを備えLSIの設計検証を行うLSI設計検証システムにおいて、RTL言語にて記述された設計内容の検討に際して、前記記憶手段に記憶される入力変数として記号または数値を用いて順次変化させて、RTL言語上のある指定された文または文節を活性化させるための入力パターンを探索する探索手段を備えることを特徴とする。
また、前記RTL言語で記述された文をデータ構造で表現するデータ構造作成手段を備えたことを特徴とする。
さらに、入力手段から入力される入力データを判読して外部からの指示を判定する指示判定手段を有することを特徴とする。
前記探索手段、データ構造作成手段、指示判定手段は、演算処理部によって構成することができる。
また、上記課題を解決するため、本発明のLSI設計検証方法は、LSIの設計の検証を行うLSI設計検証方法において、設計内容を示すRTL言語を読み込んで順序回路データベースを作成するデータベース作成工程と、入力された入力データから活性化したい文または文節の指定を判断する活性化判断工程と、入力された入力データから前記活性化判断工程で判定された活性化したい文または文節を含むパスを確定するパス活性化確定工程と、必要に応じて入力された入力データからレジスタ変数の初期値を設定するレジスタ変数設定工程と、前記パス活性化確定工程で確定したパスに記号シミュレーションを実行して前記確定したパスの活性化を行う活性化実施工程と、前記活性化実施工程で前記確定したパスに活性化させた入力パターンを数値化して出力する入力パターン出力工程とを備えたことを特徴とする。
また、上記課題を解決するため、本発明のLSI設計検証プログラムは、コンピュータに、設計内容を示すRTL言語を読み込んで順序回路データベースを作成するデータベース作成機能と、入力された入力データから活性化したい文または文節の指定を判断する活性化判断機能と、入力された入力データから前記活性化判断機能で判定された活性化したい文または文節を含むパスを確定するパス活性化確定機能と、必要に応じて入力された入力データからレジスタ変数の初期値を設定するレジスタ変数設定機能と、前記パス活性化確定機能で確定したパスに記号シミュレーションを実行して前記確定したパスの活性化を行う活性化実施機能と、前記活性化実施機能で前記確定したパスに活性化させた入力パターンを数値化して出力する入力パターン出力機能とを実現させることを特徴とする。
また、本発明によれば、LSIの設計検証を行うLSI設計検証システムにおいて、少なくとも入力変数を記憶する記憶手段と、RTL言語にて記述されたLSI設計内容の検討に際して、前記記憶手段に記憶された入力変数を用いて、前記RTL言語上のある指定された文または文節を活性化させるための入力パターンを探索する探索手段を備えることを特徴とするLSI設計検証システムが提供される。
探索手段は、RTL言語にて記述されたLSI設計内容の検討に際して、前記記憶手段に記憶された入力変数を用いて、前記RTL言語上のある指定された文または文節を活性化させるための入力パターンを探索する。
ここで、前記探索手段は、前記RTL言語上のある指定された文または文節を含むパスを確定する後方検索機能を備えるように構成してもよい。
また、前記探索手段は、前記入力変数を記号化して保有し、この記号を用いたシミュレーションによって前記確定されたパスを活性化する記号シミュレーション機能を備えるように構成してもよい。
また、前記探索手段は、前記確定されたパスを活性化する入力記号パターンから数値化された入力パターンを生成する入力パターン生成機能を備えるように構成してもよい。
また、前記探索手段は、前記記号シミュレーションの結果によって活性化がカバーされた領域とされなかった領域に対応するRTL言語上の領域を調べ、カバーされなかった領域を活性化が必要な領域として指定するカバレッジ機能を備えるように構成してもよい。
また、更に、前記RTL言語で記述された文をデータ構造で表現するデータ構造作成手段を備えるように構成してもよい。
また、前記データ構造作成手段は、文を文節に分解しその因果関係をデータ構造で表す文節データ構造作成機能と、この文節データ構造作成機能にて文節に分解された前記RTL言語で記述された文を対応する順序回路に変改して順序回路データベースとして表す順序回路データベース作成機能を有するように構成してもよい。
また、前記順序回路データベース作成機能は、前記順序回路を、等価回路接続グラフ表示または制御データフローグラフ表示またはシステム依存グラフ表示またはそれらの組み合わせで表す機能を備えるように構成してもよい。
また、データを入力する入力手段を有し、前記入力手段から入力される入力データを判読して外部からの指示を判定する指示判定手段を有するように構成してもよい。
また、前記指示判定手段は、前記入力データから活性化させたい文あるいは文節または活性化させたい文あるいは文節を含むパスの指定を判定する活性化判断機能を有するように構成してもよい。
また、前記指示判定手段は、前記入力データをレジスタ変数として設定するレジスタ変数設定機能を有し、前記記号シミュレーション機能は前記設定されたレジスタ変数を用いて記号シミュレーションを行うように構成してもよい。
また、前記記憶手段に記憶される内容には、演算処理部で実行されることによって前記記憶手段を除く各手段を構成するプログラム群と、前記演算処理部に入力手段から入力される入力データと入力変数、前記RTL言語にて記述された設計内容、前記演算処理部から入出力される中間データおよび出力される入力パターンが含まれるように構成してもよい。
また、本発明によれば、LSIの設計の検証を行うLSI設計検証方法において、設計内容を示すRTL言語を読み込んで順序回路データベースを作成するデータベース作成工程と、入力された入力データから活性化したい文または文節の指定を判断する活性化判断工程と、入力された入力データから前記活性化判断工程で判定された活性化したい文または文節を含むパスを確定するパス活性化確定工程と、必要に応じて入力された入力データからレジスタ変数の初期値を設定するレジスタ変数設定工程と、前記パス活性化確定工程で確定したパスに記号シミュレーションを実行して前記確定したパスの活性化を行う活性化実施工程と、前記活性化実施工程で前記確定したパスに活性化させた入力パターンを数値化して出力する入力パターン出力工程とを備えたことを特徴とするLSI設計検証方法が提供される。
ここで、前記活性化実施工程の後で、シミュレーションを実行して活性化がカバーされなかった領域に対応するRTL言語上の領域を活性化が必要な領域として指定し前記活性化判断工程に送るカバレッジ工程を更に備えるように構成してもよい。
また、本発明によれば、コンピュータに、記憶手段から設計内容を示すRTL言語を読み込んで順序回路データベースを作成するデータベース作成機能と、入力された入力データから活性化したい文または文節の指定を判断する活性化判断機能と、入力された入力データから前記活性化判断機能で判定された活性化したい文または文節を含むパスを確定するパス活性化確定機能と、必要に応じて入力された入力データからレジスタ変数の初期値を設定するレジスタ変数設定機能と、前記パス活性化確定機能で確定したパスに記号シミュレーションを実行して前記確定したパスの活性化を行う活性化実施機能と、前記活性化実施機能で前記確定したパスに活性化させた入力パターンを数値化して出力する入力パターン出力機能とを実行させることを特徴とするLSI設計検証プログラムが提供される。
コンピュータは、LSI設計検証プログラムを実行することにより、記憶手段から設計内容を示すRTL言語を読み込んで順序回路データベースを作成するデータベース作成機能と、入力された入力データから活性化したい文または文節の指定を判断する活性化判断機能と、入力された入力データから前記活性化判断機能で判定された活性化したい文または文節を含むパスを確定するパス活性化確定機能と、必要に応じて入力された入力データからレジスタ変数の初期値を設定するレジスタ変数設定機能と、前記パス活性化確定機能で確定したパスに記号シミュレーションを実行して前記確定したパスの活性化を行う活性化実施機能と、前記活性化実施機能で前記確定したパスに活性化させた入力パターンを数値化して出力する入力パターン出力機能とを実行する。
本発明に係るLSI設計検証システム、LSI設計検証方法によれば、設計者との対話を容易に実現することができ、RTL言語上の活性化すべき文やパスを指定して確定させ、パス上で記号シミュレーションを実現することができる。これによって、設計検証期間を大幅に短縮できるソースコードデバック手法が得られる。
また、本発明に係るLSI設計検証用のプログラムによれば、コンピュータを用いて、前記LSI検証システム、LSI設計検証方法を実現することが可能になる。
以下、本発明を図面に沿って詳細に説明する。
図1は、本発明のLSI設計検証システムの一実施形態の機能ブロック図である。
本システム10は、演算処理部11と記憶手段12と表示装置13、マウス装置14およびキーボード装置15などからなる入出力手段を含んで構成されている。
本実施の形態は、記憶手段12を装着した演算処理部(プロセッサ)11上で走行するプログラム群から構成される。
尚、表示装置13は出力手段を構成し、又、表示手段13、マウス装置14及びキーボード装置15は入力手段を構成している。
主要なプログラムとしては、(1)RTL言語よりソースコード対応型順序回路データベース作成プログラム、(2)活性化させたい文の指定プログラム、(3)指定された文を含むパスの指定プログラム、(4)必要に応じてレジスタの数値設定プログラム、(5)指定された文を含むパスの活性化プログラム、(6)確定した入力パターンの出力プログラムである。
尚、活性化とは前述したように、「ある文または文節において、その文または文節における入力変数が変化することにより、文または文節の信号値が初期状態から脱却すること」である。また、「一旦初期状態から脱却した文または文節において、再度その文または文節の入力変数が変化することにより、異なる状態へ遷移すること」も活性化と称する。
また加えて、本実施の形態ではこれら主要なプログラムを走行させ設計者とのインターフェイスを採るために、表示装置13と、キーボード装置15と、マウス装置14と、記憶手段12となるファイル装置の各装置が構成要件として追加される。ここで、キーボード装置15やマウス装置14と連動した表示装置13は、RTL言語ソースコード上におけるターゲット文の指定やパスの指定やレジスタ数値の指定において極めて重要な設計者とのインターフェイス装置となる。
演算処理部11は、RTL言語にて記述された設計内容から指定された文や文節を含むパスを活性化させる入力パターンを探索する探索手段111と、探索手段111での探索に役立てるために、RTL言語にて記述された設計内容を読み込んでソースコードと対応可能なデータ構造で表現するデータ構造作成手段112と、入力手段から入力される入力データを判読して外部からの指示を解読して、操作者との対話を実現し、活性化させたい文や文節、および文や文節を含むパスを確定させる指示判定手段113および入出力手段を制御する制御手段114から構成されている。
探索手段111には、RTL言語にて記述された設計内容から指定された文や文節を含むパスを確定する後方探索機能111aと、活性入力変数を記号化して保有して、この記号を用いたシミュレーションによって確定されたパスを活性化する記号シミュレーション機能111bと、記号シミュレーションによって得られた結果である入力記号パターンを数値化されたパターンに変換する入力パターン生成機能111cと、記号シミュレーションの結果によって活性化がカバーされなかった領域を活性化が必要な領域として指定するカバレッジ機能111dが含まれる。
データ構造作成手段112には、文を文節に分解しその因果関係をデータ構造で表す文節データ構造作成機能112aと、この文節データ構造作成機能にて文節に分解された前記RTL言語で記述された文を対応する順序回路に変改して順序回路データベースとして表す順序回路データベース作成機能112bとが含まれる。順序回路データベース作成機能112bは、順序回路を、等価回路接続グラフ表示またはCDFG表示またはSDG表示などの表現形式またはそれらの組み合わせで表す機能を備えている。
指示判定手段113には、前記入力データから活性化させたい文あるいは文節または活性化させたい文あるいは文節を含むパスの指定を判断する活性化判断機能113aを備え、また、入力データを解読してレジスタ変数として設定するレジスタ変数設定機能113bを備えている。設定されたレジスタ変数は記号シミュレーション手段で用いられて、探索を効率化させる。
記憶手段12には、演算処理部11のコンピュータで用いられるプログラム群121、設計内容を表すRTL言語のソースコード122、入力手段から入力される入力データや入力変数の設定値123、演算処理部11での処理中に発生する中間データ124、および最終的に求められて出力される探索結果としての入力パターンである出力データ125などが記憶される。
このうち、プログラム群121としては、設計内容を示すRTL言語のソースコードを読み込んで順序回路データベースを作成する機能を実現するデータベース作成プログラム、入力された入力データから活性化したい文または文節の指定を判断する機能を実現する活性化判断プログラム、入力された入力データから活性化判断機能で判定された活性化したい文または文節を含むパスを確定する機能を実現するパス活性化確定プログラム、必要に応じて入力された入力データからレジスタ変数の初期値を設定する機能を実現するレジスタ変数設定プログラム、パス活性化確定プログラムによって確定したパスに記号シミュレーションを実行して確定したパスの活性化を行う機能を実現する活性化実施プログラムおよび活性化実施プログラムで確定したパスを活性化させる入力パターンを数値化して出力する機能を実現する入力パターン出力プログラムが含まれる。
以下、実際の処理の説明に沿ってこれらの構成の機能を詳細に説明して行く。
図2は、RTL言語ソースコードの記述例を示す。
ここではRTL言語としてVerilogを用いて説明する。入力変数としては、a,bの他にclk(クロック)がある。a,bは各々16ビットデータであるが、aが負である場合にはaを反転させてからaとbを加算し、加算結果を16ビットレジスタsumに格納する動作を記述している。従って、データaはデータのみならず反転するか否かの制御にも関係している。
クロックはalways文を経由してレジスタを動作させている。従って、並列動作であるクロックによるレジスタ動作は容易に識別できる訳で、RTL言語が並列動作記述言語と言われる所以である。本例はRTL言語のなかでもVerilogと称される言語形式である。
図3は、図2をデータ構造作成手段112の文節データ構造作成機能112aによって書き換えた抽象構文木(Abstract Syntax Tree:AST)の一例である。ここで各文は文節(ノード)に分解して保有される。例えば、’int=−a’なる文は’=’と’int’と’−a’なるノードに分解されて保持される。ASTは、構文を解釈するものであり、内容はその次の処理で確定する。従って、ASTでは文の意味は解釈されず、それはその後の処理となる。別の言い方をすれば、RTL言語に限らず文があれば、その文のASTが存在すると言える。
図4は、図2に示したRTL言語記述のブロックダイヤグラム(図4a)とそれに対応する抽象構文木AST(図4b)とを対照して示したものである。
このようにRTL言語はハードウエア記述言語である所から、ブロックダイヤグラムにて表示解釈される事が多い。ここでは等価回路接続グラフの形式にてブロックダイヤグラムが表示されており、図3に示したASTが示されている。このように本実施の形態における等価回路接続グラフを用いれば、ASTを介して設計者とソースコードにて会話することが容易である。
図5は、図4における極性判定回路の等価回路接続グラフ(図5a)と制御データフローグラフ(CDFG)(図5b)の一例を示している。データの流れを制御する部分をセレクタ等価回路で表現するか、小さなプログラムで表現するか程度の違いであり、RTL言語の内部表現上において本質的な差はない。従って、どちらの内部表現もASTを介して設計者との会話が容易に可能である。
図6は、通常示される一般的なRTL言語記述のハードウエア的解釈である順序回路モデルを示したものである。このような順序回路はデータ構造作成手段112の順序回路データベース作成機能112bによって作成される。RTL言語における記述は、レジスタ間の操作を記述している事になる。正確に述べれば、外部入力及びレジスタ出力と外部出力とレジスタ入力間のデータ操作の集合が組合せ回路として記述されている事になる。ここでデータ操作とは、各種の代入や演算を示す。
ここで、図2に記載したRTL言語記述は、信号が伝達する順番に従って入出力とレジスタ間の組み合わせ回路としてモデル化される。即ち、RTL言語は信号の伝達順番などは無視して記載できる言語であるが、動作モデル上は信号伝播を意識して順序だてて並べる必要がある。信号の伝達順番は、wire文の名称やレジスタの名称や入出力の名称から決定される。等価回路接続グラフであれ制御データフロー接続グラフであれ、図6に示す順序回路モデルに当てはめられる。
図7は、図6に対し、図2に示すRTL言語を、データ構造作成手段112の順序回路データベース作成機能112bによってSDG表現で表示したものである。SDGそのものは、C/C++といったプログラミング言語の解析用に開発されてきた経緯があり、プログラムとしての構造を維持したデータ構造となっている。
ここでは、実行文の階層関係を管理する制御依存エッジ(Control Dependence Edge)と、宣言された変数がどこで使用されているかを示す宣言依存エッジ(Declaration Dependence Edge)と、実行されたデータがどこで使用されているかを示すデータ依存エッジ(Data Dependence Edge)の3種類の依存関係が示される。図7では、宣言依存エッジを実線で、宣言依存エッジを点線で、データ依存エッジを太線で示している。
定義すれば、制御依存エッジとは、文の階層関係を示すポインタである。宣言依存エッジとは、宣言された変数がどこで使用されているかを示すポインタである。データ依存エッジとは、あるノードの変数が直前のどこで決定され、直後のどこで参照されているかを示すポインタである。
入力変数としてのclk(クロック)は特別な変数であり、通常逐次処理言語のSDGには存在せず、RTL言語の表現方法としてSDGを採用した際に出現する所の並列動作を制御する宣言依存エッジを形成する。本クロック宣言依存エッジとそれに従属するalways文とreg宣言された変数により、クロック並列動作が解釈される。
本実施の形態におけるSDGの形式は、ASTを介してオリジナルなRTL言語ソースコードに対応しているので、RTL言語ソースコードに復元して設計者とインターフェイスを採る事が容易である。このように、SDG構造はRTL言語をプログラミング言語として捉えているので、設計者とのインターフェイスに適したデータ構造であると言える。RTL言語の記述ではassign文やalways文は信号伝達の順番を意識しないで記述可能であるが、SDGにおいても文は実行順番に順序だてられなければならない。
図8は、データ構造作成手段112の順序回路データベース作成機能112bによって、SDG形式にて順序回路モデルを表現したものである。この結果、図8は並列化された明確なデータ構造モデルであると言える。即ち、組み合わせ回路記述としてのassign文から展開された実行文またはノードノードの集合と、クロックにより制御されるalways文から展開された実行文またはノードノードの集合と、入力変数ノードの集合と、クロック入力変数ノードの集合と、出力変数ノードの集合と、レジスタ変数ノードの集合から構成される。ここでalways文にはレジスタ操作のみならず組み合わせ回路も含まれる可能性がある。
図9は、抽象構文木ASTを介して設計者が2種類のデータベースと会話する様子を示している。このような会話は、指示判定手段113が表示手段13、マウス手段14、キーボード手段15などの入力手段から入力される入力データを解読することによって実現される。
本実施の形態においては、RTL言語記述文がASTを介してSDGまたはCDFGまたは等価回路接続グラフによる内部表現に連結され、これら内部表現は組合回路とレジスタとから構成される順序回路をモデル化しており、結果として設計者は本順序回路モデルとRTLソースコードとの対応が容易にできる形態に構成されて処理が進められる状況を示している。
図10は、本実施の形態を適用するアプリケーションの構造を示している。本実施の形態は、リファレンスのCが存在するアプリケーションに極めて有効である。このようなアプリケーションには、画像の圧縮伸張、オーディオの圧縮伸張、無線のエラー訂正、セキュリティ(暗号と複合)等が挙げられる。これらのアプリケーションでは、リファレンスのCを使ってテストベンチを作成する。例えば、原画像データをリファレンスのCに入力して圧縮した画像データを作成する、といった具合である。
次にリファレンスのCに相当する機能をハードウエア化する。即ちRTL言語で設計する。現在、この作業はほとんどマニュアルである。動作合成(Behavior Synthesis)と称される自動化ツールの開発も進んではいるが、まだユーザに受け入れられるほどには汎用性と最適化が進んでいない現状である。従って、本実施の形態のアプリケーション領域では、自動化よりも検証が重要となってきている。
さて、マニュアルでコーディングされたRTL言語に対して、リファレンスのCにて作成したテストベンチを適用する。RTL言語シミュレータの結果は、リファレンスのCの結果と比較照合して一致不一致を判別し、不一致があった場合にはRTL言語を修正する。このようにして、何種類ものアプリケーションデータを流しても、RTL言語ソースコードはすべて活性化される訳ではない。
この原因は、RTL言語では並列動作をするための制御論理が必要となり、このような並列動作制御論理はCでは必要ないからである。もちろん、リファレンスのCで作成したテストベンチが完備されていなかった、という事もありうる。いずれにせよ、このような場合通常は、設計者は自分で活性化させるためのRTL言語入力パターンを考えるか、もしくは乱数発生を利用してRTL言語入力パターンを生成させている。設計者が考えるにせよ、乱数発生を利用するにせよ、極めて効率の悪い作業であり、設計検証時間長期化の大きな原因となっている。
図11は、本実施の形態を実施する際の適用方法を示している。本実施の形態では、まずRTL言語ソースコード上で活性化が必要な領域を知る事が必要である。これには、図1の探索手段111に含まれるカバレッジ機能111aを使う。
カバレッジには二種類ある。まず、RTL言語シミュレーションを行った結果、動作したソースコード部分をマークして(カバーされたという意味)どこがカバーされたかを示すコードカバレッジ機能であり、通常の市販RTL言語シミュレータにはオプションで装着されている。
もうひとつのカバレッジは機能カバレッジと称されるものであり、別途、特性記述言語(プロパティ記述言語:Property Specification Language)にて記述された機能がRTLシミュレーションでカバーされたかどうかを判定するものである。この場合にも、機能カバレッジにてカバーされなかった領域に対応するRTL言語上の要活性化領域が決定されることになる。
図11に示すように、本実施の形態ではRTL言語シミュレーション結果に対するカバレッジ測定結果から、APIまたはファイル・インターフェイスにて、要活性領域を本実施の形態にインターフェイスする。その後、要活性領域について、これを活性化させる入力パターンを自動探索し生成させる事が本実施の形態の目的である。生成された入力パターンは、再びRTL言語シミュレータに戻されてシミュレーションを行いカバレッジ測定を更新する事になる。これにはファイル・インターフェイスが適している。
ここで、要活性化領域とは活性化が必要な文の集合である。これが存在するという事はソースコードデバッグが、コードカバレッジまたは機能カバレッジにおいて、まだ終了していない事を意味している。例えば、本来「*」(乗算)と記述しなければならない所を「+」(加算)とコーディングしてしまっているといった可能性もある。このようなバグを検出修正するにはソースコードを動作させる必要があり、デバッグ上最も基本的なソースコードデバッグを実施する必要がある。本実施の形態は、一般的な入力パターンではデバッグしきれないようなソースコードに関して、新規なソースコードデバッグ手法を提案していると言える。
図12は、本実施の形態の処理手順を示している。
(1)まず、ステップS101で、RTL言語を読み込んでノードの集合であるASTを経由してソースコードと対応が可能な順序回路データベースを作成する(請求項13に示すデータベース作成工程に相当する。以下同様な内容を工程の表示のみで表す)。これは図1のデータ構造作成手段112に含まれる順序回路データベース作成機能112bによって実現される。この際には、assign文やalways文から展開された各文は実行順番が一意に確定する順番構造を持って作成される。ここで内部データ表現は、SDG、CDF、または等価回路接続グラフ、またはその組み合わせのいずれでも構わない。
(2)次に、ステップS102で、会話型でRTL言語ソースコードを表示して活性化させたい文を設計者が指定する(活性化判断工程)。活性化させたい文は複数集合として指定される場合もある。このような指定は、図1に示した指定判定手段113によって、設計者が入力手段に所定の入力データを設定し、活性化判断機能113aが判断することで実行される。
この会話型の指定のほか、後述するステップS107で、カバレッジ機能111dによっても活性化が必要な部分を判定して自動的に指定を実行させることも可能である。
(3)次に、ステップS103で、ターゲット文を含むパスを確定させる。ここでは、探索手段111の後方探索機能111aによって、ターゲット文からの後方探索によりパスを確定させる事が出来る(活性化確定工程)。加えて、指定判断手段113の活性化判断機能113aを用いて、設計者が会話型で指定しながらパスを確定させる方式もオプションとして備える。その理由は、入力変数からターゲットに至るパスは複数存在する場合が一般的であり、設計者にとってどのパスを活性化させたいのかが設計検証上重要となる場合が多いからである。
会話型でソースコードを指定する場合にはASTが威力を発揮する。パスが設定される事により、対象とする回路規模を大幅に削減させる事が可能となる。ここでは、複数のターゲット文を指定することによりパスを指定する事も可能である。即ち、あるターゲット文を活性化させた上で、その結果をメモリや外部出力にまで伝播させたいような場合においては特定なターゲットを中間で含んだパスの指定が必要だからである。
本システムは、指定されたパスを活性化させる入力パターンを探索し自動生成する。尚、本実施の形態では活性化させたい文を設計者が指定する使用方法を基本としているが、機能的には、要活性な文すべてを自動で指定する事も可能である。この機能を用いれば、図10や図12で示した事前のシミュレーションをかける事なく、いきなりすべてのRTL言語の実行文を活性化対象とする事も可能である。
(4)本実施の形態では、後述する記号シミュレーションを図1に示した探索手段11によって実行させて入力パターンを探索するが、記号シミュレーションは大量のメモリサイズを必要とする場合があり、また生成された入力パターンが時間軸において膨大なクロック数を要求する場合もあり、どちらの場合にも備えてレジスタ変数の値を強制的に設定(初期値として数値設定する)して記号シミュレーションを実行する機能も備えている。
このような場合には、ステップS104で、図1の指示判定手段113のレジスタ変数設定機能113bを用い、会話型でレジスタの値を設計者が設定する(レジスタ変数設定工程)。本機能により膨大なメモリや膨大なシミュレーション時間を必要とする入力パターンの生成を防げる。また、このようにして指定されたレジスタの値に関しては、別途外部入力から活性化可能であるかどうかを本システムを使って確認する必要がある。それは独立した活性化問題として処理される事になる。
(5)次に、ステップS105で、指定されたターゲットを含む指定されたパスを、記号シミュレーションを実行してパスの活性化を行う(活性化実施工程)。
この後、ステップS106で、カバレッジ機能を実行するかどうかを判断し、実行する場合はステップS107でカバーされなかった領域を判定する。ついで、ステップS108で、このカバレッジ機能や会話型の判定によって活性化されていない文やパスが残っているかどうかを判断する。活性化されていない文やパスがある場合には、ステップS102に戻って以降の作業を繰り返す。
活性化されていない文やパスがパス全域に渡って記号シミュレーションが実行され、活性化されていないところがなければ、即ち記号がパス上の全文に行き渡れば終了であり、少なくともターゲットを含むパスを活性化させる入力パターン記号とクロック数が確定した事になる。
(6)最後に、ステップS106で、確定した入力パターン記号を探索手段111の入力パターン生成機能111cによって数値化して出力すれば終了となる(入力パターン出力工程)。
こうして出力されるシミュレーション入力パターンも、通常はRTL言語にて言語形式が規定されているので、含めてRTL言語と称する事が多い。
なお、以上に上げた各工程は、記憶手段12に記憶されるプログラム群121によって、演算処理部11のプロセッサを駆動して実行することができる。それぞれの工程に対応するプログラムは、請求項15に示したデータベース作成プログラム、活性化判断プログラム、パス活性化確定プログラム、レジスタ変数設定プログラム、活性化実施プログラムおよび入力パターン出力プログラムである。
図13は、活性化したい文(ターゲット)とパスのシステム依存グラフ(SDG)を用いた表現を示す図である。見易くするために図13では制御依存エッジは示さず、宣言依存エッジは部分を示し、データ依存エッジのみを示している。
パスとは、入力変数とレジスタ変数からターゲットまでのデータ伝播のルートである。ここでは、入力変数群とレジスタ変数群から中間実行文またはノード1、3を経てターゲットに到達し、中間実行文またはノード4を経て結果を出力変数群に伝播させるルートを示している。そうしたターゲットを活性化させた後に結果を出力変数にまで伝播させる場合である。もちろん、ターゲットを活性化させた結果、レジスタやメモリに結果が格納されればそれで検証上は充分である場合も多い。
いずれにせよ、本実施の形態では活性化された際のシミュレーション結果は設計者が確認することが重要なので、ターゲット活性化の際にはデバッグ上検証しやすい状態にまで結果を導いてやることも重要である。また、通常ターゲット文までのパスやターゲット文を通過した後の伝播ルートを含めて複数のパスが存在する場合も多い。
デバッグ上の検証目的においては複数存在するパスのうち特定のパスを活性化させたい場合が多く、検証システムとしてはターゲット文の指定のみならずパスの指定においても設計者とシステムの対話が必要である場合が多い。本データベースにおけるノード構造を保持したASTは、設計者との対話が容易となる特徴があり、指示判定手段113を用いて会話を実現することができる。
図14は、ターゲット文を含むパスを確定させる後方探索機能111aで実行される後方探索プログラムの自動化処理部分のフローチャートである。ここではパスの確定には後方探索を用いている。即ち、ターゲット文からレジスタ変数を経て入力変数に至るルートを後方探索により確定させる訳である。
まず、ステップS201でターゲット文の指定を行う。そうして、ステップS202でデータ依存エッジを後方探索する。ステップS203で、後方探索中に条件分岐に関する文が出現した場合には、ステップS204でターゲット文への伝達パスが活性化される条件を確定させ登録する。この条件文の活性化条件をどのように活性化させるかは、後に述べる記号シミュレーションを用いて行い、ここではターゲット文へのパス活性化条件のみを確定させておくのである。
つづいて、ステップS205でもはや後方探索する対象物がなくなったかどうかを判定し、なくなった場合は、ステップS210に進んで後方探索を終了する。後方探索が入力変数に到達すれば基本的には後方探索は終了するが、後方探索する対象物があり、レジスタ変数や入力変数に遭遇した場合には、その変数を基点として後方探索を続行する必要がある。したがって、ステップS206でレジスタ変数や入力変数に遭遇したかどうかを調べる。遭遇しなかった場合は、ステップS209に進み、出現した文を登録して、ステップS202に戻り、後方検索を続行する。
レジスタ変数や入力変数に遭遇した場合は、ステップS207でその変数が新規なものかどうかを調べる。新規なものである場合はステップS209に進む。
ここで、既に後方探索にて出現しているレジスタ変数に遭遇した場合には、ステップS208に進み、パスとしては新規なものかどうかを調べ、パスとして新規な場合はステップS209に進む。パスとして新規でない場合は、通常は設計者との対話により後方探索を続行するか否かを決定する。それは、例えばカウンタに遭遇したような場合、カウンタを進めるパスを繰り返すような探索となる可能性があるからである。
まとめれば、新規なレジスタ変数に遭遇した場合は後方探索は続行させなければならないが、既に出現しているレジスタ変数に遭遇した場合においては続行は設計者による決定に委ねることになる。このようにして入力変数にまで到達したならば後方探索は終了であり、その結果、影響を及ぼす入力変数とレジスタ変数と中間の条件文またはノードにおけるターゲットまでの活性化条件が決定していることになる。
図15は、パスを確定させる際の条件分岐における処理をRTL言語ソースコードとSDGを例とした相互の関係を示す図である。パスを確定させる上で、条件分岐のルートを確定させる事は極めて重要である。本実施の形態では、入力変数からターゲット文に至るSDGにおける各依存関係を示すポインタを利用し、後方探索機能111aと記号シミュレーション機能111bとを組み合わせて探索する事によりパスを探索する。
ここで、記号シミュレーションは前方探索である。後方探索は組み合わせ回路部分において、容易に条件分岐における条件を確定させる事が出来る特徴がある。しかし、対象とする回路は順序回路なのでレジスタの状態に依存するから安易に条件を確定させる事はできない。
例えば、図15の例では’int=−a’から’if(a<0)’のルートを活性化させるので、条件である’a<0’が容易に確定されるが、もしaがレジスタの値に依存する場合は’(a<0)’とするまでクロックサイクルを進めなければならない。従って、後方探索により’(a<0)’である組み合わせ回路上の必要条件が確定するが、あるクロックサイクルにおいてその条件を確定させなければならないので、前方探索に相当する記号シミュレーションが必要となってくる。即ち、後方探索と前方探索を組み合わせる事により分岐条件の条件をクロックサイクルも含めて確定させる事になる。
しかも加えて、例えば図15には示されていないより複雑な順序回路を考える。それは、あるクロックサイクルで’(a<0)’として一旦’’(a>0)’としてから再度’(a<0)’としなければ所望のパスが活性化できない、といった場合である。
このような複雑な順序回路性に基づく条件分岐の条件の確定や、探索途上において複数のルートが存在するような場合は、パスの確定においてもメモリと処理時間の爆発を招きかねない。
これを防ぐために、設計者がデバッグしたいパスを有効に指定する機能が必要となる。このパスを指定する際に極めて重要な事項が、条件分岐の条件を指定する事である。指示判定手段113の活性化判断機能113aがこの役割を果たしている。これにより、複雑な順序回路条件における条件分岐や、複数存在するルートそのものを単一に確定させる事ができるからである(条件分岐にて複数のパスが発生する)。ここで述べた処理はCDFGや等価回路接続グラフにおいても可能である。
図16は、パスの確定による回路削減の例を示す図で、中間信号変数(wire文)を除く入力変数とレジスタ変数の集合態を初期値とする場合の説明図である。レジスタ変数群がある場合、シミュレーションを開始する際のレジスタ値(変数a、変数b、変数p、変数q、変数s、変数t)を設定する。ここでは、パスが確定した結果、対象となる回路規模が削減された事をSDG表現を例に採って示している。
パスに出現しなかった入力変数とレジスタ変数は対象回路から外れる。この結果、パスに無関係な実行文またはノードとそのノードや中間信号変数(wire文)も対象から外れる。このようにしてターゲットを活性化させるための準備が整った事になる。後述する記号シミュレーションは膨大なメモリを使用するので、パスを確定させる事による対象回路の削減処理は本実施の形態において極めて重要な処理過程となる。
図17は、パスと中間ノードの関係を示す図である。ここでは、入力変数やレジスタ変数からターゲット文に至るパスと、その中間に出現する条件文を示している。パスが確定した暁には、中間に出現する条件分岐のパス活性化条件は確定している事になる。
図18は、条件分岐モデルとAST構造と条件文の関係を示す図である。ここでは、等価回路接続グラフとSDGにおける条件分岐モデルとASTを介した設計者との会話構造を示している。会話は指示判定手段113を用いて実行される。ASTを介してソースコードレベルにて設計者は会話可能となる。このことはCDFGでも同様である。条件分岐を外部から決定する際に、設計者がオリジナルに記述した内容をもってインターフェイスする必要がある事の例である。
図19は、後方探索機能111aを用いた後方探索によりパスを指定する際のモジュール・ソース・ウィンドウとモジュール階層化ウィンドウのウィンドウ画面イメージを示す図である。ウィンドウとして、RTL言語各モジュールの階層構造を表示するモジュール階層化ウィンドウとモジュールのソースコードを表示するモジュール・ソース・ウィンドウの少なくとも2種類がある。この例では、TopというモジュールがAとBというふたつのモジュールをインスタンスさせる構造を示している。
このようなモジュール間の親子関係はモジュール階層化ウィンドウにて表示される。この例ではグラフィカルなイメージにて表示しているが、親子関係なので左から右に親から子を示すダイアログボックスのイメージにて表示することも可能である。
モジュール・ソース・ウィンドウは、モジュール内部のソースコードを示す。ここではパスを決定するためのソースコード表示なので、指定されたターゲット・ノードに至るデータ依存エッジと、最終段のデータ依存エッジが示す宣言依存エッジと、最終段のデータ依存エッジが示す制御依存エッジの、少なくとも3種類の後方探索ポインタがソースコード・ウィンドウ上でハイライトされて表示される。階層化されている場合には、階層化ウィンドウを介して別のモジュールに後方探索を続行させてパスを確定させる必要がある。
図20は、従来の論理合成によるハードウエア化の流れと、本実施の形態におけるRTL言語ソースコードのデバッグの流れとの違いを示した図である。従来、ハードウエア化の流れでは、冗長を取り除くなどの最適化を施して回路を変形させる処理を行うので設計者にとっては対話不能な形式に変換されておりかつASTの保持という概念が薄かった。本実施の形態では、パスの指定や条件分岐の条件指定などにおいて設計者と対話しながら探索条件する場合にはソースコードとの会話が要求される。ASTを介した順序回路データベース構造は、会話型の機能と探索に適した構造であると言える。
図21は、RTL言語ソースコードとSDGを例に採ったデータ構造と記号シミュレーションの実行結果を示す図である。図2における記述例で、’(a<0)’の条件分岐における記号シミュレーション結果である。初期設定にて入力変数’a’に記号’A’を設定した状態からのシミュレーションである。記号シミュレーションでは、入力変数であるクロックにクロック信号が付加される事によりシミュレーションが進む。図21の例は組み合わせ回路部分なので1クロック内ですべて実行される事になる。記号シミュレーションでは実行時に結果を表示しながら処理を続行させる事が可能であり、設計者はパスの活性化状態を会話型で知る事ができる。記号シミュレーションの実行結果は、ASTを介しているが故にソースコードの形でシミュレーション結果の記号を表示可能となる。
図22は、前方探索記号シミュレーションのプログラム・フローチャートである。記号シミュレーション機能111bによる記号シミュレーションは前方探索である。
ステップS301で、入力変数とレジスタ変数に初期化記号値を設定して前方へ信号を伝達させる。即ち前方探索により信号値を確定させて行く訳であるが、記号シミュレーションなので論理式で信号値を持つ形式に近い。従って、データ量は膨大となる。ここで、必要な探索空間のみに絞るパスの概念が必要とされるのである。
ステップS302で、クロックを進め、ステップS303で、指定されたターゲット文が活性化されたかどうかを判定する。活性化された場合は、ステップS307に進んで終了する。活性化されていない場合は、ステップS304に進んで、記号をデータ依存エッジまたは等価回路接続に沿って更に前方伝播させる。途中のステップS305で、条件文に遭遇したかどうかを判断し、遭遇した場合は、ステップS306に進んで、記号シミュレーションの記号を設定された条件(記号)に合わせ、再びステップS302に戻って、クロックを進める。条件文に遭遇しなかった場合はそのまま、ステップS302に戻って、クロックを進める。
本実施の形態では、ASTを利用して設計者との会話型システムを構築しつつ、パス確定の際には順序回路構造の後方探索のためのポインタ構造を利用し、記号シミュレーションの際には順序回路構造に前方探索のためのポインタ構造を利用する事になる。記号シミュレーションの終了条件は、ターゲット文が活性化されたか、である。しかしながら、通常のシミュレーションのように、シミュレーション時間を指定させる事ももちろん可能である。
ところで、記号シミュレーションが終了すると、その結果得られた入力記号パターンを、最終的に数値化された入力パターンに変換する作業が必要になる。この作業は探索手段111の入力パターン生成機能111cによって実行される。入力パターン生成機能111cは、活性化されたパスの入力記号パターンから少なくとも0または1を含む入力パターンを生成する。
図23は、本実施の形態の出力形態を示す図である。ターゲットが活性化され記号シミュレーションが終了した結果、確定する入力パターンの概要(図23a)と、RTL言語にて記述された入力信号変化記述(図23b)と、相当する外部変数信号のブロックダイヤグラム例(図23c)とを示す。順序回路であるので、クロックとデータに関しての入力パターンとなる。
ここで、例えば内部に32ビットカウンタがあり、このカウンタをフルにしないと活性化されないようなターゲットが指定された場合には約4億回のクロックを送らなければ活性化できない事になる。このような場合には、指示判定手段113のレジスタ変数設定機能113bによって、レジスタ変数の値をあらかじめ設定しておき、記号シミュレーションを実行する事も可能である。このようにして、無策に膨大なクロック数を含む入力パターンの生成を防ぐ事ができる。
また、図12の説明で述べたように、後方探索する際には同一のパスに遭遇している事がシステムには分かるので、指示判定手段113を用いた設計者との対話により無駄な処理を防ぐ機構が構築されている。このような手段は、乱数発生手段により活性化を図ろうとしていた従来の手段とは比べ物にならないほどの効果がある。
図24は、レジスタの中間状態を初期値とする場合の開始方法の説明図である。レジスタ変数群がある場合、シミュレーションを開始する際のレジスタ値(変数a、変数b、変数p、変数q)を、指示判定手段113のレジスタ変数設定機能113bによって設定する。これにより記号シミュレーションを中間状態から開始することができる。図では、レジスタ変数に意味のある値を確定させておいてから記号シミュレーションを実行させる際のSDGを例に取ったデータ伝播構造を示す。即ち、中間状態を初期状態として記号シミュレーションを開始するものである。
図25では、指示判定手段113のレジスタ変数設定機能113bによって、レジスタ変数として意味ある初期値を設定するRTL言語記述例(この場合はVerilog)を示している。このようなレジスタへの数値の設定はRTL言語を用いて容易にできるものであり、本実施の形態でもそのような機能を利用して、余計な処理時間を浪費する事なしに設計検証の効率化を図っている。
図では16ビットレジスタsumの初期値設定宣言をあらわしている。#0は遅延0であり、シミュレーション開始時に設定されることを示している。FFFFは16ビットで全ビットが’1’となっていることを示している。
レジスタ変数に値を設定することにより、記号シミュレーションのデータ量を削減したり、ターゲットを活性化させるまでのサイクル数を削減することができる。
本実施の形態での記号シミュレーションでは、会話型でレジスタ変数の数値設定や記号シミュレーションそのものを行うことが可能であり、設定した数値が妥当なものであるかどうかをその場で確認することができる。
ここでの初期値設定文は、Verilogの文法であり、文中ではシミュレーション入力パターンの一部とみなされる。
以上に述べたように、本実施の形態では、RTL言語の内部データ構造をSDGやCDFGや等価回路接続グラフを用いて表現し、ソースコードはASTを用いて復元可能な構造としたデータベースを採用することにより、設計者との対話を容易にしつつ後方探索と前方探索が可能なデータ構造を確立している。
この結果、RTL言語における文を設計者が指定する事で、これら文を活性化させるパスの確定と記号シミュレーションを実現している。本実施の形態によりコードカバレッジや機能カバレッジにてカバーされなかった要活性領域における文を容易に活性化できることになる。これは、従来は設計者が入力パターンを考えるか、乱数発生により活性化を図ろうとしていた手段に比べ、設計検証期間の短縮を大いに図った新規なソースコードデバッグ手法であると言える。
また、本実施の形態は、リファレンスのCを前提としない一般的なRTL言語設計においても、ソースコードデバッグに有効な新規なシミュレーション入力パターン生成方法を提案している。即ち、一般的なRTL言語設計においても、まず設計者が基本的なシミュレーション入力パターンを考えデバッグした後、コードカバレッジや機能カバレッジを採り、本実施の形態による手法により要活性領域について自動的に入力パターンを生成させてデバッグ期間の短縮が図れる。シミュレーションした結果は、従来通り設計者が正誤を判断しなければならない。しかしながら、入力パターンを設計者が作成しなければならない手間がなくなる効果は、期間短縮に寄与する。
各種のLSI設計検証システム、LSIの設計検証方法およびそのプログラムに利用可能である。
本発明に係るLSI設計検証システムの一実施形体形態の機能ブロック図である。 RTL言語ソースコードの記述例を示す。 図2に示すRTL言語ソースコードをASTによって書き換えた記述例を示す説明図である。 図2の記述に相当する回路のブロックダイヤグラムと対応するAST表示である。 図2の記述の極性判定回路の等価回路接続グラフおよび制御データフローグラフによる表記である。 順序回路モデルのRTL言語のハードウエア的解釈である順序回路モデルを示す図である。 図2のRTL言語記述例のSDG構造による表現である。 図2のRTL言語記述例のSDGによる順序回路も出る表現である。 順序回路モデルとRTLソースコードとの対応が容易に可能となる形態にて処理が進められる状況を示す説明図である。 本発明が有効なアプリケーションの構造を示す説明図である。 本発明を実施する場合の適用の方法を示す説明図である。 本発明を実施する場合の処理手順を示すフローチャートである。 活性化したい文とパスのシステム依存グラフによる表現の例を示す説明図である。 ターゲット文を含むパスを確定させる後方探索プログラムのフローチャートである。 条件分岐でパスを確定させる場合のRTL言語ソースコードとSDGの関係を示す説明図である。 パスが確定した結果、対象となる回路規模が削減された事をSDG表現を例にとって示している説明図である。 入力変数からターゲット文に至るパスと中間条件文節の関係を示す説明図である。 条件分岐モデルとAST構造を介した会話構造を示す説明図である。 パスを指定する際のウィンドウ画面イメージを示す説明図である。 論理合成によるハードウエア化の流れと本発明のデバックの流れの相違を示す説明図である。 データ構造と記号シミュレーションの実行結果を示す説明図である。 記号シミュレーションにおけるフローチャートを示す説明図である。 記号シミュレーションが終了して得られる入力パターンとRTL言語での入力信号の記述と相当するブロックダイヤグラムの例である。 レジスタ変数に値を確定させてから記号シミュレーションを実行する場合のデータの伝播構造を示す説明図である。 レジスタ変数を設定するRTL言語記述例の例である。
符号の説明
10 LSI設計検証システム
11 演算処理部
12 記憶手段
13 表示装置
14 マウス装置
15 キーボード装置
111 探索手段
112 データ構造作成手段
113 指示判定手段
114 制御手段
121 プログラム群
122 RTL言語ソースコード
123 入力データ・入力変数
124 中間データ
125 出力データ

Claims (12)

  1. LSIの設計検証を行うLSI設計検証システムにおいて、
    少なくとも入力変数を記憶する記憶手段と、
    RTL言語にて記述されたLSI設計内容の検討に際して、前記記憶手段に記憶された入力変数を用いて、前記RTL言語上のある指定された文または文節を活性化させるための入力パターンを探索する探索手段を備えて成り、
    前記探索手段は、前記RTL言語上のある指定された文または文節を含むパスを確定する後方検索機能と、前記入力変数を記号化して保有し、この記号を用いたシミュレーションによって前記確定されたパスを活性化する記号シミュレーション機能と、前記確定されたパスを活性化する入力記号パターンから数値化された入力パターンを生成する入力パターン生成機能とを備えることを特徴とするLSI設計検証システム。
  2. 請求項に記載のLSI設計検証システムにおいて、
    前記探索手段は、前記記号シミュレーションの結果によって活性化がカバーされた領域とされなかった領域に対応するRTL言語上の領域を調べ、カバーされなかった領域を活性化が必要な領域として指定するカバレッジ機能を備えることを特徴とするLSI設計検証システム。
  3. 請求項1又は2に記載のLSI設計検証システムにおいて、
    更に、前記RTL言語で記述された文をデータ構造で表現するデータ構造作成手段を備えたことを特徴とするLSI設計検証システム。
  4. 請求項に記載のLSI設計検証システムにおいて、
    前記データ構造作成手段は、文を文節に分解しその因果関係をデータ構造で表す文節データ構造作成機能と、この文節データ構造作成機能にて文節に分解された前記RTL言語で記述された文を対応する順序回路に変改して順序回路データベースとして表す順序回路データベース作成機能を有することを特徴とするLSI設計検証システム。
  5. 請求項に記載のLSI設計検証システムにおいて、
    前記順序回路データベース作成機能は、前記順序回路を、等価回路接続グラフ表示または制御データフローグラフ表示またはシステム依存グラフ表示またはそれらの組み合わせで表す機能を備えることを特徴とするLSI設計検証システム。
  6. 請求項1乃至5のいずれか1項に記載のLSI設計検証システムにおいて、
    データを入力する入力手段を有し、
    前記入力手段から入力される入力データを判読して外部からの指示を判定する指示判定手段を有することを特徴とするLSI設計検証システム。
  7. 請求項に記載のLSI設計検証システムにおいて、
    前記指示判定手段は、前記入力データから活性化させたい文あるいは文節または活性化させたい文あるいは文節を含むパスの指定を判定する活性化判断機能を有することを特徴とするLSI設計検証システム。
  8. 請求項に記載のLSI設計検証システムにおいて、
    前記指示判定手段は、前記入力データをレジスタ変数として設定するレジスタ変数設定機能を有し、前記記号シミュレーション機能は前記設定されたレジスタ変数を用いて記号シミュレーションを行うことを特徴とするLSI設計検証システム。
  9. 請求項1に記載のLSI設計検証システムにおいて、
    前記記憶手段に記憶される内容には、演算処理部で実行されることによって前記記憶手段を除く手段を構成するプログラム群と、前記演算処理部に入力手段から入力される入力データと入力変数、前記RTL言語にて記述された設計内容、前記演算処理部から入出力される中間データおよび出力される入力パターンが含まれることを特徴とするLSI設計検証システム。
  10. LSIの設計の検証を行うLSI設計検証方法において、
    設計内容を示すRTL言語を読み込んで順序回路データベースを作成するデータベース作成工程と、
    入力された入力データから活性化したい文または文節の指定を判断する活性化判断工程と、
    入力された入力データから前記活性化判断工程で判定された活性化したい文または文節を含むパスを確定するパス活性化確定工程と、
    必要に応じて入力された入力データからレジスタ変数の初期値を設定するレジスタ変数設定工程と、
    前記パス活性化確定工程で確定したパスに記号シミュレーションを実行して前記確定したパスの活性化を行う活性化実施工程と、
    前記活性化実施工程で前記確定したパスに活性化させた入力パターンを数値化して出力する入力パターン出力工程とを備えたことを特徴とするLSI設計検証方法。
  11. 請求項10に記載のLSI設計検証方法において、
    前記活性化実施工程の後で、シミュレーションを実行して活性化がカバーされなかった領域に対応するRTL言語上の領域を活性化が必要な領域として指定し前記活性化判断工程に送るカバレッジ工程を更に備えることを特徴とするLSI設計検証方法。
  12. コンピュータに、
    記憶手段から設計内容を示すRTL言語を読み込んで順序回路データベースを作成するデータベース作成機能と、入力された入力データから活性化したい文または文節の指定を判断する活性化判断機能と、入力された入力データから前記活性化判断機能で判定された活性化したい文または文節を含むパスを確定するパス活性化確定機能と、必要に応じて入力された入力データからレジスタ変数の初期値を設定するレジスタ変数設定機能と、前記パス活性化確定機能で確定したパスに記号シミュレーションを実行して前記確定したパスの活性化を行う活性化実施機能と、前記活性化実施機能で前記確定したパスに活性化させた入力パターンを数値化して出力する入力パターン出力機能とを実行させることを特徴とするLSI設計検証プログラム。
JP2008033178A 2008-02-14 2008-02-14 Lsi設計検証システム、lsi設計検証方法およびそのプログラム Expired - Fee Related JP5001190B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008033178A JP5001190B2 (ja) 2008-02-14 2008-02-14 Lsi設計検証システム、lsi設計検証方法およびそのプログラム
PCT/JP2009/052221 WO2009101934A1 (ja) 2008-02-14 2009-02-10 Lsi設計検証システム、lsi設計検証方法およびそのプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008033178A JP5001190B2 (ja) 2008-02-14 2008-02-14 Lsi設計検証システム、lsi設計検証方法およびそのプログラム

Publications (3)

Publication Number Publication Date
JP2009193318A JP2009193318A (ja) 2009-08-27
JP2009193318A5 JP2009193318A5 (ja) 2011-02-10
JP5001190B2 true JP5001190B2 (ja) 2012-08-15

Family

ID=40956966

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008033178A Expired - Fee Related JP5001190B2 (ja) 2008-02-14 2008-02-14 Lsi設計検証システム、lsi設計検証方法およびそのプログラム

Country Status (2)

Country Link
JP (1) JP5001190B2 (ja)
WO (1) WO2009101934A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FI20095885A0 (fi) * 2009-08-27 2009-08-27 Martti Venell Menetelmä integroidun piirin suunnittelun verifioimiseksi verifiointiympäristössä

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05151295A (ja) * 1991-11-26 1993-06-18 Hokuriku Nippon Denki Software Kk テストパタン判定装置および方法
JPH1063537A (ja) * 1996-08-21 1998-03-06 Fujitsu Ltd プロパティ検証方法および装置
US7665067B2 (en) * 2003-09-15 2010-02-16 Cadence Design (Israel) Ii Ltd. Method and system for automatically creating tests
JP2006106865A (ja) * 2004-09-30 2006-04-20 Nec Corp 論理回路設計検証装置および方法、プログラム

Also Published As

Publication number Publication date
JP2009193318A (ja) 2009-08-27
WO2009101934A1 (ja) 2009-08-20

Similar Documents

Publication Publication Date Title
Boulton et al. Experience with embedding hardware description languages in HOL.
Barbacci Instruction set processor specifications (ISPS): The notation and its applications
US8141011B1 (en) Hardware description language code generation from a state diagram
US6289502B1 (en) Model-based software design and validation
WO2012032890A1 (ja) ソースコード変換方法およびソースコード変換プログラム
Wood et al. A model-driven development approach to mapping UML state diagrams to synthesizable VHDL
JP2001142937A (ja) 回路のスケジューリング正当性チェック方法及びスケジュール検証方法
US20030023950A1 (en) Methods and apparatus for deep embedded software development
US5949993A (en) Method for the generation of ISA simulators and assemblers from a machine description
US11314225B2 (en) Systems and methods for evaluating assessments
EP1784749A2 (en) Method and system for designing a structural level description of an electronic circuit
de Sousa et al. Automatic analysis of requirements consistency with the B method
Devarajegowda et al. Meta-model based automation of properties for pre-silicon verification
JP5001190B2 (ja) Lsi設計検証システム、lsi設計検証方法およびそのプログラム
Bensaid et al. Work in progress: Automatic construction of pipeline datapaths from high-level HDL code
Sadasue et al. LLVM-C2RTL: C/C++ Based System Level RTL Design Framework Using LLVM Compiler Infrastructure
JP2006190085A (ja) デジタル回路のモデリング方法及び設計方法
Urdahl et al. Architectural system modeling for correct-by-construction RTL design
Mishchenko et al. New functionalities of the system for processing natural language specifications and its operating environment
Javaheri et al. Synthesis of Regular Expressions Revisited: From PSL SEREs to Hardware
Carvalho et al. Modelling and testing timed data-flow reactive systems in Coq from controlled natural-language requirements
Lovic et al. HDLRuby: A Ruby Extension for Hardware Description and its Translation to Synthesizable Verilog HDL
Sandal et al. Zero-Shot RTL Code Generation with Attention Sink Augmented Large Language Models
Morin-Allory et al. Fast prototyping from assertions: A pragmatic approach
Pierre Auxiliary Variables in Temporal Specifications: Semantic and Practical Analysis for System-Level Requirements

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101216

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20101216

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120313

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120421

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: 20120515

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: 20120517

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20150525

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees