(57)【特許請求の範囲】
【請求項１】
被シミュレーション回路を規定した回路接続情報、前記被シミュレーション回路への入力波形情報及びタイミング検証項目情報を受け、該タイミング検証項目情報に規定された前記被シミュレーション回路内の少なくとも１つの要スパイク検出箇所のスパイクの発生の有無を、前記タイミング検証項目情報の指示するタイミング条件で、論理シミュレーション実行中に検出するスパイク検出機能を有する論理シミュレーション装置であって、
前記少なくとも１つの要スパイク検出箇所それぞれに対応して前記タイミング条件が設定され、
前記少なくとも１つの要スパイク検出箇所それぞれに対応して、その入力経路となる回路部分をスパイク監視部分として設定するスパイク検出前処理手段と、
前記少なくとも１つの要スパイク検出箇所の個々に対し、当該個々と個々に対応する前記スパイク監視部分を加えた範囲をスパイク検出範囲として設定し、前記スパイク検出範囲内にある前記要スパイク検出箇所に対応して設定された前記タイミング条件で、前記スパイク検出範囲のスパイクの発生の有無を検出するスパイク検出手段とを備える、
論理シミュレーション装置。
【請求項２】
前記スパイク検出手段により検出されたスパイクの発生源を特定するスパイク発生源特定手段をさらに備え、
前記スパイク発生源特定手段は、検出されたスパイクの信号変化のうち前の信号変化及び後ろの信号変化それぞれに対して、その原因となるイベントを抽出し、抽出したイベント間における関係に基づき、スパイク発生源を特定することを特徴とする、
請求項１記載の論理シミュレーション装置。
【請求項３】
前記スパイク発生源特定手段により特定されたスパイク発生源の情報を編集するタイミングエラー編集手段をさらに備え、
前記タイミングエラー編集手段は、論理シミュレーション実行中に発生したスパイクのすべてのスパイク発生源を記憶し、新たに発生したスパイクのスパイク発生源が既に記憶しているスパイク発生源のいずれかと一致する場合、前記新たに発生したスパイクのスパイク発生源の情報を削除する、
請求項２記載の論理シミュレーション装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、タイミング検証機能を有する論理シミュレーション装置に関する。
【０００２】
【従来の技術】
スパイクの検出と、その発生源の特定が可能なタイミング検証機能付き論理シミュレーション装置の実現には、従来、主に２つの方法が採用されている。以下では２つの従来方法を、＜従来技術１＞と＜従来技術２＞で説明する。
【０００３】
＜従来技術１＞
従来技術１の方法は、論理シミュレーション実行後にタイミング検証装置によりスパイクの検出と発生源の特定を行う方法である。
【０００４】
まず、入力すべき全ての入力信号波形をタイミング検証機能無しの論理シミュレータに入力して被シミュレーション回路に対するシミュレーションを実行する。この際、回路内で発生した全ての信号変化を記録しておく。そしてシミュレーション実行後、タイミング検証装置により、シミュレーション実行時に記録しておいた記憶素子の入力信号群の波形を調べる。もしスパイクとなる信号変化が発見されれば、そのスパイクを構成した信号変化に関係する信号変化を観察しながら、スパイクを発見した記憶素子から回路を外部入力ピン方向へたどり、スパイクの発生源を発見しようとする。しかしこの方法には、シミュレーション開始から終了までに発生した全てのイベントを記憶しておかなくてはならないこと、スパイクの発生源を特定するためのバックトレースに時間がかかること、などの問題点が存在する。
【０００５】
＜従来技術２＞
従来技術２の方法は、シミュレーション実行時にスパイクの検出と発生源の特定を行なう方法である。この方法を実現するタイミングエラー検証機能付き論理シミュレーション装置の構成を図６のブロック図に示す。（以下、従来装置といえば図６の装置を指すものとする）。尚、従来装置に対する説明は、スパイクに関係する機能に限定して説明することとし、本発明に関係ないハザードやホールドタイムエラーといったタイミングエラーに関係しては説明しない。以下では信号値として、低電位状態を“Ｌ”、高電位状態を“Ｈ”、不定値状態を“Ｘ”とする。
【０００６】
図６で示した従来構成の論理シミュレーション装置において、５１は論理シミュレーションの対象となる論理回路を構成するセルの接続関係を記述している回路接続情報である。従来装置では外部入出力ピンもセルとして扱う。例えば、図７に示す回路の回路接続情報５１は表１のようになる。
【０００７】
【表１】
0003727417.tif 000002
【０００８】
図７では１ａ〜１ｅが外部入力ピンセルでＩ１〜Ｉ５のセル名が与えられている。２ａと２ｂが外部出力ピンセルでＯ１とＯ２のセル名が与えられている。３ａ〜３ｃがＡＮＤセルでＡＮＤ０〜ＡＮＤ２のセル名が与えられている。３ｄがバッファセルでＢＵＦ１のセル名が与えられている。３ｅと３ｆがＤフリップフロップ（以下、「ＤＦＦ」と称す）セルでＦＤ１とＦＤ２のセル名が与えられている。例えば、表１を参照して、セルＩ１の接続情報を見ると、出力ピンＹは信号線Ｎ１につながっている事が分かる。そして、セルＦＤ１とＦＤ２の接続情報を見ると、信号線Ｎ１はそれぞれの入力ピンＤにつながっていることが分かり、その結果、信号線Ｎ１を介して、セルＩ１の出力ピンＹはセルＦＤ１のＤ入力及びセルＦＤ２のＤ入力につながっていることが分かる。
【０００９】
５２は論理シミュレーションを実行するために論理回路に入力する信号の入力波形情報で、入力する信号の波形の種類と入力する時刻が記述されている。表２は図７の回路に入力する入力波形情報の一例であり、例えば、時刻０にはセルＩ１、Ｉ２、Ｉ３、Ｉ４、Ｉ５のＹピンにそれぞれ信号値Ｌを入力することを示している。
【００１０】
【表２】
0003727417.tif 000003
【００１１】
５３は論理回路を構成しているセルと信号線毎に指定される信号伝播時の遅延に関する遅延情報である。ただし、信号線に対して遅延が指定されないときは、遅延情報５３に信号線の遅延情報は含まれず、この場合でも、装置は正しく動作する。図７の回路内のセルに対する遅延情報５３の一例を表３に、信号線に対する遅延情報の一例を表４に示す。
【００１２】
【表３】
0003727417.tif 000004
【００１３】
【表４】
0003727417.tif 000005
【００１４】
セルの信号伝播時の遅延値は、そのセルの入力ピンと出力ピンの組み毎に指定することができる。例えば表３では、セルＡＮＤ０ではピンＡからピンＹへの遅延値は、ピンＹが立ち上がりの変化（Ｌ→ＨまたはＸ→Ｈ）をしたときが５ｎｓであり、立ち下がりの変化（Ｈ→ＬまたはＨ→Ｘ）をしたときが３ｎｓである。また、信号線の信号伝播時の遅延値は、その信号線を駆動しているピンと信号線の出力先のピンの組み毎に指定することができる。表４では、信号線Ｎ１は、セルＩ１の出力ピンＹからセルＦＤ１の入力ピンＤまでの経路にはＮ１が立ち上がりの変化をしたときの遅延値が３ｎｓ、立ち下がりの変化をしたときの遅延値が２ｎｓであり、セルＩ１の出力ピンＹからセルＦＤ２の入力ピンＤまでの経路にはＮ１が立ち上がりの変化をしたときの遅延値が４ｎｓ、立ち下がりの変化をしたときの遅延値が３ｎｓである。
【００１５】
５４はスパイク等のタイミングエラーを検出するために与えられた検査項目を記述しているタイミング検証項目情報である。従来装置においてスパイクを検出するためには、タイミング検証項目情報内で、“スパイク”という検証項目名（以下、スパイク検出項目と称す）で検出したいスパイクの特徴を指定する必要がある。表５は、図７の回路に対して指定された、スパイク検出項目を含むタイミング検証項目情報５４の一例である。
【００１６】
【表５】
0003727417.tif 000006
【００１７】
表５ではスパイク検出項目が２つ示されている。表５では、セルＦＤ１のピンＴにおいてマージン値２ｎｓの時間間隔内にＬ→Ｈ→Ｌの信号変化が起きたとき、これをスパイクとして検出して、タイミングエラーを出力させることを指定している。
【００１８】
５５は５１〜５４の情報を従来装置に取り込むための入力装置である。５６はスパイク検出前処理装置であり、回路接続情報５１とタイミング検証項目情報５４とから、スパイク検証項目で指定された全てのピン（以下、スパイク検出ピンと称す）を記憶し、記憶した全てのスパイク検出ピンへの信号伝播経路上に存在するセルの出力ピン（以下、スパイク監視出力ピンと称す）を記憶する。また、タイミング検証項目情報５４に記述された各スパイク検出ピン毎のマージン値を記憶し、さらに全スパイク検出項目の中のマージン値の最大値（以下、最大マージン値と称す）を記憶する。
【００１９】
スパイク監視出力ピンはスパイク検出ピンへの信号の伝播経路上に存在するセルの出力ピンであることから、１本のスパイク検出ピンにはスパイク監視出力ピンの集合が対応する。ここで、スパイク検出前処理装置の処理を例を用いて説明する。図７の回路接続情報５１（表１）とタイミング検証項目情報５４（表５）とが従来装置に入力されたとき、スパイク検出前処理装置５６は、スパイク検出ピンとしてＦＤ１のＴピンとＦＤ２のＴピンとを記憶する。次にスパイク監視出力ピンを記憶するが、この場合、スパイク検出ピンであるＦＤ１のＴピンに村応しているスパイク監視出力ピンの集合をＷ１とするとＷ１＝｛ＢＵＦ１のＹ、ＡＮＤ１のＹ、ＡＮＤ０のＹ、Ｉ２のＹ、Ｉ３のＹ、Ｉ４のＹ｝、であり、スパイク検出ピンであるＦＤ２のＴピンに対応するスパイク監視出力ピンの集合をＷ２とすると、Ｗ２＝｛ＡＮＤ２のＹ、ＡＮＤ０のＹ、Ｉ３のＹ、Ｉ４のＹ、Ｉ５のＹ｝となる。スパイク検出前処理装置５６では、このＷ１とＷ２の和集合Ｗ３＝｛ＢＵＦ１のＹ、ＡＮＤ１のＹ、ＡＮＤ０のＹ、ＡＮＤ２のＹ、Ｉ２のＹ、Ｉ３のＹ、Ｉ４のＹ、Ｉ５のＹ｝を記憶する。
【００２０】
また、各スパイク検出ピン毎に指定されたマージン値（この例ではＦＤ１のＴピンには２ｎｓ、ＦＤ２のＴピンには１０ｎｓ）をそれぞれ記憶し、さらに、最大マージン値（この例では１０ｎｓ）を記憶する。
【００２１】
次に、５７から６６までの装置を簡単に説明し、その後例を用いて詳しく説明する。５７はセルの各入力ピン毎に入力ピン名付加装置要素を割り付けると共に、入力ピン名付加装置要素を起動することによりセルに入力するイベントに対してそのイベントが入力する際に通過した当該セルの入力ピン名を付加する入力ピン名付加装置である。
【００２２】
５８は回路接続情報５１に従い、セルに、対応するセル模擬装置要素を割り付けると共に、割り付けられたセル模擬装置要素が模擬動作を実行することで入力波形情報５２によって与えられる各セル模擬装置要素の入力信号値に応じた出力信号値を求め、出力信号値に応じた“イベント”を生成するセル模擬装置。イベントは信号変化と対応するが、従来装置内を伝播するイベントには、変化前の信号値、変化後の信号値、変化時刻といった情報が記憶されており、さらに付加情報として、入力ピン名、原因イベント集合、スパイク情報集合、スパイクフラグが記憶されることがある。
【００２３】
スパイク情報集合とは、スパイクの発生源に関する情報であり、発生場所（セル名）と発生時刻の組を要素とする集合で、スパイクを構成する２つの信号変化のうち後ろ側の変化（以下、スパイクの後ろ側の変化と称す）を引き起こしたイベントに付加される。以下では、イベントを、＜変化時刻、変化前の信号値→変化後の信号値、入力ピン名、原因イベント集合、スパイク情報集合、スパイクフラグ＞として表す。例えば、情報として時刻１０ｎｓ、信号変化Ｌ→Ｈしか持たないイベントは、＜１０、Ｌ→Ｈ、ＮＵＬＬ、｛φ｝、｛φ｝、０＞と表せる。
【００２４】
原因イベント集合決定装置５９は各セル毎に原因イベント集合決定装置要素を割り付けると共に、割り付けられた各原因イベント集合決定装置要素を起動することで各原因イベント集合決定装置要素に入力されたイベントの内いずれのイベントがそのセル模擬装置要素の出力信号に影響を与えたかを判断し、その原因となったイベントの集合（以下、“原因イベント集合”と称す）を出力する。
【００２５】
原因イベント集合付加装置６０は各セル毎に原因イベント集合付加装置要素を割り付けると共に、割り付けられた原因イベント集合付加装置要素を起動することで原因イベント集合決定装置５９が決定した原因イベント集合をセル模擬装置５８が生成したイベントに付加する。
【００２６】
遅延装置６１は模擬対象回路内の各出力ピン毎、またはセル間の信号線毎に遅延装置要素を割り付けると共に、遅延装置要素を起動することにより遅延情報５３で指定された信号伝播遅延時間に応じて、セルの出力ピンからイベントを出力するタイミングや、信号線を伝播するタイミングを遅延させる。ただし、遅延情報５３に、信号線に対する遅延情報が含まれない場合は、信号線に割り付けられた遅延装置要素はタイミングを遅延させない。
【００２７】
スパイク検出装置６２はスパイク検出前処理装置５６で記憶したスパイク検出ピンとスパイク監視出力ピン毎にスパイク検出装置要素を割り付けると共に、スパイク検出ピンに割り付けられたスパイク検出装置要素にはスパイク検出前処理装置５６で記憶したスパイク検出ピン毎の信号変化の種類とマージン値を、スパイク監視出力ピンに割り付けられたスパイク検出装置要素には最大マージン値を記憶すると共に、スパイク検出装置要素を起動することにより、当該２種類のピン上にイベントが到着する度に各スパイク検出装置要素毎に記憶したマージン値以下のスパイクが発生するか否かを監視し、スパイクを検出すると当該イベントにスパイクフラグを付加する。
【００２８】
スパイク発生源特定装置６３はスパイク検出前処理装置５６で認識した２種類のピン毎にスパイク発生源特定装置要素を割り付けると共に、スパイク発生源特定装置要素を起動することによりスパイク検出装置６２で検出したスパイクの発生源を特定する。
【００２９】
イベント記憶装置６４はスパイク検出前処理装置５６で認識した２種類のピン毎にイベント記憶装置要素を割り付けると共に、イベント記憶装置要素を起動することにより各イベント記憶装置要素毎にシミュレーション中の現シミュレーション時刻より前で最近発生したイベントを一つだけ記憶する。
【００３０】
論理シミュレーション結果出力装置６５は論理シミュレーションの結果を出力する。タイミングエラー出力装置６６はスパイク検出ピン毎にタイミングエラー出力装置要素を割り付けると共に、タイミングエラー出力装置要素を起動することで、当該装置要素に入力したイベントにスパイクフラグが付加されている場合にはタイミングエラーを出力する。
【００３１】
上記した装置５７〜６６はそれぞれ記憶装置６７を介して情報のやりとりを行う。次に、上記した装置５７〜６６の動作を図８を用いて詳しく説明する。図８は、表５に示すタイミング検証項目と表１に示す図７の回路接続情報とを従来装置に入力した際に、従来装置内部に生成される装置要素間のネットワークのうち、図７のセルＡＮＤ２とセルＦＤ２とその接続部分を示す概念図である。図８は従来装置内部で作成されるタイミング検証及び論理シミュレーションの対象となるネットワークの一例であって、従来装置そのものでは無い。従来装置はいかなる論理回路が入力されてもシミュレーション可能であるために、配置する各装置要素とそのネットワークを変更する手段を備えている。
【００３２】
つまり、図６の入力装置５５を除く各装置が、前述したように回路接続情報５１とタイミング検証項目情報５４に応じて各装置要素を配置すると共に、それらを相互に接続するのである。図８では特に、スパイク監視出力ピンであるセル３ｃのピン２２ｂ（図７ではＡＮＤ２のピンＹ）とスパイク検出ピンであるセル３ｆのピン２１ｂ（図７ではセルＤＦＦ２のピンＴ）に対して、スパイク検出装置要素とイベント記憶装置要素とスパイク発生源特定装置要素とが配置されていることに注意を要する。
【００３３】
また、従来装置内部で信号値の情報がやりとりされるのは信号値が変化した時だけである。その際、信号値の変化に対応するイベントがネットワークを伝播する。図８の２１ａ〜２１ｄはセルの入力ピン、２２ａと２２ｂとはセルの出力ピン、３ｃと３ｆとはセルに対応する。セルの出力ピンに対応する２２ａと２２ｂでは、イベントがこれを通過する際に、イベントに記憶されている入力ピン名、原因イベント集合、スパイクフラグをイベントから除去する。
【００３４】
４ａ〜４ｖはイベントを伝達するイベント伝播経路、５ａと５ｂは原因イベント集合を伝達する原因イベント伝播経路である。その他の要素については以下で説明する。
【００３５】
図８で示すネットワークにおいて、セル３ｃのピン２１ｃとピン２１ｄとピン２２ｂ（図７ではセルＡＮＤ２のピンＡとピンＢとピンＹ）に図９に示すような信号変化が起こる場合を考える。この例は、図９からわかるように、セル３ｃ（図７ではセルＡＮＤ２）の前段ではスパイクが生成されず、当セルにはスパイクが伝播していない状態を示している。ネットワークでは、信号変化はイベントとして表せるので、時刻（ｔ−４）の変化をイベントＥ０、時刻ｔの変化をイベントＥ１、時刻（ｔ＋１）の変化をイベントＥ２、時刻（ｔ＋５）の変化をイベントＥ３と表現できる。
【００３６】
図９のセル３ｃのピン２２ｂの信号変化からもわかるように、スパイクとして検出する可能性のあるパルスは２つのイベントから構成されることになる。また、セルＡＮＤ２はＡＮＤセルであることから、イベントＥ２の変化の原因はイベントＥ０、イベントＥ３の変化の原因はイベントＥ１である。
【００３７】
さて、現時刻をｔとすると、セル３ｃのピン１ｃに入力信号値の変化を表すイベントＥ１＜ｔ、Ｈ→Ｌ、ＮＵＬＬ、｛φ｝、｛φ｝、０＞か入力することになる（入力ピン名と原因イベント集合とスパイクフラグは前段のセルの出力ピンを通過する際に除去されている）。ここで、イベントＥ１のスパイク情報集合が空集合であることに注意を要する。なぜなら、スパイク情報集合はスパイクの発生を検出したときに初めて生成されてイベントに付加されるものであり、現在、セルＡＮＤ２より前段ではスパイクが発生していないからである。
【００３８】
イベントＥ１＜ｔ、Ｈ→Ｌ、ＮＵＬＬ、｛φ｝、｛φ｝、０＞が入力すると、まず、入力ピン名付加装置５７が入力ピン名付加装置要素６ｃを起動して、イベントＥ１にピン名Ａを付加してＥ１＜ｔ、Ｈ→Ｌ、Ａ、｛φ｝、｛φ｝、０＞とし、経路４ｉを介してＡＮＤセル模擬装置要素７ｂと原因イベント決定装置要素８ｂに送る。次に、セル模擬装置５８がＡＮＤセル模擬装置要素７ｂを起動し、原因イベント決定装置５９がＡＮＤセル原因イベント集合決定装置要素８ｂをそれぞれ起動する。ここで、ＡＮＤセル模擬装置要素７ｂはＡＮＤセルの動作を模擬してセル３ｃの２２ｂの新しい出力信号値“Ｌ”を求める。
【００３９】
そして、この新しい出力信号値に応じたイベントＥ３＜ｔ、Ｈ→Ｌ、ＮＵＬＬ、｛φ｝、｛φ｝、０＞を生成する（イベントＥ３は図９の時刻ｔ＋５の変化に対応するイベントである）。イベントＥ３はこの時点ではセルの遅延情報が反映されていないので、時刻ｔのイベントである。ＡＮＤセル原因イベント集合決定装置要素８ｂでは、新しいイベントＥ３が生成した原因がイベントＥ１であることから、原因イベント集合を、｛Ｅ１｝と決定する。
【００４０】
ＡＮＤセル模擬装置要素７ｂは、生成したイベントＥ３を経路４ｌを介して原因イベント集合付加装置要素９ｂへ送り、ＡＮＤセル原因イベント集合決定装置要素８ｂは、決定した原因イベント集合｛Ｅ１｝を経路５ｂを介して原因イベント集合付加装置要素９ｂへ送る。
【００４１】
次に、原因イベント集合付加装置６０が原因イベント集合付加装置要素９ｂを起動し、受け取ったイベントＥ３＜ｔ、Ｌ→Ｈ、ＮＵＬＬ、｛φ｝、｛φ｝、０＞に原因イベント集合｛Ｅ１｝を付加してＥ３＜ｔ、Ｌ→Ｈ、ＮＵＬＬ、｛Ｅ１｝、｛φ｝、０＞とし、経路４ｎを介して遅延装置要素１０ｂにこれを送る。次に、遅延装置６１が遅延装置要素１０ｂを起動する。ここで仮に、セル３ｃの２１ｃから２２ｂまで（図７ではセルＡＮＤ２のピンＡからピンＹまで）の遅延値が、立ち上がり、立ち下がりの変化共５ｎｓであるとすると、遅延装置要素１０ｂは、イベントＥ３＜ｔ、Ｌ→Ｈ、ＮＵＬＬ、｛Ｅ１｝、｛φ｝、０＞の伝播するタイミングを５ｎｓ遅延させるためにＥ３＜ｔ＋５、Ｌ→Ｈ、ＮＵＬＬ、｛Ｅ１｝、｛φ｝、０＞として、時刻がｔ＋５ｎｓになった時点で経路４ｐを介してスパイク検出装置要素１１ｂに送る。この時点で、現時刻はｔ＋５ｎｓになっている。
【００４２】
ピン２２ｂ（図７ではセルＡＮＤ２のピンＹ）がスパイク監視出力ピンであるため、セル３ｃ内のこれ以降の経路において、スパイク検出装置要素１１ｂとイベント記憶装置要素１２ｂとスパイク発生源特定装置要素１４とが配置される。次に、スパイク検出装置６２がスパイク検出装置要素１１ｂを起動し、これと同時にイベント記憶装置６４がイベント記憶装置要素１２ｂを起動する。スパイク検出装置要素１１ｂはスパイク監視出力ピンに対して配置されており、シミュレーションの前処理で、スパイク検出前処理装置５６により最大マージン幅のみが予め記憶されている。スパイク検出装置要素１１ｂは、記憶されている最大マージン値以下のパルスをスパイクとして検出する。
【００４３】
この例では、スパイク検出装置要素１１ｂに記憶されている最大マージン値は１０ｎｓである。ここで、スパイク検出装置要素１１ｂの処理を図１０のフローで説明する。
【００４４】
まず、ステップＳ１で、遅延装置要素１０ｂからイベントｃｅ、すなわちイベントＥ３＜ｔ＋５、Ｌ→Ｈ、ＮＵＬＬ、｛Ｅ１｝、｛φ｝、０＞を入力する。次にステップＳ２でイベント記憶装置要素１２ｂから前回入力したイベントｐｅ、すなわちイベントＥ２＜ｔ＋１、Ｈ→Ｌ、ＮＵＬＬ、｛φ｝、｛φ｝、０＞を入力する（後述するが、イベント記憶装置要素で記憶するイベントの情報は時刻と信号変化だけである）。
【００４５】
次にステップＳ３で当該スパイク検出装置要素１１ｂはスパイク検出ピンに対して配置されているか否かが判断され、この例ではスパイク検出装置要素１１ｂはスパイク監視出力ピンに対して配置されているのでステップＳ８に進む。
【００４６】
ステップＳ８では、イベントｐｅとｃｅの変化でパルスを構成するか否かを判断する。この例では、イベントＥ２とイベントＥ３から、信号変化がＬ→Ｈ→Ｌであることを求め、当該変化がパルスを構成すると判断してステップＳ９に進む。
【００４７】
ステップＳ９では、イベントｐｅ及びｃｅからそれぞれの発生時刻ｐｔ及びｃｔを抽出する。この例では、イベントＥ３とイベントＥ２とからそれぞれの発生時刻（ｔ＋５）と時刻（ｔ＋１）とを抽出しステップ１０に進む。
【００４８】
ステップＳ１０で｜ｃｔ−ｐｔ｜が最大マージン値より下回るか否かがチェックされる。この例では、発生時刻の差が（ｔ＋５）−（ｔ＋１）＝４ｎｓであるため、この値が予め記憶しておいた最大マージン幅１０ｎｓ以下であると判断してステップＳ１１に進む。
【００４９】
ステップＳ１１ではイベントｃｅにスパイクフラグを付加する。この例では、イベントＥ３＜ｔ＋５、Ｌ→Ｈ、ＮＵＬＬ、｛Ｅ１｝、｛φ｝、０＞にスパイクフラグを付加し、Ｅ３＜ｔ＋５、Ｌ→Ｈ、ＮＵＬＬ、｛Ｅ１｝、ＮＵＬＬ、１＞とする。
【００５０】
そして、ステップＳ１３でイベントｃｅ、すなわち、イベントＥ３を出力する。スパイク検出装置要素１１ｂの処理はここまでである。イベントＥ３は経路４ｕを介してスパイク発生源特定装置要素１４に、また同時に経路４ｒを介してイベント記憶装置要素１２ｂに伝播する。イベント記憶装置要素１２ｂは現在記憶しているイベントＥ２を捨てて新しくイベントＥ３を記憶する。この時、時刻と信号変化の情報のみ記憶するので、この例の場合、記憶されるイベントＥ３はＥ３＜ｔ＋５、Ｌ→Ｈ、ＮＵＬＬ、｛φ｝、｛φ｝、０＞である。次に、スパイク発生源特定装置６３がスパイク発生源特定装置要素１４を起動する。ここで、スパイク発生源特定装置要素１４の処理を図１１のフローで説明する。
【００５１】
まず、ステップＳ２１で、スパイク検出装置要素から伝播してきたイベントｃｅを入力する。この例では、イベントスパイク検出装置要素１２ｂからイベントＥ３＜ｔ＋５、Ｌ→Ｈ、ＮＵＬＬ、｛Ｅ１｝、｛φ｝、１＞を入力する。
【００５２】
次にステップＳ２２で、当該装置で求めるスパイク情報集合の和集合Ｗを空集合｛φ｝に初期化する。次にステップＳ２３でイベントｃｅにスパイクフラグが付加されているかがチェックされ、スパイクフラグが付加されている場合はステップＳ２４に進み、付加されていない場合はステップＳ２７に進む。この例では、イベントＥ３＜ｔ＋５、Ｌ→Ｈ、ＮＵＬＬ、｛Ｅ１｝、｛φ｝、１＞にスパイクフラグが付加されていることを認識してステップＳ２４へ進む。
【００５３】
ステップＳ２４でイベントｃｅに付加されている原因イベント集合に登録されているイベントのスパイク情報集合の和集合をＷとする。この例では、イベントＥ３の原因イベント集合が｛Ｅ１｝であるから、イベントＥ１＜ｔ、Ｈ→Ｌ、ＮＵＬＬ、｛φ｝、｛φ｝、０＞のスパイク情報集合｛φ｝をＷとする。
【００５４】
ステップＳ２５では和集合Ｗが空集合であるか否かが判定され、空集合である場合にステップＳ２６に進み、そうでない場合はステップＳ２７に移行する。これ例では空集合であることを認識してステップＳ２６に進む（Ｗが空集合ではない例については＜従来装置の問題点２＞で説明する）。
【００５５】
ステップＳ２６で、和集合Ｗに現在評価中のセル名と現時刻を代入する。この例ではＷ＝｛（ＡＮＤ２、ｔ＋５）｝、となる。
【００５６】
次にステップＳ２７でイベントｃｅに和集合Ｗを付加する。この例では、イベントＥ３＜ｔ＋５、Ｌ→Ｈ、ＮＵＬＬ、｛Ｅ１｝、｛φ｝、１＞に和集合Ｗを付加してイベントＥ２＜ｔ＋５、Ｌ→Ｈ、ＮＵＬＬ、｛Ｅ１｝、｛（ＡＮＤ２、ｔ＋５）｝、１＞とする。
【００５７】
そして、ステップＳ２８でイベントｃｅを出力する。この例ではイベントＥ３を出力する。イベントＥ３は経路４ｖを介してセルの出力ピン２２ｂに送られ、出力ピン２２ｂはイベントＥ３から入力ピン名、原因イベント集合、スパイクフラグを除去するので、イベントＥ３はＥ３＜ｔ＋５、Ｌ→Ｈ、ＮＵＬＬ、｛φ｝、｛（ＡＮＤ２、ｔ＋５）｝、０＞となる。
【００５８】
イベントＥ３はさらに経路４ｆを介して遅延装置要素１０ｃに送られる。遅延装置要素１０ｃは、セル間の信号線に指定された遅延値だけイベントＥ３の伝播するタイミングを遅延させる。この例では当該信号線（図７ではＮ８）には遅延値が割り当てられていないものとするので、イベントＥ３＜ｔ＋５、Ｌ→Ｈ、ＮＵＬＬ、｛φ｝、｛（ＡＮＤ２、ｔ＋５）｝、０＞はこのままセル３ｆの１ｂ（図７ではセルＦＤ２のＴピン）に入力する。
【００５９】
セル３ｆ内で、まず、入力ピン名付加装置５７が入力ピン名付加装置要素６ｂを起動してイベントＥ３＜ｔ＋５、Ｌ→Ｈ、ＮＵＬＬ、｛φ｝、｛（ＡＮＤ２、ｔ＋５）｝、０＞にピン名Ｔを付加し、Ｅ３＜ｔ＋５、Ｌ→Ｈ、Ｔ、｛φ｝、｛（ＡＮＤ２、ｔ＋５）｝、０＞と変更する。ピンＴはスパイク検出項目が設定されているスパイク検出ピンであるため、入力ピン名付加装置要素６ｂの直後にスパイク検出装置要素１１ａが配置されている。
【００６０】
次にイベントＥ３はＤＦＦセル模擬装置要素７ａとＤＦＦセル原因イベント集合決定装置要素８ａとスパイク検出装置要素１１ａとに送られるが、前者の２要素以降の経路は、セルＡＮＤ２での説明と重複するため、ここではスパイク検出装置要素１１ａへの経路についてのみ説明する。
【００６１】
スパイク検出装置要素１１ａにイベントＥ３が到着すると、スパイク検出装置６２がスパイク検出装置要素１１ａを起動し、同時にイベント記憶装置６４がイベント記憶装置要素１２ａを起動する。スパイク検出装置要素１１ａで検出するスパイクは、スパイク検出前処理装置５６により記憶されたマージン値１０ｎｓの時間間隔内にＬ→Ｈ→Ｌの変化をするものである。ここでも図１９のフローを使ってスパイク検出装置要素１１ａの処理を説明する。
【００６２】
まずステップＳ１でイベントＥ３＜ｔ＋５、Ｌ→Ｈ、Ｔ、｛φ｝、｛（ＡＮＤ２、ｔ＋５）｝、０＞を入力する。次にステップＳ２で、イベント記憶装置要素１２ａから、前回入力したイベントＥ２＜ｔ＋１、Ｌ→Ｈ、ＮＵＬＬ、｛φ｝、｛φ｝、０＞（図９の時刻（ｔ＋１）の信号変化に対応するイベント）を入力する。
【００６３】
ステップＳ３で、当該スパイク検出装置要素１１ａがスパイク検出ピンに対して配置されていることを判断し、ステップＳ４に進む。ステップＳ４では、イベントＥ３とイベントＥ２から信号変化がＬ→Ｈ→Ｌとなり、当該ピンに指定された信号変化であることを判断し、ステップＳ５に進む。
【００６４】
ステップＳ５では、イベントＥ３とイベントＥ２からそれぞれの発生時刻（ｔ＋５）と（ｔ＋１）とを抽出し、ステップＳ６で発生時刻の差が（ｔ＋５）−（ｔ＋１）＝４ｎｓであることを求め、これが予め記憶しておいたマージン値１０ｎｓ以下であると判断してステップＳ７に進み、ステップＳ７でＥ３＜ｔ＋５、Ｌ→Ｈ、Ｔ、｛φ｝、｛（ＡＮＤ２、ｔ＋５）｝、０＞にスパイクフラグを付加し、Ｅ３＜ｔ＋５、Ｌ→Ｈ、Ｔ、｛φ｝、（ＡＮＤ２、ｔ＋５）｝、１＞とする。
【００６５】
そして、イベントＥ３を経路４ｓを介してタイミングエラー出力装置要素１３に、また同時に経路４ｑを介してイベント記憶装置要素１２ａに出力する。スパイク検出装置要素１１ａの処理はここまでである。次に、イベント記憶装置要素１２ａは現在記憶しているイベントＥ２を捨てて新しくイベントＥ３を記憶する。タイミングエラー出力装置要素１３にイベントＥ３＜ｔ＋５、Ｌ→Ｈ、Ｔ、｛φ｝、｛（ＡＮＤ２、ｔ＋５）｝、１＞が到着すると、タイミングエラー出力装置６６がタイミングエラー出力装置要素１３を起動する。タイミングエラー出力装置１３は、入力したイベントＥ３にスパイクフラグが付加されているので、Ｅ３からスパイク情報集合｛（ＡＮＤ２、ｔ＋５）｝、を抽出して、検出したスパイクの発生源がセルＡＮＤ２、発生時刻がｔ＋５である旨を出力する。
【００６６】
【発明が解決しようとする課題】
従来装置（＜従来技術２＞を実現する装置）では、＜従来技術１＞で示したバックトレースの必要がない。また、＜従来技術１＞ではシミュレーション中に発生した全てのイベントを記憶する必要があることに村して、従来装置ではスパイク検出ピンとスパイク監視出力ピン毎に１つだけイベントを記憶しておけばよい。これらの理由により、＜従来技術２＞の従来装置は＜従来技術１＞よりも高速かつ必要とするメモリ容量が少なくて済む。しかし、＜従来技術２＞の従来装置には以下の３つの問題点がある。
【００６７】
＜問題点１＞
まず一つ目の問題点は、スパイク監視出力ピンにおいて最大マージン値でスパイクを検出しているために、スパイク検出ピン上で無駄なスパイクの検出をしてしまう場合があることである。例えば、前述の図８のネットワークの例において、セルＦＤ１のピンＴに指定したマージン値とＦＤ２のピンＴに指定したマージン値を入れ換えて、セルＦＤ１のピンＴにはマージン値１０ｎｓを、ＦＤ２のピンＴにはマージン値２ｎｓを設定した場合を仮定する。
【００６８】
この時、最大マージン値は１０ｎｓで変わらないため、図８のセル３ｆのピン２１ｂ（図７ではセルＦＤ２のＴピン）に入力するイベントＥ３は前述の例と変わらず、Ｅ３＜ｔ＋５、Ｌ→Ｈ、ＮＵＬＬ、｛φ｝、｛（ＡＮＤ２、ｔ＋５）｝、０＞である。そして前述の例と同様に入力ピン名付加装置要素６ｂによりイベントＥ３はＥ３＜ｔ＋５、Ｌ→Ｈ、Ｔ、｛φ｝、（ＡＮＤ２、ｔ＋５）｝、０＞に変更され、スパイク検出装置要素１１ａに入力する。
【００６９】
ここでも図１０のフローを使ってスパイク検出装置要素１１ａの処理を説明すると、ステップＳ１でイベントＥ３＜ｔ＋５、Ｌ→Ｈ、Ｔ、｛φ｝、｛（ＡＮＤ２、ｔ＋５）｝、０＞を入力する。次にステップＳ２で、イベント記憶装置要素１２ａから、前回入力したイベントＥ２＜ｔ＋１、Ｌ→Ｈ、ＮＵＬＬ、｛φ｝、｛φ｝、０＞を入力する。ステップＳ３で、当該スパイク検出装置要素かスパイク検出ピンに対して配置されていることを判断し、ステップＳ４に進む。ステップＳ４では、イベントＥ３とイベントＥ２とから信号変化がＬ→Ｈ→Ｌとなることを判断し、これが指定した信号変化と一致するためステップＳ５に進む。ステップＳ５では、イベントＥ３とイベントＥ２とからそれぞれの発生時刻（ｔ＋５）と（ｔ＋１）を抽出する。ここまでは前述の例と同じである。
【００７０】
次に、ステップＳ６で発生時刻の差が（ｔ＋５）−（ｔ＋１）＝４ｎｓであることを求めるが、これが予め記憶しておいたマージン値２ｎｓ以上であるため、イベントＥ３のスパイクフラグが付加されないまま（つまり０のまま）ステップＳ１２に進む。次にタイミングエラー出力装置要素１３に進んでも、イベントＥ３にはスパイクフラグが付加されていないのでなにも出力されない。つまり、スパイク監視出力ピンセル３ｃの２２ｂ（図７ではセルＡＮＤ２のピンＹ）では当該信号変化をスパイクとして検出しスパイク情報集合を生成したが、スパイク検出ピンセル３ｆのピン２１ｂ（図７ではセルＦＤ２のピンＴ）では当該信号変化はスパイクとして検出されなかったため、スパイク監視出力ピンで生成したスパイク情報集合が無駄になってしまうのである。
【００７１】
＜問題点２＞
２つ目の問題点は、複数の入力ピンを持つ任意のセルＳにおいて、セルＳの入力ピンＩ１にセルＳより前段のセルＳ′を発生源とするスパイクが到着した時、Ｉ１以外の入力ピンの信号変化が到着したスパイクに影響して新しいスパイクが発生した場合、この新しいスパイクの発生源はＳとすべきなのに、従来装置のスパイク発生源特定装置６３では新しいスパイクの発生源をセルＳ′と誤認してしまうことである。つまり、従来装置のスパイク発生源特定装置６３では、セルの入力ピンに前段からスパイクが到着して出力ピンにスパイクが現れたならば、いかなる場合でも出力ピンに現れたスパイクの発生源を到着したスパイクの発生源とみなししまうのである。
【００７２】
上記問題点を、＜従来技術２＞の例と同様、図８のネットワークで説明する。＜従来技術２＞の例と同様に、タイミング検証項目として同じく表５が指定されており、信号線には遅延値が指定されておらず、セル３ｃの２１ｃから２２ｂと２１ｄから２２ｂまで（図７ではセルＡＮＤ２のピンＡからピンＹまでとピンＢからピンＹまで）の遅延値が、立ち上がり、立ち下がりの変化共５ｎｓであるとする。
【００７３】
図８のネットワークにおいて、セル３ｃのピン２１ｃとピン２１ｄとピン２２ｂ（図７ではセルＡＮＤ２のピンＡとピンＢとピンＹ）に今回は図１２に示すような信号変化が起こる場合を考える。この例では、セル３ｃの前段のセルＡＮＤ０のピンＹで既に時刻ｔに検出済みの幅５ｎｓのスパイクがセル３ｃに伝播している（セルＡＮＤ０のピンＹは、最大マージン値１０ｎｓでパルスを検出するスパイク監視出力ピンである）。
【００７４】
現時刻をｔとすると、セル３ｃのピン２１ｃに入力信号値の変化を表すイベントＥ２＜ｔ、Ｈ→Ｌ、ＮＵＬＬ、｛φ｝、｛（ＡＮＤ０、ｔ）｝、０＞が入力することになる。ここで３ｃのピン２１ｃ入力した変化は、既にセルＡＮＤ０でスパイクとして検出されているため、イベントＥ２のスパイク情報集合が（ＡＮＤ０、ｔ）｝となっていることに注意を要する。ここで、スパイク発生源特定装置要素１４以外の装置要素での処理については＜従来技術２＞で図８を使った例のそれと全く同様なので、スパイク発生源特定装置要素１４の処理のみを説明する。このとき、スパイク発生源特定装置要素１４に入力するのは、イベントＥ２が原因となって発生したイベントＥ４である。
【００７５】
イベントＥ４＜ｔ＋５、Ｈ→Ｌ、ＮＵＬＬ、｛Ｅ２｝、｛φ｝、１＞が経路４ｕを介してスパイク発生源特定装置要素１４に伝播すると、スパイク発生源特定装置６３がスパイク発生源特定装置要素１４を起動する。このとき、イベントＥ２はＥ２＜ｔ、Ｈ→Ｌ、ＮＵＬＬ、｛φ｝、｛（ＡＮＤ０、ｔ）｝、０＞である。ここで、スパイク発生源特定装置要素１４の処理を図１１のフローで説明する。
【００７６】
まず、ステップＳ１で、スパイク検出装置要素１２ｂからイベントＥ４＜ｔ＋５、Ｈ→Ｌ、ＮＵＬＬ、｛Ｅ２｝、｛φ｝、１＞を入力する。次にステップＳ２で、当該装置で求めるスパイク情報集合の和集合Ｗを空集合｛φ｝に初期化する。次にステップＳ３で、イベントＥ４＜ｔ＋５、Ｈ→Ｌ、ＮＵＬＬ、｛Ｅ２｝、｛φ｝、１＞にスパイクフラグが付加されていることを認識してステップＳ４へ進む。
【００７７】
ステップＳ４ではスパイク情報集合の和集合Ｗを求めるが、この例ではイベントＥ４の原因イベント集合が｛Ｅ２｝であるから、イベントＥ２＜ｔ、Ｈ→Ｌ、Ａ、｛φ｝、｛（ＡＮＤ０、ｔ）｝、０＞のスパイク情報集合｛（ＡＮＤ０、ｔ）｝をＷとする。ステップＳ５では、Ｗが空集合でないことを認識してステップＳ７に進む。ステップＳ７でイベントＥ４＜ｔ＋５、Ｈ→Ｌ、ＮＵＬＬ、｛Ｅ２｝、｛φ｝、１＞にＷを付加してイベントＥ４＜ｔ＋５、Ｈ→Ｌ、ＮＵＬＬ、｛Ｅ２｝、｛（ＡＮＤ０、ｔ）｝、１＞とし、ステップＳ８でイベントＥ４を出力する。スパイク発生源特定装置要素１４の処理はここまでである。
【００７８】
ここで、新しいスパイク（イベントＥ３とイベントＥ４で構成されるスパイク）を構成するイベントＥ４＜ｔ＋５、Ｈ→Ｌ、ＮＵＬＬ、｛Ｅ１｝、｛（ＡＮＤ０、ｔ）｝、１＞のスパイク情報集合｛（ＡＮＤ０、ｔ）｝が、セルＡＮＤ２に到着したスパイク（イベントＥ０とイベントＥ２で構成されるスパイク）を構成するイベントＥ２のスパイク情報集合をそのまま継承してしまうことがわかる。つまり、新しいスパイクの発生源をセルＡＮＤ０と誤認してしまうのである。
【００７９】
イベントＥ４は経路４ｖを介してセルの出力ピン２２ｂに送られるが、出力ピン２２ｂを通過する時、イベントＥ４からピン名と原因イベント集合とスパイクフラグが除去されるためＥ４＜ｔ＋５、Ｈ→Ｌ、ＮＵＬＬ、｛φ｝、｛（ＡＮＤ０、ｔ）｝、０＞となる。イベントＥ４は、次に経路４ｆを介して遅延装置要素１０ｃに送られる。当該信号線（図７ではＮ８）には遅延値が割り当てられていないので、イベントＥ４＜ｔ＋５、Ｈ→Ｌ、ＮＵＬＬ、｛φ｝、｛（ＡＮＤ０、ｔ）｝、０＞はこのままセル３ｆの１ｂ（図７ではセルＦＤ２のＴピン）に入力する。
【００８０】
セル３ｆ内で、まず、入力ピン名付加装置５７が入力ピン名付加装置要素６ｂを起動してイベントＥ４＜ｔ＋５、Ｈ→Ｌ、ＮＵＬＬ、｛φ｝、｛（ＡＮＤ０、ｔ）｝、０＞にピン名Ｔを付加し、Ｅ４＜ｔ＋５、Ｌ→Ｈ、Ｔ、｛φ｝、｛（ＡＮＤ０、ｔ）｝、０＞と変更する。次にイベントＥ４はＤＦＦセル模擬装置要素７ａとＤＦＦセル原因イベント集合決定装置要素８ａとスパイク検出装置要素１１ａとに送られるが、ここではスパイク検出装置要素１１ａとタイミングエラー出力装置要素１３の処理について説明する。
【００８１】
スパイク検出装置要素１１ａにイベントＥ４が到着すると、スパイク検出装置６２がスパイク検出装置要素１１ａを起動する。スパイク検出装置要素１１ａで検出するスパイクは、スパイク検出前処理装置５６により記憶されたマージン値１０ｎｓの時間間隔内にＬ→Ｈ→Ｌの変化をするものである。ここでも図１０のフローを使ってスパイク検出装置要素１１ａの処理を説明する。
【００８２】
まずステップＳ１でイベントＥ４＜ｔ＋５、Ｈ→Ｌ、Ｔ、｛φ｝、｛（ＡＮＤ０、ｔ）｝、０＞を入力する。次にステップＳ２で、イベント記憶装置要素１２ａから、前回入力したイベントＥ３＜ｔ＋１、Ｌ→Ｈ、ＮＵＬＬ、｛φ｝、｛φ｝、０＞を入力する。ステップＳ３で、当該スパイク検出装置要素がスパイク検出ピンに対して配置されていることを判断し、ステップＳ４に進む。ステップＳ４では、イベントＥ４とイベントＥ３から信号変化がＬ→Ｈ→Ｌとなり、当該ピンに指定された信号変化Ｌ→Ｈ→Ｌであることを判断し、ステップＳ５に進む。
【００８３】
ステップＳ５では、イベントＥ４とイベントＥ３とからそれぞれの発生時刻（ｔ＋５）と（ｔ＋１）とを抽出し、ステップＳ６で発生時刻の差が（ｔ＋５）−（ｔ＋１）＝４ｎｓであることを求め、これが予め記憶しておいたマージン値１０ｎｓ以下であると判断してステップＳ７に進み、ステップＳ７でＥ４＜ｔ＋５、Ｈ→Ｌ、Ｔ、｛φ｝、｛（ＡＮＤ０、ｔ）｝、０＞にスパイクフラグを付加し、Ｅ４＜ｔ＋５、Ｈ→Ｌ、Ｔ、｛φ｝、｛（ＡＮＤ０、ｔ）｝、１＞とする。そして、イベントＥ４を経路４ｓを介してスパイク発生源特定装置要素１４に、また同時に経路４ｑを介してイベント記憶装置要素１２ａに出力する。スパイク検出装置要素１１ａの処理はここまでである。
【００８４】
次に、タイミングエラー出力装置要素１３にイベントＥ４＜ｔ＋５、Ｈ→Ｌ、Ｔ、｛φ｝、｛（ＡＮＤ０、ｔ）｝、１＞が到着すると、タイミングエラー出力装置６６がタイミングエラー出力装置要素１３を起動する。タイミングエラー出力装置１３は、入力したイベントＥ４にスパイクフラグが付加されているのでＥ４からスパイク情報集合｛（ＡＮＤ０、ｔ）｝、を抽出して、検出したスパイクの発生源がセルＡＮＤ０、発生時刻がｔ＋５である旨を出力する。
【００８５】
ところが、図１２からわかるように、セル３ｃのピン２２ｂ（図７ではセルＡＮＤ２のピンＹ）において時刻（ｔ＋５）で検出されたスパイクは、セル３ｃのピン２１ｄにおいて時刻（ｔ−４）に起こったイベントＥ１とセル３ｃのピン１ｃにおいて時刻ｔに起こったイベントＥ２とにより新たに発生したスパイクであり、前段のセルＡＮＤ０から伝播してきたのではない。
【００８６】
このように、セル３ｃのピン２２ｂで検出されたスパイクの発生源がＡＮＤ０として誤認されている。本来ならセル３ｃ（図７ではセルＡＮＤ２）を発生源とすべきである。
【００８７】
＜従来装置の問題点３＞
３つ目の問題点は、セルの出力ピンが複数のファンアウトを持ち、そのファンアウト先にスパイク検出ピンが存在する場合において、このセルがスパイクの発生源となった場合には、そのセルを原因とするスパイクエラーが複数出力されてしまうことである。例えば、図１３で示す回路と表６のスパイク検出項目とを従来装置に入力した場合を考える。
【００８８】
【表６】
0003727417.tif 000007
【００８９】
セルＡＮＤ１を発生源とする幅１０ｎｓのスパイクがセルＡＮＤ１０のＹピンに現れた時、このスパイクは３つのセルＦＤ１１〜ＦＤ１３のスパイク検出ピンで検出されるため、セルＡＮＤ１０を発生源とするスパイクが到着した旨のスパイクエラーが１つのスパイクに対して３つ出力されてしまう。このため出力されるエラーの数が膨大になり、設計者が回路のどの部分のタイミングを修正すればよいのかの認識をより困難にしてしまる。
【００９０】
また、エラーの出力先がファイルである場合は、ファイルサイズの爆発的な増加につながる可能性もある。スパイクの発生源が１箇所であれば、１つスパイクエラーが出力されればこのセルのタイミングを改善できるので、その他のエラーは冗長なスパイクエラーであると言える。
【００９１】
この発明は上記問題点を解決するためになされたもので、スパイク検出精度を強化した論理シミュレーション装置を得ることを目的とする。
【００９２】
【課題を解決するための手段】
この発明に係る請求項１記載の論理シミュレーション装置は、被シミュレーション回路を規定した回路接続情報、前記被シミュレーション回路への入力波形情報及びタイミング検証項目情報を受け、該タイミング検証項目情報に規定された前記被シミュレーション回路内の少なくとも１つの要スパイク検出箇所のスパイクの発生の有無を、前記タイミング検証項目情報の指示するタイミング条件で、論理シミュレーション実行中に検出するスパイク検出機能を有し、前記少なくとも１つの要スパイク検出箇所それぞれに対応して前記タイミング条件が設定され、前記少なくとも１つの要スパイク検出箇所それぞれに対応して、その入力経路となる回路部分をスパイク監視部分として設定するスパイク検出前処理手段と、前記少なくとも１つの要スパイク検出箇所の個々に対し、当該個々と個々に対応する前記スパイク監視部分を加えた範囲をスパイク検出範囲として設定し、前記スパイク検出範囲内にある前記要スパイク検出箇所に対応して設定された前記タイミング条件で、前記スパイク検出範囲のスパイクの発生の有無を検出するスパイク検出手段とを備えている。
【００９３】
また、請求項２記載の論理シミュレーション装置のように、前記スパイク検出手段により検出されたスパイクの発生源を特定するスパイク発生源特定手段をさらに備え、前記スパイク発生源特定手段は、検出されたスパイクの信号変化のうち前の信号変化及び後ろの信号変化それぞれに対して、その原因となるイベントを抽出し、抽出したイベント間における関係に基づき、スパイク発生源を特定するようにしてもよい。
【００９４】
また、請求項３記載の論理シミュレーション装置のように、前記スパイク発生源特定手段により特定されたスパイク発生源の情報を編集するタイミングエラー編集手段をさらに備え、前記タイミングエラー編集手段は、論理シミュレーション実行中に発生したスパイクのすべてのスパイク発生源を記憶し、新たに発生したスパイクのスパイク発生源が既に記憶しているスパイク発生源のいずれかと一致する場合、前記新たに発生したスパイクのスパイク発生源の情報を削除するようにしてもよい。
【００９５】
【発明の実施の形態】
図１は、この発明の実施の形態によるスパイクの検出とその発生源の特定が可能なタイミング検出機能付論理シミュレーション装置（以下、「実施の形態の装置」と称す）の構成を示すブロック図である。図６と同一符号のブロックは、図６の同一符号部分に相当する部分であるため、ここではそれ以外のブロックについて説明する。なお、各装置５５，１００、５７〜６１、１０１〜１０３、６５、１０４及び６６は記憶装置６７を介して情報の授受を行う。
【００９６】
まずスパイク検出前処理装置１００を説明する。スパイク検出前処理装置１００と従来装置のスパイク検出前処理装置５６との処理の違いは、スパイク検出前処理装置５６では、各スパイク検出ピン毎に対応するスパイク監視出力ピンの集合を求め、これらの和集合を記憶していたことに対して、スパイク検出前処理装置１００では、各スパイク検出ピン毎に対応するスパイク監視出力ピンの集合をそれぞれ個別に記憶する点である。
【００９７】
例えば、図７の回路に表５に示すタイミング検証項目情報が指定されたときには、スパイク検出前処理装置５６では、スパイク検出ピンであるＦＤ１のＴピンに対応しているスパイク監視出力ピンの集合Ｗ１＝｛ＢＵＦ１のＹ、ＡＮＤ１のＹ、ＡＮＤ０のＹ、Ｉ２のＹ、Ｉ３のＹ、Ｉ４のＹ｝とスパイク検出ピンであるＦＤ２のＴピンに対応するスパイク監視出力ピンの集合Ｗ２＝｛ＡＮＤ２のＹ、ＡＮＤ０のＹ、Ｉ３のＹ、Ｉ４のＹ、Ｉ５のＹ｝の和集合Ｗ３＝｛ＢＵＦ１のＹ、ＡＮＤ１のＹ、ＡＮＤ０のＹ、ＡＮＤ２のＹ、Ｉ２のＹ、Ｉ３のＹ、Ｉ４のＹ、Ｉ５のＹ｝を記憶するが、スパイク検出前処理装置１００では、和集合Ｗ３ではなく、Ｗ１とＷ２をそのまま記憶する。すなわち、ＦＤ１のＴピンのスパイク検出範囲がＦＤ１のＴピンと集合Ｗ１として、ＦＤ２のＴピンのスパイク検出範囲がＦＤ２のＴピンと集合Ｗ２としてそれぞれ個別に記憶される。
【００９８】
スパイク検出装置１０１が行なうネットワーク生成時のスパイク検出装置要素の割り付けは従来装置のスパイク検出装置６２とほぼ同様である。従来装置のスパイク検出装置６２との違いは、スパイク検出装置６２が、スパイク監視出力ピンに対して割り付けるスパイク検出装置要素に最大マージン値を記憶して、この値よりも小さい幅のパルスをスパイクとして検出をしていることに対し、スパイク検出装置１０１では、スパイク監視出力ピンに対して割り付けるスパイク検出装置要素には当該スパイク監視出力ピンに対応するスパイク検出ピンに指定されているマージン値を記憶し、この値でスパイクを検出する点である。すなわち、スパイク検出範囲内にあるスパイク検出ピンに対応して設定されたマージン値で、スパイク検出範囲内におけるスパイク監視出力ピンのスパイクの発生の有無を検出することができる。
【００９９】
スパイク検出装置１０１が割り付けるスパイク検出装置要素の処理を示すフローチャートを図２に示す。図２では、スパイク検出装置５６が割り付けるスパイク検出装置要素の処理を示すフローチャート図１０と比べて、ステップＳ４０の最大マージン幅が指定マージン幅に変更されていることがわかる。
【０１００】
従来装置のスパイク検出前処理装置５６をスパイク検出前処理装置１００に、スパイク検出装置６２をスパイク検出装置１０１に置き換えることにより、＜問題点１＞が解消される。ここで＜問題点１＞で示した例を用いて説明する。
【０１０１】
＜問題点１＞の例では、図８のネットワークを利用したが、スパイク検出装置１０１がスパイク検出ピンとスパイク監視出力ピンに対してスパイク検出装置６２と同様にスパイク検出装置要素を割り付けるため、当該２つの装置を置き換えたシミュレーション装置が作るネットワークは図８のネットワークと同じとなるので、ここでも図８を利用して説明できる。その前に、まず図７に村して、表５で指定されたセルＦＤ１のピンＴに指定したマージン値とＦＤ２のピンＴに指定したマージン値を入れ換えて、セルＦＤ１のピンＴにはマージン値１０ｎｓを、ＦＤ２のピンＴにはマージン値２ｎｓを指定する。この時、ＦＤ１のＴピンに対応しているスパイク監視出力ピンの集合Ｗ１＝｛ＢＵＦ１のＹ、ＡＮＤ１のＹ、ＡＮＤ０のＹ、Ｉ２のＹ、Ｉ３のＹ、Ｉ４のＹ｝の各ピンに割り付けられたスパイク検出装置要素にはマージン値として１０ｎｓを記憶し、スパイク検出ピンであるＦＤ２のＴピンに対応するスパイク監視出力ピンの集合Ｗ２＝｛ＡＮＤ２のＹ、ＡＮＤ０のＹ、Ｉ３のＹ、Ｉ４のＹ、Ｉ５のＹ｝の各ピンに割り付けられたスパイク検出装置要素にはマージン値として２ｎｓを記憶する。
【０１０２】
よって、図８のスパイク検出装置要素１１ａと１１ｂにマージン値として２ｎｓが記憶される。従来装置ではスパイク検出装置要素１１ａには２ｎｓ、スパイク検出装置要素１１ｂには最大マージン値１０ｎｓを記憶していた。
【０１０３】
ここで、図８のセル３ｃの２１ｃと２１ｄと２２ｂとに図１２の信号変化が起こるとき、現時刻ｔとすると、セル３ｃのピン２１ｃにイベントＥ１＜ｔ、Ｈ→Ｌ、ＮＵＬＬ、｛φ｝、｛φ｝、０＞が到着し、入力ピン名付加装置５７により入力ピン名Ｔが付加され、ＡＮＤセル模擬装置要素７ｂから出力されたイベントＥ３＜ｔ、Ｈ→Ｌ、ＮＵＬＬ、｛φ｝、｛φ｝、０＞にＡＮＤセル原因イベント集合決定装置要素８ｂから出力された原因イベント集合｛Ｅ１｝を原因イベント集合付加装置９ｂで付加してＥ３＜ｔ、Ｈ→Ｌ、ＮＵＬＬ、｛Ｅ１｝、｛φ｝、０＞として遅延装置要素１０ｂでＥ３＜ｔ＋５、Ｈ→Ｌ、ＮＵＬＬ、｛Ｅ１｝、｛φ｝、０＞となる。
【０１０４】
スパイク検出装置１０１が割り当てたスパイク検出装置要素１１ｂの処理を図２のフローチャートにより説明する。ステップＳ３１で、イベントｃｅであるイベントＥ３を入力し、ステップＳ３２で前回のイベントｐｅであるイベントＥ２＜ｔ＋１、Ｌ→Ｈ、ＮＵＬＬ、｛φ｝、｛φ｝、０＞を入力する。
【０１０５】
そして、ステップＳ３３でスパイク検出装置要素１１ｂがスパイク監視出力ピンに配置されていると判定してステップＳ３３からステップＳ３８に進む。
【０１０６】
ステップＳ３８では、イベントｃｅであるイベントＥ３とイベントｐｅであるイベントＥ２とから信号変化がＬ→Ｈ→Ｌのパルスを構成していると判断し、ステップＳ３９に進み、ステップＳ３９とステップＳ４０でイベントＥ３，Ｅ２の発生時刻の差４ｎｓを求め、この時刻の差（パルスの幅）が指定マージン値（この場合２ｎｓ）以上であることからステップＳ４２へ進み、スパイク検出装置要素１１ｂから出力されるイベントＥ３＜ｔ＋５、Ｈ→Ｌ、ＮＵＬＬ、｛Ｅ１｝、｛φ｝、０＞にはスパイクフラグが付加されない。つまり当該信号変化をスパイクとして検出しない。スパイク従来装置では、最大マージン値１０ｎｓをスパイク検出の基準値としているため、イベントＥ３の変化をスパイクと認識してイベントＥ３にはスパイクフラグを付加する。
【０１０７】
なお、ステップＳ３３で、当該スパイク検出装置要素がスパイク検出ピンに対して配置されていることを判断した場合、ステップＳ３４に進む。ステップＳ３４では、イベントｃｅとイベントｐｅとの信号変化が指定された信号変化であるかどうかが判断され、指定された信号変化である場合にステップＳ３５に進み、そうでない場合にステップＳ４２に進む。
【０１０８】
ステップＳ３５では、イベントｃｅとイベントｐｅとからそれぞれの発生時刻ｃｔとｐｔとを抽出し、ステップＳ３６で発生時刻の差が｜ｃｔ−ｐｔ｜を求め、これが予め記憶しておいた指定マージン値以下であるか否かを判定し、指定マージン値以下である場合にステップＳ３７に進み、指定マージン値を越える場合にステップＳ４２に進む。ステップＳ３７はイベントｃｅにスパイクフラグを付加する。
【０１０９】
イベントＥ３は次にスパイク発生源特定装置要素１４に入力するが、従来装置では、図１１のフローチャートによると、イベントＥ３にスパイクフラグが付加されているのでステップＳ２３からステップＳ２４へ進みスパイク情報集合｛（ＡＮＤ２、ｔ＋５）｝を生成するめの処理が行われ、イベントＥ３はＥ３＜ｔ＋５、Ｌ→Ｈ、Ｔ、｛φ｝、｛（ＡＮＤ２、ｔ＋５）｝、０＞となるが、＜問題点１＞で示したように、このイベントＥ３がセル３ｆのスパイク検出装置要素１１ａに到着してもこの信号変化はスパイクとして検出されないのでスパイク情報集合｛（ＡＮＤ２、ｔ＋５）｝を生成した処理は無駄になる。
【０１１０】
一方、実施の形態の装置では、フローチャート図１１によれば、イベントＥ３にスパイクフラグが付加されていないのでステップＳ２３からステップＳ２８へ進み、従来装置がする無駄な処理は行われない。よって、＜問題点１＞はスパイク前処理装置１００とスパイク検出装置１０１により解消される。
【０１１１】
イベント記憶装置１０２が行なうイベント記憶装置要素の割り付け処理は、従来装置のイベント記憶装置６４とほぼ同様である。イベント記憶装置１０２とイベント記憶装置６４の違いは２つある。
【０１１２】
第１の違いは、記憶するイベントの情報が異なることである。実施の形態の装置が作るネットワークを伝播するイベントには、従来装置と同様に、変化時刻、変化前の信号値、変化後の信号値、入力ピン名、原因イベント集合、スパイク情報集合、スパイクフラグの７つの情報が含まれ、＜変化時刻、変化前の信号値→変化後の信号値、入力ピン名、原因イベント集合、スパイク情報集合、スパイクフラグ＞と表すことができる。イベント記憶装置１０４が記憶する情報は、この７つの情報全てである。これに対して、従来装置のイベント記憶装置では、変化時刻、変化前の信号値、変化後の信号値、スパイク情報集合の４つを記憶していた。
【０１１３】
第２の違いは、従来装置ではイベント記憶装置要素をスパイク検出装置要素と接続していたが、実施の形態の装置ではイベント記憶装置要素をスパイク検出装置要素とスパイク発生源特定装置要素に接続することである。
【０１１４】
スパイク発生源特定装置１０３が行なうスパイク発生源特定装置要素の割り付けは、従来装置のスパイク発生源特定装置６３とほぼ同様である。スパイク発生源特定装置１０３と従来装置のスパイク発生源特定装置６３との違いは２つある。
【０１１５】
第１の違いは、従来装置ではスパイク発生源特定装置要素をスパイク検出装置要素と接続していたが、実施の形態の装置ではスパイク発生源特定装置要素をスパイク検出装置要素とイベント記憶装置要素に接続することである。
【０１１６】
第２の違いは、従来装置のスパイク発生源特定装置６３が、スパイク監視出力ピン上で、スパイクを形成する信号変化のうちスパイクの後ろの変化に対応する変化のみ入力して発生源を特定するのに対して、実施の形態の装置のスパイク発生源装置特定装置１０３は、スパイク監視出力ピン上で、スパイクを形成する信号変化のうちスパイクの前と後ろの両方の変化を入力し、さらにそのスパイク監視出力ピンにおける２つの信号変化がセルのどの入力ピンの信号変化によって起こったかという入力ピンと出力ピンの因果関係を調べて発生源を特定することである。当装置の詳しい説明は後述の例で行なう。
【０１１７】
タイミングエラー編集装置１０４は、スパイク検出ピン対してタイミングエラー編集装置要素を割り付け、タイミングエラー編集装置要素を起動することでタイミングエラーの編集を行なう。
【０１１８】
以上、装置１００から１０４を含む図１に示す各装置により、実施の形態の装置内部に生成されるネットワークの概念図を図３に示す。図３は、表５に示すタイミング検証項目と図７の回路接続情報である表１とを従来装置に入力した際に生成される装置要素間のネットワークのうち、図７のセルＡＮＤ２とセルＦＤ２とその接続部分を示す概念図である。
【０１１９】
これを用いて、イベント記憶装置１０２とスパイク発生源特定装置１０３の処理を説明すると共に、イベント記憶装置１０２とスパイク発生源特定装置１０３により＜問題点２＞で示した例での問題点が解消することを示す。＜問題点２＞とは、図７のセルＡＮＤ２のピンＡとピンＢとピンＹ（図８のネットワークではセル３ｃのピン２１ｃとピン２１ｄとピン２２ｂ）に図１２に示すような信号変化が起こるとき、スパイクの発生源を正しく特定できないというものである。図１２の信号変化は、セルＡＮＤ２の前段のセルＡＮＤ０のピンＹで既に時刻ｔに検出済みの幅５ｎｓのスパイクがセルＡＮＤ２に伝播していることを示す。図１２の信号変化を図３のネットワークに入力してみる。
【０１２０】
ここでは、図８から変更されたスパイク発生源特定装置要素１４′とイベント記憶装置要素１２ｂ′とタイミングエラー編集装置要素１６の処理を中心に説明する。
【０１２１】
現時刻をｔとすると、セル３ｃのピン１ｃに入力信号値の変化を表すイベントＥ２＜ｔ、Ｈ→Ｌ、ＮＵＬＬ、｛φ｝、｛（ＡＮＤ０、ｔ）｝、０＞が入力することになる。スパイク発生源特定装置要素１４′には、＜問題点２＞と＜従来技術２＞で示したように、時刻ｔ＋５でイベントＥ４＜ｔ＋５、Ｈ→Ｌ、ＮＵＬＬ、｛Ｅ２｝、｛φ｝、１、ＮＵＬＬ＞が経路４ｕを介して伝播する。このとき、スパイク発生源特定装置１０３がスパイク発生源特定装置要素１４′を起動し、同時にイベント記憶装置１０２がイベント記憶装置要素１２ｂ′を起動する。このとき、イベントＥ２はＥ２＜ｔ、Ｈ→Ｌ、ＮＵＬＬ、｛φ｝、｛（ＡＮＤ０、ｔ）｝、０＞である。
【０１２２】
ここで、スパイク発生源特定装置要素１４′の処理を図４のフローで説明する。まず、ステップＳ５１で、スパイク監視出力ピンに現時刻に発生したイベントｃｅをスパイク検出装置要素から入力する。この例では、イベントＥ４＜ｔ＋５、Ｈ→Ｌ、ＮＵＬＬ、｛Ｅ２｝、｛φ｝、１＞を入力する。
【０１２３】
次にステップＳ５２で、スパイク監視出力ピンに前回発生したイベントｐｅをイベント記憶装置要素から入力する。この例では、イベント記憶装置要素１２ｂ′からイベントＥ３＜ｔ＋１、Ｌ→Ｈ、Ｂ、｛Ｅ１｝、｛φ｝、０＞を入力する。実施の形態の装置のイベント記憶装置要素ではイベントに含まれる全ての情報を記憶していることに注意を要する。ただし、イベントＥ３が到着した時刻（ｔ＋１）ではスパイクか到着していないため、イベントＥ３にはスパイク情報集合とスパイクフラグは付加されていない。
【０１２４】
イベントＥ１はイベン卜Ｅ３の原因となったイベントで、Ｅ１＜ｔ−４、Ｌ→Ｈ、Ｂ、｛φ｝、｛φ｝、０＞である。次にステップＳ５３で、当該装置で求めるスパイク情報集合の和集合Ｗを空集合｛φ｝に初期化する。次にステップＳ５４で、イベントＥ４＜ｔ＋５、Ｌ→Ｈ、Ａ、｛Ｅ２｝、｛φ｝、１＞にスパイクフラグが付加されていることを認識してステップＳ５５へ進む。
【０１２５】
ステップＳ５５では、イベントｃｅ及びイベントｐｅそれぞれに付加されている集合Ｗ１，Ｗ２と、イベントｃｅ及びイベントｐｅそれぞれに付加され、かつ同一ピンに入力されている集合Ｗ３とを求める。この例では、イベントＥ３に付加されている原因イベント集合｛Ｅ１｝をＷ１、イベントＥ４に付加されている原因イベント集合｛Ｅ２｝をＷ２とし、イベントＥ１の入力ピン名がＢでありイベントＥ２の入力ピン名がＡであることからイベントＥ１とイベントＥ２が同一ピンに入力していないことよりＷ３は空集合｛φ｝となる。
【０１２６】
ステップＳ５６では、集合Ｗ３に所属し、それぞれの入力イベントによりパルスが形成されるイベントの集合をＷ４とする。この例では、Ｗ３が｛φ｝なのでＷ４も｛φ｝となり、ステップＳ５７からステップＳ５９に進む。
【０１２７】
ステップＳ５９で当スパイク監視出力ピンが属するセルｓを発生源と判断し、（ｓ，現時刻）を集合Ｗとする。この例では、セルＡＮＤ２を発生源と判断し、求めるスパイク情報集合の和集合Ｗを｛（ＡＮＤ２、ｔ＋５）｝、とする。
【０１２８】
ここで、従来装置のスパイク発生源特定装置要素１４では発生源をセルＡＮＤ０と誤認していたことに対して、実施の形態の装置のスパイク発生源特定装置要素１４′では発生源をＡＮＤ２と正しく判定していることがわかる。
【０１２９】
次にステップＳ６０でイベントｃｅにＷを付加する。この例ではイベントＥ４＜ｔ＋５、Ｈ→Ｌ、ＮＵＬＬ、｛Ｅ１｝、｛φ｝、１＞にＷを付加してＥ４＜ｔ＋５、Ｈ→Ｌ、ＮＵＬＬ、｛Ｅ２｝、（ＡＮＤ２、ｔ＋５）、１＞としてステップＳ６１で出力する。なお、ステップＳ５７の集合Ｗ４が空集合でなかった場合は、ステップＳ５８で当スパイク監視出力ピンに現れたスパイクは｛集合Ｗ４の要素（ｐ，ｃ）で構成される入力スパイスが伝播したものと判断し、入力スパイクの発生源情報の集合を求めるために集合Ｗ４に含まれる全ての要素のスパイク情報集合の和集合Ｗを求めて、ステップＳ６０に移行する。
【０１３０】
スパイク発生源特定装置要素１４′の処理はここまでである。出力されたイベントＥ４は、経路４ｔを介してイベント記憶装置要素１２ｂ′に伝播するのと同時に経路４ｖを介して出力ピン２２ｂに伝播する。イベント記憶装置要素１２ｂ′は前回記憶したイベントＥ３を捨てて、スパイク発生源特定装置要素１４′から受け取ったイベントＥ４の時刻と信号変化の種類とピン名とスパイク情報集合のみを含んだＥ４＜ｔ＋５、Ｌ→Ｈ、Ｔ、｛φ｝、｛（ＡＮＤ２、ｔ＋５）｝、０＞の形式で記憶する。
【０１３１】
従来装置のイベント記憶装置要素１２ｂでは、イベントをスパイク検出装置要素から入力した時点で記憶していたことに対して、実施の形態のイベント記憶装置要素１２ｂ′ではスパイク発生源特定装置要素からイベントを入力した時点で記憶することに注意を要する（図３の経路４ｒには、スパイク検出装置要素１１ｂ′からイベント記憶装置要素１２ｂ′への方向へのイベントの伝播が指定されておらず、イベント記憶装置要素１２ｂ′へのデータ入力経路は４ｔのみである）。次に、２２ｂに伝播したイベントＥ４は、出力ピン２２ｂを通過する際にピン名と原因イベント集合とスパイクフラグを除去されＥ４＜ｔ＋５、Ｈ→Ｌ、ＮＵＬＬ、｛φ｝、｛（ＡＮＤ２、ｔ＋５）｝、０＞となり、経路４ｆ、遅延装置要素１０ｃ、経路４ｅを伝播してセル３ｆのピン２１ｂ（図７ではセルＦＤ２のピンＴ）に到着する。
【０１３２】
イベントＥ４は経路４ｂを介して入力ピン名付加装置要素６ｂでピン名Ｔを付加されＥ４＜ｔ＋５、Ｈ→Ｌ、Ｔ、｛φ｝、｛（ＡＮＤ２、ｔ＋５）｝、０＞となり、経路４ｈを介してスパイク検出装置要素１１ａ′に入力する。スパイク検出装置要素では、ピンＴに前回発生したイベントＥ３＜ｔ＋１、Ｌ→Ｈ、ＮＵＬＬ、｛φ｝、｛φ｝、０＞をイベント記憶装置要素１２ｂ′から入力し、これとイベントＥ４とからこの２つのイベントによる変化が指定された信号変化Ｌ→Ｈ→Ｌであり、かつ、その信号変化の幅４ｎｓが指定マージン値１０ｎｓ以下であることにより、イベントＥ４にスパイクフラグを付加してＥ４＜ｔ＋５、Ｈ→Ｌ、｛Ｔ｝、｛φ｝、｛（ＡＮＤ２、ｔ＋５）｝、１＞とし、経路４ｓを介してタイミング編集装置要素１６に、経路４ｑを介してイベント記憶装置要素１２ａ′にそれぞれ送る。
【０１３３】
イベント記憶装置要素１２ａ′での処理はイベント記憶装置要素１２ｂ′と同様なので説明を省略する。イベントＥ４がタイミングエラー編集装置要素１６に伝播すると、タイミングエラー編集装置１０４がタイミングエラー編集装置要素１６を起動する。タイミングエラー編集装置要素１６の処理を図５のフロー図で説明する。
【０１３４】
まずステップＳ７１で、当該スパイク検出ピンに現時刻に発生しているイベントｃｅをスパイク検出装置要素から入力する。この例では、イベントＥ４＜ｔ＋５、Ｈ→Ｌ、Ｔ、｛φ｝、｛（ＡＮＤ２、ｔ＋５）｝、１＞を入力する。
【０１３５】
ステップＳ７２でイベントｃｅにスパイクフラグが付加されているか否かを反転し付加されている場合にステップＳ７３に移行し、付加されていない場合にステップＳ８４に移行する。この例では、イベントＥ４にスパイクフラグが付加されていることを認識してステップＳ７３に進む。
【０１３６】
ステップＳ７３でこの装置要素で求めようとするスパイク情報集合Ｗを空集合に初期化する。ステップＳ７４でイベントｃｅに付加されているスパイク情報集合をＶとする。この例では、イベントＥ４からスパイク情報集合｛（ＡＮＤ２、ｔ＋５）｝、を抽出し、これをＶとする。
【０１３７】
ステップＳ７５でＶが空集合か否かを判定し、空集合である場合にステップＳ８１に進み、空集合でない場合にステップＳ７６に進む。この例では空集合でないためステップＳ７６に進む。
【０１３８】
ステップＳ７６では集合Ｖから要素ｅを削除する。この例では（ＡＮＤ２、ｔ＋５）を削除してＶは空集合となる。そして、ステップＳ７７で要素ｅから発生源であるセル名を取り出す。この例では、発生源であるセル名ＡＮＤ２を取り出す。
【０１３９】
ステップＳ７８で取り出したセル名はスパイク編集装置要素１６で既に記憶済みかを調べ、記憶済みの場合はステップＳ７５に戻り、記憶済みでない場合はステップＳ７９に進む。この例では、記憶済みでないのでステップＳ７９へ進む。
【０１４０】
ステップＳ７９では取り出したセル名を記憶する。この例ではセル名ＡＮＤ２を記憶し、ステップＳ８０でＷに要素ｅを登録する。この例ではＷが｛（ＡＮＤ２、ｔ＋５）となる。
【０１４１】
次にステップＳ７５に戻り、Ｖが空集合であることからステップＳ８１へ進み、ステップＳ８１でＷが空集合か否かを判定し空集合の場合はステップＳ８３に進み、空集合でなければステップＳ８２に進む。この例ではＷは空集合でないため、ステップＳ８２に進む。
【０１４２】
ステップＳ８２でイベントｃｅのスパイク情報集合を上書きする。この例ではＷ＝｛（ＡＮＤ２、ｔ＋５）｝が上書きされ、イベントＥ４＜ｔ＋５、Ｈ→Ｌ、Ｔ、｛φ｝、｛φ｝、｛（ＡＮＤ２、ｔ＋５）｝、１＞のスパイク情報を上書きして、イベントＥ４＜ｔ＋５、Ｈ→Ｌ、Ｔ、｛φ｝、｛（ＡＮＤ２、ｔ＋５）｝、１＞する（この例では、上書きしてもイベントＥ４のスパイク情報集合は変わらない）。
【０１４３】
そして、ステップＳ８４でイベントｃｅを出力する。この例ではイベントＥ４を出力する。なお、ステップＳ８１でＷが空集合であると判定されるとステップＳ８３でイベントｃｅからスパイクフラグを除去してステップＳ８４に進む。
【０１４４】
次に、イベントＥ４が経路４ｙを介してタイミングエラー出力装置要素１３′に伝播すると、タイミングエラー出力装置６６がタイミングエラー出力装置要素１３′を起動し時刻ｔ＋５にセルＡＮＤ２でスパイクが発生した旨のタイミングエラーを出力する。よって、従来装置で発生源をセルＡＮＤ０と誤認していた例において、実施の形態の装置ではセルＡＮＤ２が発生源であると正しく認識できたことがわかる。
【０１４５】
前述の問題点３に対しては、従来装置にタイミングエラー編集装置１０４を追加することにより解消される。タイミングエラー編集装置１０４は図５のフローチャートに示すように動作する。
【０１４６】
タイミングエラー編集装置１０４の特徴は、ステップＳ７５〜Ｓ８４までの一連の処理でにおいて、入力したイベントから過去に記憶済みのセルを発生源とするスパイク情報を削除することである。すなわち、過去に記憶済みのセルが存在すると集合Ｗに要素ｅを登録するステップＳ８０の処理が省略されるため、集合Ｖの全ての要素における発生源であるセル名が記憶済みの場合、集合Ｗは空集合となり、最終的にステップＳ８１，ステップＳ８３の処理が行われ、イベントｃｅのスパイクフラグが除去されることである。
【０１４７】
ここで、各タイミングエラー編集装置要素で記憶したセル名は他の全てのタイミングエラー編集装置要素で共有されることに注意を要する。タイミングエラー編集装置要素で入力したイベントから過去に記憶済みのセルを発生源とするスパイク情報を削除した後、当イベントをタイミングエラー出力装置要素に入力することにより、＜問題点３＞で示したタイミングエラー出力装置要素から冗長なスパイクエラーが出力される問題はない。
【０１４８】
本発明の論理シミュレーション装置は、スパイク検出前処理装置１００により、従来装置の検出するスパイク検出範囲を予め限定し、スパイク検出装置１０１によりスパイク検出範囲固有のスパイクマージンでスパイク検出を行うことにより＜問題点１＞を解決し、スパイク発生源特定装置１０３によるスパイクの発生源を特定するアルゴリズムとを改良することにより、従来装置よりも高精度のスパイクの検出と発生源の特定を実現して＜問題点２＞を解決した。また、タイミングエラー編集装置１０４のを付加することにより＜問題点３＞を解決して設計者のタイミング検証結果の理解度の向上や出力先がファイルである場合はファイルサイズの爆発的な増加を抑えることができる。
【０１４９】
【発明の効果】
以上説明したように、この発明における請求項１記載の論理シミュレーション装置のスパイク検出手段は、少なくとも１つの要スパイク検出箇所の個々に対し、当該個々と個々に対応するスパイク監視部分を加えた範囲をスパイク検出範囲として設定し、スパイク検出範囲内にある要スパイク検出箇所に対応して設定されたタイミング条件で、スパイク検出範囲のスパイクの発生の有無を検出するため、要スパイク検出箇所及びそれに対応するスパイク監視部分に対し固有のタイミング条件でスパイクの有無を検出することができ、その結果、スパイク検出精度を向上させることができる。
【０１５０】
また、請求項２記載の論理シミュレーション装置のスパイク発生源特定手段は、検出されたスパイクの信号変化のうち前の信号変化及び後ろの信号変化それぞれに対して、その原因となるイベントを抽出し、抽出したイベント間における関係に基づき、スパイク発生源を特定するため、スパイク発生源の特定精度を向上させることができる。
【０１５１】
また、請求項３記載の論理シミュレーション装置のタイミングエラー編集手段は、論理シミュレーション実行中に発生したスパイクのすべてのスパイク発生源を記憶し、新たに発生したスパイクのスパイク発生源が既に記憶しているスパイク発生源のいずれかと一致する場合、新たに発生したスパイクのスパイク発生源の情報を削除するため、冗長な存在となるスパイク発生源の情報を割愛することができ、タイミングエラー情報の情報密度を高めることができる。
【図面の簡単な説明】
【図１】  この発明の実施の形態の論理シミュレーション装置の構成を示すブロック図である。
【図２】  図１のスパイク検出装置の処理動作を示すフローチャートである。
【図３】  実施の形態の動作説明用の回路のネットワークを示す説明図である。
【図４】  図１のスパイク発生源特定装置の処理動作を示すフローチャートである。
【図５】  図１のタイミングエラー編集装置の処理動作を示すフローチャートである。
【図６】  タイミング検証機能を有する従来の論理シミュレーション装置の構成を示すブロック図である。
【図７】  タイミング検証動作説明用の回路を示す回路図である。
【図８】  従来の動作説明用の回路のネットワークを示す説明図である。
【図９】  動作説明用の入力信号波形を示すタイミング図である。
【図１０】  図６のスパイク検出装置の処理動作を示すフローチャートである。
【図１１】  図６のスパイク発生源特定装置の処理動作を示すフローチャートである。
【図１２】  動作説明用の入力信号波形を示すタイミング図である。
【図１３】  模擬対象回路の一例を示す回路図である。
【符号の説明】
１００  スパイク検出前処理装置、１０１  スパイク検出装置、１０２  イベント記憶装置、１０３  スパイク発生源特定装置、１０４  タイミングエラー編集装置。
【図１】
0003727417.tif 000008
【図２】
0003727417.tif 000009
【図３】
0003727417.tif 000010
【図４】
0003727417.tif 000011
【図５】
0003727417.tif 000012
【図６】
0003727417.tif 000013
【図７】
0003727417.tif 000014
【図８】
0003727417.tif 000015
【図９】
0003727417.tif 000016
【図１０】
0003727417.tif 000017
【図１１】
0003727417.tif 000018
【図１２】
0003727417.tif 000019
【図１３】
0003727417.tif 000020