説明

シミュレーション装置及びシミュレーション方法

【課題】処理負担を軽減させることができるシミュレーション装置及びシミュレーション方法を提供する。
【解決手段】シミュレーション装置のコンピュータ11は、メモリ111と、遅延除去部112と、波形比較部113と、を備える。メモリ111は、対象回路を構成する素子の遅延情報を格納する。遅延除去部112は、素子による遅延を考慮した対象回路のシミュレーション結果である遅延シミュレーション波形から、遅延情報に基づいて、素子による遅延を除去した遅延除去済み波形を生成する。波形比較部113は、遅延除去済み波形と、素子による遅延を考慮しない対象回路のシミュレーション結果である無遅延シミュレーション波形と、を比較し、比較結果を出力する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明はシミュレーション装置及びシミュレーション方法に関し、特に遅延シミュレーションを行うシミュレーション装置及びシミュレーション方法に関する。
【背景技術】
【0002】
半導体シミュレーションの技術分野において、レイアウト設計工程以降における遅延付きシミュレーションが行われている。遅延付きシミュレーションが遅延起因によって正常に動作しない場合には、対象回路上において、FAIL原因となっている遅延の付いた箇所を特定する必要がある。
【0003】
近年、回路規模の増大と、それに伴うシミュレーションパターンの増大により、遅延シミュレーションに必要とする時間が増大している。さらに、回路規模等の増大により、シミュレーション波形を参照して、FAIL原因となっている遅延の付いた箇所を特定することが困難になってきている。そのため、容易にシミュレーション結果を解析できる方法が望まれている。
【0004】
特許文献1には、期待値のシミュレーション結果と、観測値のシミュレーション結果と、を比較するタイミング検証装置が開示されている。タイミング検証装置は、期待値及び観測値のシミュレーション結果のそれぞれに対して、確定周期比較ポイントと信号相対比較ポイントとを設定する。タイミング検証装置は、これらの確定周期比較ポイント及び信号相対比較ポイントにおいて、期待値と観測値との波形の比較を行い、比較結果を外部に出力する。これにより、期待値と観測値との一致箇所、不一致箇所を特定することができる。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2001−147947号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、特許文献1に記載のタイミング検証装置においては、確定周期比較ポイント及び信号相対比較ポイントを、シミュレーション解析に必要十分な箇所全てに設定しなければならない。そのため、解析処理は煩雑となり、負担がかかるという問題がある。加えて、確定周期比較ポイント及び信号相対比較ポイントの設定箇所が不十分であったり、誤っていたりすると、再度シミュレーションを行う必要が生じる。そのため、シミュレーション解析(FAIL解析)の処理負担がさらに増加するという問題がある。
【課題を解決するための手段】
【0007】
本発明にかかるシミュレーション装置は、対象回路を構成する素子の遅延情報が格納された記憶手段と、前記素子による遅延を考慮した前記対象回路のシミュレーション結果である第1の波形から、前記遅延情報に基づいて前記素子による遅延を除去した第2の波形を生成する遅延除去手段と、前記第2の波形と、前記素子による遅延を考慮しない前記対象回路のシミュレーション結果である第3の波形と、を比較し、比較結果を出力する波形比較手段と、を備えるものである。これにより、比較ポイントや比較タイミングの設定をすることなく、波形の比較が可能となる。そのため、シミュレーションの処理負担を軽減することができる。
【0008】
本発明にかかるシミュレーション方法は、対象回路を構成する素子による遅延を考慮した前記対象回路のシミュレーション結果である第1の波形から、前記素子の遅延情報に基づいて前記素子による遅延を除去した第2の波形を生成し、前記第2の波形と、前記素子による遅延を考慮しない前記対象回路のシミュレーション結果である第3の波形と、を比較し、比較結果を出力するものである。これにより、比較ポイントや比較タイミングの設定をすることなく、波形の比較が可能となる。そのため、シミュレーションの処理負担を軽減することができる。
【発明の効果】
【0009】
本発明により、処理負担を軽減させることができるシミュレーション装置及びシミュレーション方法を提供することができる。
【図面の簡単な説明】
【0010】
【図1】実施の形態にかかるシミュレーション装置の構成例を示す図である。
【図2】実施の形態にかかるコンピュータのブロック図の図である。
【図3】実施の形態にかかる遅延除去部のブロック図である。
【図4】実施の形態にかかるシミュレーション装置の動作を示すフローチャートである。
【図5】実施の形態にかかる遅延除去部の動作を示すフローチャートである。
【図6】実施の形態にかかる対象回路の回路図である。
【図7】実施の形態にかかる対象回路の遅延シミュレーション波形である。
【図8】実施の形態にかかる対象回路の無遅延シミュレーション波形である。
【図9】実施の形態にかかる対象回路の遅延除去済み波形である。
【図10】実施の形態にかかる対象回路の結果比較済み波形である。
【発明を実施するための形態】
【0011】
以下、図面を参照して本発明の実施の形態について説明する。本実施の形態にかかるシミュレーション装置1の構成例を図1に示す。シミュレーション装置1は、コンピュータ11と、表示装置12と、入力装置13と、を備える。
【0012】
コンピュータ11は、本発明にかかるシミュレーション方法を実行するためのソフトウェアやCPU(Central Processing Unit)、MPU(Micro Processing Unit)、GPGPU(General-Purpose computing on Graphics Processing Unit)等の演算処理装置が組み込まれたコンピュータである。表示装置12は、シミュレーション結果の波形を表示するディスプレイである。入力装置13は、シミュレーションに必要なデータ入力等、コンピュータ11の操作を行うためのキーボード等である。
【0013】
次に、コンピュータ11の詳細な構成について、図2に示すブロック図を参照して説明する。コンピュータ11は、メモリ111と、遅延除去部112と、波形比較部113と、を備える。
【0014】
メモリ111は、対象回路を構成する素子及び配線の遅延値に関する遅延情報と、対象回路を構成する素子の配置に関する回路情報と、を格納する。遅延除去部112は、回路情報を参照することにより、対象回路における素子の接続関係や位置関係を認識できる。また、遅延除去部112は、遅延情報を参照することにより、各素子及び配線の遅延値を認識できる。なお、対象回路とは、シミュレーションの対象となる回路を意味する。
【0015】
さらに、メモリ111は、対象回路を構成する素子及び配線の遅延を考慮したシミュレーション結果(第1の波形。以下、遅延シミュレーション波形と称す。)と、対象回路を構成する素子及び配線の遅延を考慮しないシミュレーション結果(第3の波形。以下、無遅延シミュレーション結果と称す。)と、を格納する。
【0016】
遅延除去部112は、遅延シミュレーション結果から、遅延情報に基づいて、対象回路の素子及び配線による遅延を除去した波形(第2の波形。以下、遅延除去済み波形と称す。)を生成する。遅延除去部112の詳細なブロック図を図3に示す。遅延除去部112は、インスタンス情報取得部201と、前段素子抽出部202と、変化順序判定部203と、データ遅延合算部204と、フリップフロップ判定部205と、CLK発生源判定部206と、CLK遅延合算部207と、波形生成部208と、処理終了判定部209と、を備える。
【0017】
インスタンス情報取得部201は、遅延シミュレーション波形に含まれるインスタンス情報を取得する。前段素子抽出部202は、対象回路における特定の素子の前段(クロック発生源側)に配置された素子を、回路情報に基づいて特定する。変化順序判定部203は、1つの素子に複数の信号が入力されている場合に、複数の信号のうち直近に変化した信号を判定する。データ遅延合算部204は、データ信号の遅延量(素子及び配線の影響によるデータ遅延)の合計を算出する。フリップフロップ判定部205は、対象とする素子がフリップフロップ等の順序回路かそれ以外の組み合わせ回路かを判定する。CLK発生源判定部206は、対象とした素子または信号入力端子に入力される信号が、CLK発生源として外部から入力される信号であるか、もしくは、予め設定されたPLL(Phase-locked Loop)回路や発振回路等からの信号であるかを判定する。そして、CLK発生源判定部206は、外部から入力される信号やPLL等からの入力される信号である場合には、当該入力された信号を出力する回路はCLK発生源であると判定する。CLK遅延合算部207は、CLK信号の遅延量の合計を算出する。波形生成部208は、データ遅延合算部204とCLK遅延合算部207との算出結果に基づいて、遅延シミュレーション波形から遅延除去済み波形を生成する。処理終了判定部209は、遅延除去処理の終了を判定する。
【0018】
波形比較部113は、無遅延シミュレーション波形と、遅延除去部112が生成した遅延除去済み波形とを比較し、比較結果を出力する。当該比較結果は、表示装置12に表示される。
【0019】
続いて、図4及び図5に示すフローチャートを参照して、本実施の形態にかかるシミュレーション装置1の動作について説明する。図4は、シミュレーション装置1の動作全体を示すフローチャートである。
【0020】
まず、シミュレーション装置1は、遅延を考慮したシミュレーション及び遅延を考慮しないシミュレーションを実行し、遅延シミュレーション波形及び無遅延シミュレーション波形を生成する(ステップS101)。そして、シミュレーション装置1は、遅延シミュレーション波形及び無遅延シミュレーション波形をメモリ111に格納する。
【0021】
遅延除去部112は、メモリ111に格納された遅延情報、回路情報、及び遅延シミュレーション波形に基づいて、遅延除去済み波形を生成する(ステップS102)。具体的には、遅延除去部112は、対象回路の各配線に配置された素子を特定し、当該素子及び配線に応じた遅延量を算出し、当該遅延量を遅延シミュレーション波形から除去することにより、遅延除去済み波形を生成する。なお、遅延除去済み波形の生成処理の詳細については後述する。遅延除去部112は、遅延除去済み波形をメモリ111に格納する。
【0022】
波形比較部113は、メモリ111に格納された無遅延シミュレーション波形と、遅延除去済み波形とを比較する(ステップS103)。そして、表示装置12は、比較結果を表示する(ステップS104)。
【0023】
ここで、遅延除去部112の遅延除去済み波形の生成処理について、図5に示すフローチャートを参照して詳細に説明する。例として、図6に示す対象回路における遅延除去済み波形の生成処理について説明する。なお、図6に示す対象回路の遅延シミュレーション波形を図7に、無遅延シミュレーション波形を図8に、遅延除去済み波形を図9に示す。以下の説明では、図7の信号D30の時刻T1における立ち上がり波形について、遅延を除去する処理について説明する。
【0024】
まず、インスタンス情報取得部201が、遅延シミュレーション波形を読み込み、遅延シミュレーション波形に含まれるインスタンス情報を取得する(ステップS201)。これにより、図7、図8に示す全信号(Out/D30/D21/D11/D20/D10/In2/In1/C2/C1/Clk_sel/Clk2/Clk1)が抽出され、インスタンス情報としてメモリ111に格納される。
【0025】
次に、前段素子抽出部202が、回路情報を参照し、信号D30の前段の素子(AND素子AND1)を抽出する(ステップS202)。フリップフロップ判定部205は、前段素子抽出部202によって抽出された素子がフリップフロップであるか否かを判定する(ステップS203)。AND素子AND1は、フリップフロップではないため(ステップS203:No)、変化順序判定部203の処理に移る。
【0026】
変化順序判定部203は、回路情報及び遅延シミュレーション波形を読み込み、対象とするAND素子AND1に入力される信号D11と信号D21のうち、直近に変化した(最も直前に変化した)信号を判定する(ステップS204)。図7に示す遅延シミュレーション波形から明らかなように、変化順序判定部203は、直近に変化した信号は信号D21であると判定する(ステップS204)。
【0027】
前段素子抽出部202は、回路情報を参照して、対象となる信号D21の前段の素子(バッファ素子BUF2)を抽出する(ステップS202)。フリップフロップ判定部205は、前段素子抽出部202によって抽出された素子がフリップフロップであるか否かを判定する(ステップS203)。バッファ素子BUF2は、フリップフロップでないため(ステップS203:No)、変化順序判定部203の処理に移る。今回は対象となる信号が信号D20のみであるため、変化順序判定部203は、直近に変化した信号は信号D20であると判定する(ステップS204)。
【0028】
次に、前段素子抽出部202は、回路情報を参照して、対象となる信号D20の前段の素子(フリップフロップFF2)を抽出する(ステップS202)。フリップフロップ判定部205は、前段素子抽出部202によって抽出された素子がフリップフロップであるか否かを判定する(ステップS203)。フリップフロップFF2は、フリップフロップであるため(ステップS203:Yes)、データ遅延合算部204の処理に移る。
【0029】
データ遅延合算部204は、基準点とした信号D30からフリップフロップFF2のCLK端子までの遅延値の合計(データ遅延)を、遅延情報を参照して算出する(ステップS205)。データ遅延合算部204は、算出したデータ遅延をメモリ111に格納する。
【0030】
前段素子抽出部202は、回路情報を参照して、次の基準点をフリップフロップFF2のCLK端子とし、当該CLK端子の前段の素子(バッファBUF3)を抽出する(ステップS206)。変化順序判定部203は、対象となる信号が信号C1のみであるため、直近に変化した信号は信号C1であると判定する(ステップS207)。
【0031】
CLK発生源判定部206は、対象の素子であるバッファ素子BUF3がCLK発生源であるか否かを判定する(ステップS208)。バッファ素子BUF3には、外部からの入力信号や予め設定されたPLLや発振回路等の信号が入力されていないため、CLK発生源でない(ステップS208:No)。そのため、フリップフロップ判定部205の処理に移る。
【0032】
フリップフロップ判定部205は、対象の素子であるバッファ素子BUF3がフリップフロップであるか否かを判定する(ステップS209)。バッファ素子BUF3はフリップフロップではないため(ステップS209:No)、前段素子抽出部202は、回路情報を参照して、対象となる信号C1の前段の素子(セレクタSEL1)を抽出する(ステップS206)。
【0033】
なお、対象の素子がフリップフロップである場合(ステップS209:Yes)、データ遅延合算部204は、基準点であるフリップフロップFF2のCLK端子から、ステップS209において判定されたフリップフロップのCLK端子までの遅延値の合計(データ遅延)を算出し、メモリ111に格納する(ステップS205)。そして、上記の前段素子抽出部202の処理に移る。
【0034】
変化順序判定部203は、回路情報及び遅延シミュレーション波形を参照し、対象となるセレクタSEL1に入力される信号Clk1、信号Clk2、信号Clk_selのうち、直近に変化した信号は信号Clk1であると判定する(ステップS207)。
【0035】
CLK発生源判定部206は、対象となる信号Clk1がCLK発生源からの信号であるか否かを判定する(ステップS208)。信号Clk1は外部からの入力信号であるため、CLK発生源判定部206は、信号Clk1がCLK発生源からの信号であると判定する(ステップS208:Yes)。
【0036】
CLK遅延合算部207は、基準点であるフリップフロップFF2のCLK端子から信号Clk1までの遅延量の合計(CLK遅延)を、遅延情報を参照して算出する(ステップS210)。CLK遅延合算部207は、算出したCLK遅延をメモリ111に格納する。
【0037】
波形生成部208は、遅延シミュレーション波形における信号D30の時刻T1の変化タイミングから、メモリ111に格納されたCLK遅延及びデータ遅延を差し引き、信号D30の変化タイミングが図9の時刻T2となる遅延除去済み波形を生成する(ステップS211)。つまり、波形生成部208は、遅延除去済みの信号D11及びD21の両方がHレベルとなる区間においてHレベルとなるような波形を信号D30として生成する。波形生成部208は、遅延除去済み波形をメモリ111に格納する。
【0038】
処理終了判定部209は、インスタンス情報を参照して、対象回路における全信号の全変化点に対して以上の処理(ステップS201〜S211)が実行されたか否かを判定する(ステップS212)。全信号に対して処理が実行されている場合(ステップS212:Yes)、遅延除去部112は動作を終了する。これにより、図7に示す遅延シミュレーション波形から図9に示す遅延除去済み波形が生成される。一方、全信号に対して処理が実行されていない場合(ステップS212:No)、遅延除去部112は、再度ステップS202から処理を開始する。
【0039】
遅延除去済み波形が生成されると、波形比較部113は、無遅延シミュレーション波形と遅延除去済み波形とを比較し、結果比較済み波形を生成する。そして、表示装置12は、結果比較済み波形を表示する。このとき、結果比較済み波形は、例えば、遅延除去済み波形と無遅延シミュレーション波形とを重ね合わせることにより生成可能である。これにより、遅延除去済み波形と無遅延シミュレーション波形との一致箇所、不一致箇所が明らかになる。
【0040】
結果比較済み波形を図10に示す。表示装置12は、結果比較済み波形において、サイクル(破線で区切られた範囲)単位で、波形に違いが発生している箇所のみをハイライトで表示する(図10のハッチング部分)。このため、シミュレーション装置1のユーザは、致命的な遅延により動作に違いの出たフリップフロップ(上述の例においては、信号D21の致命的な遅延により、フリップフロップFF3の動作に違いが出ている)を容易に認識することができる。図10においては、遅延シミュレーション波形のOut信号が1CLK遅れて出力されていることが容易に認識できる。なお、ハイライトで表示する部分は波形の一致箇所であってもよい。
【0041】
以上のように、本実施の形態にかかるシミュレーション装置1の構成によれば、遅延除去部112が、遅延シミュレーション波形から遅延を除去し、遅延除去済み波形を生成する。そして、波形比較部113が、遅延除去済み波形と無遅延シミュレーション波形とを比較し、比較結果を出力する。このため、ユーザは、比較結果が異なる部分、つまり、波形が一致しない部分を特定することにより、FAIL原因が存在することを認識できる。したがって、波形の比較ポイントや比較タイミング等の設定を行う必要がなく、容易にシミュレーション解析を行うことができ、処理負担が軽減する。さらに、比較ポイントや比較タイミングの設定の失敗も発生しないため、シミュレーションの繰り返しも不要となる。
【0042】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更及び組み合わせをすることが可能である。例えば、対象回路の構成は、図6に示す構成に限られない。また、対象回路の動作を示す波形も、図7〜図10に示す波形に限られない。さらに、上述の実施の形態においては、対象回路を構成する素子及び配線の遅延を考慮して遅延除去処理を行ったが、配線の遅延が無視できる程小さい場合には、素子のみの遅延に基づいて遅延除去処理を行ってもよい。
【符号の説明】
【0043】
1 シミュレーション装置
11 コンピュータ
12 表示装置
13 入力装置
111 メモリ
112 遅延除去部
113 波形比較部
201 インスタンス情報取得部
202 前段素子抽出部
203 変化順序判定部
204 データ遅延合算部
205 フリップフロップ判定部
206 CLK発生源判定部
207 CLK遅延合算部
208 波形生成部
209 処理終了判定部

【特許請求の範囲】
【請求項1】
対象回路を構成する素子の遅延情報が格納された記憶手段と、
前記素子による遅延を考慮した前記対象回路のシミュレーション結果である第1の波形から、前記遅延情報に基づいて前記素子による遅延を除去した第2の波形を生成する遅延除去手段と、
前記第2の波形と、前記素子による遅延を考慮しない前記対象回路のシミュレーション結果である第3の波形と、を比較し、比較結果を出力する波形比較手段と、
を備えるシミュレーション装置。
【請求項2】
前記遅延除去手段は、前記遅延情報に基づいて、前記対象回路のデータ信号及びクロック信号の遅延を算出し、前記データ信号及び前記クロック信号の遅延を用いて前記第2の波形を生成する請求項1に記載のシミュレーション装置。
【請求項3】
前記記憶手段には、前記対象回路を構成する配線の遅延情報と、前記素子の配置に関する回路情報と、がさらに格納され、
前記遅延除去手段は、前記素子及び配線の遅延情報及び前記回路情報に基づいて、前記対象回路の各配線に配置された前記素子を特定し、当該素子及び配線に応じた遅延量を算出し、当該遅延量を前記第1の波形から除去することにより、前記第2の波形を生成する請求項1または2に記載のシミュレーション装置。
【請求項4】
前記波形比較手段の前記比較結果に基づいて、前記第2の波形と前記第3の波形との一致部分及び不一致部分の少なくとも一方を表示する表示手段をさらに備える請求項1〜3のいずれか一項に記載のシミュレーション装置。
【請求項5】
対象回路を構成する素子による遅延を考慮した前記対象回路のシミュレーション結果である第1の波形から、前記素子の遅延情報に基づいて前記素子による遅延を除去した第2の波形を生成し、
前記第2の波形と、前記素子による遅延を考慮しない前記対象回路のシミュレーション結果である第3の波形と、を比較し、比較結果を出力するシミュレーション方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate