(57)【要約】【課題】人手による作業を行うことなく、比較元回路と、この比較元回路に、論理的に等価なフリップフロップが挿入された比較対象回路との論理等価検証を自動的に行うこと。【解決手段】フリップフロップ間にバッファやインバータが存在する場合、全てのバッファと偶数個のインバータを削除する。比較元回路および比較対象回路について、論理的に等価なフリップフロップを削除し、他のフリップフロップにマージして一つのフリップフロップとする。マージ処理によって削除されるフリップフロップの名前を、マージ処理後に残るフリップフロップの名前に追加する。比較元回路および比較対象回路について、各フリップフロップが持つ複数の名前を全て調べ、名前が一致するフリップフロップを検証対象のペアとする。ペアを作成したフリップフロップの入力を始点とするロジックコーンについて、比較元回路と比較対象回路の比較検証を行う。【選択図】図３
2008262337.tif 000002
【特許請求の範囲】
【請求項１】
比較元回路と比較対象回路との論理等価検証を行う論理等価検証装置において、
比較元回路および比較対象回路の各設計データに基づいて、前記比較元回路および前記比較対象回路のそれぞれについて、論理的に等価なフリップフロップを、該フリップフロップの挿入箇所から削除して他のフリップフロップにマージするフリップフロップマージ手段と、
それぞれ、前記フリップフロップマージ手段で論理的に等価なフリップフロップが削除された比較元回路および比較対象回路について、対応するフリップフロップの名前が一致するか否かを調べるマッチング手段と、
を備えることを特徴とする論理等価検証装置。
【請求項２】
比較元回路と比較対象回路との論理等価検証を行う論理等価検証方法において、
比較元回路および比較対象回路の各設計データに基づいて、前記比較元回路および前記比較対象回路のそれぞれについて、論理的に等価なフリップフロップを、該フリップフロップの挿入箇所から削除して他のフリップフロップにマージするフリップフロップマージ工程と、
それぞれ、前記フリップフロップマージ工程で論理的に等価なフリップフロップが削除された比較元回路および比較対象回路について、対応するフリップフロップの名前が一致するか否かを調べるマッチング工程と、
を含むことを特徴とする論理等価検証方法。
【請求項３】
前記フリップフロップマージ工程では、マージ処理によって削除されるフリップフロップの名前を、マージ処理後に残るフリップフロップの名前に追加することを特徴とする請求項２に記載の論理等価検証方法。
【請求項４】
前記フリップフロップマージ工程では、マージ処理によって削除されるフリップフロップが、マージ処理後に残るフリップフロップと同じクロック信号で駆動されている場合に、マージ処理を行うことを特徴とする請求項２に記載の論理等価検証方法。
【請求項５】
前記フリップフロップマージ工程では、マージ処理によって削除されるフリップフロップのデータラインが１入力１出力タイプのフリップフロップである場合に、マージ処理を行うことを特徴とする請求項４に記載の論理等価検証方法。
【請求項６】
前記フリップフロップマージ工程では、マージ処理によって削除される複数のフリップフロップにおいて、前段のフリップフロップの出力の論理と後段のフリップフロップの入力の論理が同じである場合に、マージ処理を行うことを特徴とする請求項４または５に記載の論理等価検証方法。
【請求項７】
前記フリップフロップマージ工程では、マージ処理によって削除されるフリップフロップが、マージ処理後に残るフリップフロップと同じタイプである場合に、マージ処理を行うことを特徴とする請求項４に記載の論理等価検証方法。
【請求項８】
前記フリップフロップマージ工程の前に、マージ処理によって削除される複数のフリップフロップ間にバッファもしくは偶数個のインバータが存在する場合、該バッファおよび該インバータを削除する論理圧縮工程、をさらに含むことを特徴とする請求項２に記載の論理等価検証方法。
【請求項９】
請求項２〜８のいずれか一つに記載の論理等価検証方法をコンピュータに実行させることを特徴とする論理等価検証プログラム。
【請求項１０】
請求項９に記載の論理等価検証プログラムを記録したことを特徴とするコンピュータに読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、二つの回路の論理が等価であるか否かを自動的に検証する論理等価検証装置、論理等価検証方法、論理等価検証プログラムおよび記録媒体に関する。
【背景技術】
【０００２】
集積回路の設計において、非同期の異なるクロック信号で駆動される２個のフリップフロップ間のパス（非同期パス）には、データ転送におけるメタ・ステーブル問題の対策として、タイミングを補償するためのシンクロナイザが挿入される。一般に、シンクロナイザは、１個以上のフリップフロップにより構成される。フリップフロップは、入力信号を１クロック遅らせて出力するので、非同期パスにフリップフロップが挿入されても、他の組み合わせ回路等の論理には影響がない。電源の異なるブロック間に挿入されるレベルシフタも、他の組み合わせ回路等の論理に影響を及ぼさない。
【０００３】
図１４は、論理等価検証を行う２個の回路を示すアルゴリズム説明図である。図１４に示す例では、比較元回路１は、出力ポートを始点とし、第１の組み合わせ回路２で構成される第１のロジックコーン４に、第１のフリップフロップＡ（ＦＦ＿Ａ）３の入力を始点とし、第２の組み合わせ回路５で構成される第２のロジックコーン８が接続され、この第２のロジックコーン８に、さらに第２のフリップフロップＢ（ＦＦ＿Ｂ）６の入力を始点とし、第３の組み合わせ回路９で構成される第３のロジックコーン１０と第３のフリップフロップＣ（ＦＦ＿Ｃ）７の入力を始点とする第６のロジックコーン１１が接続された構成となっている。第２のフリップフロップＢ６と第３のフリップフロップＣ７を駆動するクロック信号は、クロック信号Ｆ（ＣＬＫ＿Ｆ）であり、第１のフリップフロップＡ３を駆動するクロック信号は、クロック信号Ｇ（ＣＬＫ＿Ｇ）である。
【０００４】
図１４に示す例では、比較対象回路２１は、比較元回路１の第２の組み合わせ回路５と第１のフリップフロップＡ３を結ぶ非同期パスに、第４のフリップフロップＤ（ＦＦ＿Ｄ）２２と第５のフリップフロップＥ（ＦＦ＿Ｅ）２３が挿入されている。第４のフリップフロップＤ２２および第５のフリップフロップＥ２３は、クロック信号Ｇ（ＣＬＫ＿Ｇ）で駆動される。比較対象回路２１では、第１のロジックコーン４に、第１のフリップフロップＡ３の入力を始点とする第４のロジックコーン２４が接続され、この第４のロジックコーン２４に、第４のフリップフロップＤ２２の入力を始点とする第５のロジックコーン２５が接続され、この第５のロジックコーン２５に第２のロジックコーン８が接続された構成となる。このとき、第２のロジックコーン８の始点は、第５のフリップフロップＥ２３となる。
【０００５】
また、第４のフリップフロップＤ２２と第５のフリップフロップＥ２３の間に、インバータ２６，２７やバッファ２８，２９，３０が挿入されることもある。論理等価検証では、比較対象回路２１と比較元回路１で名前の一致するものをペアとして、ロジックコーン同士の検証が行われる。そして、すべてのロジックコーンが論理的に一致すれば、比較対象回路２１と比較元回路１が論理等価であると判断される。ここで、ロジックコーンは、一般に論理等価検証を行う単位ブロックであり、出力ポート、フリップフロップの入力またはブラックボックスモジュールの入力ピンを始点とし、入力ポート、フリップフロップからの出力またはブラックボックスモジュールの出力ポートを終点とするブロックである。
【０００６】
論理等価検証の対象となる二つの論理のうちの一方に他方に無い追加論理が存在する場合の論理回路の論理等価検証方法が公知である。この方法は、追加論理の情報を用いて、追加論理を除いた元論理と元々追加論理を含まない論理との等価性を検証することを特徴とする（例えば、特許文献１参照。）。
【０００７】
【特許文献１】特開２００１−６７３７９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、従来の論理等価検証方法では、同じ名前のものをペアとして、ロジックコーン同士を比較するため、図１４において、比較元回路１と比較対象回路２１は、論理的に一致するにもかかわらず、それぞれ第１のフリップフロップＡ３の入力を始点とする第２のロジックコーン８と第４のロジックコーン２４との比較で不一致となってしまう。この場合には、設計者が、不一致としてエラー検出された箇所を一つずつ確認したり、比較対象回路２１の第５のフリップフロップＥ２３と比較元回路１の第１のフリップフロップＡ３がペアであることを指示ファイルに記述する必要がある。このような人手による作業には、手間や時間がかかるという不都合や、間違いを犯すおそれがあるという問題点がある。また、前記特許文献１に開示された方法では、追加論理の情報を用いて、追加論理を除くための手間がかかるという問題点がある。
【０００９】
この発明は、上述した従来技術による問題点を解消するため、人手による作業を行うことなく、比較元回路と、この比較元回路に、論理的に等価なフリップフロップが挿入された比較対象回路との論理等価検証を自動的に行うことができる論理等価検証装置、論理等価検証方法、論理等価検証プログラムおよび記録媒体を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上述した課題を解決し、目的を達成するため、本発明にかかる論理等価検証装置、論理等価検証方法、論理等価検証プログラムおよび記録媒体は、以下の特徴を有する。マージ処理によって削除される複数のフリップフロップ間にバッファやインバータが存在する場合、全てのバッファと偶数個のインバータを削除する（論理圧縮工程）。そして、比較元回路について、論理的に等価なフリップフロップを、その挿入箇所から削除して他のフリップフロップにマージ（統合）して一つのフリップフロップとする。比較対象回路についても同様にする（フリップフロップマージ工程）。その際、マージ処理によって削除されるフリップフロップの名前を、マージ処理後に残るフリップフロップの名前に追加する。その後、マージ処理の済んだ比較元回路および比較対象回路について、フリップフロップの対応付けを行う（マッチング工程）。これには名前が一致するか否かを調べるネームマッチング工程を含む。名前が一致しなければ、別の手段による対応付け処理を行うが、この発明ではこの部分については言及しない。対応付けされたペアに対して、比較元回路と比較対象回路の比較検証を行い（比較検証工程）、レポートを出力する。なお、本明細書において、論理的に等価であるとは、論理的に影響のないことを意味している。従って、論理的に等価なフリップフロップとは、入力と同じ論理を出力するフリップフロップという意味である。
【００１１】
この発明によれば、論理的に等価なフリップフロップがその挿入箇所から削除されて他のフリップフロップにマージされる。また、このマージ処理によって削除されるフリップフロップの名前がマージ処理後に残るフリップフロップの名前に追加される。従って、比較元回路と、シンクロナイザやレベルシフタなどのように論理的に等価なフリップフロップが挿入された比較対象回路との論理等価検証を行う際に、論理的に等価なフリップフロップの挿入が原因で両回路の論理が不一致であるという結果が出るのを防ぐことができる。
【発明の効果】
【００１２】
本発明にかかる論理等価検証装置、論理等価検証方法、論理等価検証プログラムおよび記録媒体によれば、人手による作業を行うことなく、比較元回路と、この比較元回路に、論理的に等価なフリップフロップが挿入された比較対象回路との論理等価検証を自動的に行うことができるという効果を奏する。
【発明を実施するための最良の形態】
【００１３】
以下に添付図面を参照して、この発明にかかる論理等価検証装置、論理等価検証方法、論理等価検証プログラムおよび記録媒体の好適な実施の形態を詳細に説明する。
【００１４】
（論理等価検証装置のハードウェア構成）
まず、この発明の実施の形態にかかる論理等価検証装置のハードウェア構成について説明する。図１は、この発明の実施の形態にかかる論理等価検証装置のハードウェア構成を示すブロック図である。
【００１５】
図１において、論理等価検証装置は、ＣＰＵ１０１と、ＲＯＭ１０２と、ＲＡＭ１０３と、ＨＤＤ（ハードディスクドライブ）１０４と、ＨＤ（ハードディスク）１０５と、ＦＤＤ（フレキシブルディスクドライブ）１０６と、着脱可能な記録媒体の一例としてのＦＤ（フレキシブルディスク）１０７と、ディスプレイ１０８と、Ｉ／Ｆ（インターフェース）１０９と、キーボード１１０と、マウス１１１と、スキャナ１１２と、プリンタ１１３と、を備えている。また、各構成部は、バス１００によってそれぞれ接続されている。
【００１６】
ここで、ＣＰＵ１０１は、論理等価検証装置の全体の制御を司る。ＲＯＭ１０２は、ブートプログラムなどのプログラムを記憶している。ＲＡＭ１０３は、ＣＰＵ１０１のワークエリアとして使用される。ＨＤＤ１０４は、ＣＰＵ１０１の制御に従ってＨＤ１０５に対するデータのリード／ライトを制御する。ＨＤ１０５は、ＨＤＤ１０４の制御で書き込まれたデータを記憶する。
【００１７】
ＦＤＤ１０６は、ＣＰＵ１０１の制御に従ってＦＤ１０７に対するデータのリード／ライトを制御する。ＦＤ１０７は、ＦＤＤ１０６の制御で書き込まれたデータを記憶したり、ＦＤ１０７に記憶されたデータを論理等価検証装置に読み取らせたりする。
【００１８】
また、着脱可能な記録媒体として、ＦＤ１０７のほか、ＣＤ−ＲＯＭ（ＣＤ−Ｒ、ＣＤ−ＲＷ）、ＭＯ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）、メモリーカードなどであってもよい。ディスプレイ１０８は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ１０８は、例えば、ＣＲＴ、ＴＦＴ液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
【００１９】
Ｉ／Ｆ１０９は、通信回線を通じてインターネットなどのネットワーク１１４に接続され、このネットワーク１１４を介して他の装置に接続される。そして、Ｉ／Ｆ１０９は、ネットワーク１１４と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。Ｉ／Ｆ１０９には、例えばモデムやＬＡＮアダプタなどを採用することができる。
【００２０】
キーボード１１０は、文字、数字、各種指示などの入力のためのキーを備え、データの入力を行う。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス１１１は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などを行う。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
【００２１】
スキャナ１１２は、画像を光学的に読み取り、論理等価検証装置内に画像データを取り込む。なお、スキャナ１１２は、ＯＣＲ機能を持たせてもよい。また、プリンタ１１３は、画像データや文書データを印刷する。プリンタ１１３には、例えば、レーザプリンタやインクジェットプリンタを採用することができる。
【００２２】
（論理等価検証装置の機能的構成）
次に、この発明の実施の形態にかかる論理等価検証装置の機能的構成について説明する。図２は、この発明の実施の形態にかかる論理等価検証装置の機能的構成を示すブロック図である。図２に示すように、論理等価検証装置４１は、デザイン読み込み部４２、論理圧縮部４３、フリップフロップマージ部４４、マッチング部４５、比較検証部４６およびレポート出力部４７を備えている。
【００２３】
デザイン読み込み部４２は、ＲＴＬ、ネットリスト等の比較元回路データ４８およびＲＴＬ、ネットリスト等の比較対象回路データ４９を読み込む。比較元回路または比較対象回路には、後述するマージ処理によって削除されるフリップフロップ間にバッファやインバータが存在することがある。バッファは、入力と出力の論理が同じであるので、削除されても、論理的な影響はない。また、インバータは、入力と出力の論理が反転するので、偶数個ずつ削除されても、論理的な影響はない。
【００２４】
そこで、論理を圧縮するため、論理圧縮部４３は、これらのバッファやインバータを削除する。バッファについては、全てを削除してよいが、インバータについては偶数個ずつ削除する。例えば、図１４に示す比較対象回路２１の例では、論理圧縮部４３は、第４のフリップフロップＤ２２と第５のフリップフロップＥ２３の間に存在する全てのバッファ２８，２９，３０と偶数個（２個）のインバータ２６，２７を削除する。論理圧縮部４３は、比較元回路と比較対象回路の両方に対して論理圧縮処理を行う。
【００２５】
フリップフロップマージ部４４は、論理圧縮部４３により論理が圧縮された回路データに基づいて、シンクロナイザやレベルシフタなどの論理的に等価なフリップフロップを、その挿入箇所から削除して前段のフリップフロップにマージ、すなわち統合して一つのフリップフロップとする。その際、フリップフロップマージ部４４は、マージのために削除するフリップフロップのレジスタ名を、マージ処理後に残るフリップフロップの名前に追加し、それによって、削除されるフリップフロップのレジスタ名も保持する。
【００２６】
例えば、図１４に示す比較対象回路２１の例では、第４のフリップフロップＤ２２と第５のフリップフロップＥ２３は、他の回路の論理に影響を及ぼさないので、フリップフロップマージ部４４は、マージ処理によって、この二つのフリップフロップＤ２２，Ｅ２３を削除し、第１のフリップフロップＡ３にマージする。そして、フリップフロップマージ部４４は、第１のフリップフロップＡ３のレジスタ名を、ＦＦ＿Ａ、ＦＦ＿ＤおよびＦＦ＿Ｅとする。フリップフロップマージ部４４は、比較元回路と比較対象回路の両方に対してマージ処理を行う。フリップフロップマージ部４４は、次の（１）〜（４）の条件を満足するときに、マージ処理を行う。
【００２７】
（１）マージ処理によって削除されるフリップフロップが、マージ処理後に残るフリップフロップと同じクロック信号で駆動されていること。ここで、フリップフロップマージ部４４は、二つのフリップフロップを駆動するクロック信号について、クロック名が同じである場合、外部より与えたクロックドメイングループが同じである場合、またはクロック信号のバックトレースにより同一クロックドメインと判断される場合に、二つのフリップフロップが同じクロック信号で駆動されていると判断する。例えば、図１４に示す比較対象回路２１の例では、第４のフリップフロップＤ２２および第５のフリップフロップＥ２３は、第１のフリップフロップＡ３と同じクロック信号Ｇ（ＣＬＫ＿Ｇ）で駆動されているので、上記（１）の条件を満たす。
【００２８】
（２）マージ処理によって削除されるフリップフロップのデータラインが１入力１出力タイプのフリップフロップであること。フリップフロップに複数の入力がある場合、または複数の出力がある場合には、このフリップフロップがマージによって他のフリップフロップに統合されてしまうと、このフリップフロップへ信号を出力する回路の出力先がなくなったり、このフリップフロップから信号を入力する回路に信号が入力されなくなるという不具合が生じる。そのため、マージ処理を行うことができない。例えば、図１４に示す比較対象回路２１の例では、第４のフリップフロップＤ２２および第５のフリップフロップＥ２３は、データラインが１入力１出力タイプのフリップフロップであるので、この（２）の条件を満たす。
【００２９】
（３）マージ処理によって削除される複数のフリップフロップ間に論理回路が存在しないこと。（４）マージ処理によって削除されるフリップフロップが、マージ処理後に残るフリップフロップと同じタイプであること。フリップフロップには、入力ピンがデータ（ＤＡＴＡ）ピンとクロック（ＣＬＫ）ピンだけである単純なタイプのものや、それらの入力ピン以外に、セット（ＳＥＴ）ピン、もしくはリセット（ＲＥＳＥＴ）ピンを有する単純でないタイプのものや、セット（ＳＥＴ）ピンとリセット（ＲＥＳＥＴ）ピンの両方を有する単純でないタイプのものなどがある。入力ピンの種類が同じフリップフロップ同士であれば、マージ処理を行うことができる。
【００３０】
ただし、入力ピンの種類が同じでなくても、前記単純なタイプのフリップフロップは、いずれのタイプのフリップフロップともマージすることができる。この場合、前記単純なタイプのフリップフロップが削除され、単純でないタイプのフリップフロップが残る。例えば、図１４に示す比較対象回路２１の例では、第４のフリップフロップＤ２２および第５のフリップフロップＥ２３は、第１のフリップフロップＡ３と同じ単純なタイプのフリップフロップであるので、この（４）の条件を満たす。
【００３１】
マッチング部４５は、フリップフロップマージ部４４によりそれぞれマージ処理がなされた比較元回路および比較対象回路の各データに基づいて、比較元回路と比較対象回路のフリップフロップを対応付ける。この時、双方の回路のフリップフロップの名前が一致するか否かを調べる。マッチング部４５は、フリップフロップの名前が一致しなければ、別の手段による対応付けを行っても良いが、この発明では言及しない。比較検証部４６は、マッチング部４５により対応づけられたフリップフロップの入力を始点とするロジックコーンについて、比較元回路と比較対象回路の比較検証を行う。レポート出力部４７は、比較検証部４６による比較検証結果のレポート５０を出力する。
【００３２】
なお、上述したデザイン読み込み部４２、論理圧縮部４３、フリップフロップマージ部４４、マッチング部４５、比較検証部４６およびレポート出力部４７は、具体的には、例えば、図１に示したＲＯＭ１０２、ＲＡＭ１０３、ＨＤ１０５などの記録媒体に記録されたプログラムを、ＣＰＵ１０１が実行することによって、またはＩ／Ｆ１０９によって、その機能を実現する。
【００３３】
（論理等価検証処理手順）
次に、この発明の実施の形態にかかる論理等価検証装置の処理手順について説明する。図３は、この発明の実施の形態にかかる論理等価検証装置の処理手順を示すフローチャートである。図３に示すように、論理等価検証処理が開始されると、まず、デザイン読み込み部４２により、比較元回路データ４８と比較対象回路データ４９が読み込まれる（ステップＳ１）。例えば、比較対象回路データ４９は、比較元回路のメタ・ステーブル問題の対策として、比較元回路にフリップフロップを挿入した回路のデータである。
【００３４】
次いで、論理圧縮部４３により、比較元回路および比較対象回路のそれぞれについて、バッファやインバータを削除する論理圧縮処理が行われる（ステップＳ２）。論理圧縮処理の詳細については、後述する。次いで、フリップフロップマージ部４４により、比較元回路および比較対象回路のそれぞれについて、フリップフロップのマージ処理が行われる（ステップＳ３）。このマージ処理の詳細については、後述する。
【００３５】
次いで、マッチング部４５により、比較元回路と比較対象回路で対応するロジックコーンの対応付けを行う。この発明ではフリップフロップの名前が一致するか否かを調べるネームマッチング処理を行う（ステップＳ４）。ネームマッチング処理の詳細については、後述する。次いで、比較検証部４６により、比較元回路と比較対象回路の論理が一致するか否かを調べる比較検証処理が行われる（ステップＳ５）。そして、レポート出力部４７により比較検証結果のレポートが出力され、（ステップＳ６）図３に示す一連の論理等価検証処理が終了する。
【００３６】
（論理圧縮処理手順）
図４は、論理圧縮処理手順を示すフローチャートである。図４に示すように、論理圧縮処理が開始されると、まず、注目したフリップフロップのデータピンに接続する前段の論理プリミティブ検索を行う（ステップＳ１１）。検索の結果、前段の回路がバッファであるか否かを判断する（ステップＳ１２）。バッファである場合（ステップＳ１２：Ｙｅｓ）、そのバッファをバッファ削除リストにスタックし、スタックしたバッファの前段の論理プリミティブ検索を行い（ステップＳ１３）、ステップＳ１２に戻る。
【００３７】
ステップＳ１２で、バッファでない場合（ステップＳ１２：Ｎｏ）、検索により得た前段回路がインバータであるか否かを判断する（ステップＳ１４）。インバータである場合（ステップＳ１４：Ｙｅｓ）、インバータカウンタをインクリメントし、そのインバータをインバータ削除リストにスタックする。そして、スタックしたインバータの前段のセル検索を行い（ステップＳ１５）、ステップＳ１２に戻る。ステップＳ１４で、インバータでない場合（ステップＳ１４：Ｎｏ）、検索により得た前段回路がフリップフロップであるか否かを判断する（ステップＳ１６）。
【００３８】
フリップフロップでない場合（ステップＳ１６：Ｎｏ）、インバータカウンタのリセット、インバータ削除リストの削除およびバッファ削除リストの削除を行う（ステップＳ１７）。そして、ステップＳ１１に戻る。ステップＳ１６で、フリップフロップである場合（ステップＳ１６：Ｙｅｓ）、インバータ削除リストにスタックされているインバータ群から［スタックされている個数／２］のあまりを除いた残りのインバータを削除し、バッファ削除リストにスタックされているバッファ群を削除する（ステップＳ１８）。そして、ステップＳ１７へ進む。以上のステップＳ１１〜ステップＳ１８の一連の処理を、回路全体について行い、図４に示す一連の論理圧縮処理が終了する。
【００３９】
図５は、論理圧縮処理後の回路を示すアルゴリズム説明図である。例えば、図１４に示す比較対象回路２１に対して論理圧縮処理を行った結果、図５に示すように、第４のフリップフロップＤ２２と第５のフリップフロップＥ２３の間のバッファ（２８，２９，３０）および偶数個のインバータ（２６，２７）が削除される。
【００４０】
（フリップフロップのマージ処理手順）
図６は、フリップフロップのマージ処理手順を示すフローチャートである。ここでは、説明の便宜上、二つのフリップフロップのうち、一方を比較元フリップフロップとし、他方を処理対象フリップフロップとする。図６に示すように、フリップフロップのマージ処理が開始されると、まず、注目した回路がフリップフロップであるか否かを判断する（ステップＳ２１）。フリップフロップである場合（ステップＳ２１：Ｙｅｓ）、これを比較元フリップフロップとし、比較元フリップフロップのデータパスピンの前段の論理プリミティブ検索を行う（ステップＳ２２）。検索により得た前段回路がフリップフロップであるか否かを判断する（ステップＳ２３）。
【００４１】
フリップフロップである場合（ステップＳ２３：Ｙｅｓ）、これを処理対象フリップフロップとし、処理対象フリップフロップのクロックが比較元フリップフロップのクロックと同じであるか否かを判断する（ステップＳ２４）。クロックが同じである場合（ステップＳ２４：Ｙｅｓ）、さらに、処理対象フリップフロップのデータラインのファンイン数およびファンアウト数が１であるか否かを判断する（ステップＳ２５）。データラインのファンイン数およびファンアウト数が１である場合（ステップＳ２５：Ｙｅｓ）、ステップＳ２６へ進む。データラインのファンイン数が２以上、もしくはファンアウト数が２以上である場合（ステップＳ２５：Ｎｏ）、また、ステップＳ２１、またはステップＳ２３でＮｏである場合、ステップＳ２１に戻る。そして、別の回路に注目し、ステップＳ２１〜ステップＳ２５を行う。
【００４２】
ステップＳ２６では、処理対象フリップフロップが単純なタイプのものであるか否かを判断する。単純なタイプのフリップフロップについては、先に説明した通りである。単純なタイプである場合（ステップＳ２６：Ｙｅｓ）、比較元フリップフロップが削除リストに登録されているか否かを判断する（ステップＳ２７）。登録されている場合（ステップＳ２７：Ｙｅｓ）、処理対象フリップフロップを削除リストにスタックする。この場合のマージ先フリップフロップは、比較元フリップフロップのマージ先と同じである。そして、比較元フリップフロップのマージ先フリップフロップの名前に処理中のフリップフロップの名前を全て追加する（ステップＳ２８）。
【００４３】
ステップＳ２７で、登録されていない場合（ステップＳ２７：Ｎｏ）、処理対象フリップフロップを削除リストにスタックする。この場合のマージ先フリップフロップは、比較元フリップフロップである。そして、比較元フリップフロップの名前に処理中のフリップフロップの名前を全て追加する（ステップＳ２９）。一方、ステップＳ２６で、単純なタイプでない場合（ステップＳ２６：Ｎｏ）、処理対象フリップフロップが比較元フリップフロップと同じタイプであるか否かを判断する（ステップＳ３０）。同じタイプである場合（ステップＳ３０：Ｙｅｓ）、ステップＳ２７へ進む。
【００４４】
同じタイプでない場合（ステップＳ３０：Ｎｏ）、さらに、比較元フリップフロップが単純なタイプであるか否かを判断する（ステップＳ３１）。単純なタイプでない場合（ステップＳ３１：Ｎｏ）、ステップＳ２１に戻り、別の回路に注目し、ステップＳ２１以降の処理を行う。単純なタイプである場合（ステップＳ３１：Ｙｅｓ）、処理対象フリップフロップが削除リストに登録されているか否かを判断する（ステップＳ３２）。登録されている場合（ステップＳ３２：Ｙｅｓ）、比較元フリップフロップを削除リストにスタックする。この場合のマージ先フリップフロップは、処理対象フリップフロップのマージ先と同じである。そして、処理対象フリップフロップのマージ先フリップフロップの名前に比較元フリップフロップの名前を全て追加する（ステップＳ３３）。
【００４５】
ステップＳ３２で、登録されていない場合（ステップＳ３２：Ｎｏ）、比較元フリップフロップを削除リストにスタックする。この場合のマージ先フリップフロップは、処理対象フリップフロップである。そして、処理対象フリップフロップの名前に比較元フリップフロップの名前を全て追加する（ステップＳ３４）。以上のステップＳ２１〜ステップＳ３４の一連の処理を、回路全体について行う。その後、削除リストに登録されているフリップフロップ全体について、フリップフロップの削除を行い（ステップＳ３５）、図６に示す一連のマージ処理が終了する。
【００４６】
図７は、フリップフロップのマージ処理後の回路を示すアルゴリズム説明図である。例えば、図１４に示す比較対象回路２１に対してフリップフロップのマージ処理を行った結果、図７に示すように、第１のフリップフロップＡ３と第４のフリップフロップＤと第５のフリップフロップＥがマージされて、一つのフリップフロップになっている。図示例では、マージ先フリップフロップは、第１のフリップフロップＡ３であり、この第１のフリップフロップＡ３は、レジスタ名としてＦＦ＿Ａ、ＦＦ＿ＤおよびＦＦ＿Ｅを有する。従って、図７に示す比較対象回路２１と、図１４に示す比較対象回路２１で、論理が一致することになる。
【００４７】
ここで、フリップフロップのマージパターンおよび削除リストの一例について説明する。図８〜図１０は、フリップフロップのマージパターンを示す模式図である。図８に示すパターンは、フリップフロップＪ（ＦＦ＿Ｊ）６１とフリップフロップＫ（ＦＦ＿Ｋ）６２がともにフリップフロップＬ（ＦＦ＿Ｌ）６３をマージ先としてマージされるパターンである。
【００４８】
図９に示すパターンは、フリップフロップＭ（ＦＦ＿Ｍ）６４がフリップフロップＮ（ＦＦ＿Ｎ）６５をマージ先としてマージされ、さらに、そのフリップフロップＮ（ＦＦ＿Ｎ）６５がフリップフロップＰ（ＦＦ＿Ｐ）６６をマージ先としてマージされるパターンである。図１０に示すパターンは、フリップフロップＱ（ＦＦ＿Ｑ）６７とフリップフロップＴ（ＦＦ＿Ｔ）６９がその間のフリップフロップＲ（ＦＦ＿Ｒ）６８をマージ先としてマージされるパターンである。図１１は、削除リストの一例を示す模式図である。図８〜図１０に示すフリップフロップのマージが起こると、削除リストは、図１１に示すようになる。
【００４９】
（マッチング処理手順）
図１２は、マッチング処理手順を示すフローチャートである。ここでは、説明の便宜上、比較元回路のフリップフロップを比較元フリップフロップとし、比較対象回路のフリップフロップを処理対象フリップフロップとする。図１２に示すように、マッチング処理が開始されると、まず、比較元フリップフロップの全てについて、名前の一致するフリップフロップを処理対象からさがすネームマッチング処理を行う（ステップＳ４１）。
【００５０】
そして、名前が一致するフリップフロップ同士をペアとして対応づける。一方、ネームマッチング処理において名前の一致するフリップフロップがなかった比較元フリップフロップには、エラーフラグがつく。ネームマッチング処理の詳細な手順については後述する。全ての比較元フリップフロップについてネームマッチング処理が終了したら、エラーフラグのついた比較元フリップフロップについて、さらに別の手法で対応づけを行う（ステップＳ４２）。例えば、機能的に一致するフリップフロップ同士を対応づけるファンクションマッチング処理を行う。
【００５１】
（ネームマッチング処理手順）
図１３は、ネームマッチング処理手順のうち、比較元回路のフリップフロップを１つ選択し、それに対応するフリップフロップを比較対象回路から見つける処理を示すフローチャートである。ここでは、説明の便宜上、比較元回路から選択したフリップフロップを比較元フリップフロップとし、比較対象回路のフリップフロップを処理対象フリップフロップとする。図１３に示すように、マッチング処理が開始されると、まず、比較元フリップフロップと処理対象フリップフロップで名前が一致するか否かを判断する（ステップＳ５１）。一致しない場合（ステップＳ５１：Ｎｏ）、処理対象フリップフロップに複数の名前があるか否かを判断する（ステップＳ５２）。
【００５２】
名前が一つである場合（ステップＳ５２：Ｎｏ）、ステップＳ５５へ進む。複数の名前がある場合（ステップＳ５２：Ｙｅｓ）、処理対象フリップフロップの全ての名前と比較元フリップフロップの名前を比較する（ステップＳ５３）。そして、処理対象フリップフロップのいずれかの名前と比較元フリップフロップの名前が一致するか否かを判断する（ステップＳ５４）。一致しない場合（ステップＳ５４：Ｎｏ）、ステップＳ５５へ進む。ステップＳ５５では、比較元フリップフロップに複数の名前があるか否かを判断する。
【００５３】
名前が一つである場合（ステップＳ５５：Ｎｏ）、比較元フリップフロップにエラーフラグを立てて（ステップＳ５６）、ステップＳ５１に戻る。複数の名前がある場合（ステップＳ５５：Ｙｅｓ）、比較元フリップフロップの全ての名前と処理対象フリップフロップの名前を比較する（ステップＳ５７）。そして、比較元フリップフロップのいずれかの名前と処理対象フリップフロップの名前が一致するか否かを判断する（ステップＳ５８）。
【００５４】
一致しない場合（ステップＳ５８：Ｎｏ）、ステップＳ５６へ進む。一致する場合（ステップＳ５８：Ｙｅｓ）、また、ステップＳ５１またはステップＳ５４でＹｅｓの場合、処理中の処理対象フリップフロップと比較元フリップフロップのマッチング処理を終了する。以上のステップＳ５１〜ステップＳ５８の一連の処理を、比較対象の全フリップフロップについて行い、比較元フリップフロップと同じ名前のフリップフロップを見つける。同じ名前のフリップフロップが見つかった場合はペアとなり（ステップＳ５９）、それらのフリップフロップの入力を始点とするロジックコーンが論理等価検証の対象となる。これを比較元の全フリップフロップについて行う。
【００５５】
このネームマッチング処理において、図１４に示す比較元回路１の第１のフリップフロップＡ３は、レジスタ名としてＦＦ＿Ａを有し、図７に示す比較対象回路２１の第１のフリップフロップＡ３は、レジスタ名にＦＦ＿Ａを含むので、比較元回路１と比較対象回路２１で第１のフリップフロップＡ３の名前が一致することになる。従って、図１４に示す比較元回路１と図１４に示す比較対象回路２１の比較検証を行うと、いずれの回路でも第２のロジックコーン８が、レジスタ名がＦＦ＿Ａである第１のフリップフロップＡ３の入力を始点とすることになるので、名前によるペアが自動で作成され、両回路の論理が一致するという検証結果が得られる。
【００５６】
以上説明したように、実施の形態によれば、比較元回路１と、シンクロナイザなどのように論理的に等価なフリップフロップが挿入された比較対象回路２１との論理等価検証を行う際に、論理的に等価なフリップフロップの挿入が原因で両回路の論理が不一致であるという結果が出るのを防ぐことができる。従って、従来のような人手による作業を行うことなく、論理的に等価なフリップフロップが挿入された回路について論理等価検証を自動的に行うことができるという効果を奏する。また、論理的に等価なフリップフロップをレベルシフタとして挿入した回路についても、本実施の形態を適用することによって、検証ポイントを削減することができるので、検証に要する時間を削減することができる。
【００５７】
なお、本実施の形態で説明した論理等価検証プログラムは、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネット等のネットワークを介して配布することが可能な伝送媒体であってもよい。以上において本発明は、上述した実施の形態に限らず、種々変更可能である。
【００５８】
（付記１）比較元回路と比較対象回路との論理等価検証を行う論理等価検証装置において、比較元回路および比較対象回路の各設計データに基づいて、前記比較元回路および前記比較対象回路のそれぞれについて、論理的に等価なフリップフロップを、該フリップフロップの挿入箇所から削除して他のフリップフロップにマージするフリップフロップマージ手段と、それぞれ、前記フリップフロップマージ手段で論理的に等価なフリップフロップが削除された比較元回路および比較対象回路について、対応するフリップフロップの名前が一致するか否かを調べるマッチング手段と、を備えることを特徴とする論理等価検証装置。
【００５９】
（付記２）前記フリップフロップマージ手段は、マージ処理によって削除されるフリップフロップの名前を、マージ処理後に残るフリップフロップの名前に追加することを特徴とする付記１に記載の論理等価検証装置。
【００６０】
（付記３）前記フリップフロップマージ手段は、マージ処理によって削除されるフリップフロップが、マージ処理後に残るフリップフロップと同じクロック信号で駆動されている場合に、マージ処理を行うことを特徴とする付記１に記載の論理等価検証装置。
【００６１】
（付記４）前記フリップフロップマージ手段は、マージ処理によって削除されるフリップフロップのデータラインが１入力１出力タイプのフリップフロップである場合に、マージ処理を行うことを特徴とする付記３に記載の論理等価検証装置。
【００６２】
（付記５）前記フリップフロップマージ手段は、マージ処理によって削除される複数のフリップフロップにおいて、前段のフリップフロップの出力の論理と後段のフリップフロップの入力の論理が同じである場合に、マージ処理を行うことを特徴とする付記３または４に記載の論理等価検証装置。
【００６３】
（付記６）前記フリップフロップマージ手段は、マージ処理によって削除されるフリップフロップが、マージ処理後に残るフリップフロップと同じタイプである場合に、マージ処理を行うことを特徴とする付記３に記載の論理等価検証装置。
【００６４】
（付記７）前記フリップフロップマージ手段によるマージ処理を行う前に、マージ処理によって削除される複数のフリップフロップ間にバッファもしくは偶数個のインバータが存在する場合、該バッファおよび該インバータを削除する論理圧縮手段、をさらに備えることを特徴とする付記１に記載の論理等価検証装置。
【００６５】
（付記８）比較元回路と比較対象回路との論理等価検証を行う論理等価検証方法において、比較元回路および比較対象回路の各設計データに基づいて、前記比較元回路および前記比較対象回路のそれぞれについて、論理的に等価なフリップフロップを、該フリップフロップの挿入箇所から削除して他のフリップフロップにマージするフリップフロップマージ工程と、それぞれ、前記フリップフロップマージ工程で論理的に等価なフリップフロップが削除された比較元回路および比較対象回路について、対応するフリップフロップの名前が一致するか否かを調べるマッチング工程と、を含むことを特徴とする論理等価検証方法。
【００６６】
（付記９）前記フリップフロップマージ工程では、マージ処理によって削除されるフリップフロップの名前を、マージ処理後に残るフリップフロップの名前に追加することを特徴とする付記８に記載の論理等価検証方法。
【００６７】
（付記１０）前記フリップフロップマージ工程では、マージ処理によって削除されるフリップフロップが、マージ処理後に残るフリップフロップと同じクロック信号で駆動されている場合に、マージ処理を行うことを特徴とする付記８に記載の論理等価検証方法。
【００６８】
（付記１１）前記フリップフロップマージ工程では、マージ処理によって削除されるフリップフロップのデータラインが１入力１出力タイプのフリップフロップである場合に、マージ処理を行うことを特徴とする付記１０に記載の論理等価検証方法。
【００６９】
（付記１２）前記フリップフロップマージ工程では、マージ処理によって削除される複数のフリップフロップにおいて、前段のフリップフロップの出力の論理と後段のフリップフロップの入力の論理が同じである場合に、マージ処理を行うことを特徴とする付記１０または１１に記載の論理等価検証方法。
【００７０】
（付記１３）前記フリップフロップマージ工程では、マージ処理によって削除されるフリップフロップが、マージ処理後に残るフリップフロップと同じタイプである場合に、マージ処理を行うことを特徴とする付記１０に記載の論理等価検証方法。
【００７１】
（付記１４）前記フリップフロップマージ工程の前に、マージ処理によって削除される複数のフリップフロップ間にバッファもしくは偶数個のインバータが存在する場合、該バッファおよび該インバータを削除する論理圧縮工程、をさらに含むことを特徴とする付記８に記載の論理等価検証方法。
【００７２】
（付記１５）付記８〜１４のいずれか一つに記載の論理等価検証方法をコンピュータに実行させることを特徴とする論理等価検証プログラム。
【００７３】
（付記１６）付記１５に記載の論理等価検証プログラムを記録したことを特徴とするコンピュータに読み取り可能な記録媒体。
【産業上の利用可能性】
【００７４】
以上のように、本発明にかかる論理等価検証装置、論理等価検証方法、論理等価検証プログラムおよび記録媒体は、論理回路の設計に有用であり、特に、半導体集積回路の設計に適している。
【図面の簡単な説明】
【００７５】
【図１】この発明の実施の形態にかかる論理等価検証装置のハードウェア構成を示すブロック図である。
【図２】この発明の実施の形態にかかる論理等価検証装置の機能的構成を示すブロック図である。
【図３】この発明の実施の形態にかかる論理等価検証装置の処理手順を示すフローチャートである。
【図４】この発明の実施の形態にかかる論理圧縮処理手順を示すフローチャートである。
【図５】論理圧縮処理後の回路を示すアルゴリズム説明図である。
【図６】この発明の実施の形態にかかるフリップフロップのマージ処理手順を示すフローチャートである。
【図７】フリップフロップのマージ処理後の回路を示すアルゴリズム説明図である。
【図８】フリップフロップのマージパターンの第１の例を示す模式図である。
【図９】フリップフロップのマージパターンの第２の例を示す模式図である。
【図１０】フリップフロップのマージパターンの第３の例を示す模式図である。
【図１１】削除リストの一例を示す模式図である。
【図１２】この発明の実施の形態にかかるマッチング処理手順を示すフローチャートである。
【図１３】この発明の実施の形態にかかるネームマッチング処理手順を示すフローチャートである。
【図１４】論理等価検証を行う比較元回路と比較対象回路を示すアルゴリズム説明図である。
【符号の説明】
【００７６】
１  比較元回路
３，２２，２３，６１〜６９  フリップフロップ
２１  比較対象回路
２６，２７  インバータ
２８，２９，３０  バッファ
４１  論理等価検証装置
４３  論理圧縮部
４４  フリップフロップマージ部
４５  マッチング部
４８  比較元回路データ
４９  比較対象回路データ
【図１】
2008262337.tif 000003
【図２】
2008262337.tif 000004
【図３】
2008262337.tif 000005
【図４】
2008262337.tif 000006
【図５】
2008262337.tif 000007
【図６】
2008262337.tif 000008
【図７】
2008262337.tif 000009
【図８】
2008262337.tif 000010
【図９】
2008262337.tif 000011
【図１０】
2008262337.tif 000012
【図１１】
2008262337.tif 000013
【図１２】
2008262337.tif 000014
【図１３】
2008262337.tif 000015
【図１４】
2008262337.tif 000016