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

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

Info

Publication number
JP2007241566A
JP2007241566A JP2006061736A JP2006061736A JP2007241566A JP 2007241566 A JP2007241566 A JP 2007241566A JP 2006061736 A JP2006061736 A JP 2006061736A JP 2006061736 A JP2006061736 A JP 2006061736A JP 2007241566 A JP2007241566 A JP 2007241566A
Authority
JP
Japan
Prior art keywords
property
verification
dut
internal configuration
input
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
JP2006061736A
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 JP2006061736A priority Critical patent/JP2007241566A/ja
Publication of JP2007241566A publication Critical patent/JP2007241566A/ja
Withdrawn legal-status Critical Current

Links

Images

Landscapes

  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

【課題】 検証対象の内部仕様を漏れなく定義することなく、外端の仕様のみが定義された検証対象に対して、擬似エラーの発生を抑止し、検証精度を向上させる。
【解決手段】 内部構成抽出器21で論理システム(DUT)11の内部構成を抽出し、内部ブロック入出力制約条件生成器22でDUT内部構成表13により内部構成の入出力制約条件を生成する。そして、論理システム11の仕様を表すプロパティを検証用のプロパティに基づいて検証を行い、検証したプロパティの反例16と矛盾する入出力制約条件14を検証用の更新プロパティ17に追加して更新する。
【選択図】 図1

Description

本発明は、論理システムを検証する技術に関するものである。
LSIを含む論理システムの規模は、年々増大している。これに伴い、論理システムの検証にかかる工数も増加している。一方、市場には消費者が欲するときに製品を投入しなければならず、LSIを始めとする論理システムの開発期間は短くなっている。そのため、論理システムの検証効率を向上させる必要が生じている。
LSIを含む論理システムの検証方法には、検証対象の外端仕様のみ着目するブラックボックス検証と、検証対象の外端仕様と内部仕様の双方に着目するホワイトボックス検証がある。ブラックボックス検証では、検証対象の外端仕様のみを用いてテストを記述している。このテストは検証対象の内部構成や仕様に依存しないため、流用性や可読性が高く、取りまわしが便利である。しかし、ブラックボックス検証は検証対象の内部状態を考慮しないため、検証対象が取り得る状態を全て実現することも、実施したか確認することも困難である。
一方、ホワイトボックス検証は、検証対象の内部仕様も併せて使用して検証を行うため、ブラックボックス検証に比較して検証対象が取り得る全事象を実施したか確認することが容易である。更に、検証対象が取り得る状態を全て実現することも容易である。但し、検証対象の内部仕様を漏れなく定義することは困難である。
従来、LSIを含む論理システムの検証には、ブラックボックス検証方法に基づく動的検証が用いられてきた。この検証方法は、論理シミュレータを用いて論理システムを動作させて検証を実施する。ここで使用するテストは、検証対象の外端仕様のみ用いて記述し、検証対象の内部仕様や構成に依存しない。そのため、この検証方法のテストは、流用性や可読性が高く、便利である。しかし、ブラックボックス検証であるため、検証対象が取り得る状態を全て実現することと、実施したか確認することが困難である。従って、この検証方法の検証精度が低いことは否めない。
この課題を解決するためにいくつかの方法が提案されている。論理システムの動作仕様と論理システムの設計データの等価性を数学的に判定することで検証を行うプロパティ検証もその一つである(例えば、特許文献1参照)。プロパティ検証では、論理システムの動作仕様をプロパティとして定義し、このプロパティと論理システムの設計データの等価性を判定する。ここで、双方が一致しない場合、プロパティを満たさない変数値の一例を、反例として出力する。
特開2001-318959号公報
しかしながら、プロパティ検証方法では、動作仕様を正確に記述しないと正しく検証を行うことができない。また、動作仕様を記述した範囲のみが検証対象であり、動作仕様が記述していなければ検証対象にすらならない。
例えば、図2に示す機能ブロック31に対してプロパティ検証を適用することを考える。ここで、機能ブロック31内のカウンタ32の仕様が誤って仕様書に記載されていたとする。この仕様書に基づきカウンタ32の動作仕様を記述してプロパティ検証を用いると、検証結果が誤ったものとなり、仕様と異なるカウンタになってしまう。また、仕様書の記載が正しくても、動作仕様を記述する際に解釈を誤り間違った動作仕様を記述すると、同じく検証結果が誤る。或いは、機能ブロック31の仕様書にFSM(Finite State Machine)33の記述が無かったとする。この場合、FSM33の動作仕様を記述することはなく、FSM33の検証は実施されない。その結果、FSM33に誤りがあっても発見できない。
更に、論理システムの設計者が、意図せず機能ブロックや機能ブロック内の部品を作り込んでしまうことがある。例えば、信号Aが有効な場合に機能Aを選択肢、信号Aが無効で、かつ信号Bが有効な場合には機能Bを選択するセレクタを設計したとする。そして、このセレクタはアービタ機能も併せて持っているものとする。
しかし、論理システムの設計者はアービタを設計しようと意図していたとは限らない。そのため、仕様書にはアービタの記載が無く、このような場合、アービタとしての検証は実施されない。
ここで挙げた問題点を解決するためには、プロパティ検証をホワイトボックス検証方法に基づき実施する必要がある。反対に、ブラックボックス検証に基づきプロパティ検証を実施すると、動作仕様を満たさない反例を多く検出する。この反例のうち多くは、本来は取り得ない状態、即ち擬似エラーである。内部仕様が曖昧なため、動作仕様に本来含めるべき制約条件が抜けていることにより、この擬似エラーを検出してしまう。
そこで、プロパティ検証をホワイトボックス検証方法に基づき実施するには、検証対象の外端仕様のみならず、検証対象の内部仕様を漏れなく定義することが必要となる。しかし、検証対象の内部仕様まで漏れなく定義することは困難である。また、動作仕様の記述が検証対象の内部構成や仕様に依存してしまうため、流用性や可読性が悪い。このことにより、記述した動作仕様の正当性を保証できず、記述した動作仕様に誤りが無いとは言い切れない。
即ち、ブラックボックス検証方法に基づく動的検証でも、ホワイトボックス検証方法に基づくプロパティ検証でも、従来の方法では、十分な検証精度が得られるとは限らない。十分な検証精度が得られないことにより、精度を持つ論理システムを予定の期間内に完成させることができず、市場が欲するときに製品を投入できないという問題が生じる。更に、不十分な精度のまま製品を市場に投入してしまうという問題が生じる。
本発明は、検証対象の内部仕様を漏れなく定義することなく、外端の仕様のみが定義された検証対象に対して、擬似エラーの発生を抑止し、検証精度を向上させることを目的とする。
本発明は、論理システムを検証する検証方法であって、前記論理システムの内部構成を抽出する内部構成抽出工程と、前記内部構成の入出力制約条件を生成する入出力制約条件生成工程と、前記論理システムの仕様を表すプロパティを検証用のプロパティに基づいて検証を行うプロパティ検証工程と、前記プロパティ検証工程で検証したプロパティの反例と矛盾する入出力制約条件を前記検証用のプロパティに追加して更新するプロパティ更新工程とを有することを特徴とする。
本発明によれば、外端仕様のみで動作を定義した論理システムに対して、擬似エラーを解消するようにプロパティを更新する。そのため、検証対象の論理システムの内部構成や内部仕様が明確でなくとも、プロパティ検証を実施可能である。
また、検証対象の論理システムの内部構成や内部仕様に依存したプロパティを記述する必要が無いため、プロパティの流用性や可読性が向上する。
従って、十分な精度を持つ論理システムを予定の期間内に完成させることができ、その結果、市場が欲するときに製品を投入することが可能となる。
以下、図面を参照しながら発明を実施するための最良の形態について詳細に説明する。
図1は、本実施形態における論理システムの検証方法を示す図である。図1において、11は検証対象のDUT(Design Under Test)であり、Verilog 或いはVHDLなどのハードウェア記述言語で記述した論理システムの設計データである。ここで、VHDLはVHSIC Hardware Description Languageの略である。
尚、DUT11の外端仕様は定義されているが、DUT11内部の構成や仕様は明確に定義されていなくても良い。
本実施形態では、このDUT11を論理検証するためのプロパティ(property)を生成するものであり、このプロパティは検証対象の動作仕様を表す式である。
12はDUT入出力制約条件であり、DUT11の入力或いは出力ポートの動作仕様を定義している。例えば、req_a と req_b 二つの入力ポートがあるとする。req_a と req_b は同時に有効にならない仕様ならば、以下の条件が、ポート req_a とポート req_b に対するDUT入出力制約条件12になる。
a)req_a が有効ならば req_b は無効
b)req_b が有効ならば req_a は無効
21は内部構成抽出器であり、DUT11からその内部構成を抽出する。13はDUT内部構成表であり、内部構成抽出器21で抽出されたDUT11の内部構成を格納する。尚、このDUT内部構成表13については、図4を用いて更に詳述する。
22は内部ブロック入出力制約条件生成器であり、DUT入出力制約条件12とDUT内部構成表13からDUT11を構成する各ブロックの入力ポート又は出力ポートの動作仕様を求める。14は内部ブロック入出力制約条件であり、内部ブロック入出力制約条件生成器22で求めた動作仕様を格納する。
15は初期プロパティであり、DUT11の動作仕様を予め定義したプロパティの集合である。ここで、DUT11は外端仕様のみで動作が定義され、内部構成や内部の仕様は不明であるため、初期プロパティ15のプロパティはDUT11の外端のみを用いて記述されているものとする。
23はプロパティ選択器であり、後述する24のプロパティ検証部が用いるプロパティを選択する。このプロパティ選択器23は、初回は初期プロパティ15を選択し、二回目以降は生成されたプロパティの集合、即ち後述する17の更新プロパティを選択する。
24はプロパティ検証部であり、プロパティ選択器23が選択したプロパティを用いてDUT11に対するプロパティ検証を実行する。ここで、選択されたプロパティとDUT11が不一致の場合、このプロパティを満たさないDUT11内の変数の値を反例16として出力する。
尚、本実施形態では、プロパティ検証部24のアルゴリズムに依存しない。そのため、結果として反例16を得ることができるならば、どのアルゴリズムやツールを使用しても良い。多くのプロパティ検証で用いているアルゴリズムに充足可能性判定法(SAT)がある。このSATを用いて反例16を求めても良い。
SATは、論理式の値を1’b1にする変数の組み合わせが存在するか否かを判定する判定法である。プロパティとDUT11を論理式で表し、排他的論理和をとった論理式を求める。この論理式の値が1’b1になるならば、プロパティとDUT11は不一致である。そして、この論理式の値が1’b1になる変数の組が反例16になる。このSATの解法には様々な公知技術が存在する。しかし、SATの解法に依存した発明ではないので、どのような公知技術を用いても良い。
25はプロパティ更新器であり、内部ブロック入出力制約条件14と反例16とを比較する。ここで、矛盾が存在するならば、擬似エラーと判定する。そして、反例16と矛盾する内部ブロック入出力制約条件14をプロパティに新たな制約条件として追加し、更新プロパティ17を生成する。
次に、図3を用いて、図1に示す内部構成抽出器21の構成について説明する。図3は、本実施形態における内部構成抽出器21の構成の一例を示す図である。
図3において、18は機能ブロック一覧表であり、論理システムを構成する部品である機能ブロックの一覧である。この機能ブロック一覧表18は、開発する論理システム全てに対して共通に使用するものであり、個々の論理システム毎に作成するものではない。
26はプロパティ生成手順であり、機能ブロック一覧表18に記載の機能ブロック毎に動作を定義したプロパティを作成する。27は内部表現変換器であり、プロパティ生成手順26で生成されたプロパティを内部で使用する内部表現に変換する。19はプロパティライブラリであり、プロパティ生成手順26で生成されたプロパティと内部表現変換器27で変換された内部表現とを対にして機能ブロック毎に保存する。
尚、プロパティライブラリ19は、機能ブロック一覧表18に変更が無ければ、プロパティ検証を実行する度に生成し直す必要は無い。そのため、機能ブロック一覧表18からプロパティを生成する工程を自動化せずに、人手でプロパティを作成しても良い。勿論、プロパティ自動生成ツールの使用を妨げるものではない。
また、プロパティ検証を実行する毎に、或いは論理システム毎にプロパティライブラリ19を生成することを妨げるものではない。
28は内部表現変換器であり、内部表現変換器27と同様に、DUT11を内部で使用する内部表現に変換する。29は比較器であり、内部表現を使用してDUT11とプロパティライブラリ19のプロパティとを比較する。ここで、比較器29でDUT11が当該プロパティを包含していると判断したならば、当該プロパティが該当する機能ブロックの情報をDUT内部構成表13に登録する。また、DUT11の内部表現で、プロパティのどの内部表現とも一致しない残りの部分は、未知のブロックとしてDUT内部構成表13に登録する。尚、既知の機能ブロックに一致しないので,未知のブロックは未知の機能を持っている可能性がある。
ここで、機能ブロックとして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は以下の動作記述を定義している。
「カウンタリセット信号が有効ならば、次クロックサイクルでカウンタの値は全て“0”になる」また、プロパティP−2は以下の動作記述を定義している。
「カウンタリセット信号が無効で、かつカウントイネーブル信号が有効ならば、次クロックサイクルのカウンタ値は、現在のカウンタから“1”を減じた値」
次に、比較器29の内部で比較に用いられる内部表現について説明する。比較器29で内部表現の比較を行うために、本実施形態で使用する内部表現は同一の論理関数が同一の表現にならなければならない。また、容量が大きくならず、内部表現による比較の手順が容易である必要がある。
同一の論理関数が同一の表現となる表現方法として、例えば二分決定グラフ(BDD:Binary Decision Diagram)、真理値表、積和標準形が知られている。この真理値表は、入力数の指数乗の項を必要とする。また、積和標準形も最悪の場合、真理値表と同様に、入力数の指数乗の項を必要とする。しかし、BDDでは多くの場合、真理値表や積和標準形より少ない項で論理関数を表現可能である。また、真理値表と積和標準形では、内部表現への変換工数が論理関数の複雑度に影響し、複雑になるにつれて内部表現への変換工数が増加する。
一方、BDDでは、論理関数の複雑度に関係なく変換工数が決定するため、本実施形態では、内部表現としてBDDを用いるものとする。勿論、内部表現はBDDに限定されるものではなく、同一の論理関数が同一の表現になるならばどのような表現が用いられても良い。
BDDを内部表現に使用するプログラムや市販のツールでは、BDD生成アルゴリズムとして、applyアルゴリズムが広く使用されている。このapplyアルゴリズムは、1984年にRandal E. Bryant氏により開発されたBDD生成アルゴリズムである。また、このapplyアルゴリズムは、既に数多く使用されており、公知の技術である。
そこで、上述の内部表現変換器27、28は、DUT11やプロパティをBDDに変換する手法として、applyアルゴリズムを使用するものとする。
尚、本発明は、BDD生成アルゴリズムに依存した発明ではないので、内部表現変換器27、28が使用するアルゴリズムはapplyアルゴリズムに限定されるものではない。
ここで、比較器29は、DUT11のBDDとプロパティのBDDの同形性を判定し、DUT11のBDDがプロパティのBDDを包含しているか否かを判断する。このBDDの同形性判定アルゴリズムは、従来から多くの提案が存在している。
尚、本発明は、同形性判定アルゴリズムに依存した発明ではないので、どの同形性判定アルゴリズムを用いても良い。例えば、ある節に注目し、'1'の枝の形と、'0'の枝の形を再帰的に比較することで同形性を判定する手法を用いても良い。
比較器29は、DUT11のBDDとプロパティのBDDの同形性を判定し、DUT11のBDDがプロパティのBDDを包含しているか否かを判断する。BDDの同形性判定アルゴリズムは、既に多くの提案が存在する。本発明は、同形性判定アルゴリズムに依存した発明ではないので、どの同形性判定アルゴリズムを用いてもよい。例えば、ある節に注目し、'1' の枝の形と '0' の枝の形を再帰的に比較することで同形性を判定する方法を用いても良い。
次に、内部構成抽出器21で抽出されたプロパティの機能ブロックの情報が登録されるDUT内部構成表13の構成について説明する。図4は、本実施形態におけるDUT内部構成表13の構成の一例を示す図である。図4に示すDUT内部構成表13は、4列からなる。左から、機能ブロック番号101、機能ブロック名102、プロパティ番号103、信号対応表104である。信号対応表列104は、更に6列に分かれている。そして、DUT内部構成表13は、新しい機能ブロックを登録するたびに一行ずつ増加する。
機能ブロック番号101の機能ブロック番号は登録順に付けられる。この機能ブロック番号は、DUT内部構成表13の信号対応表で接続先を示すのにも使用される。
機能ブロック名102は機能ブロックの名称である。使用する名称はプロパティライブラリ19に登録してある機能ブロック名である。
プロパティ番号103には、プロパティを一意に定めることができる情報を記載する。プロパティそのものでもプロパティにつけた番号でも良い。本実施形態では、プロパティ毎につけたプロパティ番号を記録する。また、機能ブロックの動作が複数のプロパティで定義されている場合は、全てのプロパティ番号を記入する。
信号対応表104は、DUT11の信号名やポート名とプロパティ内の変数との対応と機能ブロック間の接続情報を記録する。信号対応表104は、プロパティ変数名111、デザイン変数名112、方向113、接続先114、接続先信号名115と内部ブロック入出力制約条件14の6列からなる。尚、図4では、内部ブロック入出力制約条件14の列名を制約条件と略記している。
プロパティ変数名111及びデザイン変数名112は、プロパティ内の変数名とDUT11の信号名やポート名の対応を示している。プロパティ変数名111は、プロパティで使用している変数名を記録している。デザイン変数名112は、プロパティ変数名111に対応する信号名或いはポート名を記録している。
方向113は機能ブロックから見た信号の方向を示している。“IN”と“OUT”の2つの状態を取る。ここで、“IN”は入力信号を示し、“OUT”は出力信号を示す。
接続先114及び接続先信号名115は、接続先及び接続先の信号名を示す。接続先がDUT内部構成表13に登録済みの機能ブロックの場合、接続先114はその機能ブロック番号になる。接続先がDUT11の入力或いは出力ポートならば“PORT”とする。またDUT11内部に接続しているのに関わらず、DUT内部構成表13に登録が無い場合は未定にしておく。そして、DUT内部構成表13を再走査し、接続先114の値を確定させる。このとき、接続先が未知のブロックならば接続先114の値は“UKB”とする。
そして、内部ブロック入出力制約条件14は内部ブロック入出力制約条件生成器22で生成したDUT11内部ブロックの入力ポート或いは出力ポートの入出力制約条件を記録している。
図5は、本実施形態における論理検証方法及び論理検証装置を用いた検証の流れの一例を示すフローチャートである。図5では、内部の構成や仕様が明らかでないDUT11に対してプロパティ検証を実行する手順を示している。前提条件として、DUT入出力制約条件12と初期プロパティ15は存在するものとする。また、この処理は、DUT11を入力したときから開始される。
まず、ステップS100において、内部構成抽出器21でDUT11の内部構成を抽出し、DUT内部構成表13を生成する。次に、ステップS200において、DUT入出力制約条件12とDUT内部構成表13からDUT11内部ブロックの入出力制約条件14を求める。
次に、ステップS300において、プロパティ選択器23で初回の場合には初期プロパティ15が選択され、プロパティ検証部24でDUT11に対するプロパティ検証を実行する。ここで、プロパティとDUT11が一致しなければ反例16を出力する。そして、ステップS400において、プロパティ更新器25で反例16と内部ブロック入出力制約条件14とを比較する。その結果、反例16と内部ブロック入出力制約条件14に矛盾が存在するならば、擬似エラーと判定し、ステップS500に分岐する。矛盾が無ければ、反例は全て真性エラーと判断し、プロパティの検証処理を終了する。この後、真性エラーの解析を実行する。
一方、ステップS500では、ステップS400で発見した矛盾を起こす内部ブロック入出力制約条件14を新しい制約条件としてプロパティに追加し、更新プロパティ17とする。その後、ステップS300に分岐し、プロパティ選択器23で更新プロパティ17が選択され、プロパティ検証部24でDUT11に対する二回目以降のプロパティ検証を実行する。そして、プロパティとDUT11が一致しなければ反例16を出力する。
これ以降、ステップS300からステップS500までの処理を繰り返す。ここでは、反例16と内部ブロック入出力制約条件14に矛盾がなくなるまで繰り返される。しかし、DUT11の動作仕様の定義が粗いと、膨大な数の擬似エラーが発生する場合もあり、矛盾の収束に時間がかかる恐れがある。
そこで、上述のような状態に陥る可能性を予見できる場合、或いは実行中に予め定めた閾値を繰り返し回数が超えた場合は、矛盾がなくなるまで繰り返さずに、打ち切る機能を備えても良い。
引き続き、図5に示す各ステップの処理をより詳しく説明する。まず、図6を用いて、ステップS100の処理について詳細に説明する。図6は、DUT11の内部構成を抽出する手順を示すフローチャートである。
まず、ステップS110において、内部表現変換器28を使用してDUT11をBDDに変換する。以下、変換後のBDDをBDD(DUT)とする。次に、ステップS120において、プロパティライブラリ19から1機能ブロックと、その動作を定義する、全てのプロパティのBDDを選択する。以下、このBDDをBDD(プロパティ)とする。
次に、ステップS130において、比較器29でBDD(DUT)とステップS120で選択した全てのBDD(プロパティ)とを比較する。そして、ステップS140において、BDD(DUT)がBDD(プロパティ)を包含しているか否かを判定する。ここで、BDD(DUT)がBDD(プロパティ)を包含していると判定した場合はステップS150に分岐する。また、BDD(DUT)はステップS120で選択した全てのBDD(プロパティ)を包含していないと判定した場合はステップS170に分岐する。
このステップS150では、ステップS120で選択した機能ブロックの情報をDUT内部構成表13に登録する。また、DUT11の信号名やポート名とプロパティ内の変数との対応を求め、併せてDUT内部構成表13に登録する。更に、DUT内部構成表13内で信号名やポート名を検索し、接続情報を求め、併せてDUT内部構成表13に登録する。そして、ステップS160において、BDD(プロパティ)の各節に対応するBDD(DUT)の節に登録済み印を付ける。
また、ステップS170では、プロパティライブラリ13内に、未比較の機能ブロックが存在するか否かを終了条件として判定する。未比較の機能ブロックが存在する場合は、上述のステップS120に分岐する。また、未比較の機能ブロックが存在しない場合にはステップS180に分岐し、BDD(DUT)で、登録済み印がついていない節からなる部分を未知のブロックとし、DUT内部構成表13に登録する。また、BDD(DUT)で、登録済み印がついていない節をプロパティの形式に変換する。このプロパティをPukbとする。プロパティ番号103には、Pukbと登録する。
また、未知のブロックにおいて、DUT11の信号名やポート名とプロパティ内の変数との対応を求めDUT内部構成表13に登録する。更に、DUT内部構成表13内で信号名やポート名を検索し、未知のブロックの接続情報を求め、併せてDUT内部構成表13に登録する。
続いて、図6に示すステップS150の処理を、図7と図8を用いて詳細に説明する。図7は、本実施形態におけるDUT内部構成表13に登録する手順を示すフローチャートである。図8は、BDD(DUT)とBDD(プロパティ)の一例を示す図である。
図6に示すステップS140で、BDD(DUT)がBDD(プロパティ)を包含していると判明されている。ここで、図8に示すBDD(DUT)41は、BDD(DUT)全体のうち、BDD(プロパティ)42と同形な部分を抜き出したものである。図8では、BDD(DUT)41、BDD(プロパティ)42とも、説明に用いる部分以外は簡略化して記述してある。
尚、以下では、8ビットのロード可能なダウンカウンタの動作を定義したプロパティを使用した場合を例に挙げて説明する。
まず、ステップS151において、DUT内部構成表13に一行追加し、機能ブロック番号(nとする)を付加する。つまり、新たな機能ブロックがDUT11に存在することがステップS140で判明したので、DUT内部構成表13に一行追加する。
次に、ステップS152において、機能ブロック番号nの機能ブロック名102に機能ブロック名を記載する。機能ブロック名102には、機能ブロックの名称として「8 bit loadable down counter」を記載する。
そして、ステップS153において、ステップS120で選択した全てのプロパティのプロパティ番号を、機能ブロック番号nのプロパティ番号103に記載する。ここでは、8ビットのロード可能なダウンカウンタの動作を定義するプロパティのプロパティ番号を全て記載する。
次に、ステップS154において、プロパティが使用する変数(プロパティ変数)と、DUT11の信号名やポート名(デザイン変数)の対応を作成する。
ここで、図8を用いて、このステップS154の処理を詳しく説明する。図8ではBDD(DUT)41とBDD(プロパティ)42は同形と判断されているものとする。同形のBDDであるので、それぞれ対応する節が明らかになる。また、BDD(DUT)41の節43と、BDD(プロパティ)42の節44は、それぞれ対応する節である。節43はDUTの信号或いはポートを示し、その名称は「do_out」である。また、節44はプロパティ内の変数を示し、その名称は「data_out」である。節43と節44は対応する節なので、プロパティ変数名は「data_out」であり、それに対応するデザイン変数名は「do_out」である。プロパティ変数名(data_out) とデザイン変数名(do_out)をそれぞれ、プロパティ変数名111とデザイン変数名112に記載する。
次に、ステップS155〜ステップS159において、接続先と接続先信号名を求め、接続先114と接続先信号名115に記載する。接続先がポート以外で、DUT内部構成表13に未登録ならば、接続先は未定とする。
このステップS155〜ステップS159の動作を詳細に説明する。図8に示すBDD(DUT)41の節43は、BDD(プロパティ)42と同形の範囲において最終の節である。この節43は節45と接続している。そして、接続先の節45は、登録済みの印が存在しない。よって、ステップS156からステップS158に分岐し、接続先114を未定とする。続いて、ステップS159で、節43の接続先の信号名「di_in」を接続先変数名115に登録する。
一方、節46は、BDD(プロパティ)42と同形の範囲において最初の節である。この節46の接続先の節47はDUT11のポートである。よって、ステップS156からステップS157に分岐し、ポートを示す「PORT」を接続先114に記載する。続いて、ステップS159で、節46の接続先のポート名「di_in」を接続先変数名115に登録する。
次に、図5に示すステップS200の詳細を説明する。図9は、DUT内部モジュールの入出力制約条件を生成する処理を示すフローチャートである。
まず、ステップS210において、DUT内部構成表13より接続先114がPORTの変数を選択し、その接続先信号名115を得る。そして、ステップS220において、ステップS210で得た接続先信号名115でDUT入出力制約条件12を検索し、対応する制約条件が存在するか否かを判定する。ここで、制約条件が存在する場合はステップS230に分岐し、その制約条件を内部ブロック入出力制約条件14に登録する。また、対応する制約条件が存在しなければステップS240に分岐し、制約条件無しを意味する「−」を内部ブロック入出力制約条件14に登録する。
次に、ステップS250において、接続先114がPORTで、かつ内部ブロック入出力制約条件14が未定の変数が存在するならば、ステップS210から繰り返す。また、接続先114がPORTで、かつ、内部ブロック入出力制約条件14が未定の変数が存在しなければ、ステップS260に分岐する。ステップS260では、内部ブロックの出力ポートがそのまま同じ内部ブロックの入力ポートに接続しているならば、その入力ポートの内部ブロック入出力制約条件14に制約条件無しを意味する「−」を登録する。
次に、ステップS270において、制約条件無しも含め全ての入力ポートについて制約条件が定まった内部ブロックのプロパティ番号103に登録したプロパティに基づき内部ブロック入出力制約条件14を用いて出力の制約条件を求める。そして、求めた制約条件を内部ブロック入出力制約条件14に登録する。次に、ステップS280において、ステップS250で求めた出力ポートの接続先変数を接続先114と接続先信号名115から検索する。そして、接続先変数の制約条件16にステップS250で求めた出力ポートの制約条件を追加する。但し、接続先変数の制約条件16が制約条件無し「−」の場合は、ステップS250で求めた出力ポートの制約条件で置き換える。
次に、ステップS290において、全ての内部ブロックについて出力ポートの制約条件を求めるまで、上述のステップS270から繰り返す。全ての内部ブロックについて出力ポートの制約条件を求めたならば、この処理を終了する。
次に、図5に示すステップS300の詳細を説明する。このステップS300では初期プロパティ15或いは更新プロパティ17を用いて、DUT11に対してプロパティ検証部24でプロパティ検証を実施する。初回はプロパティ選択器23で初期プロパティ15を選択する。二回目以降はプロパティ選択器23で更新プロパティ17を選択する。
尚、プロパティ検証部24は、プロパティ検証のアルゴリズムに依存したものではないので、プロパティ検証方法には何を用いても良い。
次に、図5に示すステップS400の詳細を説明する。このステップS400ではプロパティ更新器25で、ステップS300での結果得られた反例16と内部ブロック入出力制約条件14とを比較し、矛盾が存在するか否かを判定する。矛盾が生じたならば、制約条件を満たさない有り得ない状況下での現象とし、擬似エラーと判断する。擬似エラーが生じた場合はステップS500でプロパティを更新する。例えば、対応する内部ブロックの入力制約条件と反例16が以下の通りであったとする。
内部ブロック入出力制約条件:(req_a == 1’b1 && req_b == 1’b0) ||
(req_a == 1’b0 && req_b == 1’b1)
反例 : req_a == 1’b1 && req_b == 1’b1
内部ブロック入出力制約条件14から、req_a と req_b が同時に 1’b1 になることは無いはずである。しかし、実際には内部ブロック入出力制約条件14と矛盾する反例16が検出されている。内部ブロック入出力制約条件14と矛盾していることから、この反例16はプロパティの制約条件が不足していたため生じた擬似エラーと判断できる。
また、矛盾が存在しないならば、擬似エラーは解消したと判断し、この処理を終了する。このとき、反例16が存在するならば、その反例16は真性エラーである。引き続き、反例16を解析してDUT11のデバックを行う必要がある。
最後に、図5に示すステップS500の詳細を説明する。このステップS500では擬似エラー解消のために、プロパティを更新し、更新プロパティ17を作成する。ステップS400で矛盾が生じた内部ブロック入出力制約条件14を、制約条件として該当するプロパティに追加する。
上記例では、以下の制約条件をプロパティに追加し、更新プロパティ17とする。
(req_a == 1’b1 && req_b == 1’b0)||(req_a == 1’b0 && req_b == 1’b1)
尚、本発明は複数の機器(例えば、ホストコンピュータ,インターフェース機器,リーダ,プリンタなど)から構成されるシステムに適用しても、1つの機器からなる装置(例えば、複写機,ファクシミリ装置など)に適用しても良い。
また、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ(CPU若しくはMPU)が記録媒体に格納されたプログラムコードを読出し実行する。これによっても、本発明の目的が達成されることは言うまでもない。
この場合、記録媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記録媒体は本発明を構成することになる。
このプログラムコードを供給するための記録媒体として、例えばフレキシブルディスク,ハードディスク,光ディスク,光磁気ディスク,CD−ROM,CD−R,磁気テープ,不揮発性のメモリカード,ROMなどを用いることができる。
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、次の場合も含まれることは言うまでもない。即ち、プログラムコードの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)などが実際の処理の一部又は全部を行い、その処理により前述した実施形態の機能が実現される場合。
更に、記録媒体から読出されたプログラムコードがコンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込む。その後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部又は全部を行い、その処理により前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
本実施形態における論理システムの検証方法を示す図である。 検証対象である機能ブロックの一例を示す図である。 本実施形態における内部構成抽出器21の構成の一例を示す図である。 本実施形態におけるDUT内部構成表13の構成の一例を示す図である。 本実施形態における論理検証方法及び論理検証装置を用いた検証の流れの一例を示すフローチャートである。 DUT11の内部構成を抽出する手順を示すフローチャートである。 本実施形態におけるDUT内部構成表13に登録する手順を示すフローチャートである。 BDD(DUT)とBDD(プロパティ)の一例を示す図である。 DUT内部モジュールの入出力制約条件を生成する処理を示すフローチャートである。
符号の説明
11 DUT
12 DUT入出力制約条件
13 DUT内部構成表
14 内部ブロック入出力制約条件
15 初期プロパティ
16 反例
17 更新プロパティ
18 機能ブロック一覧表
19 プロパティライブラリ
21 内部構成抽出器
22 内部ブロック入出力制約条件生成器
23 プロパティ選択器
24 プロパティ検証部
25 プロパティ更新器
26 プロパティ生成手順
27 内部表現変換器
28 内部表現変換器
29 比較器
31 機能ブロック
32 カウンタ
33 FSM
34 ランダム論理
35 シーケンサ

Claims (6)

  1. 論理システムを検証する検証方法であって、
    前記論理システムの内部構成を抽出する内部構成抽出工程と、
    前記内部構成の入出力制約条件を生成する入出力制約条件生成工程と、
    前記論理システムの仕様を表すプロパティを検証用のプロパティに基づいて検証を行うプロパティ検証工程と、
    前記プロパティ検証工程で検証したプロパティの反例と矛盾する入出力制約条件を前記検証用のプロパティに追加して更新するプロパティ更新工程と、
    を有することを特徴とする検証方法。
  2. 前記内部構成抽出工程は、前記論理システムを論理表現に変換して、正規化論理表現を生成する工程と、
    前記論理システムの構成部品である機能ブロックに対応する動作仕様記述の正規化論理表現を記録する工程とを有し、
    前記記録した正規化論理表現と前記生成した正規化論理表現との比較を行い、前記機能ブロックの存在を判定することにより、内部構成を抽出することを特徴とする請求項1に記載の検証方法。
  3. 前記入出力制約条件は、前記機能ブロックの間の入出力信号の接続に関する条件であることを特徴とする請求項2に記載の検証方法。
  4. 論理システムを検証する検証装置であって、
    前記論理システムの内部構成を抽出する内部構成抽出手段と、
    前記内部構成の入出力制約条件を生成する入出力制約条件生成手段と、
    前記論理システムの仕様を表すプロパティを検証用のプロパティに基づいて検証を行うプロパティ検証手段と、
    前記プロパティ検証手段で検証したプロパティの反例と矛盾する入出力制約条件を前記検証用のプロパティに追加して更新するプロパティ更新手段と、
    を有することを特徴とする検証装置。
  5. 請求項1乃至請求項3の何れか一項に記載の検証方法をコンピュータに実行させるためのプログラム。
  6. 請求項5記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
JP2006061736A 2006-03-07 2006-03-07 検証方法及び検証装置 Withdrawn JP2007241566A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006061736A JP2007241566A (ja) 2006-03-07 2006-03-07 検証方法及び検証装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006061736A JP2007241566A (ja) 2006-03-07 2006-03-07 検証方法及び検証装置

Publications (1)

Publication Number Publication Date
JP2007241566A true JP2007241566A (ja) 2007-09-20

Family

ID=38587063

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006061736A Withdrawn JP2007241566A (ja) 2006-03-07 2006-03-07 検証方法及び検証装置

Country Status (1)

Country Link
JP (1) JP2007241566A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010282257A (ja) * 2009-06-02 2010-12-16 Fujitsu Ltd プロパティ修正プログラム、プロパティ修正装置、およびプロパティ修正方法
JP2011003109A (ja) * 2009-06-22 2011-01-06 Fujitsu Ltd モデル検査プログラム、モデル検査方法、モデル検査装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010282257A (ja) * 2009-06-02 2010-12-16 Fujitsu Ltd プロパティ修正プログラム、プロパティ修正装置、およびプロパティ修正方法
JP2011003109A (ja) * 2009-06-22 2011-01-06 Fujitsu Ltd モデル検査プログラム、モデル検査方法、モデル検査装置

Similar Documents

Publication Publication Date Title
Huang et al. Formal equivalence checking and design debugging
US7383166B2 (en) Verification of scheduling in the presence of loops using uninterpreted symbolic simulation
US7958470B1 (en) Method and system for false path analysis
US7159198B1 (en) System and method for identifying design efficiency and effectiveness parameters for verifying properties of a circuit model
US7895552B1 (en) Extracting, visualizing, and acting on inconsistencies between a circuit design and its abstraction
US8863049B1 (en) Constraining traces in formal verification
US7561999B2 (en) Verification apparatus, verification method, and program
US7587690B1 (en) Method and system for global coverage analysis
US6553514B1 (en) Digital circuit verification
JP5471432B2 (ja) 検証支援プログラム、および検証支援装置
US7039887B2 (en) Method and apparatus for enhancing the performance of event driven dynamic simulation of digital circuits based on netlist partitioning techniques
JP4147842B2 (ja) 論理検証システム及び方法、論理コーン抽出装置及び方法、論理検証及び論理コーン抽出プログラム
US6691286B1 (en) Methods and apparatuses for checking equivalence of circuits
US20170083650A1 (en) Methods and Systems for Correcting X-Pessimism in Gate-Level Simulation or Emulation
US7823101B2 (en) Device, method, and storage for verification scenario generation, and verification device
US8504347B2 (en) Simulation apparatus, simulation method, and program to perform simulation on design data of a target circuit
US9721058B2 (en) System and method for reactive initialization based formal verification of electronic logic design
US10831956B2 (en) Efficient execution of alternating automaton representing a safety assertion for a circuit
JP2007241566A (ja) 検証方法及び検証装置
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
US7650579B2 (en) Model correspondence method and device
Plassan et al. Improving the efficiency of formal verification: the case of clock-domain crossings
JP7351189B2 (ja) タイミング制約抽出装置、タイミング制約抽出方法およびタイミング制約抽出プログラム
JP2007026181A (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: 20090512