(57)【要約】【課題】動作レベル記述をコンパイルしたオブジェクトコードと動作レベル記述から導出したＲＴレベル記述との等価性を検証する。【解決手段】対応情報１３は、プログラム言語で記述された動作レベル記述１２及びそれから動作合成したＲＴレベル記述１４における等価性の比較の対象とする記述の組の情報とこの組毎の等価性の比較の対象となる信号の組の情報とを指定する。コンパイル情報１６は、動作レベル記述１２とオブジェクトコード１５とのマッピング情報を含む。論理コーン抽出手段２３は、対応情報１３及びコンパイル情報１６を参照して、オブジェクトコード１５から、シンボルシミュレーションを行って、論理コーン１７を抽出する。論理コーン抽出手段２３は、ＲＴレベル記述１４から論理コーン１８を抽出する。論理コーン比較手段２４は、論理コーン１７と論理コーン１８どうしの等価性を検証する。【選択図】　図１
2004038617.tif 000002
【特許請求の範囲】
【請求項１】
プログラム言語で記述された動作レベル記述をコンパイルして得たＣＰＵで実行可能なオブジェクトコードから論理コーンを抽出する第１の論理コーン抽出手段を備えたことを特徴とする論理検証システム。
【請求項２】
ＲＴレベル記述から論理コーンを抽出する第２の論理コーン抽出手段と、前記第１の論理コーン抽出手段で抽出された論理コーンと前記第２の論理コーン抽出手段で抽出された論理コーンとの等価性を検証する論理コーン比較手段とを備えたことを特徴とする請求項１記載の論理検証システム。
【請求項３】
前記第１の論理コーン抽出手段は、シンボルシミュレーション手段を含むことを特徴とする請求項１または２記載の論理検証システム。
【請求項４】
プログラム言語で記述された動作レベル記述をコンパイルして得たオブジェクトコードと、前記動作レベル記述から生成されたＲＴレベル記述と、前記動作レベル記述および前記ＲＴレベル記述における等価性の比較の対象とする記述の組の情報とこの組毎の等価性の比較の対象となる信号の組の情報とを指定する対応情報と、前記動作レベル記述と前記オブジェクトコードとのマッピング情報を含むコンパイル情報とを記憶する記憶手段と、
前記対応情報で指定される前記動作レベル記述の比較の対象となる記述毎に、前記対応情報で指定される比較の対象となる記述および信号に対応する前記オブジェクトコードのコード部分および変数を前記コンパイル情報を参照して決定し、該決定した変数について、初期シンボル値を設定して、前記決定したコード部分の開始点から終了点までシンボルシミュレーションを行い、シンボルシミュレーションで得られた前記変数のシンボルシミュレーション終了時点のシンボル値を前記変数の論理コーンとして抽出する第１の論理コーン抽出手段と、
前記対応情報で指定される前記ＲＴレベル記述の比較の対象となる記述毎に、前記対応情報で指定される比較の対象となる信号毎の論理コーンを抽出する第２の論理コーン抽出手段と、
前記対応情報で指定される前記動作レベル記述と前記ＲＴレベル記述の比較の対象となる記述毎に、前記第１の論理コーン抽出手段で抽出された論理コーンと前記第２の論理コーン抽出手段で抽出された論理コーンとを比較する論理コーン比較手段とを備えたことを特徴とする論理検証システム。
【請求項５】
プログラム言語で記述された動作レベル記述をコンパイルして得たＣＰＵで実行可能なオブジェクトコードから論理コーンを抽出する第１の論理コーン抽出手段と、前記動作レベル記述が満たすべき性質であるプロパティを記憶する手段と、前記第１の論理コーン抽出手段で抽出された論理コーンをもとに、前記オブジェクトコードが前記プロパティを満たしているかどうかを検査するモデル検査手段とを備えたことを特徴とする論理検証システム。
【請求項６】
プログラム記述をコンパイルして得たオブジェクトコードと、前記プログラム記述中の論理コーン抽出範囲および該論理コーン抽出範囲毎の抽出対象信号を指定する対応情報と、前記プログラム記述と前記オブジェクトコードとのマッピング情報を含むコンパイル情報とを入力する入力手段と、
前記対応情報で指定される論理コーン抽出範囲毎に、前記対応情報で指定される論理コーン抽出範囲および抽出対象信号に対応する前記オブジェクトコードのコード部分および変数を前記コンパイル情報を参照して決定し、該決定した変数について、初期シンボル値を設定して、前記決定したコード部分の開始点から終了点までシンボルシミュレーションを行うシンボルシミュレーション手段と、
前記シンボルシミュレーション手段で得られた前記変数のシンボルシミュレーション終了時点のシンボル値を前記変数の論理コーンとして出力する出力手段とを含むことを特徴とする論理コーン抽出装置。
【請求項７】
プログラム言語で記述された動作レベル記述をコンパイルして得たＣＰＵで実行可能なオブジェクトコードから論理コーンを抽出する第１の論理コーン抽出ステップを含むことを特徴とする論理検証方法。
【請求項８】
ＲＴレベル記述から論理コーンを抽出する第２の論理コーン抽出ステップと、前記第１の論理コーン抽出ステップで抽出された論理コーンと前記第２の論理コーン抽出ステップで抽出された論理コーンとの等価性を検証する論理コーン比較ステップとを含むことを特徴とする請求項７記載の論理検証方法。
【請求項９】
前記第１の論理コーン抽出ステップは、シンボルシミュレーションを含むことを特徴とする請求項７または８記載の論理検証方法。
【請求項１０】
プログラム言語で記述された動作レベル記述をコンパイルして得たオブジェクトコードと、前記動作レベル記述から生成されたＲＴレベル記述と、前記動作レベル記述および前記ＲＴレベル記述における等価性の比較の対象とする記述の組の情報とこの組毎の等価性の比較の対象となる信号の組の情報とを指定する対応情報と、前記動作レベル記述と前記オブジェクトコードとのマッピング情報を含むコンパイル情報とを入力する入力ステップと、
前記対応情報で指定される前記動作レベル記述の比較の対象となる記述毎に、前記対応情報で指定される比較の対象となる記述および信号に対応する前記オブジェクトコードのコード部分および変数を前記コンパイル情報を参照して決定し、該決定した変数について、初期シンボル値を設定して、前記決定したコード部分の開始点から終了点までシンボルシミュレーションを行い、シンボルシミュレーションで得られた前記変数のシンボルシミュレーション終了時点のシンボル値を前記変数の論理コーンとして抽出する第１の論理コーン抽出ステップと、
前記対応情報で指定される前記ＲＴレベル記述の比較の対象となる記述毎に、前記対応情報で指定される比較の対象となる信号毎の論理コーンを抽出する第２の論理コーン抽出ステップと、
前記対応情報で指定される前記動作レベル記述と前記ＲＴレベル記述の比較の対象となる記述毎に、前記第１の論理コーン抽出ステップで抽出された論理コーンと前記第２の論理コーン抽出ステップで抽出された論理コーンとを比較する論理コーン比較ステップとを含むことを特徴とする論理検証方法。
【請求項１１】
プログラム言語で記述された動作レベル記述をコンパイルして得たＣＰＵで実行可能なオブジェクトコードから論理コーンを抽出する第１の論理コーン抽出ステップと、前記動作レベル記述が満たすべき性質であるプロパティを入力するステップと、前記第１の論理コーン抽出ステップで抽出された論理コーンをもとに、前記オブジェクトコードが前記プロパティを満たしているかどうかを検査する検査ステップとを含むことを特徴とする論理検証方法。
【請求項１２】
プログラム記述をコンパイルして得たオブジェクトコードと、前記プログラム記述中の論理コーン抽出範囲および該論理コーン抽出範囲毎の抽出対象信号を指定する対応情報と、前記プログラム記述と前記オブジェクトコードとのマッピング情報を含むコンパイル情報とを入力する入力ステップと、前記対応情報で指定される論理コーン抽出範囲毎に、前記対応情報で指定される論理コーン抽出範囲および抽出対象信号に対応する前記オブジェクトコードのコード部分および変数を前記コンパイル情報を参照して決定し、該決定した変数について、初期シンボル値を設定して、前記決定したコード部分の開始点から終了点までシンボルシミュレーションを行うシンボルシミュレーションのステップと、
前記シンボルシミュレーションのステップで得られた前記変数のシンボルシミュレーション終了時点のシンボル値を前記変数の論理コーンとして出力する出力ステップとを含むことを特徴とする論理コーン抽出方法。
【請求項１３】
コンピュータに、プログラム言語で記述された動作レベル記述をコンパイルして得たＣＰＵで実行可能なオブジェクトコードから論理コーンを抽出する第１の論理コーン抽出ステップを実行させる論理検証プログラム。
【請求項１４】
前記コンピュータに、更に、ＲＴレベル記述から論理コーンを抽出する第２の論理コーン抽出ステップと、前記第１の論理コーン抽出ステップで抽出された論理コーンと前記第２の論理コーン抽出ステップで抽出された論理コーンとの等価性を検証する論理コーン比較ステップとを実行させる請求項１３記載の論理検証プログラム。
【請求項１５】
前記第１の論理コーン抽出ステップは、シンボルシミュレーションを含むことを特徴とする請求項１３または１４記載の論理検証プログラム。
【請求項１６】
コンピュータに、
プログラム言語で記述された動作レベル記述をコンパイルして得たオブジェクトコードと、前記動作レベル記述から生成されたＲＴレベル記述と、前記動作レベル記述および前記ＲＴレベル記述における等価性の比較の対象とする記述の組の情報とこの組毎の等価性の比較の対象となる信号の組の情報とを指定する対応情報と、前記動作レベル記述と前記オブジェクトコードとのマッピング情報を含むコンパイル情報とを入力する入力ステップと、
前記対応情報で指定される前記動作レベル記述の比較の対象となる記述毎に、前記対応情報で指定される比較の対象となる記述および信号に対応する前記オブジェクトコードのコード部分および変数を前記コンパイル情報を参照して決定し、該決定した変数について、初期シンボル値を設定して、前記決定したコード部分の開始点から終了点までシンボルシミュレーションを行い、シンボルシミュレーションで得られた前記変数のシンボルシミュレーション終了時点のシンボル値を前記変数の論理コーンとして抽出する第１の論理コーン抽出ステップと、
前記対応情報で指定される前記ＲＴレベル記述の比較の対象となる記述毎に、前記対応情報で指定される比較の対象となる信号毎の論理コーンを抽出する第２の論理コーン抽出ステップと、
前記対応情報で指定される前記動作レベル記述と前記ＲＴレベル記述の比較の対象となる記述毎に、前記第１の論理コーン抽出ステップで抽出された論理コーンと前記第２の論理コーン抽出ステップで抽出された論理コーンとを比較する論理コーン比較ステップとを実行させる論理検証プログラム。
【請求項１７】
コンピュータに、
プログラム言語で記述された動作レベル記述をコンパイルして得たＣＰＵで実行可能なオブジェクトコードから論理コーンを抽出する第１の論理コーン抽出ステップと、
前記動作レベル記述が満たすべき性質であるプロパティを入力するステップと、
前記第１の論理コーン抽出ステップで抽出された論理コーンをもとに、前記オブジェクトコードが前記プロパティを満たしているかどうかを検査する検査ステップとを実行させる論理検証プログラム。
【請求項１８】
コンピュータに、
プログラム記述をコンパイルして得たオブジェクトコードと、前記プログラム記述中の論理コーン抽出範囲および該論理コーン抽出範囲毎の抽出対象信号を指定する対応情報と、前記プログラム記述と前記オブジェクトコードとのマッピング情報を含むコンパイル情報とを入力する入力ステップと、
前記対応情報で指定される論理コーン抽出範囲毎に、前記対応情報で指定される論理コーン抽出範囲および抽出対象信号に対応する前記オブジェクトコードのコード部分および変数を前記コンパイル情報を参照して決定し、該決定した変数について、初期シンボル値を設定して、前記決定したコード部分の開始点から終了点までシンボルシミュレーションを行うシンボルシミュレーションのステップと、
前記シンボルシミュレーションのステップで得られた前記変数のシンボルシミュレーション終了時点のシンボル値を前記変数の論理コーンとして出力する出力ステップとを実行させる論理コーン抽出プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は論理回路の設計段階における論理検証に関し、特にＣＰＵで実行可能なプログラム言語で記述された論理回路を対象とした論理検証技術に関する。
【０００２】
【従来の技術】
一般に、ＬＳＩもしくはＶＬＳＩの設計にあたっては、設計を自動的に行う、もしくは設計を支援するＬＳＩ設計自動化・支援技術が採用されている。このＬＳＩ設計自動化・支援技術を採用した設計のうち、代表的なものとしては、各種ＥＤＡ（ｅｌｅｃｔｒｏｎｉｃ　ｄｅｓｉｇｎ　ａｕｔｏｍａｔｉｏｎ）　ツールを利用したトップダウン設計があげられる。この種のトップダウン設計は、その上流工程から、システム設計、機能設計、論理設計、レイアウト設計と大別することができる。このトップダウン設計について図１９を参照しながら以下説明する。
【０００３】
まず、システムの仕様作成として、ＬＳＩ全体をシステムと捉え、その動作を記述することが行われる。このようにして作成された記述は、動作レベル記述１２と呼ばれる。この動作レベル記述１２の作成は、たとえば、自然言語、もしくはＶＨＤＬ、Ｖｅｒｉｌｏｇ−ＨＤＬといったハードウェア記述言語ＨＤＬ（ｈａｒｄｗａｒｅ　ｄｅｓｃｒｉｐｔｉｏｎ　ｌａｎｇｕａｇｅ）、もしくは、Ｃ言語、Ｃ＋＋言語、ｊａｖａ言語などのプログラム言語を用いてなされる。また、ＳｙｓｔｅｍＣ、ＳｐｅｃＣなどといった、Ｃ言語またはＣ＋＋言語に回路を表現するために便利な特徴を付加したプログラム言語を持ってなされることもある。
【０００４】
次に、動作合成フェーズにおいて、作成された動作レベル記述１２がＲＴレベル（ｒｅｇｉｓｔｅｒ　ｔｒａｎｓｆｅｒ　ｌｅｖｅｌ）記述１４に変換される。ＲＴレベル記述１４は、通常ＨＤＬもしくはプログラム言語を用いてなされる。なお、従来、このフェーズに関しては、人手により置き換えられ、ＨＤＬを用いて、直接、ＲＴレベル記述１４を作成する場合が多かった。
【０００５】
次いで、論理合成フェーズにおいて、ＲＴレベル記述１４が、ゲートレベル記述（ゲートレベル論理回路：ネットリスト）１Ｄに自動変換される。このようにして生成されたネットリストをもとに、レイアウト設計が行われ、ついで、チップ設計が行われる。
【０００６】
ＬＳＩ設計では、上記のステップによってなされた設計の正当性を調べる設計検証も重要である。設計検証には、たとえば、各合成フェーズの変換が正しいかを検証する等価性検証と、各記述が設計対象を正しく表現しているかを検証する仕様検証とがある。
【０００７】
等価検証には、従来シミュレーションによる等価検証もしくは形式的等価性検証が用いられる。
【０００８】
シミュレーションによる等価検証は、比較対象とする２つの記述に対して、同一のテストパターンを与えてシミュレーションを行い、その結果が所望の結果と一致するかを確認するものである。シミュレーションは、ＲＴレベル記述１４のように記述がＨＤＬで表現されているときは専用のシミュレータを用いて行われる。これに対して、動作レベル記述１２のように記述がプログラム言語で表現されているときは、たとえばコンパイラを用いてＣＰＵで実行可能な形式（オブジェクトコードとよばれる）に変換された後、得られたオブジェクトコード１５をＣＰＵで直接実行して行われる。
【０００９】
形式的等価検証は、２つの組み合わせ回路の論理が等価であるか否かを数学的手法により検証するものである。一般的な、ＲＴレベル記述１４とゲートレベル記述１Ｄの等価性を検査する形式的等価性検証装置の構成を示すブロック図が図２０に例示される。
【００１０】
図２０を参照すると、１４はＲＴレベル記述、１Ｄがゲートレベル記述である。１３は両レベルにおいて比較対象となる信号の対応関係を記述した対応情報である。比較対象となる信号は、プライマリ入力、プライマリ出力、レジスタ、その他設計者によって指定される内部端子である。２３はＲＴレベル記述、ゲートレベル記述から、それぞれ論理コーンを抽出する論理コーン抽出手段である。論理コーンとは、信号の論理を決定するために必要な組み合わせ回路のことであり、ブール式で表現される。論理コーンの抽出は、たとえば、文献１：Ｍａｌｉｋ，Ｓ．ｅｔ．ａｌ，　“Ｌｏｇｉｃ　Ｖｅｒｉｆｉｃａｔｉｏｎ　Ｕｓｉｇｎ　Ｂｉｎａｒｙ　Ｄｅｃｉｓｉｏｎ　Ｄｉａｇｒｍａｓ　ｉｎ　ａ　Ｌｏｇｉｃ　Ｓｙｎｔｈｅｓｉｓ　Ｅｎｖｉｒｏｎｍｅｎｔ”，　Ｐｒｏｃｅｅｄｉｎｇｓ　ｏｆ　ＩＥＥＥ　Ｉｎｔｅｒｎａｔｉｏｎａｌ　Ｃｏｎｆｅｒｅｎｃｅ　ｏｎ　Ｃｏｍｐｕｔｅｒ−Ａｉｄｅｄ　Ｄｅｓｉｇｎ，　ｐｐ．６−９，１９８８，に示される方法を用いる。具体的には、注目する変数から入力方向に組み合わせ回路をたどることにより得られる。１８、１Ｅは、それぞれ抽出された論理コーンである。２４は、対応する比較対象信号の論理コーンを表現するブール式の論理的な同一性を調べる論理コーン比較手段である。ＲＴレベル記述１４とゲートレベル記述１Ｄで、対応するすべての比較対象信号の論理コーンが論理的に同一であるとき、２つの記述は論理的に等価であると判定し、出力装置３に出力する。
【００１１】
図２０と同様にＲＴレベル記述１４とゲートレベル記述１Ｄの等価性を検査する形式的等価性検証装置については特開平８−２２４８５号公報にも記載されている。
【００１２】
仕様検証にも、等価検証と同様に、シミュレーションもしくは形式的手法によるプロパティ検証という技術が知られている。シミュレーションによる仕様検証は、比較対象とする記述に対して、テストパターンを与えてシミュレーションを行い、その結果を解析することにより、回路が所望の機能を有しているかを調べる。形式的手法によるプロパティ検証は、与えられた記述が望ましい性質を満足するかを、静的かつ数学的に検査する方法である。形式的プロパティ検証は、文献２：Ｅｄｍｕｎｄ　Ｍ．Ｃｌａｒｋｅ，ｅｔ．ａｌ．　“Ｍｏｄｅｌ　Ｃｈｅｃｋｉｎｇ”，　ｐｐ６１−７４，　Ｔｈｅ　ＭＩＴ　Ｐｒｅｓｓ，　１９９９に参照される。一般的な、ＲＴレベル記述１４が与えられた性質を満たしていることを検証する形式的プロパティ検証装置の構成を示すブロック図が図２１に例示される。
【００１３】
図２１を参照すると、１４はＲＴレベル記述、１Ｃは回路が満たすべき性質であるプロパティである。プロパティには、たとえば、「回路がデッドロックを起こさない」、「リクエスト信号が入力されたら一定サイクル以内に応答を返す」といった性質が記述される。論理コーン抽出手段２３は、ＲＴレベル記述１４から論理コーン１８を抽出する。モデル検査手段２５は、論理コーン１８をもとに、回路がとりうる信号の値の組み合わせ（状態と呼ぶ）の集合を順に列挙する。回路がとりうるすべての状態の集合を列挙したところで、これらの集合が与えられたプロパティを満たしているかのチェックを行う。
【００１４】
形式的検証によるプロパティ検証は、シミュレーションに必要なテストデータを必要とせず、また、与えられたプロパティを満たすか否かを完全に検証することが可能であるという特徴を有する。
【００１５】
【発明が解決しようとする課題】
近年のＬＳＩの高集積化・大規模化に伴い、ＬＳＩを構成するゲート数は、数百万になることも珍しくなくなってきており、設計した回路が意図した機能を有するかを検証する仕様検証をいかに高速に行うかということが重要になってきている。
【００１６】
仕様検証において、従来より一般的に行われているのはシミュレーションによる仕様検証であるが、回路が大規模化するにしたがって、ＲＴレベル記述１４上でのシミュレーションに多くの時間がかかるようになってきている。これに対して、動作レベルにおける仕様検証は抽象度が高く高速であるという傾向がある。また、プログラム言語で用意された豊富なライブラリを用いてシミュレーションを行うことができる。そのため、特に、図１９に示したように、動作レベル記述１２をプログラム言語記述で表現し、コンパイラを用いてＣＰＵで実行可能なオブジェクトコード１５に変換した後、オブジェクトコード１５をＣＰＵで直接実行して、高速なシミュレーションを実行することが多く行われている。さらに、動作合成フェーズによって、このプログラム言語で表現された動作レベル記述１２からＲＴレベル記述１４に自動で変換するということが行われている。
【００１７】
この合成を行うためのツールの実態は、一般に、ソフトウェアで構成される。しかしながら、それらはソフトウェアである以上必ずしもバグがないとはいえず、各合成段階においては、適切な合成がなされたか否かの検証をする必要がある。
【００１８】
従来、最も一般的に行われていた動作合成フェーズにおける正当性の検証は、所定のテストパターンを用いて行われるシミュレーションであったが、このシミュレーションは以下のような問題を含んでいた。
【００１９】
すなわち、テストパターンを用いて行われるシミュレーションを実行するためには、当然ながら、テストパターンの生成を行わなければならず、そのために時間およびコストがかかるといった問題があった。しかも、そのシミュレーションを実行することにより検証できる合成の内容は、テストパターンに依存しており、使用したテストパターンにて考慮されていないエラーを検証することはできない。従って、従来のシミュレーションによる等価検証では、満足する結果を得られない恐れもあった。さらに、動作レベルとＲＴレベルの二つのレベルでシミュレーションを繰り返すことは、検証の高速化を目指して動作合成を導入した目的に反するものである。
【００２０】
また、動作合成において動作レベル記述１２から生成されたＲＴレベル記述１４の正当性を検証する他の手法としては、たとえば動作レベル記述１２との形式的等価性検証によってＲＴレベル記述１４の正当性を検証するものも研究されている。
【００２１】
たとえば、動作合成の検証装置の一例が、文献３：「２０００年、フォーマルメソッド・イン・システムデザイン、第１６号、５９−９１頁（Ｆｏｒｍａｌ　Ｍｅｔｈｏｄｓ　ｉｎ　Ｓｙｓｔｅｍ　Ｄｅｓｉｇｎ，　Ｎｏ．　１６，　ｐｐ．５９−９１，　２０００）　」に記載されている。
【００２２】
この文献３に記載された動作合成の検証装置は、動作レベル記述およびＲＴレベル記述、そして動作合成の副産物である対応関係から、ＰＶＳという定理証明システムのための、１）形式仕様記述、２）等価性条件（ｃｏｒｒｅｃｔｎｅｓｓ　ｌｅｍｍａｓ），　３）検証スクリプトを出力する。等価性条件とは、動作レベル記述およびＲＴレベル記述の分岐・合流構造を含まない基本ブロック（ｂａｓｉｃ　ｂｌｏｃｋ）毎に実行パス（状態の系列）を抽出し、実行パスの対応関係と信号の対応関係が与えられたときに、各対応するパス毎に対応する信号値の変化が同じであることを表す論理式のことである。ＰＶＳは検証スクリプトにしたがって、各パスを実行したときの各信号値の変化を表す関数を項書換えを用いて生成する。そして、対応するパスにおける対応する信号ペアに対して、その変化を表す関数が等価であることを調べる。全ての対応するパスのペア、全ての対応する信号値のペアに対して、その変化を表す関数が等価であることをしめすことにより、動作レベル記述とＲＴレベル記述が等価であることを検査する。
【００２３】
また、動作合成の検証装置の別の一例が、文献４：「１９９９年、インターナショナルカンファレンスオンコンピュータデザイン、４５８−４６６頁（Ｉｎｔｅｒｎａｔｉｏｎａｌ　Ｃｏｎｆｅｒｅｎｃｅ　ｏｎ　Ｃｏｍｐｕｔｅｒ　Ｄｅｓｉｇｎ，　ｐｐ．　４５８−４６６，　１９９９　）」に記載されている。
【００２４】
この文献４に記載された動作合成の検証装置は、実行パスを抽出し、実行パスの対応関係と信号の対応関係が与えられたときに、各パスを実行したときの各信号値の変化を表す関数を生成して、対応するパスの対応する信号に対してこの関数が等価であることを調べるのは前出の文献３と同じであるが、抽出する実行パスが基本ブロックに制限されない。もとの動作レベル記述の繰り返し構造（ループ構造）に対して、ＲＴレベル記述に対応する実行パスが見つかるまでループを展開しながら実行パスを抽出する。また、信号値の変化を表す関数の生成は、項書換えではなく、シンボルシミュレーションという技術を用いる。
【００２５】
従来は、上述した手法を用いて、専ら、動作レベル記述１２とＲＴレベル記述１４の等価性を検証しており、動作レベル記述１２をコンパイルして得たオブジェクトコード１５とＲＴレベル記述１４の等価性の検証については重要視されていなかった。
【００２６】
このため、動作レベル記述１２をオブジェクトコード１５に変換してＣＰＵ上で実行したときの実行結果と、動作レベル記述１２から実際に設計して得られた回路が動作して得られる実行結果とが完全に一致することを保証することができない恐れがあった。すなわち、プログラム言語の多くはコンパイル時にリンクされるライブラリにより言語の意味づけを変更可能であるため、動作レベル記述１２とそれからコンパイルされたオブジェクトコード１５とが等価である保証は必ずしもない。また、動作レベル記述１２をＣＰＵで実行可能な形式に変換するコンパイラもソフトウェアで構成される以上、必ずしもバグがないとはいえず、それが原因で動作レベル記述１２とオブジェクトコード１５とが等価にならない場合もある。若し、動作レベル記述１２とオブジェクトコード１５とが等価でないとすると、動作レベル記述１２から導出されたＲＴレベル記述１４もオブジェクトコード１５と等価でないことになり、オブジェクトコード１５の実行によりその動作の正しさが確認されても、ＲＴレベル記述１４の動作も正しいものと判断することはできない。このため、動作合成フェーズにおいて動作確認が正しく行われていない状況で次の論理合成フェーズに進んでしまう過ちを犯してしまうことになる。
【００２７】
そこで、動作レベル記述１２をコンパイルして得たオブジェクトコード１５をＣＰＵで実行したときの実行結果と、動作合成の結果得られる回路が動作したときの実行結果が完全に一致することを保証できる論理検証システムが望まれる。
【００２８】
また、動作レベル記述１２において形式的プロパティ検証を行いたいという要求もある。この場合、形式的プロパティ検証はシミュレーションと補完する関係にあるため、ＣＰＵで実行される動作に対する検証、つまりオブジェクトコード１５に対する検証を行えることが望ましい。
【００２９】
また、これらの論理検証を論理コーンを用いて実現するためには、ＨＤＬ記述やゲートレベル記述から論理コーンを抽出する従来の論理コーン抽出技術が使えないため、ＣＰＵで実行可能な形式であるオブジェクトコードから論理コーンを抽出する技術が必要である。
【００３０】
【発明の目的】
本発明の目的は、動作レベル記述をコンパイルして得たオブジェクトコードと前記動作レベル記述から導出したＲＴレベル記述との等価性を検証し得るようにすることで、動作レベル記述をＣＰＵで実行したときの実行結果と、動作合成の結果得られる回路が動作したときの実行結果が完全に一致することを保証できる論理検証システム及び方法を提供することにある。
【００３１】
また本発明の別の目的は、動作レベル記述をＣＰＵで実行したときの動作に対する、形式的プロパティ検証システムおよび方法を提供することにある。
【００３２】
また本発明の他の目的は、オブジェクトコードから論理コーンを抽出する論理コーン抽出装置および方法を提供することにある。
【００３３】
【課題を解決するための手段】
本発明の論理検証システムは、プログラム言語で記述された動作レベル記述をコンパイルして得たＣＰＵで実行可能なオブジェクトコードから論理コーンを抽出する第１の論理コーン抽出手段を備えることを基本とする。そして、ＲＴレベル記述との論理検証に対して本発明を適用する場合、更に、ＲＴレベル記述から論理コーンを抽出する第２の論理コーン抽出手段と、前記第１の論理コーン抽出手段で抽出された論理コーンと前記第２の論理コーン抽出手段で抽出された論理コーンとの等価性を検証する論理コーン比較手段とを備える。ここで、前記第１の論理コーン抽出手段は、シンボルシミュレーション手段を含んでいて良い。
【００３４】
より具体的には、本発明の第１の論理検証システムは、プログラム言語で記述された動作レベル記述をコンパイルして得たオブジェクトコードと、前記動作レベル記述から生成されたＲＴレベル記述と、前記動作レベル記述および前記ＲＴレベル記述における等価性の比較の対象とする記述の組の情報とこの組毎の等価性の比較の対象となる信号の組の情報とを指定する対応情報と、前記動作レベル記述と前記オブジェクトコードとのマッピング情報を含むコンパイル情報とを記憶する記憶手段と、前記対応情報で指定される前記動作レベル記述の比較の対象となる記述毎に、前記対応情報で指定される比較の対象となる記述および信号に対応する前記オブジェクトコードのコード部分および変数を前記コンパイル情報を参照して決定し、該決定した変数について、初期シンボル値を設定して、前記決定したコード部分の開始点から終了点までシンボルシミュレーションを行い、シンボルシミュレーションで得られた前記変数のシンボルシミュレーション終了時点のシンボル値を前記変数の論理コーンとして抽出する第１の論理コーン抽出手段と、前記対応情報で指定される前記ＲＴレベル記述の比較の対象となる記述毎に、前記対応情報で指定される比較の対象となる信号毎の論理コーンを抽出する第２の論理コーン抽出手段と、前記対応情報で指定される前記動作レベル記述と前記ＲＴレベル記述の比較の対象となる記述毎に、前記第１の論理コーン抽出手段で抽出された論理コーンと前記第２の論理コーン抽出手段で抽出された論理コーンとを比較する論理コーン比較手段とを備えている。
【００３５】
また本発明の第２の論理検証システムは、プログラム言語で記述された動作レベル記述をコンパイルして得たＣＰＵで実行可能なオブジェクトコードから論理コーンを抽出する第１の論理コーン抽出手段と、前記動作レベル記述が満たすべき性質であるプロパティを記憶する手段と、前記第１の論理コーン抽出手段で抽出された論理コーンをもとに、前記オブジェクトコードが前記プロパティを満たしているかどうかを検査するモデル検査手段とを備えている。
【００３６】
また本発明の論理コーン抽出装置は、プログラム記述をコンパイルして得たオブジェクトコードと、前記プログラム記述中の論理コーン抽出範囲および該論理コーン抽出範囲毎の抽出対象信号を指定する対応情報と、前記プログラム記述と前記オブジェクトコードとのマッピング情報を含むコンパイル情報とを入力する入力手段と、前記対応情報で指定される論理コーン抽出範囲毎に、前記対応情報で指定される論理コーン抽出範囲および抽出対象信号に対応する前記オブジェクトコードのコード部分および変数を前記コンパイル情報を参照して決定し、該決定した変数について、初期シンボル値を設定して、前記決定したコード部分の開始点から終了点までシンボルシミュレーションを行うシンボルシミュレーション手段と、前記シンボルシミュレーション手段で得られた前記変数のシンボルシミュレーション終了時点のシンボル値を前記変数の論理コーンとして出力する出力手段とを含んで構成される。
【００３７】
また本発明の論理検証方法は、プログラム言語で記述された動作レベル記述をコンパイルして得たＣＰＵで実行可能なオブジェクトコードから論理コーンを抽出する第１の論理コーン抽出ステップを含むことを基本とする。そして、ＲＴレベル記述との論理検証に対して本発明を適用する場合、更に、ＲＴレベル記述から論理コーンを抽出する第２の論理コーン抽出ステップと、前記第１の論理コーン抽出ステップで抽出された論理コーンと前記第２の論理コーン抽出ステップで抽出された論理コーンどうしの等価性を検証する論理コーン比較ステップとを含むように構成される。ここで、前記第１の論理コーン抽出ステップは、シンボルシミュレーションを含むものであって良い。
【００３８】
より具体的には、本発明の第１の論理検証方法は、プログラム言語で記述された動作レベル記述をコンパイルして得たオブジェクトコードと、前記動作レベル記述から生成されたＲＴレベル記述と、前記動作レベル記述および前記ＲＴレベル記述における等価性の比較の対象とする記述の組の情報とこの組毎の等価性の比較の対象となる信号の組の情報とを指定する対応情報と、前記動作レベル記述と前記オブジェクトコードとのマッピング情報を含むコンパイル情報とを入力する入力ステップと、前記対応情報で指定される前記動作レベル記述の比較の対象となる記述毎に、前記対応情報で指定される比較の対象となる記述および信号に対応する前記オブジェクトコードのコード部分および変数を前記コンパイル情報を参照して決定し、該決定した変数について、初期シンボル値を設定して、前記決定したコード部分の開始点から終了点までシンボルシミュレーションを行い、シンボルシミュレーションで得られた前記変数のシンボルシミュレーション終了時点のシンボル値を前記変数の論理コーンとして抽出する第１の論理コーン抽出ステップと、前記対応情報で指定される前記ＲＴレベル記述の比較の対象となる記述毎に、前記対応情報で指定される比較の対象となる信号毎の論理コーンを抽出する第２の論理コーン抽出ステップと、前記対応情報で指定される前記動作レベル記述と前記ＲＴレベル記述の比較の対象となる記述毎に、前記第１の論理コーン抽出ステップで抽出された論理コーンと前記第２の論理コーン抽出ステップで抽出された論理コーンとを比較する論理コーン比較ステップとを含んで構成される。
【００３９】
また本発明の第２の論理検証方法は、プログラム言語で記述された動作レベル記述をコンパイルして得たＣＰＵで実行可能なオブジェクトコードから論理コーンを抽出する第１の論理コーン抽出ステップと、前記動作レベル記述が満たすべき性質であるプロパティを入力するステップと、前記第１の論理コーン抽出ステップで抽出された論理コーンをもとに、前記オブジェクトコードが前記プロパティを満たしているかどうかを検査する検査ステップとを含んで構成される。
【００４０】
また本発明の論理コーン抽出方法は、プログラム記述をコンパイルして得たオブジェクトコードと、前記プログラム記述中の論理コーン抽出範囲および該論理コーン抽出範囲毎の抽出対象信号を指定する対応情報と、前記プログラム記述と前記オブジェクトコードとのマッピング情報を含むコンパイル情報とを入力する入力ステップと、前記対応情報で指定される論理コーン抽出範囲毎に、前記対応情報で指定される論理コーン抽出範囲および抽出対象信号に対応する前記オブジェクトコードのコード部分および変数を前記コンパイル情報を参照して決定し、該決定した変数について、初期シンボル値を設定して、前記決定したコード部分の開始点から終了点までシンボルシミュレーションを行うシンボルシミュレーションのステップと、前記シンボルシミュレーションのステップで得られた前記変数のシンボルシミュレーション終了時点のシンボル値を前記変数の論理コーンとして出力する出力ステップとを含んで構成される。
【００４１】
【作用】
本発明の第１の論理検証システムおよび方法にあっては、ＣＰＵで直接実行されるオブジェクトコードから、論理等価性検証に必要な論理コーンを抽出することにより、プログラム記述言語を用いて記述された動作レベル記述からコンパイルされて得られたオブジェクトコードとＲＴレベル記述との等価性を検証することができる。これにより、動作レベル記述をＣＰＵで実行したときの実行結果と、動作合成の結果得られる回路が動作したときの実行結果が完全に一致することを保証できるような論理検証が可能となる。
【００４２】
本発明の第２の論理検証システムおよび方法にあっては、ＣＰＵで直接実行されるオブジェクトコードから、論理等価性検証に必要な論理コーンを抽出することにより、ＣＰＵで実行される動作に対する形式的プロパティ検証が可能となる。
【００４３】
本発明の論理コーン抽出装置および方法にあっては、プログラム記述中の論理コーン抽出範囲および該論理コーン抽出範囲毎の抽出対象信号を指定する対応情報と、前記プログラム記述と前記オブジェクトコードとのマッピング情報を含むコンパイル情報とに基づいて、前記プログラム記述をコンパイルして得たオブジェクトコードから、前記対応情報で指定した論理コーン抽出範囲毎に、前記対応情報で指定した抽出対象信号に対応する前記オブジェクトコードの変数毎の論理コーンを自動的に抽出することができる。
【００４４】
【発明の実施の形態】
次に、本発明の実施の形態について図面を参照して詳細に説明する。
【００４５】
図１を参照すると、本発明の第１の実施の形態は、情報を記憶する記憶装置１と、プログラム制御により動作するデータ処理装置２と、ディスプレイ装置や印刷装置等の出力装置３を含む。
【００４６】
データ処理装置２は、コンパイラ２１と、オブジェクトコード論理コーン抽出手段２２と、ＨＤＬ論理コーン抽出手段２３と、論理コーン比較手段２４とを含む。
【００４７】
記憶装置１は、コンパイルライブラリ１１と、プログラム言語で表現された動作レベル記述１２と、対応情報１３と、ＨＤＬで表現されたＲＴレベル記述１４とをあらかじめ記憶している。
【００４８】
動作レベル記述１２は一般に人手により記述される。その記述言語は、たとえば、Ｃ言語、Ｃ＋＋言語、ｊａｖａ言語、ＳｙｓｔｅｍＣ、ＳｐｅｃＣなどである。コンパイルライブラリ１１は、動作レベル記述１２をオブジェクトコードにコンパイルしてＣＰＵで動作させるために必要になるライブラリであり、たとえば、ＳｙｓｔｅｍＣなどの標準ライブラリであったり、設計者により作成されたり、コンパイラメーカにより供給される。
【００４９】
ＲＴレベル記述１４は、たとえば、動作合成フェーズにより作成されるものであり、たとえば、動作合成システムに動作レベル記述１２を与えることで得られる。あるいは、たとえば、動作レベル記述１２から人手により変換されるものである。
【００５０】
対応情報１３は、動作合成フェーズにおいて、動作レベル記述１２をＲＴレベル記述１４に変換する際に、動作合成システムもしくは、設計者によって与えられる。対応情報１３は、等価性の比較の対象とする記述の組の情報と、この組毎の等価性の比較の対象となる信号の組の情報とを備えている。比較の対象とする記述の組の情報とは、動作レベル記述１２の一部（もしくは全部）を特定する情報と、この動作レベル記述１２の一部（もしくは全部）から合成されるＲＴレベル記述１４の一部（もしくは全部）を特定する情報である。たとえば、動作レベル記述１２が一クロックサイクルの動作を順に記載している場合は、この一クロックサイクルの動作部分のそれぞれに対して、この記述から合成されるＲＴレベル記述１４の一部分が組の情報を備える。
【００５１】
この点を図１８を参照して説明すると、動作レベル記述１２に含まれる或る記述Ａとその記述Ａに対応するＲＴレベル記述１４の記述Ｂとを比較の対象とする場合、対応情報１３には、記述Ａを特定する情報と記述Ｂを特定する情報との組（Ａ：Ｂ）が設定される。また、記述Ａに信号ａ１、ａ２、記述Ｂに信号ｂ１、ｂ２がそれぞれあり、ａ１とｂ１、ａ２とｂ２、をそれぞれ比較の対象とする場合、対応情報１３には、記述Ａと記述Ｂとの組の情報（Ａ：Ｂ）に対応して、信号ａ１と信号ｂ１との対応情報（ａ１：ｂ１）、信号ａ２と信号ｂ２との対応情報（ａ２：ｂ２）が設定される。なお、検証の精度を確保するためには、等価性の比較の対象とする記述の組、その組の等価性の比較の対象となる信号の組、それぞれを網羅的に対応情報１３に記述しておくことが望まれる。
【００５２】
コンパイラ２１は、コンパイルライブラリ１１と動作レベル記述１２からＣＰＵで実行可能なオブジェクトコード１５およびコンパイル情報１６を生成し、記憶装置１に記憶する。コンパイル情報１６は、たとえば、ＥＬＦ（ｅｘｅｃｕｔａｂｌｅ　ａｎｄ　ｌｉｎｋｉｎｇ　ｆｏｒｍａｔ）といった、標準フォーマットで提供される。ここで、コンパイル情報１６には、動作レベル記述１２とオブジェクトコード１５とのマッピング情報が含まれる。このマッピング情報により、動作レベル記述１２のどの記述部分が、オブジェクトコード１５のどのコード部分に対応しているか、動作レベル記述１２のどの信号が、オブジェクトコード１５のどの変数に対応しているか、が指示される。
【００５３】
この点を図１８を参照して説明すると、動作レベル記述１２の記述Ａがオブジェクトコード１５上のオブジェクトコード部分Ｃに対応する場合、コンパイル情報１６には、記述Ａがオブジェクトコード部分Ｃ１に対応する旨の情報（Ａ：Ｃ）が含まれる。また、記述Ａの信号ａ１がオブジェクトコード１５上では変数ｃ１で表現され、記述Ａの信号ａ２がオブジェクトコード１５上では変数ｃ２で表現される場合、信号ａ１と変数ｃ１の対応情報（ａ１：ｃ１）、信号ａ２と変数ｃ２の対応情報（ａ２：ｃ２）がコンパイル情報１６によって示される。
【００５４】
オブジェクトコード論理コーン抽出手段２２は、記憶装置１に記憶されたオブジェクトコード１５およびコンパイル情報１６を読み込み、対応情報１３で比較の対象とされた記述毎に、その記述内の比較の対象とされた信号に対応する変数毎の論理コーン（動作レベル論理コーン１７）を抽出する。抽出された動作レベル論理コーン１７は記憶装置１に記憶する。
【００５５】
この点を図１８を参照して説明すると、オブジェクトコード論理コーン抽出手段２２は、対応情報１３を参照して、記述Ａが比較の対象となる記述の１つであり、この記述Ａ中の信号ａ１、ａ２が比較の対象となる信号であることを認識し、コンパイル情報１６を参照して、記述Ａに対応するオブジェクトコード部分がＣであり、信号ａ１、ａ２に対応する変数がｃ１、ｃ２であることを認識する。そして、オブジェクトコード部分Ｃに関して、後述するようにシンボルシミュレーションを行って、変数ｃ１の論理コーンと変数ｃ２の論理コーンとを抽出し、記憶装置１に記憶する。
【００５６】
ＨＤＬ記述論理コーン抽出手段２３は、記憶装置１に記憶されたＲＴレベル記述１４を読み込み、対応情報１３で比較の対象とされた信号の論理コーン（ＲＴレベル論理コーン１８）を抽出する。抽出されたＲＴレベル論理コーン１８は記憶装置１に記憶する。
【００５７】
この点を図１８を参照して説明すると、ＨＤＬ記述論理コーン抽出手段２３は、対応情報１３を参照して、記述Ｂが比較の対象となる記述の１つであり、この記述中の信号ｂ１、ｂ２が比較の対象となる信号であることを認識し、ＲＴレベル記述１４から従来と同様にして信号ｂ１の論理コーンと信号ｂ２の論理コーンとを抽出し、記憶装置１に記憶する。
【００５８】
論理コーン比較手段２４は、記憶装置１に記憶された対応情報１３で示される比較の対象となる記述の組毎に、その組の記述に含まれる比較対象信号の組を選択し、記憶装置１からこの信号の論理コーン１７、１８をそれぞれ取り出して、双方の論理コーン１７、１８が論理的に等価であることを判定する。そして、判定結果を出力装置３から出力する。
【００５９】
この点を図１８を参照して説明すると、論理コーン比較手段２４は、対応情報１３を参照して、動作レベル記述１２の記述ＡとＲＴレベル記述１４の記述Ｂとの組が比較の対象となる記述の組の１つであること、その組の記述Ａ、Ｂに含まれる信号ａ１と信号ｂ１、信号ａ２と信号ｂ２とがそれぞれ比較対象信号の組であることをそれぞれ認識する。また、コンパイル情報１６を参照して、動作レベル記述１２の記述Ａがオブジェクトコード１５のＣに対応し、信号ａ１、ａ２が変数ｃ１、ｃ２に対応することを認識する。そして、記憶装置１から、変数ｃ１の論理コーンと信号ｂ１の論理コーンとを取り出し、双方の論理コーンが論理的に等価であるかどうかを判定する。また、記憶装置１から、変数ｃ２の論理コーンと信号ｂ２の論理コーンとを取り出し、双方の論理コーンが論理的に等価であるかどうかを判定する。
【００６０】
次に、各図を参照して本実施の形態の動作について詳細に説明する。
【００６１】
図２において、ステップＡ１では、動作レベル記述１２よりコンパイルして得たオブジェクトコード１５から、比較対象信号の論理コーン１７を抽出する。このステップＡ１の詳細は後述する。ステップＡ２では、ＲＴレベル記述１４から、比較対象信号の論理コーン１８を抽出する。論理コーンは、対応情報１３に記述された「比較対象とする記述の組」毎に「比較対象とする信号の組」それぞれについて一組ずつ抽出され、これが比較単位となる。
【００６２】
ステップＡ３では、対応する比較対象信号の論理等価性を比較する。かかるステップを比較単位の分だけ繰り返す。すべての比較対象信号について等価であることが示されたとき、オブジェクトコード１５とＲＴレベル記述１４は等価であると結論づけられる。
【００６３】
図３を参照すると、ステップＡ１の詳細が示されている。
【００６４】
ステップＡ１１では、動作レベル記述１２をコンパイラ２１によってＣＰＵ上で実行可能なオブジェクトコード１５にコンパイルする。なお、既にコンパイルされたオブジェクトコード１５が存在する場合には、このステップＡ１１は省略してよい。
【００６５】
ステップＡ１２では、コンパイルされたオブジェクトコード１５上で、シンボルシミュレーションを行い、比較対象信号の論理コーン１７を抽出する。
【００６６】
図４を参照すると、ステップＡ１２の詳細が示されている。
【００６７】
ステップＡ１２１では、オブジェクトコード１５上にシンボルシミュレーションの開始点を見つける。シンボルシミュレーションの開始点は、対応情報１３およびコンパイル情報１６を参照して決定される。具体的には、対応情報１３に記述されている「比較の対象とする記述の組」から、動作レベル記述１２の一部分が指定される。コンパイル情報１６からこの部分記述の開始点に対応するオブジェクトコード１５上の開始点が指示され、これがシンボルシミュレーションの開始点となる。この点を図１８を参照して説明すると、対応情報１３から動作レベル記述１２の記述Ａが１つの比較対象の記述と認識され、コンパイル情報１６から記述Ａがオブジェクトコード部分Ｃに対応することが認識され、このオブジェクトコード部分Ｃの開始点をシンボルシミュレーションの開始点とする。なお、後述するシンボルシミュレーションの終了点は、このオブジェクトコード部分Ｃの終了点である。
【００６８】
ステップＡ１２２では、比較対象信号に初期シンボル値を対応付ける。比較対象信号は、対応情報１３およびコンパイル情報１６によって指示される。シンボル値とは、変数の値を、整数などの実際の値ではなく、記号などのシンボルとして表現した値である。この点を図１８を参照して説明すると、対応情報１３から、動作レベル記述１２の記述Ａに信号ａ１、信号ａ２が比較対象信号として含まれることを認識し、コンパイル情報１６から信号ａ１、ａ２はオブジェクトコード部分Ｃでは変数ｃ１、ｃ２に対応することを認識し、変数ｃ１、ｃ２をそれぞれ比較対象信号としてそれらに初期シンボル値を対応付ける。
【００６９】
ステップＡ１２３では、オブジェクトコード１５上の前記シンボルシミュレーション開始点から順にオブジェクトコード１５をトレースしながらオブジェクトコード１５の一命令ごとにその命令の定義に従ってシンボルシミュレーションを進める。
【００７０】
ＣＰＵで実行されるオブジェクトコード１５は、メモリやレジスタといった記憶素子からの値の読み込み、これらの値をもとにした演算、演算結果の記憶素子への書き込み、条件分岐など実行順序の変更の組み合わせからなっている。演算に使用される値にシンボル値が含まれるときはシンボル値演算をおこなう。シンボル値演算は、実際の演算を行うのではなく、演算結果を関数などによる表現式で表すものであり、この表現式もシンボル値という。このとき、演算に使用される値に即値が含まれるときは即値をシンボル値に変換してからシンボル値演算を行う。シンボル値演算の結果得られる演算結果を表すシンボル値は指定される記憶素子に記憶される。条件分岐の分岐条件がシンボル値である場合には、分岐条件シンボル値を記憶して、分岐があるものとないものそれぞれトレースを続行する。分岐条件が即値である場合には、分岐演算の結果に従い、どちらか一方のトレースを続行する。オブジェクトコード１５のトレースはオブジェクトコード１５上のシンボルシミュレーション終了点に達するまで続ける。
【００７１】
シンボルシミュレーションの終了点に到達したとき、比較対象信号に関して或るシンボル値が得られる。このシンボル値は、具体的に言うと、オブジェクトコード１５をシンボルシミュレーション開始点からシンボルシミュレーション終了点まで実行したときの比較対象信号のシンボルシミュレーション終了点時点の値を、比較対象信号のシンボルシミュレーション開始点時点で設定した初期シンボル値で表現したシンボル値である。このシンボル値は、初期シンボル値とシンボル値演算からなっており、初期シンボル値を回路の入力変数、シンボル値演算を論理演算に変換すると、組み合わせ論理式となる。こうして得られた論理式を、論理コーンとする（ステップＡ１２５）。
【００７２】
なお、分岐により、シンボルシミュレーション終了点に到達する経路が複数ある場合には、あらかじめ記憶された分岐条件シンボル値とシンボルシミュレーション終了点に達したときのシンボル値の論理式を作成し、マルチプレクサによってひとつのシンボル値にまとめる。そして、これを同様に論理式に変換し、これを、論理コーンとする。
【００７３】
対応情報１３中に、動作レベル記述１２に関する複数の比較対象の記述が含まれる場合、各記述毎に図４の処理が実行される。
【００７４】
【実施例】
次に、具体的な実施例を用いて本実施の形態の動作を説明する。
【００７５】
図５を参照するとＣ言語で記述された動作レベル記述１２の例が示されている。この記述では、関数ａｄｄｉｔｉｏｎ（）の部分が動作合成によって回路に合成されることが指定されている（１１行目）。関数ａｄｄｉｔｉｏｎ（）は、関数が呼ばれるたびに変数ｉｎ０の値が順に累積加算されたものが変数ｏｕｔ０に格納されるように変数ａ，ｂを用いて記述されている（１２〜１８行目）。
【００７６】
図６を参照すると図５の動作レベル記述１２を変換して得られるＲＴレベル記述１４の例が示されている。動作レベル記述１２中の関数ａｄｄｉｔｉｏｎ（）が、ａｄｄｉｔｉｏｎという名前のモジュールとして実現されている（１〜１３行目）。変数ｉｎ０がモジュールの入力として実現されている（２行目）。変数ｏｕｔ０がモジュールの出力として実現されている（３行目）。関数の動作が２つのレジスタＲＧ０１およびＲＧ０２を用いて実現されている（１０、１１行目）。
【００７７】
図８を参照すると、対応情報１３の一部が例示されている。対応情報１３では動作レベル記述１２中の変数ｉｎ０、ｏｕｔ０、ａ、ｂとＲＴレベル記述１４上の信号ｉｎ０、ｏｕｔ０、ＲＧ０１、ＲＧ０２との対応関係が与えられている。また、対応情報１３では、関数ａｄｄｉｔｉｏｎ（）が動作合成により合成されたこと、および、関数ａｄｄｉｔｉｏｎ（）がモジュールａｄｄｉｔｉｏｎとして実現されたことも別途与えられる。
【００７８】
いま、図５の動作レベル記述１２、図６のＲＴレベル記述１４、図８の対応情報１３が与えられたとする。
【００７９】
動作レベル記述１２をコンパイラ２１によりＣＰＵで実行可能なオブジェクトコード１５に変換する（ステップＡ１１）。
【００８０】
図７を参照すると、オブジェクトコード１５の一部が例示されている。ｍｏｖｌ，　ａｄｄｌはそれぞれＣＰＵで実行される命令を表している。ｍｏｖｌはメモリ空間の指定アドレス（第一引数）から指定レジスタ（第二引数）への値の読み込みをする命令である。ａｄｄｌは指定レジスタ上（第一引数）の値とメモリ空間の指定アドレス（第二引数）に格納された値との加算を計算し、指定レジスタ（第一引数）に計算結果を格納する命令である。ｉｎ０，　ａ，　ｂ，　ｏｕｔ０はメモリ空間内のアドレス位置を表すラベルである。％ｅａｘはＣＰＵに備えられたレジスタを示している。
【００８１】
ラベルａｄｄｉｔｉｏｎから始まる一連の命令によって、動作レベル記述１２の関数ａｄｄｉｔｉｏｎ（）の動作が実現されている。２行目から３行目によって変数ａの値が変数ｂの値と加算され加算結果が変数ｂに格納される。４行目から５行目によって変数ｉｎ０の値が変数ａに格納される。６行目から７行目によって、変数ｂの値が変数ｏｕｔ０にコピーされる。
【００８２】
図９を参照すると、コンパイル情報１６の一部が例示されている。コンパイル情報１６では、動作レベル記述１２の各変数ｉｎ０，　ｏｕｔ０，　ａ，　ｂが、オブジェクトコード１５中では、メモリ空間上で同名のラベルが付けられたアドレスに格納されることを示している。さらに、コンパイル情報１６では、関数ａｄｄｉｔｉｏｎ（）の処理が、図７に例示されたオブジェクトコードの処理に対応していることも、別途指定されている。
【００８３】
次に、図７のオブジェクトコード１５から論理コーン１７を抽出する（ステップＡ１２）。論理コーン１７の抽出では、まず、オブジェクトコード１５からシンボルシミュレーション開始点を見つける。シンボルシミュレーション開始点は、対応情報１３およびコンパイル情報１６で指定される。図７に例示されたオブジェクトコードでは、ラベルａｄｄｉｔｉｏｎの後の命令がシンボルシミュレーション開始点となる。
【００８４】
次に、シンボルシミュレーションの対象となる変数に初期シンボル値を設定する。図７に例示されたオブジェクトコード１５では、シンボルシミュレーションの対象となる変数は、対応情報１３およびコンパイル情報１６から判明する、変数ａ，ｂ，ｉｎ０，ｏｕｔ０である。
【００８５】
図１０を参照すると、初期シンボル値の設定が例示されている。変数ａ，　ｂ，　ｉｎ０，ｏｕｔ０に対応するメモリ空間上のアドレスに対して、初期シンボル値ａ’、ｂ’、ｉｎ０’、ｏｕｔ０’がそれぞれ対応付けられている。本実施例では、変数名の後にダッシュ（’）をつけて実行前の変数の値を表現するものとしている。
【００８６】
次に、オブジェクトコード１５を順にトレースしながらシンボルシミュレーションを進める（ステップＡ１２３）。
【００８７】
図１１を参照すると、シンボルシミュレーションの様子が例示されている。開始点から２つの命令を実行した後は、変数ｂの値を表すシンボル値が、変数ａ，　ｂの加算結果を表すシンボル値　“ａ’＋　ｂ’”になっている。また、シンボルシミュレーション終了点までシンボルシミュレーションが進んだときは、変数ａの値が、変数ｉｎ０の値を表すシンボル値ｉｎ０’に、変数ｂおよびｏｕｔ０の値が変数ａ，　ｂの加算結果を表すシンボル値　“ａ’＋　ｂ’”になっていることを示している。これらを論理コーンとする（ステップＡ１２５）。図１２を参照すると抽出された論理コーンが例示されている。
【００８８】
次に、ＲＴレベル記述１４から論理コーン１８を抽出する（ステップＡ２）。図１３を参照するとＲＴレベル記述１４から抽出された論理コーン１８が例示されている。
【００８９】
最後に、対応する信号のペアに対して抽出された論理コーン１７、１８が等価であるかを調べる（ステップＡ３）。図８および図９を参照すると、対応する信号のペアは図１４に示される。すべてのペアにおいて論理コーン１７、１８が等価である場合は、オブジェクトコード１５とＲＴレベル記述１４とが等価であると結論づける。
【００９０】
【発明の第２の実施の形態】
本発明の第２の実施の形態を、図面を用いて詳細に説明する。
【００９１】
本発明の第２の実施の形態では、ＲＴレベル記述がＨＤＬで与えられる代わりに、プログラム言語で与えられる点が異なる。
【００９２】
図１５を参照すると、本発明の第２の実施の形態は、ＲＴレベル記述１４からのＲＴレベル論理コーン１８の抽出を、図１に示されるＨＤＬ論理コーン抽出手段２３のかわりに、コンパイラ２１Ａ、オブジェクトコード論理コーン抽出手段２２Ａで行うことが異なる。
【００９３】
コンパイラ２１Ａは、コンパイルライブラリ１１Ａとプログラム言語で与えられたＲＴレベル記述１４からＣＰＵで実行可能なオブジェクトコード１Ａおよび、ＲＴレベル記述１４とオブジェクトコード１Ａとの間の、変数とプログラムの格納位置の対応関係を記したコンパイル情報１Ｂを生成し、記憶装置１に記憶する。
【００９４】
オブジェクトコード論理コーン抽出手段２２Ａは、記憶装置１に記憶されたオブジェクトコード１Ａを読み込み、対応情報１３とコンパイル情報１Ｂを参照しながら、比較の対象とされた記述毎に、その記述に含まれる変数の論理コーン（動作レベル論理コーン１７）を抽出する。その動作は、オブジェクトコード論理コーン抽出手段２２と基本的に同じである。
【００９５】
論理コーン比較手段２４が動作レベル論理コーン１７とＲＴレベル論理コーン１８の等価性を比較することは、本発明の第１の実施の形態と同一である。
【００９６】
次に、本実施の形態の効果について説明する。
【００９７】
プログラム言語を用いてＲＴレベル記述をおこなうことで、プログラム言語で用意された豊富なライブラリを用いてシミュレーションを行うことができる。その場合、動作合成システムはＨＤＬではなくプログラム言語をもちいてＲＴレベル記述を出力するという要求も増えてきている。本実施の形態では、このように、ＲＴレベル記述としてＨＤＬ記述ではなく、プログラム記述が与えられても、与えられた二つの記述の等価性を検証することができる。
【００９８】
【発明の第３の実施の形態】
本発明の第３の実施の形態を、図面を用いて詳細に説明する。
【００９９】
本発明の第３の実施の形態では、２つの記述があたえられて、それらの等価性を検証するのではなく、与えられたプログラム記述が与えられたプロパティを満たしていることを証明する点が異なる。
【０１００】
図１６を参照すると、本発明の第３の実施の形態は、モデル検査手段２５を備え、形式的等価検証ではなく、形式的プロパティ検証を行う点で異なる。
【０１０１】
コンパイラ２１、オブジェクトコード論理コーン抽出手段２２を備え、動作レベル記述１２、コンパイルライブラリ１１、対応情報１３から、動作レベル論理コーン１７を抽出する点は、本発明の第一の実施の形態と同一である。
【０１０２】
モデル検査手段２５は、動作レベル論理コーン１７と、プロパティ１Ｃがあたえられ、論理コーン１７をもとに、回路がとりうる信号の値の組み合わせ（状態と呼ぶ）の集合を順に列挙する。回路がとりうるすべての状態の集合を列挙したところで、これらの集合が与えられたプロパティを満たしているかのチェックを行う。
【０１０３】
図１７を参照すると、本発明の第３の実施の形態の動作が示されている。
【０１０４】
ステップＡ１では、プログラム言語で記述された動作レベル記述１２を、コンパイラ２１でＣＰＵが実行可能なオブジェクトコード１５にコンパイルする。
【０１０５】
ステップＡ２では、コンパイルされたオブジェクトコード１５から、論理コーン１７を抽出する。
【０１０６】
ステップＡ３では、モデル検査手段２５によって、論理コーン１７をもとに、動作レベル記述１２が与えられた性質を満足するかどうかを判定し、判定結果を出力装置３に出力する。モデル検査手段２５には、たとえば前出の既存の技術を利用する。
【０１０７】
次に、本実施の形態の効果について説明する。本実施の形態では、ＲＴレベル記述の代わりに、プログラム言語で記述された動作レベル記述１２が満たすべきプロパティ１Ｃが与えられたときでも、動作レベル記述１２がプロパティを満たすことを検証できる。
【０１０８】
以上本発明の実施の形態および実施例について説明したが、本発明は以上の実施の形態および実施例にのみ限定されるものでなく、その他各種の付加変更が可能である。また、本発明の論理検証システム及び論理コーン抽出装置は、その有する機能をハードウェア的に実現することは勿論、コンピュータと論理検証プログラム、論理コーン抽出プログラムとで実現することができる。論理検証プログラム、論理コーン抽出プログラムは、磁気ディスクや半導体メモリ等のコンピュータ可読記録媒体に記録されて提供され、コンピュータの立ち上げ時などにコンピュータに読み取られ、そのコンピュータの動作を制御することにより、そのコンピュータを前述した各実施の形態における論理検証システム及び論理コーン抽出装置として機能させる。
【０１０９】
【発明の効果】
以上説明したように本発明の第１の論理検証システムおよび方法によれば、プログラム記述言語を用いて記述された動作レベル記述からコンパイルされて得られたオブジェクトコードとＲＴレベル記述との等価性を検証することができる。これにより、動作レベル記述をＣＰＵで実行したときの実行結果と、動作合成の結果得られる回路が動作したときの実行結果が完全に一致することを保証できるような論理検証が可能となる。
【０１１０】
また本発明の第２の論理検証システムおよび方法によれば、プログラム記述言語を用いて記述された動作レベル記述からコンパイルされて得られたオブジェクトコードに対する形式的プロパティ検証が可能となる。
【０１１１】
また本発明の論理コーン抽出装置および方法によれば、対応情報とコンパイル情報とに基づいて、プログラム記述をコンパイルして得たオブジェクトコードから、前記対応情報で指定した論理コーン抽出範囲毎に、前記対応情報で指定した抽出対象信号に対応する前記オブジェクトコードの変数毎の論理コーンを自動的に抽出することができる。
【図面の簡単な説明】
【図１】本発明の第１の実施の形態の構成を示すブロック図である。
【図２】第１の実施の形態の動作を示す流れ図である。
【図３】第１の実施の形態の動作を示す流れ図である。
【図４】第１の実施の形態の動作を示す流れ図である。
【図５】第１の実施の形態の動作の具体例を示す図である。
【図６】第１の実施の形態の動作の具体例を示す図である。
【図７】第１の実施の形態の動作の具体例を示す図である。
【図８】第１の実施の形態の動作の具体例を示す図である。
【図９】第１の実施の形態の動作の具体例を示す図である。
【図１０】第１の実施の形態の動作の具体例を示す図である。
【図１１】第１の実施の形態の動作の具体例を示す図である。
【図１２】第１の実施の形態の動作の具体例を示す図である。
【図１３】第１の実施の形態の動作の具体例を示す図である。
【図１４】第１の実施の形態の動作の具体例を示す図である。
【図１５】本発明の第２の実施の形態の構成を示すブロック図である。
【図１６】本発明の第３の実施の形態の構成を示すブロック図である。
【図１７】第３の実施の形態の動作を示す流れ図である。
【図１８】本発明の第１の実施の形態の動作説明図である。
【図１９】トップダウン設計の流れの概略を示す図である。
【図２０】従来の形式的等価性検証装置のブロック図である。
【図２１】従来の形式的プロパティ検証装置のブロック図である。
【符号の説明】
１…記憶装置
２…データ処理装置
３…出力装置
１１、１１Ａ…コンパイルライブラリ
１２…動作レベル記述
１３…対応情報
１４…ＲＴレベル記述
１５、１Ａ…オブジェクトコード
１６、１Ｂ…コンパイル情報
１７…動作レベル論理コーン
１８…ＲＴレベル論理コーン
１Ｃ…プロパティ
１Ｄ…ゲートレベル記述
１Ｅ…ゲートレベル論理コーン
２１、２１Ａ…コンパイラ
２２、２２Ａ…オブジェクトコード論理コーン抽出手段
２３…ＨＤＬ論理コーン抽出手段
２４…論理コーン比較手段
【図１】
2004038617.tif 000003
【図２】
2004038617.tif 000004
【図３】
2004038617.tif 000005
【図４】
2004038617.tif 000006
【図５】
2004038617.tif 000007
【図６】
2004038617.tif 000008
【図７】
2004038617.tif 000009
【図８】
2004038617.tif 000010
【図９】
2004038617.tif 000011
【図１０】
2004038617.tif 000012
【図１１】
2004038617.tif 000013
【図１２】
2004038617.tif 000014
【図１３】
2004038617.tif 000015
【図１４】
2004038617.tif 000016
【図１５】
2004038617.tif 000017
【図１６】
2004038617.tif 000018
【図１７】
2004038617.tif 000019
【図１８】
2004038617.tif 000020
【図１９】
2004038617.tif 000021
【図２０】
2004038617.tif 000022
【図２１】
2004038617.tif 000023