(57)【要約】      （修正有）【課題】処理負担を軽減させることができるシミュレーション装置及びシミュレーション方法を提供する。【解決手段】シミュレーション装置のコンピュータ１１は、メモリ１１１と、遅延除去部１１２と、波形比較部１１３と、を備える。メモリ１１１は、対象回路を構成する素子の遅延情報を格納する。遅延除去部１１２は、素子による遅延を考慮した対象回路のシミュレーション結果である遅延シミュレーション波形から、遅延情報に基づいて、素子による遅延を除去した遅延除去済み波形を生成する。波形比較部１１３は、遅延除去済み波形と、素子による遅延を考慮しない対象回路のシミュレーション結果である無遅延シミュレーション波形と、を比較し、比較結果を出力する。【選択図】図２
2013080310.tif 000002
【特許請求の範囲】
【請求項１】
対象回路を構成する素子の遅延情報が格納された記憶手段と、
前記素子による遅延を考慮した前記対象回路のシミュレーション結果である第１の波形から、前記遅延情報に基づいて前記素子による遅延を除去した第２の波形を生成する遅延除去手段と、
前記第２の波形と、前記素子による遅延を考慮しない前記対象回路のシミュレーション結果である第３の波形と、を比較し、比較結果を出力する波形比較手段と、
を備えるシミュレーション装置。
【請求項２】
前記遅延除去手段は、前記遅延情報に基づいて、前記対象回路のデータ信号及びクロック信号の遅延を算出し、前記データ信号及び前記クロック信号の遅延を用いて前記第２の波形を生成する請求項１に記載のシミュレーション装置。
【請求項３】
前記記憶手段には、前記対象回路を構成する配線の遅延情報と、前記素子の配置に関する回路情報と、がさらに格納され、
前記遅延除去手段は、前記素子及び配線の遅延情報及び前記回路情報に基づいて、前記対象回路の各配線に配置された前記素子を特定し、当該素子及び配線に応じた遅延量を算出し、当該遅延量を前記第１の波形から除去することにより、前記第２の波形を生成する請求項１または２に記載のシミュレーション装置。
【請求項４】
前記波形比較手段の前記比較結果に基づいて、前記第２の波形と前記第３の波形との一致部分及び不一致部分の少なくとも一方を表示する表示手段をさらに備える請求項１〜３のいずれか一項に記載のシミュレーション装置。
【請求項５】
対象回路を構成する素子による遅延を考慮した前記対象回路のシミュレーション結果である第１の波形から、前記素子の遅延情報に基づいて前記素子による遅延を除去した第２の波形を生成し、
前記第２の波形と、前記素子による遅延を考慮しない前記対象回路のシミュレーション結果である第３の波形と、を比較し、比較結果を出力するシミュレーション方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はシミュレーション装置及びシミュレーション方法に関し、特に遅延シミュレーションを行うシミュレーション装置及びシミュレーション方法に関する。
【背景技術】
【０００２】
半導体シミュレーションの技術分野において、レイアウト設計工程以降における遅延付きシミュレーションが行われている。遅延付きシミュレーションが遅延起因によって正常に動作しない場合には、対象回路上において、ＦＡＩＬ原因となっている遅延の付いた箇所を特定する必要がある。
【０００３】
近年、回路規模の増大と、それに伴うシミュレーションパターンの増大により、遅延シミュレーションに必要とする時間が増大している。さらに、回路規模等の増大により、シミュレーション波形を参照して、ＦＡＩＬ原因となっている遅延の付いた箇所を特定することが困難になってきている。そのため、容易にシミュレーション結果を解析できる方法が望まれている。
【０００４】
特許文献１には、期待値のシミュレーション結果と、観測値のシミュレーション結果と、を比較するタイミング検証装置が開示されている。タイミング検証装置は、期待値及び観測値のシミュレーション結果のそれぞれに対して、確定周期比較ポイントと信号相対比較ポイントとを設定する。タイミング検証装置は、これらの確定周期比較ポイント及び信号相対比較ポイントにおいて、期待値と観測値との波形の比較を行い、比較結果を外部に出力する。これにより、期待値と観測値との一致箇所、不一致箇所を特定することができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００１−１４７９４７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１に記載のタイミング検証装置においては、確定周期比較ポイント及び信号相対比較ポイントを、シミュレーション解析に必要十分な箇所全てに設定しなければならない。そのため、解析処理は煩雑となり、負担がかかるという問題がある。加えて、確定周期比較ポイント及び信号相対比較ポイントの設定箇所が不十分であったり、誤っていたりすると、再度シミュレーションを行う必要が生じる。そのため、シミュレーション解析（ＦＡＩＬ解析）の処理負担がさらに増加するという問題がある。
【課題を解決するための手段】
【０００７】
本発明にかかるシミュレーション装置は、対象回路を構成する素子の遅延情報が格納された記憶手段と、前記素子による遅延を考慮した前記対象回路のシミュレーション結果である第１の波形から、前記遅延情報に基づいて前記素子による遅延を除去した第２の波形を生成する遅延除去手段と、前記第２の波形と、前記素子による遅延を考慮しない前記対象回路のシミュレーション結果である第３の波形と、を比較し、比較結果を出力する波形比較手段と、を備えるものである。これにより、比較ポイントや比較タイミングの設定をすることなく、波形の比較が可能となる。そのため、シミュレーションの処理負担を軽減することができる。
【０００８】
本発明にかかるシミュレーション方法は、対象回路を構成する素子による遅延を考慮した前記対象回路のシミュレーション結果である第１の波形から、前記素子の遅延情報に基づいて前記素子による遅延を除去した第２の波形を生成し、前記第２の波形と、前記素子による遅延を考慮しない前記対象回路のシミュレーション結果である第３の波形と、を比較し、比較結果を出力するものである。これにより、比較ポイントや比較タイミングの設定をすることなく、波形の比較が可能となる。そのため、シミュレーションの処理負担を軽減することができる。
【発明の効果】
【０００９】
本発明により、処理負担を軽減させることができるシミュレーション装置及びシミュレーション方法を提供することができる。
【図面の簡単な説明】
【００１０】
【図１】実施の形態にかかるシミュレーション装置の構成例を示す図である。
【図２】実施の形態にかかるコンピュータのブロック図の図である。
【図３】実施の形態にかかる遅延除去部のブロック図である。
【図４】実施の形態にかかるシミュレーション装置の動作を示すフローチャートである。
【図５】実施の形態にかかる遅延除去部の動作を示すフローチャートである。
【図６】実施の形態にかかる対象回路の回路図である。
【図７】実施の形態にかかる対象回路の遅延シミュレーション波形である。
【図８】実施の形態にかかる対象回路の無遅延シミュレーション波形である。
【図９】実施の形態にかかる対象回路の遅延除去済み波形である。
【図１０】実施の形態にかかる対象回路の結果比較済み波形である。
【発明を実施するための形態】
【００１１】
以下、図面を参照して本発明の実施の形態について説明する。本実施の形態にかかるシミュレーション装置１の構成例を図１に示す。シミュレーション装置１は、コンピュータ１１と、表示装置１２と、入力装置１３と、を備える。
【００１２】
コンピュータ１１は、本発明にかかるシミュレーション方法を実行するためのソフトウェアやＣＰＵ(Central Processing Unit)、ＭＰＵ(Micro Processing Unit)、ＧＰＧＰＵ(General-Purpose computing on Graphics Processing Unit)等の演算処理装置が組み込まれたコンピュータである。表示装置１２は、シミュレーション結果の波形を表示するディスプレイである。入力装置１３は、シミュレーションに必要なデータ入力等、コンピュータ１１の操作を行うためのキーボード等である。
【００１３】
次に、コンピュータ１１の詳細な構成について、図２に示すブロック図を参照して説明する。コンピュータ１１は、メモリ１１１と、遅延除去部１１２と、波形比較部１１３と、を備える。
【００１４】
メモリ１１１は、対象回路を構成する素子及び配線の遅延値に関する遅延情報と、対象回路を構成する素子の配置に関する回路情報と、を格納する。遅延除去部１１２は、回路情報を参照することにより、対象回路における素子の接続関係や位置関係を認識できる。また、遅延除去部１１２は、遅延情報を参照することにより、各素子及び配線の遅延値を認識できる。なお、対象回路とは、シミュレーションの対象となる回路を意味する。
【００１５】
さらに、メモリ１１１は、対象回路を構成する素子及び配線の遅延を考慮したシミュレーション結果（第１の波形。以下、遅延シミュレーション波形と称す。）と、対象回路を構成する素子及び配線の遅延を考慮しないシミュレーション結果（第３の波形。以下、無遅延シミュレーション結果と称す。）と、を格納する。
【００１６】
遅延除去部１１２は、遅延シミュレーション結果から、遅延情報に基づいて、対象回路の素子及び配線による遅延を除去した波形（第２の波形。以下、遅延除去済み波形と称す。）を生成する。遅延除去部１１２の詳細なブロック図を図３に示す。遅延除去部１１２は、インスタンス情報取得部２０１と、前段素子抽出部２０２と、変化順序判定部２０３と、データ遅延合算部２０４と、フリップフロップ判定部２０５と、ＣＬＫ発生源判定部２０６と、ＣＬＫ遅延合算部２０７と、波形生成部２０８と、処理終了判定部２０９と、を備える。
【００１７】
インスタンス情報取得部２０１は、遅延シミュレーション波形に含まれるインスタンス情報を取得する。前段素子抽出部２０２は、対象回路における特定の素子の前段（クロック発生源側）に配置された素子を、回路情報に基づいて特定する。変化順序判定部２０３は、１つの素子に複数の信号が入力されている場合に、複数の信号のうち直近に変化した信号を判定する。データ遅延合算部２０４は、データ信号の遅延量（素子及び配線の影響によるデータ遅延）の合計を算出する。フリップフロップ判定部２０５は、対象とする素子がフリップフロップ等の順序回路かそれ以外の組み合わせ回路かを判定する。ＣＬＫ発生源判定部２０６は、対象とした素子または信号入力端子に入力される信号が、ＣＬＫ発生源として外部から入力される信号であるか、もしくは、予め設定されたＰＬＬ（Phase-locked Loop）回路や発振回路等からの信号であるかを判定する。そして、ＣＬＫ発生源判定部２０６は、外部から入力される信号やＰＬＬ等からの入力される信号である場合には、当該入力された信号を出力する回路はＣＬＫ発生源であると判定する。ＣＬＫ遅延合算部２０７は、ＣＬＫ信号の遅延量の合計を算出する。波形生成部２０８は、データ遅延合算部２０４とＣＬＫ遅延合算部２０７との算出結果に基づいて、遅延シミュレーション波形から遅延除去済み波形を生成する。処理終了判定部２０９は、遅延除去処理の終了を判定する。
【００１８】
波形比較部１１３は、無遅延シミュレーション波形と、遅延除去部１１２が生成した遅延除去済み波形とを比較し、比較結果を出力する。当該比較結果は、表示装置１２に表示される。
【００１９】
続いて、図４及び図５に示すフローチャートを参照して、本実施の形態にかかるシミュレーション装置１の動作について説明する。図４は、シミュレーション装置１の動作全体を示すフローチャートである。
【００２０】
まず、シミュレーション装置１は、遅延を考慮したシミュレーション及び遅延を考慮しないシミュレーションを実行し、遅延シミュレーション波形及び無遅延シミュレーション波形を生成する（ステップＳ１０１）。そして、シミュレーション装置１は、遅延シミュレーション波形及び無遅延シミュレーション波形をメモリ１１１に格納する。
【００２１】
遅延除去部１１２は、メモリ１１１に格納された遅延情報、回路情報、及び遅延シミュレーション波形に基づいて、遅延除去済み波形を生成する（ステップＳ１０２）。具体的には、遅延除去部１１２は、対象回路の各配線に配置された素子を特定し、当該素子及び配線に応じた遅延量を算出し、当該遅延量を遅延シミュレーション波形から除去することにより、遅延除去済み波形を生成する。なお、遅延除去済み波形の生成処理の詳細については後述する。遅延除去部１１２は、遅延除去済み波形をメモリ１１１に格納する。
【００２２】
波形比較部１１３は、メモリ１１１に格納された無遅延シミュレーション波形と、遅延除去済み波形とを比較する（ステップＳ１０３）。そして、表示装置１２は、比較結果を表示する（ステップＳ１０４）。
【００２３】
ここで、遅延除去部１１２の遅延除去済み波形の生成処理について、図５に示すフローチャートを参照して詳細に説明する。例として、図６に示す対象回路における遅延除去済み波形の生成処理について説明する。なお、図６に示す対象回路の遅延シミュレーション波形を図７に、無遅延シミュレーション波形を図８に、遅延除去済み波形を図９に示す。以下の説明では、図７の信号Ｄ３０の時刻Ｔ１における立ち上がり波形について、遅延を除去する処理について説明する。
【００２４】
まず、インスタンス情報取得部２０１が、遅延シミュレーション波形を読み込み、遅延シミュレーション波形に含まれるインスタンス情報を取得する（ステップＳ２０１）。これにより、図７、図８に示す全信号（Ｏｕｔ／Ｄ３０／Ｄ２１／Ｄ１１／Ｄ２０／Ｄ１０／Ｉｎ２／Ｉｎ１／Ｃ２／Ｃ１／Ｃｌｋ＿ｓｅｌ／Ｃｌｋ２／Ｃｌｋ１）が抽出され、インスタンス情報としてメモリ１１１に格納される。
【００２５】
次に、前段素子抽出部２０２が、回路情報を参照し、信号Ｄ３０の前段の素子（ＡＮＤ素子ＡＮＤ１）を抽出する（ステップＳ２０２）。フリップフロップ判定部２０５は、前段素子抽出部２０２によって抽出された素子がフリップフロップであるか否かを判定する（ステップＳ２０３）。ＡＮＤ素子ＡＮＤ１は、フリップフロップではないため（ステップＳ２０３：Ｎｏ）、変化順序判定部２０３の処理に移る。
【００２６】
変化順序判定部２０３は、回路情報及び遅延シミュレーション波形を読み込み、対象とするＡＮＤ素子ＡＮＤ１に入力される信号Ｄ１１と信号Ｄ２１のうち、直近に変化した（最も直前に変化した）信号を判定する（ステップＳ２０４）。図７に示す遅延シミュレーション波形から明らかなように、変化順序判定部２０３は、直近に変化した信号は信号Ｄ２１であると判定する（ステップＳ２０４）。
【００２７】
前段素子抽出部２０２は、回路情報を参照して、対象となる信号Ｄ２１の前段の素子（バッファ素子ＢＵＦ２）を抽出する（ステップＳ２０２）。フリップフロップ判定部２０５は、前段素子抽出部２０２によって抽出された素子がフリップフロップであるか否かを判定する（ステップＳ２０３）。バッファ素子ＢＵＦ２は、フリップフロップでないため（ステップＳ２０３：Ｎｏ）、変化順序判定部２０３の処理に移る。今回は対象となる信号が信号Ｄ２０のみであるため、変化順序判定部２０３は、直近に変化した信号は信号Ｄ２０であると判定する（ステップＳ２０４）。
【００２８】
次に、前段素子抽出部２０２は、回路情報を参照して、対象となる信号Ｄ２０の前段の素子（フリップフロップＦＦ２）を抽出する（ステップＳ２０２）。フリップフロップ判定部２０５は、前段素子抽出部２０２によって抽出された素子がフリップフロップであるか否かを判定する（ステップＳ２０３）。フリップフロップＦＦ２は、フリップフロップであるため（ステップＳ２０３：Ｙｅｓ）、データ遅延合算部２０４の処理に移る。
【００２９】
データ遅延合算部２０４は、基準点とした信号Ｄ３０からフリップフロップＦＦ２のＣＬＫ端子までの遅延値の合計（データ遅延）を、遅延情報を参照して算出する（ステップＳ２０５）。データ遅延合算部２０４は、算出したデータ遅延をメモリ１１１に格納する。
【００３０】
前段素子抽出部２０２は、回路情報を参照して、次の基準点をフリップフロップＦＦ２のＣＬＫ端子とし、当該ＣＬＫ端子の前段の素子（バッファＢＵＦ３）を抽出する（ステップＳ２０６）。変化順序判定部２０３は、対象となる信号が信号Ｃ１のみであるため、直近に変化した信号は信号Ｃ１であると判定する（ステップＳ２０７）。
【００３１】
ＣＬＫ発生源判定部２０６は、対象の素子であるバッファ素子ＢＵＦ３がＣＬＫ発生源であるか否かを判定する（ステップＳ２０８）。バッファ素子ＢＵＦ３には、外部からの入力信号や予め設定されたＰＬＬや発振回路等の信号が入力されていないため、ＣＬＫ発生源でない（ステップＳ２０８：Ｎｏ）。そのため、フリップフロップ判定部２０５の処理に移る。
【００３２】
フリップフロップ判定部２０５は、対象の素子であるバッファ素子ＢＵＦ３がフリップフロップであるか否かを判定する（ステップＳ２０９）。バッファ素子ＢＵＦ３はフリップフロップではないため（ステップＳ２０９：Ｎｏ）、前段素子抽出部２０２は、回路情報を参照して、対象となる信号Ｃ１の前段の素子（セレクタＳＥＬ１）を抽出する（ステップＳ２０６）。
【００３３】
なお、対象の素子がフリップフロップである場合（ステップＳ２０９：Ｙｅｓ）、データ遅延合算部２０４は、基準点であるフリップフロップＦＦ２のＣＬＫ端子から、ステップＳ２０９において判定されたフリップフロップのＣＬＫ端子までの遅延値の合計（データ遅延）を算出し、メモリ１１１に格納する（ステップＳ２０５）。そして、上記の前段素子抽出部２０２の処理に移る。
【００３４】
変化順序判定部２０３は、回路情報及び遅延シミュレーション波形を参照し、対象となるセレクタＳＥＬ１に入力される信号Ｃｌｋ１、信号Ｃｌｋ２、信号Ｃｌｋ＿ｓｅｌのうち、直近に変化した信号は信号Ｃｌｋ１であると判定する（ステップＳ２０７）。
【００３５】
ＣＬＫ発生源判定部２０６は、対象となる信号Ｃｌｋ１がＣＬＫ発生源からの信号であるか否かを判定する（ステップＳ２０８）。信号Ｃｌｋ１は外部からの入力信号であるため、ＣＬＫ発生源判定部２０６は、信号Ｃｌｋ１がＣＬＫ発生源からの信号であると判定する（ステップＳ２０８：Ｙｅｓ）。
【００３６】
ＣＬＫ遅延合算部２０７は、基準点であるフリップフロップＦＦ２のＣＬＫ端子から信号Ｃｌｋ１までの遅延量の合計（ＣＬＫ遅延）を、遅延情報を参照して算出する（ステップＳ２１０）。ＣＬＫ遅延合算部２０７は、算出したＣＬＫ遅延をメモリ１１１に格納する。
【００３７】
波形生成部２０８は、遅延シミュレーション波形における信号Ｄ３０の時刻Ｔ１の変化タイミングから、メモリ１１１に格納されたＣＬＫ遅延及びデータ遅延を差し引き、信号Ｄ３０の変化タイミングが図９の時刻Ｔ２となる遅延除去済み波形を生成する（ステップＳ２１１）。つまり、波形生成部２０８は、遅延除去済みの信号Ｄ１１及びＤ２１の両方がＨレベルとなる区間においてＨレベルとなるような波形を信号Ｄ３０として生成する。波形生成部２０８は、遅延除去済み波形をメモリ１１１に格納する。
【００３８】
処理終了判定部２０９は、インスタンス情報を参照して、対象回路における全信号の全変化点に対して以上の処理（ステップＳ２０１〜Ｓ２１１）が実行されたか否かを判定する（ステップＳ２１２）。全信号に対して処理が実行されている場合（ステップＳ２１２：Ｙｅｓ）、遅延除去部１１２は動作を終了する。これにより、図７に示す遅延シミュレーション波形から図９に示す遅延除去済み波形が生成される。一方、全信号に対して処理が実行されていない場合（ステップＳ２１２：Ｎｏ）、遅延除去部１１２は、再度ステップＳ２０２から処理を開始する。
【００３９】
遅延除去済み波形が生成されると、波形比較部１１３は、無遅延シミュレーション波形と遅延除去済み波形とを比較し、結果比較済み波形を生成する。そして、表示装置１２は、結果比較済み波形を表示する。このとき、結果比較済み波形は、例えば、遅延除去済み波形と無遅延シミュレーション波形とを重ね合わせることにより生成可能である。これにより、遅延除去済み波形と無遅延シミュレーション波形との一致箇所、不一致箇所が明らかになる。
【００４０】
結果比較済み波形を図１０に示す。表示装置１２は、結果比較済み波形において、サイクル（破線で区切られた範囲）単位で、波形に違いが発生している箇所のみをハイライトで表示する（図１０のハッチング部分）。このため、シミュレーション装置１のユーザは、致命的な遅延により動作に違いの出たフリップフロップ（上述の例においては、信号Ｄ２１の致命的な遅延により、フリップフロップＦＦ３の動作に違いが出ている）を容易に認識することができる。図１０においては、遅延シミュレーション波形のＯｕｔ信号が１ＣＬＫ遅れて出力されていることが容易に認識できる。なお、ハイライトで表示する部分は波形の一致箇所であってもよい。
【００４１】
以上のように、本実施の形態にかかるシミュレーション装置１の構成によれば、遅延除去部１１２が、遅延シミュレーション波形から遅延を除去し、遅延除去済み波形を生成する。そして、波形比較部１１３が、遅延除去済み波形と無遅延シミュレーション波形とを比較し、比較結果を出力する。このため、ユーザは、比較結果が異なる部分、つまり、波形が一致しない部分を特定することにより、ＦＡＩＬ原因が存在することを認識できる。したがって、波形の比較ポイントや比較タイミング等の設定を行う必要がなく、容易にシミュレーション解析を行うことができ、処理負担が軽減する。さらに、比較ポイントや比較タイミングの設定の失敗も発生しないため、シミュレーションの繰り返しも不要となる。
【００４２】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更及び組み合わせをすることが可能である。例えば、対象回路の構成は、図６に示す構成に限られない。また、対象回路の動作を示す波形も、図７〜図１０に示す波形に限られない。さらに、上述の実施の形態においては、対象回路を構成する素子及び配線の遅延を考慮して遅延除去処理を行ったが、配線の遅延が無視できる程小さい場合には、素子のみの遅延に基づいて遅延除去処理を行ってもよい。
【符号の説明】
【００４３】
１  シミュレーション装置
１１  コンピュータ
１２  表示装置
１３  入力装置
１１１  メモリ
１１２  遅延除去部
１１３  波形比較部
２０１  インスタンス情報取得部
２０２  前段素子抽出部
２０３  変化順序判定部
２０４  データ遅延合算部
２０５  フリップフロップ判定部
２０６  ＣＬＫ発生源判定部
２０７  ＣＬＫ遅延合算部
２０８  波形生成部
２０９  処理終了判定部
【図１】
2013080310.tif 000003
【図２】
2013080310.tif 000004
【図３】
2013080310.tif 000005
【図４】
2013080310.tif 000006
【図５】
2013080310.tif 000007
【図６】
2013080310.tif 000008
【図７】
2013080310.tif 000009
【図８】
2013080310.tif 000010
【図９】
2013080310.tif 000011
【図１０】
2013080310.tif 000012