(57)【要約】【課題】信頼性の高い等価性検証を行うことができる等価性検証装置、そのデータ処理方法、およびプログラムを提供する。【解決手段】等価性検証装置１００は、動作記述３１とＲＴＬ記述３２、各記述の変数または信号の対応関係を表す対応情報３４、および対応関係のある変数または信号の有効なビット幅を表すビット幅情報３６を取得する取得部１０２と、取得した情報に基づいて対応関係にある変数または信号を特定する特定部１０４と、ビット幅情報３６に基づいて有効なビット幅で変数または信号の信号値関数３８を抽出する信号値関数抽出部１０６と、有効なビット幅については信号値が等しいと仮定し、それ以外のビット幅については信号値が等しくないと仮定を与えつつ、対応関係にある変数または信号を比較する信号値関数比較部１１０と、信号値関数比較部１１０による論理等価性の比較結果に基づいて等価性を判定する検証結果判定部１１２と、を備える。【選択図】図１
2011034517.tif 000002
【特許請求の範囲】
【請求項１】
半導体集積回路の設計を行う際に使用する第１の記述および第２の記述、前記第１の記述および前記第２の記述に記述された変数または信号の対応関係を表す対応情報、および、前記対応関係のある変数または信号について有効なビット幅を表すビット幅情報を取得する取得手段と、
前記第１の記述および前記第２の記述、前記対応情報、および前記ビット幅情報に基づいて、前記対応関係にある変数または信号を特定する特定手段と、
特定された前記対応関係にある変数または信号の信号値関数を抽出する際、前記ビット幅情報に基づいて、前記ビット幅情報に示される前記有効なビット幅で前記変数または信号の信号値関数をそれぞれ抽出する信号値関数抽出手段と、
前記対応関係にある変数または信号について、前記有効なビット幅については信号値が等しいと仮定し、それ以外のビット幅については信号値が等しくないと仮定を与えつつ、前記信号値関数抽出手段により抽出された前記信号値関数を参照し、前記対応関係にある変数または信号の前記信号値関数を比較する信号値関数比較手段と、
前記信号値関数比較手段による論理等価性の比較結果に基づいて、前記第１の記述および前記第２の記述の等価性を判定する検証結果判定手段と、を備える等価性検証装置。
【請求項２】
請求項１に記載の等価性検証装置において、
前記第１の記述、前記第２の記述、前記対応情報、前記ビット幅情報、および前記信号値関数を記憶する記憶装置をさらに備え、
前記取得手段は、前記記憶装置を参照し、前記第１の記述、前記第２の記述、前記対応情報、前記ビット幅情報、および前記信号値関数を取得する等価性検証装置。
【請求項３】
請求項１または２に記載の等価性検証装置において、
前記ビット幅情報は、前記第１の記述および前記第２の記述に記述された変数または信号に対する前記対応関係の各々について、それらの変数または信号が、前記半導体集積回路が実際に動作する時に参照されるビット幅であることを含む等価性検証装置。
【請求項４】
請求項１または２に記載の等価性検証装置において、
前記ビット幅情報は、前記第１の記述および前記第２の記述に記述された変数または信号に対する前記対応関係の各々について、それらの変数または信号が、前記半導体集積回路が実際に動作する時に参照されるビット幅より大きいビット幅であることを含む等価性検証装置。
【請求項５】
請求項１乃至４いずれかに記載の等価性検証装置において、
前記第１の記述および前記第２の記述に記述された変数または信号に対する前記対応関係の各々について、ビット幅を解析し、前記ビット幅情報にフィードバックするビット幅解析手段をさらに備える等価性検証装置。
【請求項６】
請求項１乃至５いずれかに記載の等価性検証装置において、
前記第１の記述および前記第２の記述が、それぞれ動作記述およびＲＴＬ（Register Transfer Level：レジスタ転送レベル）記述である等価性検証装置。
【請求項７】
請求項６に記載の等価性検証装置において、
前記ＲＴＬ記述および前記対応情報が、動作合成装置により前記動作記述を動作合成することで得られる等価性検証装置。
【請求項８】
請求項１乃至３いずれかに記載の等価性検証装置において、
前記第１の記述および前記第２の記述が、それぞれ動作記述およびＲＴＬ記述であって、
当該ＲＴＬ記述、前記対応情報および前記ビット幅情報が、当該動作記述を動作合成装置により動作合成を行うことで得られる等価性検証装置。
【請求項９】
請求項１乃至５いずれかに記載の等価性検証装置において、
前記第１の記述および前記第２の記述は、ハードウェア記述、またはソフトウェア記述である等価性検証装置。
【請求項１０】
請求項９に記載の等価性検証装置において、
前記第１の記述および前記第２の記述が、ともにＲＴＬ記述である等価性検証装置。
【請求項１１】
請求項９に記載の等価性検証装置において、
前記第１の記述および前記第２の記述が、ともに動作記述であることを特徴とする等価性検証装置。
【請求項１２】
請求項９に記載の等価性検証装置において、
前記第１の記述および前記第２の記述が、それぞれＲＴＬ記述およびゲートレベル記述であることを特徴とする等価性検証装置。
【請求項１３】
等価性検証装置のデータ処理方法であって、
前記等価性検証装置が、
半導体集積回路の設計を行う際に使用する第１の記述および第２の記述、前記第１の記述および前記第２の記述に記述された変数または信号の対応関係を表す対応情報、および、前記対応関係のある変数または信号について有効なビット幅を表すビット幅情報を取得し、
前記第１の記述および前記第２の記述、前記対応情報、および前記ビット幅情報に基づいて、前記対応関係にある変数または信号を特定し、
特定された前記対応関係にある変数または信号の信号値関数を抽出する際、前記ビット幅情報に基づいて、前記ビット幅情報に示される前記有効なビット幅で前記変数または信号の信号値関数をそれぞれ抽出し、
前記対応関係にある変数または信号について、前記有効なビット幅については信号値が等しいと仮定し、それ以外のビット幅については信号値が等しくないと仮定を与えつつ、抽出された前記信号値関数を参照し、前記対応関係にある変数または信号の前記信号値関数を比較し、
前記信号値関数の比較による論理等価性の比較結果に基づいて、前記第１の記述および前記第２の記述の等価性を判定する等価性検証装置のデータ処理方法。
【請求項１４】
等価性検証装置を実現するためのプログラムであって、
半導体集積回路の設計を行う際に使用する第１の記述および第２の記述、前記第１の記述および前記第２の記述に記述された変数または信号の対応関係を表す対応情報、および、前記対応関係のある変数または信号について有効なビット幅を表すビット幅情報を取得する取得手順と、
前記第１の記述および前記第２の記述、前記対応情報、および前記ビット幅情報に基づいて、前記対応関係にある変数または信号を特定する特定手順と、
特定された前記対応関係にある変数または信号の信号値関数を抽出する際、前記ビット幅情報に基づいて、前記ビット幅情報に示される前記有効なビット幅で前記変数または信号の信号値関数をそれぞれ抽出する信号値関数抽出手順と、
前記対応関係にある変数または信号について、前記有効なビット幅については信号値が等しいと仮定し、それ以外のビット幅については信号値が等しくないと仮定を与えつつ、前記信号値関数抽出手順により抽出された前記信号値関数を参照し、前記対応関係にある変数または信号の前記信号値関数を比較する信号値関数比較手順と、
前記信号値関数比較手順による論理等価性の比較結果に基づいて、前記第１の記述および前記第２の記述の等価性を判定する手順と、をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、等価性検証装置、そのデータ処理方法、およびプログラムに関し、特に、半導体集積回路の設計における２つの記述の論理等価性を検証する等価性検証装置、そのデータ処理方法、およびプログラムに関する。
【背景技術】
【０００２】
ＬＳＩ（Large-Scale Integration）設計において、設計の正しさを確かめる検証は、主にテストパターンを用いるシミュレーションによって行われていた。
しかし、テストパターンを必要とするシミュレーションでは、テストパターンの作成に膨大な時間およびコストを必要とする上に、検証の網羅性がテストパターンに依存するため、信頼性を確保するために十分な検証を行うことが必ずしも容易ではないという問題がある。
【０００３】
これに対して、形式的手法に基づく検証は、テストパターンを用いることなく網羅的な検証を行うことが可能であり、シミュレーションの問題点を補う有効な手法である。
レジスタトランスファレベル（Register Transfer Level：ＲＴＬ）記述とゲートレベル記述、ゲートレベル記述同士の等価性を保障する等価性検証では、形式的な等価性検証手法はもはや一般的に用いられているといえる。
【０００４】
一方、近年はＬＳＩの設計規模が増大しているため、Ｃ言語などのソフトウェア向け言語を拡張した言語などによる抽象度の高い動作記述から、動作合成を用いてＲＴＬ記述を生成する設計が増えつつある。動作合成を用いた設計手法は、抽象度の高い動作レベルでの設計を行うことで記述量を少なくすることができ、設計や検証の生産性を大きく高めることができる。しかし、動作合成は途中に複雑な工程を多く含む巨大なソフトウエアシステムであるため、内部にバグが存在し、誤ったＲＴＬ記述を出力する可能性は否定できない。ソフトウェアと異なり、ハードウェアであるＬＳＩに設計誤りが存在した場合の修正は困難であるため、動作合成前後の動作記述とＲＴＬ記述の等価性検証はきわめて重要であり、形式的手法に基づく等価性検証手法への期待も高まっている。
【０００５】
等価性検証システムの一例が特許文献１および非特許文献１に記載されている。図１０に示すように、特許文献１に記載の等価性検証システムは、動作合成前後の動作記述とＲＴＬ記述の等価性検証を対象としている。
【０００６】
そして、等価性検証装置１０は、信号値関数抽出装置７と、関数等価性比較装置９とから構成されており、記憶装置５には動作レベル記述１、ＲＴレベル記述３、対応関係４、および、信号値関数８が記憶される。
【０００７】
図１０および図１１に示すフローチャートによると、特許文献１に記載の等価性検証システムは概略以下のように動作する。
【０００８】
すなわち、動作合成装置２は、設計者が記述した動作レベル記述１を入力として、動作合成を行い、ＲＴレベル記述３を出力する（ステップＳ１）。さらに、対応関係４として、動作レベル記述１中の記述がＲＴレベル記述３中のどの部分に変換されたかを示す情報や、動作レベル記述１上の変数とＲＴレベル記述３上の信号との対応を示す情報などを出力する。
【０００９】
信号値関数抽出装置７は、動作レベル記述１、ＲＴレベル記述３および対応関係４を読込み（ステップＳ３およびＳ５）、等価性を検証するために必要となる変数や信号を特定し、それらの変数や信号の値の変化の様子、すなわち信号値関数８を抽出する（ステップＳ７）。信号値関数８の抽出は、たとえば記号シミュレーション、項書換えといった既知の手法によって行われる。抽出した信号値関数８は記憶装置５に記憶される。
【００１０】
関数等価性比較装置９は、２つの記述の対応する変数や信号の信号値関数８を入力し、２つが等価であるかを検証する（ステップＳ９）。かかる検証には、たとえば充足可能性判定（ＳＡＴ：Satisfiability）、ｖａｌｉｄｉｔｙ  ｃｈｅｃｋｅｒなどとよばれる既知の技術を用いて行われる。比較対象とされる全ての変数や信号に対する信号値関数８が等価である場合、２つの記述が等価であると判定される。そうでない場合、２つの記述は等価でないと判定される。
【００１１】
ハードウェア設計においては、回路面積を削減するために、内部の信号のビット幅を実際の代入または参照される値を表すことができる幅に応じて縮小することがある。特に、動作合成により動作記述からＲＴＬ記述を合成する場合には、動作合成は、データフローなどを解析することにより、動作記述上で大きなビット幅を持つように宣言された変数に対して、ビット幅の小さなレジスタを割り当てる合成を行うことがある。
【００１２】
特許文献２に記載の回路設計を支援する回路設計支援装置として機能する情報処理装置は、回路の動作を記述した動作情報を保持する動作情報保持手段と、動作情報からより具体的な回路構成を決定するために必要な設計情報を保持する設計情報保持手段と、動作情報と設計情報とを関連づけ、該関連づけに関する情報を関連づけ情報として保持する関連づけ手段と、保持された動作情報、設計情報、関連づけ情報に基づいて回路設計を実行する回路設計手段とを備える。
【００１３】
特許文献２に記載の装置の例では、動作情報に記述された３２ビットの変数が、動作合成により回路化されて１２ビットの入力ポートに変換されている。
【００１４】
さらに、特許文献３に記載の回路設計支援システムは、動作レベル記述を基に動作合成処理を実施し、該動作合成処理の工程毎の処理結果である中間記述および該動作合成処理の結果であるＲＴレベル記述をそれぞれ生成する動作合成手段と、動作レベル記述とＲＴレベル記述の対応関係を生成する対応生成手段と、ＲＴレベル記述内の指定された部品に対応する動作レベル記述の要素を抽出する対応解析手段とを備える。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】特開２００３−１４１２０２号公報
【特許文献２】特開２００６−１３９６２４号公報
【特許文献３】特開２００７−１０２２７１号公報
【非特許文献】
【００１６】
【非特許文献１】竹中崇、外５名、「動作合成前後の動作記述とＲＴＬ記述の論理等価性検証」、第１７回  回路とシステム軽井沢ワークショップ、２００４年、ｐ．５５５−５６０
【発明の概要】
【発明が解決しようとする課題】
【００１７】
ハードウェア設計において、回路面積を削減するために、上述したようなビット幅の縮減を行った場合、その正しさを確認するために、縮減前後の記述を等価性検証装置によって等価であることを確かめたいという要求は特に強いと考えられる。しかし、上述した特許文献１に記載の等価性検証装置では、比較対象となる変数や信号のビット幅は等しいのが通常である。そのため、かかる最適化が施された回路に対して上記等価性検証システムを用いて等価性検証を行おうとすると、検証が正しく行えない問題点があった。
【００１８】
その理由は、疑似エラー、すなわち、本来２つの記述の論理が等価であると判断すべき場合であっても、非等価であるとの検証結果を返す場合があるからである（フォールス・ネガティブ、ｆａｌｓｅ  ｎｅｇａｔｉｖｅと呼ばれることもある）。たとえば、削減前のビット幅を基準として等価性の検証を行うと、出力結果に影響がないとして削減されたビットまで検証を行ってしまうためである。
【００１９】
また、逆に、本来は２つ記述の論理が等価ではないと判断すべき場合であっても、等価であるとの検証結果を返す場合があるからである（フォールス・ポジティブ、ｆａｌｓｅ  ｐｏｓｉｔｉｖｅと呼ばれることもある）。たとえば、ビット幅を削減した後のビット幅を基準として等価性の検証を行うと、本来は出力結果に影響を及ぼすビットが誤って削除される場合でも、そのことを判断できない場合があるためである。
【００２０】
すなわち、比較対象となる変数や信号のビット幅が最適化により変化する場合、上述した等価性検証装置では、２つの記述が一致する、すなわち等価であるとの報告がなされたとしても、実際には一致していない可能性があり、あるいは、不一致（等価でない）との報告がなされても、それが最適化に問題があるか、あるいは等価性検証装置自体の原理的な問題なのかが容易には分からないという問題点があった。
【００２１】
本発明の目的は、上述した課題である比較対象となる変数やレジスタのビット幅が異なる場合であっても、ビット幅が異なることが妥当であることも含めて、疑似エラーや検証漏れを解決する等価性検証装置、そのデータ処理方法、およびプログラムを提供することにある。
【課題を解決するための手段】
【００２２】
本発明の等価性検証装置は、半導体集積回路の設計を行う際に使用する第１の記述および第２の記述、前記第１の記述および前記第２の記述に記述された変数または信号の対応関係を表す対応情報、および、前記対応関係のある変数または信号について有効なビット幅を表すビット幅情報を取得する取得手段と、
前記第１の記述および前記第２の記述、前記対応情報、および前記ビット幅情報に基づいて、前記対応関係にある変数または信号を特定する特定手段と、
特定された前記対応関係にある変数または信号の信号値関数を抽出する際、前記ビット幅情報に基づいて、前記ビット幅情報に示される前記有効なビット幅で前記変数または信号の信号値関数をそれぞれ抽出する信号値関数抽出手段と、
前記対応関係にある変数または信号について、前記有効なビット幅については信号値が等しいと仮定し、それ以外のビット幅については信号値が等しくないと仮定を与えつつ、前記信号値関数抽出手段により抽出された前記信号値関数を参照し、前記対応関係にある変数または信号の前記信号値関数を比較する信号値関数比較手段と、
前記信号値関数比較手段による論理等価性の比較結果に基づいて、前記第１の記述および前記第２の記述の等価性を判定する検証結果判定手段と、を備える。
【００２３】
本発明の等価性検証装置のデータ処理方法は、
前記等価性検証装置が、
半導体集積回路の設計を行う際に使用する第１の記述および第２の記述、前記第１の記述および前記第２の記述に記述された変数または信号の対応関係を表す対応情報、および、前記対応関係のある変数または信号について有効なビット幅を表すビット幅情報を取得し、
前記第１の記述および前記第２の記述、前記対応情報、および前記ビット幅情報に基づいて、前記対応関係にある変数または信号を特定し、
特定された前記対応関係にある変数または信号の信号値関数を抽出する際、前記ビット幅情報に基づいて、前記ビット幅情報に示される前記有効なビット幅で前記変数または信号の信号値関数をそれぞれ抽出し、
前記対応関係にある変数または信号について、前記有効なビット幅については信号値が等しいと仮定し、それ以外のビット幅については信号値が等しくないと仮定を与えつつ、抽出された前記信号値関数を参照し、前記対応関係にある変数または信号の前記信号値関数を比較し、
前記信号値関数の比較による論理等価性の比較結果に基づいて、前記第１の記述および前記第２の記述の等価性を判定する。
【００２４】
本発明の等価性検証装置を実現するためのプログラムは、
半導体集積回路の設計を行う際に使用する第１の記述および第２の記述、前記第１の記述および前記第２の記述に記述された変数または信号の対応関係を表す対応情報、および、前記対応関係のある変数または信号について有効なビット幅を表すビット幅情報を取得する取得手順と、
前記第１の記述および前記第２の記述、前記対応情報、および前記ビット幅情報に基づいて、前記対応関係にある変数または信号を特定する特定手順と、
特定された前記対応関係にある変数または信号の信号値関数を抽出する際、前記ビット幅情報に基づいて、前記ビット幅情報に示される前記有効なビット幅で前記変数または信号の信号値関数をそれぞれ抽出する信号値関数抽出手順と、
前記対応関係にある変数または信号について、前記有効なビット幅については信号値が等しいと仮定し、それ以外のビット幅については信号値が等しくないと仮定を与えつつ、前記信号値関数抽出手順により抽出された前記信号値関数を参照し、前記対応関係にある変数または信号の前記信号値関数を比較する信号値関数比較手順と、
前記信号値関数の比較による論理等価性の比較結果に基づいて、前記第１の記述および前記第２の記述の等価性を判定する手順と、をコンピュータに実行させるためのものである。
【００２５】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、記録媒体、コンピュータプログラムなどの間で変換したものもまた、本発明の態様として有効である。
【００２６】
また、本発明の各種の構成要素は、必ずしも個々に独立した存在である必要はなく、複数の構成要素が一個の部材として形成されていること、一つの構成要素が複数の部材で形成されていること、ある構成要素が他の構成要素の一部であること、ある構成要素の一部と他の構成要素の一部とが重複していること、等でもよい。
【００２７】
また、本発明のデータ処理方法およびコンピュータプログラムには複数の手順を順番に記載してあるが、その記載の順番は複数の手順を実行する順番を限定するものではない。このため、本発明のデータ処理方法およびコンピュータプログラムを実施するときには、その複数の手順の順番は内容的に支障しない範囲で変更することができる。
【００２８】
さらに、本発明のデータ処理方法およびコンピュータプログラムの複数の手順は個々に相違するタイミングで実行されることに限定されない。このため、ある手順の実行中に他の手順が発生すること、ある手順の実行タイミングと他の手順の実行タイミングとの一部ないし全部が重複していること、等でもよい。
【発明の効果】
【００２９】
本発明によれば、信頼性の高い等価性検証を行うことができる等価性検証装置、そのデータ処理方法、およびプログラムが提供される。
【図面の簡単な説明】
【００３０】
【図１】本発明の実施の形態に係る等価性検証装置の構成を示す機能ブロック図である。
【図２】本発明の実施の形態に係る等価性検証装置の動作の一例を示すフローチャートである。
【図３】本発明の実施の形態に係る等価性検証装置の構成を示す機能ブロック図である。
【図４】本発明の実施の形態に係る等価性検証装置の動作の一例を示すフローチャートである。
【図５】記憶装置に記憶された動作記述の実施例を示す図である。
【図６】図５に示す動作記述を動作合成して得られたＲＴＬ記述の実施例を示す図である。
【図７】動作記述の変数ｒ１およびＲＴＬ記述の信号ＲＧ＿ｒ１についての信号値関数を示す図である。
【図８】本発明の実施の形態に係る等価性検証装置の対応情報の一例を示す図である。
【図９】本発明の実施の形態に係る等価性検証装置のビット情報の一例を示すである。
【図１０】特許文献１に記載された等価性検証装置の構成を示す機能ブロック図である。
【図１１】特許文献１に記載された等価性検証装置の動作の一例を示すフローチャートである。
【発明を実施するための形態】
【００３１】
以下、本発明の実施の形態について、図面を用いて説明する。尚、すべての図面において、同様な構成要素には同様の符号を付し、適宜説明を省略する。
【００３２】
（第１の実施の形態）
図１は、本発明の実施の形態に係る等価性検証装置の構成を示す機能ブロック図である。
本発明の等価性検証システムは、２つの記述の論理等価性を検証するものである。本実施形態では、図１の動作合成装置２０による動作合成前後の動作記述３１とＲＴＬ（Register Transfer Level：レジスタ転送レベル）記述３２との等価性を検証する等価性検証装置１００を例に説明する。
【００３３】
本実施形態の等価性検証装置１００は、半導体集積回路の設計を行う際に使用する第１の記述（動作記述３１）および第２の記述（ＲＴＬ記述３２）、動作記述３１およびＲＴＬ記述３２に記述された変数または信号の対応関係を表す対応情報３４、および、対応関係のある変数または信号について有効なビット幅を表すビット幅情報３６を取得する取得部１０２と、動作記述３１およびＲＴＬ記述３２、対応情報３４、およびビット幅情報３６に基づいて、対応関係にある変数または信号を特定する特定部１０４と、特定された対応関係にある変数または信号の信号値関数３８を抽出する際、ビット幅情報３６に基づいて、ビット幅情報３６に示される有効なビット幅で変数または信号の信号値関数３８をそれぞれ抽出する信号値関数抽出部１０６と、対応関係にある変数または信号について、有効なビット幅については信号値が等しいと仮定し、それ以外のビット幅については信号値が等しくないと仮定を与えつつ、信号値関数抽出部１０６により抽出された信号値関数３８を参照し、対応関係にある変数または信号の信号値関数３８を比較する信号値関数比較部１１０と、信号値関数比較部１１０による論理等価性の比較結果に基づいて、動作記述３１およびＲＴＬ記述３２の等価性を判定する検証結果判定部１１２と、を備える。
【００３４】
等価性検証装置１００は、たとえば、図示しないＣＰＵ（Central Processing Unit）やメモリ、ハードディスク、および通信装置を備え、キーボードやマウス等の入力装置やディスプレイやプリンタ等の出力装置と接続される一般的なコンピュータ、たとえば、サーバコンピュータやパーソナルコンピュータ、またはそれらに相当する装置により実現することができる。そして、ＣＰＵが、ハードディスク等に記憶されるプログラムをメモリに読み出して実行することにより、以下の各ユニットの各機能を実現することができる。なお、以下の図において、本発明の本質に関わらない部分の構成については省略してあり、図示されていない。
【００３５】
また、等価性検証装置１００の各構成要素は、任意のコンピュータのＣＰＵ、メモリ、メモリにロードされた本図の構成要素を実現するプログラム、そのプログラムを格納するハードディスクなどの記憶ユニット、ネットワーク接続用インタフェースを中心にハードウェアとソフトウェアの任意の組合せによって実現される。そして、その実現方法、装置にはいろいろな変形例があることは、当業者には理解されるところである。以下説明する各図は、ハードウェア単位の構成ではなく、機能単位のブロックを示している。
【００３６】
具体的には、本実施形態の等価性検証装置１００は、取得部１０２と、特定部１０４と、信号値関数抽出部１０６と、信号値関数比較部１１０と、検証結果判定部１１２と、を備える。また、等価性検証装置１００は、記憶装置３０に接続され、記憶装置３０には、動作記述３１、ＲＴＬ記述３２、対応情報３４、ビット幅情報３６、および信号値関数３８が記憶される。
【００３７】
なお、図１では、等価性検証装置１００と、記憶装置３０および動作合成装置２０は、別の装置として図示されているが、これに限定されない。動作合成装置２０、記憶装置３０、および等価性検証装置１００は、同じコンピュータ上に構築されてもよいし、また、記憶装置３０も必ずしも必要ではなく、記録媒体に記憶された動作記述３１、ＲＴＬ記述３２、対応情報３４、ビット幅情報３６、および信号値関数３８を読み出し、等価性検証装置１００に読み込ませてもよい。
【００３８】
また、本実施形態では、動作合成装置２０によって動作記述３１がＲＴＬ記述３２に変換された場合を例としているが、これに限定されない。たとえば、ＲＴＬ記述３２は、動作記述３１を機能仕様として設計者が人手で記述したものであってもよく、等価性検証装置１００は、ＲＴＬ記述３２のファイルを記録媒体から読み込んだり、他のコンピュータからネットワークを介してダウンロードしたりすることで受け付けてもよい。あるいは、等価性検証装置１００でＲＴＬ記述３２を作成および編集したものであってもよい。したがって、動作合成装置２０は、必ずしも必要ではない。
【００３９】
動作合成装置２０は、記憶装置３０に記憶された動作記述３１を入力として動作合成を行い、結果のＲＴＬ記述３２とともに、ビット幅情報３６、対応情報３４を記憶装置３０に記憶する。対応情報３４は、動作記述３１中の記述がＲＴＬ記述３２中のどの部分に変換されたかを示す情報や、動作記述３１上の変数とＲＴＬ記述３２上の信号との対応を示す情報である。すなわち、ＲＴＬ記述３２および対応情報３４は、動作合成装置２０により動作記述３１を動作合成することで得られ、記憶装置３０に記憶される。
【００４０】
ビット幅情報３６は、たとえば、動作合成装置２０が動作記述３１中の変数をＲＴＬ記述３２中のレジスタに変換するにあたり、データフローやそれぞれの変数が取りうる値の範囲の解析を行うなどによって、レジスタのビット幅を変数のビット幅から縮減させている場合に、その変数とレジスタが参照されるビット幅の情報などが挙げられる。参照されるビット幅をビット幅情報３６として用いることが考えられるのは、対応関係にあり、比較対象とすべき信号や変数に対して、それらが参照されるビット幅を常に比較していれば、回路の出力に影響を及ぼすビット幅について必ず信号値関数の比較が行われることとなり、本来は非等価である記述に対して誤って等価であるとの結果を返すような問題が起きないからである。
【００４１】
等価性検証装置１００において、取得部１０２は、記憶装置３０から、動作記述３１、ＲＴＬ記述３２、対応情報３４、およびビット幅情報３６を読み出して取得する。特定部１０４は、取得部１０２が取得した情報に基づいて、等価性を検証するに必要な信号の対応関係を特定する。信号値関数抽出部１０６は、特定された対応関係にある変数または信号の信号値関数３８を抽出する際、ビット幅情報３６に基づいて、ビット幅情報３６に示されるビット幅で変数または信号の信号値関数３８をそれぞれ抽出する。信号値関数３８は、特定された、等価性を検証するために必要となる変数や信号の値の変化の様子を示す。
【００４２】
信号値関数抽出部１０６における信号値関数３８の取得は、項書き換えや記号シミュレーションなどの手法で行うことができる。このとき、信号値関数抽出部１０６は、当該信号が合成過程などでビット幅の最適化が行われている場合、当該信号に対するビット幅情報３６に基づき、比較を行うとする信号値に対して最も適切な情報を取得し、そのビット幅について信号値関数３８を取得する。
【００４３】
たとえば、信号値関数抽出部１０６は、元の変数や信号に対する信号値関数３８を取得した上で、ビット幅情報３６より実際の変数などのビット幅が大きければ、ビット幅情報３６に示されるビット幅に対応する下位のビット分の信号値関数３８のみを取得する。一方、ビット幅情報３６より実際の変数などのビット幅が小さければ、不足ビット分に対応する上位ビットをその変数や信号の符号に応じて０もしくは最上位ビットの値で変数や信号を補充し、ビット幅情報３６に示されるビット幅に対応するビット分の信号値関数３８を取得するものとする。
【００４４】
各々の変数や信号について、他の変数や信号に参照されるビットは出力値に影響を及ぼしうるため、それらのビットに対する信号値比較が等価性を保障する上で必要十分な条件であると言える。しかしながら、対応関係にある変数や信号が参照されるビット幅をビット幅情報３６として与えることにより、等価性検証の精度を向上させることができる。すなわち、記述全体の出力に影響を及ぼす可能性があり、記述の等価性を判定する上で必要となるビットの信号値関数３８は、必ず比較されることとなる。一方、出力に影響を及ぼす可能性がなく等価性の判定で必要がない、削減対象となるビットの信号値関数３８を、等価性検証の対象から除外することができることとなる。
【００４５】
信号値関数比較部１１０は、信号値関数抽出部１０６で抽出され、記憶装置３０に記憶された対応関係にある変数または信号の信号値関数３８同士を比較し、動作記述３１上の変数とＲＴＬ記述３２上の信号値が等しいか否か報告する。かかる検証には、たとえば充足可能性判定（ＳＡＴ）、ｖａｌｉｄｉｔｙ  ｃｈｅｃｋｅｒなどとよばれる既知の技術を用いて行うことができる。信号値関数比較部１１０が信号値関数３８の比較を行う際には、信号値関数３８に含まれる変数や信号の信号値について、ビット幅情報３６に基づいて、有効であると判断されるビット幅に対応するビットには信号値が等しいとの仮定を、有効であると判断されるビット幅を超えるビットには信号値が等しくないとの仮定を与える。
【００４６】
検証結果判定部１１２は、信号値関数比較部１１０による論理等価性の比較結果に基づいて、動作記述３１およびＲＴＬ記述３２の等価性を判定する。たとえば、比較対象とされる全ての変数や信号に対する信号値関数３８がそれぞれ等価である場合、２つの記述が等価であると判定される。一つでも等価でない変数や信号が存在する場合、２つの記述は等価でないと判定される。
【００４７】
本実施の形態の等価性検証装置１００は、コンピュータプログラムに対応する各種の処理動作をＣＰＵが実行することにより、前述のような各種ユニットが各種機能として実現される。
【００４８】
本実施形態のコンピュータプログラムは、等価性検証装置１００を実現させるためのコンピュータに、半導体集積回路の設計を行う際に使用する動作記述３１および動作記述３１と同様の機能を示すＲＴＬ記述３２、動作記述３１およびＲＴＬ記述３２に記述された変数または信号の対応関係を表す対応情報３４、および、対応関係のある変数または信号について有効なビット幅を表すビット幅情報３６を取得する取得手順と、動作記述３１およびＲＴＬ記述３２、対応情報３４、およびビット幅情報３６に基づいて、対応関係にある変数または信号を特定する特定手順と、特定された対応関係にある変数または信号の信号値関数３８を抽出する際、ビット幅情報３６に基づいて、ビット幅情報３６に示される有効なビット幅で変数または信号の信号値関数３８をそれぞれ抽出する信号値関数抽出手順と、対応関係にある変数または信号について、有効なビット幅については信号値が等しいと仮定し、それ以外のビット幅については信号値が等しくないと仮定を与えつつ、信号値関数抽出手順により抽出された信号値関数３８を参照し、対応関係にある変数または信号の信号値関数３８を比較する信号値関数比較手順と、信号値関数比較手順による論理等価性の比較結果に基づいて、動作記述３１およびＲＴＬ記述３２の等価性を判定する手順と、を実行させるように記述されている。
【００４９】
本実施形態のコンピュータプログラムは、本実施形態の等価性検証装置１００を実現するコンピュータで読み取り可能な記憶媒体に記録されてもよい。記録媒体は特に限定されず、様々な形態のものが考えられる。また、プログラムは、記録媒体からコンピュータのメモリにロードされてもよいし、ネットワークを通じてコンピュータにダウンロードされ、メモリにロードされてもよい。
【００５０】
このように構成された本実施形態の等価性検証装置１００の動作について、以下に説明する。
図２は、本実施形態の等価性検証装置１００の動作の一例を示すフローチャートである。以下、図１および図２を用いて説明する。
【００５１】
本実施形態の等価性検証装置１００のデータ処理方法は、等価性検証装置１００が、半導体集積回路の設計を行う際に使用する動作記述３１および動作記述３１と同様の機能を示すＲＴＬ記述３２、動作記述３１およびＲＴＬ記述３２に記述された変数または信号の対応関係を表す対応情報３４、および、対応関係のある変数または信号について有効なビット幅を表すビット幅情報３６を取得し（ステップＳ１０１、Ｓ１０３）、動作記述３１およびＲＴＬ記述３２、対応情報３４、およびビット幅情報３６に基づいて、対応関係にある変数または信号を特定し（ステップＳ１０５）、特定された対応関係にある変数または信号の信号値関数３８を抽出する際、ビット幅情報３６に基づいて、ビット幅情報３６に示される有効なビット幅で変数または信号の信号値関数３８をそれぞれ抽出し（ステップＳ１０７）、対応関係にある変数または信号について、有効なビット幅については（ステップＳ１０９のＹＥＳ）信号値が等しいと仮定し（ステップＳ１１１）、それ以外のビット幅については（ステップＳ１０９のＮＯ）信号値が等しくないと仮定を与えつつ（ステップＳ１１３）、抽出された信号値関数３８を参照し、対応関係にある変数または信号の信号値関数３８を比較し（ステップＳ１１５）、ステップＳ１１５で得られた論理等価性の比較結果に基づいて、動作記述３１およびＲＴＬ記述３２の等価性を判定する（ステップＳ１１７）。
【００５２】
具体的には、まず、動作合成装置２０が、記憶装置３０に記憶されている動作記述３１に対して動作合成を行い（ステップＳ１１）、その結果であるＲＴＬ記述３２を記憶装置３０に記憶する（ステップＳ１３）。ここで、動作記述３１は、たとえば、ユーザが予めコンピュータの一般的なエディタなどを用いて記述し、記憶装置３０に記憶される。このとき、合わせて対応情報３４とビット幅情報３６も記憶装置３０に記憶される（ステップＳ１５）。
【００５３】
ビット幅情報３６は、たとえば、動作合成装置２０が動作記述３１中の変数をＲＴＬ記述３２中のレジスタに変換するにあたり、データフローやそれぞれの変数が取りうる値の範囲の解析を行うなどによって、レジスタのビット幅を変数のビット幅から縮減させている場合に、動作合成前後における、その変数とレジスタが参照されるビット幅の情報などが挙げられる。
【００５４】
ビット幅情報３６は、動作記述３１およびＲＴＬ記述３２に記述された変数または信号に対する対応関係の各々について、それらの変数または信号が、半導体集積回路が実際に動作する時に参照されるビット幅であってもよいし、または、半導体集積回路が実際に動作する時に参照されるビット幅より大きいビット幅であってもよい。
【００５５】
動作合成装置２０における動作合成が終わった後、本実施形態の等価性検証装置１００を起動する。等価性検証装置１００の起動は、自動的に行われるようにしてもよいし、ユーザが動作合成装置２０における動作合成の終了を確認した後、起動を指示してもよい。等価性検証装置１００が起動すると、まず、取得部１０２が、記憶装置３０にアクセスし、動作記述３１とＲＴＬ記述３２を読み込む（ステップＳ１０１）。
【００５６】
続いて、取得部１０２が、動作合成装置２０が出力した対応情報３４とビット幅情報３６を記憶装置３０より取得する（ステップＳ１０３）。そして、特定部１０４が、対応関係にある変数または信号を特定する（ステップＳ１０５）。
【００５７】
そして、信号値関数抽出部１０６が、信号値関数３８の抽出を行う。ここでは、信号値関数３８は、ビット幅情報３６の情報を利用して信号値関数３８を抽出する。つまり、対応関係にあって信号値関数３８を抽出しようとする変数や信号にビット幅情報３６が設定されている場合は、それらの変数や信号の実際のビット幅に関わらず、信号値関数抽出部１０６が、与えられたビット幅情報３６の幅を持つ信号値関数３８を抽出する（ステップＳ１０７）。抽出された信号値関数３８は、記憶装置３０に記憶される。
【００５８】
このとき、信号値関数抽出部１０６は、以下の条件に従って処理を行う。たとえば、変数のビット幅がビット幅情報３６で与えられた有効なビット幅より大きい場合はビット幅情報３６を超えたビット幅を削除し、信号のビット幅がビット幅情報３６で与えられた有効なビット幅より小さい場合は、信号のビット幅を超えたビットを信号の符号に応じて０や最上位ビットの値で埋めるものとする。
【００５９】
信号値関数３８が得られると、信号値関数比較部１１０が、有効なビット幅のビットについては（ステップＳ１０９のＹＥＳ）、信号値が等しいと仮定し（ステップＳ１１１）、それ以外のビット幅のビットについては（ステップＳ１０９のＮＯ）、信号値が等しくないとの仮定を与えつつ（ステップＳ１１３）、信号値関数３８を参照し、対応関係にある変数または信号の信号値関数３８を比較し（ステップＳ１１５）、論理等価性の比較結果に基づいて、それらの論理等価性の判定を行う（ステップＳ１１７）。この論理等価性検証は、比較対象となる実際の変数や信号のビット幅に関わらず、与えられたビット幅情報３６に基づいたビット幅を基準として行われる。
【００６０】
以上説明したように、本発明の実施の形態の等価性検証装置１００によれば、回路の機能を示す２つの記述、たとえば、動作合成前後の対応関係にある動作記述３１とＲＴＬ記述３２のそれぞれのビット幅情報３６を考慮しつつ信号値関数３８を取得する信号値関数抽出部１０６と、さらにビット幅情報３６に基づく有効なビット幅か否かで信号値の比較結果に仮定を与えつつ、等価性検証を行う信号値関数比較部１１０と、を備えるので、比較対象となる変数や信号のビット幅が異なる場合でも、信頼性の高い等価性検証を行うことができる。
【００６１】
たとえば、動作合成前後において、レジスタのビット幅が変数のビット幅から縮減されている場合に、信号値関数比較部１１０が、その変数とレジスタが参照されるビット幅の情報を考慮して等価性検証を行うので、ビット幅の減縮が考慮されていない等価性検証装置で生じていた、疑似エラーや検証漏れといった問題が生じることなく信頼性の高い等価性検証を行うことが可能になる。
【００６２】
すなわち、信号値比較の対象となる変数または信号にビット幅情報３６が与えられるので、変数や信号の実際のビット幅に関わらず、当該与えられたビット幅情報３６に基づき信号値関数３８を抽出して信号値比較を行うことができる。
【００６３】
特に、各々の変数や信号について、他の変数や信号に参照されるビットは出力値に影響を及ぼしうるため、それらのビットに対する信号値比較が等価性を保障する上で必要十分な条件であると言える。しかしながら、ビット幅情報として、対応関係にある変数や信号が参照されるビット幅をビット幅情報３６として与えることにより、等価性検証の精度を向上させることができる。すなわち、記述全体の出力に影響を及ぼす可能性があり、記述の等価性を判定する上で必要となるビットの信号値関数３８は、必ず比較されることとなる。一方、出力に影響を及ぼす可能性がなく等価性の判定で必要がない、削減対象となるビットの信号値関数３８を、等価性検証の対象から除外することができる。
【００６４】
このような構成を採用することにより、等価性を検証するために必要な変数や信号の信号値比較を、各々の変数や信号への代入や参照のビット幅など、等価性を証明するために必要なビットであるかどうかを考慮しながら過不足なく行われるため、ビット幅が変化したことの妥当性を含めた正確な検証結果を高速に報告するという効果を達成することができる。
【００６５】
本発明の実施の形態に係る等価性検証装置１００によれば、信号値比較の対象となる変数や信号のビット幅が縮減された場合に、疑似エラーや検証漏れを回避できる。
疑似エラーを回避できる理由は、与えられたビット幅情報３６に基づき信号値関数３８を取得し比較するため、対応する変数および信号のビット幅が縮減された場合には、適切なビット幅情報３６を与えることによって縮減されたビットについては等価性検証の対象から除外することができるためである。
【００６６】
また、検証漏れが回避できる理由は、対応関係にある変数や信号が参照されるビット幅をビット幅情報３６とするなど、適切なビット幅情報３６を与えることにより、等価性の証明に必要なビットの比較が必ず行われるためである。また、もしビット幅情報３６が誤って与えられた場合でも、ビット幅情報３６を超えたビットに対して信号値が異なるとの仮定が与えられている。このため、本来は参照されないはずの信号値が参照される場合など、等価性の証明に不要と判断されるビットが信号値関数３８に含まれるならば、検証結果が不一致になることで、そのことを確認できるためである。
【００６７】
さらに、本発明の実施の形態に係る等価性検証装置１００によれば、比較対象となる変数や信号のビット幅を変化させた場合に、ビット幅情報を適宜変化させて与えることでその妥当性を報告できる。
その理由は、実際に参照されるビット幅に対して信号のビット幅が適切に縮減されている場合で、ビット幅情報３６に実際に参照されるビット幅より大きいビット幅を与えれば疑似エラーを報告し、適切なビット幅を与えれば一致との結果を報告することができるためである。一方、信号のビット幅が過剰に削減された場合は、参照されるビット幅をビット幅情報３６で与えれば、不一致との結果を報告することが可能であるためである。
【００６８】
また、ビット幅の縮減などのような最適化が行われていない回路に対する等価性検証では、前記の疑似エラーや検証漏れ等の問題点が生ずることはない。しかし、内部の信号のビット幅が実際に代入または参照される値を表すために必要なビット幅より大きい場合、回路面積で無駄が生じるだけでなく、等価性検証においてもその実行時間や仕様記憶域が増大するという、別の問題点を生じることがあった。
【００６９】
さらに、本発明の実施の形態に係る等価性検証装置１００によれば、検証の高速化を図ることができる。
その理由は、信号値関数３８をビット幅情報３６にて指定された範囲に絞り込むため、等価性の判定に不要な信号値関数３８に対する論理等価性検証を行わなくても等価性検証が可能になるためである。
【００７０】
このように、本発明によれば、２つの記述の等価性を、各記述の検証対象となる信号線の信号値関数３８を比較することで検証する等価性検証装置１００において、比較対象となる変数やレジスタのビット幅が異なる場合であっても、ビット幅が変化したことが妥当であることも含めて、疑似エラーや検証漏れを起こすことなく、かつ高速に等価性検証を行うことができる形式的な等価性検証システムを提供することができる。
【００７１】
（第２の実施の形態）
図３は、本発明の実施の形態に係る等価性検証装置２００の構成を示す機能ブロック図である。本実施形態の等価性検証装置２００は、上記実施の形態とは、記憶装置４０を参照し、第１の記述（動作記述３１）および第２の記述（ＲＴＬ記述３２）のいずれかまたは両方と対応情報３４を解析し、記憶装置４０のビット幅情報４２にフィードバックする点で相違する。本実施形態でも、図３の動作合成装置２０による動作合成前後の動作記述３１とＲＴＬ記述３２との等価性を検証する等価性検証装置２００を例に説明する。
【００７２】
本実施形態の等価性検証装置２００は、上記実施形態の等価性検証装置１００と同じ構成を有し、さらに、動作記述３１およびＲＴＬ記述３２に記述された変数または信号に対する対応関係の各々について、ビット幅を解析し、ビット幅情報４２にフィードバックするビット幅解析部２０２を備える。
本実施形態では、図１の上記実施形態の記憶装置３０に換えて、記憶装置４０を備えている。
【００７３】
ビット幅解析部２０２は、取得部１０２が取得した動作記述３１およびＲＴＬ記述３２のいずれか一方または両方と対応情報３４とを解析し、ビット幅情報４２を取得してその結果をビット幅情報４２に記憶する。動作合成装置２０により既にビット幅情報３６（図３には不図示）が与えられている場合、記憶装置４０は、動作合成装置２０のビット幅情報と、ビット幅解析部２０２のビット幅情報４２の両方を保持することができる。
【００７４】
ビット幅解析部２０２がビット幅情報４２として取得する情報は、データフローやそれぞれの変数が取りうる値の範囲の解析などを行い、信号値比較の対象となる変数や信号のビット幅が縮減される場合などに、その変数や信号が参照されて出力結果に影響を及ぼすビット幅をなどが挙げられる。
【００７５】
本実施形態の信号値関数抽出部１０６では、信号値関数３８を抽出するにあたり、ビット幅情報４２について、動作合成装置２０から取得した情報とビット幅解析部２０２で取得した情報のどちらか一方を用いてもよいし、両方用いてもよい。ここで、ビット幅情報４２が比較対象となる変数やレジスタに２以上与えられている場合にあっては、対応情報３４を考慮して、適切なビット幅情報４２を選択してビット幅を決定することができる。
【００７６】
このように合成された本実施形態の等価性検証装置２００の動作について、以下に説明する。以下、図３および図４を用いる。なお、図４に示すように、本実施形態の等価性検証装置２００は、図２の上記実施形態の等価性検証装置１００の動作を示すフローチャートと同様のステップを有するとともに、ステップＳ１０３の後に、ビット幅解析部２０２によるビット幅情報４２を取得するステップＳ２０１をさらに有する。
【００７７】
等価性検証装置２００にビット幅解析部２０２を備えることによって、等価性を検証すべきである変数や信号の一部またはすべてについて動作合成装置２０からビット幅情報を得られない場合であっても、ビット幅解析部２０２でビット幅情報４２を求めることができる。このため、与えられたビット幅情報に誤りが存在する場合であっても、上記実施形態と同様な効果を奏するとともに、ビット幅解析部２０２で求めたビット幅情報４２と動作合成装置２０から取得したビット幅情報を比較することで検出できるため、さらに、疑似エラーなどの問題が生じる可能性を低くすることができるという効果も得られる。
【００７８】
以上、図面を参照して本発明の実施形態について述べたが、これらは本発明の例示であり、上記以外の様々な構成を採用することもできる。
【００７９】
上記実施形態では、第１の記述および第２の記述は、それぞれ動作合成前後の動作記述３１およびＲＴＬ記述３２として説明したが、これに限定されない。たとえば、動作記述とそれを元に人手で記述したＲＴＬ記述として、対応情報やビット幅情報は別途設計者が指定して与えてもよい。あるいは、ある動作記述に対して何らかの書換えを行った動作記述や、ＲＴＬ記述に対して何らかの書換えを行ったＲＴＬ記述、ＲＴＬ記述から論理合成を行うことで得られたゲートレベル記述、ソフトウェア記述に対して何らかの書換えを行ったソフトウェア記述をそれぞれ比較する２つの記述として与えてもよい。すなわち、半導体集積回路により実現しようとする機能を表す種々の抽象度のハードウェア記述や、アルゴリズムや各種アプリケーションなど、一連の機能を表すソフトウェア記述を、本発明における第１の記述および第２の記述とすることができる。
【００８０】
ビット幅情報についても、常にビット幅解析部２０２で求めたビット幅情報４２を使用する形態としてもよいし、また、ビット幅解析部２０２を備えることに代えて、等価性検証装置にビット幅情報受付部（不図示）を備え、設計者が与えた、対応関係にある変数や信号のそれぞれについて、ビット幅情報を受け付ける形態としてもよい。これらの形態は、動作合成装置がビット幅情報を出力しない場合や、動作記述とそれを元に人手で記述したＲＴＬ記述との等価性検証を行おうとする場合に特に有効であると考えられる。
【００８１】
また、ビット幅情報の内容としては、検証対象となる変数や信号のビット幅が縮減された場合に、その変数や信号が参照されるビット幅をビット幅情報として与えるだけでなく、参照されるビット幅より大きなビット幅をビット幅情報として与えることも考えられる。
【００８２】
かかる場合、参照されるビット幅より大きなビット幅をビット幅情報として与えた場合には、縮減対象となるレジスタが実際に参照されるビット幅と同じ幅までに縮減されていたら疑似エラーが報告される。
【００８３】
また、参照されるビット幅より大きなビット幅となるように縮減されていたら、その幅まではビット幅情報で与えるビット幅を大きくしても一致と報告されるので、ビット幅の縮減が十分でないことが判断できる。すなわち、２つの記述が等価であるか否かの判断に加えて、ビット幅が過不足なく十分に縮減されているかを判断することも可能になる。
【００８４】
さらに、ビット幅縮減がなされていない変数や信号に対しても、その変数や信号の一部のビット幅しか参照されていないなら、当該参照されるビット幅をビット幅情報として与えて検証してもよい。かかる場合は、ビット幅情報を与えなくとも疑似エラーや検証漏れの可能性はないが、ビット幅情報を与えることで信号値関数比較部に与えられるビット幅が絞り込まれるため、信号値比較の高速化や使用するメモリ量の削減にも効果がある。
【実施例】
【００８５】
次に、具体的な実施例を用いて本発明の等価性検証装置の動作を説明する。以下、図１および図２を用いて説明した等価性検証装置１００を例とする。
図５は、記憶装置３０に記憶された動作記述３１の具体例を示している。図５に示す記述はＳｙｓｔｅｍＣ言語を用いて書かれているものとする。
【００８６】
動作合成装置２０は、上記動作記述３１を入力して、動作合成処理を行う。図６は、図５に示す動作記述３１を動作合成して得られたＲＴＬ記述３２の具体例を示している。図６に示すＲＴＬ記述３２はＶｅｒｉｌｏｇ  ＨＤＬ言語を用いて書かれているものとする。また、対応情報３４として、動作記述３１における出力変数は、動作合成後のＲＴＬ記述３２における同名の出力信号線に対応し、動作記述３１の変数ｒ１はＲＴＬ記述３２の信号ＲＧ＿ｒ１に対応するとの情報が与えられるものとする。また、ｒ１とＲＧ＿ｒ１との間には、ビット幅情報３６として下位１６ビットが参照されるとの情報が与えられるものとする。この１６ビットは、出力ｏが１６ビットであること、ｒ１およびＲＧ＿ｒ１は、出力ｏからのみ参照されることに起因する。ＲＴＬ記述３２、対応情報３４およびビット幅情報３６は、それぞれ記憶装置３０に記憶されるものとする。
【００８７】
等価性検証装置１００は、図５に示す動作記述３１と図６に示すＲＴＬ記述３２の間の等価性を検証する。まず、取得部１０２により、記憶装置３０から動作記述３１（図５）とＲＴＬ記述３２（図６）が入力される。
【００８８】
続いて、信号値関数抽出部１０６が、読み込まれた動作記述３１とＲＴＬ記述３２に加えて対応情報３４を参照し、対応関係にある変数と信号に対する信号値関数３８を抽出する。図８に示すように、対応情報３４には、動作記述３１の変数（ＢＥＨＡＶＥ＿ＳＩＧ）とＲＴＬ記述３２の信号（ＲＴＬ＿ＳＩＧ）が対応付けられており、たとえば、変数ｒ１と信号ＲＧ＿ｒ１が対応関係にあることが含まれている。本実施例では、対応情報３４から、変数ｒ１と信号ＲＧ＿ｒ１の信号値関数３８を抽出する場合を考える。また、信号値関数３８の取得に際しては、ビット幅情報３６も取得するものとする。
【００８９】
図９に示すように、ビット幅情報３６には、動作記述３１の変数の有効ビット（ＢＥＨＡＶＥ＿ＳＩＧ＿ＢＷ）と対応関係にあるＲＴＬ記述３２信号の有効ビット（ＲＴＬ＿ＳＩＧ＿ＢＷ）が対応付けられて記憶されている。ここでは、ｒ１の下位１６ビットとＲＧ＿ｒ１の１６ビット全体が対応関係にあることが示されている。ビット幅情報３６に基づいて、元の変数や信号に対する信号値関数３８を取得した上で、ビット幅情報３６より実際の変数などのビット幅が大きければビット幅情報３６に対応する下位のビット分の信号値関数３８のみを取得する。一方、ビット幅情報３６より実際の変数などのビット幅が小さければ、不足ビット分に対応する上位ビットをその変数や信号の符号に応じて０もしくは最上位ビットの値で補充し、ビット幅情報３６に示されるビット幅に対応するビット分の信号値関数３８を取得するものとする。なお、図８および図９の各情報の構造は、一例であり、これに限定されるものではなく、様々な態様が考えられる。
【００９０】
ｒ１とＲＧ＿ｒ１に対する信号値関数３８を図示すると、それぞれ図７の符号３８ａおよび符号３８ｂのとおりになる。ｒ１は３２ビットの変数として宣言されているので、ここで取得した信号値関数３８はそのうち下位１６ビットである。ＲＧ＿ｒ１は１６ビットの信号として宣言されているので、信号値がそのままここで取得した信号値関数３８となる。
【００９１】
信号値関数３８が取得されると、信号値関数比較部１１０にて比較対象の２つの信号値関数３８の等価性が検証される。本実施例では、ビット幅情報３６に基づいて１６ビットの信号値として比較を行っているため、信号値関数比較部１１０は、ｒ１とＲＧ＿ｒ１が一致するとの結果を報告する。
【００９２】
もし、この比較をｒ１のビット幅を基準として３２ビットの信号値として比較を行った場合、ＲＧ＿ｒ１の信号値について上位１６ビットは０を補充することになるので、上位ビットにも演算結果が入るｒ１との信号値の比較では不一致との結果（疑似エラー）を返してしまう。
【００９３】
あるいは、ＲＧ＿ｒ１のビット幅を基準として信号値比較を行った場合、本実施例のように正しくビット幅が縮減されている場合には問題ないが、誤って過剰にビット幅が縮減された場合にも一致との結果を返してしまう。本実施例のように、ビット幅情報に基づいて信号値比較を行うことで、誤って過剰にビット幅が縮減された場合には、上位ビットの信号値が異なるため、不一致との結果を正しく返すことができるようになる。
【００９４】
また、記述全体の等価性を検証するためには、前記ｒ１とＲＧ＿ｒ１以外に対応関係にある信号の信号値関数を比較する必要があるが、かかる場合には、ｒ１とＲＧ＿ｒ１の信号値は下位１６ビットの信号値は等しいとの、１６ビットを超える信号値は等しくないとの仮定を与えて信号値比較を行うことができる。
【００９５】
以上、実施形態および実施例を参照して本願発明を説明したが、本願発明は上記実施形態および実施例に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【００９６】
２０  動作合成装置
３０  記憶装置
３１  動作記述
３２  ＲＴＬ記述
３４  対応情報
３６  ビット幅情報
３８  信号値関数
１００  等価性検証装置
１０２  取得部
１０４  特定部
１０６  信号値関数抽出部
１１０  信号値関数比較部
１１２  検証結果判定部
２００  等価性検証装置
２０２  ビット幅解析部
４０  記憶装置
４２  ビット幅情報
【図１】
2011034517.tif 000003
【図２】
2011034517.tif 000004
【図３】
2011034517.tif 000005
【図４】
2011034517.tif 000006
【図５】
2011034517.tif 000007
【図６】
2011034517.tif 000008
【図７】
2011034517.tif 000009
【図８】
2011034517.tif 000010
【図９】
2011034517.tif 000011
【図１０】
2011034517.tif 000012
【図１１】
2011034517.tif 000013