JP2006163598A - 検証方法及び検証装置 - Google Patents

検証方法及び検証装置 Download PDF

Info

Publication number
JP2006163598A
JP2006163598A JP2004351511A JP2004351511A JP2006163598A JP 2006163598 A JP2006163598 A JP 2006163598A JP 2004351511 A JP2004351511 A JP 2004351511A JP 2004351511 A JP2004351511 A JP 2004351511A JP 2006163598 A JP2006163598 A JP 2006163598A
Authority
JP
Japan
Prior art keywords
property
dut
input
block
internal
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
Application number
JP2004351511A
Other languages
English (en)
Inventor
Motohisa Ito
元久 伊藤
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.)
Canon Inc
Original Assignee
Canon Inc
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 Canon Inc filed Critical Canon Inc
Priority to JP2004351511A priority Critical patent/JP2006163598A/ja
Publication of JP2006163598A publication Critical patent/JP2006163598A/ja
Withdrawn legal-status Critical Current

Links

Images

Landscapes

  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

【課題】 論理システムの動作と仕様とが一致しない不具合が発生した場合に、その原因箇所を探索する時間を短縮する。
【解決手段】 ハードウェア記述言語で記述した論理システムを検証する際に、その論理システムの内部構成及び入出力制約条件を生成し(S200、S300)、論理システムを動的シミュレータで実行して動的シミュレーションの実行状態を記録し(S100)、その論理システムの内部構成、入出力制約条件、及び動的シミュレーションの実行状態に基づいて論理システムの動作を定義するプロパティを生成し、そのプロパティに基づいて論理検証を行う(S400、S500)。
【選択図】 図4

Description

本発明は、論理システムを検証する技術に関するものである。
LSIを含む論理システムの規模は、年々増大している。これに伴い、論理システムの検証にかかる工数も増加している。一方、市場には消費者が欲するときに製品を投入しなければならず、LSIを始めとする論理システムの開発期間は短くなっている。そのため、論理システムの検証効率を向上させる必要が生じている。
現在、LSIを含む論理システムの検証では、検証対象の外端仕様のみを用いて検証を行うブラックボックス検証が主流である。このブラックボックス検証は、検証対象の内部構成や仕様に依存しないため、流用性や可読性が高く、取りまわしが便利である。
しかし、ブラックボックス検証は検証対象の外端仕様のみで検証を実施し、検証対象の内部状態を考慮していない。また、ブラックボックス検証は論理シミュレータで検証対象を擬似的に動かす動的シミュレーション手法で実現している。そのため、検証対象の動作と仕様とが一致しない不具合、例えば実行値と期待値との不一致が発生した場合に、その原因箇所の探索に多くの時間がかかってしまう。この主な原因は以下の二点である。
1)検証対象の内部構成や仕様が不明であるため、検証対象の論理記述を端から解析する必要がある
2)不具合事象の再現や修正を確認するために、何度も動的シミュレーションを実行する必要がある。
一方、検証対象の内部構成や仕様も併せて使用して検証を行うホワイトボックス検証では、検証対象の内部構成や仕様も参照しているため、検証対象の動作が仕様に一致しない場合、その原因箇所の探索はブラックボックス検証に比較して容易である。
しかし、検証対象の内部構成や仕様が明確になっていなければ、ホワイトボックス検証を実施することはできない。
背景技術としては、特許文献1が挙げられる。特許文献1には、外部モジュールのプロパティ情報(回路の動作仕様を専用の書式で表現したもの)から、検証対象モジュールに入力を与えるシミュレーション環境を自動生成し、また、検証対象モジュールのプロパティ情報から、検証対象モジュールの出力を期待値と比較するシミュレーション環境を自動生成することが記載されている。
特開2003-196342号公報
上述したように、検証対象の仕様が外端のみ定義されている場合は、ブラックボックス検証を用いらなければならなかった。しかし、ブラックボックス検証で検証対象の動作と仕様とが一致しない不具合が発生した場合に、その原因箇所の探索には長い時間が必要である。
よって、従来の手法では、十分な精度を持つ論理システムを予定の期間内に完成させることができず、市場が欲するときに製品を投入できないという問題や不十分な精度のまま製品を市場に投入してしまうという問題が生じる。
本発明は、上記課題を解決するためになされたもので、論理システムの動作と仕様とが一致しない不具合が発生した場合に、その原因箇所を探索する時間を短縮することを目的とする。
本発明は、論理システムを検証する検証方法であって、前記論理システムの内部構成を抽出する抽出工程と、前記論理システムの入出力制約条件を生成する入出力制約条件生成工程と、前記論理システムを動的シミュレータで実行し、該動的シミュレーションの実行状態を記録する動的シミュレーション実行工程と、前記論理システムの内部構成、前記入出力制約条件、及び前記動的シミュレーションの実行状態に基づいて前記論理システムの動作を定義するプロパティを生成し、そのプロパティに基づいて前記論理システムの論理検証を行う検証工程とを有することを特徴とする。
また、本発明は、論理システムを検証する検証装置であって、前記論理システムの内部構成を抽出する抽出手段と、前記論理システムの入出力制約条件を生成する入出力制約条件生成手段と、前記論理システムを動的シミュレータで実行し、該動的シミュレーションの実行状態を記録する動的シミュレーション実行手段と、前記論理システムの内部構成、前記入出力制約条件、及び前記動的シミュレーションの実行状態に基づいて前記論理システムの動作を定義するプロパティを生成し、そのプロパティに基づいて前記論理システムの論理検証を行う検証手段とを有することを特徴とする。
本発明によれば、論理システムの動作と仕様とが一致しない不具合が発生した場合に、その原因箇所を探索する時間を短縮することができる。
従って、十分な精度を持つ論理システムを予定の期間内に完成させることができ、市場が欲するときに製品を投入することが可能となる。
以下、図面を参照しながら発明を実施するための最良の形態について詳細に説明する。
図1は、本実施形態における論理システムの検証方法を示す図である。図1において、11は検証対象のDUT(Design Under Test)であり、Verilog 或いはVHDL(VHSIC Hardware Description Language)などのハードウェア記述言語で記述した論理システムの設計データである。ここで、DUT11の外端の仕様は定義されているが、DUT11内部の構成や仕様は、明確に定義していなくても良い。
本実施形態では、このDUT11を論理検証するためのプロパティ(property)を生成するものであり、このプロパティは検証対象の動作仕様を表す式である。
13はDUT入出力制約条件であり、DUT11の入力及び出力の動作を定義するものである。14はプロパティライブラリであり、論理システムを構成する部品である「機能ブロック」のプロパティを纏めたものである。即ち、機能ブロックを予め定義しておき、機能ブロック毎にプロパティを定義し、プロパティライブラリ14として保存しておく。このプロパティライブラリ14は開発する論理システム全てに対して共通に使用するものであって、個々の論理システム毎に作成するものではない。
21は動的シミュレーションであり、DUT11の動的検証を実施する。この検証時に使用する検証環境であるテストベンチは、DUT11に入力したデータの値、DUT11の実行値、及び期待値を時刻と共に記録する機能が必要である。この記録機能があれば、従来の動的検証で用いたテストベンチをそのまま用いても良い。しかし、この記録機能が無ければ、従来の動的検証で用いたテストベンチに記録機能を追加し、そのテストベンチを用いても良い。勿論、新規にテストベンチを作成するのを妨げるものではない。
ここで、DUT11に入力したデータの値、DUT11の実行値、期待値、及び時刻は、17の動的シミュレーションログに記録される。
22は内部構成・内部ブロック入出力条件抽出器であり、上述したDUT11、DUT入出力制約条件13、及びプロパティライブラリ14に基づいて、DUT内部構成表及び内部ブロック入出力制約条件を生成し、15のDUT内部構成表及び16の内部ブロック入出力制約条件に保存する。尚、内部構成・内部ブロック入出力条件抽出器22の詳細については図2を用いて更に後述する。
そして、23は内部ブロックプロパティ生成器であり、上述したプロパティライブラリ14、DUT内部構成表15、内部ブロック入出力制約条件16、及び動的シミュレーションログ17に基づいて、DUT11を構成する内部ブロック毎にプロパティを生成し、18の内部ブロックプロパティに保存する。
次に、図2を用いて図1に示す内部構成・内部ブロック入出力条件抽出器22の詳細な構成及び動作について説明する。
図2は、内部構成・内部ブロック入出力条件抽出器22の構成の一例を示す図である。図示するように、内部構成・内部ブロック入出力条件抽出器22は、内部表現変換器32、比較器33、内部ブロック入出力条件生成器34から構成されている。
内部表現変換器32は、DUT11の内部構成や仕様をプロパティライブラリ14中のプロパティと比較できる内部表現に変換する。比較器33は、内部表現変換器32で変換された内部表現とプロパティライブラリ14中のプロパティとを比較する。ここで、内部表現がプロパティライブラリ14中のあるプロパティを包含していると判断したならば、そのプロパティが該当する機能ブロックの情報をDUT内部構成表15に登録する。また、DUT11の変換された内部表現中、どのプロパティをも包含していない内部表現は、未知ブロック(unknown block)としてDUT内部構成表15に登録する。
尚、この未知ブロックは、既知の機能ブロックに一致しないので、未知の機能を持っている可能性がある。
従って、DUT内部構成表15には、未知ブロックを含む機能ブロックの情報がDUT11を構成する内部構成として登録される。以下、DUT11を構成する機能ブロックを「内部ブロック」と呼ぶ。
次に、内部ブロック入出力制約条件生成器34は、DUT入出力制約条件13とDUT内部構成表15に登録された情報から内部ブロックの入力と出力の制約条件を生成する。以下、特に区別する必要が無い限り入力と出力の制約条件を合わせて「入出力制約条件」と呼ぶ。そして、生成した入出力制約条件を内部ブロック入出力制約条件16として保存する。
但し、内部ブロック入出力制約条件生成器34は、全ての内部ブロックについて入出力制約条件を常に生成しなければならないわけではない。内部ブロック入出力制約条件生成器34が生成する入出力制約条件16は、内部ブロック入出力制約条件16の使用目的によって変化する。例えば、未知ブロックのプロパティの生成のみを実施する場合は、未知ブロックの入出力制約条件と、未知ブロックと依存関係のある内部ブロックの入出力制約条件を求めるだけで良い。
一方、動的シミュレーションで生じた検証対象の動作と仕様の不一致の原因箇所を探求する場合は、全ての内部ブロックの入出力制約条件を求める。或いは、原因箇所の絞込みができているならば、原因箇所が存在すると予想される内部ブロックとその周辺ブロックに、入出力制約条件の生成を限っても良い。勿論、全ての内部ブロックについて入出力制約条件を常に生成することを妨げるものではない。
次に、8ビットダウンカウンタ(8 bit down counter)の動作を定義するプロパティを例にとり、プロパティの具体例について説明する。以下に、本実施形態で使用する記号を示す。
; 動作記述の区切り
a => b aが成立するならばbが成り立つ
&& 論理積
|| 論理和
~ 論理否定
' 次クロック・サイクルの状態
// コメント
== 論理等価
1'b1 2進数一桁、値は '1'
rst_n_in カウンタ・リセット信号 ('0' でリセット)
do_out カウンタ値出力 (8 bit)
enb_in カウンタ・イネーブル信号 ('1' でカウントダウン, '0' で保持)
以下に示すプロパティは、8ビットダウンカウンタの動作を定義するプロパティの一部である。
(~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、P−2は以下の動作記述を定義している。
P−1「カウンタ・リセット信号が有効ならば、次クロック・サイクルでカウンタの値は全て 0 になる」
P−2「カウンタ・リセット信号が無効で、かつカウント・イネーブル信号が有効ならば、次クロック・サイクルのカウンタ値は、現在のカウンタから 1 減じた値」
但し、本発明はプロパティの書式や言語仕様に依存した発明ではないので、プロパティは上記の例に限定されるものではない。
次に、本実施形態の内部表現変換器32で変換される内部表現について説明する。上述した比較器33で内部表現の比較を行うために、本実施形態で使用する内部表現は、同一の論理関数が同一の表現にならなければならない。また、容量が大きくならず、内部表現による比較の手順が容易である必要がある。
同一の論理関数が同一の表現となる表現方法として、例えば二分決定グラフ(BDD:Binary Decision Diagram)、真理値表、積和標準形が知られている。この真理値表は、入力数の指数乗の項を必要とする。また、積和標準形も最悪の場合、真理値表と同様に、入力数の指数乗の項を必要とする。しかし、BDDでは多くの場合、真理値表や積和標準形より少ない項で論理関数を表現可能である。また、真理値表と積和標準形では、内部表現への変換工数が論理関数の複雑度に影響し、複雑になるにつれて内部表現への変換工数が増加する。
一方、BDDでは、論理関数の複雑度に関係なく変換工数が決定するため、本実施形態では、内部表現としてBDDを用いるものとする。勿論、内部表現はBDDに限定されるものではなく、同一の論理関数が同一の表現になるならばどのような表現が用いられても良い。
BDDを内部表現に使用するプログラムや市販のツールでは、BDD生成アルゴリズムとして、applyアルゴリズムが広く使用されている。このapplyアルゴリズムは、1984年にRandal E. Bryant氏により開発されたBDD生成アルゴリズムである。また、このapplyアルゴリズムは、既に数多く使用されており、公知の技術である。
そこで、上述した内部表現変換器32は、DUT11やプロパティをBDDに変換する手法として、applyアルゴリズムを使用するものとする。
尚、本発明は、BDD生成アルゴリズムに依存した発明ではないので、内部表現変換器32が使用するアルゴリズムはapplyアルゴリズムに限定されるものではない。
ここで、比較器33は、DUT11のBDDとプロパティのBDDの同形性を判定し、DUT11のBDDがプロパティのBDDを包含しているか否かを判断する。このBDDの同形性判定アルゴリズムは、従来から多くの提案が存在している。
尚、本発明は、同形性判定アルゴリズムに依存した発明ではないので、どの同形性判定アルゴリズムを用いても良い。例えば、ある節に注目し、'1'の枝の形と、'0'の枝の形を再帰的に比較することで同形性を判定する手法を用いても良い。
次に、図3を用いてプロパティライブラリ14を作成する方法について説明する。尚、図3に示す機能ブロック一覧表12は、論理システムを構成する部品である機能ブロックの一覧である。この機能ブロック一覧表12は、開発する論理システム全てに対して共通に使用するものであって、個々の論理システム毎に作成するものではない。よって、予め必要な機能ブロックが何であるかを検討し、機能ブロック一覧表12を作成しておく。
図3は、本実施形態におけるプロパティライブラリ14の作成方法の一例を示す図である。まず、機能ブロック一覧表12に記載の機能ブロック毎に動作を定義したプロパティをプロパティ生成手順31で作成し、内部表現変換器32で上述の内部表現に変換する。そして、プロパティと内部表現を対にして機能ブロック毎にプロパティライブラリ14として保存する。
尚、プロパティライブラリ14は機能ブロック一覧表12に変更が無ければ、毎回生成し直す必要は無い。そのため、プロパティ生成手順31では、機能ブロック一覧表12からプロパティを生成する工程を自動化せず、人手でプロパティを作成しても良い。勿論、プロパティ自動生成ツールの使用を妨げるものではない。また、本実施形態における論理検証手法及び論理検証装置を用いる度に、或いは論理システム毎にプロパティライブラリ14を生成することを妨げるものでもない。
図4は、本実施形態における論理検証手法及び論理検証装置を用いた検証の流れの一例を示すフローチャートである。ここでは、論理検証手法及び論理検証装置を用いて、より詳細にDUT11の検証を行う手順を示している。前提条件として、DUT11内に機能が未知である未知ブロックが存在し、プロパティライブラリ14は予め生成してあるものとする。また、図4に示す処理は、DUT11を入力したときから開始される。
まず、ステップS100において、動的シミュレーション21がDUT11の動的検証を実施し、DUT11に入力したデータの値、DUT11の実行値、期待値、及び時刻を動的シミュレーションログ17に記録する。
一方、ステップS200では、内部構成・内部ブロック入出力条件抽出器22内の内部表現変換器32及び比較器33によりプロパティライブラリ14内の内部表現に基づいてDUT11の内部構成を求め、DUT内部構成表15を生成する。
また、ステップS300では、DUT入出力制約条件13とDUT内部構成表15から内部ブロック入出力条件16を生成する。
次に、ステップS400において、内部ブロックプロパティ生成器23が、ステップS100の結果(動的シミュレーションログ17)、ステップS200の結果(DUT内部構成表15)、及びステップS300の結果(内部ブロック入出力制約条件16)から、内部ブロックプロパティ18を生成する。
そして、ステップS500では、ステップS400で生成した内部ブロックプロパティ18を用いて検証や原因箇所の探索を行う。
引き続き、図4に示す各ステップの詳細な動作について説明する。最初に図5を用いて図4に示すステップS200の「DUT11の内部構成を抽出し、DUT内部構成表15を作成する」動作について説明する。
図5は、図4に示すステップS200の詳細な動作を示すフローチャートである。まず、ステップS210において、内部表現変換器32を使用してDUT11をBDDに変換する。以下、変換後のBDDを「BDD(DUT)」と呼ぶ。次に、ステップS220において、プロパティライブラリ14から機能ブロックを一つ選択し、この機能ブロックの動作を定義する全てのプロパティをプロパティライブラリ14から選択し、BDDに変換する。以下、このBDDを「BDD(property)」と呼ぶ。
次に、ステップS230〜ステップS240において、比較器33でBDD(DUT)がBDD(property)を包含しているかを判定する。ここで、BDD(property)を包含している場合はステップS250へ分岐し、包含していないBDD(property)が存在する場合はステップS270へ分岐する。
ステップS250では、ステップS220で選択した機能ブロックについてDUT内部構成表15に以下の情報を登録する。
(A)機能ブロック名称と、その動作を定義する全てのプロパティの番号
(B)DUT11の信号名やポート名とプロパティ内の変数との対応
(C)機能ブロック間の接続情報
尚、(C)の情報は、ステップS220で選択した機能ブロックの信号名とポート名を、DUT内部構成表15内で検索して求める情報である。このとき、接続先機能ブロックの項に、ステップS220で選択した機能ブロックの情報が記載されていなければ、情報を追加する。
次に、ステップS260では、BDD(property)の各節に対応するBDD(DUT)の節に登録済み印を付ける。
次に、ステップS270では、プロパティライブラリ14内に未比較の機能ブロックが存在するかを調べ、終了条件を判定する。ここで、未比較の機能ブロックが存在する場合はステップS220に戻り、未比較の機能ブロックが存在しない場合はステップS280へ分岐する。
尚、BDD(DUT)で登録済み印が付いていない節からなる部分、即ち、DUT11においてプロパティライブラリ14内の何れの機能ブロックにも相当しない部分である、この部分を未知ブロックと呼ぶ。未知ブロックは、未知の機能を含んでいるため、何れの機能ブロックにも一致しないと考えられる。或いは、DUT11の記述誤りにより、未知ブロックは、何れの機能ブロックにも一致しなかったとも考えられる。
ステップS280では、このBDD(DUT)で登録済み印がついていない節を変換して未知ブロックのプロパティを生成する。未知ブロックのプロパティ番号は、U−1,U−2,…とする。ここで生成したプロパティは未知ブロックの動作を示しているが、仕様通りであるとは限らない。なぜならば、DUT11の記述誤りにより何れの機能ブロックにも一致せず、未知ブロックに分類されている可能性があるためである。
そして、未知ブロックの情報をDUT内部構成表15に登録する。名称を未知ブロックとする以外、ステップS250と動作は同じである。
(A)機能ブロック名称と、その動作を定義する全てのプロパティの番号
(B)DUT11の信号名やポート名とプロパティ内の変数との対応
(C)機能ブロック間の接続情報
尚、(C)の情報は、未知ブロックの信号名とポート名を、DUT内部構成表15内で検索して求める。このとき、接続先機能ブロックの項に、未知ブロックの情報が記載されていなければ、情報を追加する。
ここで、本実施形態におけるDUT内部構成表15の構成について説明する。図6は、DUT内部構成表15の構成の一例を示す図である。図6に示すように、DUT内部構成表15は、左から順に機能ブロック番号101、機能ブロック名102、プロパティ番号103、信号対応表104の4列で構成されている。また、信号対応表列104は、更に5列に分かれている。そして、DUT内部構成表15は、新しい機能ブロックを登録する毎に、一行ずつ増加する。
図6に示す機能ブロック番号101内の番号は登録順に付けられる。また、この番号は、DUT内部構成表15の信号対応表で接続先を示すのにも使用される。
機能ブロック名102は機能ブロックの名称である。ここで使用する名称はプロパティライブラリ14に登録してある機能ブロック名である。
プロパティ番号103には、プロパティを一意に定めることができる情報を記載する。プロパティそのものでもプロパティに付けた番号でも良い。本実施形態では、プロパティ毎に付けたプロパティ番号を記録するものとする。また、当該機能ブロックの動作が複数のプロパティで定義されている場合は、全てのプロパティ番号を記入する。
信号対応表104は、DUT11の信号名やポート名とプロパティ内の変数との対応と機能ブロック間の接続情報とを記録する。また、信号対応表104は、プロパティ変数名111、デザイン変数名112、方向113、接続先114、接続先信号名115の5列で構成されている。
プロパティ変数名111及びデザイン変数名112は、プロパティ内の変数名とDUT11の信号名やポート名との対応を示している。プロパティ変数名111は、プロパティで使用している変数名を記録している。また、デザイン変数名112は、プロパティ変数名111に対応する信号名或いはポート名を記録している。
方向113は機能ブロックからみた信号の方向を示し、“IN”と“OUT”の2つの状態を取る。ここで“IN”は入力信号を、“OUT”は出力信号を示す。
接続先114及び接続先信号名115は、接続先と接続先の信号名とを示す。具体的には、接続先がDUT内部構成表14に登録済みの機能ブロックであれば、接続先114はその機能ブロック番号となる。
また、接続先がDUT11の入力或いは出力ポートであれば、接続先114は“ポート(PORT)”とする。DUT11内部に接続しているのに関わらず、DUT内部構成表15に登録が無い場合は未定にしておく。そして、図5におけるステップS280で、DUT内部構成表14を再走査し、接続先114の値を確定させる。このとき、接続先が、未知ブロックならば接続先114の値は“未知ブロック”とする。
続いて、図7及び図8を用いて図5に示すステップS250の詳細な動作について説明する。図7は、図5に示すステップS250の詳細な動作を示すフローチャートである。また、図8は、BDD(DUT)及びBDD(property)の一例を示す図である。図8に示すように、図5に示すステップS240でBDD(DUT)41がBDD(property)42を包含している場合である。ここで、BDD(DUT)41はBDD(DUT)全体のうち、BDD(property)42と同形な部分を抜き出したものである。また、BDD(DUT)41、BDD(property)42とも説明に用いる部分以外は簡略化して記述している。
尚、以下では、8ビットローダブルダウンカウンタ(8 bit loadable down counter)の動作を定義したプロパティを使用した場合を例に説明する。
まず、ステップS251において、新たな機能ブロックがDUT11に存在することがステップS240で判明したので、DUT内部構成表15に一行追加する(ここで、機能ブロック番号はnとする)。そして、ステップS252において、機能ブロック番号nの機能ブロック名102に機能ブロック名として“8 bit loadable down counter”を記載する。
次に、ステップS253において、機能ブロック番号nのプロパティ番号103に上述のステップS220で選択した全てのプロパティのプロパティ番号を記載する。そして、ステップS254において、プロパティが使用する変数(プロパティ変数)とDUT11の信号名やポート名(デザイン変数)の対応を作成する。
ここで、図8を用いてステップS254の詳細な動作について説明する。尚、BDD(DUT)41及びBDD(property)42は同形と判断されているものとする。また同形のBDDであるので、それぞれ対応する節が明らかになる。
図8において、BDD(DUT)41の節43と、BDD(property)42の節44とは、それぞれ対応する節である。節43はDUTの信号或いはポートを示しており、その名称は“do_out”である。また、節44はプロパティ内の変数を示しており、その名称は“data_out”である。そして、節43と節44とは対応する節なので、プロパティ変数名は“data_out”であり、それに対応するデザイン変数名は“do_out”である。
このように、ステップS254で、プロパティ変数名(“data_out”)とデザイン変数名(“do_out”)をそれぞれプロパティ変数111とデザイン変数112に記載する。
図7に戻り、ステップS255〜ステップS259において、接続先と接続先信号名を求め、接続先114と接続先信号名115に記載する。この時、接続先がポート以外で、DUT内部構成表15に未登録ならば、接続先は未定とする。
図8を用いてステップS255〜ステップS259の動作を説明する。図8において、BDD(DUT)41の節43は、BDD(property)42と同形の範囲において最終の節である。この節43は節45と接続している。そして、接続先の節45は登録済みの印が存在しない。よって、ステップS258に分岐し、接続先114は未定にする。
次に、ステップ259において、接続先変数名115に節43の接続先の信号名として“di_in”を登録する。一方、節46は、BDD(property)42と同形の範囲において最初の節である。節46の接続先の節47はDUT11のポートである。
よって、ステップS256では、ステップS257へ分岐し、接続先114にポートを示す“PORT”を記載する。そして、ステップ259では、接続先変数名115に節46の接続先のポート名として“di_in”を登録する。
次に、図9を用いて図4に示すステップS300の「DUT入出力制約条件13とDUT内部構成表15から内部ブロック入出力条件16を生成する」詳細な動作について説明する。
図9は、図4に示すステップS300の詳細な動作を示すフローチャートである。また図10は、本実施形態で使用するDUT11の構造の一例を示す図である。図10では、説明に必要ない部分は省略して記述している。
本実施形態では、ブロック52の外端信号のうち、cnt_in61の生成手順を説明する。それ以外の信号についても入出力制約条件の生成手順は同じである。図10に示すように、このcnt_in61はカウンタ51のdo_out62に接続している。カウンタ51のリセット信号 rst_n_in63はDUT11のポート、rst_sync_n_in64に接続している。そして、カウンタ51の制御信号、enb_in66は未知ブロック52のcnt_enb_out65に接続している。以下、説明にあたり適宜、DUT内部構成表15の一例を示す図6も用いる。尚、DUT11の外端ポートは制約条件を持たないとする。
まず、ステップS310において、DUT内部構成表15から未知ブロック52の外端信号を取り出す。図6に示すDUT内部構成表15より、未知ブロック52の外端信号のリストは以下の通りである。
(rst_n_in, cc_out, ld_cmd_out, cnt_in, cnt_enb_out, state_in, …)
次に、ステップS320において、引数から変数を1つ取り出す。そして、その接続先信号名とプロパティをDUT内部構成表15から検索する。
この例では、図6に示すDUT内部構成表15を参照すると、デザイン変数名112、cnt_inは接続先114がn、即ち、機能ブロック番号nの8 bit loadable down counter (カウンタ51)であり、その接続先信号名115は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
次に、ステップS330において、プロパティが存在しないならばステップS335へ分岐し、存在するならばステップS340へ分岐する。
このステップS340では、ステップS310で取り出したプロパティ中の接続先変数名をステップS320で選択した変数で置換する。
(~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
次に、ステップS350において、プロパティの引数に機能ブロックの外端信号が存在するか否かを判定し、この例では、プロパティ(P−3、P−4)にカウンタ51の外端信号(rst_n_inとenb_in)が存在するので、ステップS355へ分岐する。
このステップS355では、機能ブロックであるカウンタ51の外端信号(rst_n_inとenb_in)を引数にステップS320を再帰的に実行する。
即ち、ステップS320において、引数(rst_n_inとenb_in)から1つの引数rst_n_inを取り出す。そして、この引数rst_n_inの接続先信号名とプロパティをDUT内部構成表15から検索する。
DUT内部構成表15を参照すると、カウンタ51のrst_n_inの接続先は、“PORT”で、接続先の信号名はrst_sync_n_inである。DUT11の外端ポートには制約条件をつけていないので、プロパティは存在しない。
そして、ステップS330の判定で、プロパティは存在しないのでステップS335へ分岐する。このステップS335では、接続先信号のみのプロパティを作成する。
(rst_sync_n_in) //P−5
次に、ステップS370において、引数が残っているかを調べ、この例では引数が1つ残っているのでステップS320へ戻る。
このステップS320では、次の引数enb_inを取り出す。そして、この引数enb_in の接続先信号名とプロパティをDUT内部構成表15から検索する。
DUT内部構成表15を参照すると、カウンタ51のenb_inの接続先は、未知ブロックで、接続先信号名はcnt_enb_outである。未知ブロックなのでプロパティは存在しない。
そして、ステップS330の判定で、プロパティが存在しないためステップS335へ分岐する。このステップS335では、接続先信号のみのプロパティを作成する。
(cnt_enb_out) //P−6
次に、ステップS370において、引数が残っているかを調べ、この例では全ての引数について実行が終了したので、このルーチンを終了し、ステップS375では、ステップS335に戻る。戻り値は、以下の通りである。
(rst_sync_n_in)
(cnt_enb_out)
ここで、ステップS355では、上述したルーチンから戻ってきたので、戻り値で引数を置換する。即ち、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
次に、ステップS360において、プロパティP−1とP−2にはDUT11のポート信号(rst_sync_n_in)が存在するので、ステップS365へ分岐する。
このステップS365では、本実施形態におけるDUT11の外端ポートは制約条件を持たないため、プロパティは変更なしである。
そして、ステップS370において、引数が残っているかを調べ、引数は終了したのでステップS375へ分岐する。
このステップS375では、求めたプロパティを出力し、終了する。
(~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
このプロパティが未知ブロック52の入出力制約条件になる。
次に、図11を用いて図4に示すステップS400の「各内部ブロックのプロパティを生成する」詳細な動作について説明する。
図11は、図4に示すステップS400の詳細な動作を示すフローチャートである。まず、ステップS410において、DUT内部構成表15から機能ブロック番号101順に内部ブロックの情報を取り出す。そして、ステップS420において、ステップS410で取り出した機能ブロックの種類により分岐する。ここで、機能ブロックが未知ブロックの場合はステップS440へ分岐し、機能ブロックが未知ブロック以外の場合はステップS430へ分岐する。
このステップS430では、未知ブロック以外の機能ブロックはプロパティライブラリ14に対応するプロパティが存在しているので、DUT内部構成表15のプロパティ番号103に記載された全てのプロパティをプロパティライブラリ14から選択する。
一方、ステップS440では、未知ブロックのプロパティを推定する。
次に、ステップS450において、ステップS430及びステップS440で得た内部ブロックプロパティ18を出力する。
次に、ステップS460では、DUT内部構成表15に登録した全ての内部ブロックについて処理を終了したか否かを判断し、未処理の内部ブロックが存在しないならば、この処理を終了するが、未処理の内部ブロックが存在するならば、ステップS410に戻り、上述の処理を繰り返す。
次に、上述したステップS440の詳細な動作について説明する。まず、「t」を動的シミュレーションの時刻を表す変数とし、I(t)、O(t)、S(t)を次のように定義する。
I(t) : 時刻 t の未知ブロックの入力値
O(t) : 時刻 t の未知ブロックの出力値
S(t) : 時刻 t の未知ブロックの内部状態
また、未知ブロックの動作は以下の式で表すことができる。
O(t) = g(S(t), I(t))
ここで、g()は、未知ブロックの出力を求める函数である。未知ブロックの内部状態を表すS(t)は、未知ブロックの内部状態と入力値を用いて以下の式で表すことができる。
S(t+1) = h(S(t), I(t))
よって、
S(t+1) = h(h(S(t - 1), I(t)), I(t))
S(t+1) = H(I(0), I(1), … , I(t))
従って、O(t)は以下の式で表される。
O(t) = g(H(I(0), I(1), … , I(t)), I(t)) = f(I(0), I(1), … , I(t))
函数f()は、未知ブロックの入力値のみで、出力値を定義している。この函数f()を求めれば、未知ブロックの動作を定義したプロパティを生成することが可能となる。この函数f()を求めるには、例えば差分法が使用できる。この手法は、二つの出力値O(t)、O(t-1)の差分と、それらに対応する入力値の差分からf()を推測する方法である。或いは、暗号解読に用いる線形解読法も使用可能である。但し、本発明は函数f()を求める手法に依存した発明ではないので、これらの方法に限定するものではない。
上述した未知ブロックの入力値I(t)と出力値O(t)は、例えば以下の手順で求めることが可能である。
まず、動的シミュレーションログ17から、実行値と期待値とが不一致になった時刻と、その時の期待値を抽出する。この時刻をn、期待値をexp(n)とする。実行値と一致する期待値を用いると、不具合の原因箇所が活性化していないため、不具合の原因箇所を排除できず、その結果、誤りを含んだプロパティを生成してしまう恐れがある。もし、実行値と期待値とが全て一致しているならば、最後の比較に用いた期待値をexp(n)として作業を続ける。
次に、上述のexp(n)から、未知ブロックの出力値O(m)を求める。この時、DUT構成表15に登録した各内部ブロックのプロパティを用いて、DUT11の出力から順に求めてゆく。ここで、m <= nである。なぜならば、未知ブロックからDUT11の出力までの間には0サイクル以上の伝播遅延が存在するからである。
次に、時刻mにおける未知ブロックの入力値I(m)を求める。DUT構成表15に登録した各内部ブロックのプロパティを用いてDUT11の入力値から順に求めて行く。DUT11の入力値は動的シミュレーションログ17から必要に応じて抽出する。
但し、本発明は未知ブロックの入力値I(t)と出力値O(t)の抽出方法に依存した発明ではないので、未知ブロックの入力値I(t)と出力値O(t)の抽出方法を上述の例に限定するものではない。
次に、図4に示すステップS500の詳細な動作について説明する。ステップS500では、ステップS300で求めた内部ブロック入出力制約条件16と、ステップS400で求めた内部ブロックプロパティ18とを用いて静的検証をDUT11に適用する。この時、全ての内部ブロックに対して静的検証を実施しなければならないわけではない。
例えば、明らかに不具合の原因が存在しないと判断した内部ブロックに対しては実施しないように構成することも可能である。また、反対に、明らかに不具合の原因が存在すると判断した内部ブロックに対してのみ実施するように構成しても良い。勿論、全ての内部ブロックに対して静的検証を実施することを妨げるものではない。
以上説明したように、本実施形態によれば、機能が既知である機能ブロックが検証対象の論理システム内に存在すれば、その機能ブロックの動作仕様のみを用いて論理システムの内部構成を抽出し、内部ブロックの入出力制約条件を生成することにより、検証対象の論理システムの内部構成や内部仕様が明確でなくとも、論理システムの内部構成抽出と、内部ブロックの入出力制約条件生成が可能となる。
また、抽出した内部構成や生成した内部ブロック入出力制約条件に加えて、動的シミュレーションの実行状態も併せて使用することにより、既知の機能ブロックに一致せずに、動作仕様を表したプロパティを生成できなかったブロックに対してもプロパティの生成が可能になる。
更に、内部ブロックの入出力制約条件とプロパティを生成し、この内部ブロックの入出力制約条件とプロパティを用いることにより、ブラックボックス検証時に発生する不具合の原因箇所を探索する際に、探索範囲を限定でき、検証対象の論理記述を端から解析する必要が無くなる。従って、不具合の原因箇所探索に費やす時間を減少させることが可能となる。
尚、本発明は複数の機器(例えば、ホストコンピュータ,インターフェース機器,リーダ,プリンタなど)から構成されるシステムに適用しても、1つの機器からなる装置(例えば、複写機,ファクシミリ装置など)に適用しても良い。
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ(CPU若しくはMPU)が記録媒体に格納されたプログラムコードを読出し実行することによっても、達成されることは言うまでもない。
この場合、記録媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記録媒体は本発明を構成することになる。
このプログラムコードを供給するための記録媒体としては、例えばフロッピー(登録商標)ディスク,ハードディスク,光ディスク,光磁気ディスク,CD−ROM,CD−R,磁気テープ,不揮発性のメモリカード,ROMなどを用いることができる。
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)などが実際の処理の一部又は全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
更に、記録媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部又は全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
本実施形態における論理システムの検証方法を示す図である。 内部構成・内部ブロック入出力条件抽出器22の構成の一例を示す図である。 本実施形態におけるプロパティライブラリ14の作成方法の一例を示す図である。 本実施形態における論理検証手法及び論理検証装置を用いた検証の流れの一例を示すフローチャートである。 図4に示すステップS200の詳細な動作を示すフローチャートである。 DUT内部構成表15の構成の一例を示す図である。 図5に示すステップS250の詳細な動作を示すフローチャートである。 BDD(DUT)及びBDD(property)の一例を示す図である。 図4に示すステップS300の詳細な動作を示すフローチャートである。 本実施形態で使用するDUT11の構造の一例を示す図である。 図4に示すステップS400の詳細な動作を示すフローチャートである。
符号の説明
11 DUT
12 機能ブロック一覧表
13 DUT入出力制約条件
14 プロパティライブラリ
15 DUT内部構成表
16 内部ブロック入出力制約条件
17 動的シミュレーションログ
18 内部ブロックプロパティ
21 動的シミュレーション
22 内部構成・内部ブロック入出力条件抽出器
23 内部ブロックプロパティ生成器
31 プロパティ生成手順
32 内部表現変換器
33 比較器
34 内部ブロック入出力制約条件生成器

Claims (7)

  1. 論理システムを検証する検証方法であって、
    前記論理システムの内部構成を抽出する抽出工程と、
    前記論理システムの入出力制約条件を生成する入出力制約条件生成工程と、
    前記論理システムを動的シミュレータで実行し、該動的シミュレーションの実行状態を記録する動的シミュレーション実行工程と、
    前記論理システムの内部構成、前記入出力制約条件、及び前記動的シミュレーションの実行状態に基づいて前記論理システムの動作を定義するプロパティを生成し、そのプロパティに基づいて前記論理システムの論理検証を行う検証工程とを有することを特徴とする検証方法。
  2. 前記抽出工程では、論理システムの動作仕様を規定する既知の機能ブロックを参照し、前記論理システムの内部構成を抽出することを特徴とする請求項1記載の検証方法。
  3. 前記入出力制約条件は、前記機能ブロックの間の入出力信号の接続に関する条件であることを特徴とする請求項2記載の検証方法。
  4. 前記動的シミュレーション実行工程では、前記論理システムの実行値及び期待値を時刻と共に記録することを特徴とする請求項1記載の検証方法。
  5. 論理システムを検証する検証装置であって、
    前記論理システムの内部構成を抽出する抽出手段と、
    前記論理システムの入出力制約条件を生成する入出力制約条件生成手段と、
    前記論理システムを動的シミュレータで実行し、該動的シミュレーションの実行状態を記録する動的シミュレーション実行手段と、
    前記論理システムの内部構成、前記入出力制約条件、及び前記動的シミュレーションの実行状態に基づいて前記論理システムの動作を定義するプロパティを生成し、そのプロパティに基づいて前記論理システムの論理検証を行う検証手段とを有することを特徴とする検証装置。
  6. 請求項1乃至請求項4の何れか一項記載の検証方法をコンピュータに実行させるためのプログラム。
  7. 請求項6記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
JP2004351511A 2004-12-03 2004-12-03 検証方法及び検証装置 Withdrawn JP2006163598A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004351511A JP2006163598A (ja) 2004-12-03 2004-12-03 検証方法及び検証装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004351511A JP2006163598A (ja) 2004-12-03 2004-12-03 検証方法及び検証装置

Publications (1)

Publication Number Publication Date
JP2006163598A true JP2006163598A (ja) 2006-06-22

Family

ID=36665573

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004351511A Withdrawn JP2006163598A (ja) 2004-12-03 2004-12-03 検証方法及び検証装置

Country Status (1)

Country Link
JP (1) JP2006163598A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008197962A (ja) * 2007-02-14 2008-08-28 Fujitsu Ltd 論理システムの障害検証方法、障害検証装置、および障害検証プログラム

Cited By (2)

* Cited by examiner, † Cited by third party
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
CN112560401B (zh) Verilog文件转换方法、装置、存储介质及设备
EP3185027B1 (en) Information processing method and device and computer storage medium
US20030125920A1 (en) LSI design verification apparatus, LSI design verification method, and LSI design verification program
US20070061113A1 (en) Enabling Test Script Play Back in Different Locales
JP2010003008A (ja) 検出プログラム、検出装置および検出方法
US7823101B2 (en) Device, method, and storage for verification scenario generation, and verification device
CN115185528A (zh) 一种用于vhdl可编程逻辑设计的跨时钟域静态分析系统
US20080154571A1 (en) Timing analysis method and apparatus for enhancing accuracy of timing analysis and improving work efficiency thereof
US20070028203A1 (en) Apparatus and method for creating function verification description, and computer-readable recording medium in which program for creating function verification description is recorded
US20090222778A1 (en) Property generating apparatus, property generating method and program
US8015523B2 (en) Method and system for sequential netlist reduction through trace-containment
US7945882B2 (en) Asynchronous circuit logical verification method, logical verification apparatus, and computer readable storage medium
JP2007304699A (ja) 回路連言標準形生成方法及び回路連言標準形生成装置並びにハザードチェック方法及びハザードチェック装置
JP2006163598A (ja) 検証方法及び検証装置
JP2006259820A (ja) 故障検出改善装置、故障検出改善プログラム、故障検出改善方法
JP2008197883A (ja) Lsi解析プログラム、該プログラムを記録した記録媒体、lsi解析装置、およびlsi解析方法
US6587993B2 (en) Method of designating output “don't care” and processor of processing logic circuit data
US20110302548A1 (en) Delay library generation device and method
JP2007241566A (ja) 検証方法及び検証装置
JP2007026181A (ja) 論理検証手法および論理検証装置
JP2021043582A (ja) 生成プログラム、生成方法、および情報処理装置
JP2853649B2 (ja) 論理シミュレーション用モデルの作成方法
US20240202522A1 (en) Device and method for generating deep learning model graph and abstract syntax tree for integrated compiler
JP7026563B2 (ja) 高位合成方法、高位合成プログラム、高位合成装置

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