JP3848157B2 - Lsi設計検証装置、lsi設計検証方法、及びlsi設計検証プログラム - Google Patents

Lsi設計検証装置、lsi設計検証方法、及びlsi設計検証プログラム Download PDF

Info

Publication number
JP3848157B2
JP3848157B2 JP2001398319A JP2001398319A JP3848157B2 JP 3848157 B2 JP3848157 B2 JP 3848157B2 JP 2001398319 A JP2001398319 A JP 2001398319A JP 2001398319 A JP2001398319 A JP 2001398319A JP 3848157 B2 JP3848157 B2 JP 3848157B2
Authority
JP
Japan
Prior art keywords
property
signal
module
description
output
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
JP2001398319A
Other languages
English (en)
Other versions
JP2003196342A (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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2001398319A priority Critical patent/JP3848157B2/ja
Priority to EP02028782A priority patent/EP1324232A3/en
Priority to US10/330,572 priority patent/US20030125920A1/en
Publication of JP2003196342A publication Critical patent/JP2003196342A/ja
Application granted granted Critical
Publication of JP3848157B2 publication Critical patent/JP3848157B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Tests Of Electronic Circuits (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、フォーマル・ベリフィケーションの一つである回路記述とプロパティの比較を行うLSI設計検証装置、LSI設計検証方法、及びLSI設計検証プログラムに関するものである。
【0002】
【従来の技術】
半導体集積回路の設計プロセスでは、始めに、設計する集積回路に対して要求する回路動作及び機能を抽象度の高いRTL(レジスタ・トランスファ・レベル)により定義(RTL記述)し、次に、論理合成処理によりRTL記述から半導体製造技術を考慮した抽象度の低いゲートレベルにより定義(ゲートレベル記述)し、最後に、ゲートレベル記述の上方からマスクパターンを作成し、実際の半導体集積回路の製造を行うという段階を経て行われている。
【0003】
しかし、近年における回路の大規模化及び複雑化により、モデルとテストベクタを使用したこれまでの検証手法では、膨大な検証時間が必要となるほか、全てのケースを人間が考え出して検証することは限界に達している。そのため、近年では、フォーマル・ベリフィケーション(形式的論理検証)技術の一つであり、仕様と回路が一致しているかどうかを検証するプロパティチェックにより、回路記述とプロパティ(動作使用をある書式で表現したもの)とを比較する検証方法が導入され始めている。
【0004】
ここでいうフォーマル・ベリフィケーションには、プロパティ・チェックと、論理等価性検証の二つの意味がある。「プロパティ・チェック」とは、設計した論理回路が設計仕様(プロパティ)を満たしているかどうかを検証することを意味する。そして、「論理等価性検証」とは、二つの回路が論理的に等価であるかどうかを検証することを意味する。ただし、論理等価性検証では、二つの回路が等しいかどうかを検証するだけで、設計者が意図したとおりの論理機能が実現できたかどうかはわからない。これを確かめるために、たとえば、シミュレーションやプロパティ・チェックが必要である。
【0005】
【発明が解決しようとする課題】
通常、プロパティ・チェックでは、テストベクタによるシミュレーション検証手法に比べ、網羅的なチェックが行える。しかし、適応出来る回路規模に制約があるため、プロパティをモジュール毎に分割した上で、各モジュール毎にプロパティを検証する必要があり、モジュール間のプロパティ同士を検証することはできない。そのため、モジュール毎のプロパティは完全に独立してしまっており、プロパティ間の相関関係の正当性は検証されない。従って、各モジュール間のインタフェース仕様の最適化に関しては、マルチサイクルパス等において、たとえ仕様的にタイミング余裕があったとしても、シミュレーション波形等から手動で判断するしかない。そのため、各モジュール間のインタフェース仕様の最適化は非常に難しく、迂闊に調整を行うとタイミングがずれてしまい不具合を混入しかねないため、あまり行われていないという問題がある。
【0006】
更に、近年ではランダムなテストベクタを自動生成するシミュレーション環境効率化ツールによって、複雑な条件下で発生する、いわゆるコーナーケースバグを抽出する手法が適用されている。しかし、このシミュレーション環境は検証者が検証対象モジュールのプロパティからマニュアルで構築するため、多くの時間を要し、かつ正確性に乏しい。また、ランダムに生成されるテストベクタは、仕様上入力されないテストベクタを多く含むため、シミュレーション時間が長期化してしまい、検証に多大な時間を要してしまう。
【0007】
更に、シミュレーション時に、HDLソースコードの実行有無を計測して得られるコード活性化率について、非活性コード部分が実現している機能が、仕様上活性化し得るか否かの判断方法が確立されていないため、その非活性コード情報をもとにした冗長記述削除による面積削減が有効になされていない。
【0008】
本発明は上述の如き従来の課題を解決するためになされたもので、その目的は、現在、完全に独立してしまっているモジュール毎のプロパティ同士の相関関係を検証することにより、各モジュール間のインタフェース仕様の最適化を行うことのできるLSI設計検証装置、LSI設計検証方法、及びLSI設計検証プログラムを提供することである。
【0009】
本発明のその他の目的は、外部モジュールのプロパティ情報(回路の動作仕様を専用の書式で表現したもの)から、検証対象モジュールに入力を与えるシミュレーション環境を自動生成し、また、検証対象モジュールのプロパティ情報から、検証対象モジュールの出力を期待値と比較するシミュレーション環境を自動生成し、これらを統合したシミュレーション環境を生成することにより、シミュレーション時間を短縮化したLSI設計検証装置、LSI設計検証方法、及びLSI設計検証プログラムを提供することである。
【0010】
本発明の更に他の目的は、計測して得た非活性化コードと外部モジュールのプロパティ情報の自動照合を行うことにより、冗長な回路記述を削除し面積を削減することのできるLSI設計検証装置、LSI設計検証方法、及びLSI設計検証プログラムを提供することである。
【0011】
【課題を解決するための手段】
上記目的を達成するために、本発明の第1の特徴は、論理演算機能を有する回路の構成要素を抽象化の度合いに応じて上位から下位まで複数の層に階層化してなる回路記述の論理シミュレーションを用いたLSIの機能検証において、回路記述を読み込む回路記述読込手段と、回路記述について最上位階層から階層間の信号接続関係を解析する解析手段と、階層間の信号接続関係のデータを共通データベースに格納する共通データベース格納手段と、回路記述において検証対象モジュールのプロパティを読み込むプロパティ読み込み手段と、共通データベースから検証対象モジュール間の信号が含まれているプロパティ箇所のみを抽出するモジュール間プロパティ抽出手段と、プロパティから各信号の出力側のモジュールにある出力動作が定義された出力動作プロパティと、入力側モジュールに存在する期待動作が定義された期待動作プロパティとを抽出する信号動作部分抽出手段と、出力動作プロパティと期待動作プロパティとを比較する比較手段とを有するLSI設計検証装置としたことである。
【0012】
本発明において、「共通データベース」とは、下位階層モジュール間の接続関係、モジュール間における信号の接続関係、信号毎のプロパティ情報などを格納する記憶装置である。
【0013】
本発明の第1の特徴に係るLSI設計検証装置では、階層間における接続関係をリストにして共通データベースに格納する共通データベース格納手段を有し、下位階層で独立に作成されたプロパティから、階層間のインタフェースに関わるもののみを抽出することを可能とし、階層的なプロパティチェックを行うことができる。また、外部入力の制約を考慮し、検証対象階層間のインタフェース信号のみを抽出するモジュール間プロパティ抽出手段を有することにより、階層間の信号の受け渡し動作を明確にすることができる。更に、検証対象信号に関わる複数のプロパティを統合し、最適化する信号動作部分抽出手段を有することによって、階層間の信号の受け渡し動作を明確にすることができる。更に、階層間のプロパティを比較する比較手段を有することにより、下位階層毎に独立に作成されたプロパティを用いて、上位階層のインタフェースの検証を行うことができ、大規模回路の検証を行うことができる。
【0014】
本発明の第2の特徴は、論理演算機能を有する回路の構成要素を抽象化の度合いに応じて上位から下位まで複数の層に階層化してなる回路記述の論理シミュレーションを用いたLSIの機能検証において、回路記述を読み込む回路記述読込手段と、回路記述について最上位階層から信号接続関係を解析する解析手段と、検証対象モジュールへ入力を与えているモジュールのプロパティ記述から、検証対象モジュールに接続した信号のみで構成されたプロパティ記述を生成するプロパティ生成手段と、プロパティ記述からテストベクタを発生し、入力するドライブ用テストベンチ記述を生成するドライブ用テストベンチ生成手段と、検証対象モジュールのプロパティ記述から、シミュレーション上の出力と仕様上の出力を比較するチェック用テストベンチ記述を生成するチェック用テストベンチ生成手段とを有するLSI設計検証装置としたことである。
【0015】
本発明の第2の特徴に係るLSI設計検証装置では、仕様の正確性確認済みのモジュールのプロパティ記述から信頼性のあるテストベンチ記述を自動生成するドライブ用テストベンチ生成手段及びチェック用テストベンチ生成手段を有するため、テストベンチ記述作成に関わる時間を短縮することができ、シミュレーション時間を短縮することができる。
【0016】
本発明の第3の特徴は、論理演算機能を有する回路の構成要素を抽象化の度合いに応じて上位から下位まで複数の層に階層化してなる回路記述の論理シミュレーションを用いたLSIの機能検証方法において、(イ)回路記述を読み込むステップと、(ロ)回路記述について最上位階層から階層間の信号接続関係を解析するステップと、(ハ)階層間の信号接続関係のデータを共通データベースに格納するステップと、(ニ)回路記述において検証対象モジュールのプロパティを読み込むステップと、(ホ)共通データベースから検証対象モジュール間の信号が含まれているプロパティ箇所のみを抽出するステップと、(ヘ)プロパティから各信号の出力側のモジュールにある出力動作が定義された出力動作プロパティと、入力側モジュールに存在する期待動作が定義された期待動作プロパティとを抽出するステップと、(ト)出力動作プロパティと期待動作プロパティとを比較するステップとを有するLSI設計検証方法としたことである。
【0017】
本発明の第3の特徴に係るLSI設計検証方法では、階層間における接続関係をリストにして共通データベースに格納するため、下位階層で独立に作成されたプロパティから、階層間のインタフェースに関わるもののみを抽出することを可能とし、階層的なプロパティチェックを行うことができる。また、外部入力の制約を考慮し、検証対象階層間のインタフェース信号のみを抽出することにより、階層間の信号の受け渡し動作を明確にすることができる。更に、検証対象信号に関わる複数のプロパティを統合し、最適化することによって、階層間の信号の受け渡し動作を明確にすることができる。更に、階層間のプロパティを比較するため、下位階層毎に独立に作成されたプロパティを用いて、上位階層のインタフェースの検証を行うことができ、大規模回路の検証を行うことができる。
【0018】
本発明の第4の特徴は、論理演算機能を有する回路の構成要素を抽象化の度合いに応じて上位から下位まで複数の層に階層化してなる回路記述の論理シミュレーションを用いたLSIの機能検証方法において、(イ)回路記述を読み込むステップと、(ロ)回路記述について最上位階層から信号接続関係を解析するステップと、(ハ)検証対象モジュールへ入力を与えているモジュールのプロパティ記述から、検証対象モジュールに接続した信号のみで構成されたプロパティ記述を生成するステップと、(ニ)テストベクタを発生し、入力するドライブ用テストベンチ記述を生成するステップと、(ホ)検証対象モジュールのプロパティ記述から、シミュレーション上の出力と仕様上の出力を比較するチェック用テストベンチ記述を生成するステップとを有するLSI設計検証方法としたことである。
【0019】
本発明の第4の特徴に係るLSI設計検証装置では、仕様の正確性確認済みのモジュールのプロパティ記述から信頼性のあるテストベンチ記述を自動生成するため、テストベンチ記述作成に関わる時間を短縮することができ、シミュレーション時間を短縮することができる。
【0020】
本発明の第5の特徴は、論理演算機能を有する回路の構成要素を抽象化の度合いに応じて上位から下位まで複数の層に階層化してなる回路記述の論理シミュレーションを用いたLSIの機能を検証するLSI設計検証装置を制御するためのプログラムであって、(イ)回路記述を読み込む命令と、(ロ)回路記述について最上位階層から階層間の信号接続関係を解析する命令と、(ハ)階層間の信号接続関係のデータを共通データベースに格納する命令と、(ニ)回路記述において検証対象モジュールのプロパティを読み込む命令と、(ホ)共通データベースから検証対象モジュール間の信号が含まれているプロパティ箇所のみを抽出する命令と、(ヘ)プロパティから各信号の出力側のモジュールにある出力動作が定義された出力動作プロパティと、入力側モジュールに存在する期待動作が定義された期待動作プロパティとを抽出する命令と、(ト)出力動作プロパティと前記期待動作プロパティとを比較する命令とをLSI設計検証装置に実行させるLSI設計検証プログラムとしたことである。
【0021】
本発明の第5の特徴に係るLSI設計検証プログラムでは、階層間における接続関係をリストにして共通データベースに格納する命令を有するため、下位階層で独立に作成されたプロパティから、階層間のインタフェースに関わるもののみを抽出することを可能とし、階層的なプロパティチェックを行うことができる。また、外部入力の制約を考慮し、検証対象階層間のインタフェース信号のみを抽出する命令を有することにより、階層間の信号の受け渡し動作を明確にすることができる。更に、検証対象信号に関わる複数のプロパティを統合し、最適化する命令を有することによって、階層間の信号の受け渡し動作を明確にすることができる。更に、階層間のプロパティを比較する命令を有するため、下位階層毎に独立に作成されたプロパティを用いて、上位階層のインタフェースの検証を行うことができ、大規模回路の検証を行うことができる。
【0022】
本発明の第6の特徴は、論理演算機能を有する回路の構成要素を抽象化の度合いに応じて上位から下位まで複数の層に階層化してなる回路記述の論理シミュレーションを用いたLSIの機能を検証するLSI設計検証装置を制御するためのプログラムであって、(イ)回路記述を読み込む命令と、(ロ)回路記述について最上位階層から信号接続関係を解析する命令と、(ハ)検証対象モジュールへ入力を与えているモジュールのプロパティ記述から、検証対象モジュールに接続した信号のみで構成されたプロパティ記述を生成する命令と、(ニ)テストベクタを発生し、入力するドライブ用テストベンチ記述を生成する命令と、(ホ)検証対象モジュールのプロパティ記述から、シミュレーション上の出力と仕様上の出力を比較するチェック用テストベンチ記述を生成する命令とをLSI設計検証装置に実行させるLSI設計検証プログラムとしたことである。
【0023】
本発明の第6の特徴に係るLSI設計検証装置では、仕様の正確性確認済みのモジュールのプロパティ記述から信頼性のあるテストベンチ記述を自動生成する命令を有するため、テストベンチ記述作成に関わる時間を短縮することができ、シミュレーション時間を短縮することができる。
【0024】
【発明の実施の形態】
次に図面を参照して、本発明の実施形態について説明する。以下の図面の記載において、同一又は類似の部分には同一又は類似の符号を付している。
【0025】
(第1の実施の形態)
(LSI設計検証装置の構成)
図1に示す本発明の第1の実施の形態に係るLSI設計検証装置1は、中央演算処理装置(CPU)2と、CPU2に入出力制御装置33を介して接続された入力装置31及び出力装置32と、CPU2に接続された共通データベース4及び一時記憶装置35とから少なくとも構成されている。CPU2には、図示を省略したデータベース管理手段が備えられている。そして、共通データベース4との入出力が必要な場合は、このデータベース管理手段を介して、必要なファイルの格納場所を探し、ファイルの読み出し・書き込み処理がなされる。
【0026】
CPU2には、共通データベース格納手段9、回路記述読込手段10、解析手段11、プロパティ読込手段12、モジュール間プロパティ抽出手段13、信号動作部分抽出手段14、比較手段15、不一致検出手段16、レポート生成手段17、冗長部削除手段18、レジスタ挿入手段19、波形表示手段20が少なくとも含まれている。
【0027】
共通データベース格納手段9は、階層間の信号接続関係のデータを共通データベース4に格納する。回路記述読込手段10は、LSI設計検証装置1に実験回路等の回路記述を読み込む。解析手段11は、読み込んだ回路記述を上位階層から、モジュール間の接続関係及び信号の入出力関係を解析する。プロパティ読込手段12は、共通データベース4から各検証対象モジュールのプロパティをLSI設計検証装置1に読み込む。モジュール間プロパティ抽出手段13は、読み込んだ各検証対象モジュールのプロパティ中において、モジュール間の信号が含まれている箇所(以下、「モジュール間信号プロパティ」とする)のみを抽出する。信号動作部分抽出手段14は、抽出されたモジュール間信号プロパティから各信号の出力側のモジュールにある出力動作が定義されたプロパティ(以下、「出力動作プロパティ」とする)と、入力側モジュールに存在する期待動作が定義されたプロパティ(以下、「期待動作プロパティ」とする)の信号動作部分を抽出する。比較手段15は、出力動作プロパティと期待動作プロパティの信号動作部分を用いて、各信号の出力側と入力側のプロパティ同士を比較する。不一致検出手段16は、プロパティ同士を比較した結果、比較対象モジュル間において共通の信号が仕様され、その信号がプロパティの条件として記述されている場合、条件同士が一致するか否かを判断し、不一致した条件を検出する。レポート生成手段17は、不一致検出手段16において不一致した条件を検出した場合、エラーとしてレポートを生成する。冗長部削除手段18は、インタフェース仕様に余裕があり、階層設計手法を用いるない場合、信号の冗長部分を削除する。レジスタ挿入手段19は、インタフェース仕様に余裕があり、階層設計手法を用いる場合、信号の階層境界にレジスタを挿入する。波形表示手段20は、レポート生成手段17で生成されたレポートに基づき、不一致内容について関連する信号の時間変化を波形表示する。
【0028】
入力装置31は、キーボード、マウス、OCR等の認識装置、イメージスキャナ等の図形入力装置、音声認識装置等の特殊入力装置などにより、出力装置32は、液晶ディスプレイ、CRTディスプレイ等の表示装置、インクジェットプリンタ、レーザープリンタなどの印刷装置等によりそれぞれ構成される。入出力制御装置(入出力インタフェース)33は、これらの入力装置31、出力装置32、あるいは図示を省略したCD−ROM、MO、ZIPなどの記憶装置の読み取り装置等をCPU2につなぐインタフェースである。データの流れから見ると、入出力制御装置33は、入力装置31、出力装置32、外部記憶装置の読み取り装置と主記憶装置35とのインタフェースとなる。主記憶装置35には、ROM及びRAMが組み込まれている。ROMは、CPU2において実行されるプログラムを格納しているプログラム記憶装置等として機能する。RAMは、CPU2におけるプログラム実行処理中に利用されるデータ等を一時的に格納したり、作業領域として利用される一時的なデータメモリ等として機能する。共通データベース4は、回路記述情報をモジュール単位で格納するための記憶装置であり、モジュール名データベース5を有する。
【0029】
(第1の実施形態の全体のフロー)
図2は、本発明の第1の実施の形態に係るLSI設計検証方法を示したフロー図である。
【0030】
(イ)まず、ステップS11において、RTL等の回路記述41を読み込む。そして、ステップS12において、回路記述41を最上位(トップ)階層から解析し、第2階層(下位階層)モジュール間の接続関係を解析する。そして、(a)モジュール間に存在する信号は何か、(b)その信号がどのモジュールから出力され、どのモジュールへの入力となっているのか、そして(c)その信号がモジュール内部においてどのような信号名で接続されているのかを定義したデータを図4に示すような共通データベース4に記憶する。例えば、図3に示す回路記述41をステップS11において読込む。更に、ステップS12において、最上位(TOP)階層45を解析することにより、乗算器(MULT)46と算術論理演算ユニット(ALU)47、MULT46とコントローラ(CON)48、ALU47とCON48との接続関係を解析する。そして、解析された接続関係は、図4に示すような共通データベース4に記憶する。
【0031】
(ロ)次に、ステップS13において、各モジュールの比較したいプロパティ(各検証対象モジュールのプロパティ)をそれぞれ読み込み、共通データベース4から「モジュール間信号プロパティ」を検出し、抽出する。本発明の第1の実施形態では、プロパティA42aとプロパティB43aが読み込まれる。そして、共通データベース4からプロパティA42a及びプロパティB43aのモジュール間プロパティ(プロパティA’42b及びプロパティB’43b)がそれぞれ検出され、抽出される。
【0032】
(ハ)次に、ステップS14において、ステップS13で抽出されたモジュール間信号プロパティから、「出力動作プロパティ」と「期待動作プロパティ」の信号動作部分を抽出する。
【0033】
(ニ)次に、ステップS15において、ステップS14で抽出された出力動作プロパティ(出力側)及び期待動作プロパティ(入力側)の信号動作部分を用いて、各信号の出力側と入力側のプロパティ同士を比較する。
【0034】
(ホ)次に、ステップS16において、比較対照となるモジュール間に、共通の信号が使用されていて、その信号がプロパティに条件として記述されている場合は、条件同士が一致するか否かを判断する。ステップS16の判断の結果、条件同士が一致しない場合は、ステップS17において不一致した条件を検出し、エラーとしてレポートを生成する。即ち、ステップS16においてプロパティ同士を比較した結果、ステップS17においてどちらか一方のプロパティが不足していれば、プロパティが存在する階層から不足分のプロパティを抜き出し、プロパティが存在しない階層の情報に変換する。このとき、関係する信号の時間変化を波形として画面に表示する。
【0035】
(ヘ)ステップS16の判断の結果、プロパティの条件が一致している場合は、ステップS18において、インタフェース仕様に余裕があるか否かを判断する。インタフェース仕様に余裕がない場合は、そのまま処理を終了する。インタフェース仕様に余裕がある場合は、ステップS19において、階層設計手法を用いるか否かを判断する。階層設計手法を用いる場合は、ステップS20において、信号の階層境界にレジスタを挿入し、処理を終了する。階層設計手法を用いない場合は、ステップS21において、信号の冗長部分を削除し、処理を終了する。
【0036】
(実験回路の仕様)
次に、本発明の第1の実施の形態で使用する実験回路の仕様について、図3を参照しながら説明する。図3には、本発明の第1の実施の形態で使用する実験回路の回路図を示す。
【0037】
本発明の第1の実施の形態で使用する実験回路は、トップと呼ばれる最上位階層と、乗算器(MULT)46、算術論理演算ユニット(ALU)47、及びコントローラ(CON)48からなる第2階層(下位階層)からなる。図2に示すフローのステップS11において、この回路が読み込まれると、ステップS12において最上位階層から、モジュール間の接続関係を解析した結果、以下の(a)〜(d)ような信号の入出力関係が解析される。
【0038】
(a)図3に示すように、最上位階層には、4ビットデータからなる信号A及び信号Bと、2ビットコマンドからなる外部入力信号(OP)と、クロック信号(CLK)と、リセット信号B(RESETB)とが入力される。そして、外部入力信号(OP)の内容に従って、信号Aと信号Bの演算を行い、8ビットデータからなる結果信号(RESULT)として出力する。外部入力信号(OP)は、AND演算、加算、減算、乗算を選択することができる。
【0039】
(b)下位階層(第2階層)である乗算器(MULT)46には、信号A、信号B、開始信号(STB)、クロック信号(CLK)、リセット信号B(RESETB)が入力される。MULT46では、開始信号がアサートしたら、信号Aと信号Bとの乗算を行い、結果信号(RESULT)として出力する。そして、演算が終了すると、終了信号(Done)をアサートする。演算消費サイクルは信号Bのデータの内容により、11〜15サイクルで変化する。
【0040】
(c)下位階層(第2階層)であるALU47には、信号A、信号B、外部入力信号(OP)、クロック信号(CLK)、リセット信号B(RESETB)が入力される。ALU47では、外部入力信号(OP)の内容に従って、信号Aと信号Bとの演算を行い、結果信号(RESULT)として出力する。外部入力信号(OP)は、AND演算、加算、減算を選択することができる。
【0041】
(d)下位階層(第2階層)であるコントローラ(CON)48には、外部入力信号(OP)、乗算器(MULT)46の終了信号(Done)、8ビットからなるMULT46の演算結果(R_M)、8ビットからなるALU47の演算結果(R_A)、クロック信号(CLK)、リセット信号B(RESETB)が入力される。CON48では、外部入力信号(OP)の内容によって、ALU47、MULT46からの信号を演算結果(RESULT)として振り分けて出力する。また、CON48は、MULT46を動作させる開始信号STBを制御する。更に、MULT46からの終了信号(Done)を待って、演算結果を出力する。そして、MULT46からの終了信号(Done)が12サイクル後に8返ってこない場合は、エラーとする。
【0042】
(共通DBの作成方法)
次に、図4に共通データベース4を示す。共通データベース4には、最上位階層のモジュール名(第1項)、最上位階層のモジュールに含まれるモジュール名(第2項)、各モジュール毎の組み合わせ(第3項)、各モジュール間の接続情報(第4項)、抽出された信号に関連するプロパティ情報(第5項)、及び信号の組み合わせ毎に変換されたプロパティ情報(第6項)がモジュール毎に蓄積される。
【0043】
例えば、図3に示すような最上位階層を解析した結果は、図4に示すように、まず、共通データベース4の第1項には、最上位階層のモジュール名「最上位(TOP)」が記憶される。そして、「最上位(TOP)45」に含まれるモジュール名が第2項に記憶される。ここでは、「乗算器(MULT)46、コントローラ(CON)48、算術論理演算ユニット(ALU)47」が第2項に記憶される。
【0044】
次に、第3項では、第2項に記憶されている各モジュール毎の組み合わせ情報が記憶される。例えば、乗算器(MULT)46は、コントローラ(CON)48及び算術論理演算ユニット(ALU)47との組み合わせが考えられるため、第2項のMULT46に対応する第3項に、CON48とALU47が記憶される。同様に、CON48は、MULT46及びALU47との組み合わせが考えられるため、第2項のCON48に対応する第3項には、MULT46とALU47が記憶される。更に、ALU47は、MULT46及びCON48との組み合わせが考えられるため、第2項のALU47に対応する第3項には、MULT46とCON48が記憶される。
【0045】
次に、第4項には、第2項で抽出した各モジュール間の接続情報を記憶する。例えば、第2項の乗算器(MULT)46は、第3項を見ると、MULT46とコントローラ(CON)、MULT46と算術論理演算ユニット(ALU)47の組み合わせが考えられ、これら2つの組み合わせのそれぞれの接続関係が第4項に記憶されることになる。従って、図4に示す実施例では、MULT46とCON48の接続関係として、「MULT: STB(STB), Done(Done), R_M(R_M) / CON: STB(STB), Done(Done), R_M(R_M) 」というMULT46とCON48の接続関係が第4項に記憶される。そして、MULT46とALU47とは接続関係がないため、MULT46とALU47の接続関係を記憶する第4項には何も記載されない。
【0046】
次に、第5項には、抽出された信号に関連するプロパティ情報が記憶される。即ち、モジュール乗算器(MULT)46とコントローラ(CON)48との接続関係として第4項で抽出された信号(STB, Done, R_M)に関連するプロパティ情報を、MULT46及びCON48のそれぞれのプロパティから抽出し、第5項に記憶する。例えば、第4項で抽出された信号「STB, Done, R-M」を含むプロパティとして、MULT46側では、図5(a)に示すようなプロパティ情報が抽出され、CON48側では、図5(b)に示すようなプロパティ情報が抽出され、第5項に記憶される。
【0047】
次に、第6項には、信号の組み合わせ毎に変換されたプロパティ情報がモジュール毎に蓄積される。即ち、第5項のプロパティから、2つのモジュール間に関連しない信号のプロパティをのぞき、関連する信号動作のプロパティのみを抽出したものを第6項に格納する。
【0048】
(モジュール間信号プロパティの一例)
次にモジュールの1つである乗算器(MULT)46の単体検証用プロパティの一例を図5(a)に示す。ここでは、開始信号(STB)がアサートしてから、信号Bの値によって、11〜15サイクルで演算が完了することを検証する。そして、図5(a)のCはサイクルを表し、「C1」の場合、1サイクル後を意味する。
【0049】
図5(b)には、コントローラ(CON)48の単体検証用プロパティの一例を示す。ここでは、(イ)CON48は、リセット解除後、外部入力信号(OP)が乗算(2'11)の時は3サイクル後に開始信号(STB)が1にアサートし、(ロ)CON48は、リセット解除後、外部入力信号(OP)が乗算(2'b11)の時は乗算器(MULT)46の実行開始後、12サイクル以内に終了信号(Done)が返ってきた場合は、正常終了(current_sate == 3'b100)となる、という2つの動作を検証する。
【0050】
(実施例1−1:プロパティ間に不一致がある場合)
次に、図6〜図13を用いて、本発明の第1の実施の形態に係るLSI設計検証方法において上述したLSI設計検証方法に即して、プロパティ間に不一致がある場合の実施例について説明する。
【0051】
[処理手順1]
ステップS11〜S12に対応し、図6及び図7のステップS101〜S136までの処理において、最上位階層(トップ)から、下位階層(第2階層)モジュール間の信号の接続関係を示す信号リスト40を作成する。本実施例1−1においては、乗算器(MULT)46、コントローラ(CON)48、算術論理演算ユニット(ALU)47という3つの下位階層モジュール間の信号の接続関係を示す信号リスト40が作成され、共通データベース4に格納される。図8(a)にMULT46の入力接続関係を表す信号リスト40a、図8(b)にCON48の入力接続関係を表す信号リスト40bの一例を示す。尚、本実施例1−1では、MULT46とCON48との関係についてのみ比較していくこととする。
【0052】
(イ)まず、図6のステップS101において、最上位階層の回路記述であるRTLファイル(RTL回路記述)41を読み込む。次に、ステップS102において、読み込んだRTLファイル(RTL回路記述)41を一行読み込み、図2のステップS12に対応して、モジュール間の信号の相関解析を開始する。
【0053】
(ロ)次に、ステップS103において、モジュール宣言がなされているか否かを判断する。モジュール宣言がなされていない場合は、ステップS102の処理へ戻り、RTLファイル(RTL回路記述)41の次の一行を読み込む。ステップS103の判断において、モジュール宣言がなされている場合は、次のステップS104の処理へ進む。
【0054】
(ハ)次に、ステップS104において、共通データベース4の第1項に、モジュール宣言がなされているモジュール名を格納する。そして、ステップS105において、モジュール名毎のデータベース(即ち、最上位階層毎のデータベース)を共通データベース4の中にモジュール名データベース5として作成する。
【0055】
(ニ)次に、ステップS107において、モジュール名データベース5のデータを一行ずつ読み込み、ステップS108でモジュールブロックにある全てのデータを読み込んだか否かが判断される。モジュールブロックのデータの読み込みが終了していない場合は、ステップS106の処理へ戻り、データをモジュール名データベース5に書き込む。モジュールブロックのデータの読み込みが終了している場合は、ステップS109の処理へ進み、モジュール名データベース5を終了する。
【0056】
(ホ)次に、ステップS110において、RTLファイル(RTL回路記述)41の最終行であるか否かが判断される。最終行ではない場合は、ステップS102の処理へ戻り、ステップS102からステップS110までの処理を繰り返す。最終行である場合は、ステップS111の処理へ進む。
【0057】
(ヘ)ステップS111において、共通データベース4の最初のポイントへ移動する。次に、ステップS112において、共通データベース4を読み込み、ステップS113において、共通データベース4から第1項のモジュール名を読み出す。そして、ステップS114において、対応するモジュール名データベース5を読み出す。
【0058】
(ト)ステップS115において、読み出したモジュール名データベース5のデータを一行読み込む。次に、ステップS116において、共通データベース4内にモジュール宣言されているものがあるか否かを判断する。モジュール宣言されているものがない場合は、ステップS115の処理へ戻り、読み出したモジュール名データベース5の次のデータを一行読み込む。モジュール宣言されているものがある場合は、ステップS117の処理へ進む。
【0059】
(チ)ステップS117では、対応するモジュール名データベース5の第2項に検出したモジュール名の追加を行う。ステップS118において、モジュール名データの最終行であるか否かを判断する。 最終行でない場合は、ステップS112の処理へ戻り、ステップS112からステップS117までの処理を繰り返す。最終行である場合は、ステップS119において、モジュール名データをクローズする。
【0060】
(リ)次に、ステップS120において、共通データベース4の最終モジュール名か否かを判断する。最終モジュール名ではない場合は、ステップS112からステップS119までの処理を繰り返す。最終モジュール名である場合は、ステップS121において、共通データベース4の最初のポイントへ移動する。
【0061】
(ヌ)次に、ステップS122において、共通データベース4を読み込む。そして、ステップS123において、共通データベース4からモジュール名を読み出し、ステップS124において、対応するモジュール名データベース5を読み出す。
【0062】
(ル)ステップS125において、第2項のデータがあるか否かを判断する。第2項のデータがない場合は、ステップS136において、全処理を終了する。第2項のデータがある場合は、ステップS126において、階層モジュール名として定義する。そして、ステップS127において、共通データベース4の最初のポイントへ移動する。
【0063】
(ヲ)ステップS128において、共通データベース4を読み込み、ステップS129において対応するモジュール名データベース5を読み込む。そして、ステップS130において、下層モジュールを含むか否かが判断される。下層モジュールを含む場合は、ステップS126の処理へ戻り、階層モジュール名として定義し、ステップS126からS129までの処理を繰り返す。ステップS130において、下層モジュールを含まない場合は、ステップS131の処理へ進み、最上位モジュールとして定義する。
【0064】
(ワ)ステップS132において、最上位モジュールの第2項のデータを読み出す。そして、ステップS133において、第2項のデータから2つずつのモジュールの組み合わせを作成し、第3項のデータとして共通データベース4に書き込む。
【0065】
(カ)次に、ステップS134において、最上位モジュールのモジュール名データベース5から第3項のデータのモジュール間接続情報(端子、配線)を抽出し、第4項として書き出す。そして、ステップS135において、第3項のデータの最後であるか否かを判断する。第3項のデータの最後ではない場合は、ステップS134の処理を繰り返す。第3項のデータの最後である場合は、モジュール間の共通端子情報の抽出し処理を終了する。
【0066】
[処理手順2]
次に、ステップS12に対応して、共通データベース4に格納されている信号リスト40から、下位階層(第2階層)モジュールである乗算器(MULT)46とコントローラ(CON)48との間のインタフェース信号が含まれているプロパティ箇所のみを検出し、抽出する。例えば、ここでは、MULT46とCON48との間のインタフェース信号として、図8(a)に示すMULT46の信号リスト40aから「CON.STB=>MULT.STB」を、図8(b)に示すCON48の信号リスト40bから「MULT.Done=>CON.Done」を抽出する。
【0067】
図9を参照して、プロパティの検出・抽出フローについて説明する。
【0068】
(イ)まず、ステップS201において、共通データベース4を読み込み、ステップS202において、共通データベース4から、第4項のデータ(モジュール間接続情報)を読み出す。第4項のデータとして、たとえば、図8(a)及び図8(b)に示す信号接続関係を示すデータが読み込まれる。そして、ステップS202の処理後、ステップS210とステップS220の処理の両方へ同時に進む。
【0069】
(ロ)まず、ステップS210において、ターゲット・プロパティ・フラグを初期化し「0」に設定する。また、ステップS220において、リファレンス・プロパティ・フラグを初期化し「0」に設定する。次に、読み込んだ共通データベース4の第4項のデータについて、ステップS211において共通端子に関するプロパティ(ターゲット)を、ステップS221において共通端子に関するプロパティ(リファレンス)をそれぞれ検索する。
【0070】
(ハ)そして、ステップS212及びステップS222において、それぞれ共通端子に関するプロパティか否かを判断し、共通端子に関するプロパティではない場合は、ステップS211及びステップS221の処理へ戻り次の検索を開始する。共通端子に関するプロパティである場合は、ステップS213の処理へ進みターゲット・プロパティ・フラグを「1」に、ステップS223の処理へ進みリファレンス・プロパティ・フラグを「1」にそれぞれ設定する。
【0071】
(ニ)次に、ステップS214及びステップS224において、それぞれ、図5(a)、(b)に示すような共通端子に関するプロパティに対応するモジュールのプロパティ・ファイルを読み込む。そして、読み込んだプロパティ・ファイルから、ステップS215及びステップS225において、プロパティを一行読み込む。
【0072】
(ホ)ステップS216及びステップS226において、第4項のデータの信号が含まれているか否かが判断される。第4項のデータが含まれている場合は、ステップS217、ステップS227の処理へそれぞれ進み、信号名を最上位階層での名称に変換し、プロパティを第5項へ書き出す。例えば、ターゲット側では、図8(a)の乗算器(MULT)46の入力接続関係を示す信号リスト40aから抽出された「CON.STB=>MULT.STB」は、図5(a)に示すような「MULT:{if(C0(STB==1’b0) && C1(forever(STB==1’b1)){ (B == 4'b0000) => C1(C11(Done));(B == 4'b0001) => C1(C12(Done));・・・・・}」に変換され、第5項に格納される。更に、リファレンス側では、コントローラ(CON)48の信号に関しても同様に「MULT.Done=>CON.Done」は、図5(b)に示すような「CON: {if{C0(RESETB == 1'b0) && C1(forever(RESETB == 1'b1)){(OP == 2’b11) => C2(STB == 1'b0) && C3(forever(STB == 1'b1));・・・・・} 」に変換され、第5項に格納される。ステップS216及びステップS226において、第4項のデータの信号が含まれていない場合は、ステップS218及びステップS228の処理へそれぞれ進む。
【0073】
(ヘ)次に、ステップS218及びステップS228において、プロパティ・ファイルの最終行であるか否かが判断される。プロパティ・ファイルの最終行ではない場合、ステップS215及びステップS225の処理へ戻り、ステップS215〜S218、ステップS225〜S228までの処理をそれぞれ繰り返す。プロパティ・ファイルの最終行である場合は、ステップS230の処理へ進む。
【0074】
(ト)ステップS230において、ターゲット・プロパティ・フラグが「1」であり、且つ、リファレンス・プロパティ・フラグが「1」であるか否かが判断される。ターゲット・プロパティ・フラグが「1」であり、且つ、リファレンス・プロパティ・フラグが「1」である場合は、ステップS234の処理へ進む。ターゲット・プロパティ・フラグが「1」であり、且つ、リファレンス・プロパティ・フラグが「1」ではない場合は、ステップS231の処理へ進み、プロパティ不足メッセージを出力し、ステップS232の処理へ進む。そして、ステップS232では、プロパティ・フラグの片方が「1」になっているか否かが判断され、「1」になっていない場合は、ステップS234の処理へ進む。「1」になっている場合は、ステップS233の処理へ進み、不足プロパティを出力し、ステップS234の処理へ進む。
【0075】
(チ)最後に、ステップS234において、第4項のデータの最後であるか否かが判断される。第4項のデータの最後ではない場合は、ステップS202の処理へ戻り、ステップS202からS234までの処理を繰り返す。第4項のデータの最後である場合は、プロパティの抽出処理を終了する。
【0076】
[処理手順3]
次に、ステップS13に対応し、図10のステップS301〜ステップS330までの処理において、ステップS12で抽出されたモジュール間信号プロパティから、各信号の出力側のモジュールにある出力動作が定義されたプロパティと、入力側モジュールに存在する期待動作が定義されたプロパティの信号動作部分を抽出する。
【0077】
(イ)まず、ステップS301において、共通データベース4を読み込み、ステップS302において、共通データベース4から第5項のデータを読み出す。そして、ステップS302の処理後、ステップS310とステップS320の処理の両方へ同時に進む。
【0078】
(ロ)先ず、ステップS310においてターゲット・モジュールのプロパティ、ステップS320においてリファレンス・モジュールのプロパティをそれぞれ読み込む。例えば、ターゲット・モジュールのプロパティとしては、図5(a)に示す乗算器(MULT)46のプロパティが、リファレンス・モジュールのプロパティとしては図5(b)に示すコントローラ(CON)48のプロパティがそれぞれ読み込まれる。
【0079】
(ハ)次に、ステップS311及びステップS321において、共通端子以外のデータを抜き出す。そして、ステップS312及びステップS322において、次のプロパティを読み込む。
【0080】
(ニ)ステップS313及びS323において、共通端子以外の置き換えが可能であるか否かが判断される。共通端子以外の置き換えが可能ではない場合、ステップS312及びS322の処理へ戻り、次のプロパティを読み込む。共通端子以外の置き換えが可能である場合は、ステップS314においてターゲット・プロパティを置き換え、ステップS324において、リファレンス・プロパティを置き換える。
【0081】
(a)ここで、たとえば、終了信号(Done)に注目した場合、出力側が乗算器(MULT)46で、入力側がコントローラ(CON)48となっている。また、開始信号(STB)に注目した場合、出力側がCON48で、入力側がMULT46である。即ち、終了信号(Done)に注目すると、MULT46側が終了信号(Done)を生成しているため、MULT46のプロパティの左辺は終了信号(Done)が生成される場合の条件となる。この場合左辺は開始信号(STB)と信号Bによって構成されているが、信号BはCON48に入力しておらず、CON48とMULT46の間の相関を考えた場合、関係なくなり、ターゲット側のプロパティ(MULT46のプロパティ)は、「C0(STB==1'b0)&&C1(forever(RESETB==1'b1))=>C1(within15(Done))」となる。
【0082】
(b)一方、コントローラ(CON)48側のプロパティは、図5(b)又は図11(a)に示すように、「if{C0(RESETB == 1'b0) && C1(forever(RESETB == 1'b1)){(OP == 2’b11) && C3(within12(Done)) => C3(within12(C1(current_state == 3'b100)));}」であるが、図11(b)の「(OP == 2’b11) => C2(STB == 1'b0) && C3(forever(STB == 1'b1));」のように証明されているため、「(OP == 2’b11) 」に「C2(STB == 1'b0) && C3(forever(STB == 1'b1))」を代入することにより、図11(c)に示すように、「if{C0(RESETB == 1'b0) && C1(forever(RESETB == 1'b1)){C2(STB == 1'b0) && C3(forever(STB == 1'b1))&&C3(within12(Done)) => C3(within12(C1(current_state == 3'b100)));}」と変換することが可能となる。
【0083】
(ホ)ステップS315及びステップS325において、共通データベース4の第6項にターゲット及びリファレンスプロパティを置き換えたデータを書き込む。そして、ステップS330において、全てのプロパティの置き換えが終了したか否かが判断される。全てのプロパティの置き換えが終了していない場合は、ステップS302の処理へ戻り、ステップS302からステップS330までの処理を繰り返す。全てのプロパティの置き換えが終了している場合は、プロパティ動作抽出処理(処理手順3)を終了する。
【0084】
[処理手順4]
次に、ステップS15に対応し、図12のステップS401からステップS414までの処理において、乗算器(MULT)46側とコントローラ(CON)48側のプロパティの比較を行う。
【0085】
(イ)まず、ステップS401において、共通データベース4を読み込む。そして、ステップS402において、共通データベース4の第6項のプロパティ(図11(c)等)を読み出す。 次に、ステップS403において、それぞれのプロパティをソートし、ステップS404において、等価な式を削除する。
【0086】
たとえば、図11(c)に示す、コントローラ(CON)48側のプロパティは、「if{C0(RESETB == 1'b0) && C1(forever(RESETB == 1'b1)){C2(STB == 1'b0) && C3(forever(STB == 1'b1))&& C3(within12(Done)) => C3(within12(C1(current_state == 3'b100)));}」から等価な式を削除すると、「C0(STB == 1'b0) && C1(forever(STB == 1'b1))&& C1(within12(Done))」となる。即ち、開始信号(STB)が「0」から「1」に変化し12サイクル以内に終了信号(Done)がアサートした場合を意味する。また、乗算器(MULT)46側のプロパティは、「C0(STB==1’b0)&&C1(forever(STB==1’b1) => C1 (within15 (Done))」のままであり、開始信号(STB)が「0」から「1」に変化後、15サイクル以内に終了信号(Done)がアサートすることを意味する。
【0087】
(ロ)次に、ステップS405において、削除されなかった式が存在するか否かが判断される。削除されなかった式が存在しない場合は、比較処理を終了する。削除されなかった式が存在する場合は、ステップS406において、式を比較する。たとえば、本発明の第1の実施の形態の実施例1−1では、乗算器(MULT)46側のプロパティ「C0(STB==1’b0)&&C1(forever(STB==1’b1) => C1 (within15 (Done))」と、コントローラ(CON)48側のプロパティ「C0(STB == 1'b0) && C1(forever(STB == 1'b1))&& C1(within12(Done))」とが、ステップS406において、比較される。
【0088】
(ハ)図2のステップS13に対応し、ステップS407において、動作の辻褄が合っているか否かが判断される。辻褄があっていない場合は、ステップS408において、不一致情報を出力し、比較処理を終了する。即ち、本実施例1−1の場合、コントローラ(CON)48側のプロパティで条件として使われている、終了信号(Done)のアサートまでのサイクル数は、実際に終了信号(Done)を生成している乗算器(MULT)46から見た場合、MULT46のサイクル数を満たさない場合があることがわかる。即ち、MULT46側は、開始信号(STB)が0から1に変化した後、15サイクル以内に終了信号(Done)をアサートするが、コントローラ(CON)48側は、開始信号(STB)が0から1に変化した後、12サイクル以内に終了信号(Done)がアサートした場合を想定しているため、MULT46側が13サイクルから15サイクルで終了信号(Done)をアサートした場合、CON48側では受け入れ体制が整っていないことになる。
【0089】
尚、もし、CON48側が16サイクル以内に終了信号(Done)がアサートした場合を想定している場合は、CON48はMULT46に対して余裕を持っていることとなる。このような場合については、次の実施例(実施例1−2)において詳しく説明する。尚、動作の辻褄があっている場合は、ステップS409において、階層設計か否かが判断されるが、ステップS409〜ステップS414までの処理については、実施例1−2において説明することとする。
【0090】
[処理手順5]
ステップS17に対応して、図12のステップS407において、乗算器(MULT)46とコントローラ(CON)48とのプロパティ間に不一致があることが解析できたため、ステップS408において、不一致の内容をレポート(出力)し、開始信号(STB)と終了信号(Done)との関係を図13に示すように波形表示する。
【0091】
たとえば、図11(b)に示す記述は、「外部入力信号(OP)が「11」の場合、2サイクル後に開始信号(STB)は「0」、3サイクル後に開始信号(STB)は「1」になる。」ことを示している。これを波形表示した場合、図13の出力側の開始信号(STB)は、C0からC2までは「0」であり、C3で「1」になっていることが図13に示すように波形表示される。
【0092】
(実施例1−2: 冗長の削除)
次に、図14と、前述してきた図2、図6乃至図10、及び図12を用いて、本発明の第1の実施の形態に係るLSI設計検証方法における実施例1−2として、図12のステップS410の処理に係るプロパティ間に冗長な部分がある場合についての実施例を説明する。
【0093】
図14(a)、(b)に、本発明の第1の実施の形態に係る実施例1−2で用いる乗算器(MULT)46及びコントローラ(CON)48の単体検証用プロパティの一例を示す。また、トップ階層45の仕様として、「外部入力Bは3以下である」という制約が追加されるため、更に「B<=4'b0011」を追加する。
【0094】
[処理手順1]
実施例1−1と同様に、図2のステップS11〜S12に対応し、図6及び図7のステップS101〜S136までの処理において、最上位階層から下位階層(第2階層)モジュール間の信号の接続関係を示す信号リスト40を作成する。本実施例1−2では、乗算器(MULT)46、コントローラ(CON)48、算術論理演算ユニット(ALU)47という3つの下位階層モジュール間信号の接続関係を示す信号リスト40が作成され、共通データベース4に格納される。尚、本実施例1−2では、MULT46とCON48との関係についてのみ比較検討していくこととする。図8(a)にMULT46の入力接続関係、図8(b)にCON48の入力接続関係を示す。
【0095】
[処理手順2]
次に、ステップS13において、共通データベース4に格納されている信号リスト40から、下位階層(第2階層)モジュールである乗算器(MULT)46とコントローラ(CON)48との間のインタフェース信号が含まれているプロパティ箇所のみを検出し、抽出する。ここでは、「CON.STB=>MULT.STB」と「MULT.Done=>CON.Done」とが抽出される。抽出されたこれらの信号に注目し、MULT46、CON48のそれぞれの単体検証用プロパティ(図14(a)、図14(b))から、終了信号Doneが関係するプロパティを抽出する。尚、本実施例1−2では、MULT46側、CON48側共に全てのプロパティが対象となる。
【0096】
[処理手順3]
ステップS13において、ステップS12で抽出されたモジュール間信号プロパティから、各信号の出力側のモジュールにある出力動作が定義されたプロパティと、入力側モジュールに存在する期待動作が定義されたプロパティの信号動作部分を抽出する。即ち、本発明の実施例1−2では、終了信号(Done)に関しては、出力側が乗算器(MULT)46で、入力側がコントローラ(CON)48であり、開始信号(STB)に関しては、出力側がCON48で、入力側がMULT46である。
【0097】
更に、ステップS13において、MULT46及びCON48の両方に関連する信号が含まれているプロパティを抽出し、共通データベース4に格納する。即ち、図14(a)及び図14(b)に示すような、MULT46及びCON48の単体検証用プロパティ20c、20dを抽出する。
【0098】
次に、実施例1−1の処理手順3に対応して、図10のステップS313〜S314、ステップS323〜S324において、まず、終了信号(Done)に関しては、乗算器(MULT)46側が生成しているため、図14(a)に示すMULT46の単体検証用プロパティにおける左辺は、終了信号(Done)が生成される場合の条件となる。このMULT46側の左辺は、開始信号(STB)と信号Bにより構成されているが、信号Bはコントローラ(CON)48に入力されておらず、CON48とMULT46との間の相関を考えた場合、MULT46側のプロパティは、「C0(STB==1'b0)&&C1(forever(STB==1'b1)=>C1(within13(Done)))」となる。
【0099】
一方、終了信号(Done)に関して、CON48は入力側である。CON48側の単体検証用プロパティは、図14(b)に示すように「if{C0(RESETB == 1'b0) && C1(forever(RESETB == 1'b1)){(OP == 2'b11) && C3(within15(Done)) => C3(within15(C1(current_state == 3'b100)));}」であるが、図14(b)の「(OP == 2'b11) => C2(STB == 1'b0) && C3(forever(STB == 1'b1));」により、「(OP == 2'b11)」が既に証明されているため、「(OP == 2'b11)」に「C2(STB == 1'b0) && C3(forever(STB == 1'b1))」を代入することによって、「if{C0(RESETB == 1'b0) && C1(forever(RESETB == 1'b1)){C2(STB == 1'b0) && C3(forever(STB == 1'b1)) && C3(within15(Done)) => C3(within15(C1(current_state == 3'b100)));}」と書き換えることができる。
【0100】
[処理手順4]
次に、ステップS15に対応し、図12のステップS401からステップS414までの処理において、乗算器(MULT)46側とコントローラ(CON)48側のプロパティの比較を行う。尚、ステップS401からS407までの処理は、実施例1−2と同じであるため違う点についてのみ簡単に説明する。
【0101】
(イ)まず、ステップS401において、共通データベース4を読込み、ステップS402において、共通データベース4の第6項のプロパティ(図14(c)、(d)等)を読み出す。次に、ステップS403において、それぞれのプロパティをソートし、ステップS404において、等価な式を削除する。
【0102】
(ロ)次に、ステップS405において、削除されなかった式が存在するか否かが判断される。削除されなかった式が存在しない場合は、比較処理を終了する。削除されなかった式が存在する場合は、ステップS406において、式を比較する。たとえば、本発明の第1の実施の形態の実施例1−2では、MULT46側のプロパティ「C0(STB==1'b0)&&C1(forever(STB==1'b1)=>C1(within13(Done)))」と、CON48側のプロパティ「C0(STB == 1'b0) && C1(forever(STB == 1'b1)) && C1(within15(Done))」とが、ステップS406において比較される。
【0103】
(ハ)図2のステップS16に対応し、ステップS407において、動作の辻褄が合っているか否かが判断される。辻褄があっていない場合は、ステップS408において、不一致情報を出力し、比較処理を終了する。辻褄が合っている場合は、ステップS409の処理へ進み、階層設計であるか否かが判断される(ステップS19に対応)。ステップS409において、階層設計でない場合は、ステップS410において、冗長な部分の情報を出力し(ステップS21に対応)、処理を終了する。
【0104】
即ち、本実施例1−2の場合、コントローラ(CON)48側のプロパティで条件として使われている終了信号(Done)のアサートまでのサイクル数は、実際に終了信号(Done)を生成している乗算器(MULT)46から見た場合、MULT46のサイクル数を満たすことがわかる。即ち、MULT46側は、開始信号(STB)が0から1に変化した後、13サイクル以内に終了信号(Done)をアサートするが、CON48側は、開始信号(STB)が0から1に変化した後、15サイクル以内に終了信号(Done)がアサートした場合を想定しているため、余裕をもっていることがわかる。このとき、MULT46から見た2サイクルの冗長部分について、ユーザは、どのような処理を施すかを画面上に表示されるため、ユーザの判断によって、自動的に冗長部分の削減処理を行うことができる。
【0105】
[処理手順5]
(レジスタ挿入)
本実施例1−2では、コントローラ(CON)48側に2サイクル冗長があることが判明されるため、ステップS20に対応し、冗長な部分にレジスタを挿入する。ステップS409においてCON48側を階層設計する場合は、ステップS411の処理へ進み、RTLファイル(RTL回路記述)41を読み込む。ここで、CON48を階層設計する場合、論理合成以降の処理で遅延計算を容易にするため、階層境界の入出力にフリップ・フロップ回路(F/F)を挿入する必要がある。
【0106】
そこで、ステップS412において、対象となる信号のレジスタ間から、コントローラ(CON)48部分の記述を分離する。次に、ステップS413において、中間変数毎に分離することにより、レジスタ挿入可能箇所を特定する。そして、ステップS414において、レジスタ挿入に可能な個数の組み合わせで、中間変数毎に分離したCON48にレジスタを追加し、ファイルに出力し、比較処理を終了する。
【0107】
尚、CON48の入力である終了信号(Done)は処理手順4より、Done回路に仕様サイクルのタイミング的に2サイクルの冗長があることが判明しているので、入力直後にフリップ・フロップ回路を挿入しても、論理的に不具合は発生しない。従って、ユーザの判断により、CON48内の終了信号(Done)の直後にフリップ・フロップ回路を挿入することも可能である。
【0108】
(第1の実施の形態の効果)
本発明の第1の実施の形態によれば、階層間における接続関係をリストにすることで、下位階層(第2階層)で独立に作成されたプロパティ(群)から、階層間のインターフェースに関わるもののみを抽出することを可能とし、階層的プロパティチェック手法を可能とする。また、プロパティを外部入力の制約を考慮して、注目している階層間のインターフェース信号のみに変換することで、階層間の信号の受け渡し動作を明確にすることができる。更に、本発明の第1の実施の形態によれば、注目する信号に関わる複数のプロパティを統合し、最適化することで階層間の信号の受け渡し動作を明確にすることができる。
【0109】
更に、本発明の第1の実施の形態によれば、階層間のプロパティを比較し、インターフェース部分の不一致を検出出来るので、下位階層毎に独立に作成されていたプロパティを用いて、上位階層のインターフェースの検証を行うことができ、大規模回路の検証に対応することができる。更に、本発明の第1の実施の形態によれば、欠落しているプロパティを検出出来るので、プロパティチェック手法の質の向上へとつながる。更に、本発明の第1の実施の形態によれば、プロパティが欠落している際に、接続先モジュールのプロパティを利用し、追加作成の際の基礎として使用することにより、プロパティチェック手法の効率化が行える。
【0110】
更に、本発明の第1の実施の形態によれば、階層間におけるインターフェースの不一致を波形化することで、不一致箇所の特定を容易に行える。更に、本発明の第1の実施の形態によれば、階層間のプロパティを比較し、インターフェース部分の不一致を検出出来るので、下位階層毎に独立に作成されていたプロパティを用いて、上位階層のインターフェースの検証を行うことができ、大規模回路の検証に対応することができる。更に、本発明の第1の実施の形態によれば、階層設計を行う場合、論理合成以降の処理で遅延計算を容易するための、階層境界へのレジスタ挿入を不具合を混入することなく、確実に行うことができる。更に、本発明の第1の実施の形態によれば、仕様的な冗長部分を不具合を混入することなく、確実に削減することでき、品質の高い回路記述を作成することが出来る。
【0111】
(第2の実施の形態)
(概念図)
図15に本発明の第2の実施の形態に係るLSI設計検証方法の概念図を示す。図15に示す統合シミュレーション環境80は、論理シミュレーションにおける最上位のトップ用テストベンチ記述(検証専用言語)68と、論理シミュレーションにおけるドライブ用テストベンチ記述(検証専用言語)61と、論理シミュレーションにおける期待値チェック用テストベンチ記述(検証専用言語)67と、検証対象モジュールの上位のテスト用モデル記述(HDL)64とから構成される。検証対象がモジュールTである場合において、まず、検証対象モジュールTを最上位モジュールのモデル記述(M(TOP))から解析し、検証対象モジュールTへ入力を与えるモジュールIのモデル記述(M(I))60の入力接続関係(C(I))及び検証対象モジュールTの入力接続関係(C(T))を得る。そして、ドライブ用テストベンチ記述61は、検証対象モジュールTへ入力を与えるモジュールIのプロパティ記述(プロパティ言語)62に基づき生成される。チェック用テストベンチ記述67は、検証対象モジュールTのプロパティ記述(プロパティ言語)66に基づき生成される。上位のトップ用テストベンチ記述68は、ドライブ用テストベンチ記述61とチェック用テストベンチ記述67とから構成される。また、上位テスト用モデル記述64は、検証対象モジュールTのモデル記述63から生成される。更に、モデル記述63は、レポート65により非活性化コードをレポートする。
【0112】
(LSI設計検証装置の構成)
図16に示す本発明の第2の実施の形態に係るLSI設計検証装置1は、本発明の第1の実施の形態で説明したように、中央演算処理装置(CPU)2と、CPU2に入出力制御装置33を介して接続された入力装置31及び出力装置32と、CPU2に接続された共通データベース4及び主記憶装置35とから少なくとも構成されている。CPU2には、図示を省略したデータベース管理手段が備えられていることは第1の実施の形態と同様である。
【0113】
CPU2には、回路記述読込手段10、解析手段11、プロパティ生成手段21、ドライブ用テストベンチ生成手段22、チェック用テストベンチ生成手段23、トップ用テストベンチ生成手段24、上位モデル生成手段25、論理シミュレーション手段26、コードカバレッジ計測手段27、自動判定手段28が少なくとも含まれている。
【0114】
回路記述読込手段10は、LSI設計検証装置1に実験回路等の回路記述を読み込む。解析手段11は、読み込んだ回路記述を上位階層から、モジュール間の接続関係及び信号の入出力関係を解析する。プロパティ生成手段21は、検証対象モジュールへ入力を与えているプロパティ記述から、検証対象モジュールに接続した信号のみで構成されたプロパティ記述を生成する。ドライブ用テストベンチ生成手段22は、プロパティ記述からテストベクタを発生し、入力するドライブ用テストベンチ記述を生成する。チェック用テストベンチ生成手段23は、検証対象モジュールのプロパティ記述から、シミュレーション上の出力と仕様上の出力とを比較するチェック用テストベンチ記述を生成する。トップ用テストベンチ生成手段24は、ドライブ用テストベンチ記述及びチェック用テストベンチ記述からそれらを並列実行する上位階層のトップ用テストベンチ記述を生成する。上位モデル生成手段25は、検証対象モジュールのモデル記述とのインタフェースとなるシミュレーション用の上位モデル記述を生成する。論理シミュレーション手段26は、ドライブ用テストベンチ記述、チェック用テストベンチ記述、トップ用テストベンチ記述、及び上位モデル記述とからなるシミュレーション環境において論理シミュレーションを行う。コードカバレッジ計測手段27は、コードカバレッジ計測を実行する。自動判定手段28は、コードカバレッジ計測によりレポートされた非活性化コードについて、仕様上活性され得るかどうかを検証対象モジュールへ入力を与えているモジュールのプロパティ記述から自動的に判定する。
【0115】
(第2の実施形態の全体フロー)
図17は、本発明の第2の実施の形態に係るLSI設計検証方法を示したフロー図である。
【0116】
(イ)まず、ステップS31において、回路記述を最上位モジュールのモデル記述M(TOP)59から解析し、モジュール階層構造、モジュール間に存在する信号は何か、またその信号がどのモジュールから出力され、どのモジュールへの入力となっているのかを解析する。検証対象モジュールTの入力信号を出力している或るモジュールをモジュールIとするとき、モジュールIの入力接続関係(C(I))69(a)及びモジュールTの入力接続関係(C(T))69(b)を得る。
【0117】
(ロ)次に、ステップS32において、モジュールIのプロパティ記述P(I)62より、出力が検証対象モジュールTへの入力となっている信号名を含むプロパティ記述(P(I->T))74を抽出する。
【0118】
(ハ) 次に、ステップS33において、ステップS32で抽出されたプロパティ記述(P(I->T))74からドライブ用テストベンチ記述T(drive)61を生成する。
【0119】
(ニ)ステップS34において、検証対象モジュールTのプロパティ記述P(T)66がある場合、これをもとに統合シミュレーション環境80上の出力値と仕様上の出力期待値とを比較するチェック用テストベンチ記述T(check)67を生成する。検証対象モジュールTのプロパティ記述P(T)66がない場合、使用者がマニュアルでチェック用テストベンチ記述T(check)67を記述する。
【0120】
(ホ)ステップS35において、ドライブ用テストベンチ記述T(drive)61及びチェック用テストベンチ記述T(check)67をコンカレントに実行する上位のテストベンチ記述T(TOP)68を生成し、これと検証対象モジュールTのモデル記述M(T)63とのインタフェースとなるシミュレーション用の上位のモデル記述M(TEST)64を生成し、上位のテストベンチ記述T(TOP)68、ドライブ用テストベンチ記述T(drive)61、チェック用テストベンチ記述T(check)67およびシミュレーション用の上位のモデル記述M(TEST)64からなる統合シミュレーション環境80を得る。
【0121】
(ヘ)ステップS36において、ステップS35で得た統合シミュレーション環境80において、生成されるランダム値集合の基になるランダムシード値(SEED)を設定して、モジュールTのモデル記述M(T)63を対象とした論理シミュレーションを実行する。同時にモジュールTのモデル記述M(T)63のコードカバレッジ計測を実行する。
【0122】
(ト)ステップS37において、チェック用テストベンチ記述T(check)67により統合シミュレーション環境80上の出力値と使用上の出力期待値とが一致するか否かが判断される。チェック用テストベンチ記述T(check)67により統合シミュレーション環境80上の出力値と仕様上の出力期待値との不一致がレポートされた場合、ステップS38において、エラーレポート65aより使用者がHDL記述を修正する。チェック用テストベンチ記述T(check)67により統合シミュレーション環境80上の出力値と仕様上の出力期待値との一致がレポートされた場合、ステップS39の処理へ進む。
【0123】
(チ)ステップS39において、ステップS36のコードカバレッジレポート65bのレポートから非活性化コードの有無を判断する。ステップS39の判断において、非活性化コードがない場合、そのまま処理を終了する。ステップS39の判断において非活性化コードがある場合、ステップS40の判断へ進む。
【0124】
(リ)ステップS40において、ステップS32で得たモジュールIのプロパティ記述P(I)62から仕様的に活性化される可能性の有無について判断する。仕様上活性化され得ないと判定した場合、ステップS41において、その非活性化コードを削除し、削除された非活性コードの行番号を削除レポート70としてレポートした後、ステップS36により再度シミュレーションを実行する。
【0125】
(ヌ)ステップS40で活性化され得ると判定した場合、ステップS42において、仕様上活性化されない可能性の有無について判断する。ステップS42において、活性化されない可能性がない場合、ステップS43の処理へ進む。
【0126】
ステップS43において、そのコードを活性化させるランダム値生成制約用テストベンチ記述T(drive-cst)71を生成し、ステップS31へ戻る。ステップS42において、活性化されない可能性がある場合、ステップS44の処理へ進む。ステップS44において、前回の非活性化コードが活性されないかどうか判断する。活性化される場合、ステップS45の処理へ進む。
【0127】
(ル)ステップS45において、ステップS44の判断で活性化され得るか、され得ないか判定不能な場合、ステップS36における前シミュレーションの非活性化コードの中で活性化されたコードがないか確認する。新たに活性化されたコードがない場合は、処理を終了する。新たに活性化されたコードがある場合は、テストパタン数(NUM)を増加させるランダム値制約用テストベンチ記述(T(drive-cst))71を生成し、かつ、ランダムシード値(SEED)を変更し、新たなランダムシード値72を生成し、新たなNUM値(テストパタン数)73を生成し、ステップS36により再度シミュレーションを実行する。ステップS44において、前回の非活性化コードが活性されない場合、処理を終了する。
【0128】
(実験回路の仕様)
次に、本発明の第2の実施の形態で使用する実験回路の仕様について、図18、図19を参照しながら説明する。図18には、本発明の第2の実施の形態で使用する実験回路の回路図を示す。図19には、本発明の第2の実施の形態で使用する実験回路ALU内のモジュール構成を示す。
【0129】
本発明の第2の実施の形態で使用する実験回路は、最上位階層(TOP)75と、第2階層(下位階層)であるコントローラ(CON)76及び算術論理演算ユニット(ALU)77とからなる。上述した検証対象モジュールTをALU77、モジュールTへの入力となる既存モジュールIをCON76とした場合について、本発明の第2の実施の形態に係るLSI設計検証方法を用いて、モデル記述M(ALU)の論理機能を確認するシミュレーション環境を自動生成する方法について以下に説明する。
【0130】
最上位階層のモデル記述M(TOP)59から、モジュール間の接続関係を解析した結果、以下の(a)〜(c)のような信号の入出力関係が解析される。
【0131】
(a)図18に示すように、最上位階層モデル記述M(TOP)59には、19ビットデータからなる入力信号(IN)と、クロック信号(CLK)とが入力され、8ビットデータからなる出力信号(OUT)を出力する。ここで入力信号(IN)は、8ビットからなるデータA及びデータBと、3ビットからなる外部入力信号OP(オペレータ情報)から構成される。外部入力信号(OP)は、AND、OR、EX−O、加算、減算の論理演算あるいは「0」を算出することができる。そして、入力信号(IN)が入力されると、外部入力信号(OP)により、データAとデータBの演算を行い、演算結果を出力信号(OUT)に出力する。
【0132】
(b)次に、下位階層(第2階層)であるパラレル入力シリアル出力コンバータ(CON)76には、19ビットデータからなる入力信号C(CIN)と、クロック信号(CLK)とが入力され、6ビットデータからなる出力信号C(COUT)、2ビットコマンドからなるセレクタC(CSEL)、リセット信号C(CRESET)を出力する。CON76は、エンプティ状態及びフル状態からなる2つの内部状態を有し、▲1▼エンプティ状態の場合は入力信号C(CIN)をレジスタA(8ビット)、レジスタB(8ビット)、外部入力信号OP(オペレータ情報)(3ビット)に振り分けフル状態にし、▲2▼フル状態の場合は、次のシーケンスで信号を出力する:
CRESET=1 -> CRESET=0 -> CRESET=1,CSEL=00,COUT=A -> CSEL=01,COUT=B -> CSEL=10,COUT=OPそして、このシーケンスで信号を出力した後、エンプティ状態に戻る。
【0133】
(c)次に、下位階層(第2階層)であるシーケンシャル入力(ALU)77には、8ビットデータからなる入力信号A(AIN)と、2ビットコマンドセレクタA(ASEL)と、リセット信号A(ARESET)と、クロック信号(CLK)とが入力され、出力信号A(AOUT)が出力される。そして、まず、▲1▼入力信号A(AIN)をコマンドセレクタA(ASEL)の値によって各レジスタA(8ビット)、レジスタB(8ビット)、及び外部入力信号OP(オペレータ情報)(3ビット)へ格納する。即ち:
「ASEL=2’b00」のとき入力信号A(AIN)をレジスタAに格納し、
「ASEL=2’b01」のとき入力信号A(AIN)をレジスタBに格納し、
「ASEL=2’b10」のとき入力信号A(AIN)[2:0]を外部入力信号OP(オペレータ情報)に格納する;
▲2▼外部入力信号OP(オペレータ情報)に値が格納されると、データAとデータBに演算OPを施し、次のサイクルで結果を出力信号A(AOUT)に出力する。外部入力信号OP(セレクタA(ASEL)信号)によってAND(000)、OR(001)、EX−O(010)、加算(011)、減算(100)、0出力(それ以外)を変える;
▲3▼リセット信号A(ARESET)がアサートされたら全レジスタ値を0にする。
【0134】
(実施例2−1)
次に、図17〜図39を用いて、本発明の第2の実施の形態に係るLSI設計検証方法について上述したLSI設計検証方法に即した実施例について説明する。
【0135】
[処理手順1]
まず、図17のステップS31に対応して、まず、図20のステップS501において、最上位モジュールのモデル記述M(TOP)59から回路記述を読み込み、ステップS502において、回路モジュールの階層構造および下位階層(第2階層)間の信号接続関係を解析する。そして、ステップS503において、実施回路のモジュール構造を取得した後、ステップS504において、モジュールIの入力接続関係C(I)69aおよびモジュールTの入力接続関係C(T)69bを抽出する。即ち、以下の説明においては、モジュールIの入力接続関係C(I)69aをCONの入力接続関係C(CON)として、モジュールTの入力接続関係C(T)69bをALUの入力接続関係C(ALU)として抽出する。
【0136】
図21に本発明の第2の実施の形態における実施回路のモジュール構造を示す。図21に示すモジュール構造では、「モジュール名(HDL記述におけるインスタンス名)」というように、括弧の左側にはモジュール名、括弧内にはHDL記述におけるインスタンス名を表す。図21に示すように、最上位回路トップ75には、コントローラ(CON)76及び算術論理演算ユニット(ALU)77が含まれる。そして、ALU77は、レジスタ選択コントローラ(SELECTOR)、データA保持用レジスタ(AREG)、データB保持用レジスタ(BREG)、オペレータOP保持用レジスタ(OPREG)、演算回路(alu8)、演算結果OUT保持用Rレジスタ(RREG)を有する。
【0137】
次に、図22(a)にコントローラ(CON)76の入力接続関係C(CON)、図22(b)にALU77の入力接続関係C(ALU)をそれぞれ示す。図22(a)に示すCON76の入力接続関係C(CON)では、外部入力信号PI.CLKはCON76の信号CON.CLK、外部入力信号PI.INはCON76の入力信号CON.CINであることを示す。また、図22(b)に示すALU77の入力接続関係C(ALU)では、外部入力信号PI.CLKはALU77の信号ALU.CLK、CON76の出力信号CON.COUTはALU77の入力信号ALU.AIN、CON76の信号CON.CSELはALU77の信号ALU.ASEL、CON76のリセット信号CON.CRESETはALU77のリセット信号ALU.ARESETであることを示す。
【0138】
[処理手順2]
次に、ステップS32に対応して、図23のステップS506において、モジュールTのプロパティ記述P(T)66およびモジュールIのプロパティ記述P(I)62を取得する。そして、モジュールTのプロパティ記述P(T)66をモジュールALU77の単体検証用プロパティ記述P(ALU)として、モジュールIのプロパティ記述P(I)62をモジュールCON76の単体検証用プロパティ記述P(CON)として以下に示す。
【0139】
本発明の第2の実施の形態に係る実施例2−1において、モジュールTのプロパティ記述P(T)をモジュールALU77の単体検証用プロパティ記述P(ALU)として、モジュールIのプロパティ記述P(I)62をモジュールCON76の単体検証用プロパティ記述P(CON)として以下に示す。
【0140】
ALU77の単体検証用プロパティ記述P(ALU)は、前述した本発明の第2の実施の形態の実施回路仕様におけるALU77の動作▲1▼、▲2▼、▲3▼を検証するためのプロパティ記述P(ALU-1)、P(ALU-2)、P(ALU-3)より構成され、モジュールCON76の単体検証用プロパティ記述P(CON)は、CON76の動作▲1▼、▲2▼を検証するためのプロパティ記述P(CON-1)、P(CON-2)より構成される。図24(a)にALU77の単体検証用のプロパティ記述P(ALU)、図24(b)にCON76の単体検証用プロパティ記述P(CON)を示す。ここで、プロパティ記述では、実回路の階層構造に即した記述をする必要があるため、例えばALU77のレジスタAは、TOP.ALU.AREG.outのように記述する必要があるが、簡略化のため単にAと表記する。また、図24(a)〜(c)において、「Cn」の「n」は「nサイクル後」を表す。例えば、「C0(ASEL==2'b00)=>C1(A==AIN)」という記述における「C0」は「0サイクル後」、「C1」は「1サイクル後」を表す。
【0141】
次に、モジュールIのプロパティ記述P(I)62について、モジュールTに関係した信号のみで構成されたプロパティ記述P(I->T)74を抽出する。プロパティ記述P(I->T)74は次の処理Aにより得られるため、ステップS507において、処理Aを実行する。
【0142】
[処理A]
(イ)まず、ステップS508において、プロパティ記述P(I)62について、モジュールIの出力信号名を検索する(即ち、図24(b)に示すプロパティ記述P(CON)について、CON76の出力信号名を検索する。)。
【0143】
(ロ)次に、ステップS509において、検索された信号名について、ステップS501〜S504までの処理手順1で得たモジュールTの入力接続関係C(T)69(b)の左辺に信号名があるか否かを判断する。ない場合はステップS511において、その項を消去し、左辺に信号名がある場合はステップS510においてそのままにする(即ち、検索された信号名について、図22(b)に示す算術論理演算ユニット(ALU)77の入力接続関係C(ALU)の左辺に信号名がない場合はその項を消去し、左辺に信号名がある場合はそのままにする。)。
【0144】
(ハ)最後に、記述の途中の場合は(イ)の処理に戻って途中の行から検索し、記述の終端の場合は、ステップS512において、プロパティ記述P(I)について、プロパティ記述P(I->T)を抽出し、終了する。
【0145】
以上の処理Aを図24(b)に示すプロパティ記述P(CON-1)およびプロパティ記述P(CON-2)に適用すると、プロパティ記述P(CON-1)は全て消去され、プロパティ記述P(CON-2)より図24(c)に示すプロパティ記述P(CON->ALU)を得る。
【0146】
[処理手順3]
次に、ステップS33に対応して、図25のステップS514〜ステップS526の処理において、処理手順2で得られたプロパティ記述P(I->T)74(図24(c)P(CON->ALU))より、ドライブ用テストベンチT(drive)61を生成する。テストベンチ記述はタスク部とクラス宣言部からなる。よって、ドライブ用テストベンチ記述T(drive)61は、ドライブ用タスク部テストベンチ記述T(drive_TASK)61aとドライブ用クラス宣言部テストベンチ記述T(drive_DECLARE)61bとにより構成される。タスク部では、実質的な処理シーケンスが記述される。ドライブ用タスク部テストベンチ記述T(drive_TASK)61aは、処理Aで得られたプロパティ記述P(I->T)74に次の処理Bを施して得られる。図25を用いて、処理Bのフローを説明する。
【0147】
[処理B]
まず、図25のステップS514において、プロパティ記述P(I->T)を取得し、ステップS515において、処理Bを実行する。
【0148】
(イ)ステップS516において、モジュールTの入力接続関係C(T)69bの左辺の信号名を右辺の信号名に変換する。即ち、図22(b)に示すモジュールALUの入力接続関係C(ALU)の左辺の信号名を右辺の信号名に変換する。
【0149】
(ロ) 次に、ステップS517において、値が固定されてないモジュールTへの入力信号(IN)をランダム生成値が割り当てられる記述“rand.IN”に変換する。尚、この際にビット幅を調整する。即ち、ALU77への入力A(AIN)を"rand.IN"に変換し、ビット幅を調整する。
【0150】
(ハ) 次に、ステップS518において、時相に関する記述を抽出し、ステップS519において、抽出した時相に関する記述が絶対時間であるか否かを判断する。絶対時間である場合は、ステップS520において、絶対時間から相対時間へ変換する。ステップS519の判断において、抽出した時相に関する記述が既に絶対時間である場合は、ステップS521の処理へ進む。
【0151】
(ニ) ステップS521において、条件文以外において、DUT(被検証回路)の信号のサンプル値と期待値の比較を表現する“==”をドライブを表現する“=”へ変換し、“&&”を“,”へ変換する。例えば、処理Aで取得したプロパティ記述P(CON->ALU)において、「C2((CRESET==1’b1)&& (CSEL==2’b00)&& (COUT==A));」という記述は、(ハ)の処理で「C2((ARESET==1’b1)&& (ASEL==2’b00)&& (AIN==rand.A));」となっているものを「C2((ARESET=1’b1),(ASEL=2’b00),(AIN=rand.A));」というように変換する。
【0152】
(ホ)次に、ステップS522において、一連のテストパターンのシーケンスを繰り返し入力するためのforループ記述を追加する。このとき繰り返す回数をNUMとする。また、ステップS523において、チェック部の比較が終了するまで次のテストベクタの入力を待つ必要があり、nサイクル待つ“@n”を記述する(nは処理手順4で決定する)。即ち、ステップS521で得た「C2((ARESET=1’b1),(ASEL=2’b00),(AIN=rand.A));」中の「C2」は、ここで「@1」に変換する。そして、記述の終わりに「@n」を加える。
【0153】
(ヘ) ステップS524において、シミュレーション終了記述‘exit(0)’、変数宣言、タスクブロック化する記述“task <タスクが属するクラス名>::<タスク名>(){<処理シーケンス本体>}”を追加する。
【0154】
(ト)以上のステップS514〜S524までの処理Bを本発明の第2の実施の形態に係る実施例2−1に適用すると、ステップS525において、図26(a)に示すドライブ用タスク部テストベンチ記述T(drive_TASK)61aを得られる。
【0155】
(チ)次に、ステップS526において、ドライブ用クラス宣言部テストベンチ記述T(drive_DECLARE)61bを生成する。クラス宣言部では、変数宣言およびタスク宣言が記述される。ランダム生成値を割り当てる変数はタスク内でなく、クラス宣言内で宣言する。変数宣言の変数名は処理B(ロ)より、タスク宣言の宣言名はステップS524により得られる。以上の処理を本発明の第2の実施の形態に係る実施例に適用し、図26(b)に示すドライブ用クラス宣言部テストベンチ記述T(drive_DECLARE)61bを得る。
【0156】
[処理手順4]
次にステップS34において、チェック用テストベンチ記述T(check)67を生成する。チェック用テストベンチ記述T(check)67は、ドライブ用テストベンチ記述T(drive)61同様、チェック用タスク部テストベンチ記述T(check_TASK)67aとチェック用クラス宣言部テストベンチ記述T(check_DECLARE)67bとにより構成される。
【0157】
ステップS34においてチェック用テストベンチ記述T(check)67を生成する前に、まず、チェック用タスク部テストベンチ記述T(check_TASK)67aを生成する。
【0158】
チェック用タスク部テストベンチ記述T(check_TASK)67aは、(イ) モジュールTの各プロパティ記述P(T-n)を変換して得るプロパティチェック用テストベンチ記述T(T-n)と、(ロ)上述した(イ)で得た全タスクを並列に実行するための、コンカレント処理用テストベンチ用記述T(T-all)の2つとから構成される。
【0159】
そこで、チェック用タスク部テストベンチ記述T(check_TASK)67aを生成するために、プロパティチェック用テストベンチ記述T(T-n)を生成する。
【0160】
テストベンチ記述におけるDUT(被検証回路)信号の出力値と期待値の比較チェックは、条件文以外において“==”で実現され、これにより左辺と右辺を比較し、一致しない場合は、エラーをレポートして、シミュレーションを終了する。
【0161】
プロパティチェック用テストベンチ記述T(T-n)は、各プロパティ記述P(T-n)に図28のステップS530〜S541の処理からなる処理Cを施して得る。
【0162】
[処理C]
上述した処理Cを本発明の実施の形態に係るプロパティ記述P(T-n)に対応してプロパティ記述P(ALU-2)に適用し、テストベンチ記述T(ALU-2)を得る場合について以下に示す。
【0163】
(イ)図28のステップS530において、プロパティ記述P(T-n)に処理Cを実行する。まず、ステップS531において、.nを用いた時相に関する変換する。テストベンチ記述では、過去のDUT(被検証回路)の信号値をサンプル可能であるが、未来の値はサンプル不能である。よって、最も未来の時相へ基準(現在の時刻)をシフトする必要がある。まず、図24(a)に示すP(ALU-2)で、C3が基準となるため、ステップS531の処理を行うと図27(a)に示すような混在記述PT(ALU-2)#1を得る。ここで、「signal.n」でnサイクル前のsignal(信号)の値を表す。
【0164】
(ロ)次に、ステップS532において、@を用いた時相に関する変換を行う。テストベンチ記述における「signal.n」は、nサイクル前からの値を保持する必要があるため、nが大きいほどメモリ消費量が大きい。そこでnサイクル時間を進める記述「@n」を用いて変換する。このとき、図27(a)中の「AOUT==A.1 & B.1」では、左辺と右辺の時間が異なるので、変数AOUTexpを宣言し、これを用いて記述を分割する。しかし、「OUT= ̄IN.1」のような場合、
pre_IN= ̄IN
@1 OUT=pre_IN
としてもメモリ消費量は変わらないので、このような場合は変換しないこととする。
【0165】
図27(a)に示す混在記述PT(ALU-2)#1にステップS532の処理を行い、図27(b)に示す混在記述PT(ALU-2)#2を得る。即ち、図27(a)に示す混在記述PT(ALU-2)#1では、「OP.1==3'b000=>AOUT==A.1&B.1;」にステップS532の処理を施すと、図27(b)に示す混在記載PT(ALU-2)#2に示すように、まず、期待値の生成及びその変数への格納を行うべく「@1 OP==3'b000=>AOUTexp==A&B;」と変換する。次に、実測値と期待値とを比較すべく「@1 AOUT==AOUTexp」と変換する。以上のステップS531及びS532の処理をオペレータ情報OPの全ての場合について適用し、次のステップS533及びS534ではオペレータ情報OPの全ての場合について変換する。
【0166】
(ハ)ステップS533において、条件文の変換を行う。まず、プロパティ記述における「=>(imply記述)」の左辺は条件を表すためテストベンチ記述のif文に変換する。さらに、外部入力信号OP(オペレータ情報)の全ての場合について、時相およびレジスタが同一であるため、これらは同時に成立せず、if/else_if文あるいは、case文で結合できる。図27(b)に示す混在記述PT(ALU-2)#2にステップS533の処理を施すと図29(a)に示すタスク部テストベンチ記述T(ALU-2)を得ることができる。
【0167】
(ニ)次に、ステップS534において、whileループ及びタスクブロック化する記述の追加を行う。まず、ループ文を付加し、シミュレーションの終了はドライブ用テストベンチ記述T(drive)61で制御されているため、ここでは無限ループにするための「while(1)」を用い、ドライブ側で実行される強制終了でループ処理を終了することにする。更に、変数宣言、タスクブロック化する記述を追加すると、ステップS535において、プロパティチェック用テストベンチ記述T(T-n)を取得する。
【0168】
図29(a)に示すチェック用タスク部テストベンチ記述T(ALU-2)にステップS534の処理を施すと図29(b)に示すチェック用タスク部テストベンチ記述T(ALU-2)を得ることができる。同様に、図24(a)に示すプロパティ記述P(ALU-1)に以上の処理(ステップS531〜S534)を適用すると、ステップS535において、図29(c)に示すチェック用タスク部テストベンチ記述T(ALU-1)を得ることができる。同様に、図24(a)に示すプロパティ記述P(ALU-3)に以上の処理(ステップS531〜S534)を適用すると、ステップS535において、図30(a)に示すチェック用タスク部テストベンチ記述T(ALU-3)を得ることができる。
【0169】
(ホ)ここで、ステップS536において、S530〜S534で求めたドライブ用テストベンチ記述T(drive)61(図26(a)及び(b))における@nのnを求める。nは各チェック用テストベンチ記述T(check)の比較“==”が行われる時刻が、ドライブ用テストベンチ記述T(drive)における時刻において最も遅いものについて、その時刻とドライブ用テストベンチ記述T(drive)におけるn=0の場合の最後の時刻との差である。
【0170】
たとえば、実施例2−1において、ドライブ用テストベンチ記述T(drive)61における時間(時刻)を図30(b)に示すタスク部テストベンチ記述T(drive_TASK)61aの右側の列に示すように(T=n)と記述する。このとき、図29(c)に示すチェック用タスク部テストベンチ記述T(ALU-1)では、ASEL==2’b00ならT=4、ASEL==2’b01ならT=5、ASEL==2’b10ならT=6、T(ALU-2)ではT=7、T(ALU-3)ではT=3となり、T=7が最も遅いため、n=7-5=2となる。
【0171】
(ヘ)次に、ステップS537〜S539の処理において、コンカレント処理用テストベンチ記述T(T-all)を生成する。コンカレント処理用テストベンチ記述T(T-all)には、ステップS537〜S539の処理が施され3つの事項が記述される。まず、ステップS537において、タスクT(T-n)が属するクラスをインスタンス化を記述する。次に、ステップS538において、並列実行するタスク名を列挙した「fork/join」文を記述する。そして、ステップS539において、タスクブロック化(タスク名:check_all)する記述を追加する。以上のステップS537〜S539は、各プロパティチェック用テストベンチ記述T(T-n)を生成する際のステップS534から得られる。
【0172】
(ト)以上のステップS537〜S539の処理を実施例2−1に適用すると、ステップS540において、図30(c)に示すテストベンチ記述T(ALU-all)が生成される。従って、上述したステップS530〜S540の処理を実行することにより、ステップS541において、T(ALU-1)、T(ALU-2)、T(ALU-3)、T(ALU-all)から構成されたチェック用タスク部テストベンチ記述T(check_TASK)61aを生成することができる。
【0173】
(チ)次に、チェック用クラス宣言部テストベンチ記述T(check_DECLARE)61bを生成する。チェック用のクラス宣言部では、タスク部においてランダム変数を使用しないため、タスク宣言のみを記述する。これらは各プロパティチェック用テストベンチ記述T(T-n)を生成する際のステップS534およびコンカレント処理用のタスク名check_allから得られる。
【0174】
上述したように、ステップS530〜S540までの処理を実施例2−1に適用すると、ステップS541において、図30(d)に示すチェック用クラス宣言部テストベンチ記述T(check_DECLARE)61bを生成することができる。
【0175】
[処理手順5]
次に、図31のステップS542〜S546までの処理において、ドライブ用テストベンチ記述T(drive)61、チェック用テストベンチ記述T(check)67をコンカレントに実行し、これらの上位に位置するTOP用テストベンチ記述T(TOP)68を生成する。
【0176】
(イ)まず、図31のステップS542において、TOP用メイン部テストベンチ記述T(check_DECLARE)67bを取得する。次に、ステップS543において、T(drive)及びT(check)が属するクラスのインスタンス化を記述する。次に、ステップS544において、「fork/join」記述で並行に実行するタスク名を列挙する。次に、ステップS545において、メインブロック化する記述「main<メインブロック名>{<処理本体>}」を追加する。そして、ステップS542〜S545までの処理により、ステップS546において、上位テストベンチ記述T(TOP)を生成する。これらは実施例2−1に依存せず、図32(a)に示すTOP用メイン部テストベンチ記述T(check_DECLARE)67bを用いる。また、実施例2−1においてもこれを用いる。以上で得られた上位テストベンチ記述T(TOP)68と検証対象モジュールM(T)63とのインタフェースとなるシミュレーション用の上位モデル記述M(TEST)64を生成する。
【0177】
(ロ)次に、ステップS547〜S551までの処理において、シミュレーション用のシミュレーション用上位モデル記述M(TEST)64を生成する。まず、ステップS547において、検証対象モジュールTのモデル記述M(T)63を取得する。次に、ステップS548において、宣言部として、モジュール宣言、および検証対象モジュールにおいてinputおよびoutput宣言されている信号をwire宣言し、さらにクロック生成用に上位クロックTEST_CLKをreg宣言を記述する。
【0178】
(ハ)次に、ステップS549において、インスタンス部として、検証対象モジュールのモデル記述M(T)63のインスタンスを記述する。更に、ステップS550において、クロック生成部として、上位クロック生成、上位クロック生成の検証対象モジュールのクロックへの割り当て、上位クロックの初期値を記述する。そして、ステップS551において、シミュレーション用上位モデル記述M(TEST)を生成する。実施例において、検証対象モジュールALUのモデル記述M(ALU)から得られたシミュレーション用上位モデル記述M(TEST)64を図32(b)に示す。
【0179】
(ニ)最後に、ステップS552において、上位テストベンチ記述T(TOP)68、ドライブ用テストベンチ記述T(drive)61、チェック用テストベンチ記述T(check)67及びシミュレーション用上位モデル記述M(TEST)64からなる統合シミュレーション環境80を得る。
【0180】
[処理手順6]
次に、図33に示すステップs554において、ランダムシード値SEEDを用いて、図31のステップs552で得られた統合シミュレーション環境80において、検証対象モジュールのモデル記述M(T)63を対象とした論理シミュレーションおよびカバレッジ計測を実行する。これは、テストベンチ用ツール、シミュレーションツール、コードカバレッジツールを同時に使用するものである。この際、ステップS555において、NUM値およびランダムシード値SEEDはレポートされるようにしておく。尚、ランダムシード値SEEDは、生成されるランダム値の集合の基になる値で、この値を変えることによって生成されるランダム値の集合を変えることができる。そして、実施例2−1において、ランダムシード値SEEDをデフォルト設定値のままで、ステップS555で得られた統合シミュレーション環境80において、モデル記述M(ALU)を対象とした論理シミュレーションおよびカバレッジ計測を実行する。
【0181】
[処理手順7]
次に、図33のステップS556において、モデル記述の修正が行われる。ステップS557において、エラーの有無が確認され、エラーレポート65がレポートされる場合は、図17のステップS31に対応する図20のステップS501〜S504までの処理に戻り、エラーがレポートされなくなるまで、使用者がモデル記述を修正する。
【0182】
ステップS557において、検索対象モジュールALUのモデル記述M(ALU)に関するシミュレーションで、エラーがレポートされなくなるまでM(ALU)の修正が済むと、処理手順8に対応したステップS558の処理へ進む。
【0183】
[処理手順8]
図33のステップS558において、コードカバレッジのレポートから非活性化コードが無いかどうか判断し、図35のステップS560〜S578までの処理に対応する処理手順9の処理へ進む。
【0184】
そこで、たとえば、本発明の第2の実施形態に係る実施例2−1において、以下の2つ(非活性化コード1と非活性化コード2)が非活性化コードとしてレポートされたと仮定する。
【0185】
▲1▼ 非活性化コード1として、検証対象モジュールALU下のモジュールSELECTORのcaseブロックにおいて、sel==default値で、非活性化がレポートされたとする。図34(a)に非活性化コードレポートR(UA1)を示す。
【0186】
▲2▼ 非活性化コード2として、検証対象モジュールALU下のモジュールalu8のcaseブロックにおいて、op==default値について、非活性化がレポートされたとする。図34(b)に非活性化コードレポートR(UA2)を示す。
【0187】
[処理手順9]
図33のステップS558に対応する処理手順8において、非活性化コードがある場合、処理手順2で得たプロパティ記述P(I->T)74から仕様的に活性化されることがないかどうか、処理手順9として図35のステップS560〜S578において判定する。そこで、検証対象モジュールのモデル記述M(T)63で検出された非活性化コードについて、図S560〜S578までの処理Dにより仕様上活性化され得るかどうかを判定する。
【0188】
[処理D]
(イ)まず、ステップS560において、処理Dの実行を開始する。まず、ステップS561において、検証対象モジュールのモデル記述M(T)63で検出された非活性化コードの信号をS(T)とし、その値をVALとする。次に、ステップS562において、VALがcase文の「default」あるいはif文の「else」であるかを判断し、ステップS563において「default」あるいは「else」に相当する値を求める。次に、ステップS564において、信号S(T)をモデル記述M(T)63内でトレースし、ステップS565において、信号S(T)のモデル記述M(I)60における信号名S(I)を求め、これをSIGとする。そして、ステップS566において、検索対象をSIGが記述されたプロパティ記述P(I)62とする。
【0189】
(ロ)次に、ステップS567において、 条件文以外で左辺に記述された信号名SIGを検索する。ステップS568において、検索された記述について、右辺において固定値を与えているか否かを判断し、右辺において固定値を与えている場合は、ステップS569において、その固定値を記憶しステップS570の処理へ進む。ステップS568の判断において、右辺でREG変数(レジスタ変数)を与えている場合は、ステップS571の処理へ進む。
【0190】
(ハ)次に、ステップS570において、プロパティ記述の途中であるか否かを判断する。プロパティ記述の途中の場合はステップS567の処理へ戻り、続きの行から検索を行う。ステップS570において、プロパティ記述の終端の場合はステップS576の処理へ進む。
【0191】
(ニ)ステップS571において、検索対象のSIGをモデル記述M(I)内でトレースする。次に、ステップS572において、信号のとり得る値が特定できてトレースできるか否かを判断し、できる場合はステップS573においてその制約を記憶する。ステップS574において、その信号が主入力信号であるか否かを判断する。その信号が主入力信号である場合は、処理9を終了し、主入力でない場合は、ステップS575において、新たにSIG、検索対象を他のP(I)62としてステップS570の処理へ戻る。尚、ステップS574において、信号のとり得る値が特定できない場合、「判定不能」として処理を終了する。
【0192】
(ホ)値VALがステップS569で得た固定値やステップS573で得た値の制約範囲に含まれているか否かをステップS576において判断する。含まれている場合、ステップS578において、「活性化され得る」と判定し処理を終了する。含まれていない場合ステップS577において、「活性化され得ない」と判定し処理を終了する。
【0193】
以上のステップS560〜S578までの処理を実施例2−1の非活性化コード1および非活性化コード2に適用した場合を以下に示す。
【0194】
まずはじめに、ステップS560において非活性化コード1の判定に処理Dの実行を開始する。そして、上述したステップS561〜S563の処理により、記述R(UA-1)からS(T)=sel、VAL=2’b11となる。ステップS564において、セレクタ信号(sel)をM(ALU)内でトレースし、sel(モジュール:SELECTOR(セレクタ))->ASEL(モジュール:ALU)とする。更に、ステップS565において、図20のステップS504で求めたC(ALU)よりS(I)=CSELとなり、SIG=CSELとする。そして、ステップS566において、検索対象をプロパティ記述P(CON-2)とする。
【0195】
次に、ステップS567〜S570において、「2’b00」、「2’b01」、「2’b10」の固定値を記憶しステップS576の処理へ進む。ステップS576において、値VALの「2’b11」は「2’b00」、「2’b01」、「2’b10」の制約外であるため「仕様上活性化され得ない」と判定し処理を終了する。
【0196】
次に、ステップS560において非活性化コード2の判定に処理Dの実行を開始した場合について検討する。上述したステップS561〜S563の処理において、記述R(UA-2)からS(T)=op、VAL=3'b101、3'b110、3'b111となる。ステップS564において、sel信号をM(ALU)内でトレースし、op(モジュール:alu8)->OPOUT (モジュール:ALU)->opout=ain[2:0](モジュール:OPREG)->AIN(モジュール:ALU)となる。更に、ステップS565において、図20のステップS504で求めたC(ALU)より、S(I)=COUTとなり、SIG=COUTとする。そして、ステップS566において、検索対象をプロパティ記述P(CON-2)とする。
【0197】
次に、ステップS567〜S568、ステップS571〜S575の処理を実行し、COUT=OP(REG変数)より、プロパティ記述P(CON-1)を検索する。そして、ステップS571において、信号をOP=CIN[18:16](モジュール:CON)をトレースする。ステップS572において、入力信号C(CIN)は主入力で、かつとり得る値が3ビット(3’b000から3’b111)であることが特定する。最後にステップS576において、値VALの「3'b101」、「3'b110」、「3'b111」は「3’b000」から「3’b111」に含まれるのでステップS578において「仕様上活性され得る」として判定し、処理を終了する。
【0198】
[処理手順10]
ステップS577において、「仕様上活性化され得ない」と判定された場合、ステップS581において、その非活性化コードを削除し、ステップS582において削除された非活性コードの行番号をレポート後、図20のステップS501の処理へ戻る。例えば、実施例2−1の非活性化コード1について、モデル記述M(ALU-1)のdefault文は、仕様上活性化され得ないことが確認されたので、モデル記述M(ALU-1)からdefault文をコメントアウト“//”で無効化し、そのファイルにおける削除行番号をステップS582においてレポートし、図20のステップS501の処理へ戻る。図37に修正版モデル記述M(ALU-1)を示す。
【0199】
[処理手順11]
ステップS578において、「活性化され得る」と判断された場合、ステップS585において、そのコードを活性化させるランダム値生成制約用テストベンチ記述T(drive-cst)を生成し、図33のステップS554の処理に戻り、これをドライブ用テストベンチ記述T(drive)61にインクルードして、再度シミュレーションを実行する。
【0200】
例えば、実施例2−1において、非活性化コード2について、モデル記述M(ALU-2)のdefault文は、仕様上活性化され得ることが確認され、トレース結果より「3’b000<=OP<=3’b111」であるので、モデル記述M(ALU-2)のdefault文を活性化させるテストベクタを生成させるための制約用テストベンチ記述を生成する。また、テストベンチ記述T(drive)61において、「AIN={5’b00000,rand.OP}」より、ランダム生成されるOP値に対して、「OP>=3'b101」かつ「OP<=3'b111」というランダム生成制約を加えて、図38に示すランダム制約用テストベンチ記述T(cst1)71aを得る。更に、 実施例2−1において、生成制約用テストベンチ記述T(cst1)71aをドライブ用テストベンチ記述T(drive)61にインクルードして、再度シミュレーションを実行する。
【0201】
[処理手順12]
ステップS576において、活性化され得るか、され得ないか判定不能な場合、ステップS588において前回の非活性化コードで活性化されたコードがないか判断する。 活性化されたコードがない場合は処理を終了する。活性化されたコードがある場合は、ステップS589において、前回のシミュレーション時のNUM値を「prenum」とするとき、これより大きい値が生成されるようランダム生成制約71を生成する。更に、ステップS590において、ランダムシード値SEEDを変更するオプションを付加し、異なるランダム値の集合を生成するよう指定してシミュレーションを実行し、終了する。これら2つの値を変えることによって、異なるランダム値の集合を生成することができ、非活性化コードを活性化させる可能性を上げることができる。
【0202】
例えば、実施例2−1において、「prenum=5」であったとすると、図39に示すランダム制約用テストベンチ記述T(cst2)71bを得る。実施例2−1において、生成制約用テストベンチ記述T(cst2)71bをドライブ用テストベンチ記述T(drive)61にインクルードし、かつランダムSEED値を変更するオプションを付加し、ステップS36により再度シミュレーションを実行する。
【0203】
[処理手順13]
図33のステップS558において、コードカバレッジ計測がレポートする非活性化コードが無くなった場合、あるいは、ステップS558において、前シミュレーション時にレポートされた非活性化コードについて、活性化が全くなかった場合、本手法の処理を終了する。たとえば実施例2−1において、非活性化コード1は削除され、非活性化コード2について2回目のシミュレーションで解消され、本処理を終了する。
【0204】
(第2の実施の形態の効果)
本発明の第2の実施の形態によれば、検証対象モジュールへ入力を与え、かつ仕様誤りおよび仕様抜けが無いことが確認済みのモジュールのプロパティ記述から信頼性のあるドライブ用テストベンチ記述作成を自動生成することによって、テストベンチ記述に関わる時間を短縮することを可能とし、かつ仕様内の有効なテストベクタのみ生成させることによってシミュレーション時間を短縮することを可能とする。
【0205】
更に、本発明の第2の実施の形態によれば、検証対象モジュールのプロパティ記述から、チェック用テストベンチ記述を自動生成することによって、テストベンチ記述作成に関わる時間を短縮することを可能とする。更に、本発明の第2の実施の形態によれば、ドライブ用テストベンチ記述およびチェック用テストベンチ記述を並行実行する上位階層のトップ用テストベンチ記述作成を自動生成することによって、テストベンチ記述作成に関わる時間を短縮することを可能とする。
【0206】
更に、本発明の第2の実施の形態によれば、非活性化コードについて、テストパタンの不足で活性化されないのか、仕様上活性され得ないかを自動で判定することで、前者の場合、その非活性化コードを誤って削除してしまうことを防止し、後者の際に無駄なシミュレーション時間を省くことを可能とする。更に、本発明の第2の実施の形態によれば、仕様上活性され得ないと判断した非活性化コードを削除することによって、面積削減することを可能とする。更に、本発明の第2の実施の形態によれば、仕様上活性され得ると判断した非活性化コードを活性化させるランダム値生成制約テストベンチ記述を自動生成し、これを読み込んでシミュレーションすることによって、非活性コードを活性化させ検証確度を上げることを可能とする。
【0207】
(その他の実施の形態)
上記のように、本発明は第1乃至第3の実施の形態によって記載したが、この開示の一部をなす論述及び図面は、この発明を限定するものであると理解すべきではない。この開示から、当業者には様々な代替実施の形態、実施例、及び製造工程技術が明らかとなろう。
【0208】
本発明はここでは記載していない様々な実施の形態等を含むことは勿論である。従って、本発明の技術的な範囲は上記説明から妥当な特許請求の範囲に係る発明特定事項によってのみ定められるものである。
【0209】
【発明の効果】
本発明によれば、現在、完全に独立してしまっているモジュール毎のプロパティ同士を検証することにより、各モジュール間のインタフェース仕様の最適化を行うことのできるLSI設計検証装置、LSI設計検証方法、及びLSI設計検証プログラムを提供することができる。
【0210】
本発明によれば、外部モジュールのプロパティ情報(回路の動作仕様を専用の書式で表現したもの)から、検証対象モジュールに入力を与えるシミュレーション環境を自動生成し、また、検証対象モジュールのプロパティ情報から、検証対象モジュールの出力を期待値と比較するシミュレーション環境を自動生成し、これらを統合したシミュレーション環境を生成することにより、シミュレーション時間を短縮化したLSI設計検証装置、LSI設計検証方法、及びLSI設計検証プログラムを提供することができる。
【0211】
本発明によれば、計測して得た非活性化コードと外部モジュールのプロパティ情報の自動照合を行うことにより、冗長な回路記述を削除し面積を削減することのできるLSI設計検証装置、LSI設計検証方法、及びLSI設計検証プログラムを提供することができる。
【図面の簡単な説明】
【図1】本発明におけるLSI設計検証装置の構成図である。
【図2】本発明に係るLSI設計検証方法のフロー図である。
【図3】本発明の第1の実施形態に係る実験回路を示した回路図である。
【図4】本発明に係る共通データベース4を示した図である。
【図5】図5(a)は、本発明に係るMULT側のプロパティ情報の一例、図5(b)は、CON側のプロパティ情報の一例を示す。
【図6】本発明の第1の実施形態に係るLSI設計検証方法の実施例1−1の処理手順1のフロー図(その1)である。
【図7】本発明の第1の実施形態に係るLSI設計検証方法の実施例1−1の処理手順1のフロー図(その2)である。
【図8】図8(a)は、本発明の第1の実施形態に係るMULTの信号リストを示したものであり、図8(b)は、CONの信号リストを示したものである。
【図9】本発明の第1の実施形態に係るLSI設計検証方法の実施例1−1の処理手順2のプロパティ検出・抽出に関するフロー図である。
【図10】本発明の第1の実施形態に係るLSI設計検証方法の実施例1−1の処理手順3のフロー図である。
【図11】図11(a)は、CON側のプロパティを示したものであり、図11(b)はCON側のプロパティを変換した一例を示したものである。
【図12】本発明の第1の実施形態に係るLSI設計検証方法の実施例1−1の処理手順4及び5のフロー図である。
【図13】本発明の第1の実施形態に係るLSI設計検証方法における波形表示の一例を示す。
【図14】図14(a)に本発明の第1の実施形態に係るLSI設計検証方法の実施例1−2で用いるMULTの単体検証用プロパティの一例、図14(b)にCONの単体検証用プロパティの一例を示す。
【図15】本発明の第2の実施形態に係るLSI設計検証方法の概念図を示す。
【図16】本発明におけるLSI設計検証装置の構成図である。
【図17】本発明に係るLSI設計検証方法のフロー図である。
【図18】本発明の第2の実施形態に係るLSI設計検証方法で用いる実験回路図を示す。
【図19】本発明の第2の実施形態に係る実験回路ALUのモジュール構成を示す。
【図20】本発明の第2の実施形態に係るLSI設計検証方法の実施例2−1の処理手順1のフロー図である。
【図21】本発明の第2の実施形態における実験回路のモジュール構造を示す
【図22】図22(a)に本発明の第2の実施形態に係るCONの入力接続関係、図22(b)にALUの入力接続関係を示す。
【図23】本発明の第2の実施形態に係るLSI設計検証方法の実施例2−1の処理手順2のフロー図である。
【図24】図24(a)に本発明の第2の実施形態に係るALUの単体検証用プロパティ、図24(b)にCONの単体検証用プロパティ、図24(c)にプロパティ記述P(CON->ALU)を示す。
【図25】本発明の第2の実施形態に係るLSI設計検証方法の実施例2−1の処理手順3のフロー図である。
【図26】図26(a)に本発明の第2の実施形態に係るドライブ用タスク部テストベンチ記述、図26(b)にクラス宣言部テストベンチ記述を示す。
【図27】図27(a)に本発明の第2の実施形態に係る混在記述例(その1)、図27(b)に混在記述例(その2)を示す。
【図28】本発明の第2の実施形態に係るLSI設計検証方法の実施例2−1の処理手順4のフロー図である。
【図29】図29(a)に本発明の第2の実施形態に係る回路ALU-2のタスク部テストベンチ記述(その1)、図29(b)にALU-2のタスク部テストベンチ記述(その2)、図29(c)にALU-1のタスク部テストベンチ記述を示す。
【図30】図30(a)に本発明の第2の実施形態に係る回路ALU-3のタスク部テストベンチ記述、図30(b)にタスク部テストベンチ記述T(drive_TASK)、図30(c)にタスク部テストベンチ記述T(ALU-all)、図30(d)にクラス宣言部テストベンチ記述T(check_DECLARE)を示す。
【図31】本発明の第2の実施形態に係るLSI設計検証方法の実施例2−1の処理手順5のフロー図である。
【図32】図32(a)にトップ用メイン部テストベンチ記述、図32(b)にシミュレーション用モデル記述を示す。
【図33】本発明の第2の実施形態に係るLSI設計検証方法の実施例2−1の処理手順6乃至8のフロー図である。
【図34】図34(a)は非活性化コードレポートR(UA1)、図34(b)は非活性化コードレポートR(UA2)を示す。
【図35】本発明の第2の実施形態に係るLSI設計検証方法の実施例2−1の処理手順9のフロー図である。
【図36】本発明の第2の実施形態に係るLSI設計検証方法の実施例2−1の処理手順10乃至13のフロー図である。
【図37】本発明の第2の実施形態に係る修正版モデル記述M(ALU-1)を示す。
【図38】本発明の第2の実施形態に係るランダム制約用テストベンチ記述T(cst1)を示す。
【図39】本発明の第2の実施形態に係るランダム制約用テストベンチ記述T(cst2)を示す。
【符号の説明】
1 LSI設計検証装置
2 中央演算処理装置(CPU)
4 共通データベース
5 モジュール名データベース
9 共通データベース格納手段
10 回路記述読込手段
11 解析手段
12 プロパティ読込手段
13 モジュール間プロパティ抽出手段
14 信号動作部分抽出手段
15 比較手段
16 不一致検出手段
17 レポート生成手段
18 冗長部削除手段
19 レジスタ挿入手段
20 波形表示手段
21 プロパティ生成手段
22 テストベンチ生成手段
22a ドライブ用テストベンチ生成手段
22b チェック用テストベンチ生成手段
22c トップ用テストベンチ生成手段
22d ランダム値生成制約用テストベンチ生成手段
23 上位モデル生成手段
24 論理シミュレーション手段
25 コードカバレッジ計測手段
26 自動判定手段
27 非活性コード削除手段
28 レポート手段
31 入力装置
32 出力装置
33 入出力制御装置
35 主記憶装置
40、40a、40b 信号リスト
41 RTL回路記述(RTLファイル)
42a プロパティA
42b プロパティA’
43a プロパティB
43b プロパティB’
45 トップ階層
46 乗算器(MULT)
47 算術論理演算ユニット(ALU)
48 コントローラ(CON)
60 モデルI
61 ドライブ用テストベンチ
62 プロパティI
63 モデルT
64 モデルTEST
65 レポート
66 プロパティT
67 チェック用テストベンチ
68 テストベンチ
69 入力接続関係
70 削除レポート
71 ランダム値生成制約
72 新SEED値
73 新NUM値
74 プロパティ記述P(I->T)
75 最上位モジュール(TOP)
76 コントローラ(CON)
77 算術論理演算ユニット(ALU)
80 統合シミュレーション環境
81 セレクタ
82 Aレジスタ
83 Bレジスタ
84 OPレジスタ
85 ALU
86 Rレジスタ

Claims (9)

  1. 論理演算機能を有する回路の構成要素を抽象化の度合いに応じて上位から下位まで複数の層に階層化してなる回路記述のプロパティチェックを用いたLSIの機能検証において、
    前記回路記述を読み込む回路記述読込手段と、
    前記回路記述について最上位階層からモジュール間の信号接続関係を解析する解析手段と、
    前記階層間の信号接続関係のデータを共通データベースに格納する共通データベース格納手段と、
    前記共通データベースから検証対象モジュールのプロパティを読み込むプロパティ読み込み手段と、
    前記検証対象モジュールのプロパティから前記検証対象モジュール間の信号が含まれているプロパティ箇所のみをモジュール間信号プロパティとして抽出するモジュール間プロパティ抽出手段と、
    前記モジュール間信号プロパティから各信号の出力側のモジュールにある出力動作が定義された出力動作プロパティと、入力側モジュールに存在する期待動作が定義された期待動作プロパティとを抽出する信号動作部分抽出手段と、
    前記出力動作プロパティと前記期待動作プロパティとを比較する比較手段
    とを具備することを特徴とするLSI設計検証装置。
  2. 前記出力動作プロパティにおける条件と前記期待動作プロパティにおける条件とが一致するか否かを判断する不一致検出手段と、
    前記条件同士が一致しない場合、不一致した条件を検出してエラーとしてレポートを生成するレポート生成手段
    とを具備することを特徴とする請求項1記載のLSI設計検証装置。
  3. 前記レポートに基づき、不一致内容について関連する信号の時間変化を波形表示する波形表示手段
    を更に有することを特徴とする請求項2記載のLSI設計検証装置。
  4. 回路記述読込手段、解析手段、共通データベース格納手段、プロパティ読み込み手段、モジュール間プロパティ抽出手段、信号動作部分抽出手段、比較手段及び共通データベースを備えるLSI設計検証装置を用いる、論理演算機能を有する回路の構成要素を抽象化の度合いに応じて上位から下位まで複数の層に階層化してなる回路記述のプロパティチェックを用いたLSIの機能検証方法において、
    前記回路記述読込手段が前記回路記述を読み込むステップと、
    前記解析手段が前記回路記述について最上位階層からモジュール間の信号接続関係を解析するステップと、
    前記共通データベース格納手段が前記階層間の信号接続関係のデータを前記共通データベースに格納するステップと、
    前記プロパティ読み込み手段が前記共通データベースから検証対象モジュールのプロパティを読み込むステップと、
    前記モジュール間プロパティ抽出手段が前記検証対象モジュールのプロパティから前記検証対象モジュール間の信号が含まれているプロパティ箇所のみをモジュール間信号プロパティとして抽出するステップと、
    前記信号動作部分抽出手段が前記モジュール間信号プロパティから各信号の出力側のモジュールにある出力動作が定義された出力動作プロパティと、入力側モジュールに存在する期待動作が定義された期待動作プロパティとを抽出するステップと、
    前記比較手段が前記出力動作プロパティと前記期待動作プロパティとを比較するステップ
    とを有することを特徴とするLSI設計検証方法。
  5. 不一致検出手段が前記出力動作プロパティにおける条件と前記期待動作プロパティにおける条件とが一致するか否かを判断するステップと、
    レポート生成手段が、前記条件同士が一致しない場合、不一致した条件を検出してエラーとしてレポートを生成するステップ
    とを有することを特徴とする請求項記載のLSI設計検証方法。
  6. 波形表示手段が、前記レポートに基づき、不一致内容について関連する信号の時間変化を波形表示するステップ
    を更に有することを特徴とする請求項記載のLSI設計検証方法。
  7. 前記出力動作プロパティにおける条件と前記期待動作プロパティにおける条件が一致し、インタフェース仕様に余裕があり、階層設計手法を用いない場合は、冗長部削除手段が冗長部分を削除するステップを更に有することを特徴とする請求項乃至記載のLSI設計検証方法。
  8. 前記出力動作プロパティにおける条件と前記期待動作プロパティにおける条件が一致し、インタフェース仕様に余裕があって、階層設計手法を用いる場合は、レジスタ挿入手段がレジスタを挿入するステップを更に有することを特徴とする請求項乃至記載のLSI設計検証方法。
  9. 論理演算機能を有する回路の構成要素を抽象化の度合いに応じて上位から下位まで複数の層に階層化してなる回路記述のプロパティチェックを用いたLSIの機能を検証するLSI設計検証装置を制御するためのプログラムであって、
    前記回路記述を読み込む命令と、
    前記回路記述について最上位階層からモジュール間の信号接続関係を解析する命令と、
    前記階層間の信号接続関係のデータを共通データベースに格納する命令と、
    前記共通データベースから検証対象モジュールのプロパティを読み込む命令と、
    前記検証対象モジュールのプロパティから前記検証対象モジュール間の信号が含まれているプロパティ箇所のみをモジュール間信号プロパティとして抽出する命令と、
    前記モジュール間信号プロパティから各信号の出力側のモジュールにある出力動作が定義された出力動作プロパティと、入力側モジュールに存在する期待動作が定義された期待動作プロパティとを抽出する命令と、
    前記出力動作プロパティと前記期待動作プロパティとを比較する命令
    とをLSI設計検証装置に実行させることを特徴とするLSI設計検証プログラム。
JP2001398319A 2001-12-27 2001-12-27 Lsi設計検証装置、lsi設計検証方法、及びlsi設計検証プログラム Expired - Fee Related JP3848157B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2001398319A JP3848157B2 (ja) 2001-12-27 2001-12-27 Lsi設計検証装置、lsi設計検証方法、及びlsi設計検証プログラム
EP02028782A EP1324232A3 (en) 2001-12-27 2002-12-23 Lsi design verification apparatus, method and program
US10/330,572 US20030125920A1 (en) 2001-12-27 2002-12-27 LSI design verification apparatus, LSI design verification method, and LSI design verification program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001398319A JP3848157B2 (ja) 2001-12-27 2001-12-27 Lsi設計検証装置、lsi設計検証方法、及びlsi設計検証プログラム

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2006167511A Division JP4231066B2 (ja) 2006-06-16 2006-06-16 Lsi設計検証装置、lsi設計検証方法、及びlsi設計検証プログラム

Publications (2)

Publication Number Publication Date
JP2003196342A JP2003196342A (ja) 2003-07-11
JP3848157B2 true JP3848157B2 (ja) 2006-11-22

Family

ID=19189333

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001398319A Expired - Fee Related JP3848157B2 (ja) 2001-12-27 2001-12-27 Lsi設計検証装置、lsi設計検証方法、及びlsi設計検証プログラム

Country Status (3)

Country Link
US (1) US20030125920A1 (ja)
EP (1) EP1324232A3 (ja)
JP (1) JP3848157B2 (ja)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100461186C (zh) * 2003-10-31 2009-02-11 富士通微电子株式会社 验证支持装置、验证支持方法
US7305332B1 (en) * 2004-01-14 2007-12-04 Adaptec, Inc. System and method for automatic extraction of testing information from a functional specification
CN100428249C (zh) * 2004-03-03 2008-10-22 富士通株式会社 验证支持装置和验证支持方法
JP4080464B2 (ja) * 2004-07-14 2008-04-23 松下電器産業株式会社 検証ベクタ生成方法およびこれを用いた電子回路の検証方法
US7689399B1 (en) * 2004-08-31 2010-03-30 Sun Microsystems, Inc. Automatic extraction of design properties
CN100349416C (zh) * 2004-12-01 2007-11-14 华为技术有限公司 一种激励数据的流量控制方法及装置、激励报文产生器
JP2007094891A (ja) * 2005-09-29 2007-04-12 Matsushita Electric Ind Co Ltd データベースおよびこれを用いたlsi機能検証方法
JP2007115002A (ja) * 2005-10-20 2007-05-10 Fujitsu Ltd 半導体回路装置の検証方法及びその検証方法を実施するためのcad装置
JP2007156728A (ja) * 2005-12-02 2007-06-21 Hitachi Information & Communication Engineering Ltd 論理検証方法及び論理検証システム
US7823103B2 (en) * 2006-10-24 2010-10-26 International Business Machines Corporation Method and system of introducing hierarchy into design rule checking test cases and rotation of test case data
JP2008112277A (ja) * 2006-10-30 2008-05-15 Mitsubishi Electric Corp タイミングチャート生成装置
JP4781994B2 (ja) * 2006-12-28 2011-09-28 三菱電機株式会社 信号波形解析装置
US7917873B1 (en) * 2007-02-12 2011-03-29 Zocalo Tech, Inc. System and method for verification of integrated circuit design
JP4445517B2 (ja) * 2007-05-14 2010-04-07 株式会社東芝 回路設計検証方法および回路設計検証のためのプログラム
US8225249B1 (en) * 2007-06-03 2012-07-17 Jasper Design Automation, Inc. Static formal verification of a circuit design using properties defined with local variables
JP4533918B2 (ja) * 2007-08-30 2010-09-01 株式会社東芝 回路仕様記述設計解析装置及び回路仕様記述設計解析方法
JP4772842B2 (ja) * 2008-09-12 2011-09-14 株式会社東芝 回路検証装置及び回路検証方法
JP5309835B2 (ja) * 2008-09-24 2013-10-09 富士通株式会社 配線情報生成装置、方法、及びプログラム
JP2010113395A (ja) * 2008-11-04 2010-05-20 Toshiba Corp 論理回路設計検証装置
JP2011054070A (ja) * 2009-09-04 2011-03-17 Fujitsu Ltd 冗長論理回路検出方法及び冗長論理回路検出装置
US8560295B1 (en) * 2011-02-15 2013-10-15 Xilinx, Inc. Suspension of procedures in simulation of an HDL specification
JP5718166B2 (ja) * 2011-06-10 2015-05-13 富士通株式会社 設計検証方法及びプログラム
US9057764B2 (en) * 2011-10-27 2015-06-16 International Business Machines Corporation Detection of unchecked signals in circuit design verification
US8656328B1 (en) 2013-03-08 2014-02-18 Atrenta, Inc. System and method for abstraction of a circuit portion of an integrated circuit
JP5644899B1 (ja) 2013-06-14 2014-12-24 日本電気株式会社 回路検証装置、回路検証方法および回路検証プログラム
CN104516992B (zh) * 2013-09-27 2017-12-01 华为技术有限公司 一种验证方法及装置
US9715566B2 (en) * 2014-05-09 2017-07-25 Zipalog, Inc. Computer implemented system and method of translation of verification commands of an electronic design
US10402505B2 (en) 2014-05-09 2019-09-03 Zipalog, Inc. Computer implemented system and method of translation of verification commands of an electronic design
US11017139B1 (en) * 2020-03-24 2021-05-25 Siemens Industry Software Inc. Concolic equivalence checking
CN116127886B (zh) * 2023-04-12 2023-06-23 北京燧原智能科技有限公司 一种存储器电路的验证方法和装置

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5572437A (en) * 1990-04-06 1996-11-05 Lsi Logic Corporation Method and system for creating and verifying structural logic model of electronic design from behavioral description, including generation of logic and timing models
US6219821B1 (en) * 1998-04-03 2001-04-17 Chrysalis Symbolic Design, Inc. Computers systems and methods for verifying representations of a circuit design
US6099575A (en) * 1998-06-23 2000-08-08 Lucent Technologies Inc. Constraint validity checking
US20020152060A1 (en) * 1998-08-31 2002-10-17 Tseng Ping-Sheng Inter-chip communication system
US6446243B1 (en) * 1999-04-23 2002-09-03 Novas Software, Inc. Method for functional verification of VLSI circuit designs utilizing reusable functional blocks or intellectual property cores
US6816825B1 (en) * 1999-06-18 2004-11-09 Nec Corporation Simulation vector generation from HDL descriptions for observability-enhanced statement coverage
US6678644B1 (en) * 1999-09-13 2004-01-13 Synopsys, Inc. Integrated circuit models having associated timing exception information therewith for use with electronic design automation
US6581191B1 (en) * 1999-11-30 2003-06-17 Synplicity, Inc. Hardware debugging in a hardware description language
US6591403B1 (en) * 2000-10-02 2003-07-08 Hewlett-Packard Development Company, L.P. System and method for specifying hardware description language assertions targeting a diverse set of verification tools
US6618841B1 (en) * 2000-11-06 2003-09-09 Verplex Systems, Inc. Non-assignable signal support during formal verification of circuit designs
US6807520B1 (en) * 2000-12-11 2004-10-19 Synopsys, Inc. System and method for simulation of an integrated circuit design using a hierarchical input netlist and divisions along hierarchical boundaries thereof

Also Published As

Publication number Publication date
US20030125920A1 (en) 2003-07-03
EP1324232A2 (en) 2003-07-02
JP2003196342A (ja) 2003-07-11
EP1324232A3 (en) 2009-09-09

Similar Documents

Publication Publication Date Title
JP3848157B2 (ja) Lsi設計検証装置、lsi設計検証方法、及びlsi設計検証プログラム
US8904367B1 (en) Auto pipeline insertion
US5907698A (en) Method and apparatus for characterizing static and dynamic operation of an architectural system
US7079997B1 (en) IC behavior analysis system
JPH07160744A (ja) 自律進化型ハードウェア設計システム
US7813908B2 (en) Clock control module simulator and method thereof
JP4231066B2 (ja) Lsi設計検証装置、lsi設計検証方法、及びlsi設計検証プログラム
US20220075920A1 (en) Automated Debug of Falsified Power-Aware Formal Properties using Static Checker Results
EP1376413A1 (en) Test bench generator for integrated circuits, particularly memories
US8839187B1 (en) Automatic generation of hardware simulation interface code using pre-processor macros
Soeken et al. Automating the translation of assertions using natural language processing techniques
US6836874B2 (en) Systems and methods for time-budgeting a complex hierarchical integrated circuit
Van Leer Top-down development using a program design language
Ramsay et al. Package ‘fda’
JP2008065382A (ja) Lsiの消費電力算出方法及びその算出プログラム
US11308046B2 (en) Analysing physical systems
US6453276B1 (en) Method and apparatus for efficiently generating test input for a logic simulator
US6874134B1 (en) Conversion of an HDL sequential truth table to generic HDL elements
US6434722B2 (en) Method of changing logic circuit portion into gated clock portion and recording medium storing a program for carrying out the method
US20030229612A1 (en) Circuit design duplication system
Hekmatpour et al. Block-based schema-driven assertion generation for functional verification
Gurung et al. Learning nonlinear hybrid automata from input–output time-series data
CN113033132A (zh) 一种确定端口时序约束的方法及相关装置
JP2006190085A (ja) デジタル回路のモデリング方法及び設計方法
US20140089899A1 (en) Method for the computer-assisted analysis of buggy source code in a hardware description language

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060418

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060616

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060824

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

Free format text: PAYMENT UNTIL: 20090901

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20100901

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20110901

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20110901

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20120901

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20120901

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20130901

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees