(57)【特許請求の範囲】
【請求項１】
１つのメモリを前記メモリと入出力ピン数が一致する分割メモリモデルに置き換えて、その入出力の論理を検証することにより、回路変更前後における論理の等価性を検証する半導体集積回路の検証装置であって、
前記分割メモリモデルは、
前記メモリのアドレスを指定するアドレス信号の一部によりアドレス指定され且つ前記メモリよりも容量が小さい複数の分割メモリと、
前記アドレス信号の残りに応じて前記複数の分割メモリを選択するための第１の論理回路と、
前記アドレス信号の残りを遅延させて出力する遅延回路と、
前記遅延回路からの信号に応じて前記分割メモリからの出力を選択して前記複数の分割メモリ全体からの出力とする第２の論理回路と、を有し、
前記遅延回路は、フリップフロップ回路である、
ことを特徴とする半導体集積回路の検証装置。
【請求項２】
前記検証において、サブバンク化された前記メモリの入出力の論理が同じ前記第２の論理回路を１つのセルとして扱うことを特徴とする請求項１に記載の半導体集積回路の検証装置。
【請求項３】
半導体集積回路を検証装置により検証する検証方法であって、
前記検証装置は、半導体集積回路の検証方法を実行する処理装置と、前記処理装置により実行されるプログラムを記憶するデータ記憶装置と、必要な情報が前記処理装置に入力する入力部と、前記処理装置で処理された情報が出力される出力部と、を備え、
前記検証装置は、
１つのメモリを前記メモリと入出力ピン数が一致する分割メモリモデルに置き換えて、その入出力の論理を検証することにより、回路変更前後における論理の等価性を検証し、
前記分割メモリモデルは、
前記メモリのアドレスを指定するアドレス信号の一部によりアドレス指定され且つ前記メモリよりも容量が小さい複数の分割メモリと、
前記アドレス信号の残りに応じて前記複数の分割メモリを選択するための第１の論理回路と、
前記アドレス信号の残りを遅延させて出力する遅延回路と、
前記遅延回路からの信号に応じて前記分割メモリからの出力を選択して前記複数の分割メモリ全体からの出力とする第２の論理回路と、を有し、
前記遅延回路は、フリップフロップ回路である、
ことを特徴とする半導体集積回路の検証方法。
【請求項４】
前記検証において、サブバンク化された前記メモリの入出力の論理が同じ前記第２の論理回路を１つのセルとして扱う
ことを特徴とする請求項３に記載の半導体集積回路の検証方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、半導体集積回路の検証方法、及び、プログラムに関する。
【背景技術】
【０００２】
従来、メモリのサブバンク化を実行すると論理検証のために、論理シミュレーションを実行する必要がある。特に、大規模集積回路の場合、ゲートレベルシミュレーションには非常に時間がかかるため、ＲＴＬ（Ｒｅｓｉｓｔｅｒ  Ｔｒａｎｓｆｅｒ  Ｌｅｖｅｌ）シミュレーションまで戻って実行する必要がある。そして、このＲＴＬシミュレーションを実行した後も、論理合成、テスト回路挿入といった一連の設計作業にも時間がかかる。
【０００３】
このため、一度、論理シミュレーションを行って、論理検証が終わった後にメモリのサブバンク化を行うことは現実的でない。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−３４５８４号公報
【特許文献２】特開２００８−５９０３２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
検証時間の短縮を図ることが可能な半導体集積回路の検証方法を提供する。
【課題を解決するための手段】
【０００６】
本発明の一態様に係る半導体集積回路の検証装置は、１つのメモリを前記メモリと入出力ピン数が一致する分割メモリモデルに置き換えて、その入出力の論理を検証することにより、回路変更前後における論理の等価性を検証する。
【図面の簡単な説明】
【０００７】
【図１】図１は、本発明の一態様である実施例１に係る半導体集積回路の検証装置１００の構成を示す図である。
【図２】図２は、半導体集積回路に適用されるメモリＭの構成の一例を示すブロック図である。
【図３】図３は、図２に示すメモリＭを形式検証用にモデル化した分割メモリモデルの一例を示すブロック図である。
【図４】図４は、図３に示すモデル化されたメモリＭをサブバンク化した構成の一例を示すブロック図である。
【図５】図５は、図１に示す実施例１に係る検証装置１００により実行される半導体集積回路の検証方法の一例を示すフローチャートである。
【発明を実施するための形態】
【０００８】
以下、実施例について図面に基づいて説明する。
【０００９】
図１は、本発明の一態様である実施例１に係る半導体集積回路の検証装置１００の構成を示す図である。
【００１０】
図１に示すように、半導体集積回路の検証装置１００は、処理装置（コンピュータ）１と、データ記憶装置２と、入力部３と、出力部４と、を備える。
【００１１】
入力部３としては、例えば、キーボード、マウス、光学式文字読取装置（ＯＣＲ）等の認識装置、イメージスキャナ等の図形入力装置、フロッピー（登録商標）ディスク、ＣＤ−Ｒ、ＤＶＤ、ＵＳＢメモリ等の外部記憶媒体駆動装置、ネットワークで接続された記憶装置、及び音声認識装置等の特殊入力装置が選択される。この入力部３から、必要な情報が処理装置１に入力される。
【００１２】
また、出力部４としては、例えば、液晶ディスプレイ、ＣＲＴディスプレイ等の表示装置、インクジェットプリンタ、レーザープリンタなどの印刷装置、フロッピー（登録商標）ディスク、ＣＤ−Ｒ、ＤＶＤ、ＵＳＢメモリ等の外部記憶媒体駆動装置、ネットワークで接続された記憶装置が選択される。この出力部４から処理装置１で処理された情報が出力される。
【００１３】
また、データ記憶装置２は、処理装置１により実行されるプログラム、例えば、論理検証や形式検証を実行するための検証プログラムや、設計したＲＴＬ記述やゲートレベルネットリスト等が記憶される。このデータ記憶装置２は、ハードディスク、フロッピー（登録商標）ディスク、ＣＤ−Ｒ、ＤＶＤ、ＵＳＢメモリや、ネットワークで接続された記憶装置でもよい。
【００１４】
ここで、半導体集積回路においてＳＲＡＭやＲＯＭなどのメモリを適用する場合、ＲＴＬやゲートレベルネットリストでＳＲＡＭやＲＯＭをインスタンス化し、論理シミュレーションによって、論理検証を行う必要がある。そして、ある容量のメモリを、小さい容量の複数のメモリの組み合わせによって構成するサブバンク化を実行する。
【００１５】
従来、サブバンク化を行った場合は、再度論理シミュレーションを実行して、論理検証を行っている。一般に論理シミュレーションの実行時間は長いため、論理検証に時間が掛かる。
【００１６】
そこで、本実施例では、回路変更前後の論理的等価性を検証する方法として、形式検証という手法を実行する。この形式検証では、メモリ内部はブラックボックスとして扱い、その入出力での論理の等価性を検証する。
【００１７】
こでで、図２は、半導体集積回路に適用されるメモリＭの構成の一例を示すブロック図である。
【００１８】
例えば、図２に示すように、メモリＭは、チップの活性化を制御する１ビットのチップイネーブル信号ＣＥと、メモリＭのメモリセルのアドレスを指定する５ビットのアドレス信号Ａ[４：０]と、８ビットの入力データ信号Ｉ[７：０]が入力され、８ビットの出力データ信号Ｏ[７：０]を出力する。
【００１９】
このメモリＭは、既述のように、例えば、ＳＲＡＭやＲＯＭ等であり、３２Ｗ（ワード）×８Ｂ（ビット）の容量を有する。ここでは、このメモリＭの全体をブラックボックスとしている。
【００２０】
次に、この図２に示すメモリＭを形式検証用にモデル化した分割メモリモデルの一例について説明する。図３は、図２に示すメモリＭを形式検証用にモデル化した分割メモリモデルの一例を示すブロック図である。
【００２１】
図３に示すように、本実施例では、メモリの形式検証のために、例えば、１つのメモリＭを、このメモリＭよりも容量が小さい複数の分割メモリＤＭ１〜ＤＭ４と、その複数の分割メモリＤＭ１〜ＤＭ４を選択するための第１の論理回路（ＡＮＤ回路ＡＮ１〜ＡＮ４、インバータ回路ＩＮ１〜ＩＮ３）と、アドレス信号Ａ[４]、Ａ[３]を１クロック遅延させた信号を出力するフリップフロップ回路（遅延回路）ＦＦ１、ＦＦ２と、このフリップフロップ回路ＦＦ１、ＦＦ２からの信号に応じて、分割メモリＤＭ１〜ＤＭ４からの出力を選択してメモリ全体の出力とする第２の論理回路（選択回路ＭＵＸ１〜ＭＵＸ３）と、にモデル化する。
【００２２】
なお、上記第１の論理回路（ＡＮＤ回路ＡＮ１〜ＡＮ４、インバータ回路ＩＮ１〜ＩＮ３）、フリップフロップ回路ＦＦ１、ＦＦ２、及び、第２の論理回路（選択回路ＭＵＸ１〜ＭＵＸ３）の論理回路は、論理的に正しければその実現方法は問わない。
【００２３】
ここで、ＡＮＤ回路ＡＮ１は、チップイネーブル信号ＣＥと、アドレス信号Ａ[３]、Ａ[４]とが入力され、分割メモリＤＭ１を活性化するチップイネーブル信号ＣＥ１を出力する。
【００２４】
分割メモリＤＭ１は、８Ｗ（ワード）×８Ｂ（ビット）の容量を有する。この分割メモリＭ１は、チップイネーブル信号ＣＥと、アドレス信号Ａ[２：０]と、入力データ信号Ｉ[７：０]とが入力され、出力データ信号Ｏ[７：０]を出力する。
【００２５】
インバータ回路ＩＮ１は、アドレス信号Ａ[３]が入力され、このアドレス信号Ａ[３]の論理を反転した信号を出力する。  
ＡＮＤ回路ＡＮ２は、チップイネーブル信号ＣＥと、アドレス信号Ａ[３]の論理を反転した信号と、アドレス信号Ａ[４]と、が入力され、分割メモリＤＭ２を活性化するチップイネーブル信号ＣＥ２を出力する。
【００２６】
分割メモリＤＭ２は、８Ｗ（ワード）×８Ｂ（ビット）の容量を有する。この分割メモリＭ２は、チップイネーブル信号ＣＥ２と、アドレス信号Ａ[２：０]と、入力データ信号Ｉ[７：０]とが入力され、出力データ信号Ｏ[７：０]を出力する。
【００２７】
インバータ回路ＩＮ２は、アドレス信号Ａ[４]が入力され、このアドレス信号Ａ[４]の論理を反転した信号を出力する。  
ＡＮＤ回路ＡＮ３は、チップイネーブル信号ＣＥと、アドレス信号Ａ[４]の論理を反転した信号と、アドレス信号Ａ[３]と、が入力され、分割メモリＤＭ３を活性化するチップイネーブル信号ＣＥ３を出力する。
【００２８】
分割メモリＤＭ３は、８Ｗ（ワード）×８Ｂ（ビット）の容量を有する。この分割メモリＭ３は、チップイネーブル信号ＣＥ３と、アドレス信号Ａ[２：０]と、入力データ信号Ｉ[７：０]とが入力され、出力データ信号Ｏ[７：０]を出力する。
【００２９】
インバータ回路ＩＮ３は、アドレス信号Ａ[３]が入力され、このアドレス信号Ａ[３]の論理を反転した信号を出力する。
【００３０】
ＡＮＤ回路ＡＮ４は、チップイネーブル信号ＣＥと、アドレス信号Ａ[３]の論理を反転した信号と、アドレス信号Ａ[４]の論理を反転した信号と、が入力され、分割メモリＤＭ４を活性化するチップイネーブル信号ＣＥ４を出力する。
【００３１】
分割メモリＤＭ４は、８Ｗ（ワード）×８Ｂ（ビット）の容量を有する。この分割メモリＭ４は、チップイネーブル信号ＣＥ４と、アドレス信号Ａ[２：０]と、入力データ信号Ｉ[７：０]が入力され、出力データ信号Ｏ[７：０]を出力する。
【００３２】
フリップフロップ回路ＦＦ１は、アドレス信号Ａ[４]が入力され、このアドレス信号Ａ[４]を１クロックだけ遅らせた選択信号を出力する。
【００３３】
フリップフロップ回路ＦＦ２は、アドレス信号Ａ[３]が入力され、このアドレス信号Ａ[３]を１クロックだけ遅らせた選択信号を出力する。
【００３４】
選択回路ＭＵＸ１は、アドレス信号Ａ[３]を１クロックだけ遅らせた選択信号に応じて、分割メモリＤＭ１又は分割メモリＤＭ２が出力した出力データ信号Ｏ[７：０]の何れか一方を選択して、出力する。
【００３５】
選択回路ＭＵＸ２は、アドレス信号Ａ[３]を１クロックだけ遅らせた選択信号に応じて、分割メモリＤＭ３又は分割メモリＤＭ４が出力した出力データ信号Ｏ[７：０]の何れか一方を選択して、出力する。
【００３６】
選択回路ＭＵＸ３は、アドレス信号Ａ[４]を１クロックだけ遅らせた選択信号に応じて、選択回路ＭＵＸ１又は選択回路ＭＵＸ２が出力した出力データ信号Ｏ[７：０]の何れか一方を選択して、出力する。
【００３７】
この選択回路ＭＵＸ３の出力が、メモリＭの出力となる。
【００３８】
なお、複数の分割メモリＤＭ１〜ＤＭ４は、８Ｗ（ワード）×８Ｂ（ビット）の容量を有するブラックボックスとして扱う。
【００３９】
このように、本実施例では、１個のメモリＭを、容量が小さい分割メモリＤＭ１〜ＤＭ４でソフトマクロ化する。すなわち、このソフトマクロ化により、１つのメモリＭを、メモリＭと入出力ピン数が一致する分割メモリモデルに置き換えられる。
【００４０】
なお、図３に示す例では、１個のメモリＭを、４個の分割メモリＤＭ１〜ＤＭ４に分割しているが、これに限られず、複数の分割メモリに分割するようにすればよい。
【００４１】
次に、このメモリＭを形式検証用にモデル化したメモリＭをサブバンク化した構成の一例について説明する。ここでは、既述の図３に示すモデル化されたメモリＭをワード方向に２のサブバンクに分割する例について説明する。
【００４２】
図４は、図３に示すモデル化されたメモリＭをサブバンク化した構成の一例を示すブロック図である。なお、この図４において、図３に示す符号と同じ符号は、図３と同様の構成を示す。
【００４３】
図４に示すように、サブバンク化により、メモリＭを、複数（ここでは２個）のサブバンクＭ１、Ｍ２のサブバンク構成にする。すなわち、サブバンク化されたメモリＭは、サブバンクＭ１、Ｍ２と、インバータ回路ＩＮ２と、フリップフロップ回路ＦＦ１と、選択回路ＭＵＸ３とから構成される。
【００４４】
そして、サブバンクＭ１は、ＡＮＤ回路ＡＮ１、ＡＮ２と、インバータ回路ＩＮ１と、アドレス信号Ａ[３]を１クロック遅延させるためのフリップフロップ回路ＦＦ２ａと、このフリップフロップ回路ＦＦ２ａからの信号に応じて、分割メモリＤＭ１、ＤＭ２からの出力を選択して出力する選択回路ＭＵＸ１とにより構成される。
【００４５】
また、サブバンクＭ２は、ＡＮＤ回路ＡＮ３、ＡＮ４と、インバータ回路ＩＮ３と、アドレス信号Ａ[３]を１クロック遅延させるためのフリップフロップ回路ＦＦ２ｂと、このフリップフロップ回路ＦＦ２ｂからの信号に応じて、分割メモリＤＭ１、ＤＭ２からの何れかの出力を選択して出力する選択回路ＭＵＸ２とにより構成される。
【００４６】
ここで、図３に示すサブバンク化前におけるモデル化されたメモリＭ（ＦＶライブラリ）の分割メモリＤＭ１〜ＤＭ４の入出力ピンの数と、図４に示すサブバンク化後におけるモデル化されたメモリＭ（ＦＶライブラリ）の入出力ピンの数とは、同数である。
【００４７】
また、図３に示すサブバンク化前のモデル化されたメモリＭ（ＦＶライブラリ）では、フリップフロップ回路ＦＦ１、ＦＦ２の数が２個である。一方、図４に示すサブバンク化後のモデル化されたメモリＭ（ＦＶライブラリ）では、フリップフロップ回路の数が３個である。この図４のメモリライブラリ内のフリップフロップ回路ＦＦ２ａ、２ｂは、入出力信号の論理が同一の等価なセルである。
【００４８】
そこで、これらのフリップフロップ回路ＦＦ２ａ、２ｂのセルを１つのセルとみなすことによって、図４、図５に示すサブバンク化後におけるモデル化されたメモリＭのＦＶライブラリ内の入出力ピンは、同数となる。なお、形式検証において、サブバンク化されたメモリＭの入出力の論理が同じ選択回路を１つのセルとして扱うクローンセル情報を予め規定するようにする。
【００４９】
このように、サブバンク化前後において、モデル化されたメモリＭの比較ポイントが一致するため、図３に示すサブバンク化前の回路と、図４に示すサブバンク化後の回路とは、形式検証を実行することができる。
【００５０】
なお、既述のように、図４に示す例では、メモリＭを、２個の分割メモリＤＭ１、ＤＭ２のサブバンクＭ１と、２個の分割メモリＤＭ３、ＤＭ４のサブバンクＭ２とにサブバンク化した、サブバンク構成について記載している。しかし、例えば、メモリＭを、１個の分割メモリのサブバンクと、３個の分割メモリのサブバンクとにサブバンク化するように、異なる複数の分割メモリのサブバンクにサブバンク化したサブバンク構成にしてもよい。
【００５１】
以上のように、本実施例に係る形式検証用の分割メモリモデルを用いることにより、メモリのサブバンク化前後で形式検証が実行可能になり、論理検証時間を大きく短縮できる。
【００５２】
そして、論理シミュレーション以降のメモリのサブバンク化やバンク構成の変更が可能となる。特に、レイアウト設計時に、フロアプラン上の空き領域を利用してチップ面積を小さくするために、メモリのサブバンク化し、また、既にサブバンク化されているメモリのバンク構成を変更することができる。
【００５３】
次に、実施例１に係る半導体集積回路の検証方法の一例について説明する。
【００５４】
ここで、図５は、図１に示す実施例１に係る検証装置１００により実行される半導体集積回路の検証方法の一例を示すフローチャートである。なお、以下のステップは、データ記憶装置２に記憶されたプログラムにより処理装置１（コンピュータ）が実行する。
【００５５】
まず、図５に示すように、処理装置１は、半導体集積回路の動作を記述するＲＴＬ（Ｒｅｓｉｓｔｅｒ  Ｔｒａｎｓｆｅｒ  Ｌｅｖｅｌ）記述を設計する論理設計を実行する（ステップＳ１）。
【００５６】
ＲＴＬ記述を設計において、例えば、既述の図３に示すように、１つのメモリＭを、このメモリＭのアドレスを指定するアドレス信号Ａ[４：０]の一部Ａ[２：０]によりアドレス指定され且つメモリよりも容量が小さい複数の分割メモリＤＭ１〜ＤＭ４と、アドレス信号Ａ[４：０]の残りＡ[４]、Ａ[３]に応じて、複数の分割メモリＤＭ１〜ＤＭ４を選択するための第１の論理回路（ＡＮＤ回路ＡＮ１〜ＡＮ４、インバータ回路ＩＮ１〜ＩＮ３）と、アドレス信号Ａ[４：０]の残りＡ[４]、Ａ[３]を１クロック遅延させて出力する遅延回路ＦＦ１、ＦＦ２と、遅延回路ＦＦ１、ＦＦ２からの信号に応じて、分割メモリＤＭ１〜ＤＭ４からの出力を選択してメモリ全体の出力とする第２の論理回路（選択回路ＭＵＸ１〜ＭＵＸ３）と、にモデル化する。
【００５７】
そして、例えば、既述の図４に示すように、モデル化されたメモリＭを、複数の分割メモリＤＭ１〜ＤＭ４の何れかを含む複数のサブバンクＭ１、Ｍ２のサブバンク構成に、サブバンク化する。
【００５８】
なお、上記ＲＴＬ記述としては、Ｖｅｒｉｏｇ−ＨＤＬやＶＨＤＬなどの公知の設計言語が一般的であるが、これに限定されない。
【００５９】
次に、処理装置１は、設計したＲＴＬ記述及びゲートレベルネットリストに対して、規定されたプロパティにより示される動作仕様の通りに動作するかを検証する論理シミュレーションを実行する（ステップＳ２）。
【００６０】
次に、処理装置１は、設計したＲＴＬ記述及びゲートレベルネットリストを論理ゲートにマッピングし、タイミング、面積、消費電力の最適化などを行う論理合成を実行する（ステップＳ３）。
【００６１】
次に、処理装置１は、上記論理合成でメモリのサブバンク構成の変更が必要になった場合に、サブバンク構成の変更を実行する（ステップＳ４）。
【００６２】
次に、処理装置１は、ＲＴＬ記述と上記論理合成の結果のネットリストの論理的等価性を検証する形式検証を実行する（ステップＳ５）。
【００６３】
次に、処理装置１は、テスト容易化のために、半導体集積回路にテスト回路を挿入するテスト設計を実行する（ステップＳ６）。
【００６４】
次に、処理装置１は、テスト設計により、メモリのサブバンク構成の変更が必要になった場合には、サブバンク構成を変更する（ステップＳ７）。
【００６５】
次に、処理装置１は、テスト設計前後のネットリストに対して、論理的等価性を検証する形式検証を実行する（ステップＳ８）。
【００６６】
次に、処理装置１は、論理ゲートを配置し、クロックツリーを生成して、配線する物理設計を実行する（ステップＳ９）。
【００６７】
次に、処理装置１は、物理設計でメモリのサブバンク構成の変更が必要になった場合には、サブバンク構成を変更する（ステップＳ１０）。
【００６８】
次に、処理装置１は、物理設計前後のネットリストの論理的等価性を検証する形式検証を実行する（ステップＳ１１）。
【００６９】
以上のステップにより、処理装置１による半導体集積回路の検証が完了する。すなわち、半導体集積回路の検証装置１００は、１つのメモリＭを、メモリＭと入出力ピン数が一致する分割メモリモデルに置き換えて、その入出力の論理を検証することにより、メモリのサブバンク化による回路変更前後における論理の等価性を検証する。
【００７０】
既述のように、実施例１に係る形式検証用メモリモデルを用いることにより、メモリのサブバンク化前後で形式検証が実行可能になる。これにより、論理検証時間を大きく短縮できるため、論理シミュレーション以降のメモリのサブバンク化やバンク構成の変更が可能となる。
【００７１】
以上のように、本実施例に係る半導体集積回路の検証方法によれば、検証時間の短縮することができる。
【００７２】
なお、実施形態は例示であり、発明の範囲はそれらに限定されない。
【符号の説明】
【００７３】
１  処理装置
２  データ記憶装置
３  入力部
４  出力部
１００  半導体集積回路の検証装置
Ｍ  メモリ
ＤＭ１〜ＤＭ４  分割メモリ
ＡＮ１〜ＡＮ４  ＡＮＤ回路
ＩＮ１〜ＩＮ３  インバータ回路
ＦＦ１、ＦＦ２  フリップフロップ回路
ＭＵＸ１〜ＭＵＸ３  選択回路
【図１】
0005944358.tif 000002
【図２】
0005944358.tif 000003
【図３】
0005944358.tif 000004
【図４】
0005944358.tif 000005
【図５】
0005944358.tif 000006