(57)【要約】【課題】メモリ・ビットを明示的にモデル化せずに、埋込みメモリ設計を処理するための、ＳＡＴベースのＢＭＣを強化する。【解決手段】大きな埋込みメモリを有する設計の検証は、メモリの抽出（過度の近似）により通常処理される。このような抽象化は実際のバグの検出には有用ではない。現時点におけるＳＡＴベースのＢＭＣは、途方もなく増加した検索スペースの複雑さの故に、明示的なメモリ・モデリングを有する設計の取り扱いが不可能である。都合の良いことに、本発明による方法は、設計の分析を必要とせず、さらにマイナスとなる欠点を生成しないことを保証する。【選択図】図１
2007524165.tif 000002
【特許請求の範囲】
【請求項１】
１つまたは複数の埋込みメモリを有するメモリ・ビットの１部または全部が明示的にモデル化される必要がないような、前記１つまたは複数の埋込みメモリを有する電子的設計をモデル化するモデリング方法であって、
データ転送セマンティクスを保存している間に、前記メモリの１つまたは複数を前記設計から除外するステップと、
前記データ転送セマンティクスと、効率的なメモリ・モデリング（ＥＭＭ）制約条件として任意の初期メモリ状態を保存するためのメモリ保存制約条件を、適切な表現で収集するステップと、
適切な有界分析を使用して前記設計を検証するステップとを有するモデリング方法。
【請求項２】
前記適切な表現に排他性制約条件を付加する段階であって、有効な整合読み取りと書き込みの組み合わせが決定されるとき、前記排他性制約条件の結果として、他の組み合わせが直ちに無効であることを意味するように、前記適切な表現に排他性制約条件を付加するステップをさらに有する請求項１に記載のモデリング方法。
【請求項３】
前記収集するステップは、ＥＭＭに加えて、証明ベースの抽象化（ＰＢＡ）を使用する請求項１に記載のモデリング方法。
【請求項４】
ＰＢＡに無関係のメモリと無関係のポートの使用によって、検証の間に前記対応するＥＭＭ制約条件が除外されることがあるように、自動的に決定するステップをさらに有する請求項３に記載のモデリング方法。
【請求項５】
前記検証するステップの間に、任意の対応するＥＭＭ制約条件を除外するステップをさらに有する請求項４に記載のモデリング方法。
【請求項６】
前記適切な表現は、回路の定式化と節の定式化との両方を含むハイブリッド表現である請求項１に記載のモデリング方法。
【請求項７】
前記検証するステップは、ＳＡＴベースの有界分析を含む請求項１に記載のモデリング方法。
【請求項８】
前記検証するステップは、ＳＡＴベースの有界分析を含む請求項に２記載のモデリング方法。
【請求項９】
前記検証するステップは、帰納によるプルーフを含む請求項１に記載のモデリング方法。
【請求項１０】
前記検証するステップは、帰納によるプルーフを含む請求項２に記載のモデリング方法。
【請求項１１】
前記検証するステップは、ＳＡＴベースの帰納を含む請求項１に記載のモデリング方法。
【請求項１２】
前記検証するステップは、ＳＡＴベースの帰納を含む請求項２に記載のモデリング方法
【請求項１３】
前記検証するステップは、等価検証を含む請求項１に記載のモデリング方法。
【請求項１４】
前記検証するステップは、等価検証を含む請求項２に記載のモデリング方法。
【請求項１５】
１つまたは複数の埋込みメモリを有する電子的な設計をモデル化するモデリング方法であって、前記モデル化は前記１つまたは複数の埋込みメモリを有するメモリ・ビットの１部または全部が明示的にモデル化される必要がないように実行され、
データ転送セマンティクスを保存している間に、前記メモリの１つまたは複数を前記設計から除外するステップと、
前記データ転送セマンティクスを、効率的なメモリ・モデリング（ＥＭＭ）制約条件として適切な表現で収集するステップと、
前記表現に排他性制約条件を付加するステップと、
有効な整合読み取りと書き込みの組み合わせが決定されるとき、前記排他性制約条件の結果として、他の組み合わせが直ちに無効であることを意味するように、適切な有限分析を使用して前記設計を検証するステップとを有するモデリング方法。
【請求項１６】
前記収集するステップの間のＥＭＭに加えて、証明ベースの抽象化（ＰＢＡ）を利用するステップをさらに有する請求項１５に記載のモデリング方法。
【請求項１７】
ＰＢＡに無関係のメモリと無関係のポートの使用によって、検証の間に前記対応するＥＭＭ制約条件が除外されることがあるように、自動的に決定するステップをさらに有する請求項１６に記載のモデリング方法。
【請求項１８】
前記検証するステップの間に、任意の対応するＥＭＭ制約条件を除外するステップをさらに有する請求項１７に記載のモデリング方法。
【請求項１９】
前記適切な表現は、回路の定式化と節の定式化との両方を含むハイブリッド表現である請求項１５に記載のモデリング方法。
【請求項２０】
前記適切な表現は、回路の定式化と節の定式化との両方を含むハイブリッド表現である請求項１８に記載のモデリング方法。
【請求項２１】
前記検証するステップは、ＳＡＴベースの有限分析を含む請求項１５に記載のモデリング方法。
【請求項２２】
前記検証するステップは、ＳＡＴベースの有限分析を含む請求項１８に記載のモデリング方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にディジタル回路の分野に関し、特に、ディジタル回路の形式的検証に有用な有限メモリ検査における埋込みメモリの効率的なモデリング方法に関する。
【背景技術】
【０００２】
シミュレーションのような従来の技術と異なり、二分決定グラフ（ＢＤＤ）を使用する記号モデル検査（ＳＭＣ）のような形式的検証技術は、潜在するバグを検出するための包括的な範囲と能力の可能性を提供する。しかし、ＢＤＤを使用するこれらの技術は、状態急増問題で苦労することが知られており、したがって、大量の数のフリップフロップ／状態変数を有する回路では失敗する。
【０００３】
ブーリアン満足化可能性（ＳＡＴ）ソルバー（ＳＡＴを解くプログラム）は、ＢＤＤを魅力的に補完する多くの特質を示している。特に、ＳＡＴの性能は回路の大きさに影響されにくく、上述の状態急増問題に苦しまない。その結果、ＳＡＴの方法を利用する有限モデル検査（ＢＭＣ）を実行するルーチンの開発が多くの研究の主題であった。
【０００４】
記号モデル検査と異なり、ＢＭＣは有限長のバグを検出することに集中し、より長いトレースの検索限界を連続的に増加させている。設計と正当性性質を仮定すれば、ＢＭＣは、長さｋのウイットネス／カウンタ用例が存在する場合にのみ数式が真であるように、ブーリアン数式を生成する。次に、このブーリアン数式は、最後尾のＳＡＴソルバーによりチェックされる。都合の良いことに、またある程度はＳＡＴソルバーの最近の進歩のために、ＳＡＴベースのＢＭＣは、従来よりも大規模な設計を処理することができ、また、速く分析することができる。
【０００５】
例として、Burch と Dill は、解釈されない機能を有するメモリ・アレイの同等性論理におけるメモリ・アレイの記号表現を発表した（例えば、非特許文献１参照。）。彼等のメモリの抽象解釈は、解釈された読み取りおよび書き込み動作を使用している。これらの解釈された機能は、メモリに対する書き込みのヒストリーを記録するための入れ子にされたＩＦ−ＴＨＥＮ−ＥＬＳＥ（ＩＴＥ）構造を生成することにより、象徴的にメモリを表すために使用される。
制御用メモリとデータ用メモリとを有する全体の回路をモデル化する努力の成果において、Velev 他は、使用される記号変数の数が、メモリの大きさではなく、メモリ・アクセスの数に比例することを可能にする行動モデルを発表した（例えば、非特許文献２参照。）。このモデルはメモリを置換し、ソフトウェア・インタフェイスを介して回路のその他の部分と相互に作用する。 Burch と Dill が示したと同様に、Velev 他の読み取りおよび書き込み動作は、メモリ・セマンティクス（すなわち、記憶場所からのデータ読み取りが同じ位置に書き込まれた最新のデータと同じである）の転送性質が満足されるような方法で、定義される。しかし、残念ながら、ブーリアン式を表すために使用されるＢＤＤは、分岐またはロード／格納命令を有するプロセッサに対しては「膨張する」傾向があり、ＢＤＤを良く管理することは、データ上のアドレスの依存性のために不可能であり、逆もまた同様である。
【０００６】
R.E. Bryant、S.German および M.N. Velev は、書き込み相互間であるいは読み取りに対して書き込みが再整理されないプロセッサに対して、各書き込み動作に対して何らかの任意の方法で状態を変化させ、各読み取り動作に対する状態とアドレスに依存する何らかの任意の値を返す汎用状態マシンとして、データ・メモリを表すことが十分であることを発見した（例えば、非特許文献３参照。）。このような抽象化は安全であるが、メモリのすべての性質を取り込んではいない。
【０００７】
続いて、Velev は、保守的な変換規則のシステムを適用し、メモリの転送セマンティクスが転送のあるレベルに対してのみ満足される場合にハイブリッド・メモリ・モデルを生成することにより、データメモリの抽象化の処理を自動化した（例えば、非特許文献４参照。）。
【０００８】
最近では、Bryant 他は、Computer-Aided Verification in 2002 に発表した、「ラムダ式および解釈されない機能を有するカウンタ演算のロジックを使用するシステムのモデル化および検証」と題する論文で、ＵＣＬＩＤと呼ばれるシステムにおいて、無限状態システムおよび無限メモリをモデル化する論理を提案した。この論文によれば、メモリは、その主要部がタイム・ステップと共に変化可能な関数式としてモデル化される。  Burch および Dill により示されたと同様に、メモリに対する書き込みのヒストリーを記録するための、入れ子にされたＩＦ−ＴＨＥＮ−ＥＬＳＥ（ＩＴＥ）構造を生成することにより、メモリは象徴的に表現される。ラムダ式および解釈されない機能（ＣＬＵ）論理を有するこの限定されたカウンタ演算において、安全性を検証するためにＢＭＣを使用することができる。
【０００９】
しかし、これらの進歩にもかかわらず、ＳＡＴベースのＢＭＣは大きい埋込みメモリを含む設計の処理が未だに不可能であり、したがって、より徹底的、効率的、かつ好都合な方法が必要である。このようなＳＡＴベースのＢＭＣの強化は、当該技術分野における著しい進歩を表し、したがって本発明の目的である。
【００１０】
さらに、米国半導体工業会のロードマップ予測によれば、２００５年には、埋込みメモリはシステム・オン・チップ（ＳｏＣ）デバイスの７０％以上を占めるであろう。システム・オン・チップ・デバイス上のこれらの埋込みメモリは、携帯電話、スマート・カードおよびディジタル・カメラに及ぶアプリケーションにおいて、データ・スループットに対する増加し続けている要求から生じている多様なコードおよびデータ必要条件をサポートする。
【００１１】
埋込みメモリが設計および検証の複雑さの両方で劇的に増加するにつれて、各付加メモリビットを伴う状態空間の指数関数的な増加によって、記号軌道評価を使用するオンチップ・メモリ・アレイを検証する努力は困難に満ちている。特に、この状態急増は、このような大きい埋込みメモリ・システムの機能的検証のためのモデル検査のような形式的検証技術の実用上の適用に不利な影響を与える。
【００１２】
検証の複雑さを和らげるために、いくつかのメモリ抽象化技術、すなわち、メモリを部分的あるいは完全に設計から除外することが、多くの場合業界で使用されている。しかし、このような技術は、多くの場合誤った結果をもたらし、総合的な検証の努力に不利な影響を与えている。多くの細分化ベースの技術において、具体的な設計の小さな抽象モデルから始まって、モデルを反復して改良するために、抽象モデルの擬似的なカウンタ用例が使用される。実際には、性質が正しいと証明され、あるいは実数のカウンタ用例が発見できるまでに、いくつかの反復が必要とされる。すべての反復細分化ステップの後に、モデルの大きさは増加し、検証をますます困難にすることに注目されたい。
【００１３】
それに対して、抽象化ベースの方法は、具体的な設計に対して証明ベースの抽象化（ＰＢＡ）技術を使用する。本発明者が示すように、反復抽象化は、このような技術を発展的により多くの抽象モデルに適用するために使用でき、その結果モデルの大きさを著しく縮減する（例えば、非特許文献５参照。）。
【非特許文献１】「パイプラインで結ばれたマイクロプロセッサ制御の自動的検証」Proceedings of the sixth International Conference on Computer-Aided Verification, volume 818, D. L. Dill, Ed.: Springer-Verlag, 1994, pp. 68-80
【非特許文献２】「記号シミュレーションにおけるメモリ・アレイの効率的なモデル化」Computer Aided Verification, O.Grumberg, Ed., pp. 399-399 in 1987
【非特許文献３】「命題論理に対する解釈されない機能の論理に対して効率的な縮減を行うプロセッサ検証」ACM Transactions on Computational Logic (TOCL) on pp.93-134, Vol., 2, No. 1, January 2001
【非特許文献４】M.N. Velev 、「スーパースケーラ・マイクロプロセッサの形式的検証におけるメモリの自動的な抽象化」 Proceeding of Tools and Algorithms for the Construction and Analysis of Systems, 2001, pp. 252-267
【非特許文献５】「証明分析を伴うＳＡＴベースのＢＭＣを使用する反復抽象化」Proceedings of International Conference on Computer Aided Design in 2003
【発明の開示】
【発明が解決しようとする課題】
【００１４】
しかし、これらの方法は、初めから具体的なモデルを使用するので、多くのメモリを有する設計に適用することは不可能である虞があるという問題点がある。一般に、これらの細分化と抽象化の両方にもとづく方法は、メモリ・セマンティクスを利用する方向に適合していないという問題点がある。
【００１５】
本発明は、上述したような従来の技術が有する問題点に鑑みてなされたものであって、各メモリ・ビットを明示的にモデル化せずに埋込みメモリ設計を処理するために、ＳＡＴベースのＢＭＣの能力を強化することができる抽象化の実用的なモデリング方法を提供することを目的とする。
【課題を解決するための手段】
【００１６】
上記目的を達成するために本発明は、
上記のように構成された本発明においては、第１の態様から考察すると、本発明による新規な方法は、埋込みメモリを有するメモリ・ビットが明示的にモデル化される必要がないような、１つまたは複数の埋込みメモリを有する電子的な設計に適用可能なコンピュータにより実行される方法である。本方法は、データ転送セマンティクスを保存している間に、メモリを設計から除外するステップと、データ転送セマンティクスと、効率的なメモリ・モデリング（ＥＭＭ）制約条件として任意の初期メモリ状態を保存するためのメモリ保存制約条件を、適切な表現で収集するステップと、有限分析を使用して設計を検証するステップとを有する。
【００１７】
また、他の態様から考察すると、本発明による新規な方法は、埋込みメモリを有するメモリ・ビットが明示的にデル化されないような、１つまたは複数の埋込みメモリを有する電子的な設計に適用可能なコンピュータにより実行される方法である。本方法は、データ転送セマンティクスを保存している間に、メモリの１つまたは複数を設計から除外するステップと、データ転送セマンティクスを、効率的なメモリ・モデリング（ＥＭＭ）制約条件として適切な表現で収集するステップと、表現に排他性制約条件を付加するステップと、有効な整合読み取りと書き込みの組み合わせが決定されるとき、排他性制約条件の結果として他の組み合わせが直ちに無効であることを意味するように、適切な有限分析を使用して設計を検証するステップとを有する。
【００１８】
これにより、各メモリ・ビットを明示的にモデル化せずに埋込みメモリ設計を処理するために、ＳＡＴベースのＢＭＣの能力を強化することができ、さらに設計を検証することを必要とせず、マイナス要因となる欠点を生成することもない。
【発明の効果】
【００１９】
以上説明したように本発明においては、データ転送セマンティクスを保存している間に、メモリを設計から除外し、データ転送セマンティクスと、効率的なメモリ・モデリング（ＥＭＭ）制約条件として任意の初期メモリ状態を保存するためのメモリ保存制約条件を、適切な表現で収集し、有限分析を使用して設計を検証する構成としたため、各メモリ・ビットを明示的にモデル化せずに埋込みメモリ設計を処理するために、ＳＡＴベースのＢＭＣの能力を強化することができる。
【発明を実施するための最良の形態】
【００２０】
本発明による方法は、埋込みメモリを有するディジタル・システム１００のブロック図を示す図１を参照してより良く理解することができる。図１に示すような設計に対して、メイン・モジュール１２０は、図面に示すような多数のインタフェイス信号を使用して、メモリ・モジュール１１０とやり取りを行う。任意の所与のクロック・サイクルにおいて、単一ポート・メモリに対して、次のことが観察される。ａ）多くても１つのアドレスが有効である。ｂ）多くても１つの書き込みが発生する。ｃ）多くても１つの読み取りが発生する。ＢＭＣ検索限界ｋがより大きくなるような、多くの埋込みメモリを有する設計に対しては、図２に示すように、ロールしない設計サイズはメモリ・ビットのサイズに応じて直線的に増加する。
【００２１】
図２を参照すると、埋込みメモリを有する「ロールしない」設計２００が示されている。設計２００には、単一ポート・メモリ中の一連の「深度」が具体的に示されている。
【００２２】
上記のメモリのセマンティクスにおいて、特定の深度における任意のメモリの読み取りは、ある前続の深度における同じアドレスに書き込まれた最新のデータに依存することが認められる。したがって、図２に示すような設計に対して、ＳＡＴベースのＢＭＣ分析をより深く可能にするためには、メイン・モジュールを分析せずに、次の段階が実行される。
【００２３】
ａ）メモリ・モジュールを取り出すが、メモリ・インタフェイス信号およびメイン・モジュールに対する入力−出力の方向性は保持する。
【００２４】
ｂ）メモリの順方向セマンティクスを維持するメモリ・インタフェイス信号上のすべての分析深度ｋに制約条件を加える。
【００２５】
ＳＡＴソルバーの検索をより効率的にするために、本発明では次のステップを加える。
【００２６】
ｃ）ＳＡＴソルバーが有効な整合読み取りと書き込みとの組み合わせを決めるとき、他の組み合わせは直ちに無効であると暗黙に定義されるように、制約条件を加える。
【００２７】
上記のａ）とｂ）は、性質の妥当性を保存する効率的なモデルを生成するのに十分であるが、ｃ）は、ＳＡＴベースのＢＭＣの優れた性能をもたらすことに注目されたい。本改良を完全に理解するためには、背景についていくつかの論議がさらに必要である。
（最新のＳＡＴソルバー）
ブーリアン満足化可能性（ＳＡＴ）問題は、構成要素であるブール変数によってブーリアン数式に対する割り当てを満足させるか、あるいはこのような割り当てが存在しないことを証明するかの決定を含んでいる。この問題はＮＰ完全として知られており、当業者には容易に理解されよう、最新のＳＡＴソルバーは図３に示すようなＤＰＬＬスタイルのアルゴリズムを通常使用している。図３を参照すれば、このようなアルゴリズムは、３つの主な構成エンジン、すなわち、決定、推論および診断を有することを容易に知ることができる。
【００２８】
ブーリアン問題は、論理積正規形（ＣＮＦ）あるいは論理ゲート正規形（ＬＧＦ）のいずれか、またはその両方で表現することができる。この問題が論理ゲートおよびＣＮＦ表現式の両方で表現されるハイブリッドＳＡＴソルバーは、ＢＭＣによく適合する。
（有界モデル検証）
有界モデル検証（ＢＭＣ）を使用して、仕様は線形時相論理（ＬＴＬ）で表現される。クリプケ構造Ｍ、ＬＴＬ数式ｆ、およびバウンドｎを仮定すれば、ＢＭＣにおける変換タスクは、長さｎのウイットネスが存在する場合にのみ本数式が満足できるように、命題式
【００２９】
【数１】
2007524165.tif 000003
【００３０】
を構築することである。この「満足化可能性」チェックは、バックエンドＳＡＴソルバーにより実行され、検証は、長さが増加しているウイットネスあるいはカウンタ用例（ＣＥ）を完全性閾値に到達するまで、探すことにより通常進行する。
【００３１】
単純な安全性を検査する（あるいは誤りを立証する）ための、ＳＡＴベースＢＭＣの全体のアルゴリズム（ＢＭＣ−１）を図４に示す（ここでは行１０−１１は無視する）。
【００３２】
【数２】
2007524165.tif 000004
【００３３】
は遷移関係のｉ番目のアンローリングにおける性質ノードを表し、Ｉはシステムの初期状態を表し、
【００３４】
【数３】
2007524165.tif 000005
【００３５】
は長さｉの経路がループなしであることを表すことに注目されたい。行５−７において、正当性に対する順方向および逆方向の終了基準を検査するためにＳＡＴソルバーが使用される。行８において、カウンタ用例の存在を検査するためにＳＡＴソルバーが使用される。
（証明ベースの抽象化（ＰＢＡ））
ＳＡＴベースＢＭＣのためのＰＢＡ技術が、図４の行１０−１１に示される。特に、図４を参照して、行８においてＳＡＴ問題が満足できない場合、すなわち、所与の深度ｉにおいて安全性に対するカウンタ用例が存在しない場合、行１０の手順ＳＡＴ＿Ｇｅｔ＿Ｒｅｆｕｔａｔｉｏｎを使用して、満足し得ないコア（Ｕ＿Ｃｏｒｅ）が得られる。この手順は、ＳＡＴソルバーにより使用された解決ベースのプルーフ・ツリーを単に遡り、非満足化可能性に対して十分な部分集合式を識別する。次に、Ｕ＿Ｃｏｒｅから抽象モデルを得るために、ゲートベースの抽象化あるいはラッチベースの抽象化技術を使用することができる。ここで、深度ｉにおける１組のラッチ理由ＬＲｉを得るために、行１１にラッチベースの抽象化技術を示す。
【００３６】
次に、疑似１次入力への１組の
【００３７】
【数４】
2007524165.tif 000006
【００３８】
にはない所与の設計において、それらのラッチを変換することにより、深度ｉに対する抽象モデルが生成される。Ｕ＿Ｃｏｒｅの十分性のために、結果として生ずる抽象モデルは、性質の正当性を維持することを深度ｉに到るまで保証される。性質の局所参照性によっては、１組の
【００３９】
【数５】
2007524165.tif 000007
【００４０】
は、所与の設計における全ラッチよりも大幅に少なくなる可能性がある。具体的にいうと、１組の
【００４１】
【数６】
2007524165.tif 000008
【００４２】
の大きさが、安定性深度と呼ばれる一定数の深度を超えて増加しないように、深度ｄ（＜ｎ）が選択される。多くの場合に、深度ｄにおいて生成された抽象モデルに対して、したがって所与の設計に対して、性質は正しいと証明できる。１組の
【００４３】
【数７】
2007524165.tif 000009
【００４４】
をさらに減少させ、したがって、より小さい抽象モデルを得るために、ＰＢＡ技術は反復して適用することができ、反復抽象化と呼ばれる。
（メモリのセマンティクス）
当業者には容易に理解できるように、埋込みメモリは、それぞれデータ・アクセスに対して少なくとも１つのポートを有するように実現された、ランダムにアクセス可能なメモリ（ＲＡＭ）、連続的にアクセス可能なメモリ（ＳＡＭ）、ファーストイン・ファーストアウト（ＦＩＦＯ）およびラストイン・ラストアウト（すなわち、スタック）のような、いくつかの形式で通常使用される。本明細書の説明のために、次のインタフェイス信号、すなわち、アドレス・バス（Ａｄｄｒ）、書き込みデータ・バス（ＷＤ）、読み取りデータ・バス（ＲＤ）、書き込みイネーブル（ＷＥ）読み取りイネーブル（ＲＥ）、を有する図１に示すような単一ポート・メモリを想定する。
【００４５】
メモリ・アクセス動作の代表的なタイミング図を図５に示す。図５を参照すると、メモリ動作の書き込み位相はクロック・サイクルを２つ必要とすることが判る。第１のクロック・サイクルにおいて、データ値がＷＤバスに割り当てられる、書き込みアドレス位置がアドレス・バスに割り当てられ、ＷＥ信号がアクティブにされる。クロックの第２フェーズにおいて、メモリのアドレス位置は、新しいデータを受け取る。
【００４６】
一方、メモリ動作の読み取り位相は、クロック・サイクルを単に１つのみ必要とする。特に、読み取りアドレス位置がアドレス・バスに割り当てられ、ＲＥがアクティブにされるとき、読み取りデータはＲＤバスに割り当てられる。たとえば、図５において、データ０および１は、それぞれ、クロック・サイクル２および３において、アドレス位置５および４に書き込みされる。データは、クロック・サイクル４、５および６において、アドレス位置４から読み取られる。
【００４７】
ここで、メモリ設計を（０から開始して）深度ｋまでアンロールすると想定する。
【００４８】
【数８】
2007524165.tif 000010
【００４９】
が時間フレームｊにおけるメモリ・インタフェイス信号変数Ｓを表し、ブール変数
【００５０】
【数９】
2007524165.tif 000011
【００５１】
が
【００５２】
【数１０】
2007524165.tif 000012
【００５３】
と定義されるとすれば、メモリの順方向セマンティクスは、次式で表現できる。
【００５４】
【数１１】
2007524165.tif 000013
【００５５】
言い換えれば、アドレスがｋとｊにおいて等しく、書き込みイネーブルがｊにおいてアクティブであり、読み取りイネーブルがｋにおいてアクティブであり、ｊとｋの間のすべての深度に対して、どのアドレスもｋのアドレスと異なりあるいは書き込みが生起しなければ、ｋ番目の深度において読み取られるデータはｊ番目の深度において書き込まれたデータに等しい。
（本発明による方法）
本発明による新規な教示によれば、本発明による方法は、（本発明による形式的検証プラットフォームの一部として）ＢＭＣ分析のすべてのアンロール深度において、メモリ・モデリング制約条件を追加するメカニズムを使用して、ＳＡＴベースのＢＭＣを強化する。詳しくは、本発明は、ブーリアン制約条件のハイブリッド表現を使用する、すなわち、元の回路問題を表すために２入力のＯＲ／ＩＮＶＥＲＴＥＲゲートを、学習した制約条件を表すためにＣＮＦを使用する、ハイブリッドＳＡＴソルバーを利用する。都合の良いことに、本発明は、効率的なブーリアン制約条件伝搬は、２入力ユニフォーム・ゲート表現に高速の表検索方式を使用して実現できることを決定し、かつ示したので、本発明はメモリ制約条件を効率的にモデル化するためにハイブリッド表現の使用を拡張する、具体的にはハイブリッド表現を２入力ユニフォーム・ゲート（マルチ入力のゲートの代わりに）表現のみと比較する。
【００５６】
メモリの順方向セマンティクスに対して数式（１）のように制約条件を付け加えると、セレクション演算子ＩＴＥにもとづく従来の方法を使用することができる。具体的にいうと、ブール変数
【００５７】
【数１２】
2007524165.tif 000014
【００５８】
が
【００５９】
【数１３】
2007524165.tif 000015
【００６０】
と定義される有効な読み取り信号を表すとすれば、深度ｋにおけるデータ読み取りは、次式で与えられる。
【００６１】
【数１４】
2007524165.tif 000016
【００６２】
ここで、
【００６３】
【数１５】
2007524165.tif 000017
【００６４】
は、それを使用してすべてのメモリアドレスが初期化されるユニフォーム・データ値Ｉを表し、ＩＴＥは、３つのブール変数に適用される場合、
【００６５】
【数１６】
2007524165.tif 000018
【００６６】
として定義される。初期のメモリ値がすべてのアドレスにおいて等しくない場合、どのように処理すべきかは後に簡潔に説明する。
【００６７】
制約条件が上記のように付け加えられる場合、決定
【００６８】
【数１７】
2007524165.tif 000019
【００６９】
は
【００７０】
【数１８】
2007524165.tif 000020
【００７１】
を必然的に暗示するものではなく、同様に、決定手順、すなわち
【００７２】
【数１９】
2007524165.tif 000021
【００７３】
によって、他の組み合わせが無効であると確定される必要があることに注目されたい。したがって、読み取りと書き込みの組み合わせを排他的に収集するために、明示的な制約条件がを加えられる。詳しくは、一度ＳＡＴソルバーにより選択された読み取りと書き込みの組み合わせを他の組み合わせと整合させることは、ただちに無効であることを意味する。
【００７４】
例えば、ブール変数
【００７５】
【数２０】
2007524165.tif 000022
【００７６】
が排他的有効読み取り信号を表し、ブール変数
【００７７】
【数２１】
2007524165.tif 000023
【００７８】
が中間の排他的信号を表すとすれば、両者は次式で定義される。
【００７９】
【数２２】
2007524165.tif 000024
【００８０】
ここで、数式（１）は次式で表される。
【００８１】
【数２３】
2007524165.tif 000025
【００８２】
ここで、
【００８３】
【数２４】
2007524165.tif 000026
【００８４】
は、ただちに
【００８５】
【数２５】
2007524165.tif 000027
【００８６】
を意味することに注目されたい。ここで、
【００８７】
【数２６】
2007524165.tif 000028
【００８８】
であり、
【００８９】
【数２７】
2007524165.tif 000029
【００９０】
である。
（メモリ・モデリング制約条件の効率的な表現）
前述のように、本発明は、数式（３）および（４）を簡潔に収集する制約条件を作るハイブリッド表現を有利に使用する。さらに、本発明によるハイブリッド表現は、次のようにさらなる効率化をもたらす。
【００９１】
１）本発明によるハイブリッド表現は、媒介変数がファンアウトしない構造、たとえばＯＲツリー、を生成しない。大きな競合節を付加する状況で観察されたように、このような回路構造はＢＣＰ性能に不利な影響を与える。
【００９２】
２）本発明によるハイブリッド表現は、ＣＮＦベースのＳＡＴソルバーに否定的に影響を及ぼす不必要な２−リテラル節（プログラムのクローズ）を生成しない。
【００９３】
図６を参照すると、手順ＥＭＭ＿Ｃｏｎｓｔｒａｉｎｔｓ（）の一部に含まれて、メモリ・モデリング制約条件の本発明による新規な付加の本発明による具体化例の擬似コードリストが示されている。図７には具体的には示さないが、図６に示す修正されたＢＭＣアルゴリズムＢＭＣ２に示すように、この手順ＥＭＭ＿Ｃｏｎｓｔｒａｉｎｔｓ（）は、すべてのアンローリングの後に呼び出される。
【００９４】
ここで図７に転じて、図７に示すように、手順ＥＭＭ＿Ｃｏｎｓｔｒａｉｎｔｓは、３つのサブ手順呼び出し、すなわち、Ｇｅｎ＿Ａｄｄｒ＿Ｅｑｕａｌ＿Ｓｉｇ、Ｇｅｎ＿Ｖａｌｉｄ＿Ｒｅａｄ＿Ｓｉｇ、およびＧｅｎ＿Ｒｅａｄ＿Ｄａｔａ＿Ｃｏｎｓｔｒａｉｎｔｓを使用して、すべての深度ｋにおいてメモリ・モデリング制約条件を生成する。次に、手順ＥＭＭ＿Ｃｏｎｓｔｒａｉｎｔｓは、これまでに累算された制約条件Ｃを返す。これらのサブ手順の次の詳細な説明で判るように、これらの制約条件は、メモリのセマンティクスを深度ｋに到るまで、安全に、かつ非常に効率的に収集する。
（Ｇｅｎ＿Ａｄｄｒ＿Ｅｑｕａｌ＿Ｓｉｇ：アドレス比較信号の生成）
この手順において、ｍはアドレスのビット幅を表す。次に、アドレス比較は次のように実行される。すべてのアドレス対比較
【００９５】
【数２８】
2007524165.tif 000030
【００９６】
に対して、
【００９７】
【数２９】
2007524165.tif 000031
【００９８】
であるように、新しい変数
【００９９】
【数３０】
2007524165.tif 000032
【０１００】
および
【０１０１】
【数３１】
2007524165.tif 000033
【０１０２】
を導入する。次に、各ｉに対して次のＣＮＦ節を加える。
【０１０３】
【数３２】
2007524165.tif 000034
【０１０４】
最後に、
【０１０５】
【数３３】
2007524165.tif 000035
【０１０６】
と
【０１０７】
【数３４】
2007524165.tif 000036
【０１０８】
の間の関係を接続するために１つの節が加えられる。
【０１０９】
【数３５】
2007524165.tif 000037
【０１１０】
これらの節は、
【０１１１】
【数３６】
2007524165.tif 000038
【０１１２】
の場合にのみ、
【０１１３】
【数３７】
2007524165.tif 000039
【０１１４】
である関係を収集することに注目されたい。
【０１１５】
あるいは、類似の同等関係を構造的に得るために、Ｘ−ＮＯＲ
【０１１６】
【数３８】
2007524165.tif 000040
【０１１７】
ゲートのＡＮＤツリーを使用して、次のように、より従来の方法を使用することができる。
【０１１８】
【数３９】
2007524165.tif 000041
【０１１９】
容易に理解できるように、この表現は４ｍ−１の２入力ＯＲゲートを必要とし、これは１２ｍ−３の等価なＣＮＦ説（ゲートごとに３つの節）になる。都合の良いことに、際だって対照的に、本発明による新規な表現は、４ｍ＋１の節のみを必要とし、２−リテラル節を有しない。すべての深度ｋにおいて、（１２ｍ−３）ｋゲート節と比較して、本発明はアドレス比較のために単に（４ｍ＋１）ｋ節のみを加える。
（Ｇｅｎ＿Ｖａｌｉｄ＿Ｒｅａｄ＿Ｓｉｇ  ：  排他的有効読み取り信号の生成）
上記の（３）のように排他的有効読み取り信号の表現において、本発明はＣＮＦ節の代わりに２入力ゲート表現を使用する。しかし、各媒介変数は他の信号に対してファンアウトを有するので、本発明は完全にそれらを除外することができない。本発明がＣＮＦ節を使用してそれらを表現すれば、本発明が避けようと努力する大量の２−リテラル節を導入するであろう。この表現は、すべての深度ｋに対して、３ｋの２入力ゲート（あるいは９ｋのゲート節）を加える。
（Ｇｅｎ＿Ｒｅａｄ＿Ｄａｔａ＿Ｃｏｎｓｔｒａｉｎｔｓ  ：  読み取りデータ信号の制約条件の生成）
構造にもとづいて、所与のｋに対して、多くても１つの
【０１２０】
【数４０】
2007524165.tif 000042
【０１２１】
が知られている。この事実は、数式（４）における制約条件をＣＮＦ節として表すために使用される。したがって、ｎはデータ・バスのビット幅を表す。次に、次の節
【０１２２】
【数４１】
2007524165.tif 000043
【０１２３】
を加える。
【０１２４】
【数４２】
2007524165.tif 000044
【０１２５】
読み取り信号の妥当性を収集するために、次の節を加える。
【０１２６】
【数４３】
2007524165.tif 000045
【０１２７】
都合の良いことに、この表現はすべての深度ｋにおいて２ｎ（ｋ＋１）＋１の節のみを加える。一方、際だって対照的に、ゲートを使用して表現すれば、ｎ（２ｋ＋１）のゲート、したがって、３ｎ（２ｋ＋１）ゲート節を必要とするであろう。したがって、本発明によるハイブリッド表現は、すべての深度ｋにおいて、ゲート表現を使用する場合の（４ｍ＋２）ｋ＋ｎ（２ｋ＋１）のゲートの加算と比較して、僅かに（２ｎ＋４ｍ＋１）ｋ＋２ｎ＋１の節と３ｋのゲートを加える。
（ＩＴＥ表現との比較）
この時点で本発明による新規なハイブリッド方法を、ＩＴＥ表現を有する表現と比較することは有用である。特に、すべての深度ｋにおいて、入れ子にされたＩＴＥ表現を表すために本発明が２入力ゲートを使用すれば、アドレス比較のために（４ｍ−１）ｋのゲート、ＩＴＥ制御信号のためにｋのゲート、ＩＴＥ演算子の合計がｎｋである場合にＩＴＥ演算子を実現するために３ｎｋのゲートを本発明は必要とするであろう。したがって、発明は全体で４ｍｋ＋３ｎｋのゲートを必要とする。
【０１２８】
際だって対照的に、代わりに本発明がすべての深度ｋにおいて入れ子にされたＩＴＥのためにハイブリッド表現を使用すれば、本発明は、アドレス比較のために（４ｍ＋１）ｋの節、ＩＴＥ制御信号のためにｋのゲート、ＩＴＥ演算子の実現のために４ｎｋ＋１の節を必要とするであろう。本発明は、次の節、
【０１２９】
【数４４】
2007524165.tif 000046
【０１３０】
を加える必要があることに注目されたい。
【０１３１】
【数４５】
2007524165.tif 000047
【０１３２】
ここで、
【０１３３】
【数４６】
2007524165.tif 000048
【０１３４】
である。本発明は新しい媒介変数
【０１３５】
【数４７】
2007524165.tif 000049
【０１３６】
を導入する必要があり、また読み取り信号の妥当性を収集するために節を加える必要があることにさらに注目されたい。総合して本発明は（４ｍ＋１＋４ｎ）ｋ＋１の節とｋのゲートを利用する。
【０１３７】
テーブル１を参照して、制約条件を表すために必要なゲートと節の数を要約して、テーブル１のＡ−Ｄにそれぞれ示す。当業者には容易に理解できるように、制約条件節の数は、分析深度ｋの増加と共に、２次関数的［特に強調］に増大する。
【０１３８】
【表１】
2007524165.tif 000050
【０１３９】
Ａ−Ｄの異なる場合の有意義な比較のために、各２入力ゲートに対して、３つの等価なＣＮＦ節を使用する。制約条件節の増加曲線を、ｎ＝３２、ｍ＝１２に対して図８に示す。ここで図８を参照して、本発明による新規なハイブリッド表現Ｄは、入れ子にされたＩＴＥのゲート表現（Ａ）よりも３倍簡単であり、ｋ＝ ５０においては、入れ子にされたＩＴＥのハイブリッド表現（Ｂ）と比較して５０％である。言い換えれば、ＢＭＣは、メモリが限定されたマシンでＤ表現を使用して、Ａ−Ｃ表現と比較して、より深い検索をすることが可能であろう。さらに、本発明による新規な表現は、有効な読み取り信号の排他性を明示的に収集するので、実験で観察されるように、ＳＡＴソルバーは非常に速い検索を行うことが可能である。
（複数のメモリ、読み取りおよび書き込みポートに対するＥＭＭ）
効率的なモデリングを深く探求する前に、複数の読み取りおよび書き込みポートが存在する状態のメモリ・セマンティクスをまず定義する。ここでデータ競合はないと想定する。言い換えれば、任意の所与のサイクルにおいて、ただ１つの書き込みポートを介してのみ、記憶場所は更新できる。（本発明による方法は、データ競合に対する検査にも容易に拡張することができる。）各メモリ・モジュールはそのポートを介してのみアクセスされるので、メモリ・モジュールは相互に独立していると考えることができる。下記の説明において、複数の読み取りポートと複数の書き込みポートを有する単一のメモリを最初に考える。
【０１４０】
設計を深度ｋまでアンロールさせる（０から開始して）。
【０１４１】
【数４８】
2007524165.tif 000051
【０１４２】
は、時間フレームｊにおいてポートｐに対するメモリ・インタフェイス信号変数Ｘを表すとする。ＲおよびＷは、それぞれ、所与のメモリに対する読み取りおよび書き込みポートの数とする。ブール変数
【０１４３】
【数４９】
2007524165.tif 000052
【０１４４】
は、
【０１４５】
【数５０】
2007524165.tif 000053
【０１４６】
と定義された、深度ｉにおける読み取りポートｒと深度ｊにおける書き込みポートｗのアドレス比較を表すとする。したがって、メモリの転送セマンティクスは次式で表現できる。
【０１４７】
【数５１】
2007524165.tif 000054
【０１４８】
言い換えれば、深度ｋおよび深度ｊにおいてアドレスが等しく、書き込みポートｗに対して深度ｊにおいて書き込みイネーブルがアクティブであり、読み取りポートｒに対して深度ｋにおいて読み取りイネーブルがアクティブであり、厳密に深度ｊと深度ｋの間のすべての深度に対してアドレス位置
【０１４９】
【数５２】
2007524165.tif 000055
【０１５０】
において何れの書き込みポートを介してもデータの書き込みが無ければ、深度ｋにおける読み取りポートｒを介するデータ読み取りは、深度ｊにおける書き込みポートｗを介するデータ書き込みに等しい。
【０１５１】
ブール変数
【０１５２】
【数５３】
2007524165.tif 000056
【０１５３】
は、
【０１５４】
【数５４】
2007524165.tif 000057
【０１５５】
と定義されるとする。決定
【０１５６】
【数５５】
2007524165.tif 000058
【０１５７】
は、必然的に
【０１５８】
【数５６】
2007524165.tif 000059
【０１５９】
を暗示するものではなく、他の対も決定手順を介して同様に無効であると決定される必要がある。すなわち、
【０１６０】
【数５７】
2007524165.tif 000060
【０１６１】
である。単一の読み取り／書き込みポートの方法と同様に、ＳＡＴ解決時間を改善するために、本発明は整合読み取り・書き込み対の排他性を収集するために明示的な制約条件を加える。ブール変数
【０１６２】
【数５８】
2007524165.tif 000061
【０１６３】
および
【０１６４】
【数５９】
2007524165.tif 000062
【０１６５】
は、それぞれ所与の読み取りポートｒと書き込みポートｗに対する排他的有効読み取り信号と媒介信号を表すとする。それらは次のように再帰的に定義される。
【０１６６】
【数６０】
2007524165.tif 000063
【０１６７】
複数の読み取りおよび書き込みポートに対する転送セマンティクスは、次式で表現できる。
【０１６８】
【数６１】
2007524165.tif 000064
【０１６９】
ここで、
【０１７０】
【数６２】
2007524165.tif 000065
【０１７１】
は、ただちに
【０１７２】
【数６３】
2007524165.tif 000066
【０１７３】
を意味することに注目されたい。ここで、
【０１７４】
【数６４】
2007524165.tif 000067
【０１７５】
または
【０１７６】
【数６５】
2007524165.tif 000068
【０１７７】
のいずれかであり、また、
【０１７８】
【数６６】
2007524165.tif 000069
【０１７９】
である。都合の良いことに、本発明は、メモリ・モデリング制約条件を手順ＥＭＭ＿Ｃｏｎｓｔｒａｉｎｔｓの一部として加えるために、ハイブリッド表現を使用する。手順ＥＭＭ＿Ｃｏｎｓｔｒａｉｎｔｓは、図２に示すように、すべてのアンローリングの後に呼び出される。ＤＷ＝ｎおよびＡＷ＝ｍと仮定して、本発明は、ＥＭＭ制約条件の大きさに所与の深度ｋにおける各読み取りポートに対して節およびゲートに換算して加える。
【０１８０】
１．アドレス比較  ：  本発明は、アドレス比較信号を表すために、（４・ｍ＋１）・ｋ・ＷのＣＮＦ節を必要とする。
【０１８１】
２．排他的な制約条件  ：  本発明は、数式（４）の排他性制約条件を表すために、３・ｋ・Ｗの２入力ゲートを必要とする。
【０１８２】
３．読み取りデータ制約条件  ：  本発明は、数式（５）の読み取りデータ制約条件を表すために、２・ｎ・ｋ・Ｗ＋２・ｎ＋１のＣＮＦ節を必要とする。
【０１８３】
合計して、本発明は、単一の読み取りポートとＷの書き込みポートに対して、（４・ｍ＋２・ｎ＋１）・ｋ・Ｗ＋２・ｎ＋１の節と、３・ｋ・Ｗのゲートを必要とする。Ｒの読み取りポートに対して、本発明は、（（４・ｍ＋２・ｎ＋１）・ｋ・Ｗ＋２・ｎ＋１）・Ｒの節と、３・ｋ・Ｗ・Ｒのゲートを必要とするであろう。制約条件の増加は、分析深度ｋについても２次関数的のままであり、単一の読み取り／書き込みポートを有する単一のメモリが必要とする制約条件のＷ・Ｒ倍であることに注目されたい。複数のメモリが存在する状態では、本発明は、複数のメモリのそれぞれに、これらのＥＭＭ制約条件を加える。
（メモリの不均一な初期化）
通常、メモリは一様に初期化されている。言い換えれば、パワー・オン・リセットに際して、メモリは、すべての記憶場所においてある同一の初期値に設定される。しかし、パワー・オン・リセット状態以外の任意の状態においてＢＭＣが適用し得る半形式的検証方法では、メモリは一様な値を有しないことがある。このような不均一な初期値の取り扱いは、本発明が提案する枠組み内で容易に可能である。
例として、メモリが、ｐ個の異なる初期値、すなわち、設計の所与の初期状態に対して、アドレス位置
【０１８４】
【数６７】
2007524165.tif 000070
【０１８５】
に格納された
【０１８６】
【数６８】
2007524165.tif 000071
【０１８７】
を格納していると仮定する。そのメモリ状態に如何にして達したかは、その状態に達するために少なくとも１つの書き込みシーケンスが存在することを示すことができる限り、重要ではないことに注目されたい。
【０１８８】
十分理解できるように、このような書き込みシーケンスは、次のように作成することができる：ｔ＝−ｐにおいて、すべての記憶場所は
【０１８９】
【数６９】
2007524165.tif 000072
【０１９０】
に初期化されている。したがって、アドレス位置
【０１９１】
【数７０】
2007524165.tif 000073
【０１９２】
におけるデータ値
【０１９３】
【数７１】
2007524165.tif 000074
【０１９４】
の書き込むｔ＝−ｐ＋ｉにて、
【０１９５】
【数７２】
2007524165.tif 000075
【０１９６】
の書き込みサイクルが発行される。そして、これらの書き込みサイクルを収集するために、さらにｐ−１個の項を数式（４）に加える必要がある。
【０１９７】
ｐ＝２に対して、これを例示する。メモリ・アレイの上半分の位置、すなわち、
【０１９８】
【数７３】
2007524165.tif 000076
【０１９９】
は初期値２を有し、下半分のアドレス位置、すなわち、
【０２００】
【数７４】
2007524165.tif 000077
【０２０１】
は初期値１を有すると、仮定する。本発明では、次の通りに書き込みシーケンスを作成する。：ｔ＝−２において、すべてのアドレス位置は値１を有する。すなわち、
【０２０２】
【数７５】
2007524165.tif 000078
【０２０３】
である。また、ｔ＝−ｌにおいて、値２が書き込まれた。すなわち、
【０２０４】
【数７６】
2007524165.tif 000079
【０２０５】
である。ここで、数式（４）にさらに１項を加える必要がある。すなわち、
【０２０６】
【数７７】
2007524165.tif 000080
【０２０７】
である。
（任意の初期メモリ状態）
任意の初期状態を有するメモリをモデル化するために、本発明は、すべての時間フレームにおいて、新しい記号変数を導入する。設計の（ｋ−１）深度分析に対して、単一の読み取りポートから多くてもｋ個の異なるメモリ読み取りアクセスが存在しうることに注意を払われたい。その中で多くてもｋ個のアクセスが書き込まれていない記憶位置であり得る。したがって、全体では、分析深度ｋ−１において各読み取りポートに対して、異なるデータ・ワードに対して、ｋ個の記号変数を導入する必要がある。しかし、これらの変数は完全に独立ではない。単に新しい変数を導入することは、検証モデルに余分な行動を持ち込む。したがって、メモリの任意の初期状態を正確にモデル化する制約条件の十分な一揃いを確認する必要がある。
【０２０８】
ここで、
【０２０９】
【数７８】
2007524165.tif 000081
【０２１０】
および
【０２１１】
【数７９】
2007524165.tif 000082
【０２１２】
は、それぞれ読み取りポートｐおよびｑに対して、深度ｉおよびｊにおいて導入された新しいデータ・ワードを表すとする。
【０２１３】
【数８０】
2007524165.tif 000083
【０２１４】
および
【０２１５】
【数８１】
2007524165.tif 000084
【０２１６】
は、ポートｐおよびｑに対応する読み取りアドレスであるとする。（ｐおよびｑが異なっている必要はない）。
【０２１７】
【数８２】
2007524165.tif 000085
【０２１８】
（および
【０２１９】
【数８３】
2007524165.tif 000086
【０２２０】
）は、アドレス位置
【０２２１】
【数８４】
2007524165.tif 000087
【０２２２】
（および
【０２２３】
【数８５】
2007524165.tif 000088
【０２２４】
）において、深度ｉ（およびｊ）に到るまで書き込みが発生していない状態を表すとする。したがって、それぞれ深度ｉおよびｊにおけるポートｐおよびｑからのデータ読み取りは、次式により表現することができる。
【０２２５】
【数８６】
2007524165.tif 000089
【０２２６】
読み取りアドレス
【０２２７】
【数８７】
2007524165.tif 000090
【０２２８】
および
【０２２９】
【数８８】
2007524165.tif 000091
【０２３０】
が等しければ、
【０２３１】
【数８９】
2007524165.tif 000092
【０２３２】
および
【０２３３】
【数９０】
2007524165.tif 000093
【０２３４】
も等しくあるべきことに、注目されたい。前述のものを収集するために、次の制約条件を加える。
【０２３５】
【数９１】
2007524165.tif 000094
【０２３６】
（ｋ−１）深度分析におけるＲ読み取りポートに対して、ｋ・Ｒ・（Ｒ−１）のこのような制約条件を加える必要がある。本発明は、手順ＥＭＭ＿ｃｏｎｓｔｒａｉｎｔｓ内の別のサブ手順の呼出しの中でハイブリッド表現を使用して、これらの制約条件を加える。ＢＭＣ１（図１、行６）内のプルーフステップは、メモリの任意の初期状態の正しいモデル化を必要とすることに注目されたい。数式（６）のようにメモリ制約条件の新しい１組を使用して、ＥＭＭ制約条件を有するＢＭＣのプルーフステップを本発明は強化する。修正されたアルゴリズム（ＢＭＣ−３）を図ｘｘ３ｘｘに示す。（（発明者自分自身に対する注。この図を挿入し、正確に番号を付す必要がある。））（さしあたり行１１−１２を無視されたい）。これらの制約条件を付加せずに、安全性の正当性を示すことは不可能であることを後に示す。
（証明ベースの抽象化を使用するＥＭＭ）
前述のように、複数のメモリと複数のポートを有するＳｏＣに対して、ＥＭＭは、検証モデルの大きさを大幅に減少することができる。しかし、所与の安全性の正当性を検査するために、本発明は、すべてのメモリ・モジュールまたはポートを必要としないこともある。さらにモデルを縮小するために、本発明は、無関係のメモリ・モジュールあるいはポートを完全に除外することができる。この場合、無関係のメモリ・モジュールまたはポートに対して、本発明はメモリ・モデリング制約条件を加える必要がなく、したがって、ＢＭＣの複雑さをさらに減少させる。
【０２３７】
無関係のメモリ・モジュールとポートを自動的に識別するために、本発明はＥＭＭ制約条件をＰＢＡと組み合わせる技術を提案する。これは、（メイン・モジュールから）非メモリのロジックを減少させるだけでなく、さらにＢＭＣ分析の所与の有界な深度に到るまで正当性をもたらすために必要とされないメモリ・モジュールおよびポートを識別することができる。ＰＢＡとＥＭＭ制約条件を使用する総合的なＢＭＣアルゴリズム（ＢＭＣ３）を、図９の行１１−１２に示す。
【０２３８】
所与の深度ｉに対する任意のメモリ・モジュールについての性質の依存は、そのメモリ・モジュールに対する制御論理（メモリ・インタフェイス信号を駆動するロジック）に対応するラッチが１組のＬＲｉの中にあるか否かを調べることにより、容易に判定される。このようなラッチが１組のＬＲｉの中に存在しなければ、そのメモリ・モジュールに対してはＥＭＭモデリング制約条件を加えない。言い換えれば、そのメモリ・モジュールを完全に除外する。本発明は、各メモリポートに対して同様の抽象化を行う。次の章で説明する実験で観察されるように、これは問題の大きさを縮小し、性能を改善する。
（事例研究）
図１０に注目して、図１１に示すようなランダム・アクセス・メモリ（ＲＡＭ）を使用するスタックの代表的な具体化例（ＶｅｒｉｌｏｇＨＤＬで）を使用して本発明による新規な方法を説明する。理解を容易にするために、メモリ・インタフェイス信号の表記は、前の説明と同じものを使用する。図１１を特に参照すると、行６−１８はＲＡＭの具体化例を示し、行２２−４１はスタックの具体化例を示す。メモリを明示的にモデル化すれば、１３０Ｋの状態ビットを必要とすることに注目されたい。明らかに、このようなモデリングは、ＳＡＴベースのＢＭＣを非実用的にするであろう。しかし、再帰的なプログラムを処理するためには、同じ規模の有限に大きいスタックを必要とするであろう。
【０２３９】
本発明による方法によれば、まず行６−１８と行４０を除外し、すべてのメモリ・インタフェイス信号をスタックに対する入力および出力として宣言する。次に、図６に示すように、結果として生ずる取り除かれたスタック上で、改良されたＢＭＣ２アルゴリズムを実行する。次の章において、いくつかのソフトウェアおよびハードウェア設計についての実験結果を説明する。
（実験）
実験のために、図１０に示す公知の４つの再帰的なソフトウェア・プログラムを使用した。１つの設計は埋め込みスタックを有し、１つの設計は埋め込みＲＡＭを有する。これらの設計のそれぞれに、全部のメモリのモデル化を絶対必要とする安全性を選択した。すなわち、設計からメモリを完全に除去することは簡単にはできない。さらに、図１１で説明したように、スタック・モデルを使用するＶｅｒｉｌｏｇＨＤＬを使用して、ソフトウェア・プログラムのそれぞれを等価なハードウェア・モデルに変換した。ソフトウェア設計のそれぞれに対して、ここで、簡単な説明と選択された性質を紹介する。
（フィボナッチ（ｆｉｂ，ｆｉｂ−ｃ））
再帰的な具体化例を有するフィボナッチ関数を、図１０の行３−７に示す。キャッシュを使用する同じプログラムの最適化された具体化例を、行１０−１９に示す。ｎの所与の値に対して、これらの機能は対応するフィボナッチ数を返す。非自明な状態空間検索問題を生成するために、無効にされた安全性を説明するために逆関数を使用する、すなわち、一定の値のフィボナッチ数を与えると、対応するｎが存在するか？
（３ｎ＋１（３ｎプラス１））
これは公知の未解決の３ｎ＋１問題である。ソフトウェア表現を、図１０の行２４−３１に示す。ｎの所与の値に対して、広域変数周期は、プログラムを終了するために必要とされる再帰呼出しの数を維持する。非自明な状態空間検索問題を生成するために、無効にされた安全性を説明するために逆関数を使用する、すなわち、一定の値の周期を与えると、ｎの値が存在するか？
（「ハノイのタワー」（ＴＯＨ））
「ハノイのタワー」アルゴリズムを、図１０の行３５−４０に示す。スタッキング要素の数ｎを仮定すると、再帰的なアルゴリズムは、補助ａを使用してソースｓからデスティネーションｄまで、すべての要素を転送する正当な移動を見出す。広域変数度数は、必要とされる移動の数を維持する。上記と同様に、非自明な状態空間検索問題を生成するために、無効にされた安全性を説明するために逆関数を使用する、すなわち、一定の値の度数を与えると、対応するｎが存在するか？
実験は、４Ｇｂの物理的メモリを有するデュアルのインテル２．８ギガヘルツＸｅｏｎプロセッサを有するワークステーションで、レッド・ハット・リナックス７．２を実行し、各ＢＭＣランに対して３時間の時間制限を使用して、行われた。埋込みメモリを処理するための強化したＳＡＴベースのＢＭＣの性能を、明示的なメモリ・モデリングおよび他のスタイルと比較した。さらに、所与の性質と設計に対して、メモリ・サイズを増加して、性能を比較した。
【０２４０】
上述のように選択したいくつかの性質を有するソフトウェア・プログラムのハードウェア・モデルについて、第１の１組の実験を行った。性質のそれぞれは非自明なウイットネスを有し、テーブル２〜５に検索複雑さの増加順に記載されている。各モデルには固定したメモリ・サイズを使用した。カウンタ用例を有しないと想定される安全性を有する１つの工業用ハードウェア設計を使用した。これらの性質に対して、メモリ・モデリング・スタイルの性能とメモリ利用度比較を示す、すなわち、明示的なメモリ・モデリング、混成の排他的選択基準Ｄを使用するメモリ・モデリング、および、混成の入れ子にしたＩＴＥＢを使用するメモリ・モデリング、をテーブル２〜５に示す。
【０２４１】
【表２】
2007524165.tif 000095
【０２４２】
ここで、テーブル２ａとテーブル２ｂを同時に参照すると、フィボナッチ・モデルに対する比較結果（テーブル２ａ）と、その最適化された具体化例に対する結果（テーブル２ｂ）を示す。これらのモデルに対して、アドレス幅ＡＷ＝１２とデータ幅ＤＷ＝３２が使用されたことに注目されたい。
【０２４３】
【表３】
2007524165.tif 000096
【０２４４】
【表４】
2007524165.tif 000097
【０２４５】
３ｎ＋１のモデルに対する比較結果をテーブル３に示す。テーブル３の中では、ＡＷ＝１２およびＤＷ＝２を使用した。テーブル４には、ハノイのタワー・モデルに対する比較結果を示す。このモードに対しては、ＡＷ＝１２およびＤＷ＝２２を使用した。最後に、テーブル５において、性質がリソース限界を超えない範囲で、さまざまな媒介分析深度に対して、所与の安全性Ｓを有する工業用ハードウェア設計に対する結果を比較する。このモデルは、ＡＷ＝１２およびＤＷ＝１２である。
【０２４６】
【表５】
2007524165.tif 000098
【０２４７】
テーブル２〜５のすべてに関して、第１の列は増加する複雑さの性質を示し、第２の列はウイットネス深度を示し、（テーブル５では媒介分析深度を示す）第３の列から第７の列は性能の数字を示し、第８の列から第１２の列はメモリ利用度の数字を示す。
【０２４８】
詳しくは、性能の列−第３列から第５列−は、それぞれ、明示的なメモリ・モデリング（Ｐ１）、入れ子にされたＩＴＥを使用する（Ｐ２）、および排他的選択基準を使用する（Ｐ３）に対するＢＭＣ検索時間（秒）を示す。第６列から第７列は、それぞれ、明示的なメモリ・モデリングおよび入れ子にされたＩＴＥに対して、排他的選択基準を使用した速度向上（比率）を示す。メモリ利用度の列−第８列から第１０列−は、それぞれ、明示的なメモリ・モデリング（Ｍ１）、入れ子にされたＩＴＥを使用（Ｍ２）、および排他的選択基準を使用（Ｍ３）、により使用したメモリ（Ｍｂ）を示す。最後に、第１１列から第１２列は、それぞれ、明示的なメモリ・モデリングに対して排他的選択基準、および入れ子にされたＩＴＥを使用したメモリ使用の削減（比率）を示す。
【０２４９】
【表６】
2007524165.tif 000099
【０２５０】
テーブル２〜５の第６列の性能の数字を観察すると、本発明による方法は、明示的なメモリ・モデリングと比較して、ＢＭＣの性能を１桁ないし２桁増加させることが判る。同様に、テーブル２〜５の第１１列に示すように、２つの方法の間には１桁ないし２桁のメモリ利用度の低減がある。さらに、第７列および第１２列に示すように、排他的選択基準を使用する本発明によるモデリング・スタイルは、入れ子にされたＩＴＥより良い。有利なことに、３０−４０％の平均性能改善と、２０−３０％のメモリ利用度の低減が観察され、より高い分析深度においては、さらに顕著である。注目すべきことに、テーブル２ｂおよびテーブル５の最後の行で、入れ子にされたＩＴＥはタイムアウトするが、本発明による方法はタイム・リミット内に分析を完了する。
【０２５１】
実験の第２の１組において、本発明は、性質Ｄ１４およびモデル３ｎ＋１に対して異なるメモリ・サイズを使用した。さらに、テーブル６の第２列に示すように、アドレス・バス幅ＡＷを４ビットから１４ビットまで変化させて、３つの方法の性能とメモリ利用度を比較した。テーブル６の残りの列は、テーブル２〜５と同じ情報を与える。
【０２５２】
第６列および第１０列に示すように、性能改善とメモリ使用の低減は、メモリ・サイズの増加と共にさらに顕著−約２桁−である。さらに、本発明による方法は、入れ子にされたＩＴＥに対して、平均５０％の性能改善と２０％のメモリ使用の低減を示す。
【０２５３】
【表７】
2007524165.tif 000100
【０２５４】
（追加の実験）
提案されたＥＭＭ技術は、試作品検証プラットフォームに実現された。試作品検証プラットフォームは、ＳＡＴベースのＢＭＣおよびＢＤＤベースのモデル検証に対する標準の検証技術を含んでいる。複数の読み取りおよび書き込みポートを持つ埋込みメモリ・モジュールを有する大きな産業用設計とソフトウェア・プログラムから成るいくつかの事例研究についての経験を報告する。２つの事例研究が、多くの到達可能性を有する産業用設計に対応する。他の事例研究は、アルゴリズムの妥当性を検証する性質を有する分類アルゴリズムを含んでいる。性質の各々に対して、埋込みメモリのモデル化が必要であり、事例研究は本発明によるそれぞれに異なる貢献の利用法を強調するように選ばれた。本発明による方法の有効性を示すために、本発明による方法（ＥＭＭと表示する）を、明示的なメモリ・モデリング（明示的なモデリングと表示する）と比較する。実験は、レッド・ハット・リナックス７．２を実行する、４ＧＢを有する２．８ギガヘルツのＸｅｏｎプロセッサを装備したワークステーションで行われた。
【０２５５】
急速ソートについての事例研究  ：  この事例研究は、複数のメモリに対するＥＭＭ、任意の初期状態をモデル化するＥＭＭ、および無関係のメモリ・モジュールを識別するためのＰＢＡを有するＥＭＭを使用する。急速ソート・アルゴリズムは、ＶｅｒｉｌｏｇＨＤＬ（ハードウェア設計言語）を使用して、実行される。このアルゴリズムは、最初に配列の左のパーティションに、次に配列の右のパーティションに再帰的に呼び出される。（注、ピポットが配列を左右のパーティションに分割する）。配列は、１つの読み取りポートと１つの書き込みポートを有するＡＷ＝１０、ＤＷ＝３２のメモリ・モジュールとして実行された。スタックも、（再帰的な関数呼出しのために）１つの読み取りポートと１つの書き込みポートを有するＡＷ＝１０、ＤＷ＝２４のメモリ・モジュールとして実行された。設計は、２００のラッチ（メモリ・レジスタを除く）、５６の入力、および〜９Ｋの２入力ゲートを有する。２つの性質が選択された。ａ）Ｐ１：分類された配列（昇順に）の第１の要素は、第２の要素より大きくはなり得ない。ｂ）Ｐ２：再帰呼出しからの戻りの後に、プログラム・カウンタは、右のパーティションの再帰呼出しの次に進むべきであり、あるいは漸化式スタックの親に戻るべきである。配列は、任意の値から開始することが可能である。このことは、性質の正当性を示すために、任意の初期メモリ状態（数式（６））の正確な取り扱いを必要とする。
【０２５６】
異なる配列の大きさＮに対して、それぞれＢＭＣ−３とＢＭＣ−１における順方向帰納プルーフ・チェックを使用して、ＥＭＭおよび明示的モデリング方法の性能を比較した。各ランに対して、３時間のタイムリミットを用いた。結果をテーブル７に示す。列１は、異なる配列の大きさＮを示す。列２は、性質を示す。列３は、順方向プルーフの直径を示す。列４−５および列６−７は、それぞれ、ＥＭＭおよび明示的なモデリングにより使用されたパフォーマンス・タイムおよびスペースを示す。ＥＭＭを使用すれば所与のタイム・リミット内ですべての性質を検証することが可能であったが、一方明示的なモデリングはタイムアウトすることに注目されたい。
【０２５７】
【表８】
2007524165.tif 000101
【０２５８】
性質Ｐ１は配列とスタックの両方に依存するが、性質Ｐ２は正当性に対してスタックのみに依存することに注目されたい。言い換えれば、Ｐ２に対しては、配列の内容はまったく問題とすべきではない。本発明はこれを検証するためにＰＢＡ技術を使用した。
【０２５９】
性質Ｐ２に対して、ＥＭＭの性能を、ＢＭＣ−３を使用してＰＢＡと比較し、ＢＭＣ−１を使用して明示的なモデリングのＰＢＡのそれと比較した。安定した１組のＬＲを得るために、安定性深度１０を使用した。テーブル８に結果を示す。
【０２６０】
列１は異なる配列の大きさＮを示し、列２−５はＥＭＭに対する性能の数字を示す。具体的にいうと、列２はＰＢＡを有するＥＭＭを使用する縮小モデルの大きさにおけるラッチの数を示す。括弧内の値は、ラッチの元の数を示す。列３は、ＰＢＡに対して、安定したラッチ１組を生成するために要した時間（秒）を示す。列４−５は、順方向帰納プルーフを与えるために、ＥＭＭに対して必要とした時間とメモリを示す。列６−９は、明示的なモデリングに対するこれらの性能数を示す。
【０２６１】
ＰＢＡの使用により、列２の縮小したモデルは、配列を表すメモリ・モジュールの制御論理から何のラッチも有しないことを強調することは興味深い。したがって、本発明は、ＥＭＭを使用して縮小したモデルに対してＢＭＣ分析を行う間に、配列メモリ・モジュールの全部を自動的に除外することが可能である。テーブル７およびテーブル８の列４−５の性質Ｐ２についてのＥＭＭの性能値の比較から明らかなように、これは性能の著しい改善をもたらすことに注目されたい。さらに、縮小モデルについてさえも、本発明は明示的なモデリングに対して数桁の性能改善をしている。Ｎ＝５に対して、明示的なモデリングの場合について、所与のタイム・リミット内では、安定したラッチ・モデルを生成することができなかったことに注目されたい。
【０２６２】
【表９】
2007524165.tif 000102
【０２６３】
（産業用設計Ｉの事例研究）
この事例研究は、複数メモリ帰納プルーフを有するＥＭＭに対するＥＭＭの本発明による方法を利用する。産業用設計は、７５６のラッチ（メモリ・レジスタを除く）、２８の入力、および〜１５Ｋの２入力ゲートを有するローパス画像フィルタである。これは、共にアドレス幅ＡＷ＝１０、データ幅ＤＷ＝８の２つのメモリ・モジュールを有する。各モジュールは、１つの書き込みポートと１つの読み取りポートを有し、メモリ状態は０に初期化されている。２１６の到達可能性がある。
（ＥＭＭ）
約４００秒で、５０Ｍｂを必要として、２１６の性質の中２０６に対して、ウイットネスを発見することが可能であった。すべてのウイットネスに対して最大の深度は５１であった。残りの１０の性質に対して、ＢＭＣ−３を使用して帰納により、１秒以内に、６Ｍｂを必要として、プルーフを得ることが可能であった。任意の初期メモリ状態をモデル化するための新しい変数の導入は、数式（６）の制約条件無しで、検証モデルで余分の行動を収集するが、プルーフに対して十分であったことに注目されたい。
（明示的なモデリング）
すべての２０６の性質に対して、ウイットネスを発見するために、２０５４０秒（〜６時間）と９１２Ｍｂを必要とした。残りの１０の性質に対して、ＢＭＣ−１を使用して帰納により、２５秒で、５０Ｍｂを必要として、プルーフを得ることが可能であった。
（産業用設計ＩＩの事例研究）
この事例研究は、複数のポートを有するメモリに対して、また帰納によるプルーフを支援することができる不変量を発見するために、ＥＭＭを利用する。この設計は、２４００のラッチ（メモリ・レジスタを除く）、１０３の入力、および〜４６Ｋの２入力ゲートを有する。これは、ＡＷ＝１２、ＤＷ＝３２の１つのメモリ・モジュールを有する。メモリ・モジュールは、１つの書き込みポートと３つの読み取りポートを有し、メモリ状態は０に初期化されている。８つの到達可能性がある。
【０２６４】
メモリを完全に除外すれば、すべての性質に対して、深度７において、擬似的なウイットネスが発見された。したがって、メモリ・モジュールを含んでいる必要があった。ＥＭＭを使用すると、深度２００に到るまで１０秒以内に、これらの性質に対して、何等のウイットネスも発見できなかった。次に、すべての深度に対して、不到達可能性のプルーフを得ようと試みた。ＰＢＡと共にＥＭＭを使用して、４−５分を必要として、約１００のラッチにモデルを縮小することが可能であった。しかし、本発明によるＢＤＤベースのモデル・チエッカーあるいはＳＡＴベースのＢＭＣにとって、モデルは、プルーフを得るのに十分小さくはなかった。さらに、ＷＥ（書き込みイネーブル）制御信号は、深度２００の順方向検索でアクティブではない状態のままであることに気付いた。そのことを観察して、メモリ状態が更新されない、すなわち、初期状態から変化しないと仮定した。これは、次のＬＴＬ性質を使用して表現される。
【０２６５】
Ｇ（ＷＥ＝ＯあるいはＷＤ＝Ｏ）
すなわち、常に、書き込みイネーブルがアクティブではない状態であるか、あるいは、書き込みデータ（ＷＤ）が０である。ＢＭＣ−３を使用して、深度２において１秒以内に、逆方向帰納を使用して、上記の性質を証明することが可能であった。これを証明するために、ＢＭＣ−１を使用する明示的なモデリングは、７８秒を要する。
【０２６６】
上記の不変量は、読み取られたデータが常に０であることを意味する。（潜在的に設計バグの恐れがある）。次に、メモリは除外するが、この制約条件を入力読み取りデータ信号に適用した。各性質に対して、２０−３０のラッチのみに設計をさらに縮小するために、ＰＢＡを使用した。（約１分を要する）次に、縮小モデルでは、ＢＭＣ−１で順方向帰納プルーフを使用して、１秒以内に、各性質が到達不能であることを証明した。（本発明によるＢＤＤベースのモデル・チエッカーは、これらの抽象モデルに対して、遷移関係を作ることさえ不可能であった。）
当然ながら、前述の事項は本発明による原理の単なる実例であり、さまざまな修正が本発明の範囲と技術思想から逸脱することなく当業者により行い得ることは、当業者により理解されるであろう。したがって、本発明は、本明細書に添付される特許請求の範囲によってのみ制限されるべきである。
【０２６７】
本出願は、２００４年１月２２日出願の米国仮特許出願第６０／５３８，５２６号による優先権を主張する。さらに、本出願は２００２年５月３０日に出願された「有限モデル検査のための効率的な方法」と題する米国特許出願第１０／１５７，４８６号に関連し、そのすべての内容は参考文献として本明細書に含まれる。
【図面の簡単な説明】
【０２６８】
【図１】埋込みメモリを有する設計の概念図である。
【図２】埋込みメモリを有するロールしない設計の概念図である。
【図３】ＤＰＬＬスタイルＳＡＴソルバーの擬似コード・リストである。
【図４】安全性Ｐに対するＳＡＴベースのＢＭＣの擬似コード・リストである。
【図５】メモリ・アクセス・タイミング図である。
【図６】効率的なメモリ・モデリングを有する改良されたＳＡＴベースのＢＭＣの擬似コード・リストである。
【図７】メモリ制約条件の効率的なモデリングの擬似コードリストである。
【図８】制約条件節の増加の比較を示すグラフである。
【図９】ＰＢＡおよびＥＭＭ制約条件を有するＢＭＣアルゴリズムの擬似コードリストである。
【図１０】本発明者による実施例で使用された埋め込みスタックを有するソフトウェア・プログラムの擬似コードリストである。
【図１１】ＲＡＭを使用するスタックの具体化例の擬似コードリストである。
【符号の説明】
【０２６９】
１００    ディジタル・システム
１１０    メモリモジュール
１２０    メインモジュール
２００    設計
【図１】
2007524165.tif 000103
【図２】
2007524165.tif 000104
【図３】
2007524165.tif 000105
【図４】
2007524165.tif 000106
【図５】
2007524165.tif 000107
【図６】
2007524165.tif 000108
【図７】
2007524165.tif 000109
【図８】
2007524165.tif 000110
【図９】
2007524165.tif 000111
【図１０】
2007524165.tif 000112
【図１１】
2007524165.tif 000113
【国際調査報告】
2007524165.tif 000114