JP2007026181A - 論理検証手法および論理検証装置 - Google Patents
論理検証手法および論理検証装置 Download PDFInfo
- Publication number
- JP2007026181A JP2007026181A JP2005208625A JP2005208625A JP2007026181A JP 2007026181 A JP2007026181 A JP 2007026181A JP 2005208625 A JP2005208625 A JP 2005208625A JP 2005208625 A JP2005208625 A JP 2005208625A JP 2007026181 A JP2007026181 A JP 2007026181A
- Authority
- JP
- Japan
- Prior art keywords
- property
- dut
- verification
- internal configuration
- bdd
- 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.)
- Withdrawn
Links
Images
Landscapes
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
【課題】 内部構成や仕様が明確でない検証対象に対し、外端の動作仕様のみを用いて検証をおこなうと検証抜けが生じ、検証精度が低下する。十分な検証精度が得られないことにより、十分な精度を持つ論理システムを予定の期間内に完成させることができず市場が欲するときに製品を投入できないという課題や不十分な精度のまま製品を市場に投入してしまう課題が生じる。
【解決手段】 機能ブロックを定義するプロパティを予め登録しておく。このプロパティを用いて検証対象の内部構成を抽出する。この内部構成から、予め登録したプロパティに一致しない部分について、入出力制約条件を求める。この入出力制約条件を用いて論理検証をおこなう。
【選択図】 図1
【解決手段】 機能ブロックを定義するプロパティを予め登録しておく。このプロパティを用いて検証対象の内部構成を抽出する。この内部構成から、予め登録したプロパティに一致しない部分について、入出力制約条件を求める。この入出力制約条件を用いて論理検証をおこなう。
【選択図】 図1
Description
本発明は、ハードウエア記述言語で記述した論理システムの検証に係わる。
LSIを含む論理システムの規模は、年毎に増加している。それに伴い、論理システムの検証にかかる工数も増加している。一方、市場には消費者が欲するときに製品を投入しなければならず、LSIを始めとした論理システムの開発期間は短くなっている。そのため、論理システム検証の効率向上を図る必要が生じている。
現在、LSIを含む論理システムの検証は、検証対象の外端仕様のみを用いて検証をおこなうブラックボックス検証が主流である。ブラックボックス検証によるテストは、検証対象の内部構成や仕様に依存しないため、流用性や可読性が高く、取りまわしが便利である。
しかし、ブラックボックス検証は検証対象の外端仕様のみで検証を実施し、検証対象の内部状態を考慮しない。そのため、検証対象が取り得る全事象を実施したか確認することが困難である。また、入力ポートに対するデータ入力のみで、検証対象が取り得る状態を全て実現することも困難である。そのため、ブラックボックス検証の検証精度が低いことは否めない。
一方、検証対象の内部構成や仕様も併せて使用して検証をおこなうホワイトボックス検証は、検証対象の内部構成や仕様も参照しているため、ブラックボックス検証に比較して検証対象が取り得る全事象を実施したか確認することが容易である。また、検証対象が取り得る状態を全て実現することも容易である。しかし、ホワイトボックス検証は、検証対象内部の構成や仕様が明確でないと実施できない。また、ホワイトボックス検証では、検証対象内部の構成や仕様を参照するので、検証対象内部の構成や仕様に合わせてテストを作成してしまう恐れがある。検証対象内部の構成や仕様に合わせて作成したテストを用いれば検証対象の出力は期待値に一致するので、検証をおこなう意味がない。
又、従来例としては、例えば特許文献1をあげることが出来る。
特開2002-368104号公報
以上のようにブラックボックス検証であってもホワイトボックス検証であっても、検証精度を低下させる要因を含んでいる。よって、従来の手法では十分な検証精度が得られるとは限らない。十分な検証精度が得られないことにより、十分な精度を持つ論理システムを予定の期間内に完成させることができず市場が欲するときに製品を投入できないという課題や不十分な精度のまま製品を市場に投入してしまう課題が生じる。
本発明は、上記課題を解決するためになされたもので、外端の仕様のみ定義された検証対象に対して、検証漏れを無くし検証精度を向上させる手段を提供する。
本発明に係わるハードウエア記述言語により記述された論理システムの検証手法および検証検証装置は、
前記ハードウエア記述言語で記述された論理システムを論理表現に変換し最適化をおこない正規化論理表現を生成する正規化論理表現生成手段と、
論理システムの構成部品である機能ブロックに対応する動作仕様記述の正規化論理表現を記録する機能ブロック保持手段と、
前記機能ブロック保持手段から正規化論理表現を選択し前記正規化論理表現生成手段で生成した正規化論理表現と比較をおこなうことで前記機能ブロックの存在を判定し、前記ハードウエア記述言語で記述された論理システムの内部構成を抽出する内部構成抽出手段と、
前記内部構成抽出手段で抽出した各ブロックの入力および出力制約条件を求める手段を具備することを特徴とする。
前記ハードウエア記述言語で記述された論理システムを論理表現に変換し最適化をおこない正規化論理表現を生成する正規化論理表現生成手段と、
論理システムの構成部品である機能ブロックに対応する動作仕様記述の正規化論理表現を記録する機能ブロック保持手段と、
前記機能ブロック保持手段から正規化論理表現を選択し前記正規化論理表現生成手段で生成した正規化論理表現と比較をおこなうことで前記機能ブロックの存在を判定し、前記ハードウエア記述言語で記述された論理システムの内部構成を抽出する内部構成抽出手段と、
前記内部構成抽出手段で抽出した各ブロックの入力および出力制約条件を求める手段を具備することを特徴とする。
以上説明したように、本発明によれば、機能が既知である機能ブロックが検証対象の論理システム内に存在すれば、その機能ブロックの動作仕様のみを用いて内部ブロックの入出力制約条件を生成する。そのため、検証対象の論理システムの内部構成や内部仕様が明確でなくとも、内部ブロックの入出力制約条件の生成が可能となる。
また、本発明によれば、検証対象の論理システム内に存在する機能が既知である機能ブロックの動作仕様のみを用いて内部ブロックの入出力制約条件を生成するため、検証対象内部の構成や仕様に合わせてテストを作成する恐れが無い。
よって、本発明によれば十分な精度を持つ論理システムを予定の期間内に完成させることができる。その結果、市場が欲するときに製品を投入することが可能となる。
以下、図面を参照しながら本発明の実施形態を説明する。
図1は、本発明の一実施例を示す図である。DUT11はVerilog あるいはVHDL で記述した論理システムの設計データである。本発明により、このDUT11の論理検証をおこなう。機能ブロック一覧表12は、論理システムを構成する部品である機能ブロックの一覧である。この機能ブロック一覧表12は、開発する論理システム全てに対して共通に使用するものであって、個々の論理システムごとに作成するものではない。DUT入出力制約条件15は、DUT11の入力および出力の動作を定義する。
機能ブロック一覧表12に記載の機能ブロック毎に、動作を定義したプロパティをプロパティ生成手順31で作成し、内部表現変換器22で本発明の内部で使用する内部表現に変換する。そして、プロパティと内部表現を対にして機能ブロック毎にプロパティ・ライブラリ13として保存する。プロパティ・ライブラリ13は機能ブロック一覧表12に変更が無ければ、テスト毎に生成しなおす必要は無い。そのため、機能ブロック一覧表12からプロパティを生成する工程を自動化せず、人手でプロパティを作成してもよい。勿論、プロパティ自動生成ツールの使用を妨げるものではない。また、テストを実行するたび、あるいは論理システムごとにプロパティ・ライブラリ13を生成することを妨げるものではない。
内部表現変換器21はDUT11を本発明の内部で使用する内部表現に変換する。比較器23は内部表現を使用して、DUT11とプロパティ・ライブラリ中のプロパティを比較する。比較器23で、DUT11が当該プロパティを包含していると判断したならば、当該プロパティが該当する機能ブロックの情報をDUT内部構成表14に登録する。DUT11の内部表現中、どのプロパティの内部表現とも一致しない残りの部分は、UNKNOWN BLOCKとしてDUT内部構成表14に登録する。既知の機能ブロックに一致しないので,UNKNOWN BLOCKは未知の機能を持っている可能性がある。
DUT入出力制約条件15とDUT内部構成表14からUNKNOWN BLOCKおよび各機能ブロックの入力と出力の制約条件を内部ブロック入出力制約条件生成器24で生成する。以下、特に区別する必要が無い限り入力と出力の制約条件を合わせて入出力制約条件と呼ぶ。生成した入出力制約条件を内部ブロック入出力制約条件16として保存する。但し、常に内部ブロック入出力制約条件生成器24は、UNKNOWN BLOCKを含めた全ての機能ブロックについて入出力制約条件を生成しなければならないわけではない。内部ブロック入出力制約条件生成器24が生成する入出力制約条件16は、内部ブロック入出力制約条件16の使用目的によって変化する。例えば、UNKNOWN BLOCKに注目して検証をおこなう場合、UNKNOWN BLOCKの入出力制約条件と、UNKNOWN BLOCKと依存関係のある機能ブロックの入出力制約条件を求めるだけでよい。
次に、8 bit down counterの動作を定義するプロパティを例にとり、プロパティの一実施例を説明する。以下に本実施例で使用する記号を示す。
; 動作記述の区切り
a=>b aが成立するならばbが成り立つ
&& 論理積
|| 論理和
~ 論理否定
' 次クロック・サイクルの状態
// コメント
== 論理等価
1'b1 2進数一桁、値は'1'
rst_n_in カウンタ・リセット信号('0'でリセット)
do_out カウンタ値出力(8bit)
enb_in カウンタ・イネーブル信号('1'でカウントダウン,'0'で保持)
以下に示すプロパティは、8 bit down counterの動作を定義するプロパティの一部である。
(~rst_n_in==1'b1) =>
'(do_out)== 8'b00000000; //P-1
(~rst_n_in==1'b0) && (enb_in==1'b1)=>
'(do_out)==do_out-1'b1; //P-2
各項の意味は以下の通りである。
(~rst_n_in==1'b1) : ~rst_n_inが'1'、つまりrst_n_inが'0'、
すなわちカウンタ・リセット信号が有効
'(do_out)==8'b00000000 : 次クロック・サイクルのカウンタ値が0
(enb_in==1'b1) :カウンタ・イネーブル信号が有効
すなわち、カウントダウン動作
'(do_out)==do_out-1'b1 : 次クロック・サイクルのカウンタ値は、
現在のカウンタ値から 1 減じた値
よって、プロパティP-1 は以下の動作記述を定義している。
a=>b aが成立するならばbが成り立つ
&& 論理積
|| 論理和
~ 論理否定
' 次クロック・サイクルの状態
// コメント
== 論理等価
1'b1 2進数一桁、値は'1'
rst_n_in カウンタ・リセット信号('0'でリセット)
do_out カウンタ値出力(8bit)
enb_in カウンタ・イネーブル信号('1'でカウントダウン,'0'で保持)
以下に示すプロパティは、8 bit down counterの動作を定義するプロパティの一部である。
(~rst_n_in==1'b1) =>
'(do_out)== 8'b00000000; //P-1
(~rst_n_in==1'b0) && (enb_in==1'b1)=>
'(do_out)==do_out-1'b1; //P-2
各項の意味は以下の通りである。
(~rst_n_in==1'b1) : ~rst_n_inが'1'、つまりrst_n_inが'0'、
すなわちカウンタ・リセット信号が有効
'(do_out)==8'b00000000 : 次クロック・サイクルのカウンタ値が0
(enb_in==1'b1) :カウンタ・イネーブル信号が有効
すなわち、カウントダウン動作
'(do_out)==do_out-1'b1 : 次クロック・サイクルのカウンタ値は、
現在のカウンタ値から 1 減じた値
よって、プロパティP-1 は以下の動作記述を定義している。
「カウンタ・リセット信号が有効ならば、
次クロック・サイクルでカウンタの値は全て0になる」
また、プロパティP-2 は以下の動作記述を定義している。
次クロック・サイクルでカウンタの値は全て0になる」
また、プロパティP-2 は以下の動作記述を定義している。
「カウンタ・リセット信号が無効で、かつカウント・イネーブル信号が有効ならば、
次クロック・サイクルのカウンタ値は、現在のカウンタから1減じた値」
次に、本発明で用いる内部表現について説明する。比較器23で内部表現の比較をおこなうため、本発明で使用する内部表現は同一の論理関数が同一の表現にならなければならない。また、容量が大きくならず、内部表現による比較の手順が容易である必要がある。同一の論理関数が同一の表現となる表現方法として、BDD(Binary Decision Diagram)、真理値表、積和標準形がある。真理値表は入力数の指数乗の項数を必要とする。また、積和標準形も最悪の場合、真理値表と同じく入力数の指数乗の項数を必要とする。しかし、BDDでは多くの場合、真理値表や積和標準形より少ない項数で論理関数を表現可能である。また、真理値表と積和標準形では、内部表現への変換工数が論理関数の複雑度に影響し、複雑になるにつれて内部表現への変換工数が増加する。一方、BDDでは論理関数の複雑度に関係なく変換工数がきまる。そのため、本実施例では、内部表現としてBDDを用いることとする。勿論、内部表現をBDDに限定するのものではなく、同一の論理関数が同一の表現になるならばどのような表現を用いてよい。
次クロック・サイクルのカウンタ値は、現在のカウンタから1減じた値」
次に、本発明で用いる内部表現について説明する。比較器23で内部表現の比較をおこなうため、本発明で使用する内部表現は同一の論理関数が同一の表現にならなければならない。また、容量が大きくならず、内部表現による比較の手順が容易である必要がある。同一の論理関数が同一の表現となる表現方法として、BDD(Binary Decision Diagram)、真理値表、積和標準形がある。真理値表は入力数の指数乗の項数を必要とする。また、積和標準形も最悪の場合、真理値表と同じく入力数の指数乗の項数を必要とする。しかし、BDDでは多くの場合、真理値表や積和標準形より少ない項数で論理関数を表現可能である。また、真理値表と積和標準形では、内部表現への変換工数が論理関数の複雑度に影響し、複雑になるにつれて内部表現への変換工数が増加する。一方、BDDでは論理関数の複雑度に関係なく変換工数がきまる。そのため、本実施例では、内部表現としてBDDを用いることとする。勿論、内部表現をBDDに限定するのものではなく、同一の論理関数が同一の表現になるならばどのような表現を用いてよい。
BDDを内部表現に使用するプログラムや市販のツールでは、BDD生成アルゴリズムとして、applyアルゴリズムが広く使用されている。このapplyアルゴリズムは1984年にRandal E. Bryant氏により開発された、BDD生成アルゴリズムである。このapplyアルゴリズムは、既に数多く使用されており、公知の技術である。そこで、内部表現変換器21はDUT11をBDDに変換する手法として、また内部表現変換器22は機能ブロックのプロパティをBDDに変換する手法として、applyアルゴリズムを使用する。ただし、本発明は、BDD生成アルゴリズムに依存した発明ではないので、内部表現変換器21、および内部表現変換器22が使用するアルゴリズムをapplyアルゴリズムに限定するものではない。
比較器23は、DUT11のBDDとプロパティのBDDの同形性を判定し、DUT11のBDDがプロパティのBDDを包含しているか否かを判断する。BDDの同形性判定アルゴリズムは、従来より多くの提案が存在する。本発明は、同形性判定アルゴリズムに依存した発明ではないので、どの同形性判定アルゴリズムを用いてもよい。例えば、ある節に注目し、'1' の枝の形と '0' の枝の形を再帰的に比較することで同形性を判定する手法を用いてもよい。
図2は、本発明による論理検証手法および論理検証装置を用いた検証の流れの一例を説明するフローチャートである。図2に示すフローチャートは、本発明による論理検証手法および論理検証装置を用い、より詳細にUNKNOWN BLOCKの検証をおこなう手順を示している。前提条件として、DUT11内に機能が未知であるUNKNOWN BLOCKが存在し、プロパティ・ライブラリ13は予め生成してあるとする。図2の処理は、DUT 11を入力したときから開始される。
ステップS100:
プロパティ・ライブラリ13内の情報を基にDUT11の内部構成を求め、DUT内部構成表14を生成
ステップS200:
DUT内部構成表14の情報を基にDUT入出力制約条件15からUNKNOWN BLOCKの入出力制約条件を生成
本実施例ではUNKNOWN BLOCKに注目しているのでUNKNOWN BLOCKの入出力制約条件を生成。
ステップS300:
ステップS200の結果を使用してUNKNOWN BLOCKを検証
UNKNOWN BLOCKの検証には動的シミュレーション手法を用いても、静的検証手法を用いてもよい。
ステップS100:
プロパティ・ライブラリ13内の情報を基にDUT11の内部構成を求め、DUT内部構成表14を生成
ステップS200:
DUT内部構成表14の情報を基にDUT入出力制約条件15からUNKNOWN BLOCKの入出力制約条件を生成
本実施例ではUNKNOWN BLOCKに注目しているのでUNKNOWN BLOCKの入出力制約条件を生成。
ステップS300:
ステップS200の結果を使用してUNKNOWN BLOCKを検証
UNKNOWN BLOCKの検証には動的シミュレーション手法を用いても、静的検証手法を用いてもよい。
引き続き、図2中の各ステップの動作を詳しく説明する。図3は、ステップS100の動作を詳しく説明するフローチャートである。図3を用いて、DUT11の内部構成を抽出する手順を説明する。
ステップS110:
内部表現変換器21を使用してDUT11をBDDに変換
以下、変換後のBDDをBDD(DUT)と呼ぶ
ステップS120:
プロパティ・ラブラリ13から1機能ブロックと、その動作を定義する全てのプロパティのBDDを選択
以下、このBDDをBDD(property)と呼ぶ
ステップS130〜ステップS140:
比較器23でBDD(DUT)がBDD(property)を包含しているかを判定
BDD(DUT)はステップS120で選択した全てのBDD(property)を包含している:ステップS150に分岐
BDD(DUT)はステップS120で選択した全てのBDD(property)を包含していない:ステップS170に分岐
ステップS150:
A)ステップS120で選択した機能ブロックの情報をDUT内部構成表14に登録
B)DUT11の信号名やポート名とプロパティ内の変数との対応を求め、
併せてDUT内部構成表14に登録
C)DUT内部構成表14内で信号名やポート名を検索し、接続情報を求め、
併せてDUT内部構成表14に登録
ステップS160:
BDD(property)の各節に対応するBDD(DUT)の節に登録済み印をつける
ステップS170:
終了条件を判定
プロパティ・ライブラリ13内に、
未比較の機能ブロックが存在 :ステップS120に分岐
未比較の機能ブロックが存在しない :ステップS180に分岐
ステップS180:
A)BDD(DUT)で、登録済み印がついていない節からなる部分を
UNKNOWN BLOCKとする
UNKNOWN BLOCKは、登録済みの機能ブロックに一致しない部分であり、未知の機能を含んでいる可能性がある
B)UNKNOWN BLOCKにおいて、DUT11の信号名やポート名と
プロパティ内の変数との対応を求めDUT内部構成表14に登録
C)DUT内部構成表14内で信号名やポート名を検索し、
UNKNOWN BLOCKの接続情報を求め併せてDUT内部構成表14に登録
次に、DUT内部構成表14の実施例を説明する。DUT内部構成表14の一実施例を図4に示す。図4に示すDUT内部構成表14は4列からなる。左から、機能ブロック番号101、機能ブロック名102、プロパティ番号103、信号対応表104である。信号対応表列104は、さらに5列に分かれている。DUT内部構成表14は、新しい機能ブロックを登録するたびに一行ずつ増加する。
ステップS110:
内部表現変換器21を使用してDUT11をBDDに変換
以下、変換後のBDDをBDD(DUT)と呼ぶ
ステップS120:
プロパティ・ラブラリ13から1機能ブロックと、その動作を定義する全てのプロパティのBDDを選択
以下、このBDDをBDD(property)と呼ぶ
ステップS130〜ステップS140:
比較器23でBDD(DUT)がBDD(property)を包含しているかを判定
BDD(DUT)はステップS120で選択した全てのBDD(property)を包含している:ステップS150に分岐
BDD(DUT)はステップS120で選択した全てのBDD(property)を包含していない:ステップS170に分岐
ステップS150:
A)ステップS120で選択した機能ブロックの情報をDUT内部構成表14に登録
B)DUT11の信号名やポート名とプロパティ内の変数との対応を求め、
併せてDUT内部構成表14に登録
C)DUT内部構成表14内で信号名やポート名を検索し、接続情報を求め、
併せてDUT内部構成表14に登録
ステップS160:
BDD(property)の各節に対応するBDD(DUT)の節に登録済み印をつける
ステップS170:
終了条件を判定
プロパティ・ライブラリ13内に、
未比較の機能ブロックが存在 :ステップS120に分岐
未比較の機能ブロックが存在しない :ステップS180に分岐
ステップS180:
A)BDD(DUT)で、登録済み印がついていない節からなる部分を
UNKNOWN BLOCKとする
UNKNOWN BLOCKは、登録済みの機能ブロックに一致しない部分であり、未知の機能を含んでいる可能性がある
B)UNKNOWN BLOCKにおいて、DUT11の信号名やポート名と
プロパティ内の変数との対応を求めDUT内部構成表14に登録
C)DUT内部構成表14内で信号名やポート名を検索し、
UNKNOWN BLOCKの接続情報を求め併せてDUT内部構成表14に登録
次に、DUT内部構成表14の実施例を説明する。DUT内部構成表14の一実施例を図4に示す。図4に示すDUT内部構成表14は4列からなる。左から、機能ブロック番号101、機能ブロック名102、プロパティ番号103、信号対応表104である。信号対応表列104は、さらに5列に分かれている。DUT内部構成表14は、新しい機能ブロックを登録するたびに一行ずつ増加する。
機能ブロック番号101内の機能ブロック番号は登録順につけられる。この機能ブロック番号は、DUT内部構成表14の信号対応表で接続先を示すのにも使用される。
機能ブロック名102は機能ブロックの名称である。使用する名称はプロパティ・ライブラリ13に登録してある機能ブロック名である。
プロパティ番号103には、プロパティを一意に定めることができる情報を記載する。プロパティそのものでもプロパティにつけた番号でもよい。本実施例では、プロパティ毎につけたプロパティ番号を記録する。当該機能ブロックの動作が複数のプロパティで定義されている場合は、全てのプロパティ番号を記入する。
信号対応表104は、DUT11の信号名やポート名とプロパティ内の変数との対応と機能ブロック間の接続情報記録する。信号対応表104は、プロパティ変数名111、デザイン変数名112、方向113、接続先114、接続先信号名115の5列からなる。
プロパティ変数名111とデザイン変数名112は、プロパティ内の変数名とDUT11の信号名やポート名の対応を示している。プロパティ変数名111は、プロパティで使用している変数名を記録している。デザイン変数名112は、プロパティ変数名111に対応する信号名あるいはポート名を記録している。
方向113は機能ブロックからみた信号の方向を示している。"IN"と"OUT"の二状態を取る。"IN"は入力信号を、"OUT"は出力信号を示す。
接続先114と接続先信号名115は、接続先と接続先の信号名を示す。接続先がDUT内部構成表14に登録済みの機能ブロックならば、接続先114はその機能ブロック番号になる。接続先がDUT11の入力あるいは出力ポートならば"PORT"とする。DUT11内部に接続しているのに関わらず、DUT内部構成表14に登録が無い場合は未定にしておく。そして、図3中のステップS180で、DUT内部構成表14を再走査し、接続先114の値を確定させる。このとき、接続先が、UNKNOWN BLOCKならば接続先114の値は"UNKNOWN BLOCK"とする。
続いてステップS150の動作を、図5と図6を用いて詳細に説明する。図5はステップS150の動作をくわしく説明するフローチャートである。図6はBDD(DUT)とBDD(property)の一例である。図3のステップS140で、BDD(DUT)31は、BDD(property)32を包含していると判明している。BDD(DUT)31は、BDD(DUT)全体のうち、BDD(property)32と同形な部分を抜き出したものである。BDD(DUT)31、BDD(property)32とも、説明に用いる部分以外は簡略化して記述してある。
以下の説明では、8 bit loadable down counterの動作を定義したプロパティを使用した場合を例に取る。
ステップS151:
DUT内部構成表14に一行追加し、機能ブロック番号を附加(nとする)
新たな機能ブロックがDUT11に存在することがステップS140で判明したのでDUT内部構成表14に一行追加する。
ステップS152:
機能ブロック名を機能ブロック番号 n の機能ブロック名102に記載
機能ブロック名102には、機能ブロックの名称"8 bit loadable down counter"を記載する。
ステップS153:
ステップS120で選択した全てのプロパティのプロパティ番号を、機能ブロック番号nのプロパティ番号103に記載
8 bit loadable down counterの動作を定義するプロパティのプロパティ番号を全て記載
ステップS154:
プロパティが使用する変数(プロパティ変数)と、
DUT11の信号名やポート名(デザイン変数)の対応を作成
図6を用いてステップS154の動作を詳しく説明する。図6中、BDD(DUT)31とBDD(property)32は同形と判断されているとする。同形のBDDであるので、それぞれ対応する節が明らかになる。図6中BDD(DUT)31の節33と、BDD(property)32の節34は、それぞれ対応する節である。節33はDUTの信号あるいはポートを示しており、その名称は"do_out"である。また、節34はプロパティ内の変数を示しており、その名称は"data_out"である。節33と節34は対応する節なので、プロパティ変数名は"data_out"であり、それに対応するデザイン変数名は"do_out"である。プロパティ変数名("data_out")とデザイン変数名("do_out")をそれぞれ、プロパティ変数111とデザイン変数112に記載する。
ステップS155〜ステップS159:
接続先と接続先信号名を求め、接続先114と接続先信号名115に記載
接続先がポート以外で、 DUT内部構成表14に未登録ならば、接続先は未定
図6を用いてステップS155〜ステップS159の動作を説明する。図6中、BDD(DUT)31の節33は、BDD(property)32と同形の範囲において最終の節である。この節33は節35と接続している。そして接続先の節35は登録済みの印が存在しない。よって、ステップS1567に分岐し、接続先114は未定にする。続いてステップ159で、節33の接続先の信号名 "di_in" を接続先変数名115に登録する。一方、節36は、BDD(property)32と同形の範囲において最初の節である。節36の接続先の節37はDUT11のポートである。よって、ステップS155では、ステップS156に分岐し、ポートを示す"PORT"を接続先114に記載する。続いてステップ159で、節36の接続先のポート名"di_in"を接続先変数名115に登録する。
ステップS151:
DUT内部構成表14に一行追加し、機能ブロック番号を附加(nとする)
新たな機能ブロックがDUT11に存在することがステップS140で判明したのでDUT内部構成表14に一行追加する。
ステップS152:
機能ブロック名を機能ブロック番号 n の機能ブロック名102に記載
機能ブロック名102には、機能ブロックの名称"8 bit loadable down counter"を記載する。
ステップS153:
ステップS120で選択した全てのプロパティのプロパティ番号を、機能ブロック番号nのプロパティ番号103に記載
8 bit loadable down counterの動作を定義するプロパティのプロパティ番号を全て記載
ステップS154:
プロパティが使用する変数(プロパティ変数)と、
DUT11の信号名やポート名(デザイン変数)の対応を作成
図6を用いてステップS154の動作を詳しく説明する。図6中、BDD(DUT)31とBDD(property)32は同形と判断されているとする。同形のBDDであるので、それぞれ対応する節が明らかになる。図6中BDD(DUT)31の節33と、BDD(property)32の節34は、それぞれ対応する節である。節33はDUTの信号あるいはポートを示しており、その名称は"do_out"である。また、節34はプロパティ内の変数を示しており、その名称は"data_out"である。節33と節34は対応する節なので、プロパティ変数名は"data_out"であり、それに対応するデザイン変数名は"do_out"である。プロパティ変数名("data_out")とデザイン変数名("do_out")をそれぞれ、プロパティ変数111とデザイン変数112に記載する。
ステップS155〜ステップS159:
接続先と接続先信号名を求め、接続先114と接続先信号名115に記載
接続先がポート以外で、 DUT内部構成表14に未登録ならば、接続先は未定
図6を用いてステップS155〜ステップS159の動作を説明する。図6中、BDD(DUT)31の節33は、BDD(property)32と同形の範囲において最終の節である。この節33は節35と接続している。そして接続先の節35は登録済みの印が存在しない。よって、ステップS1567に分岐し、接続先114は未定にする。続いてステップ159で、節33の接続先の信号名 "di_in" を接続先変数名115に登録する。一方、節36は、BDD(property)32と同形の範囲において最初の節である。節36の接続先の節37はDUT11のポートである。よって、ステップS155では、ステップS156に分岐し、ポートを示す"PORT"を接続先114に記載する。続いてステップ159で、節36の接続先のポート名"di_in"を接続先変数名115に登録する。
続いて、ステップS200の動作を図7を用いて説明する。本実施例で使用するDUT11の構造を図8に示す。図8は説明に必要ない部分は省略して記述してある。本実施例では、BLOCK52の外端信号のうち、cnt_in61の生成手順を説明する。それ以外の信号についても入出力制約条件の生成手順は同じである。図8に示すように、このcnt_in61はカウンタ51のdo_out62に接続している。リセット信号rst_n_in63はDUT11のポート、rst_sync_n_in64に接続している。また、カウンタ51の制御信号、enb_in66は、UNKNOWN BLOCK52のcnt_enb_out65に接続している。以下、説明にあたり適宜、図4も用いる。なお、DUT11の外端ポートは制約条件を持たないとする。
ステップS210:
DUT 内部構成表14から、UNKNOWN BLOCK52の外端信号を取り出す
UNKNOWN BLOCK52の外端信号のリストは以下のとおり
(cnt_in, rst_n_in, cc_out, ld_cmd_out, cnt_enb_out, state_in,...)
ステップS220:
引数から変数をひとつ取り出す
その接続先信号名とプロパティをDUT内部構成表14から検索
DUT内部構成表14を参照すると、先頭の変数、cnt_inは、接続先がn、すなわち8 bit loadable down counter(カウンタ51)であり、その接続先名はdo_outである。
ステップS210:
DUT 内部構成表14から、UNKNOWN BLOCK52の外端信号を取り出す
UNKNOWN BLOCK52の外端信号のリストは以下のとおり
(cnt_in, rst_n_in, cc_out, ld_cmd_out, cnt_enb_out, state_in,...)
ステップS220:
引数から変数をひとつ取り出す
その接続先信号名とプロパティをDUT内部構成表14から検索
DUT内部構成表14を参照すると、先頭の変数、cnt_inは、接続先がn、すなわち8 bit loadable down counter(カウンタ51)であり、その接続先名はdo_outである。
do_outの動作を定義したプロパティをプロパティ・ライブラリ13から取り出す。
このプロパティの一部を以下に示す。
(~rst_n_in==1'b0)=>
'(do_out)==8'b00000000; //P-1
(~rst_n_in==1'b1)&&(enb_in==1'b1)=>
'(do_out)==do_out-1'b1; //P-2
ステップS230:
プロパティが存在しないならば、ステップS235へ分岐
ステップS240:
ステップS210で取り出したプロパティ中の接続先変数名を、
S220で選択した変数で置換
(~rst_n_in==1'b0)=>
'(cnt_in)==8'b00000000; //P-3
(~rst_n_in==1'b1)&&(enb_in==1'b1)=>
'(cnt_in)==cnt_in-1'b1; //P-4
ステップS250:
プロパティにカウンタ51の外端信号(rst_n_inとenb_in)が存在するので、
ステップS255に分岐
ステップS255:
rst_n_in,enb_inを引数にステップS220を再帰的に実行
ステップS220:
引数から変数をひとつ(rst_n_in)とりだす
rst_n_inの接続先信号名とプロパティをDUT内部構成表14から検索
DUT内部構成表14を参照すると、カウンタ51のrst_n_inの接続先は、"PORT"で、接続先の信号名はrst_sync_n_inである。DUT11の外端ポートには制約条件をつけていないので、プロパティは存在しない。
ステップS230:
プロパティは存在しないのでS235へ分岐
ステップS235:
接続先信号のみのプロパティを作成
(rst_sync_n_in)//P-5
ステップS270:
まだ引数が残っているので、ステップS220へ戻る
ステップS210:
引数から変数をひとつ(enb_in)取り出す
enb_inの接続先信号名とプロパティをDUT内部構成表14から検索
DUT内部構成表14を参照すると、カウンタ51のenb_inの接続先は、UNKNOWN BLOCK で、接続先信号名はcnt_enb_out。UNKNOWN BLOCKなのでプロパティは存在しない。
ステップS230:
プロパティが存在しないためステップS235へ分岐
ステップS235:
接続先信号のみのプロパティを作成
(cnt_enb_out)//P-6
ステップS270:
引数は終了したので、このルーチンは終了
ステップS275:
ステップS235に戻り、戻り値は、
(rst_sync_n_in)
(cnt_enb_out)
ステップS255:
サブルーチンから戻ってきたので、戻り値で引数を置換
rst_n_inはrst_sync_n_inで、enb_in は cnt_enb_outでそれぞれ置換。
プロパティは以下のようになる。
'(do_out)==8'b00000000; //P-1
(~rst_n_in==1'b1)&&(enb_in==1'b1)=>
'(do_out)==do_out-1'b1; //P-2
ステップS230:
プロパティが存在しないならば、ステップS235へ分岐
ステップS240:
ステップS210で取り出したプロパティ中の接続先変数名を、
S220で選択した変数で置換
(~rst_n_in==1'b0)=>
'(cnt_in)==8'b00000000; //P-3
(~rst_n_in==1'b1)&&(enb_in==1'b1)=>
'(cnt_in)==cnt_in-1'b1; //P-4
ステップS250:
プロパティにカウンタ51の外端信号(rst_n_inとenb_in)が存在するので、
ステップS255に分岐
ステップS255:
rst_n_in,enb_inを引数にステップS220を再帰的に実行
ステップS220:
引数から変数をひとつ(rst_n_in)とりだす
rst_n_inの接続先信号名とプロパティをDUT内部構成表14から検索
DUT内部構成表14を参照すると、カウンタ51のrst_n_inの接続先は、"PORT"で、接続先の信号名はrst_sync_n_inである。DUT11の外端ポートには制約条件をつけていないので、プロパティは存在しない。
ステップS230:
プロパティは存在しないのでS235へ分岐
ステップS235:
接続先信号のみのプロパティを作成
(rst_sync_n_in)//P-5
ステップS270:
まだ引数が残っているので、ステップS220へ戻る
ステップS210:
引数から変数をひとつ(enb_in)取り出す
enb_inの接続先信号名とプロパティをDUT内部構成表14から検索
DUT内部構成表14を参照すると、カウンタ51のenb_inの接続先は、UNKNOWN BLOCK で、接続先信号名はcnt_enb_out。UNKNOWN BLOCKなのでプロパティは存在しない。
ステップS230:
プロパティが存在しないためステップS235へ分岐
ステップS235:
接続先信号のみのプロパティを作成
(cnt_enb_out)//P-6
ステップS270:
引数は終了したので、このルーチンは終了
ステップS275:
ステップS235に戻り、戻り値は、
(rst_sync_n_in)
(cnt_enb_out)
ステップS255:
サブルーチンから戻ってきたので、戻り値で引数を置換
rst_n_inはrst_sync_n_inで、enb_in は cnt_enb_outでそれぞれ置換。
プロパティは以下のようになる。
(~rst_sync_n_in==1'b0)=>
'(cnt_in)==8'b00000000; //P-7
(~rst_sync_n_in==1'b1)&&(cnt_enb_out ==1'b1)=>
'(cnt_in)==cnt_in-1'b1; //P-8
ステップS260:
プロパティP-1とP-2には、DUT11のポート信号(rst_sync_n_in)が存在
ステップS265へ分岐
ステップS265:
本実施例では、DUT11の外端ポートは制約条件を持たないので、
プロパティは変更なし
ステップS270:
引数は終了したのでステップS275へ分岐
ステップS275:
求めたプロパティを出力し、終了
(~rst_sync_n_in==1'b0)=>
'(cnt_in)==8'b00000000; //P-9
(~rst_sync_n_in==1'b1)&&(cnt_enb_out==1'b1)=>
'(cnt_in)==cnt_in-1'b1; //P-10
このプロパティがUNKNOWN BLOCK52の入出力制約条件になる。
'(cnt_in)==8'b00000000; //P-7
(~rst_sync_n_in==1'b1)&&(cnt_enb_out ==1'b1)=>
'(cnt_in)==cnt_in-1'b1; //P-8
ステップS260:
プロパティP-1とP-2には、DUT11のポート信号(rst_sync_n_in)が存在
ステップS265へ分岐
ステップS265:
本実施例では、DUT11の外端ポートは制約条件を持たないので、
プロパティは変更なし
ステップS270:
引数は終了したのでステップS275へ分岐
ステップS275:
求めたプロパティを出力し、終了
(~rst_sync_n_in==1'b0)=>
'(cnt_in)==8'b00000000; //P-9
(~rst_sync_n_in==1'b1)&&(cnt_enb_out==1'b1)=>
'(cnt_in)==cnt_in-1'b1; //P-10
このプロパティがUNKNOWN BLOCK52の入出力制約条件になる。
次にステップS300の動作を説明する。ステップS300ではステップS200で求めた入出力制約条件を使用して論理検証を実行する。論理検証には、論理シミュレータを使用した動的検証と、数学的に判定する静的検証のどちらを用いてもよい。動的検証を用いる場合は、ステップS200で求めた入出力制約条件から、アサーションやテンポラルを作成し、テストベンチに組み込んでシミュレーションを実行する。アサーションやテンポラルを記述する検証用言語は複数存在するが、本発明は言語仕様に依存しないためどの検証用言語を用いてもよい。一方、静的検証を用いる場合は、ステップS200で求めた入出力制約条件を用いて静的検証を実行する。静的検証の場合も複数の言語が存在するがどの言語を用いてもよい。また、本発明は動的検証か静的検証のどちらかのみ使用に限ったものではないので、検証対象により使用する検証手法を変えてもよいし、同じ検証対象に対して動的検証と静的検証の双方を組み合わせて使用してもよい。
11 DUT
12 機能ブロック一覧表
13 プロパティ・ライブラリ
14 DUT内部構成表
15 DUT入出力制約条件
16 内部ブロック入出力制約条件
21 内部表現変換器(HDL用)
22 内部表現変換器(プロパティ用)
23 比較器
24 内部ブロック入出力制約条件生成器
31 BDD(DUT)
32 BDD(property)
33〜37 BDDの節
51 カウンタ(8 bit loadable down counter)
52 UNKNOWN BLOCK
61 cnt_in
62 do_out
63 rst_n_in
64 rst_sync_n_in
65 cnt_enb_out
66 enb_in
71 プロパティ
101 機能ブロック番号
102 機能ブロック名
103 プロパティ番号
104 信号対応表
111 プロパティ変数名
112 デザイン変数名
113 方向
114 接続先
115 接続先信号名
12 機能ブロック一覧表
13 プロパティ・ライブラリ
14 DUT内部構成表
15 DUT入出力制約条件
16 内部ブロック入出力制約条件
21 内部表現変換器(HDL用)
22 内部表現変換器(プロパティ用)
23 比較器
24 内部ブロック入出力制約条件生成器
31 BDD(DUT)
32 BDD(property)
33〜37 BDDの節
51 カウンタ(8 bit loadable down counter)
52 UNKNOWN BLOCK
61 cnt_in
62 do_out
63 rst_n_in
64 rst_sync_n_in
65 cnt_enb_out
66 enb_in
71 プロパティ
101 機能ブロック番号
102 機能ブロック名
103 プロパティ番号
104 信号対応表
111 プロパティ変数名
112 デザイン変数名
113 方向
114 接続先
115 接続先信号名
Claims (1)
- ハードウエア記述言語により記述された論理システムの検証装置において、
前記ハードウエア記述言語で記述された論理システムを論理表現に変換し最適化をおこない正規化論理表現を生成する正規化論理表現生成手段と、
論理システムの構成部品である機能ブロックに対応する動作仕様記述の正規化論理表現を記録する機能ブロック保持手段と、
前記機能ブロック保持手段から正規化論理表現を選択し前記正規化論理表現生成手段で生成した正規化論理表現と比較をおこなうことで前記機能ブロックの存在を判定し、前記ハードウエア記述言語で記述された論理システムの内部構成を抽出する内部構成抽出手段と、
前記内部構成抽出手段で抽出した各ブロックの入力および出力制約条件を求める手段を具備することを特徴とする、ハードウエア記述言語により記述された論理システムの検証装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005208625A JP2007026181A (ja) | 2005-07-19 | 2005-07-19 | 論理検証手法および論理検証装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005208625A JP2007026181A (ja) | 2005-07-19 | 2005-07-19 | 論理検証手法および論理検証装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007026181A true JP2007026181A (ja) | 2007-02-01 |
Family
ID=37786831
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005208625A Withdrawn JP2007026181A (ja) | 2005-07-19 | 2005-07-19 | 論理検証手法および論理検証装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2007026181A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008197962A (ja) * | 2007-02-14 | 2008-08-28 | Fujitsu Ltd | 論理システムの障害検証方法、障害検証装置、および障害検証プログラム |
-
2005
- 2005-07-19 JP JP2005208625A patent/JP2007026181A/ja not_active Withdrawn
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008197962A (ja) * | 2007-02-14 | 2008-08-28 | Fujitsu Ltd | 論理システムの障害検証方法、障害検証装置、および障害検証プログラム |
JP4631858B2 (ja) * | 2007-02-14 | 2011-02-16 | 富士通株式会社 | 論理システムの障害検証方法、障害検証装置、および障害検証プログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7383166B2 (en) | Verification of scheduling in the presence of loops using uninterpreted symbolic simulation | |
US9251300B2 (en) | Methods and tools for designing integrated circuits with auto-pipelining capabilities | |
Huang et al. | Formal equivalence checking and design debugging | |
US7895552B1 (en) | Extracting, visualizing, and acting on inconsistencies between a circuit design and its abstraction | |
US7958470B1 (en) | Method and system for false path analysis | |
US7464015B2 (en) | Method and apparatus for supporting verification, and computer product | |
US7890901B2 (en) | Method and system for verifying the equivalence of digital circuits | |
US7065726B1 (en) | System and method for guiding and optimizing formal verification for a circuit design | |
US10372856B2 (en) | Optimizing constraint solving by rewriting at least one bit-slice constraint | |
CN101872369A (zh) | 规范化表示中的自适应状态-符号转换 | |
US20070079266A1 (en) | Method and computer program for analysis of an integrated circuit design to identify and resolve a problematic structure characterized by multiple rule violations using a design closure knowledge base and a physical design database | |
US9965575B2 (en) | Methods and systems for correcting X-pessimism in gate-level simulation or emulation | |
CN113901745A (zh) | 芯片测试方法、装置、电子设备及计算机可读存储介质 | |
US9817930B1 (en) | Method, system, and computer program product for verifying an electronic circuit design with a graph-based proof flow | |
US7380228B2 (en) | Method of associating timing violations with critical structures in an integrated circuit design | |
US20110022906A1 (en) | Method and system for test point insertion | |
US20050114805A1 (en) | Device, system and method for VLSI design analysis | |
Yu et al. | Advanced datapath synthesis using graph isomorphism | |
JP2007026181A (ja) | 論理検証手法および論理検証装置 | |
US8443314B1 (en) | Abstraction level-preserving conversion of flip-flop-inferred hardware description language (HDL) to instantiated HDL | |
JP2008243092A (ja) | マルチサイクルパス検出装置、マルチサイクルパス検出方法及びマルチサイクルパス検出プログラム | |
JP2007241566A (ja) | 検証方法及び検証装置 | |
US7689399B1 (en) | Automatic extraction of design properties | |
Ashar et al. | Verification of scheduling in the presence of loops using uninterpreted symbolic simulation | |
US7650579B2 (en) | Model correspondence method and device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20081007 |